Que fait localisation-ios ?
Implémenter, réviser ou améliorer la localisation et l'internationalisation dans les applications iOS/macOS — Catalogs de chaînes (.xcstrings), symboles localisables générés, dénomination stable des clés, LocalizedStringKey, LocalizedStringResource, pluriels, FormatStyle pour nombres/dates/mesures, mise en page de droite à gauche, Dynamic Type et formatage adapté à la locale. À utiliser lors de l'ajout de support multilingue, de la mise en place de Catalogs de chaînes, de l'activation des symboles générés pour des clés de localisation sûres à la compilation, de la gestion des pluriels, du formatage des dates/nombres/devis pour différentes locales, des tests de localisation ou de l'adaptation de l'interface utilisateur pour les langues RTL comme l'arabe et l'hébreu.
Démarrage rapide
Prérequis
- Xcode 15+ (pour les Catalogs de chaînes)
- iOS 17+/macOS 14+ (pour les APIs de localisation avancées)
- Swift 5.9+ (pour les symboles générés)
Installation
Aucune bibliothèque tierce n'est nécessaire — tout est intégré dans les frameworks système d'Apple.
Utilisation
1. Configurer un Catalog de chaînes (.xcstrings)
Ajoutez un fichier de Catalog de chaînes à votre projet (Fichier → Nouveau → Fichier → Resource → String Catalog) et ajoutez les langues désirées.
2. Activer les symboles générés
Dans les paramètres de construction de votre projet :
- Activez
GENERATE_LOCALIZABLE_SYMBOLS(àYES). - Assurez-vous que votre Catalog de chaînes s'appelle
Localizable.xcstrings.
3. Utiliser les clés de localisation dans le code
// Utilisation de base
Text("welcome_message")
// Avec arguments
Text("hello_user", arguments: "Alice")
// Avec pluriel
Text("item_count", arguments: 42)
APIs principales
LocalizedStringKey
Utilisez les clés de votre Catalog de chaînes directement dans les vues SwiftUI :
Text("welcome_message") // LocalizedStringKey implicite
LocalizedStringResource (iOS 17+)
Pour une localisation plus explicite :
let greeting = LocalizedStringResource(stringLiteral: "welcome_message")
Symboles générés
Les symboles générés offrent une sécurité à la compilation :
Text(Localizable.welcomeMessage)
Pluriels
Utilisez les règles de pluriel dans votre Catalog de chaînes pour gérer zéro, un, plusieurs, etc.
{
"item_count": {
"comment": "Nombre d'articles",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "%d article(s)"
}
},
"fr": {
"stringUnit": {
"state": "translated",
"value": "%d article(s)"
}
}
}
}
}
Formatage adapté à la locale
Nombres
let formattedNumber = 12345.67.formatted(.number.locale(Locale(identifier: "fr_FR")))
// "12 345,67"
Dates
let date = Date.now
let formattedDate = date.formatted(.dateTime.locale(Locale(identifier: "fr_FR")))
// "13 févr. 2025 à 14:30"
Devises
let amount = 99.99
let formattedAmount = amount.formatted(.currency(code: "EUR").locale(Locale(identifier: "fr_FR")))
// "99,99 €"
Mise en page droite à gauche (RTL)
SwiftUI gère automatiquement la direction de la mise en page. Assurez-vous d'utiliser leading et trailing au lieu de left et right :
HStack {
Text("Label")
.frame(maxWidth: .infinity, alignment: .leading) // Correct
}
Dynamic Type
Testez votre interface utilisateur avec différentes tailles de police Dynamic Type pour garantir la lisibilité en toutes circonstances.
Références
Licence
MIT