En développement de logiciel, l’internationalisation. (abrégé en i18nDans le mot anglais de 20 lettres , il y a un i au début, puis 18 lettres et le n final; d'où i18n., où 18 représente le nombre de caractères entre le i et le n dans le mot) est la mise en place d’un système permettant la régionalisation du logiciel, c’est-à-dire son adaptation à des langues et des cultures différentes. L’objectif de l’internationalisation est donc de produire un programme unique qui puisse inclure plusieurs langues pour l’interface. Présentation
L'internationalisation est un prérequis de la régionalisation. Elle consiste à séparer, dans le code source d'un programme, ce qui est indépendant de la langue et de la culture de ce qui en est dépendant (généralement, dans des fichiers appelés tables de traduction).
Mais l'internationalisation ne nécessite pas qu'un travail sur les messages textuels. Il faut aussi parfois permettre de changer les codes couleur (dont la signification peut varier selon les cultures), les graphiques (dont les noms des icônes, certaines icônes pouvant contenir du texte écrit à traduire), le format des dates ou des nombres, la direction de l'écriture (de droite à gauche en arabe, par exemple), la taille des éléments graphiques (un texte en allemand est souvent plus long que son équivalent en anglais, ce qui peut modifier une mise en page), jusqu'à la façon d'accorder des mots au pluriel après un nombre (on écrira « 0 tâche fille » en français, mais « 0 children processes » en anglaisLes fichiers .po, utilisés par plusieurs logiciels dont Drupal, permettent ces indications.).
L'internationalisation est donc l'ensemble des mécanismes techniques qui aboutissent à un résultat linguistiquement acceptable dans la langue que l'utilisateur final a choisie. Cependant, elle peut ne pas suffire pour traiter « n'importe quelle langue », du fait que le programme utilise un jeu de caractères limité, ou certaines polices de caractères spécifiques, ou encore parce que l'utilisateur ne dispose pas des bons claviers pour la saisie de données dans telle ou telle autre langue.
La migration ou la prise en compte d'un jeu de caractères plus étendu peut être nécessaire pour mener à bien une internationalisation universelle. Des jeux étendus sont proposés, d'une part dans la famille ISO-2022, et d'autre part sous forme d'unicode, avec en particulier UTF-8/UTF-16. Cette étape, plus ou moins indépendante de l'internationalisation (elle peut se faire en même temps, avant ou après) est appelée « multilingualisation ».
Les termes sont souvent écrits dans leur forme abrégée i18n, une dénomination inventée par la Digital Equipment Corporation dans les années 1970 et 1980 et l10n pour le mot anglais (régionalisation en français).
Certaines entreprises, comme IBM et Sun Microsystems, utilisent le terme (« globalisation » en français) pour définir la combinaison entre l’internationalisation et la régionalisationIBM Globalization web site.
MicrosoftMicrosoft "Globalization Step-by-Step" guide définit l’internationalisation comme une combinaison entre l’expression anglaise « World-Readiness » et la régionalisation. World-readiness est une tâche qui incombe au développeur, et qui permet d’utiliser un produit avec de nombreux caractères d’écriture et de nombreuses cultures (globalisation) tout en séparant les ressources internationalisables de l’interface utilisateur dans un format régionalisable (, abrégée en l12y)MSDN.microsoft.com.
Ce concept est également connu sous le nom de « NLS » (National Language Support ou Native Language Support qui signifie prise en charge des langues nationales ou prise en charge des langues maternelles en français).
Exemple Le programme C ainsi rédigé n'est pas internationalisé :
printf("Fatal error: %s\n", msg);
Pour traduire le message, il faudrait éditer le code source et modifier la chaîne de caractères.
Par contre, la version suivante du même programme est internationalisée grâce à la bibliothèque gettext. Le programme va chercher dans ses fichiers de régionalisation () une chaîne de caractères correspondant à « Fatal error: %s », et ce, pour la langue de l'utilisateur courant :
printf(gettext("Fatal error: %s\n"), gettext(msg));
Les messages régionalisés de gettext sont associés à la version par défaut du message qui sert de clé. D'autres environnements de programmation peuvent utiliser, par exemple, un numéro (ce que faisait Mac OS), ou bien se baser sur un paramètre de configuration dynamique (par exemple, la méthode I18n.translate d'une application Ruby On Rails). Aperçu vignette|400px|Le processus d’internationalisation et de localisation(selon une charte du site web LISA.) Les efforts d’internationalisation et de régionalisation doivent prendre en considération les caractéristiques suivantes : La langue Le texte codé par ordinateur Les alphabets/caractères d’écriture ; la plupart des systèmes récents utilisent le standard informatique Unicode afin de résoudre les problèmes de codage des caractères. Différents systèmes d’adjectifs numéraux Le système d’écriture de la gauche vers la droite dans les langues européennes (par exemple, l’allemand), de la droite vers la gauche en hébreu et en arabe, et en vertical dans certaines langues asiatiques. La mise en page de textes complexes Les différents traitements de texte, tels que le concept dit de « capitalisation » qui existe dans certains caractères d’écriture mais pas dans tous, les différentes règles de tri des textes, etc. Les formes plurielles dans l’affichage du texte, qui varient selon la langueGNU.org La saisie du texte L’activation des raccourcis clavier sur tout type de clavierBlog.i18n.ro Les représentations graphiques du texte (des documents imprimés, des images contenant du texte) le son de la voix (Son) Le sous-titrage de films et de vidéos La culture Les images et les couleurs : les questions de l'intelligibilité et de la pertinence culturelle Les noms et les titres Des numéros assignés par les gouvernements (tels que le Social Security number aux États-Unis, le National Insurance number au Royaume-Uni, l’Isikukood en Estonie, et le Resident registration number en Corée du Sud) ainsi que les passeports Les numéros de téléphone, les adresses ainsi que les codes postaux internationaux La devise (les symboles, les positions des marqueurs de change) Les unités de poids et de mesure Les formats des papiers (A4, Letter...) Les conventions écrites Le format de date et d’heure, y compris l’utilisation des différents calendriers Les fuseaux horaires (UTC dans les milieux internationalisés) La mise en forme des nombres (séparateur décimal, ordre de tri des chiffres) Les différences de symboles (par exemple, les guillemets (“...”), en anglais, utilisées pour les citations, ou les chevrons (« ... ») en français). Tout autre aspect du produit ou du service étant soumis à la conformité réglementaire Les incidents de frontière indiqués sur des cartes (par exemple, le fait de ne pas réussir à montrer où est le Cachemire quand on est Indien est considéré comme un crime en Inde) La censure de l’Internet
La distinction entre internationalisation et régionalisation est subtile mais importante. L’internationalisation est l’adaptation de produits utilisables de manière « potentielle » presque partout, alors que la régionalisation constitue l’ajout de valeurs spécifiques destinées à des paramètres régionaux donnés. L’internationalisation est effectuée une fois sur chaque produit, alors que la régionalisation est effectuée pour chacune des adaptations de ce produit à des paramètres régionaux. Les processus se complètent et doivent être combinés afin d’atteindre l’objectif d’un système fonctionnant à l’échelle internationale. Les domaines propres à la régionalisation incluent les caractéristiques suivantes : La traduction La variété de langues à l’échelle nationale (voir localisation linguistique) Un soutien particulier pour certaines langues comme les langues de l’Asie de l’Est Les coutumes locales Le contenu local Les symboles Ordre de tri (classement alphabétique) L’esthétique La culture et l’environnement social Les différentes lois et réglementations (par exemple, les lois fiscales, les lois du travail, etc.)
Procédure d’affaires pour l’internationalisation de logiciels Afin d’internationaliser un produit, il convient de bien vérifier, pour chacun des marchés dans lesquels s’inscrit le produit, les détails tels que : la longueur de champ pour les adresses, le format unique pour l’adresse, la possibilité de rendre optionnels, pour les pays qui n’en disposent pas : le champ pour le code postal, le champ pour l’État, l’introduction de nouveaux flux d’enregistrement qui adhérent aux lois locales Ce ne sont là que des exemples faisant de l’internationalisation un projet complexe.
Une approche plus large prend en compte les facteurs culturels concernant, par exemple, l’adaptation de la logique du processus d’affaires ou l’inclusion des aspects individuels et culturels (comportementaux)Pawlowski, J.M. (2008): Culture Profiles: Facilitating Global Learning and Knowledge Sharing. Proc. of ICCE 2008, Taiwan, novembre 2008. Draft Version.
Pratique de codage La pratique actuellement en vigueur est destinée aux applications permettant de placer du texte dans des chaînes de ressource, chargées durant l’exécution du programme et selon les besoins. Ces chaînes, stockées dans des fichiers de ressource, sont relativement faciles à convertir. Les programmes sont souvent créés afin de référencer des bibliothèques de ressource qui dépendent des données des paramètres régionaux ayant été sélectionnés, le plus souvent par un sélecteur de langues. Ceci est possible grâce à des bibliothèques logicielles telles que gettext.
Ainsi, pour obtenir une application qui puisse prendre en charge plusieurs langues, il conviendrait de concevoir l’application qui permettrait de sélectionner le fichier de ressource de la langue correspondante au moment de l’exécution. Les fichiers de ressource sont convertis dans les langues requises. Cette méthode a tendance à devenir spécifique à l’application voire spécifique au fournisseur. Le code nécessaire pour gérer la vérification d’une saisie et de nombreux autres types de données sensibles aux paramètres régionaux doit également supporter les différentes exigences régionales. Les systèmes modernes de développement et d’exploitation incluent des bibliothèques sophistiquées qui offrent un soutien international à ce genre de données.
Difficultés Bien que la traduction de textes existant dans d’autres langues puisse sembler facile, il est plus difficile de conserver les versions parallèles des textes tout au long du cycle de vie du produit. Par exemple, si un message affiché à l’utilisateur est modifié, toutes les versions traduites devront également être modifiées. Il en résulte par la suite un cycle de développement un peu plus long.
De nombreux problèmes de régionalisation (comme le sens de l’écriture, le tri du texte, etc.) nécessitent une modification plus profonde que l'unique traduction du texte. Par exemple, OpenOffice.org y parvient grâce aux commutateurs de compilation.
Dans une certaine mesure (par exemple pour l’assurance qualité), l’équipe de développement a besoin de quelqu’un qui comprenne les langues et les cultures étrangères et qui dispose d’une formation technique. Au sein des grands pays où il n’existe qu’une langue ou culture dominante, il est probablement difficile de trouver une telle personne.
L’un des exemples de pièges connus à propos de la régionalisation est celui de la tentative qu’a faite Microsoft pour garder quelques raccourcis clavier significatifs pour des langues locales. Dans certains programmes de la version italophone de Microsoft Office, la touche « CTRL + U » (soulignement) a fini par être remplacée par « CTRL + S » (« sottolineato »), plutôt que par la fonction (quasi) universelle « Enregistrer ».