You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by Yves Zoundi <yv...@bibl.ulaval.ca> on 2006/07/19 16:02:10 UTC

Gestion des paramètres linguistiques dans la session

Bonjour à tous et à toutes.

    Je travaille sur un projet impliquant Apache Cocoon et j'éprouve des 
difficultés à afficher les pages dans la langue de l'usager.
    Je devrais être en mesure d'enregistrer les préférences 
linguistiques de l'usager idéalement dans la session et  les changements 
de langue doivent être reflétés dans toutes les pages du site Web. 
J'utilise actuellement le transformeur /i18n/ et l'action /LocaleAction./

    Cependant un problème se pose lorsque j'utilise des pipeline de type 
/caching./ et je ne trouve aucune solution à cela depuis environ une 
semaine.  J'ai absolument besoin du cache.  Il semble que la langue ne 
soit pas une clé du cache de Cocoon.

    J'ai utilisé comme on me l 'a suggéré le générateur de statut de 
Cocoon /StatusGenerator/ pour avoir un aperçu des clés de Apache Cocoon 
pour la gestion du cache. Il semble que Cocoon ne stocke pas dans le 
cache des informations en fonction des paramètres linguistiques.  Je 
constate que les dictionnaires sont bel et bien dans le cache ainsi que 
les pages avec l'information sur la langue sous la forme 
(http://url_langue ).

    Au niveau de l'action LocaleAction, j'ai pris le temps de lire en 
détail la documentation pour m'assurer qu'il n'y a pas d'erreurs à ce 
niveau.

Voici un extrait de mon code actuel :
..
<map:transformer name="i18n"
src="org.apache.cocoon.transformation.I18nTransformer">
     <catalogues default="default">
       <catalogue id="default" name="messages"
location="translations/default"/>
     </catalogues>
     <untranslated-text>untranslated</untranslated-text>
     <cache-at-startup>true</cache-at-startup>
 </map:transformer>
...
<map:action name="locale" src="org.apache.cocoon.acting.LocaleAction">
     <locale-attribute>locale</locale-attribute>
     <use-locale>false</use-locale>
     <default-locale language="fr" country="CA"/>
     <store-in-request>true</store-in-request>
     <create-session>true</create-session>
     <store-in-session>true</store-in-session>
     <store-in-cookie>false</store-in-cookie>
   </map:action>
</map:actions>
...

<map:pipeline type="caching">

<map:act type = "locale">
    <!-- welcome page -->
    <map:match pattern="">
      <map:generate src="welcome.xml"/>
      <map:transform src="welcome.xslt">
        <map:parameter name="contextPath" value="{request:contextPath}"/>
      </map:transform>
   <map:transform type = "i18n">
      <map:parameter name = "locale" value = "{session-attr:locale}"/>
   </map:transform>
      <map:serialize type="xhtml"/>
    </map:match>
</map:act>
...
=================================================================

/Fichier sitemap.xmap dans le répertoire/ _test_

...
<map:action name="locale" src="org.apache.cocoon.acting.LocaleAction">
     <locale-attribute>locale</locale-attribute>
     <use-locale>false</use-locale>
     <default-locale language="fr" country="CA"/>
     <store-in-request>true</store-in-request>
     <create-session>true</create-session>
     <store-in-session>true</store-in-session>
     <store-in-cookie>false</store-in-cookie>
   </map:action>
</map:actions>
...
<map:transformer name="i18n"
src="org.apache.cocoon.transformation.I18nTransformer">
     <catalogues default="default">
       <catalogue id="default" name="messages"
location="../translations/default"/>
     </catalogues>
     <untranslated-text>untranslated</untranslated-text>
     <cache-at-startup>true</cache-at-startup>
 </map:transformer>
...
<map:act type = "locale">
    <!-- welcome page -->
    <map:match pattern="">
   <map:generate src="test.html"/>    
   <map:transform type = "i18n">
      <map:parameter name = "locale" value = "{session-attr:locale}"/>
   </map:transform>
      <map:serialize type="html"/>
    </map:match>
</map:act>
...

Merci pour votre aide.

Yves Zoundi

Re: Gestion des paramètres linguistiques dans la session

Posted by Jean-Baptiste Quenot <jb...@apache.org>.
* Yves Zoundi:

>    J'avais essayé cette solution sans succès.  Je suis passé de /{locale}/ à /{../locale}/

Oui en effet c'est {../locale} car on est imbriqué dans un
<map:match>
-- 
     Jean-Baptiste Quenot
aka  John Banana Qwerty
http://caraldi.com/jbq/

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Re: Gestion des paramètres linguistiques dans la session

Posted by Bertrand Delacretaz <bd...@apache.org>.
On 7/19/06, Yves Zoundi <yv...@bibl.ulaval.ca> wrote:

>...L'action LocaleAction me permettait surtout d'injecter
> l'information sur la langue dans le transformeur i18n dans tous les
> map:match du fichier de configuration de Apache Cocoon  sitemap.xmap. Je
> me disais que cela suffirait pour aussi stocker l'information dans la
> session de Apache Cocoon...

En théorie ça devrait, mais LocaleAction essaie d'être "intelligente"
et peut-être que cela joue des tours. Il faudrait voir au debugger
pour être bien sûr de ce qui se passe.

-Bertrand

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Gestion des paramètres linguistiques dans la session

Posted by Yves Zoundi <yv...@bibl.ulaval.ca>.
Bonjour,

    Je vais essayer d'utiliser le flow script au lieu de javascript pur 
et dur. Cela me semble l'ultime solution du moment.
        L'action LocaleAction me permettait surtout d'injecter 
l'information sur la langue dans le transformeur i18n dans tous les 
map:match du fichier de configuration de Apache Cocoon  sitemap.xmap. Je 
me disais que cela suffirait pour aussi stocker l'information dans la 
session de Apache Cocoon.


Merci encore.

Bertrand Delacretaz a écrit :
> On 7/19/06, Yves Zoundi <yv...@bibl.ulaval.ca> wrote:
>
>> ...Mais la langue est changée
>> lorsqu' avec du code javascript, je change la langue ou que j'ajoute
>> manuellement à l'url /?locale=langue./...
>
> As-tu essayé en séparant complètement les deux problèmes? Je me
> demande s'il n'y a pas une interaction bizarre entre la LocaleAction
> et la session, pour tester j'essaierai de:
>
> 1) Créer un map:match qui stocke la Locale dans la session, sans
> utiliser LocaleAction, mais avec flowscript ou autre.
>
> 2) Dans un autre matcher, distinct, utiliser la valeur de la session
> pour changer de langue, avec {session-attr:locale} comme tu le faisais
>
> 3) vérifier que 2) est bien mis en cache, et que la langue change si
> on utilise 1) pour le faire (éventuellement avec un autre browser pour
> avoir deux sessions distinctes)
>
> Tu pourrais ainsi vérifier que les deux mécanismes "sélection de
> Locale" et "mise en cache des pages localisées" fonctionnent avant de
> les mettre ensemble.
>
> Ou même travailler comme ci-dessus, sans LocaleAction puisque
> apparemment tu veux sélectionner la Locale avec un menu ou une config.
> LocaleAction est surtout utile pour essayer de trouver la meilleure
> Locale, mais ne sert pas à grand-chose s'il s'agit juste d'un
> paramètre sélectionné manuellement par l'utilisateur.
>
> -Bertrand
>
> ---------------------------------------------------------------------
> Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
> Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
> Autres commandes : mailto:users-fr-help@cocoon.apache.org
>
>


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Re: Re:Gestion des paramètres linguistiques dans la session

Posted by Bertrand Delacretaz <bd...@apache.org>.
On 7/19/06, Yves Zoundi <yv...@bibl.ulaval.ca> wrote:

> ...Mais la langue est changée
> lorsqu' avec du code javascript, je change la langue ou que j'ajoute
> manuellement à l'url /?locale=langue./...

As-tu essayé en séparant complètement les deux problèmes? Je me
demande s'il n'y a pas une interaction bizarre entre la LocaleAction
et la session, pour tester j'essaierai de:

1) Créer un map:match qui stocke la Locale dans la session, sans
utiliser LocaleAction, mais avec flowscript ou autre.

2) Dans un autre matcher, distinct, utiliser la valeur de la session
pour changer de langue, avec {session-attr:locale} comme tu le faisais

3) vérifier que 2) est bien mis en cache, et que la langue change si
on utilise 1) pour le faire (éventuellement avec un autre browser pour
avoir deux sessions distinctes)

Tu pourrais ainsi vérifier que les deux mécanismes "sélection de
Locale" et "mise en cache des pages localisées" fonctionnent avant de
les mettre ensemble.

Ou même travailler comme ci-dessus, sans LocaleAction puisque
apparemment tu veux sélectionner la Locale avec un menu ou une config.
LocaleAction est surtout utile pour essayer de trouver la meilleure
Locale, mais ne sert pas à grand-chose s'il s'agit juste d'un
paramètre sélectionné manuellement par l'utilisateur.

-Bertrand

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Re:Gestion des paramètres linguistiques dans la session

Posted by Yves Zoundi <yv...@bibl.ulaval.ca>.
    L'utilisation du paramètre {locale} ne fonctionne pas du tout. Par 
contre, en utilisant {../locale}, cela ne fonctionne qu'à moitié. Cocoon 
ignore totalement les paramètres de session. Mais la langue est changée 
lorsqu' avec du code javascript, je change la langue ou que j'ajoute 
manuellement à l'url /?locale=langue./

Merci pour votre aide.

Yves Zoundi a écrit :
> Merci,
>    J'avais essayé cette solution sans succès.  Je suis passé de 
> /{locale}/ à /{../locale}/ puis ensuite j'ai essayé 
> /session-atrr:locale./
>    Je vais essayer de nouveau et je vous tiens au courant en cas de 
> succès ou d'une autre défaite. Mais je ne perd pas espoir que cela va 
> se régler et que je pourrais boucler le projet avec Apache Cocoon .  
> A+
>
> Jean-Baptiste Quenot a écrit :
>> * Yves Zoundi:
>>  
>>> <map:act type = "locale">
>>>    <!-- welcome page -->
>>>    <map:match pattern="">
>>>      <map:generate src="welcome.xml"/>
>>>      <map:transform src="welcome.xslt">
>>>        <map:parameter name="contextPath" 
>>> value="{request:contextPath}"/>
>>>      </map:transform>
>>>   <map:transform type = "i18n">
>>>      <map:parameter name = "locale" value = "{session-attr:locale}"/>
>>>     
>>                                                ^^^^^^^^^^^^^^^^^^^^^
>>
>> A remplacer par:
>>
>>  
>>>      <map:parameter name = "locale" value = "{locale}"/>
>>>     
>>
>> Attention, les expressions entre {} sont évaluées avant que le
>> <map:act> soit exécuté!
>>   
>
>


Re: Gestion des paramètres linguistiques dans la session

Posted by Yves Zoundi <yv...@bibl.ulaval.ca>.
Merci, 

    J'avais essayé cette solution sans succès.  Je suis passé de 
/{locale}/ à /{../locale}/ puis ensuite j'ai essayé /session-atrr:locale./
    Je vais essayer de nouveau et je vous tiens au courant en cas de 
succès ou d'une autre défaite. Mais je ne perd pas espoir que cela va se 
régler et que je pourrais boucler le projet avec Apache Cocoon .   

A+

Jean-Baptiste Quenot a écrit :
> * Yves Zoundi:
>   
>> <map:act type = "locale">
>>    <!-- welcome page -->
>>    <map:match pattern="">
>>      <map:generate src="welcome.xml"/>
>>      <map:transform src="welcome.xslt">
>>        <map:parameter name="contextPath" value="{request:contextPath}"/>
>>      </map:transform>
>>   <map:transform type = "i18n">
>>      <map:parameter name = "locale" value = "{session-attr:locale}"/>
>>     
>                                                ^^^^^^^^^^^^^^^^^^^^^
>
> A remplacer par:
>
>   
>>      <map:parameter name = "locale" value = "{locale}"/>
>>     
>
> Attention, les expressions entre {} sont évaluées avant que le
> <map:act> soit exécuté!
>   


Re: Gestion des paramètres linguistiques dans la session

Posted by Jean-Baptiste Quenot <jb...@apache.org>.
* Yves Zoundi:
> <map:act type = "locale">
>    <!-- welcome page -->
>    <map:match pattern="">
>      <map:generate src="welcome.xml"/>
>      <map:transform src="welcome.xslt">
>        <map:parameter name="contextPath" value="{request:contextPath}"/>
>      </map:transform>
>   <map:transform type = "i18n">
>      <map:parameter name = "locale" value = "{session-attr:locale}"/>
                                               ^^^^^^^^^^^^^^^^^^^^^

A remplacer par:

>      <map:parameter name = "locale" value = "{locale}"/>

Attention, les expressions entre {} sont évaluées avant que le
<map:act> soit exécuté!
-- 
     Jean-Baptiste Quenot
aka  John Banana Qwerty
http://caraldi.com/jbq/

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org