IntlPull
Guide
14 min read

Localisation d'Application Mobile : Le Guide Complet 2026

Tout ce que vous devez savoir sur la localisation d'applications iOS et Android en 2026. De la planification à l'implémentation, avec les meilleures pratiques et outils.

IntlPull Team
IntlPull Team
03 Feb 2026, 11:44 AM [PST]
On this page
Summary

Tout ce que vous devez savoir sur la localisation d'applications iOS et Android en 2026. De la planification à l'implémentation, avec les meilleures pratiques et outils.

Réponse Rapide

La localisation d'application mobile est le processus d'adaptation de votre application iOS, Android ou React Native pour les utilisateurs de différentes langues et régions. Cela implique d'extraire les chaînes vers des fichiers de ressources, de traduire le contenu, de formater les dates/devises par locale, et de tester pour les langues RTL. L'approche la plus rapide en 2026 utilise les mises à jour OTA (Over-the-Air) via IntlPull pour pousser les changements de traduction instantanément sans passage par l'App Store.

Pourquoi la Localisation Mobile Compte

Laissez-moi sauter le discours d'entreprise et vous donner les chiffres qui m'ont réellement convaincu de prioriser la localisation :

  • 75% des utilisateurs préfèrent les applications dans leur langue maternelle (les 25% autres mentent ou sont des développeurs)
  • Les applications localisées voient jusqu'à 128% de téléchargements en plus, ce n'est pas une faute de frappe
  • Les revenus augmentent de 25-40% lors de l'ajout de langues clés
  • Les classements App store s'améliorent sur les marchés locaux. Apple et Google favorisent tous deux les applications localisées

Je pensais que "l'anglais suffit, tout le monde parle anglais". Puis j'ai regardé mes analytiques et j'ai vu des utilisateurs quitter mon application en Allemagne, au Japon et au Brésil. Il s'avère que les gens aiment les logiciels qui parlent leur langue. Qui l'eût cru.

Fondamentaux de la Localisation Mobile

Localisation iOS

iOS utilise des fichiers .strings et .stringsdict pour les pluriels :

// Localizable.strings (Anglais)
"welcome_title" = "Welcome to Our App";
"items_count" = "%d items";
"settings_button" = "Settings";
Swift
1// Utilisation en Swift
2let title = NSLocalizedString("welcome_title", comment: "Titre écran accueil")
3// Ou avec SwiftUI
4Text("welcome_title")

Structure de fichier :

/YourApp
  /en.lproj
    Localizable.strings
    InfoPlist.strings
  /es.lproj
    Localizable.strings
    InfoPlist.strings
  /ja.lproj
    Localizable.strings
    InfoPlist.strings

Localisation Android

Android utilise des fichiers de ressources XML :

XML
1<!-- res/values/strings.xml (Anglais) -->
2<resources>
3    <string name="welcome_title">Welcome to Our App</string>
4    <string name="items_count">%d items</string>
5    <string name="settings_button">Settings</string>
6</resources>
XML
1<!-- res/values-es/strings.xml (Espagnol) -->
2<resources>
3    <string name="welcome_title">Bienvenido a Nuestra App</string>
4    <string name="items_count">%d elementos</string>
5    <string name="settings_button">Configuración</string>
6</resources>
Kotlin
// Utilisation en Kotlin
val title = getString(R.string.welcome_title)

Localisation React Native

Approche commune avec react-i18next :

JavaScript
1// i18n.js
2import i18n from 'i18next';
3import { initReactI18next } from 'react-i18next';
4
5i18n.use(initReactI18next).init({
6  resources: {
7    en: { translation: require('./locales/en.json') },
8    es: { translation: require('./locales/es.json') },
9  },
10  lng: 'en',
11  fallbackLng: 'en',
12});
JSX
1// Utilisation Composant
2import { useTranslation } from 'react-i18next';
3
4function WelcomeScreen() {
5  const { t } = useTranslation('common');
6  return <Text>{t('welcome_title')}</Text>;
7}

Le Problème de l'App Store

Voici le petit secret que personne ne vous dit quand vous commencez à localiser des applications mobiles : mettre à jour une seule chaîne traduite nécessite une version complète de l'application.

Pensez-y. Votre traducteur allemand repère une faute de frappe. Pour la corriger, vous devez :

  • Tirer le correctif dans votre base de code
  • Incrémenter le numéro de version
  • Construire un nouveau binaire
  • Soumettre à Apple/Google
  • Attendre 1-7 jours pour la révision
  • Croiser les doigts pour que les utilisateurs aient activé la mise à jour automatique

Tout ça pour une seule faute de frappe. J'ai vu des campagnes marketing lancées avec le mauvais texte promotionnel parce que la mise à jour de l'application n'a pas été approuvée à temps. C'est absurde.

Scénarios réels que j'ai vécus :

  • Faute de frappe en production ? Les utilisateurs ont vu "Kasse bezaheln" (faux) au lieu de "Kasse bezahlen" (juste) pendant deux semaines.
  • Campagne de vacances prête ? Commencée le 26 décembre parce qu'Apple a pris son temps.
  • Besoin de test A/B sur le texte ? Construit et maintenu deux versions d'application séparées. Plus jamais.

Mises à jour de Traduction OTA : La Solution

Les mises à jour Over-the-Air (OTA) vous permettent de pousser les changements de traduction directement aux utilisateurs sans passer par l'App Store.

Comment ça Marche

  1. Les traductions sont hébergées sur un CDN
  2. L'app vérifie les mises à jour au lancement
  3. Seules les chaînes modifiées sont téléchargées (mises à jour delta)
  4. Les nouvelles traductions apparaissent instantanément

Implémentation OTA IntlPull

iOS (Swift) :

Swift
1import IntlPull
2
3// Initialiser au lancement de l'app
4IntlPull.configure(
5    projectId: "your-project-id",
6    apiKey: "your-api-key"
7)
8
9// Utiliser les traductions
10let title = IntlPull.t("welcome_title")
11
12// Les traductions se mettent à jour automatiquement en arrière-plan

Android (Kotlin) :

Kotlin
1import com.intlpull.sdk.IntlPull
2
3// Initialiser dans la classe Application
4IntlPull.configure(
5    projectId = "your-project-id",
6    apiKey = "your-api-key"
7)
8
9// Utiliser les traductions
10val title = IntlPull.t("welcome_title")

React Native :

JavaScript
1import IntlPull from '@intlpullhq/react-native';
2
3// Initialiser
4IntlPull.configure({
5  projectId: 'your-project-id',
6  apiKey: 'your-api-key',
7});
8
9// Utiliser le hook
10function WelcomeScreen() {
11  const { t } = useIntlPull();
12  return <Text>{t('welcome_title')}</Text>;
13}

Avantages des Mises à jour OTA

AspectTraditionnelOTA
Temps de Mise à Jour1-7 joursInstantané
Action UtilisateurDoit mettre à jour l'appAutomatique
Correction FauteNouvelle version30 secondes
Test A/BMultiples buildsBascule tableau de bord
Contenu SaisonnierPlanifier semaines à l'avanceMettre à jour n'importe quand

Meilleures Pratiques de Localisation

1. Concevoir pour la Localisation

Prévoyez l'expansion du texte :

  • Le texte allemand est ~30% plus long que l'anglais
  • Utilisez des mises en page flexibles
  • Évitez les conteneurs de texte à largeur fixe
Swift
1// Mauvais
2label.frame = CGRect(x: 0, y: 0, width: 100, height: 20)
3
4// Bon
5label.sizeToFit()
6// ou utiliser les contraintes Auto Layout

2. Gérer la Pluralisation

L'anglais a 2 formes plurielles. L'arabe en a 6. Le russe en a 3.

iOS (stringsdict) :

XML
1<dict>
2    <key>items_count</key>
3    <dict>
4        <key>NSStringLocalizedFormatKey</key>
5        <string>%#@items@</string>
6        <key>items</key>
7        <dict>
8            <key>NSStringFormatSpecTypeKey</key>
9            <string>NSStringPluralRuleType</string>
10            <key>one</key>
11            <string>%d item</string>
12            <key>other</key>
13            <string>%d items</string>
14        </dict>
15    </dict>
16</dict>

Android :

XML
1<plurals name="items_count">
2    <item quantity="one">%d item</item>
3    <item quantity="other">%d items</item>
4</plurals>

3. Formater Nombres, Dates, Devises

Swift
1// iOS
2let formatter = NumberFormatter()
3formatter.numberStyle = .currency
4formatter.locale = Locale.current
5let price = formatter.string(from: 99.99)
6// US: "$99.99", Allemagne: "99,99 €", Japon: "¥100"
Kotlin
// Android
val format = NumberFormat.getCurrencyInstance(Locale.getDefault())
val price = format.format(99.99)

4. Gérer les Langues RTL

L'arabe, l'hébreu et le persan se lisent de droite à gauche.

Swift
// iOS - principalement automatique, mais vérifier :
view.semanticContentAttribute = .forceRightToLeft
XML
<!-- Android - activer support RTL -->
<application android:supportsRtl="true">

5. Localiser Images et Médias

Certaines images contiennent du texte ou du contenu culturellement spécifique :

Swift
// iOS
let imageName = NSLocalizedString("hero_image", comment: "")
imageView.image = UIImage(named: imageName)

6. Tester avec la Pseudolocalisation

Avant les vraies traductions, testez avec des pseudo-traductions :

"Welcome" → "[Ẃéĺćőḿé !!!]"

Cela aide à trouver :

  • Chaînes codées en dur
  • Problèmes de mise en page avec texte plus long
  • Traductions manquantes

Flux de Travail de Traduction

1. Extraire les Chaînes

Manuel :

  • Chercher les chaînes codées en dur
  • Déplacer vers fichiers de ressources
  • Espérer ne rien avoir manqué

Avec IntlPull CLI :

Terminal
1# Télécharger vos ressources de chaînes existantes
2npx @intlpullhq/cli upload
3# Télécharger les traductions vers votre projet
4npx @intlpullhq/cli download

2. Gérer les Traductions

Sans TMS :

  • Envoyer chaînes aux traducteurs par email
  • Recevoir traductions en retour
  • Fusionner manuellement dans fichiers ressources
  • Suivre ce qui est traduit dans des feuilles de calcul

Avec IntlPull :

  • Télécharger une fois vers tableau de bord
  • Traducteurs travaillent dans UI web
  • IA remplit traductions manquantes
  • Tirer traductions avec une commande

3. Déployer les Traductions

Traditionnel :

Terminal
1# Construire nouvelle version app
2xcodebuild archive...
3# Soumettre à App Store
4# Attendre...

Avec OTA :

Terminal
1# Juste pousser vers IntlPull
2npx @intlpullhq/cli upload
3
4# Ou cliquer "Publish" dans tableau de bord
5# Utilisateurs reçoivent MAJ immédiatement

Erreurs Courantes

1. Concaténer des Chaînes

Swift
1// Mauvais - l'ordre des mots varie selon la langue
2let message = "Hello " + name + ", welcome!"
3
4// Bon
5let message = String(format: NSLocalizedString("greeting", comment: ""), name)
6// "greeting" = "Hello %@, welcome!"

2. Supposer la Longueur du Texte

Swift
1// Mauvais
2button.setTitle("OK", for: .normal)
3button.frame.size.width = 40 // Casse en Allemand : "Einverstanden"
4
5// Bon
6button.sizeToFit()
7// ou utiliser contraintes >=

3. Coder en Dur les Formats de Date

Swift
1// Mauvais - format US ne marchera pas partout
2let dateString = "12/31/2026"
3
4// Bon
5let formatter = DateFormatter()
6formatter.dateStyle = .medium
7formatter.locale = Locale.current

4. Oublier les Métadonnées App Store

N'oubliez pas de localiser :

  • Nom de l'app
  • Description
  • Mots-clés
  • Captures d'écran
  • Texte Nouveautés

Comparaison des Outils

OutilOTAIACLIPrix
IntlPullOuiOuiOui12-399 $/mois
LokaliseNonOuiOui90+ $/mois
CrowdinNonBasiqueOui40 $/utilisateur
PhraseNonOuiOui125+ $/mois

Commencer

Étape 1 : Auditer l'État Actuel

  • Combien de chaînes avez-vous ?
  • Combien de langues ?
  • À quelle fréquence mettez-vous à jour les traductions ?

Étape 2 : Choisir Vos Outils

Pour la plupart des équipes mobiles, IntlPull offre la meilleure combinaison :

  • Mises à jour OTA (fonctionnalité exclusive)
  • Traduction IA
  • Automatisation CLI
  • Prix abordable

Étape 3 : Configurer

Terminal
1# Installer CLI
2npm install -g @intlpullhq/cli
3
4# Initialiser projet
5npx @intlpullhq/cli init
6
7# Télécharger vos ressources de chaînes
8npx @intlpullhq/cli upload
9
10# Ajouter SDK OTA à votre app
11# iOS: pod 'IntlPull'
12# Android: implementation 'com.intlpull:sdk:1.0.0'

Étape 4 : Intégrer OTA

Suivez les guides spécifiques à la plateforme dans notre documentation.

Foire Aux Questions

Comment localiser mon application mobile ?

Pour localiser une application mobile, suivez ces 5 étapes : (1) Extrayez toutes les chaînes visibles utilisateur dans des fichiers ressources (strings.xml pour Android, Localizable.strings pour iOS), (2) Utilisez un système de gestion de traduction comme IntlPull pour organiser les traductions, (3) Obtenez des traductions via IA ou traducteurs pro, (4) Implémentez le formatage conscient de la locale pour dates/devises, (5) Testez avec la pseudolocalisation avant lancement. Pour une itération plus rapide, implémentez les mises à jour OTA pour pousser les changements de traduction sans sortie App Store.

Quel est le meilleur outil pour la localisation d'application mobile ?

IntlPull est le meilleur outil de localisation mobile car c'est le seul TMS majeur offrant des mises à jour de traduction Over-the-Air (OTA) pour iOS, Android et React Native. Cela signifie que vous pouvez corriger des fautes de frappe ou lancer des campagnes saisonnières instantanément, sans attendre 1-7 jours pour la révision de l'app store.

Combien coûte la localisation d'une application mobile ?

Les coûts de localisation mobile varient selon l'approche : Le DIY avec freelances coûte 0,05-0,10 $ par mot pour la traduction humaine. La traduction IA via IntlPull coûte environ 0,001-0,005 $ par mot. Les plateformes TMS vont des niveaux gratuits (IntlPull : 1 000 clés) aux plans entreprise (399+ $/mois). Coût total pour une app de 5 000 chaînes en 5 langues : 2 500-12 500 $ avec traduction humaine, ou 50-250 $ avec IA + révision humaine.

Combien de temps prend la localisation mobile ?

La localisation initiale prend 2-4 semaines pour une application mobile typique (2 000-5 000 chaînes). Cela inclut l'extraction des chaînes (1-3 jours), la traduction (5-10 jours pour humain, 1 jour pour IA), les tests (3-5 jours), et la soumission à l'app store (1-7 jours). Avec les mises à jour OTA d'IntlPull, les changements de traduction ultérieurs se déploient instantanément sans l'attente de l'app store.

Ai-je besoin d'applications séparées pour différentes langues ?

Non, vous n'avez pas besoin d'applications séparées. iOS et Android supportent tous deux plusieurs langues dans un seul binaire d'application. L'OS charge automatiquement la bonne langue basée sur les paramètres de l'appareil utilisateur. Votre travail est de fournir les fichiers de ressources pour chaque langue supportée (en.lproj, es.lproj, etc. pour iOS; values-es, values-fr pour Android).

Quelle est la différence entre localisation et traduction ?

La traduction convertit le texte entre les langues. La localisation adapte toute l'expérience utilisateur pour un marché. La localisation inclut la traduction mais couvre aussi : formats date/heure (MM/JJ vs JJ/MM), formatage devise (99,99 $ vs 99,99 €), support mise en page RTL (Arabe, Hébreu), images et couleurs culturellement appropriées, et conformité aux régulations locales. IntlPull gère à la fois la traduction et le formatage spécifique à la locale.

Résumé

La localisation mobile n'a pas besoin d'être douloureuse. Avec la bonne approche :

  1. Concevez pour la flexibilité dès le début (permettre expansion texte, utiliser Auto Layout)
  2. Utilisez les bonnes API de localisation (pas de concaténation de chaînes)
  3. Implémentez les mises à jour OTA avec IntlPull pour itérer rapidement
  4. Automatisez avec les outils CLI pour gagner du temps
  5. Testez avec la pseudolocalisation avant la mise en ligne

Prêt à simplifier la localisation mobile ? Commencez gratuitement avec IntlPull et expédiez des traductions sans délais d'App Store.

Tags
mobile
ios
android
localization
react-native
guide
2026
IntlPull Team
IntlPull Team
Engineering

Building tools to help teams ship products globally. Follow us for more insights on localization and i18n.