Lingo.dev + .strings (Xcode)

Lingo.dev CLI traduit les fichiers .strings d'Xcode tout en préservant la structure clé-valeur, les commentaires et les conventions de localisation iOS. Le CLI fonctionne avec les anciens projets et flux de travail Xcode, maintient le contexte et les instructions des développeurs dans les commentaires, préserve les spécificateurs de format iOS comme %@ et %d, gère correctement les encodages UTF-16 et UTF-8, et s'intègre aux pipelines de localisation iOS standard.

Configuration rapide

Configuration pour les fichiers strings Xcode legacy :

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja"]
  },
  "buckets": {
    "xcode-strings": {
      "include": ["Resources/[locale].lproj/Localizable.strings"]
    }
  }
}

Rappel : [locale] est un placeholder qui doit rester littéralement dans la configuration, car il est remplacé par la locale réelle pendant l'exécution du CLI.

Traduire les fichiers Strings

npx lingo.dev@latest i18n

Préserve le format des fichiers strings, les commentaires des développeurs et les conventions spécifiques à iOS tout en traduisant les valeurs.

Structure des fichiers Strings

Paires clé-valeur basiques

/* Navigation principale */
"nav.home" = "Accueil";
"nav.settings" = "Paramètres";
"nav.profile" = "Profil";

/* Authentification */
"auth.login" = "Connexion";
"auth.logout" = "Déconnexion";
"auth.register" = "S'inscrire";

Spécificateurs de format

/* Messages utilisateur avec placeholders */
"welcome.user" = "Bon retour, %@!";
"items.count" = "Vous avez %d articles dans votre panier";
"download.progress" = "Téléchargement... %.1f%% terminé";

Chaînes multilignes

/* Contenu long */
"terms.agreement" = "En utilisant cette application, vous acceptez nos conditions d'utilisation et notre politique de confidentialité. Veuillez les lire attentivement avant de continuer.";

"help.description" = "Cette fonctionnalité vous aide à gérer vos tâches efficacement. Vous pouvez créer, modifier et organiser vos éléments de travail.";

Fonctionnalités spécifiques à iOS

Commentaires de localisation

/* Apparaît dans la barre d'onglets en bas */
"tab.home" = "Accueil";

/* Texte du bouton pour soumettre un formulaire */
"button.submit" = "Soumettre";

/* Message d'erreur lorsque le réseau n'est pas disponible */
"error.network" = "Veuillez vérifier votre connexion internet";

Les commentaires des développeurs fournissent du contexte aux traducteurs.

Caractères spéciaux

/* Chaînes avec guillemets et caractères spéciaux */
"message.quote" = "Elle a dit, \"Bonjour !\"";
"path.file" = "Documents\\MonFichier.txt";
"symbol.copyright" = "© 2024 Nom de l'entreprise";

L'échappement approprié pour les guillemets et les barres obliques inversées est préservé.

Intégration Storyboard

/* Localisations Storyboard */
"A8K-3L-9X7.text" = "Bienvenue";
"B9M-4N-0Y8.placeholder" = "Entrez votre nom";
"C0P-5Q-1Z9.title" = "Paramètres";

Les clés générées par Interface Builder sont traitées correctement.

Configuration avancée

Fichiers strings multiples

"xcode-strings": {
  "include": [
    "Resources/[locale].lproj/Localizable.strings",
    "Resources/[locale].lproj/InfoPlist.strings"
  ]
}

Verrouiller les clés système

"xcode-strings": {
  "include": ["Resources/[locale].lproj/Localizable.strings"],
  "lockedKeys": ["CFBundleName", "CFBundleDisplayName"]
}