Savez-vous que je pourrais récupérer automatiquement les chaînes dans les fichiers .xml et les stocker dans un fichier .po/.pot, comme le fait PoEdit avec celles des fichiers .php?
La structure XML ressemble à ceci:
<?xml version="1.0" encoding="iso-8859-1"?>
<options>
<page id="content" label="Content Options" icon="4">
<section id="post" label="Content Options">
<option id="title" type="checkbox" default="yes" label="Show post title"></option>
<option id="comments" type="checkbox" default="yes" label="Show comments link"></option>
<option id="thumb_size" type="select" default="default" label="Thumbnail Size">
<value id="default" label="Default Size, (%s)" vars="default_size"></value>
<value id="100x100" label="Small (100x100)"></value>
<value id="150x150" label="Medium (150x150)"></value>
<value id="200x200" label="Large (200x200)"></value>
</option>
</section>
</page>
</options>
Les chaînes de l'attribut "label" devraient être détectées par un analyseur gettext ou quelque chose du genre ...
Vous devez utiliser un format XML localisé tel que XLIFF
ou TMX
. Il existe un outil pour convertir XLIFF en .po.
Si vous ne pouvez pas changer le XML source, vous avez quelques options, mais cela dépend vraiment de la manière dont vous produisez ces informations XML:
_()
gettext directement dans le XML, puis analysez-le en sortie.Jetez également un coup d’œil à cet outil et à certains outils en ligne de commande permettant de convertir xml -> po je pense, http://itstool.org/
Si vous souhaitez essayer itstool, il vous suffit de lui attribuer un fichier de règles ITS personnalisé pour votre format. Les règles suivantes fonctionnent pour l'extrait de code que vous avez posté:
<its:rules
xmlns:its="http://www.w3.org/2005/11/its"
its:version="1.0">
<its:translateRule translate="yes" selector="//@label"/>
</its:rules>
Enregistrez ceci sous, par exemple, options.its, puis lancez itstool comme ceci:
itstool -i options.its -o somefile.pot somefile.xml
Une fois que vos traducteurs ont traduit et vous ont donné un fichier PO (par exemple, xx.po), compilez-le dans un fichier mo, puis fusionnez-le avec itstool:
msgfmt -o xx.mo xx.po
itstool -m xx.mo -i options.its -o somefile.xx.xml somefile.xml
Consultez la documentation pour en savoir plus: http://itstool.org/documentation/