2011-01-21 9 views
5

Varias veces he necesitado soportar varios idiomas al construir sitios web pero todavía tengo que encontrar una buena manera de pasar las cadenas de idioma del servidor al cliente para que puedan ser utilizados en Javascript para diálogos, mensajes, etc.¿Cuál es la forma recomendada de habilitar el soporte de múltiples idiomas para el texto mostrado en Javascript?

¿Cuáles son sus recomendaciones o experiencia con esto?

EDIT: Me inclino por generar los archivos de idioma javascript sobre la marcha y agradecería si alguien sabe las bibliotecas de terceros que pueden hacer esto.

Respuesta

2

normalmente me muevo toda especificación de la cadena de archivos separados y luego se incluyen el apropiado en la página, algo como esto:

en ST/js/messages-ru.js:

hello = "Привет" 
bye = "Пока" 

En st/js/messages-en.js:

hello = "Hello!" 
bye = "Good bye!" 

Cuando se genera la página, se puede determinar el idioma e inserte el archivo js correspondiente en la página.

+0

Estaba pensando en algo como esto. pero actualmente el archivo de idioma usado en el lado del servidor en C# se autogenera y también se necesita generar cualquier archivo javascript. ¿Autogenera los archivos o los actualiza a mano? – eaglestorm

+0

@ealgestorm Los genero automáticamente en el momento de la instalación desde un único archivo, que contiene valores para todos los idiomas. Utilizo m4 para procesar la fuente, pero sé que a mucha gente no le gusta, así que puedes crear tu propia solución para eso :) –

0

no hay buenas maneras de resolver el problema. Pero yo o nuestro equipo tenemos un método pesado que escribe cadenas diferentes en js para diferentes idiomas, por ejemplo, en el Reino Unido escribimos un js llamado uk.js y en fr escribimos un fr.js para expresiones estáticas en diálogos o mensajes.

1

Genera la parte dependiente del idioma de javascript sobre la marcha manejo de la configuración regional. Para caché de rendimiento, javascript específico del idioma, una vez que se genera para una configuración regional determinada. Esto salva de mantener demasiados lenguaje javascript específicos

1

Pasamos un objeto con el método JavaScript que requiere traducciones, y poblar ese objeto desde el código del lado del servidor:

<script type="text/javascript"> 
    var dialogl10n = { 
     caption: '<%= Resources.GetString(x => x.DialogCaption) %>', 
     okButton: '<%= SharedResources.GetTerm(x => x.Ok) %>' 
     cancelButton: '<%= SharedResources.GetTerm(x => x.Cancel) %>' 
    }; 
</script> 

En la función javascript:

Foo.Bar.doSomething = function(l10n) { 
    alert(l1n0.caption); 
} 

Estamos pensando en mejorar esto para crear automáticamente el objeto JSON:

onClick='Foo.Bar.doSomething(<%= Resources.GetPackageAsJson(); %>);' 

que crearía el objeto equivalente creado a mano arriba.

+0

Actualmente estoy usando una matriz de espacio de nombres para almacenar las cadenas usando claves numéricas, principalmente porque el lado del servidor ya usa ese formato pero no es muy amigable para el desarrollador son muchos comentarios que indican a qué se refiere la clave. Intento diseñar algo más genérico – eaglestorm

0

Si está utilizando el marco AJAX de ASP.NET, el control ScriptManager contiene varios mecanismos para generar automáticamente javascript a partir de archivos .resx localizados y enviar el idioma correcto al usuario según la configuración estándar de CultureInfo que el resto de el sitio web está usando. Ver this MSDN article para un tutorial.

+0

Definitivamente no uso el ScriptManager – eaglestorm

+0

Entiendo ese punto de vista ;-) Creo que tendrá que escribirlo usted mismo o buscar una herramienta de terceros, entonces. –

Cuestiones relacionadas