Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Internationalisation avec AS3

Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.Par Benomar Younès

De nos jours, le développement d'applications web “internationales” n'est plus un luxe. La plupart des environnements et APIs de développement proposent de manière intégrée des mécanismes de gestion de ressources multi-langues. En effet, il serait peu envisageable de distribuer un programme où les messages, les formats numériques, les dates et autres symboles seraient stockés “en dur” dans le code, sans penser à internationaliser en fonction de la langue et de la région de l'utilisateur final.

L'internationalisation consiste à isoler ces parties de programmes dépendantes de la langue. Dans ce billet nous nous attacherons à introduire les éléments proposé dans la nouvelle monture d'actionscript 3.

La classe Locale

Les Pays et Langages sont normalisés par des codes ISO (International Organization for Standardization), Flash Player utilise cette standardisation dans les objets “mx.resources.Locale”. Un objet “Locale” est identifié par une combinaison particulière de langage et de région.

Locale.getCurrent(Application.application.systemManager).country 
Locale.getCurrent(Application.application.systemManager).language

Accès aux ressources

En AS3, les informations propres à une localisation sont stockées dans de simples fichiers textes, manipulables par n'importe quel éditeur de texte. Ces fichiers sont appelés aussi “Properties Files”. Ils sont constitués d'un label, qui ne doit pas être modifié quelle que soit la langue, et de la traduction correspondante à ce label dans une langue. Les fichiers doivent être dans un répertoire 'locale' selon la règle de nommage suivante: locale/pays_langue/monFichier.properties.

Dans Flex 2, si vous voulez compiler l'application avec les fichiers de propriétés, il vous faudra ajouter le répertoire 'locale' comme argument pour le compilateur : -source-path locale/{locale}

import mx.resources.*; 
import mx.resources.Locale; 
 
[ResourceBundle("i18n")] 
private static var stringResources:ResourceBundle; 
var label:String = stringResources.getString("welcome");

Le répertoire locale contient alors l'arborescence suivante :

locale/
     US_en/
         18n.properties
     FR_fr/
         i18n.properties

Contenu du fichier : i18n.properties

welcome=Bienvenue

Par Benomar Younès (Virtual Industry). Pour les commentaires à ce sujet sur mon blog