Internationalisation des applications Swift : rendre votre code compréhensible pour le monde

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi votre application a-t-elle besoin d'internationalisation ?

\n

Imaginez : vous avez créé une super application iOS. Elle fonctionne parfaitement, l'interface est magnifique, et les utilisateurs de Russie vous mettent cinq étoiles. Mais que se passerait-il si votre code parlait anglais ? Ou chinois ? Ou arabe, où le texte se lit de droite à gauche ?

\n

L'internationalisation en Swift n'est pas seulement une question de traduction de boutons. C'est une approche architecturale qui permet à votre application de parler la langue de l'utilisateur, de respecter ses particularités culturelles (formats de dates, devises, unités de mesure) et de ne pas se casser lors du changement de locale.

\n

Dans cet article, nous allons voir comment implémenter correctement l'i18n (internationalization) dans un projet Swift, en utilisant les outils modernes de Xcode et les meilleures pratiques. Prêt à faire de votre code un citoyen du monde ? C'est parti !

\n\n

Les bases de la localisation en Swift : de NSLocalizedString à String Catalog

\n

L'approche classique : NSLocalizedString

\n

L'outil le plus basique est la macro NSLocalizedString. Elle recherche la traduction dans les fichiers .strings et, si elle ne trouve rien, affiche la clé (ou la valeur par défaut).

\n
let hello = NSLocalizedString("hello_world", comment: "Salutation sur l'écran principal")\nprint(hello) // Affiche la traduction selon la langue de l'appareil
\n

Le commentaire n'est pas une simple formalité. Il aide les traducteurs à comprendre le contexte : "hello_world" peut être à la fois une salutation et un nom de section. Écrivez toujours un commentaire pertinent.

\n\n

String Catalog — le nouveau standard (Xcode 15+)

\n

Oubliez les dizaines de fichiers Localizable.strings. Dans Xcode 15, les String Catalogs (.xcstrings) sont apparus. C'est un fichier unique avec prise en charge de plusieurs langues, de la pluralisation et des notes contextuelles.

\n

Pour créer un catalogue : File → New → File → String Catalog. Ajoutez une clé — et c'est prêt :

\n
// Le code reste le même !\nlet welcome = NSLocalizedString("welcome_message", comment: "Salutation pour le nouvel utilisateur")\n\n// Dans String Catalog, vous ajoutez simplement les traductions pour en, ru, ar, etc.
\n

Avantages : pas besoin de synchroniser les fichiers, moins de risques d'erreur d'encodage, prise en charge intégrée de la pluralisation.

\n\n

Formatage des nombres et des dates : le code culturel

\n

Erreur : définir le format de date en dur comme "dd.MM.yyyy". Aux États-Unis, on écrit "MM/dd/yyyy", au Japon — "yyyy年MM月dd日". Swift nous sauve avec DateFormatter et NumberFormatter.

\n\n

Des dates présentables

\n
let date = Date()\nlet formatter = DateFormatter()\nformatter.dateStyle = .long\nformatter.timeStyle = .none\nformatter.locale = Locale.current // S'adapte automatiquement à la langue de l'appareil\n\nlet localizedDate = formatter.string(from: date)\n// Pour en : "January 15, 2025"\n// Pour ru : "15 января 2025 г."\n// Pour de : "15. Januar 2025"\nprint(localizedDate)
\n

Pas de chaînes dateFormat ! Utilisez .short, .medium, .long — ils tiennent déjà compte des règles culturelles.

\n\n

Nombres et devises : respectez les virgules et les points

\n

En Russie, le nombre 1234.56 s'écrit "1 234,56", tandis qu'aux États-Unis — "1,234.56". NumberFormatter le sait :

\n
let price = 1234.56\nlet numberFormatter = NumberFormatter()\nnumberFormatter.numberStyle = .currency\nnumberFormatter.locale = Locale.current\n\nlet localizedPrice = numberFormatter.string(from: NSNumber(value: price))!\n// Pour en_US : "$1,234.56"\n// Pour ru_RU : "1 234,56 ₽"\n// Pour de_DE : "1.234,56 €"\nprint(localizedPrice)
\n\n

Pluralisation : un, deux, plusieurs — ne devinez pas

\n

La règle "un — plusieurs" ne fonctionne qu'en anglais. En russe, il y a "1 минута", "2 минуты", "5 минут". En arabe — six formes ! String Catalog et NSStringPluralRule résolvent cela élégamment.

\n

Dans String Catalog, vous ajoutez une clé, spécifiez le type "Plural" et remplissez les formes :

\n
// Dans le code                

Blogs

Book Recommendations