Traduire les fichiers $localize d'Angular, puis vérifier chaque ligne
ng extract-i18n écrit XLIFF par défaut, avec des interpolations sous forme de balises <x> et des pluriels ICU à l'intérieur. Supprimez une balise et ng build --localize échouera. KAERIS écrit une <target> pour chaque unité et conserve chaque balise et id.
KAERIS a traduit cette page et vérifié chaque ligne en la retraduisant. Un locuteur natif ne l'a pas encore revue. Original anglais
Les interpolations restent sous forme de balises <x>
L'equiv-text de chaque balise est conservé, de sorte que la compilation sache toujours ce qu'était {{ name }}.
<trans-unit id="welcome" datatype="html">
<source>Welcome back, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</source>
</trans-unit>
<trans-unit id="save" datatype="html">
<source>Save changes</source>
</trans-unit>
<trans-unit id="welcome" datatype="html"> <source>Welcome back, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</source> <target>Willkommen zurück, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</target> </trans-unit> <trans-unit id="save" datatype="html"> <source>Save changes</source> <target>Änderungen speichern</target> </trans-unit>
Ce que KAERIS en fait
Vos ids, inchangés
Les
@@idspersonnalisés et ceux générés restent tels quels, de sorte que les traductions restent attachées à leurs messages.Variables vérifiées sans IA
Après traduction, une simple vérification par comptage compare chaque variable et balise avec l'original. Une ligne qui en a perdu une est marquée et affichée en haut.
Chaque ligne retraduite
Un modèle différent, GPT-4o mini, traduit chaque ligne dans votre langue, et DeepSeek V3.2 sur des hôtes américains (DeepInfra, DigitalOcean, Google) juge si le sens a changé. Vous lisez ce que dit maintenant chaque ligne.
Questions
Lit-il aussi --format json ?
Oui. Le JSON que ng extract-i18n --format json écrit est traduit clé par clé, blocs ICU inclus.
XLIFF 2.0 est-il pris en charge ?
Pas encore. Le xlf par défaut d'Angular est XLIFF 1.2, ce qui fonctionne.
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 avec votre fichier et --langs de,ja. Une GitHub Action ouvre une pull request lorsque de nouvelles clés arrivent. Docs