1. Séparation du code et des textes
La condition préalable fondamentale pour toute localisation est la stricte séparation entre le code du programme et les contenus textuels. Tous les textes à afficher doivent être stockés dans des fichiers de ressources externes (par ex. Properties, JSON, YAML), et non codés en dur dans le code source. Ainsi, les traducteurs peuvent travailler sans modifier le code. Utilisez des clés de chaîne uniques comme référence dans le code, pointant vers les traductions correspondantes. Cette séparation facilite également la maintenance et permet d'ajouter ultérieurement de nouvelles langues sans modifier le code. Veillez à ce que les libellés d'interface, les messages d'erreur et les infobulles soient également inclus dans ces fichiers.
2. Espaces réservés et variables
Les textes contiennent souvent des contenus dynamiques comme des nombres, des noms ou des dates. Ceux-ci doivent être insérés via des espaces réservés, par ex. avec le formatage printf (%s, %d) ou des approches plus modernes comme les accolades {0}. Il est important que les traducteurs connaissent l'ordre et la signification des espaces réservés. Utilisez des espaces réservés nommés (par ex. « {username} ») pour fournir du contexte. Dans les langues avec une structure de phrase différente, l'ordre des espaces réservés peut varier. Proposez donc la possibilité d'ajuster l'ordre dans la traduction. Testez toutes les variantes pour éviter des sorties erronées ou incomplètes.
3. Règles de pluriel et formation du pluriel
En allemand, il n'existe que le singulier et le pluriel, mais de nombreuses langues ont des règles de pluralisation plus complexes (par exemple, l'arabe avec six catégories). Utilisez des bibliothèques comme ICU MessageFormat, qui traitent les règles de pluriel par langue. Définissez dans vos ressources des clés séparées pour les différentes formes plurielles (one, other). Le code choisit alors automatiquement la forme appropriée en fonction du nombre. Exemple : « {count} {count, plural, one {pomme} other {pommes}} ». Testez chaque langue avec plusieurs valeurs numériques pour vous assurer que la forme plurielle correcte s'affiche. Évitez les conditions if fixes – cela entraîne des erreurs.
4. Longueur du texte et marges de mise en page
Les traductions sont souvent plus longues ou plus courtes que le texte original. Cela peut notamment perturber la mise en page des boutons, menus et étiquettes. Prévoyez donc suffisamment d'espace pour les extensions de texte – une bonne règle est 30 % d'espace supplémentaire pour les langues occidentales, plus pour les langues asiatiques. Utilisez des mises en page dynamiques qui s'adaptent à la longueur du texte (par exemple, Auto Layout sous iOS ou Flexbox sur le Web). Évitez les largeurs fixes. Permettez aux éléments d'interface de gérer le retour à la ligne si nécessaire. Testez l'interface avec les traductions les plus longues attendues pour éviter les chevauchements ou les coupures.
5. Clés de chaîne, contexte pour les traducteurs et RTL
Des clés de chaîne uniques sont le pilier de la localisation. Utilisez des noms explicites (par exemple, « login.button.title ») et documentez leur usage. Fournissez du contexte aux traducteurs : captures d'écran, longueur maximale de caractères, contraintes (par exemple, « pas plus de 20 caractères »). Pour les langues RTL comme l'arabe ou l'hébreu, l'interface utilisateur doit être inversée. Utilisez des attributs de mise en page qui prennent en charge automatiquement le RTL (par exemple, start/end au lieu de left/right). Testez l'ensemble de la navigation dans des conditions RTL. Pensez également aux icônes et aux graphiques – ils peuvent être interprétés différemment selon la culture.