.NET - localisation sans douleur. (N) gettext + poedit



Pour créer un nouveau projet, j'ai dû utiliser soit * .resx pour WinForms, soit I2Localization pour Unity, soit d'autres solutions pour localiser les applications. Toutes ces solutions sont similaires en ce sens que vous devez trouver une clé de localisation, l'insérer dans le code et dans le dictionnaire. Au début, tout va bien, mais au fil du temps, ce processus commence à ennuyer. Cependant, en regardant la clé dans le code, il n'est pas toujours clair de quoi il s'agit.

À propos de la situation oĂč vous devez ajouter la localisation Ă  un grand projet oĂč elle n'existait pas du tout, je ne dirai mĂȘme pas Ă  quel point c'est difficile.

Je ne sais pas pourquoi, mais il s’avĂšre qu’une solution prĂȘte Ă  l’emploi telle que gnu / gettext existe depuis longtemps. Lorsqu'ils demandent Ă  leurs amis et collĂšgues (ceux qui travaillent avec .NET), la plupart n'en ont mĂȘme pas entendu parler. Par consĂ©quent, j'ai dĂ©cidĂ© de partager avec cet outil pratique.

Le principe est simple. Vous Ă©crivez du code avec des lignes en anglais, exĂ©cutez un utilitaire qui analyse la source et vous offre la possibilitĂ© de traduire. Aucune clĂ© n'a besoin d'ĂȘtre inventĂ©e. Le texte en anglais est la clĂ©.

Commençons


1) Installez le package NGettext via Nu-get:
PM> Install-Package NGettext

NGettext est une implémentation GNU / Gettext multiplateforme pour .NET.

2) Ajoutez un fichier supplémentaire à votre projet qui simplifie un peu la syntaxe:
https://github.com/neris/NGettext/blob/master/doc/examples/T.cs

Nous ajoutons Ă©galement un rĂ©pertoire au projet oĂč les traductions seront stockĂ©es:
MyProj \ Loc \ ru-RU \ LC_Messages

Dans mon cas, nous obtenons l'image suivante:



3) Ajoutez les chemins d'accĂšs au fichier T.cs:

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

SimplifiĂ©. Par exemple, seulement le russe. (Il est possible de lire les dictionnaires de l'assemblage lui-mĂȘme)

4) Nous écrivons notre code en utilisant la localisation. Au lieu de «texte», nous écrivons T ._ («texte»)

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

5) Maintenant, nous devons traduire tout notre texte. Téléchargez PoEdit . Créez un fichier de traduction:
Fichier -> Créer -> Dossier LC_MESSAGES -> Test.po



Spécifiez le dossier dans lequel se trouvent nos sources. Leur programme va scanner:



Il est également nécessaire de spécifier le mot clé que poEdit recherchera pour la traduction:



Ajoutez la traduction dont nous avons besoin et enregistrez.



Ajoutez des fichiers de traduction au projet. Faites-les toujours copier:
(Il est possible de les intĂ©grer dans l'assemblage lui-mĂȘme)



C'est fait. Nous lançons:



La configuration est prĂȘte. Le reste est simple. Écrivez le code - Ă©ditez la traduction


Vous pouvez Ă©galement trouver des bibliothĂšques prĂȘtes Ă  l'emploi pour localiser les interfaces:

→ WPF
→ Informations supplĂ©mentaires sur l'utilisation de NGettext
→ Informations GNU / Gettext

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


All Articles