<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://mediawiki.ajlsm.com/index.php?action=history&amp;feed=atom&amp;title=Cocoon_i18n</id>
	<title>Cocoon i18n - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.ajlsm.com/index.php?action=history&amp;feed=atom&amp;title=Cocoon_i18n"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.ajlsm.com/index.php?title=Cocoon_i18n&amp;action=history"/>
	<updated>2026-11-06T19:02:14Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://mediawiki.ajlsm.com/index.php?title=Cocoon_i18n&amp;diff=1755&amp;oldid=prev</id>
		<title>Groche le 24 avril 2013 à 08:58</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.ajlsm.com/index.php?title=Cocoon_i18n&amp;diff=1755&amp;oldid=prev"/>
		<updated>2013-04-24T08:58:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 24 avril 2013 à 08:58&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l131&quot;&gt;Ligne 131 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 131 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references/&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references/&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[category:How To]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Groche</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.ajlsm.com/index.php?title=Cocoon_i18n&amp;diff=1743&amp;oldid=prev</id>
		<title>Groche : Page créée avec « == Utiliser les traductions ==  On utilise la balise {{tag|i18n:text}} pour insérer une chaîne à traduire. Une chaîne traduite est constituée de : # une chaîne, qui ... »</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.ajlsm.com/index.php?title=Cocoon_i18n&amp;diff=1743&amp;oldid=prev"/>
		<updated>2013-04-24T08:27:17Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « == Utiliser les traductions ==  On utilise la balise {{tag|i18n:text}} pour insérer une chaîne à traduire. Une chaîne traduite est constituée de : # une chaîne, qui ... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Utiliser les traductions ==&lt;br /&gt;
&lt;br /&gt;
On utilise la balise {{tag|i18n:text}} pour insérer une chaîne à traduire. Une chaîne traduite est constituée de :&lt;br /&gt;
# une chaîne, qui sera affichée ;&lt;br /&gt;
# une clé ({{attr|key}}), qui identifie de façon unique la chaîne que l&amp;#039;on souhaite affichée ;&lt;br /&gt;
# un catalogue ({{attr|catalogue}}), qui indique où l&amp;#039;on va chercher la clé. Si cet attribut n&amp;#039;est pas présent, on cherchera la clé dans le catalogue défini par défaut (cf. {{path|{{app}}/catalogues-i18n.xmap}}).&lt;br /&gt;
&lt;br /&gt;
=== Définition d&amp;#039;une traduction ===&lt;br /&gt;
&lt;br /&gt;
Dans notre catalogue, on ajouter un élément {{tag|message}} pour chaque chaîne :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;message key=&amp;quot;edit.menu.monModule.intro&amp;quot;&amp;gt;chaine affiché si tout marche correctement.&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En indiquant à chaque fois :&lt;br /&gt;
* la clé : {{attr|key}} ;&lt;br /&gt;
* le contenu de la chaîne à afficher.&lt;br /&gt;
&lt;br /&gt;
=== Utilisation d&amp;#039;une traduction ===&lt;br /&gt;
&lt;br /&gt;
== L&amp;#039;espace de nom {{var|i18n}}  ==&lt;br /&gt;
&lt;br /&gt;
Dans la feuille XSL générant notre fichier de sortie, on ajoutera au moins le espace de nom ({{attr|xmlns}}) pour l&amp;#039;{{var|i18n}} :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot;&lt;br /&gt;
  xmlns:i18n=&amp;quot;http://apache.org/cocoon/i18n/2.1&amp;quot;&lt;br /&gt;
  exclude-result-prefixes=&amp;quot;i18n&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Affichage : {{tag|i18n:text}} ==&lt;br /&gt;
&lt;br /&gt;
Puis on insérera notre chaîne de la façon suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;i18n:text catalogue=&amp;quot;module-monModule&amp;quot; key=&amp;quot;edit.menu.monModule.intro&amp;quot;&amp;gt;&lt;br /&gt;
  chaîne affichée si le catalogue ou la clé pose problème.&lt;br /&gt;
&amp;lt;/i18n:text&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En précisant bien :&lt;br /&gt;
* la clé : {{attr|key}} ;&lt;br /&gt;
* le catalogue : {{attr|catalogue}}, si ce n&amp;#039;est pas celui par défault ;&lt;br /&gt;
* un contenu de secours si la traduction souhaitée manque.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contenu dynamique avec {{tag|i18n:translate}} ==&lt;br /&gt;
&lt;br /&gt;
Cocoon permet l&amp;#039;utilisation de &amp;#039;&amp;#039;placeholder&amp;#039;&amp;#039; pouvant être dynamiquement substituer par des variables. Ceci est possible avec l&amp;#039;élément {{tag|i18n:translate}}.&lt;br /&gt;
&lt;br /&gt;
Il faudra appeler la chaîne dynamique de la façon suivante &lt;br /&gt;
:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;i18n:translate&amp;gt;&lt;br /&gt;
	&amp;lt;i18n:text catalogue=&amp;quot;monCatalogue&amp;quot; key=&amp;quot;maCleI18n&amp;quot; &amp;gt;monFallback&amp;lt;/i18n:text&amp;gt;&lt;br /&gt;
	&amp;lt;i18n:param&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$monParametre&amp;quot;/&amp;gt;&amp;lt;/i18n:param&amp;gt;&lt;br /&gt;
&amp;lt;/i18n:translate&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et définir son contenu avec indiquant le numéro du paramètre en crochets {{value|{#&amp;amp;#125;}} comme suit :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;message key=&amp;quot;maCleI18n&amp;quot;&amp;gt;blabla bla &amp;lt;span class=&amp;quot;maClass&amp;quot;&amp;gt; ({0})&amp;lt;/span&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{important|La substitution ne marche pas quand le &amp;#039;&amp;#039;placeholder&amp;#039;&amp;#039; est dans un attribut&amp;lt;ref&amp;gt;[https://issues.apache.org/jira/browse/COCOON-2057 ParamSaxBuffer doesn&amp;#039;t substitute params within attribute values]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;message key=&amp;quot;maCleI18n&amp;quot;&amp;gt;blabla bla &amp;lt;href=&amp;quot;{0}/wrong.html&amp;quot; &amp;gt; ({0})&amp;lt;/span&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On se retrouvera donc avec {{value|{#&amp;amp;#125;}} dans le document final et non la chaîne attendue}}&lt;br /&gt;
&lt;br /&gt;
== Ajouter un catalogue ==&lt;br /&gt;
&lt;br /&gt;
=== Catalogue des traductions ===&lt;br /&gt;
&lt;br /&gt;
On commence par créer un nouveau fichier aussi appelé &amp;#039;&amp;#039;catalogue&amp;#039;&amp;#039;, dans lequel on définira les clés et les chaînes associées. On place généralement les fichiers de traduction dans {{path|{{app}}/theme/i18n/local/}}. Par exemple on créera le fichier {{path|{{app}}/theme/i18n/local/module-monModule.xml}} avec le contenu minimum suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;catalogue xmlns:xhtml=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;message key=&amp;quot;monModule.maCle&amp;quot;&amp;gt;La chaine à afficher&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
&amp;lt;/catalogue&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Déclarer le catalogue à l&amp;#039;application ===&lt;br /&gt;
&lt;br /&gt;
Ensuite, il faut déclarer à l&amp;#039;application la présence de notre nouveau catalogue, de façon à pouvoir trouver les traductions de nos clés. On surchargera le fichier {{path|{{app}}/catalogues-i18n.xmap}} de façon à indiquer à l&amp;#039;application le chemin vers les nouveaux fichiers de traductions.&lt;br /&gt;
&lt;br /&gt;
==== Catalogues et transformeur ====&lt;br /&gt;
&lt;br /&gt;
Le catalogue que vous rajouter doit être placer dans le {{tag|map:transformer}} dont l&amp;#039;attribut {{attr|name}} correspond à celui que vous appeler dans votre pipeline.&lt;br /&gt;
Ci-dessous un pipeline faisant appel au transformateur {{value|prefixI18n-normal}} :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;map:act type=&amp;quot;locale&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;map:transform type=&amp;quot;prefixI18n-normal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;map:parameter name=&amp;quot;locale&amp;quot; value=&amp;quot;{locale}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/map:transform&amp;gt;&lt;br /&gt;
&amp;lt;/map:act&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On déclarera donc notre catalogue dans le transformateur {{value|prefixI18n-normal}} du fichier {{path|{{app}}/catalogues-i18n.xmap}} :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;map:transformer name=&amp;quot;prefixI18n-normal&amp;quot; logger=&amp;quot;sitemap.transformer.prefixI18n&amp;quot; src=&amp;quot;org.pleade.transformation.PrefixI18nTransformer&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/map:transformer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ajout du catalogue ====&lt;br /&gt;
&lt;br /&gt;
Une fois le bon tranformateur trouvé, on rajouter notre catalogue de la façon suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;!-- Catalogue spécifique au module monModule --&amp;gt;&lt;br /&gt;
&amp;lt;catalogue id=&amp;quot;module-monModule&amp;quot; name=&amp;quot;module-monModule&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;location&amp;gt;${pleade.theme-dir}/i18n/local&amp;lt;/location&amp;gt;&lt;br /&gt;
  &amp;lt;location&amp;gt;${pleade.theme-dir}/i18n&amp;lt;/location&amp;gt;&lt;br /&gt;
&amp;lt;/catalogue&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voir aussi == &lt;br /&gt;
&lt;br /&gt;
* [https://cocoon.apache.org/2.1/userdocs/i18nTransformer.html I18n Transformer] (doc officiel)&lt;br /&gt;
* [https://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/transformation/I18nTransformer.html Class I18nTransformer] (spécification Java)&lt;br /&gt;
&lt;br /&gt;
== Références == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:How To]]&lt;/div&gt;</summary>
		<author><name>Groche</name></author>
	</entry>
</feed>