projman/hlp/fr/tcl/msgcat.htm

118 lines
13 KiB
HTML
Raw Normal View History

2015-10-19 13:27:31 +03:00
<HTML><HEAD><TITLE>msgcat</TITLE>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><b><H3>msgcat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</H3></b></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">msgcat - catalogue de messages Tcl
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::msgcat::mc </b><i>src-string</i> <br>
<b>::msgcat::mclocale </b>?<i>newLocale</i>? <br>
<b>::msgcat::mcpreferences</b> <br>
<b>::msgcat::mcload </b><i>dirname</i> <br>
<b>::msgcat::mcset </b><i>locale src-string </i>?<i>translate-string</i>? <br>
<b>::msgcat::mcunknown </b><i>locale src-string</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le package <b>msgcat</b> fournit un ensemble de fonctions qui peuvent <20>tre utilis<69>es pour g<>rer des interfaces utilisateur multi-linguales. Les cha<68>nes de texte sont d<>finies dans un &quot;catalogue de messages&quot; qui est ind<6E>pendant de l'application, et qui peut <20>tre edit<69> ou localis<69> sans modifier le code source de l'application. Les nouvelles langues ou locales sont fournies en ajoutant un nouveau fichier au catalogue de messages. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'usage du catalogue de messages est optionnel pour quelconque application ou package, mais est encourag<61> si l'application ou package souhaite <20>tre pr<70>t pour les applications multi-langues.
</div><br>
<div><b>COMMANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>::msgcat::mc </b><i>src-string</i> ?<i>arg arg ...</i>?
</DT><DD>Renvoie une traduction de <i>src-string</i> en accord avec la locale de l'utilisateur courant. Si des arguments suppl<70>mentaire apr<70>s <i>src-string</i> sont donn<6E>s, la commande <A HREF="117.htm"><b>format</b></A> est utilis<69>e pour substituer les arguments suppl<70>mentaires dans la traduction de <i>src-string</i> <b>::msgcat::mc</b> recherchera les messages d<>finis dans le namespace courant pour une traduction de <i>src-string</i>; si aucun n'est trouv<75>, il recherchera dans le parent du namespace courant, et ainsi de suite jusqu'a ce qu'il atteigne le namespace global. Si aucune cha<68>ne de traduction n'existe, <b>::msgcat::mcunknown</b> est appel<65> et la cha<68>ne renvoy<6F>e par <b>::msgcat::mcunknown</b> est renvoy<6F>e.
<br><b>::msgcat::mc</b> est la fonction principale utilis<69>e pour localiser une application. Au lieu d'utiliser une cha<68>ne Anglaise directement, une application peut passer la cha<68>ne Anglaise au travers de <b>::msgcat::mc</b> et utiliser le r<>sultat. Si une application est <20>crite pour une seule langue de cette fa<66>on, il est facile d'ajouter un support pour des langues suppl<70>mentaires plus tard simplement en d<>finissant une nouvelle entr<74>e de catalogue de messages.
</DD>
<DT><br><b>::msgcat::mclocale </b>?<i>newLocale</i>?
</DT><DD>Cette fonction fixe locale <20> <i>newLocale</i> Si <i>newLocale</i> est omise, la locale courante est renvoy<6F>e, autrement la locale courante est fix<69>e <20> <i>newLocale</i>. La locale initiale est par d<>faut la locale sp<73>cifi<66>e dans l'environnement utilisateur. Voir <b>SPECIFICATIONS LOCALE ET SUBLOCALE </b>ci-dessous pour une description du format cha<68>ne locale.
</DD>
<DT><br><b>::msgcat::mcpreferences</b>
</DT><DD>Renvoie une liste ordonn<6E>e des locales pref<65>r<EFBFBD>es des utilisateurs, bas<61>e sur la sp<73>cification de langue de l'utilisateur. La liste est ordonn<6E>e de la preference la plus sp<73>cifique <20> la moins sp<73>cifique. Si l'utilisateur a sp<73>cifi<66> LANG=en_US_funky, cette fonction retournera &#123;en_US_funky en_US en}.
</DD>
<DT><br><b>::msgcat::mcload </b><i>dirname</i>
</DT><DD>Recherche dans le r<>pertoire sp<73>cifi<66> les fichiers qui correspondent au sp<73>cifications de langue renvoy<6F>es par <b>::msgcat::mcpreferences</b>. Chaque fichier trouv<75> est &quot;sourc<EFBFBD>&quot;. L'extension de fichier est &quot;.msg&quot;. Le nombre de fichiers message qui satisfont la sp<73>cification et ont <20>t<EFBFBD> charg<72>s est renvoy<6F>.</DD>
<DT><br><b>::msgcat::mcset </b><i>locale src-string </i>?<i>translate-string</i>?
</DT><DD>Fixe la traduction de <i>src-string</i> en <i>translate-string</i> dans la <i>locale</i> sp<73>cifi<66>e Si <i>translate-string</i> n'est pas sp<73>cifi<66>e, <i>src-string</i> est utilis<69> pour les deux La fonction retourne <i>translate-string</i>.
</DD>
<DT><br><b>::msgcat::mcunknown </b><i>locale src-string</i>
</DT><DD>Cette routine est appel<65>e par <b>::msgcat::mc</b> dans le cas o<> une traduction de <i>src-string</i> n'est pas d<>finie dans la locale courante L'action par d<>faut est de renvoyer <i>src-string</i> Cette fonction peut <20>tre red<65>finie par les applications, par exemple pour mettre dans un journal de message d'erreurs chaque cha<68>ne inconnue. La fonction<b>::msgcat::mcunknown</b> est appel<65>e dans le m<>me contexte de pile que l'appel de <b>::msgcat::mc</b> La valeur de retour de <b>::msgcat::mcunknown</b> est utilis<69>e comme la valeur de retour de l'appel de <b>::msgcat::mc</b>.
</DD>
</DL>
</div>
<br>
<div><b>SPECIFICATIONS LOCALE ET SUBLOCALE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La locale est sp<73>cifi<66>e par une cha<68>ne locale. La cha<68>ne locale consiste en un code de langue, un code optionnel de pays, et un code optionnel sp<73>cifique au syst<73>me, chacun s<>par<61>s par &quot;_&quot;. Les codes de pays et de langue sont sp<73>cifi<66> dans les standards ISO-639 et ISO-3166. Par exemple, la locale &quot;en&quot; sp<73>cifie Anglais et &quot;en_US&quot; sp<73>cifie Anglais U.S.. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La locale prend la valeur par d<>faut de <b>env(LANG)</b> <20> l'instant o<> le package <b>msgcat</b> est charg<72>. Si <b>env(LANG)</b> n'est pas d<>fini, alors la locale prend la valeur par d<>faut de &quot;C&quot;. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand une locale est sp<73>cifi<66>e par les utilisateurs, une recherche &quot;meilleure correspondance&quot; est effectu<74>e pendant la traduction de la cha<68>ne Par exemple, si un utilisateur sp<73>cifie en_UK_Funky, les locales &quot;en_UK_Funky&quot;, &quot;en_UK&quot;, et &quot;en&quot; sont recherch<63>es dans l'ordre jusqu'a ce qu'une cha<68>ne de traduction correspondante soit trouv<75>e Si aucune cha<68>ne traduction n'est disponible, alors <b>::msgcat::unknown</b> est appel<65>
</div><br>
<div><b>NAMESPACES ET CATALOGUES DE MESSAGES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les cha<68>nes stock<63>es dans le catalogue de messages sont stock<63>es relativement au namespace auquel elles ont <20>t<EFBFBD> ajout<75>es. Ceci permet <20> de multiple packages d'utiliser les m<>me cha<68>nes sans craindre de collisions avec d'autre packages. Cela permet aussi <20> la cha<68>ne source d'<27>tre plus courte et moins sujette aux fautes de frappes. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par exemple, l'ex<65>cution du code </div>
<div ALIGN="LEFT" style="margin-left: 102px;">mcset en hello &quot;hello from ::&quot;<br>
namespace eval foo &#123;mcset en hello &quot;hello from ::foo&quot;}<br>
puts &#91;mc hello]<br>
namespace eval foo &#123;puts &#91;mc hello]}</div>
<div ALIGN="LEFT" style="margin-left: 51px;">affichera </div>
<div ALIGN="LEFT" style="margin-left: 102px;">hello from ::<br>
hello from ::foo</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand il cherche la traduction d'un message, le catalogue de messages recherchera en premier dans le namespace courant, ensuite le parent du namespace courant, et ainsi de suite jusqu'a ce que le namespace global&nbsp; soit atteint Ceci permet aux namespaces enfants d'h<>riter les messages de leurs namespace parents. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par exemple, l'ex<65>cution du code </div>
<div ALIGN="LEFT" style="margin-left: 102px;">mcset en m1 &quot;:: message1&quot;<br>
mcset en m2 &quot;:: message2&quot;<br>
mcset en m3 &quot;:: message3&quot;<br>
namespace eval ::foo &#123;<br>
&nbsp;&nbsp;&nbsp; mcset en m2 &quot;::foo message2&quot;<br>
&nbsp;&nbsp;&nbsp; mcset en m3 &quot;::foo message3&quot;<br>
}<br>
namespace eval ::foo::bar &#123;<br>
&nbsp;&nbsp;&nbsp; mcset en m3 &quot;::foo::bar message3&quot;<br>
}<br>
puts &quot;&#91;mc m1]; &#91;mc m2]; &#91;mc m3]&quot;<br>
namespace eval ::foo &#123;puts &quot;&#91;mc m1]; &#91;mc m2]; &#91;mc m3]&quot;}<br>
namespace eval ::foo::bar &#123;puts &quot;&#91;mc m1]; &#91;mc m2]; &#91;mc m3]&quot;}</div>
<div ALIGN="LEFT" style="margin-left: 51px;">affichera</div>
<div ALIGN="LEFT" style="margin-left: 102px;">:: message1; :: message2; :: message3<br>
:: message1; ::foo message2; ::foo message3<br>
:: message1; ::foo message2; ::foo::bar message3</div>
<div ALIGN="LEFT" style="margin-left: 51px;">
</div><br>
<div><b>EMPLACEMENT ET FORMAT DES FICHIERS DE MESSAGE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers message peuvent <20>tre situ<74>s dans n'importe quel r<>pertoire, soumis aux conditions suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tous les fichiers message d'un package sont dans le m<>me r<>pertoire. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le nom de chemin du message est un sp<73>cificateur de locale suivi par &quot;.msg&quot; Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;es.msg&nbsp;&nbsp;&nbsp; -- spanish<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;en_UK.msg -- UK English</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le fichier contient une series d'appels <20> mcset, qui fixent les cha<68>nes de traduction n<>cessaires pour la langue. Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::msgcat::mcset es &quot;Free Beer!&quot; &quot;Cerveza Gracias!&quot;</div>
<div ALIGN="LEFT" style="margin-left: 51px;">
</div><br>
<div><b>PARAMETRAGE DES MESSAGES DANS LES PACKAGES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un package est install<6C> dans un sous r<>pertoire de&nbsp; <b>tcl_pkgPath</b> et charg<72> via <b>package </b><b>require</b>, les proc<6F>dures suivantes sont recommand<6E>es. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Durant l'installation du package, cr<63>er un sous r<>pertoire <b>msgs</b> sous votre r<>pertoire de package. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copiez vos fichiers *.msg dans ce r<>pertoire. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ajoutez les commandes suivantes <20> votre script d'initialisation de package: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# charge les fichiers de langue, stock<63>s dans le sous r<>pertoire msgs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::msgcat::mcload &#91;file join &#91;file dirname &#91;info script]] msgs]</div>
<br>
<div><b>CODES DE POSITION POUR LES COMMANDES FORMAT ET SCAN</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Il est possible qu'un message cha<68>ne utilis<69> comme argument <20> <A HREF="format.htm"><b>format</b></A> ait des param<61>tres d<>pendants de la position qui auraient besoin d'<27>tre repositionn<6E>s. Par exemple, il pourra <20>tre syntaxiquement d<>sirable de r<>arranger la structure de cette phrase <20> la traduction. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">format &quot;Nous produisons %d unit<69>s sur le site %s&quot; &#36;num &#36;city<br>
format &quot;Sur le site %s nous produisons %d unit<69>s&quot; &#36;city &#36;num</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Ceci peut <20>tre g<>r<EFBFBD> en utilisant les param<61>tres positionels: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">format &quot; Nous produisons %1&#92;&#36;d unit<69>s sur le site %2&#92;&#36;s&quot; &#36;num &#36;city<br>
format &quot; Sur le site %2&#92;&#36;s nous produisons %1&#92;&#36;d unit<69>s&quot; &#36;num &#36;city</div>
<div ALIGN="LEFT" style="margin-left: 51px;">De m<>me, les param<61>tres positionels peuvent <20>tre utilis<69>s avec <A HREF="scan.htm"><b>scan</b></A> pour extraire des valeurs <20> partir de cha<68>nes internationalis<69>es <br>
</div><br>
<div><b>CREDITS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le code du catalogue de messages a <20>t<EFBFBD> developp<70> par Mark Harrison
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="format.htm">format</A>(n), <A HREF="scan.htm">scan</A>(n), <A HREF="namespace.htm">namespace</A>(n), <A HREF="package.htm">package</A>(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="memory.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="namespace.htm"><b>Suivant</b></A></div>
</BODY></HTML>