Vous ne pouvez pas réaliser cela avec une seule commande. L'option xgettext --files-from
est votre ami.
find . -name '*.php' >POTFILES
xgettext --files-from=POTFILES
Si vous êtes certain que vous n'avez pas trop de fichiers source, vous pouvez également utiliser find
avec xargs
:
find . -name "*.php" -print0 | xargs -0 xgettext
Cependant, si vous avez trop de fichiers source, xargs
appellerez xgettext
multiples fois afin que la longueur maximale de la ligne de commande de votre plate-forme ne soit pas dépassée. Afin de vous protéger contre ce cas, vous devez utiliser l'option xgettext -j
, --join-existing
, supprimez le fichier des messages obsolètes d'abord, et commencer par un vide de sorte que xgettext ne sous caution pas:
rm -f messages.po
echo >messages.po
find . -name "*.php" -print0 | xargs -0 xgettext --join-existing
Comparez cela avec la solution simple donnée d'abord avec la liste des fichiers source dans POTFILES
!
L'utilisation de find
avec --exec
est très inefficace car elle appellera xgettext -j
une fois pour chaque fichier source pour rechercher des chaînes traduisibles.Dans le cas particulier de xgettext -j
, il est encore plus inefficace car xgettext doit lire le fichier de sortie existant toujours croissant messages.po
à chaque invocation (c'est-à-dire avec chaque fichier source d'entrée).
Eh bien ça ne marche pas pour moi, mais vous m'avez montré un moyen de possibilité sinon serait accepté et vivre avec lui comme s'il n'y avait pas de meilleure façon que cela –
Salut, Beau travail, mais becarefull d'ajouter -j à la fin de la commande, sauf si cela ne marche pas – Ata
Ceci est faux, car s'il y a trop de fichiers pour tenir sur une ligne de commande, xargs exécutera xgettext plusieurs fois, provoquant les invocations précédentes à être clobées. Il ne suffit pas non plus d'ajouter -j, car vous devez d'abord supprimer le fichier ou vous joindre aux anciennes données. –