
Al crear un nuevo proyecto, tuve que usar * .resx para WinForms o I2Localization para Unity u otras soluciones para localizar aplicaciones. Todas estas soluciones son similares en el sentido de que debe encontrar una clave de localización, insertarla en el código y en el diccionario. Al principio, todo está bien, pero con el tiempo, este proceso comienza a molestar. Sin embargo, al mirar la clave en el código, no siempre está claro de qué se trata.
Acerca de la situación en la que necesita agregar localización a un proyecto grande donde no existía en absoluto, ni siquiera diré lo difícil que es.
No sé por qué, pero resulta que una solución preparada como gnu / gettext ha existido durante mucho tiempo. Al preguntar a sus amigos y colegas (aquellos que trabajan con .NET), la mayoría ni siquiera ha oído hablar de esto. Por lo tanto, decidí compartir con esta herramienta conveniente.
El principio es simple. Escribe código con líneas en inglés, ejecuta una utilidad que escanea la fuente y le brinda la capacidad de traducir. No es necesario inventar llaves. El texto en inglés es la clave.
Empecemos
1) Instale el paquete NGettext a través de Nu-get:
PM> Install-Package NGettext
NGettext es una implementación multiplataforma de GNU / Gettext para .NET.
2) Agregue un archivo adicional a su proyecto que simplifique un poco la sintaxis:
https://github.com/neris/NGettext/blob/master/doc/examples/T.csTambién agregamos un directorio al proyecto donde se almacenarán las traducciones:
MyProj \ Loc \ ru-RU \ LC_Messages
En mi caso, esta imagen resulta:

3) Agregue las rutas al archivo T.cs:
static T() { var localesDir = Path.Combine(Directory.GetCurrentDirectory(), "Loc"); _Catalog = new Catalog("Test", localesDir, new CultureInfo("ru-RU")); }
Simplificado Por ejemplo, solo ruso. (Es posible leer diccionarios del propio ensamblaje)
4) Escribimos nuestro código usando la localización. En lugar de "texto", escribimos T ._ ("texto")
namespace TestCode { static class Program { public static void Main(string[] args) { Console.WriteLine(T._("Hello, World!")); Console.WriteLine(T._("Cat")); Console.ReadKey(); } } }
5) Ahora necesitamos traducir todo nuestro texto. Descargar
PoEdit . Crea un archivo de traducción:
Archivo -> Crear -> carpeta LC_MESSAGES -> Test.po

Especifique la carpeta en la que se encuentran nuestras fuentes. Su programa escaneará:

También es necesario especificar la palabra clave que poEdit buscará para la traducción:

Agregue la traducción que necesitamos y guarde.

Agregar archivos de traducción al proyecto. Hazlos copiar siempre:
(Es posible incrustarlos en el propio ensamblaje)

Listo Lanzamos:

La configuración está lista. El resto es simple. Escribe el código - edita la traducción
También puede encontrar bibliotecas preparadas para localizar interfaces:
→
WPF→
Información adicional sobre el uso de NGettext→
Información de GNU / Gettext