2012-06-08 13 views
11

estoy tratando de mostrar un mensaje al usuario a lo largo de las líneas de:¿Cómo incluir variables en cadenas localizadas?

"Usuario 5 no se podría añadir"

Pero, ¿cómo puedo añadir variables a una cadena que se coloca en una. archivo resx? Intenté buscar cosas como "Variables en la localización", "Globalización con variables", etc., pero me quedé seco.

Si no estuviera la localización de escribiría:

Console.Write("User " + userNum + " could not be added"); 

¿Cómo se puede lograr esto con los recursos?

+0

No debería estar construyendo/imprimiendo cadena con + de todos modos. String.Format es mucho más fácil de trabajar con ... –

Respuesta

8

En equipos donde hice la internacionalización, generalmente también creamos un recurso para la cadena de formato, algo como USER_COULD_NOT_BE_ADDED_FORMAT, y llamado String.Format (o el equivalente de su entorno) pasando el valor de ese recurso como el patrón de formato.

Entonces podrás hacer Console.Write(String.Format(resourceManager.GetString("USER_COULD_NOT_BE_ADDED_FORMAT"), userNum));

La mayoría de los localizadores o bien tener una formación en las cadenas de formato utilizados por el sistema que se está localizando, o que se les proporciona orientación en el kit de localización que se les proporcione. Así que esto no es, por ejemplo, una barrera tan alta como hacer que modifiquen el código directamente.

Por lo general, necesita agregar un comentario loc al ID del recurso para explicar los parámetros posicionales.

+1

¿Podría ir un poco más allá en cómo puedo agregar un "comentario loc al ID del recurso"? ¿O darme un enlace para leer más? ¡Gracias! :) –

+0

Además, mientras lo tengo aquí ya que parece tener experiencia con estas cosas, ¿es mejor tener un solo archivo de resx para todas las cadenas en un proyecto determinado, o sería mejor separarlos en múltiples archivos de resx? , por ejemplo, uno para cada formulario? (Mis propios archivos resx se almacenan en un proyecto de globalización separado) –

+1

Suponiendo que está utilizando el formato .resx, el comentario de localización es solo "Comentario" en la interfaz de usuario del editor de resx, o '' en el xml justo después de ' 'elemento. – JasonTrue

11

No puede hacer esto directamente.

Lo que puede hacer es colocar una ficha - una cadena específica que puede ser reemplazado con string.Replace con el valor de la variable.

Un buen candidato para este sería el construido en el formato de cadenas:

Console.Write(string.Format("User {0} could not be added", userNum)); 

Suponiendo userNum tiene el valor 5, el resultado sería:

User 5 could not be added 

Usted puede localizar esta cadena con la especificadores de formato compuesto.

5

Uso Composite Formatting así:

Console.Write("User {0} could not be added", userNum); 

De esta manera usted localizar "User {0} could not be added".

0

que puede hacer que su simple enter image description here

nueva Veamos como

String.Format(Resource_en.PhoneNumberForEmployeeAlreadyExist,letterForm.EmployeeName[i]) 

esta voluntad me dio mensaje dinámico cada vez que

por el camino que estoy usando g ResXManager

Cuestiones relacionadas