Xcode String Catalogs (.xcstrings) : le guide complet
Les Xcode String Catalogs (.xcstrings) ont remplace les fichiers .strings et .stringsdict en tant que format de localisation recommande par Apple depuis Xcode 15. Un seul fichier JSON contient toutes vos traductions pour chaque langue, avec le support natif des pluriels, des variations par appareil et de l'extraction automatique de chaines. Si vous demarrez un nouveau projet iOS ou macOS, c'est le format a utiliser.
Comment fonctionne .xcstrings
Un String Catalog est un fichier JSON unique qui stocke chaque cle de localisation, sa valeur source et les traductions pour toutes les langues cibles. Xcode l'affiche dans un editeur tabulaire, mais sous le capot c'est du JSON brut que vous pouvez lire, comparer et editer en dehors de Xcode.
Concepts cles
- Langue source - la langue de base (generalement l'anglais) ou les cles sont definies
- String unit - une entree traduisible avec une cle, une valeur et un etat par langue
- Etat - chaque traduction est marquee new, translated, needs_review ou stale
- Variations - une cle peut avoir des formes plurielles, du texte specifique par appareil ou des variations de largeur
{
"sourceLanguage": "en",
"version": "1.0",
"strings": {
"welcome_title": {
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Welcome to MyApp"
}
},
"fr": {
"stringUnit": {
"state": "translated",
"value": "Bienvenue sur MyApp"
}
},
"de": {
"stringUnit": {
"state": "needs_review",
"value": "Willkommen bei MyApp"
}
}
}
}
}
}Migrer de .strings vers .xcstrings
Si votre projet utilise deja des fichiers .strings ou .stringsdict, vous pouvez migrer vers les String Catalogs sans perdre vos traductions existantes. Xcode gere la majeure partie de la conversion automatiquement.
Migration de .strings vers .xcstrings
Exporter les traductions actuelles
Dans Xcode, allez dans Product > Export Localizations. Cela cree des fichiers XLIFF contenant toutes vos chaines et traductions actuelles en guise de sauvegarde.
Creer un String Catalog dans Xcode
Faites un clic droit sur votre projet dans le navigateur, selectionnez New File, et choisissez String Catalog. Nommez-le Localizable.xcstrings. Xcode proposera de migrer les fichiers .strings existants.
Accepter la migration
Xcode detecte vos fichiers .strings et .stringsdict existants et importe toutes les cles et traductions dans le nouveau catalogue. Verifiez les entrees importees dans l'editeur String Catalog.
Verifier et supprimer les anciens fichiers
Compilez votre projet et lancez-le dans chaque langue pour confirmer que les traductions s'affichent correctement. Une fois verifie, supprimez les anciens fichiers .strings et .stringsdict de votre projet.
Detection automatique
Xcode 15+ detecte automatiquement les appels Text() et NSLocalizedString et les ajoute a votre String Catalog lors de la compilation.
Travailler avec les String Catalogs en SwiftUI
SwiftUI rend l'utilisation des String Catalogs particulierement simple. Les vues Text recherchent automatiquement leur argument texte dans votre catalogue. Pas besoin d'appels explicites a NSLocalizedString.
import SwiftUI
struct ContentView: View {
var body: some View {
VStack(spacing: 16) {
// Automatically looks up "Welcome" in your String Catalog
Text("Welcome")
.font(.largeTitle)
// String interpolation works with LocalizedStringKey
Text("Hello, \(username)")
.font(.headline)
// Explicit key with default value
Text("settings_title")
.font(.title2)
}
}
}import SwiftUI
// String interpolation in String Catalogs
// The key in your .xcstrings becomes: "Hello, %@"
let greeting = LocalizedStringKey("Hello, \(name)")
// Plurals work automatically when you use string interpolation
// The key becomes: "%lld items in your cart"
let cartLabel = LocalizedStringKey("\(itemCount) items in your cart")
// You can also use String(localized:) for non-View contexts
let title = String(localized: "notification_title")LocaleKit + .xcstrings
LocaleKit lit les fichiers .xcstrings nativement. Lancez localekit scan pour detecter votre String Catalog et localekit translate pour completer les traductions manquantes.
Pluralisation dans les String Catalogs
Les String Catalogs gerent les pluriels via les variations. Au lieu d'un fichier .stringsdict separe, les regles de pluriel vivent directement dans le catalogue. Xcode affiche un menu deroulant pour chaque categorie de pluriel dont la langue a besoin.
{
"item_count": {
"localizations": {
"en": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld item"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld items"
}
}
}
}
},
"ar": {
"variations": {
"plural": {
"zero": { "stringUnit": { "state": "translated", "value": "لا عناصر" } },
"one": { "stringUnit": { "state": "translated", "value": "عنصر واحد" } },
"two": { "stringUnit": { "state": "translated", "value": "عنصران" } },
"few": { "stringUnit": { "state": "translated", "value": "%lld عناصر" } },
"many": { "stringUnit": { "state": "translated", "value": "%lld عنصرًا" } },
"other": { "stringUnit": { "state": "translated", "value": "%lld عنصر" } }
}
}
}
}
}
}FAQ String Catalog
Les .xcstrings sont-ils retrocompatibles avec les anciennes versions de Xcode ?
Non. Les String Catalogs necessitent Xcode 15 ou plus recent. La cible de deploiement de votre projet peut etre plus ancienne (jusqu'a iOS 13), mais il faut Xcode 15+ pour editer le catalogue. Les anciennes versions de Xcode ne reconnaitront pas le fichier.
Peut-on utiliser .xcstrings dans les pipelines CI/CD ?
Oui. Puisque .xcstrings est un fichier JSON, vous pouvez le parser, le valider et lancer des outils de traduction dans votre CI. Le CLI de LocaleKit lit et ecrit les .xcstrings directement, vous pouvez donc lancer localekit translate et localekit validate dans votre pipeline.
Est-il prudent de modifier .xcstrings a la main ?
Oui, mais attention a la structure JSON. Une virgule ou un crochet manquant cassera le fichier. Utilisez localekit validate apres les modifications manuelles pour detecter les problemes structurels. Pour les modifications en masse, un outil ou un script est plus sur que l'edition manuelle.
Peut-on exporter .xcstrings en XLIFF pour des traducteurs externes ?
Oui. La fonction Export Localizations de Xcode (Product > Export Localizations) lit votre .xcstrings et genere des fichiers XLIFF standards. Les traducteurs externes travaillent avec le XLIFF, et vous l'importez ensuite dans le catalogue.
Les String Catalogs ont reduit notre workflow de localisation d'une journee entiere a moins d'une heure. Avoir tout dans un seul fichier au lieu de fichiers .strings eparpilles dans 14 langues a ete la plus grande amelioration de qualite de vie dans Xcode 15 pour notre equipe.
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.