[RESOLVIDO]vRaptor - i18n mudar messages.properties atraves do interceptor
1 resposta
M
maaarkin
Bem, não sei se o tópico foi especifico, mais é o seguinte, já possuo minha internacionalização funcionando, e hoje para mudar a linguagem estou utilizando o seguinte:
problema é que:
1 - está na view, eu nao gosto disso.
2 - não sei como delegar essa responsabilidade para uma classe com o vraptor
e queria saber se nessa mudança vai ficar aparecendo alguma coisa diferente na url do tipo ?lingua=en se sim, tem como remover?
por exemplo, quero que fique minhaUrl/home/index estando em pt_BR ou en_US
bem pessoal, acabei criando um interceptor para fazer isso pra mim, mais nao está mudando. alguem tem alguma ideia do pq?
o idioma está chegando corretamente e tudo mais, mais nao modifica as keys, continuam iguais.
packagebr.com.rhunificado.interceptor;importjava.util.Locale;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.jsp.jstl.core.Config;importbr.com.caelum.vraptor.InterceptionException;importbr.com.caelum.vraptor.Intercepts;importbr.com.caelum.vraptor.Result;importbr.com.caelum.vraptor.core.InterceptorStack;importbr.com.caelum.vraptor.core.Localization;importbr.com.caelum.vraptor.interceptor.Interceptor;importbr.com.caelum.vraptor.ioc.RequestScoped;importbr.com.caelum.vraptor.resource.ResourceMethod;@Intercepts@RequestScopedpublicclassMudaIdiomaimplementsInterceptor{privatefinalHttpServletRequestrequest;privatefinalResultresult;privatefinalLocalizationloc;publicMudaIdioma(HttpServletRequestrequest,Resultresult,Localizationloc){this.request=request;this.result=result;this.loc=loc;}@Overridepublicbooleanaccepts(ResourceMethodarg0){// TODO Auto-generated method stubreturntrue;}@Overridepublicvoidintercept(InterceptorStackstack,ResourceMethodmethod,ObjectresourceInstance)throwsInterceptionException{if(request.getParameter("idioma")!=null){Stringlanguage=request.getParameter("idioma");//Locale locale = new Locale(language);Config.set(request.getSession(),Config.FMT_LOCALE,language);//setei diretamente o language ao invez do locale e funcionou.Config.set(request.getSession(),Config.FMT_FALLBACK_LOCALE,language);}System.out.println("Interceptando "+request.getRequestURI());stack.next(method,resourceInstance);}}