Traduire un fichier PO ou POT en ligne, pluriels et contexte pris en charge
Déposez un modèle .pot ou un fichier .po partiellement traduit et récupérez un .po dont chaque msgstr vide est rempli. msgid et msgctxt ne changent jamais, les commentaires et les références sont conservés, et les entrées au pluriel reçoivent autant de formes que la langue cible en demande. Les premières chaînes sont gratuites sans inscription ; le fichier entier, jusqu'à 5,000 chaînes, coûte $5, en paiement unique.
- Les entrées vides et fuzzy sont traduites ; celles que vous avez déjà traduites sont conservées
- Les entrées msgid_plural reçoivent msgstr[0], msgstr[1] … pour la langue cible, avec Plural-Forms dans l'en-tête
- msgctxt, commentaires de traducteur (#.) et références (#:) sont envoyés comme contexte et conservés dans le fichier
- Placeholders php-format, c-format et python-format vérifiés dans chaque chaîne
- Fonctionne pour les extensions et thèmes WordPress, ainsi que pour les projets Django, Python, PHP et C
{
"home.greeting": "Good morning, {name}Buenos días, {name}",
"home.nearby": "{count, plural, =0 {No trails near you yet} one {# trail near you} other {# trails near you}}{count, plural, =0 {Aún no hay rutas cerca de ti} one {# ruta cerca de ti} other {# rutas cerca de ti}}",
"trail.offline_done": "<b>{name}</b> is saved on this phone. You can use the map without a signal.<b>{name}</b> está guardado en este teléfono. Puedes usar el mapa sin señal.",
"trail.share_text": "I just finished {trail} with Trailbook! {km} km and {meters} m up. 🥾¡Acabo de terminar {trail} con Trailbook! {km} km y {meters} m de subida. 🥾",
"saved.empty": "You have not saved any trails yet.\nTap the heart on a trail to keep it here.Aún no has guardado ninguna ruta.\nToca el corazón en una ruta para guardarla aquí."
}
Jaune: variables et syntaxe de pluriel ICU, vérifiées dans chaque chaîne. Turquoise: balises, séquences d'échappement et emoji, conservés tels quels.
Mêmes clés. Mêmes variables. Nouvelle langue.
Seules les valeurs changent. Le fichier revient avec la même imbrication et le même ordre, sous le nom es.json, et toute chaîne qui perd une variable est redemandée avant de pouvoir atteindre votre build.
Appli de démonstration conçue pour cette page ; les chaînes en espagnol sont le résultat réel de l'outil, à partir d'un fichier de 85 chaînes.
D'un modèle POT à un fichier PO
Un fichier .pot est la liste des chaînes qu'un projet doit faire traduire, avec chaque msgstr vide. Déposez-le, choisissez une langue, et vous obtenez un .po dont l'en-tête est renseigné : Language, une ligne Plural-Forms pour cette langue, et UTF-8 comme jeu de caractères. Le fichier est nommé d'après la langue, par exemple myplugin.pot devient myplugin-de.po ; renommez-le comme votre projet l'attend, par exemple myplugin-de_DE.po pour WordPress, et compilez-le en .mo avec votre outil habituel.
Formes plurielles et entrées fuzzy
Les langues ne comptent pas toutes de la même façon. L'anglais a deux formes ; le polonais et le russe en utilisent trois dans gettext ; l'arabe en utilise six. Pour chaque entrée au pluriel, le traducteur reçoit les formes de la langue cible avec des exemples de nombres (« forme 1 : 2, 3, 4, 22 ») et rédige une chaîne par forme. Si votre .po contient déjà un en-tête Plural-Forms pour la même langue, c'est cette règle qui est utilisée.
Les entrées marquées fuzzy sont traduites à nouveau ; l'indicateur fuzzy et les anciennes lignes #| msgid sont supprimés, tandis que les autres indicateurs, comme php-format, sont conservés. Les entrées obsolètes #~ ne sont pas touchées.
Le fonctionnement de l'outil, son coût et le traitement de vos fichiers sont détaillés sur la page Traduire des fichiers de localisation ; les prix de chaque outil figurent sur la page tarifs.
Dernière mise à jour :
Questions et réponses
Mes traductions existantes seront-elles écrasées ?
Non. Les entrées qui ont déjà un msgstr et ne sont pas fuzzy sont conservées telles quelles ; seules les entrées vides et fuzzy sont traduites.
Le service produit-il un fichier .mo ?
Non, il vous remet le .po. Compilez-le avec msgfmt, Poedit ou la commande de votre framework, par exemple wp i18n make-mo ou compilemessages dans Django.
Les placeholders printf sont-ils protégés ?
Chaque %s, %d, %1$s et %(name)s du msgid doit se retrouver dans la traduction. Une chaîne qui en perd un est traduite à nouveau ; si elle échoue encore, son msgstr reste tel qu'il était (vide ou fuzzy) et elle figure dans une liste, de sorte que gettext revient au texte source au lieu d'afficher une chaîne corrompue.
Combien ça coûte ?
Les premières chaînes sont gratuites. Le fichier entier, jusqu'à 5,000 chaînes, coûte $5, en paiement unique, sans abonnement. Les petites tâches font exception : une tâche de moins de 300 chaînes est entièrement gratuite, téléchargements compris.