
Ao criar um novo projeto, tive que usar * .resx para WinForms, I2Localization for Unity ou outras soluções para localizar aplicativos. Todas essas soluções são semelhantes, pois você precisa criar uma chave de localização, inseri-la no código e no dicionário. No começo, está tudo bem, mas com o tempo, esse processo começa a incomodar. No entanto, olhando para a chave no código, nem sempre é claro do que se trata.
Sobre a situação em que você precisa adicionar a localização a um projeto grande, onde ele não existia, nem vou dizer o quão difícil é.
Não sei por que, mas acontece que há muito tempo uma solução pronta como o gnu / gettext. Ao perguntar a seus amigos e colegas (aqueles que trabalham com o .NET), a maioria nem sequer ouviu falar disso. Por isso, decidi compartilhar com esta ferramenta conveniente.
O princípio é simples. Você escreve código com linhas em inglês, executa um utilitário que verifica a fonte e fornece a capacidade de traduzir. Nenhuma chave precisa ser inventada. O texto em inglês é a chave.
Vamos começar
1) Instale o pacote NGettext via Nu-get:
PM> Pacote de Instalação NGettext
NGettext é uma implementação de plataforma cruzada GNU / Gettext para .NET.
2) Adicione um arquivo adicional ao seu projeto que simplifique um pouco a sintaxe:
https://github.com/neris/NGettext/blob/master/doc/examples/T.csTambém adicionamos um diretório ao projeto onde as traduções serão armazenadas:
MyProj \ Loc \ ru-RU \ LC_Messages
No meu caso, temos a seguinte imagem:

3) Adicione os caminhos ao arquivo T.cs:
static T() { var localesDir = Path.Combine(Directory.GetCurrentDirectory(), "Loc"); _Catalog = new Catalog("Test", localesDir, new CultureInfo("ru-RU")); }
Simplificado. Por exemplo, apenas russo. (É possível ler dicionários da própria montagem)
4) Nós escrevemos nosso código usando localização. Em vez de "texto", escrevemos 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) Agora precisamos traduzir todo o texto. Faça o download do
PoEdit . Crie um arquivo de tradução:
Arquivo -> Criar -> Pasta LC_MESSAGES -> Test.po

Especifique a pasta em que nossas fontes estão localizadas. O programa deles verificará:

Também é necessário especificar a palavra-chave que o poEdit procurará pela tradução:

Adicione a tradução que precisamos e salve.

Adicione arquivos de tradução ao projeto. Faça-os copiar sempre:
(É possível incorporá-los na própria montagem)

Feito. Lançamos:

A instalação está pronta. O resto é simples. Escreva o código - edite a tradução
Você também pode encontrar bibliotecas prontas para localização de interfaces:
→
WPF→
Informações adicionais sobre o uso do NGettext→
Informações GNU / Gettext