cancel
Showing results for 
Search instead for 
Did you mean: 

Modèle de présentation FTL en fonction de la langue

damienmorvan
Champ in-the-making
Champ in-the-making
Bonjour à tous,

j'ai un problème avec un template FTL qui doit afficher un fichier HTML en fonction de la langue de l'utilisateur.

Ma configuration
Alfresco Enterprise 3.1.2 (390)
JDK 1.6.0_15
Serveur Linux

Pas à pas
J'ai créé un modèle d'espace dans Data Dictionnary. Dans ce dernier, j'appelle un template FTL qui affiche un fichier readme_fr.html situé dans un autre répertoire :

<#– Displays the contents of readme.html and/or the evaluated readme.ftl if they exist in the current space. –>

<#assign filename = "readme"/>
<#assign htmlExt = "html"/>
<#assign suffix = .lang />
<#assign htmlFilename = "${filename}_${suffix}.${htmlExt}"/>
<#assign messageError="File ${htmlFilename} does not exist! 2"/>

${companyhome.nodeByReference["workspace://SpacesStore/8d537a41-14a1-4ce8-b528-6746b38c9f05"].content}
Cela fonctionne bien. Désormais, je souhaite appeler un fichier HTML en fonction de la langue sélectionnée par l'utilisateur lors de sa connexion (Anglais ou Français). J'ai donc modifié le FTL :


<#– Displays the contents of readme.html and/or the evaluated readme.ftl if they exist in the current space. –>

<#assign filename = "readme"/>
<#assign htmlExt = "html"/>
<#assign suffix = .lang />
<#assign htmlFilename = "${filename}_${suffix}.${htmlExt}"/>
<#assign messageError="File ${htmlFilename} does not exist! 2"/>

<#if suffix=="fr">
${companyhome.nodeByReference["workspace://SpacesStore/8d537a41-14a1-4ce8-b528-6746b38c9f05"].content}
<#else>
${companyhome.nodeByReference["workspace://SpacesStore/ea516be8-adf1-426b-a5bd-d9ba0452dcf0"].content}
</#if>
Problème
Je n'arrive pas à récupérer la langue utilisé et mon test avec le if est toujours égal à "fr". J'imagine ne pas utiliser la bonne méthode. J'ai lu le Template Cook Book et le guide Freemarker mais je n'ai pas trouvé l'information.

Merci par avance pour vos réponses,

D.Morvan
4 REPLIES 4

rguinot
Confirmed Champ
Confirmed Champ
Je ne pense pas que vous soyez parti sur la bonne piste. Il vaut mieux créer des resource bundles / fichier properties pour chaque langue concernée, et utiliser la fonction freemarker

message(String) - will return the I18N message string (resolved for current user Locale setting) for the specified String message ID.

pour afficher le message dans la locale courante.

damienmorvan
Champ in-the-making
Champ in-the-making
Merci pour votre réponse.

Je dispose de deux fichiers HTML, un en français et l'autre en anglais.

Si j'ai compris, il faut mieux créer deux templates FTL ?

rguinot
Confirmed Champ
Confirmed Champ
je dirais plutot 1 FTL et 2 fichiers properties. les properties s'insérant dans le code html au besoin, en fonction de la locale.

damienmorvan
Champ in-the-making
Champ in-the-making
Bonjour,

je n'ai donc rien à ajouter dans mon FTL mais par contre je dois modifier mon HTML pour insérer des properties ?

A quoi ressemble les properties ? Où les insérer ? Il y a t-il de la doc sur le sujet ?

Merci par avance,

D.Morvan