Traduire les catalogues de chaînes Xcode (.xcstrings)
Un catalogue de chaînes contient chaque langue dans un seul fichier JSON que seul Xcode devrait modifier manuellement. KAERIS ajoute les nouvelles langues dans ce même fichier et laisse tout le reste tel quel.
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 catalogue de chaînes est construit
Un fichier, strings, puis la clé, puis localizations, puis la langue. Chaque langue contient une stringUnit ou des variations pour les pluriels. Le fichier contient également comment, extractionState et shouldTranslate. Une clé sans entrée pour la langue source est son propre texte source.
{
"sourceLanguage" : "en",
"strings" : {
"Welcome back, %@!" : {
"comment" : "Greeting on the home screen",
"extractionState" : "manual",
"localizations" : {
"en" : { "stringUnit" : { "state" : "translated", "value" : "Welcome back, %@!" } }
}
},
"%lld items" : {
"localizations" : {
"en" : {
"variations" : {
"plural" : {
"one" : { "stringUnit" : { "state" : "translated", "value" : "%lld item" } },
"other" : { "stringUnit" : { "state" : "translated", "value" : "%lld items" } }
}
}
}
}
},
"Cancel" : { }
},
"version" : "1.0"
}
Ce qu'il faut surveiller dans les traductions .xcstrings
Ne pas le lire comme du JSON brut
Aplatit comme du JSON générique, il devient des clés comme
strings.welcome.localizations.en…, ce qui semble traduit et que Xcode ne peut pas lire. KAERIS a son propre lecteur pour ce format.Variations de pluriel par langue
L'anglais a
oneetother; le russe a aussi besoin defewetmany, l'arabe des six. Le README décrit l'expansion ;%lldreste là où il était.Ce qu'Xcode a écrit doit rester
Les commentaires, les états d'extraction, les langues déjà présentes dans le fichier et tout ce qui est marqué
shouldTranslate: falsesont conservés intacts.Spécificateurs de format
%@,%lld,%1$@sont comparés à la source après traduction.
Une vraie exécution : traduite en allemand et vérifiée
Une exécution réelle, le 27 octobre 2026, rien modifié à la main : kaeris translate Localizable.xcstrings --langs de avec kaeris 0.2.35, 2,4 secondes, modèle openai/gpt-4.1-mini (le modèle de secours du service a répondu à cette tâche). Ci-dessous, le fichier allemand qu'il a écrit et ce que kaeris check en dit.
{
"sourceLanguage": "en",
"strings": {
"Welcome back, %@!": {
"comment": "Greeting on the home screen",
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Welcome back, %@!"
}
},
"de": {
"stringUnit": {
"state": "translated",
"value": "Willkommen zurück, %@!"
}
}
}
},
"%lld items": {
"localizations": {
"en": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld item"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld items"
}
}
}
}
},
"de": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Artikel"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld Artikel"
}
}
}
}
}
}
},
"Cancel": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Abbrechen"
}
}
}
}
},
"version": "1.0"
}
$ kaeris check --source Localizable.xcstrings --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Ce que KAERIS en fait
Un fichier, mis à jour sur place
kaeris translate Localizable.xcstrings --langs de,fr,jaécrit les langues dans le catalogue. Il n'y a pas de fichier par langue.Pluriels en ICU pour le modèle
Dans la vérification, une variation de pluriel est lue comme un pluriel ICU, donc une forme perdue est visible.
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 Localizable.xcstrings --langs de,fr,ja. Le catalogue est mis à jour sur place.Vérifier le résultat
Chargez le catalogue sur la page de vérification gratuite ; elle lit la source et les traductions à partir du même fichier.
pip install kaeris kaeris translate Localizable.xcstrings --langs de,fr,ja --verify
Questions
Écrase-t-il mes traductions existantes ?
Les langues déjà présentes dans le fichier, les commentaires et les états d'extraction sont conservés intacts, comme l'indique le README de la CLI.
Comment les pluriels sont-ils gérés ?
Les variations de pluriel sont développées selon les catégories dont chaque langue a besoin : l'anglais one/other devient one/few/many/other en russe et six formes en arabe.
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 Localizable.xcstrings --langs de,ja. Voir aussi iOS. 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 · .po · ARB · XLIFF · .strings · .properties · .resx · CSV · Markdown · Fluent · Android XML