<\/HEAD>
Comme j'ai présenté une méthode pour créer votre propre widget<\/A> pour le Web Appbuilder dans mon dernier article, je voudrais expliquer les options pour la prise en charge multilingue dans votre widget.<\/P>
NLS<\/H4>Les chaînes de nos derniers widgets sont plus ou moins codées en dur dans les fichiers Setting.html et Widget.html pour le moment. Si vous souhaitez remplacer ces chaînes par la langue définie dans le navigateur ou le portail, vous devez étiqueter les chaînes et créer une bibliothèque de chaînes. Cela est fait pour Setting.html et pour Widget.html à différents endroits dans la structure du widget.<\/P>Setting.html<\/H4>Le dossier setting contient un dossier appelé nls. À l'intérieur, vous créez un dossier pour chaque langue que vous souhaitez soutenir et un fichier initial strings.js avec les chaînes qui devraient être utilisées par défaut dans les paramètres du widget. Le fichier strings.js se compose des chaînes par défaut actuelles et d'un indicateur, indiquant si une seule langue (nous ne supportons que "de" dans notre exemple) est prise en charge :<\/P><SPAN class="token function">define<\/SPAN><SPAN class="punctuation token">(<\/SPAN><SPAN class="punctuation token">{<\/SPAN>
root<SPAN class="punctuation token">:<\/SPAN> <SPAN class="punctuation token">(<\/SPAN><SPAN class="punctuation token">{<\/SPAN>
ZoomSetCheckboxText<SPAN class="punctuation token">:<\/SPAN> <SPAN class="string token">"Afficher le niveau de zoom"<\/SPAN><SPAN class="punctuation token">,<\/SPAN>
ScaleSetCheckboxText<SPAN class="punctuation token">:<\/SPAN> <SPAN class="string token">"Afficher l\'échelle"<\/SPAN><SPAN class="punctuation token">,<\/SPAN>
configText<SPAN class="punctuation token">:<\/SPAN> <SPAN class="string token">"Définir la configuration :"<\/SPAN>
<SPAN class="punctuation token">}<\/SPAN><SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">,<\/SPAN>
<SPAN class="string token">"de"<\/SPAN><SPAN class="punctuation token">:<\/SPAN> <SPAN class="number token">1<\/SPAN><SPAN class="punctuation token">,<\/SPAN>
<SPAN class="string token">"es"<\/SPAN><SPAN class="punctuation token">:<\/SPAN> <SPAN class="number token">0<\/SPAN>
<SPAN class="punctuation token">}<\/SPAN><SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">;<\/SPAN><SPAN class="line-numbers-rows"><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><\/span><\/CODE><\/PRE><P>Vous avez peut-être remarqué que nous utilisons une variable appelée "ZoomSetCheckboxText" et "ScaleSetCheckboxText" et définissons le contenu de la variable avec quelques chaînes de base. Ces chaînes doivent être utilisées partout où les variables sont utilisées. Nous plaçons les variables à l'intérieur du fichier Setting.html. Cela ressemble maintenant un peu différent car la nomenclature semble un peu étrange :<\/P><PRE class="lia-code-sample line-numbers language-none"><CODE> <span class="token tag"><span class="token tag"><span class="punctuation token"><<\/span>div<\/span><span class="punctuation token">><\/span></span>
<span class="token tag"><span class="token tag"><span class="punctuation token"><<\/span>div<\/span> <span class="attr-name token">class<\/span><span class="attr-value token"><span class="punctuation token">=<\/span><span class="punctuation token">"<\/span>title<span class="punctuation token">"<\/span></span><span class="punctuation token">><\/span></span>${nls.configText}<span class="token tag"><span class="token tag"><span class="punctuation token"><\/<\/span>div<\/span><span class="punctuation token">><\/span></span>
<span class="token tag"><span class="token tag"><span class="punctuation token"><<\/span>div<\/span> <span class="attr-name token">class<\/span><span class="attr-value token"><span class="punctuation token">=<\/span><span class="punctuation token">"<\/span>row<span class="punctuation token">"<\/span></span><span class="punctuation token">><\/span></span>
<span class="token tag"><span class="token tag"><span class="punctuation token"><<\/span>input<\/span> <span class="attr-name token">type<\/span><span class="attr-value token"><span class="punctuation token">=<\/span><span class="punctuation token">"<\/span>checkbox<span class="punctuation token">"<\/span></span> <span class="attr-name token">id<\/span><span class="attr-value token"><span class="punctuation token">=<\/span><span class="punctuation token">"<\/span>ZoomSetCheckbox<span class="punctuation token">"<\/span></span> <span class="attr-name token">data-dojo-attach-point<\/span><span class="attr-value token"><span class="punctuation token">=<\/span><span class="punctuation token">"<\/span>ZoomSetCheckbox<span class="punctuation token">"<\/span></span><span class="punctuation token">><\/<\input></spam>
<spam clss=style-attr language-css toke style=display:inline>${nls.ZoomSetCheckboxText}<spam clss=tag></p></spam>
</div>
<div clas=row>
<input type=checkbox id=ScaleSetCheckbox data-dojo-attach-point=ScaleSetCheckbox>
<p style=display:inline>${nls.ScaleSetCheckboxText}</p>
</div>
</div><\EMOJI_10>>
<P>Toutes les chaînes sont définies avec un schéma "${nls.xyz}". Cela permet d'utiliser les chaînes et la traduction automatique selon votre définition dans le fichier strings.js.<BR \/> Bien sûr, nous devons également définir une traduction en allemand dans notre cas. Cela se fait à l'intérieur du sous-dossier "de" dans le dossier nls. Nous plaçons un deuxième strings.js là-bas qui contient les chaînes allemandes :<\P>
<P><code>
define({
"ZoomSetCheckboxText": "Zeige Zoomlevel",
"ScaleSetCheckboxText": "Zeige Maßstab",
"configText": "Einstellung"
});</P> class="punctuation token">,</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Veuillez noter la différence d'utilisation des indicateurs de chaîne comparé au fichier strings.js par défaut dans le dossier parent.Le Widget.html
Le widget lui-même fonctionne de manière similaire. À l'intérieur du dossier Widget, vous créez un dossier nls avec des sous-dossiers concernant les langues souhaitées que vous souhaitez prendre en charge. Une liste des langues prises en charge peut être vue ici :

Encore une fois, nous substituons les chaînes utilisées dans le fichier original avec le schéma "${nls.xyz}" :
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>div</SPAN> <SPAN class="attr-name token">class</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>ZoomLeveLInfo<SPAN class="punctuation token">"</SPAN></SPAN><SPAN class="punctuation token">></SPAN></SPAN>
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAN>div</SPAN> <SPAN class="attr-name token">data-dojo-attach-point</SPAN><SPAN class="attr-value token"><SPAN class="punctuation token">=</SPAN><SPAN class="punctuation token">"</SPAN>zoomInfoDiv<SPAN class="punctuation token">"</SPAN></SPAN><SPAN class="punctuation token">></SPAN></SPAN>${nls.label1} <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><</SPAn>p</Span><span class="style-attr language-css token"><span class="attr-name token"> <span class="attr-name token">style</span></span><span class="punctuation token">="</span><span class="attr-value token"><span class="property token">display</span><span class="punctuation token">:</span> inline<span class="punctuation token">;</span></span><span class="punctuation token">"</span></span> <span class="attr-name token">data-dojo-attach-point</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>MapZoomInfo<span class="punctuation token">"</span></span><span class="punctuation token">></span></span><span class="token tag"><span class="token tag"><span class="punctuation token"></</span>p</span><span class="punctuation token">></span></span><span class="token tag"><span class="token tag"><span class="punctuation token"></</span>div</span><span class="punctuation token">></span></span>
<Span Class = "Token Tag"><Span Class = "Token Tag"><Span Class = "Punctuation Token"> ≪ / Span > Div </ Span > <Span Class = "Attr - Name Token "> Data - Dojo - Attach - Point </ Span > <Span Class = "Attr - Value Token "><Span Class = "Punctuation Token "> = </ Span > <Span Class = "Punctuation Token "> " </ Span > ScaleInfoDiv <Span Class = "Punctuation Token "> " </ Span ></ Span ><Span Class = "Punctuation Token "> ≫ </ Span ></ Span > ${NLS.Label2} <Span Class = "Token Tag "><Span Class = "Token Tag "><Span Class = "Punctuation Token "> ≪ / Span > P </ Span ><Span Class = "Style - Attr Language - Css Token "><Span Class = "Attr - Name Token "> <Span Class = "Attr - Name Token "> Style </ Span ></ Span ><Span Class = "Punctuation Token "> = " </ Span ><Span Class = "Attr - Value Token "><Span Class = "Property Token "> Display </ Span ><Span Class = "Punctuation Token "> : </ Span > Inline <Span Class = "Punctuation Token "> ; </ Span ></ Span ><Span Class = "Punctuation Token "> " </ Span ></ Span > <Span Class = "Attr - Name Token "> Data - Dojo - Attach - Point </ Span ><Span Class = "Attr - Value Token "><Span Class = "Punctuation Token "> = </ Span ><Span Class = "Punctuation Token "> " </ Span > ScaleInfo <Span Class = "Punctuation Token "> " </ Span ></ Span ><Span Class = "Punctuation Token "> ≫ </ Span ></ Span ><Span Class = "Token Tag "><Span Class = "Token Tag "><Span Class = "Punctuation Token "> ≪ / Span > P </ Span ><Span Class = "Punctuation Token "> ≫ </ Span ></ Span ><Span Class = "Token Tag "><Span Class = "Token Tag "><Span Class = "Punctuation Token "> ≪ / Span > Div </ Span ><Span Class = "Punctuation Token "> ≫ </ Span ></ Span >
<Span Class = "Token Tag"><Span Class = "Token Tag"><Span Class = "Punctuation Token"> ≪ / Div </ Span ><Span Class = "Punctuation Token"> ≫ </ Span ></ Span ><Span Class= "Line-Numbers-Rows"><Span></Span><Span></Span><Span></Span><Span></Span></Span>Dans notre fichier strings.js, nous définissons les chaînes par défaut :
<SPan CLass=