Automatiser votre workflow de traduction avec le CLI LocaleKit

Automatiser votre workflow de traduction avec le CLI LocaleKit

La gestion manuelle des traductions ne tient plus quand votre application grandit. Chaque nouvelle fonctionnalite ajoute des chaines. Chaque chaine doit etre traduite dans chaque langue cible. Le CLI LocaleKit automatise cette boucle en une seule commande : localekit sync detecte les nouvelles chaines, les traduit et ouvre une pull request sur GitHub.

Reference docs

La documentation complete du CLI est disponible sur docs.localekit.app

La commande sync : traduire et pousser en une etape

La commande localekit sync combine traduction et integration GitHub. Elle traduit vos chaines manquantes, cree une branche, commite les changements et ouvre une pull request - le tout en une seule commande.

Terminalbash
# One command to translate + open a PR
$ localekit sync \
--engine deepl \
--api-key $DEEPL_API_KEY \
--repo myorg/myapp \
--github-token $GITHUB_TOKEN

Scanning... found Localizable.xcstrings (42 entries)
Translating 8 new keys to de-DE, fr-FR, ja-JP...
Creating branch: localekit/translations-2026-03-21
Pushing changes...
Pull request created: #47 "Update translations via LocaleKit"

Integration CI/CD

Ajoutez LocaleKit a votre pipeline CI pour que les traductions restent a jour a chaque merge sur main. Voici un workflow GitHub Actions qui lance localekit sync selon un calendrier.

.github/workflows/translations.ymlyaml
name: Update Translations
on:
schedule:
- cron: '0 9 * * 1' # Every Monday at 9am
workflow_dispatch: # Manual trigger

jobs:
translate:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4

- name: Install LocaleKit CLI
run: |
brew tap hexagone-studio/localekit https://github.com/hexagone-studio/LocaleKit.git
brew install localekit-cli

- name: Login
run: localekit login --email ${{ secrets.LOCALEKIT_EMAIL }} --password ${{ secrets.LOCALEKIT_PASSWORD }}

- name: Sync translations
run: |
localekit sync \
--engine deepl \
--api-key ${{ secrets.DEEPL_API_KEY }} \
--repo ${{ github.repository }} \
--github-token ${{ secrets.GITHUB_TOKEN }}
⚠️

Permissions du token GitHub

Votre token GitHub a besoin des permissions Contents (lecture/ecriture), Pull requests (lecture/ecriture) et Metadata (lecture seule). Utilisez un token a portee restreinte limite a votre repository.

Valider avant de livrer

Les bugs de traduction sont difficiles a detecter en code review. La commande localekit validate verifie les placeholders manquants, les traductions vides et les cles dupliquees avant qu'ils n'atteignent la production.

Terminalbash
$ localekit validate ./MyApp --strict

1 error, 1 warning:
ERROR Localizable.xcstrings > de-DE > "greeting"
Placeholder mismatch: source has %@ but translation is missing it

WARN Localizable.xcstrings > fr-FR > "settings_title"
Empty translation

Exit code: 1 (strict mode)

Suivre les changements avec diff

Apres traduction, LocaleKit enregistre un snapshot. La prochaine fois que vous ajoutez ou modifiez des chaines, localekit diff vous montre exactement ce qui necessite une re-traduction.

Terminalbash
$ localekit diff ./MyApp

Changes since 2026-03-18:
3 new keys: home.welcome, home.subtitle, settings.theme
1 modified key: home.title (source text changed)
0 removed keys

4 keys need translation across 3 languages.

On a ajoute localekit sync a notre job CI du lundi. Les nouvelles traductions arrivent en PR chaque semaine sans que personne ne touche a un fichier de traduction.

James Liu, iOS Lead chez TaskFlow

FAQ automatisation

Peut-on previsualiser les changements avant le push ?

Oui. Ajoutez --dry-run a n'importe quelle commande (translate, sync, validate) pour voir ce qui se passerait sans ecrire de fichiers ni creer de PR.

Que faire si une traduction automatique est incorrecte ?

Editez la chaine directement dans votre fichier de localisation et commitez-la. LocaleKit n'ecrasera pas les traductions existantes - il ne remplit que les manquantes.

Peut-on limiter les langues traduites automatiquement ?

Oui. Utilisez --languages de-DE,fr-FR pour ne traduire que des langues specifiques. Ou definissez targetLanguages dans votre fichier .localekitrc.yml.

Arrêtez de gérer vos fichiers de traduction manuellement

LocaleKit détecte, traduit et synchronise tous vos fichiers de localisation — iOS, Android, Flutter et plus. Tout tourne localement sur votre machine.

Respect de la vie privée. Aucun cloud requis.