web-dev-qa-db-fra.com

Localiser du texte à partir de fichiers XML

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 ...

3
onetrickpony

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:

  1. Analyser le XML (pour label) et créer un fichier .po avec une sortie gettext pour ces chaînes (puis fusionner éventuellement les fichiers .po).
  2. Dupliquez le XML et insérez le _()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/

3
Wyck

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/

3
Shaun McCance