2010-10-29 8 views
13

J'ai la situation suivante:Comment puis-je fusionner 2 fichiers .pot (fichiers de traduction)

Un produit que je veux traduire, qui a deux sites distincts, l'un pour les administrateurs, l'un pour les clients.
La base de code est CakePHP.
Les deux sites sont complètement séparés les uns des autres, ce sont des sites CakePHP complets.
Et ils ont tous deux BEAUCOUP de chaînes en commun. Donc, avec CakePHP, je génère les fichiers .pot pour chaque site, mais j'aimerais donner aux traducteurs UN fichier, avec les chaînes uniques dans les deux fichiers .pot. Ils me renvoient un fichier .po avec les chaînes pour les deux sites, et je vais juste copier le même fichier sur les deux sites, donc je vais avoir des fichiers .po avec des chaînes supplémentaires que le code ne sera pas utiliser, mais cela ne devrait pas être un problème. Donc la question est essentiellement ... Comment est-ce que je peux fusionner deux dossiers de $$.pot?

  • Je dois obtenir un nouveau fichier qui n'a pas de chaînes en double.
  • Idéalement, il conservera (et pour les chaînes en double, ajouter) les commentaires avant chaque chaîne ajoutée par CakePHP, en spécifiant où la chaîne a été trouvée, mais si cela n'est pas fait, je peux m'en passer. (Voir ci-dessous pour un extrait du fichier .pot pour une clarification à ce sujet)

Connaissez-vous des outils qui me laisseraient faire cela? J'aimerais vraiment éviter d'avoir à écrire le mien.


Ce sont les commentaires dont je parle ci-dessus:

#: \controllers\accounts_controller.php:118 
#: \controllers\customer_documents_controller.php:75 
msgid "Parent Customer not specified" 
msgstr "" 

Répondre

26

Ok, donc l'outil pour ce faire est msgcat

msgcat *.pot > all.pot 

Si vous êtes sous Windows, installez Cygwin, et assurez-vous que vous avez le paquet gettext-devel, parce que msgcat n'est pas dans le gettext package régulier.

+1

Merci! ___________________________ –

+0

@ J.Pablo Fernández: pouvez-vous publier la commande pour la fusion. – 1355

+4

Dans le cas des fichiers POT (par opposition aux fichiers PO), je suggère d'utiliser également "--use-first", pour ne pas se retrouver avec des choses inutilement dupliquées. – Gallaecio

-3

la commande est:

msgcat inputfile1 inputfile2 ... > outpo 
+2

Pourquoi la downvote? La réponse de J. Pablo est meilleure, mais ce n'est pas techniquement faux ou trompeur – gregmac

+5

Je suppose que la downvotation est faite parce que cette réponse ne contient rien en plus de la réponse existante et celle-ci a été ajoutée près de deux ans après la meilleure réponse. –