Pregunta

He estado jugando con .NET integrado en las funciones de localización y parece que todos se basan en poner datos en archivos resx.

Pero la mayoría de los sistemas no pueden confiar en esto porque son impulsados ??por bases de datos. Entonces, ¿cómo resuelves este problema? ¿Existe una forma incorporada de .NET o crea una tabla de traducción en SQL y lo hace todo manualmente? Y si tiene que hacer esto en la mayoría de sus sitios, ¿hay alguna razón para utilizar la forma de localización resx?

Un ejemplo de esto es que tengo una lista de preguntas frecuentes en mi sitio, mantengo esta lista en la base de datos para poder agregar / eliminar más fácilmente, pero al ponerla en la base de datos, no tengo ninguna manera de traducir esta información. en múltiples idiomas.

¿Fue útil?

Solución

En mi opinión, la ubicación del contenido dinámico (por ejemplo, sus preguntas frecuentes) debe realizarla en su base de datos. Dependiendo de cómo se almacenen sus preguntas, probablemente crearía un " locale " columna y utilícela cuando seleccione las preguntas frecuentes de la base de datos. No estoy seguro de si esto se escalaría muy bien cuando comenzara a localizar muchas tablas.

Para el contenido estático (por ejemplo, etiquetas de campo de formulario, texto estático, iconos, etc.) probablemente debería estar bien usando recursos basados ??en archivos. Sin embargo, si realmente quisieras, parece que no sería muy difícil crear una implementación de proveedor de recursos personalizada que pudiera manejar esto.

Aquí hay algunos enlaces relacionados:

Otros consejos

Para un elemento dado en su modelo de datos, divida la parte de la descripción en una tabla localizada con una columna de ID de configuración regional (LCID).

Por lo tanto, la tabla para el Producto no contendría de hecho la descripción o el nombre de los productos, sino solo sus valores duros y rápidos (ProductId, EAN, NumberInStock, NextStockData, IsActive, IsPublished) etc.

ProductDescription luego contiene  Id. De producto, nombre, descripción, LCID

Vivo en Canadá por lo que el multilingüismo es un gran problema. He visto dos enfoques. La primera opción es almacenar todos los datos localizados para un registro específico en una tabla diferente, vinculada a la tabla original por la clave principal y la configuración regional. La segunda opción es similar a la primera, excepto que para cada configuración regional, hay una tabla diferente, con la configuración regional como un sufijo para el nombre de la tabla.

Opción A

Item (ItemID, ...)
ItemLocal (ItemID,LocaleID,....)

Opción B

Item (ItemID, ...)
Item_ENUS (ItemID,....)
Item_ENGB (ItemID,....)
Item_FR (ItemID,....)

Pensé en una tercera opción reciente, lo que sería realmente bueno si una base de datos lo admitiera de forma nativa sería almacenar los valores para todos los locales en el mismo campo. Y si el campo se configuró como varchar-multilocal, entonces tendría que acceder a él pasando un parámetro para especificar el idioma. Nada como esto existe tal como lo conozco, pero es algo que creo que realmente haría las cosas mucho más fáciles y mucho más fluidas.

Actualmente, la traducción no es algo que se pueda hacer automáticamente. La mejor manera es conseguir que una persona traduzca y use los métodos de Nick para mostrar el lenguaje adecuado.

Utilizamos una combinación de archivos RESX y la Opción A de la respuesta de Kibbee. Creamos una herramienta sencilla para administrar los archivos RESX en línea: http://blog.lavablast.com/post/ 2008/02 / RESX-file-Web-Editor.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top