.NET - Lokalisierung ohne Schmerzen. (N) gettext + poedit



Beim Erstellen eines neuen Projekts musste ich entweder * .resx für WinForms oder I2Localization für Unity oder andere Lösungen zum Lokalisieren von Anwendungen verwenden. Alle diese Lösungen sind insofern ähnlich, als Sie einen Lokalisierungsschlüssel erstellen, diesen in den Code und in das Wörterbuch einfügen müssen. Zuerst ist alles in Ordnung, aber im Laufe der Zeit beginnt dieser Prozess zu nerven. Wenn man sich jedoch den Schlüssel im Code ansieht, ist nicht immer klar, worum es geht.

Über die Situation, in der Sie einem großen Projekt, in dem es überhaupt nicht existierte, eine Lokalisierung hinzufügen müssen, werde ich nicht einmal sagen, wie schwierig es ist.

Ich weiß nicht warum, aber es stellt sich heraus, dass es eine fertige Lösung wie gnu / gettext schon lange gibt. Wenn die meisten ihre Freunde und Kollegen (diejenigen, die mit .NET arbeiten) fragen, haben sie noch nicht einmal davon gehört. Aus diesem Grund habe ich mich entschlossen, dieses praktische Tool zu verwenden.

Das Prinzip ist einfach. Sie schreiben Code mit Zeilen in Englisch, führen ein Dienstprogramm aus, das die Quelle scannt und Ihnen die Möglichkeit zum Übersetzen bietet. Es müssen keine Schlüssel erfunden werden. Der Text in Englisch ist der Schlüssel.

Fangen wir an


1) Installieren Sie das NGettext-Paket über Nu-get:
PM> Install-Package NGettext

NGettext ist eine plattformübergreifende GNU / Gettext-Implementierung für .NET.

2) Fügen Sie Ihrem Projekt eine zusätzliche Datei hinzu, die die Syntax etwas vereinfacht:
https://github.com/neris/NGettext/blob/master/doc/examples/T.cs

Wir fügen dem Projekt auch ein Verzeichnis hinzu, in dem Übersetzungen gespeichert werden:
MyProj \ Loc \ ru-RU \ LC_Messages

In meinem Fall erhalten wir folgendes Bild:



3) Fügen Sie die Pfade zur T.cs-Datei hinzu:

static T() { var localesDir = Path.Combine(Directory.GetCurrentDirectory(), "Loc"); _Catalog = new Catalog("Test", localesDir, new CultureInfo("ru-RU")); } 

Vereinfacht. Zum Beispiel nur Russisch. (Es ist möglich, Wörterbücher aus der Assembly selbst zu lesen.)

4) Wir schreiben unseren Code mithilfe der Lokalisierung. Anstelle von "Text" schreiben wir T ._ ("Text")

 namespace TestCode { static class Program { public static void Main(string[] args) { Console.WriteLine(T._("Hello, World!")); Console.WriteLine(T._("Cat")); Console.ReadKey(); } } } 

5) Jetzt müssen wir unseren gesamten Text übersetzen. Laden Sie PoEdit herunter. Erstellen Sie eine Übersetzungsdatei:
Datei -> Erstellen -> Ordner LC_MESSAGES -> Test.po



Geben Sie den Ordner an, in dem sich unsere Quellen befinden. Ihr Programm scannt:



Es ist auch erforderlich, das Schlüsselwort anzugeben, mit dem poEdit nach Übersetzungen sucht:



Fügen Sie die benötigte Übersetzung hinzu und speichern Sie sie.



Fügen Sie dem Projekt Übersetzungsdateien hinzu. Lass sie immer kopieren:
(Es ist möglich, sie in die Baugruppe selbst einzubetten.)



Fertig. Wir starten:



Das Setup ist fertig. Der Rest ist einfach. Schreiben Sie den Code - bearbeiten Sie die Übersetzung


Sie können auch vorgefertigte Bibliotheken zum Lokalisieren von Schnittstellen finden:

WPF
Zusätzliche Informationen zur Verwendung von NGettext
GNU / Gettext-Informationen

Source: https://habr.com/ru/post/de432786/


All Articles