Passer au contenu principal

iOS (Swift)

Le package Swift translate-projects-ios traduit le String Catalog de votre app (Localizable.xcstrings) dans chaque langue que vous configurez. Les traductions sont écrites dans le même catalogue, donc Text("..."), String(localized:) et Xcode fonctionnent comme d'habitude. Il s'utilise comme plugin Xcode ou depuis le terminal, et n'a aucune dépendance.

Prérequis​

  • Xcode 15 ou version ultérieure (Swift 5.9 ou version ultérieure).
  • Une app avec un String Catalog (Localizable.xcstrings).
  • Un projet et un token API de Translate Projects. Consulte Premiers pas.

1. Ajoutez le package​

Dans Xcode : File → Add Package Dependencies et collez l'URL du dépôt :

https://github.com/translate-projects/translate-projects-ios

Xcode télécharge translate-projects-ios

Lorsque Xcode demande à quel target ajouter le produit, laissez None : le package ne fait pas partie de votre app, il fournit seulement la commande de traduction.

Choisir le produit avec le target sur None

2. Configurez​

Créez translate-projects.json à côté de votre .xcodeproj (ou Package.swift) :

translate-projects.json
{
"sourceLang": "es",
"targetLangs": ["en", "pt-BR", "fr"],
"file": "MyApp/Localizable.xcstrings",
"tokenFile": ".translate-projects-token"
}
OptionObligatoireDescription
sourceLangOuiLangue de base du catalogue. Doit être la langue par défaut du projet.
targetLangsOuiLangues cibles, avec les codes de l'API (en, pt-BR, zh-Hans).
fileNonChemin du catalogue. Si le projet ne contient qu'un seul .xcstrings, il est trouvé automatiquement.
tokenFileNonFichier contenant le token API (uniquement le token ou une ligne TRANSLATE_PROJECTS_API_KEY=...). Sans lui, la variable d'environnement TRANSLATE_PROJECTS_API_KEY est utilisée.

Ajoutez le fichier du token à .gitignore : ne le committez jamais dans le dépôt.

3. Traduisez​

Dans Xcode : clic droit sur le projet dans le navigateur → TranslateProjects. La première fois, Xcode demande l'autorisation d'écrire dans le projet et de se connecter au réseau.

Depuis le terminal ou en CI :

Terminal
git clone https://github.com/translate-projects/translate-projects-ios
swift run -c release --package-path translate-projects-ios translate-projects-ios --directory .

Si votre projet est un package Swift :

Terminal
swift package --allow-writing-to-package-directory --allow-network-connections all translate

Toutes les options existent aussi sous forme de flags : --source es --langs en,pt-BR --file ... --token-file .... Avec --force, toutes les langues sont retraduites.

Fichiers générés​

MyApp/
├── Localizable.xcstrings ← les traductions sont ajoutées ici
└── Localizable.translate-projects.json ← cache, committez-le

Committez les deux fichiers. La compilation de l'app n'appelle jamais l'API : seule la commande de traduction le fait.

Ce qui est respecté​

  • Les placeholders (%@, %lld, %1$@, %.2f, %#@nom@) : si une traduction en perd un ou le modifie, elle n'est pas écrite et l'app affiche le texte original.
  • Les pluriels, les variations par appareil et les substitutions. Chaque langue reçoit ses propres catégories de pluriel (pt-BR : one, many, other).
  • Les textes marqués « Don't translate » et les textes obsolètes ne sont pas envoyés. Les commentaires sont conservés.
  • Les textes sans lettres ("", "$9.300", "%@") ne sont pas envoyés.
  • Les modifications manuelles : si vous changez une traduction dans Xcode, elle est respectée lors des exécutions suivantes jusqu'à ce que son texte original change. --force les écrase.

Cache​

Une deuxième exécution sans nouveaux textes effectue deux requêtes et ne traduit rien. Si quelqu'un corrige une traduction dans le panneau de Translate Projects, l'exécution suivante la télécharge sans --force ; vos modifications manuelles dans le fichier gardent toujours la priorité. Si certains textes changent, seuls ceux-ci sont envoyés et seules les langues obsolètes sont retraduites. Plus de détails dans Cache et erreurs.

Erreurs courantes​

  • Le token est manquant (MISSING_API_KEY: set TRANSLATE_PROJECTS_API_KEY): ajoutez tokenFile dans translate-projects.json ou exportez la variable.
  • Plusieurs catalogues (Several .xcstrings files): indiquez lequel traduire avec file ou --file.
  • sourceLanguage différent: sourceLang doit correspondre à la langue de base du catalogue et à la langue par défaut du projet.
  • Textes non traduits (strings without translation, run again to resume): vérifiez que le projet a bien configuré le modèle et la clé d'IA, puis relancez : seuls les textes manquants sont demandés.
Gratuit

🚀 Automatisez vos traductions gratuitement​

Translate Projects est gratuit. Vous créez votre projet, connectez la clé de votre fournisseur d'IA et ne lui payez que ce que vous dépensez.

  • Sans forfaits ni carte de crédit: Toutes les fonctionnalités sont disponibles dès le premier jour.
  • Utilisez votre propre IA: Claude, OpenAI, DeepSeek ou Gemini. Votre clé est stockée chiffrée.
  • Réseau de traductions partagé: Si un texte a déjà été traduit, vous le recevez instantanément sans dépenser votre clé.
  • Panneau d'administration: Vérifiez et modifiez toutes vos traductions depuis un seul endroit.

Créer un compte gratuitement →

Support

Nous sommes là pour vous aider​

Si vous avez des questions, besoin d'aide ou souhaitez contribuer, n'hésitez pas à me contacter. Je suis à votre disposition pour vous soutenir dans tout ce dont vous avez besoin.

Soutenez le projet​

Si ce projet vous a été utile, je vous invite à m'offrir un café. Votre soutien m'aide à continuer de m'améliorer et à créer du contenu de valeur. Merci d'être là ! ☕

Buy me a coffee