J'ai un programme avec plusieurs domaines, certains fichiers sources contiennent des appels dgettext() avec différents domaines de texte. Comment extraire des gettext-strings dans plusieurs fichiers .po? Par exemple, appelez dgettext('one', 'Hello')
devrait aller à one.po, et dgettext('two', 'Bye')
à deux.po. xgettext ignore simplement le domaine de texte et met tout dans un seul fichier.gettext: extraire les chaînes dgettext() aux fichiers domain.po
Répondre
Si vous utilisez Linux, utilisez le programme gtranslator pour manipuler * .po et testez vos fichiers * .po.
D'abord, vous avez besoin d'un moyen de séparer les domaines.
Par exemple, disons que vous avez un domaine pour lib et un pour application, puis créez un raccourci pour l'appel dgettext()
;
_app(msg) -> dgettext("app", msg);
et un pour le domaine lib:
_lib(msg) -> dgettext("lib", msg);
Ajouter ces appels sur tout votre code, comme celui-ci;
show_message(_app("Choose a directory to save your work."));
show_message(_lib("No space left on device."));
Rappelez-vous que vous devez appeler bindtextdomain()
pour les deux domaines lors de l'initialisation de votre application.
Pour les extraire, vous devez spécifier différents mots-clés pour xgettext
sur tous les noms de fichiers dans l'arborescence des sources contenant ces marqueurs:
xgettext --keyword=_app -d domain1 filenames...
xgettext --keyword=_lib -d domain2 filenames...
Enfin, compilez les deux fichiers .po dans leur variante .mo binaire et copiez/installez-les au bon endroit.
Je connaissais déjà cette solution, comme mentionné dans les commentaires de la question, mais merci pour l'effort. – Shef
Si vous pensez que c'est une solution de contournement, je ne pense pas qu'il y aura des solutions au problème qui ne sont pas des solutions de contournement. L'alternative serait d'écrire votre propre programme qui extrait les appels de dgettext(), mais alors vous auriez à peu près dupliquer toute la logique de xgettext. –
Ce n'est pas une solution, mais je vais vous accorder la prime, car elle sera gaspillée autrement. – Shef
- 1. Extraire des chaînes de fichiers PE
- 2. Gettext et les paramètres régionaux
- 3. Windows API pour extraire les fichiers zip?
- 4. Extraire les fichiers CAB avec PHP
- 5. C# et Regex: Comment extraire les chaînes entre guillemets
- 6. Dans Haskell, comment extraire les chaînes d'un document XML?
- 7. Module Python pour extraire les dates probables des chaînes?
- 8. Comment extraire les chaînes de la gamme sur iPhone?
- 9. Utiliser GNU gettext sur Win32
- 10. PHP gettext() en norvégien
- 11. URL échappant aux chaînes MFC
- 12. Rails: gettext pot génération génère des fichiers vides
- 13. Comparer des fichiers les uns aux autres
- 14. Comment les chaînes sont-elles intégrées dans les fichiers binaires?
- 15. bash: Comment délimiter les chaînes pour trouver les fichiers
- 16. Comment extraire les fichiers sous Perforce depuis Emacs?
- 17. Comment extraire tous les fichiers de projet VB6 de VSS?
- 18. Localisation de sites Web ASP.NET MVC avec GNU Gettext?
- 19. Comment utiliser GNU gettext avec VB6?
- 20. Comment extraire des fichiers d'installation .inf/.sys?
- 21. Extraire des fichiers d'un Jar plus efficacement
- 22. Comment extraire la valeur entre deux chaînes en utilisant regex?
- 23. Solution de contournement poedit pour gettext dynamique
- 24. Outils pour aider à l'internationalisation des chaînes dans JSP
- 25. Eclipse alternative aux fichiers VS.sln
- 26. Urls relatives aux fichiers Javascript
- 27. Comment puis-je détecter les accès aux fichiers sous Linux?
- 28. Comment puis-je extraire les alias pour les fichiers de configuration shell?
- 29. Vimdiff - Comment extraire des lignes similaires dans les fichiers et les sortir dans un fichier
- 30. .NET Forms Authentication: Comment limiter l'accès aux ressources comme les fichiers pdf aux utilisateurs authentifiés seulement
J'ai trouvé une [suggestion] (http://stackoverflow.com/a/5354360/645186) sur la façon d'analyser chaque domaine séparément. Cependant, ceci est une solution de contournement. – Shef