Traduire les fichiers .po gettext
Un fichier .po est basé sur des clés textuelles : la phrase anglaise est la clé. Les contextes, les emplacements pour les pluriels et les variables de style Python se trouvent autour de ce texte. KAERIS les conserve et écrit les emplacements pour les pluriels dont la langue cible a besoin.
KAERIS a traduit cette page et vérifié chaque ligne en la retraduisant. Un locuteur natif ne l'a pas encore revue. Original anglais
Comment un fichier .po est construit
Chaque entrée a un msgid (le texte source) et un msgstr (la traduction). msgctxt permet de distinguer deux phrases identiques. Les pluriels utilisent msgid_plural et un msgstr[n] par forme, et la ligne Plural-Forms de l'en-tête indique combien de formes la langue possède.
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: app/views.py:12
msgid "Welcome back, %(name)s!"
msgstr ""
#: app/views.py:20
msgid "%(count)d file"
msgid_plural "%(count)d files"
msgstr[0] ""
msgstr[1] ""
msgctxt "menu"
msgid "Open"
msgstr ""
msgctxt "verb"
msgid "Open"
msgstr ""
Ce à quoi il faut faire attention dans les traductions .po
Le contexte change le mot
« Ouvrir » en tant qu'élément de menu et « Ouvrir » en tant que verbe se traduisent différemment. KAERIS lit le contexte avec le texte et le signale lorsque le même mot source est traduit de deux manières. Dans l'exécution réelle ci-dessous, les deux sont revenus sous forme de « Öffnen », ce qui est correct en allemand, et les contextes sont restés dans le fichier.
Les emplacements pour les pluriels diffèrent selon la langue
L'anglais en a deux, le russe trois, l'arabe six. Dans une exécution en russe, l'en-tête devient
nplurals=3et chaque entrée plurielle obtient trois emplacementsmsgstr.Variables dans les styles Python et C
%(name)s,%d,{name}doivent revenir inchangés, sinon l'application lèvera une erreur à l'exécution.L’en-tête et les références
L’en-tête est reconstruit avec la langue et la règle du pluriel. Les commentaires de référence source (
#:) ne sont pas inclus dans le fichier traduit.
Une vraie exécution : traduite en allemand et vérifiée
Une exécution réelle, le 27 octobre 2026, rien édité à la main : kaeris translate en.po --langs de avec kaeris 0.2.35, 3,9 secondes, modèle google/gemini-2.5-flash-lite, le défaut du niveau gratuit. Ci-dessous, le fichier allemand qu'il a écrit et ce que kaeris check en dit.
# Generated by KAERIS i18n Tool # Language: de msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: de\n" msgid "Welcome back, %(name)s!" msgstr "Willkommen zurück, %(name)s!" msgid "%(count)d file" msgid_plural "%(count)d files" msgstr[0] "%(count)d Datei" msgstr[1] "%(count)d Dateien" msgctxt "menu" msgid "Open" msgstr "Öffnen" msgctxt "verb" msgid "Open" msgstr "Öffnen"
$ kaeris check --source en.po --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Ce que KAERIS en fait
Entrées et contextes conservés
Les clés de texte,
msgctxtet les paires de pluriels reviennent dans le même ordre.Emplacements pour les pluriels de la langue cible
Le nombre de
msgstr[n]suit la langue, vérifié dans une exécution avec le russe.Vérification gratuite pour ce format
La vérification gratuite sur la page /check lit ce format et s'exécute sans clé ni compte. La commande terminal
kaeris checkla lit aussi : elle prend les 13 formats depuis kaeris 0.2.35, avec les mêmes règles et rien n'est envoyé ailleurs.
Exécutez-le en trois étapes
Installer le CLI
Exécutez
pip install kaeris.Traduire le catalogue
Exécutez
kaeris translate django.po --langs de,ja. Les fichiers de sortie sont nommés par langue.Vérifier le résultat
Téléversez la source et un .po traduit sur la page de vérification gratuite pour voir les variables perdues et les termes incohérents.
pip install kaeris kaeris translate locale/en/LC_MESSAGES/django.po --langs de,ja --verify
Questions
Gère-t-il les formes plurielles pour le russe ou l'arabe ?
L'en-tête de pluriel et le nombre d'emplacements msgstr[n] sont écrits pour la langue cible. Dans une exécution avec le russe, l'exemple source a produit nplurals=3 et trois emplacements.
Qu'en est-il de msgctxt ?
Le contexte reste attaché à l'entrée, donc deux sources identiques avec des contextes différents sont des chaînes distinctes. La vérification avertit lorsqu'elles reviennent traduites différemment.
Est-ce gratuit ?
Oui, sans compte : 10 000 caractères par fichier et jusqu'à 8 langues par exécution. Une clé API gratuite augmente la limite de fichiers à 50 000 caractères. La licence à vie est de 79 $ une fois, sur votre propre clé OpenRouter ; les plans mensuels commencent à 19 $. Tarifs
Puis-je l'exécuter depuis le terminal ou en CI ?
Oui. pip install kaeris, puis kaeris translate django.po --langs de,ja. Voir aussi Django. Le GitHub Action exécute la même traduction dans une pull request. Docs CLI · GitHub Action
Continuer
Référence CLI · Référence Check · Traduire dans le navigateur · Vérification gratuite · Convertir les formats · Localisation fictive
Autres formats : JSON · YAML · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML