Forum Lutèce

teamnet_hfo
 5  924
5

Site multilingues

Site multilingues

Bonjour,

je réalise actuelllemnt un site de présentation en version multilingues. Il n'y a pour le moment que 2 langues de proposées mais ensuite d'autres langues doivent pouvoir être ajouté facilement. Je souhaite que l'utilisateur puisse sélectionner sa langue (je ne veux pas que le site récupère la langue de l'ordinateur ou du navigateur).
Dernière règle, le français doit être affiché en langue par défaut.

Je remarque dans le code du coeur de lutece que c'est l'anglais qui est par défaut
// if language is english use a special locale to force using default
// bundle instead of the bundle of default locale.
if ( locale.getLanguage( ).equals( Locale.ENGLISH.getLanguage( ) ) )
{
locale = LOCALE_DEFAULT;
}
Ensuite j'ai regardé les fichier de message.properties, donc le fichier par défaut est en anglais, avec l'extenstion fr en français mais j'essaye d'ajouter une extension 'it' et a ce moment la je n'affiche qu'un message d'erreur. Il ne trouve plus mes libellés paramétrés dans mes fichiers properties (testé ensuite avec l'extension 'es' même problème) Défaut- OK FR- OK IT- NOK ES- NOK Pour le changement de la langue et la récupération de cette dernière, j'utilise ces méthodes
Locale locale = new Locale(''FR''); // exemple avec FR
LocaleService.setUserSelectedLocale(request, locale)
LocaleService.getUserSelectedLocale(request)
Cette donnée est passé en paramètre lors de la création des templates, comme ceci
HtmlTemplate template = AppTemplateService.getTemplate(TEMPLATE_PAGE, LocaleService.getUserSelectedLocale(request), model);
Avez vous des piste pour que le multilingues puisse prendre en compte différent langue et mettre le français en langue par défaut. En vous remerciant d'avance.

JGO
Bonjour, Vous souhaitez utiliser le multi-langue côté Front Office ? Quelles sont les messages d'erreurs rencontrés lors de l'utilisation des langues it et es ? Y-a-t'il des messages dans les logs ? La locale par défaut peut être modifiée via la méthode Locale.setDefault(Locale);

 

teamnet_hfo
Effectivement je n'avais pas précisé. Le multi-langue n'est que pour le Front Office. Le Back Office sera en Français seulement. Lorsque je change de langue et que je suis redirigé sur la page voici les messages d'erreurs: fr.paris.lutece.portal.service.util.AppException: MVC Error dispaching view and action Initial error print stack : java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at fr.paris.lutece.portal.util.mvc.xpage.MVCApplication.processController(MVCApplication.java:154) at fr.paris.lutece.portal.util.mvc.xpage.MVCApplication.getPage(MVCApplication.java:110) at fr.paris.lutece.portal.service.content.XPageAppService.getPage(XPageAppService.java:241) at fr.paris.lutece.portal.web.PortalJspBean.getContent(PortalJspBean.java:198) at fr.paris.lutece.portal.web.PortalJspBean.getContent(PortalJspBean.java:139) at org.apache.jsp.jsp.site.Portal_jsp._jspService(Portal_jsp.java:98) [...] Et ensuite: Caused by: java.lang.RuntimeException: Expression textAccueil is undefined on line 22, column 27 in skin/plugins/mysite/accueil.html. at fr.paris.lutece.portal.service.template.AbstractFreeMarkerTemplateService.processTemplate(AbstractFreeMarkerTemplateService.java:289) at fr.paris.lutece.portal.service.template.AbstractFreeMarkerTemplateService.loadTemplate(AbstractFreeMarkerTemplateService.java:172) at fr.paris.lutece.portal.service.template.AppTemplateService.loadTemplate(AppTemplateService.java:236) at fr.paris.lutece.portal.service.template.AppTemplateService.getTemplate(AppTemplateService.java:198) at fr.paris.lutece.portal.service.template.AppTemplateService.getTemplate(AppTemplateService.java:177) at fr.paris.lutece.plugins.mysite.web.pages.Accueil.viewHome(Accueil.java:38) Merci pour votre réponse rapide et pour cette information que je vais inclure dans mon site.

 

teamnet_hfo
Le code Locale.setDefault(Locale); a bien mis le français par défaut. +1 Il ne reste que le problème d'affichage d'une autre langue que le français ou l'anglais (dans mes tests, l'italien: IT)

 

 

teamnet_hfo
Le problème est résolu. Certains textes sont enregistré dans les fichier properties mais d'autres sont paramétrables depuis le backoffice. Il a été décidé d'enregistrer ces derniers dans la base de données avec un identifiant sur la langue. Et pour mes tests, je n'avais pas ajouté le texte en accueil avec l'identifiant 'it' Merci pour votre dernier message qui m'a ouvert les yeux sur mon erreur :)