9
votes

Comment utiliser les formats de fichier XLIFF ou PO L10N dans le développement de .NET (C # / ASP.NET)

J'ai fait des recherches sur xliff et PO i18n Fichiers Formats et il semble qu'ils sont largement utilisés et supportés. Il existe de nombreux outils gratuits pour gérer les traductions dans les fichiers xliff / po .

Cependant, jusqu'à présent, je n'ai pas pu trouver une bonne solution de la manière d'utiliser les fichiers XLIFF ou PO dans .NET (C # / ASP.NET) Projets. Je m'attendrais à ce qu'une sorte de xliff / po => resx convertisseur, mais jusqu'à présent, n'en avez pas encore trouvé un.

Cependant, de nombreux outils prennent en charge la conversion de fichiers xliff / po en java .properties format.

Si vous avez une expérience de mise en œuvre de L10N via XLIFF ou PO dans des projets .NET - Veuillez fournir des conseils et partager les meilleures pratiques sur la façon dont cela fonctionne.

PS: Je préférerais utiliser le format XLIFF, car je le trouve plus propre et plus de caractéristique, mais PO est également une option.


2 commentaires

Toute raison pour laquelle vous ne pouvez pas utiliser les fichiers de ressources directement?


Nous voulons utiliser un format unique pour les traductions entre différents projets de notre société, ce sont des projets C # et Java et les partagent pour minimiser la duplication et les coûts supplémentaires pour des traductions séparées pour différents projets.


4 Réponses :


7
votes

PO et les fichiers XLIFF fonctionnent généralement différemment:

  • PO Les fichiers PO sont des fichiers de ressources complétés dans un format binaire, puis consultés à l'aide de bibliothèques GetText (). Parfois, PO est utilisé comme format d'extraction comme XLIFF, mais ce n'est pas son objectif initial.

  • XLIFF est des fichiers d'extraction créés en extrayant votre fichier de ressources (E.G. RESX) dans XLIFF, puis fusionnés dans le format d'origine.

    Donc pour XLIFF Vous devriez rechercher un outil RESX -> XLIFF -> RESX plutôt que XLIF -> RESX . .

    Les outils qui extraient / fusionnent des fichiers XLIFF sont généralement appelés filtres. Il existe de nombreux outils de traduction commerciale qui accepteront Xliff, et certains peuvent également créer XLIFF (Swordfish, Trados Studio, etc.).

    Il existe également quelques outils à source ouverte pouvant extraire / fusionner XLIFF: FILE2XLIFF4J par exemple (mais je ne pense pas qu'il prend en charge RESX).

    Rainbow, à partir du projet Okapi, supporte RESX. L'ancienne version .NET (Rainbow 5: Okapi sur Sourceforge) a un filtre dédié au fichier RESX et peut très bien les gérer; Même avec des données binaires. Il peut s'expliquer par un problème avec des contrôles tiers (voir http: //okapi.sourceforge .NET / RELEASE / FILTRES / AIDE / NETRES.HTM Pour plus de détails).

    La nouvelle version Java (Rainbow 6: http://code.google.com/p/okapi / ) Support RESX via son filtre XML et fonctionne bien avec une resex simple, mais si vous avez des données binaires dans elles, le texte de ces entrées ne sera pas extrait.

    - -ys


1 commentaires

Très bonne réponse! Merci de préciser cela pour moi. Je vais creuser davantage pour déterminer la meilleure approche pour minimiser les efforts sur L10N pour la combinaison de projets .NET et Java.



10
votes

Vous pouvez également considérer le package i18n par Daniel Crenna , disponible auprès de Nuget . Il utilise des fichiers PO comme magasin par défaut pour le texte localisé.


0 commentaires

4
votes

J'ai utilisé PO pour gérer un projet .NET après que les fichiers .resx ont commencé à sortir de la main. Je l'ai utilisé "comme format d'extraction comme xliff" (voir Yves commentaire ) . Nos fichiers .resx existants ont été exportés / fusionnés une fois en un fichier .po par langue, qui est ensuite devenu nos fichiers de langue faisant autorité à partir duquel tous les fichiers RESX seraient automatiquement générés.

Les projets que je ne suis pas ne sont pas ASP, donc je ne connais pas le paquet mentionné par McW0933, mais la mise en œuvre de RESGEN.EXE de Mono a une capacité de conversion RESX Simple PO <=>. Toutefois, afin de préserver les commentaires existants et d'ajouter automatiquement le texte d'origine sous forme de commentaires supplémentaires, j'ai étendu l'outil de conversion de Mono au point où celui que j'utilise est essentiellement réécrit.

i Mettez le convertisseur étendu .Po <=> .resx sur Github .

Quant à choisir .Po pour gérer les traductions d'un projet C #, .po est simple et sympathique, mais il existe des inconvénients de l'utiliser d'une manière qui diffère légèrement de son utilisation d'origine dans GetText, et je n'ai pas L'expérience de dire s'il s'agissait d'un meilleur choix que XLIFF, mais de pouvoir gérer les traductions et automatiser les tâches était beaucoup mieux que de traiter avec les fichiers RESX, comme si nous étions dans le passé.

inconvénients mineurs d'utiliser un peu différemment à son intention:

  • Parce que GetText utilise msgid pour doubler comme le champ pour stocker la chaîne originale non traitée dans, je devais faire archiver Resgenex la chaîne de traduction originale dans un commentaire ci-joint au lieu d'un champ conçu à cet effet.
  • Certains outils supposent que le msgstr contiendra la traduction anglaise d'origine (au lieu d'une seule chaîne d'identité), ce qui pourrait signifier que l'option de vérification automatique des erreurs de cet outil n'est pas très utile, ou cela pourrait signifier quelque chose qui vous fait choisir un Différents outils, etc. La plupart des outils ne font aucune hypothèse.
  • Certains outils .po comme \ n au lieu de \ r \ n

    Le projet que j'ai écrit à l'origine Resgenex pour avoir deux fichiers .resx et un fichier .isl pour chaque langue prise en charge, mais il vous sera bientôt besoin de gérer toutes les traductions d'un projet .NET contenant plusieurs fichiers RESX pour chaque classe le code. Lorsque cela se produit, je déciderai si je devrais continuer à utiliser .Po ou si je devrais utiliser Xliff ou autre chose. Si je continue à utiliser .Po, je vais nettoyer ResGenex et il est probablement nécessaire d'ajouter plus de fonctionnalités, comme la possibilité d'ajouter automatiquement le nom de montage et les préfixes de nom de classe aux msgstras.


0 commentaires

0
votes

Consultez Tâches XLIFF . L'outil génère xliff à partir de RESX et des assemblages satellites à partir de xliff .


0 commentaires