Les API de localisation dans les interfaces IResourceManager et IResourceBundle utilisent des chaînes de paramètres régionaux plutôt que des occurrences Locale ; cette classe est rarement utilisée dans une application.
var locale:Locale = new Locale("en_US_MAC"); trace(locale.toString()); // outputs "en_US_MAC"
var locale:Locale = new Locale("en_US_MAC"); trace(locale.country); // outputs "US"
var locale:Locale = new Locale("en_US_MAC"); trace(locale.language); // outputs "en"
var locale:Locale = new Locale("en_US_MAC"); trace(locale.variant); // outputs "MAC"
Trois concepts principaux sont impliqués dans la localisation : les paramètres régionaux, les ressources et les regroupements de ressources.
Un paramètre régional spécifie une langue et un pays pour lesquels votre application a été localisée. Par exemple, le paramètre régional
Une ressource est une valeur nommée dépendant d’un paramètre régional. Par exemple, il se peut que votre application dispose d’une ressource dont le nom est
Un regroupement de ressources est un groupe de ressources nommé dont les valeurs ont été localisées pour un paramètre régional spécifique. Un regroupement de ressources est identifié par la combinaison de ses valeurs
Un objet ResourceManager unique implémentant l’interface IResourceManager gère plusieurs regroupements de ressources, éventuellement pour plusieurs paramètres régionaux, et permet d’accéder aux ressources contenues dans ces regroupements. Par exemple, vous pouvez extraire une ressource spécifique en tant que chaîne en appelant la méthode
Toutes les classes qui développent la classe UIComponent, Formatter ou Validator comportent une propriété
Les méthodes d’extraction de ressources telles que
Lorsque votre application démarre, la classe ResourceManager reçoit automatiquement les regroupements de ressources ayant été compilés dans l’application. Si vous créez un module de code, les ressources dont ses classes ont besoin sont par défaut compilées dans le module. Lorsque le module est chargé dans une application, les regroupements dont l’application ne dispose pas déjà sont ajoutés à la classe ResourceManager.
Vous pouvez compiler des « modules de ressources » ne contenant que des ressources et les charger avec la méthode
Bien que la classe ResourceManager reçoive normalement les regroupements de ressources ayant été compilés dans votre application ou chargé à partir de modules, vous pouvez aussi créer par programmation des regroupements de ressources et les ajouter vous-même à la classe ResourceManager avec la méthode
Lorsqu’une sous-application ou un module Flex ajoute automatiquement ses groupes de ressources compilés à ResourceManager, cela appelle
Cette méthode appelle d’abord
Si la ressource spécifiée n’est pas trouvée, cette méthode renvoie
L’ordre des noms de regroupements dans ce tableau n’est pas spécifié.
Cette méthode appelle
IMAGE=Embed("image.jpg") BUTTON_SKIN=ClassReference("skins.ButtonSkin_en_US")
un fichier de propriétés et voulez obtenir l’objet Class que la directive
Si la ressource spécifiée n’est pas trouvée, cette méthode retourne
Cette méthode appelle
MINIMUM=5
dans un fichier de propriétés et voulez obtenir la valeur 5 plutôt que
Si la ressource spécifiée n’est pas trouvée, cette méthode retourne 0.
L’ordre des paramètres régionaux dans ce tableau n’est pas spécifié.
Cette méthode appelle
LONGITUDE=170.3
dans un fichier de propriétés et voulez obtenir la valeur 170.3 plutôt que
Si la ressource spécifiée n’est pas trouvée, cette méthode renvoie
La valeur est renvoyée exactement telle qu’elle est stockée dans l’objet
Si la ressource spécifiée n’est pas trouvée, cette méthode renvoie
Cette méthode considère que la valeur de la ressource est une chaîne contenant une liste d’éléments séparés par une virgule. Elle appelle la méthode
COUNTRIES=India, China, Japan
dans un fichier de propriétés et voulez obtenir la valeur
Si la ressource spécifiée n’est pas trouvée, cette méthode retourne
Cette méthode appelle
Si un tableau de valeurs
Si la ressource spécifiée n’est pas trouvée, cette méthode retourne
Cette méthode appelle la méthode
MINIMUM=5
dans un fichier de propriétés et voulez obtenir la valeur 5 plutôt que
Si la ressource spécifiée n’est pas trouvée, cette méthode retourne 0.
Par exemple, si l’utilisateur a indiqué dans le système d’exploitation qu’il préfère le français, et que le fichier SWF a été compilé pour les langues en_US, fr_FR et de_DE, la propriété
Cette méthode n’est utilisée que par les classes qui implémentent l’interface IFlexModuleFactory.
Par exemple, si le paramètre
Cette méthode n’est utilisée que par les classes qui implémentent l’interface IFlexModuleFactory.
Chaque appel à cette méthode renvoie un nouvel objet de distribution d’événement que vous pouvez utiliser pour connaître la progression du chargement et savoir s’il s’est terminé correctement ou a résulté en une erreur. Cet objet distribue des événements
Lorsque le module a été chargé, les regroupements de ressources sont ajoutés à la classe ResourceManager, mais la propriété
Lorsque le module est déchargé, ses regroupements de ressources sont supprimés du gestionnaire ResourceManager, mais la
Cela amène les expressions de liaison à réévaluer si elles impliquent les méthodes ResourceManager
Cela provoque également l’exécution de la méthode
Lorsque vous appelez les méthodes ResourceManager
Avec ce schéma, il est possible de disposer de paramètres régionaux ne contenant pas nécessairement un ensemble complet de ressources localisées. Par exemple, si vous localisez votre application pour la l’anglais indien plutôt qu’américain, vous ne devez fournir des ressources que pour le paramètre régional
De nombreuses classes de structures considèrent qu’elles peuvent toujours obtenir, à partir d’un paramètre régional, les ressources auxquelles elles s’attendent, et génèrent des erreurs si cela leur est impossible. Aussi, vous devez vous assurer que le paramètre régional
Si cette propriété est définie, la classe ResourceManager distribue un événement
Une occurrence unique d’une implémentation de la classe IResourceManager gère toutes les ressources localisées pour une application Flex.
Une application Flex comporte généralement plusieurs occurrences de cette classe, toutes gérées par une occurrence unique de la classe ResourceManager. Il est possible de disposer d’occurrences ResourceBundle pour plusieurs paramètres régionaux, une pour chaque paramètre régional. Il peut exister plusieurs occurrences ResourceBundle avec différents noms de regroupements.
Si vous créez vos propres occurrences ResourceBundle, vous pouvez définir les paires clé-valeur sur l’objet
Trois concepts principaux sont impliqués dans la localisation : les paramètres régionaux, les ressources et les regroupements de ressources.
Un paramètre régional spécifie une langue et un pays pour lesquels votre application a été localisée. Par exemple, le paramètre régional
Une ressource est une valeur nommée dépendant d’un paramètre régional. Par exemple, il se peut que votre application dispose d’une ressource dont le nom est
Un regroupement de ressources est un groupe de ressources nommé dont les valeurs ont été localisées pour un paramètre régional spécifique. Un regroupement de ressources est identifié par la combinaison de ses valeurs
L’interface IResourceBundle représente un regroupement de ressources spécifique. Toutefois, la plupart des applications n’ont besoin que d’utiliser la classe IResourceManager. Un objet ResourceManager unique implémentant cette interface gère plusieurs regroupements de ressources, éventuellement pour plusieurs paramètres régionaux, et permet d’accéder aux ressources contenues dans ces regroupements. Par exemple, vous pouvez extraire une ressource spécifique en tant que chaîne en appelant la méthode
En général, vous ne créez pas vous-même les regroupements de ressources ; à la place, ils sont généralement compilés à partir de fichiers ~~.properties. Un fichier de propriétés nommé MyResources.properties produit un regroupement de ressources avec
Les fichiers de propriétés Flex sont similaires aux fichiers de propriétés Java, à la différence qu’ils prennent aussi en charge les directives
Les ressources de la structure Flex ont été localisées pour l’anglais américain (paramètre régional
Les fichiers de propriétés des ressources de structures (par exemple, formatters.properties) figurent dans les répertoires frameworks/projects/framework/bundles/{locale}/src du SDK Flex. Vos applications sont normalement liées par rapport à la structure Flex en tant que bibliothèque précompilée, framework.swc, dans le répertoire frameworks/libs. Cette bibliothèque ne contient aucune ressource. A la place, les ressources de structures ont été compilées en bibliothèques de regroupements de ressources distinctes telles que framework_rb.swc. Celles-ci sont situées dans les répertoires frameworks/locales/{locale} et votre application doit également être liée dans un ou plusieurs de ces répertoires.
Vous êtes libre d’organiser les propres ressources de votre application dans les regroupements qui vous conviennent. Si vous localisez votre application pour des paramètres régionaux autres que
Lorsque votre application démarre, la classe ResourceManager reçoit automatiquement les regroupements de ressources ayant été compilés dans l’application. Si vous créez un module de code, les ressources dont ses classes ont besoin sont par défaut compilées dans le module. Lorsque le module est chargé dans une application, les regroupements dont l’application ne dispose pas déjà sont ajoutés à la classe ResourceManager.
Vous pouvez compiler des « modules de ressources » ne contenant que des ressources et les charger avec la méthode
Bien que la classe ResourceManager reçoive normalement les regroupements de ressources ayant été compilés dans votre application ou chargé à partir de modules, vous pouvez aussi créer par programmation des regroupements de ressources et les ajouter vous-même à la classe ResourceManager avec la méthode
Cette propriété en lecture seule est définie lorsqu’un regroupement de ressources est construit.
Les regroupements de ressources qui sont automatiquement créés à partir de fichiers de propriétés compilés comportent des noms de regroupements basés sur les noms de ces fichiers. Par exemple, un fichier de propriétés nommé MyResources.properties produit un regroupement de ressources dont le nom
La classe ResourceManager peut gérer plusieurs regroupements comportant le même nom
En général, vous devez accéder aux ressources en utilisant les méthodes IResourceManager telles que
var rb:IResourceBundle = new ResourceBundle("fr_FR", "MyResources"); rb.content["LANGUAGE"] = "Francais"; rb.content["GREETING"] = "Bonjour";
Lorsqu’un regroupement de ressources est produit via la compilation d’un fichier de propriétés, ses valeurs de ressources sont de type chaîne ou classe. Par exemple, si le fichier de propriétés contient
LANGUAGE=English MINIMUM_AGE=18 ENABLED=true LOGO=Embed("logo.png")
la valeur de la ressource
Vous pouvez utiliser les méthodes IResourceManager telles que
Cette propriété en lecture seule est définie lorsqu’un regroupement de ressources est construit.
Les regroupements de ressources qui sont automatiquement créés à partir de fichiers de propriétés compilés comportent des paramètres régionaux basés sur l’option