netcore net istringlocalizer español asp and c# .net asp.net localization

c# - net - ¿Cómo localizas un sitio web impulsado por una base de datos?



net core culture (5)

He estado jugando con las características de localización .NET integradas y parece que todos confían en poner datos en archivos resx.

Pero la mayoría de los sistemas no pueden confiar en esto porque están basados ​​en bases de datos. Entonces, ¿cómo resuelves este problema? ¿Hay una forma integrada en .NET o creas una tabla de traducción en SQL y lo haces todo de forma manual? Y si tiene que hacer esto en la mayoría de sus sitios, ¿hay alguna razón para usar incluso la forma de localización de resx?

Un ejemplo de esto es que tengo una lista de preguntas frecuentes en mi sitio, guardo esta lista en la base de datos para poder agregar / eliminar más fácilmente, pero al ponerlo en la base de datos, no tengo una buena manera de traducir esta información a varios idiomas .


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


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

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

ProductDescription contiene el ProductId, el nombre, la descripción y el LCID.


Vivo en Canadá así 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 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,....)

Una tercera opción que pensé de reciente, que sería realmente agradable si una base de datos lo admite 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 pasando un parámetro para especificar el idioma. Nada de 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.


En mi opinión, la localización de contenido dinámico (por ejemplo, sus preguntas frecuentes) debe hacerla en su base de datos. Dependiendo de cómo se almacenan sus preguntas, probablemente crearía una columna de "configuración regional" y la usaría al seleccionar las preguntas de preguntas frecuentes de la base de datos. No estoy seguro de si esto se escalaría muy bien cuando comenzaras a localizar muchas tablas.

Para contenido estático (p. Ej., Etiquetas de campo de formulario, texto estático, iconos, etc.) probablemente debería estar bien utilizando recursos basados ​​en archivos. Sin embargo, si realmente quisiera, 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: