Ce document vous indique comment créer des gadgets pouvant aisément être adaptés un public international.
L'API Google Gadgets propose une méthode simple vous permettant d'adapter votre gadget à un public international. Rien de plus facile, il vous suffit pour cela de construire votre gadget de sorte que le texte présenté aux utilisateurs (texte nécessitant d'être traduit) soit regroupé dans des fichiers de localisation séparés du gadget lui-même. Faites-vous aider par des traducteurs externes pour traduire vos chaînes de texte et créer des fichiers de localisation pour chaque paramètre régional. Vous les ajouterez ensuite aux spécifications de votre gadget qui pourra ainsi être consulté par divers groupes d'utilisateurs.
Les gadgets internationaux (gadgets i18n) fonctionnent avec tous les services Google, tels que Google Desktop et Google Page Creator, sans qu'aucune modification ne soit nécessaire.
Pour connaître la liste des pays et des langues pris en charge par la page iGoogle, reportez-vous à la rubrique Pays et langues pris en charge.
Pour plus d'informations sur le fonctionnement des gadgets dans d'autres langues que l'anglais, reportez-vous à la rubrique Gadgets développés dans une langue autre que l'anglais.
Ce document fait référence à l'internationalisation (i18n) et à la localisation (l10n) :
Le présent document utilise également le concept de "profil de localisation" d'un utilisateur qui comprend deux éléments : le pays (découlant du domaine de l'utilisateur) et la préférence linguistique de l'interface utilisateur (reportez-vous à la rubrique Tests pour plus d'informations).
L'API Google Gadgets prend en charge le codage UTF-8 pour les valeurs d'attributs XML et dans la section <Content>. Lorsque votre contenu est de type html, UTF-8 est explicitement défini comme le codage par défaut. Nous vous déconseillons de procéder à ce paramétrage vous-même.
L'exemple de gadget utilisé dans ce document affiche le message "Hello World" présenté ci-dessous en chinois :
Dans cet exemple, le menu déroulant permet aux utilisateurs de sélectionner la couleur de police qu'ils souhaitent associer au message "Hello World". Les noms de couleurs qui apparaissent dans le menu sont définis dans des fichiers externes (fichiers de localisation). La langue dans laquelle ce menu est proposé dépend du profil langue/pays de l'utilisateur. Si un utilisateur dont le profil est en anglais exécute ce gadget, le texte apparaîtra dans cette langue. Voici comment se présente la version anglaise lorsque le menu déroulant des préférences utilisateur est sélectionné :
Cliquez ici pour consulter les spécifications du gadget Hello World.
Les principales étapes permettant de créer un gadget localisé sont les suivantes :
La stratégie d'internationalisation de Google Gadgets est basée sur les fichiers de localisation. Ce sont des fichiers XML contenant des chaînes de caractères traduites pour un paramètre régional donné. Chaque chaîne est identifiée par un nom unique pour tous les fichiers de localisation.
Les fichiers de localisation peuvent être hébergés par une URL quelconque et partagés par plusieurs applications. Ils concernent chacun un paramètre régional spécifique.
Les fichiers de localisation se présentent comme suit :
<messagebundle>
<msg name="hello_world">
Hello World.
</msg>
<msg name="color">Color</msg>
<msg name="red">Red</msg>
<msg name="green">Green</msg>
<msg name="blue">Blue</msg>
<msg name="gray">Gray</msg>
<msg name="purple">Purple</msg>
<msg name="black">Black</msg>
</messagebundle>
Vous pouvez inclure les champs suivants dans un fichier de localisation :
Par convention, les fichiers de localisation sont nommés de la manière suivante :
<language>_<country>.xml
Lorsqu'il n'existe aucune valeur spécifique concernant la langue ou le pays, on utilise "ALL" par convention. Par exemple, le fichier de_ALL.xml s'applique à tous les germanophones, quel que soit leur pays d'origine. Le fichier de localisation ALL_ALL.xml est celui utilisé par défaut.
Les conventions d'attribution des noms des fichiers de localisation ne sont pas des règles strictes. Le gadget fait appel aux attributs lang et country du paramètre <Locale> pour associer un fichier de localisation au profil d'utilisateur correspondant, mais n'utilise pas le nom du fichier de localisation.
Bien que l'API Google Gadgets vous apporte une flexibilité accrue, nous vous recommandons d'appliquer les règles suivantes :
La balise <Locale> (insérée dans la section <ModulePrefs>) vous permet de répertorier les fichiers de localisation utilisés par votre gadget. Exemple :
<ModulePrefs title="i18n Example"> <Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/> <Locale lang="de" messages="http://doc.examples.googlepages.com/de_ALL.xml"/> <Locale lang="zh-cn" messages="http://doc.examples.googlepages.com/zh_cn_ALL.xml"/> <Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/> <Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/> <Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/> <Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/> <Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/> </ModulePrefs>
Le paramètre <Locale> peut comporter les attributs suivants :
<Locale lang="fr" country="CA" messages="http://example.com/fr_CA.xml"/>
Lors de son lancement, le gadget utilise le fichier de localisation correspondant le mieux au profil de l'utilisateur.
Pour obtenir la liste des langues et des codes pays acceptés, reportez-vous à la rubrique Pays et langues pris en charge.
Les fichiers de localisation sont associés à une fonction de remplacement. Cette dernière permet au gadget d'utiliser le fichier de localisation le plus pertinent par rapport aux préférences linguistiques et régionales de l'utilisateur (spécifiées dans l'URL). Si le gadget ne détecte aucune correspondance exacte, il passe de nouveau en revue les fichiers de localisation disponibles pour établir la correspondance la plus proche.
La fonction de remplacement vous permet d'afficher des messages "par défaut" (généralement définis dans le fichier ALL_ALL.xml) lorsqu'un paramètre régional ne correspond à aucun fichier de localisation.
Supposons, par exemple, que les paramètres suivants soient définis dans votre gadget :
<Locale messages="http://x.com/ALL_ALL.xml"/> <Locale lang="de" messages="http://x.com/de_ALL.xml"/> <Locale lang="de" country="DE" messages="http://x.com/de_DE.xml"/> <Locale lang="de" country="US" messages="http://x.com/de_US.xml"/>
Comment ces fichiers seront-ils utilisés ? Pour un utilisateur dont le domaine est les États-Unis (http://www.google.com) et dont la préférence linguistique est l'allemand, les messages du fichier de_US.xml s'affichent. Si certains messages ne sont pas disponibles, ceux du fichier de_ALL.xml sont alors présentés à l'utilisateur, puis ceux du fichier ALL_ALL.xml.
Les internautes situés en Allemagne ayant adopté l'interface allemande utiliseront tout d'abord le fichier de_DE.xml, ceux situés en Suisse ayant adopté l'interface allemande utiliseront en premier lieu le fichier de_ALL.xml, enfin ceux situés en Suisse ayant adopté l'interface française utiliseront le fichier ALL_ALL.xml.
Comment les gadgets accèdent-ils au message demandé dans un fichier de localisation ? Prenons le fichier de_ALL.xml (langue allemande, pays défini sur ALL) dans l'exemple de gadget "Hello World" :
<messagebundle>
<msg name="hello_world">
Hallo Welt.
</msg>
<msg name="color">Farbe</msg>
<msg name="red">Rot</msg>
<msg name="green">Grün</msg>
<msg name="blue">Blau</msg>
<msg name="gray">Grau</msg>
<msg name="purple">Purpurrot</msg>
<msg name="black">Schwarz</msg>
</messagebundle>
Chaque message est associé à un nom unique qui l'identifie. Dans ce message, par exemple,
<msg name="red">Rot</msg>
le nom unique est "red" et la chaîne de caractères traduite qui apparaît sur le gadget (dans le menu déroulant des préférences utilisateur) est "Rot", traduction allemande du terme "red". L'équivalent anglais de ce message dans le fichier de localisation ALL_ALL.xml est le suivant :
<msg name="red">Red</msg>
Les spécifications du gadget "Hello World" utilisent la variable de substitution __MSG_ pour indiquer l'endroit où la valeur du fichier de localisation correspondant doit être reportée. Par exemple, l'instruction XML suivante figurant dans les spécifications du gadget "Hello World" sert à ajouter un élément dans le menu déroulant "Color" des préférences utilisateur :
<EnumValue value="Red" display_value="__MSG_red__" />
Littéralement, cette ligne signifie : accéder au fichier de localisation correspondant le mieux au profil pays/langue de l'utilisateur, extraire la valeur du message intitulé red afin de remplacer __MSG_red__. Cela permet d'insérer les noms de couleurs (présentés ici en allemand) dans le menu déroulant de préférences utilisateur :
Pour afficher des messages dans la section XML de votre gadget, utilisez des variables de substitution comme indiqué ci-dessus. Pour la partie CDATA de votre gadget, vous disposez d'options quelque peu différentes.
La technique la plus simple consiste à incorporer la variable de substitution dans votre code HTML :
<b>__MSG_hello_world__</b>.
Vous pouvez également utiliser la fonction de préférences utilisateur getMsg(). Notez que cette fonction vous permet d'accéder à tous les messages du fichier de localisation, pas seulement ceux associés aux préférences utilisateur. Toutefois, cette fonction doit être appelée sur un objet _IG_Prefs. Exemple :
var prefs = new _IG_Prefs(__MODULE_ID__); prefs.getMsg(“red”);
À titre d'exemple, voici les spécifications du gadget "Hello World" :
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="i18n Example">
<Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/>
<Locale lang="de" messages="http://doc.examples.googlepages.com/de_ALL.xml"/>
<Locale lang="zh-cn" messages="http://doc.examples.googlepages.com/zh_cn_ALL.xml"/>
<Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/>
<Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/>
<Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/>
<Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/>
<Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/>
</ModulePrefs>
<UserPref name="fontcolor" display_name="__MSG_color__" default_value="Red" datatype="enum">
<EnumValue value="Red" display_value="__MSG_red__" />
<EnumValue value="Green" display_value="__MSG_green__" />
<EnumValue value="Blue" display_value="__MSG_blue__" />
<EnumValue value="Gray" display_value="__MSG_gray__" />
<EnumValue value="Purple" display_value="__MSG_purple__" />
<EnumValue value="Black" display_value="__MSG_black__" />
</UserPref>
<Content type="html">
<![CDATA[
<script type="text/javascript">
displayMsg();
function displayMsg(){
// Get userprefs
var prefs = new _IG_Prefs(__MODULE_ID__);
// Set font color to user's color choice
document.fgColor = prefs.getString("fontcolor");
// Display message
document.write("<br><h1>");
// Use prefs.getMsg to go to the appropriate message bundle
// and get the string associated with the "hello_world" message.
document.write(prefs.getMsg("hello_world"));
document.write("</h1>");
}
</script>
]]>
</Content>
</Module>
Pour tester votre gadget, adaptez vos paramètres régionaux et linguistiques à ceux des fichiers de localisation inclus dans votre gadget.
Pour modifier ces paramètres, le meilleur moyen est de modifier l'URL de votre page iGoogle :
http://www.google.com/ig?&gl=<country>&hl=<lang>
Par exemple, dans l'URL suivante, le pays est l'Allemagne (DE) et la langue est l'anglais (en). En général, le pays est prioritaire sur la langue. Ainsi, dans le cas de cette URL, le texte de la page iGoogle s'affiche en allemand :
http://www.google.com/ig?&gl=DE&hl=en
Dans cet exemple, le pays est implicitement les États-Unis et la langue est l'espagnol :
http://www.google.com/ig?hl=es
Pour obtenir la liste des langues et des codes pays acceptés, reportez-vous à la rubrique Pays et langues pris en charge. Le lien suivant peut vous aider à établir une URL adaptée à une langue particulière : http://www.google.fr/help/customize.html#searchlang.
La mise en cache des fichiers de localisation fonctionne de la même manière que celle des spécifications du gadget lui-même. En général, nous actualisons le cache par intervalles d'une ou deux heures et les serveurs d'hébergement ne peuvent recevoir que 100 à 200 requêtes environ par jour relatives aux fichiers de localisation. Si les serveurs ne sont pas disponibles, nous continuons à utiliser notre "ancienne" copie aussi longtemps que cela est possible. Dans le gadget developer.xml, si vous désactivez la mise en cache d'un gadget, cela désactive également la mise en cache des fichiers de localisation associés.
Durant la phase de développement, il est possible que votre gadget n'apparaisse pas ou que le message ??? s'affiche à la place d'un message. Cela peut s'expliquer par l'une des raisons suivantes :
Cette rubrique répertorie les langues et les codes pays pris en charge par la page iGoogle. Par convention, les codes de langue sont en minuscules et les codes de pays en majuscules dans le tableau ci-dessous, mais ce n'est pas une obligation.
La page iGoogle prend en charge les langues suivantes :
| Code langue | Langue |
|---|---|
| da |
Danois |
| de | Allemand |
| en | Anglais |
| es | Espagnol |
| fi | Finnois |
| fr | Français |
| it | Italien |
| ja | Japonais |
| ko | Coréen |
| nl | Néerlandais |
| no | Norvégien |
| pt-BR |
Portugais (Brésil) |
| sv | Suédois |
| ru | Russe |
| zh-CN | Chinois (simplifié) |
La page iGoogle prend en charge les pays suivants :
| Code pays | Pays |
|---|---|
AU |
Australie |
BR |
Brésil |
CA |
Canada |
CH |
Suisse |
CN |
Chine |
DE |
Allemagne |
DK |
Danemark |
ES |
Espagne |
FI |
Finlande |
FR |
France |
IE |
Irlande |
IN |
Inde |
IT |
Italie |
JP |
Japon |
KR |
Corée |
MX |
Mexique |
NL |
Pays-Bas |
NO |
Norvège |
NZ |
Nouvelle-Zélande |
RU |
Russie |
SE |
Suède |
UK |
Royaume-Uni |
US |
États-Unis |
Mis à jour le