Olá Pessoal,
Lá venho eu com mais “dúvidas crueis” com relação a internacionalização de uma aplicação web. Pois bem, vou mostrar como é que ficou desenhada a aplicação web após as intervenções anteriores aqui do pessoal do fórum…
Olha aí o meu arquivo de definição de template (Struts Tiles):
[code]
<tiles:insert attribute=“header” flush=“false” />
<div id="principal">
<div id="lingua">
<div id="lingua_content">
<tiles:insert attribute="lingua_content" flush="false" />
</div>
</div>
<div style="clear: both"></div>
<div id="cabecalho">
<div id="cabecalho_content">
<tiles:insert attribute="cabecalho_content" flush="false" />
</div>
</div>
<div style="clear: both"></div>[/code]
Este aí é só um pedaçinho de todo o arquivo, só para vocẽs terem uma “idéia” de como está “estruturada” a minha aplicação web.
Aí, eis o meu “header”:
[code]<f:view locale="#{lingua.locale}">
<meta … />
…
<style …
<script …
<f:loadBundle basename="dev.java.net. ... .message.core.Messages" var="msgs"/>
</f:view>[/code]
O faces-config.xml:
<application>
<view-handler>org.apache.myfaces.tomahawk.application.jsp.JspTilesViewHandlerImpl</view-handler>
<locale-config>
<default-locale>pt_BR</default-locale>
<supported-locale>en_US</supported-locale>
<supported-locale>es_ES</supported-locale>
<supported-locale>de_DE</supported-locale>
</locale-config>
<message-bundle>dev.java.net. ... .message.core.Messages</message-bundle>
</application>
<managed-bean>
<managed-bean-name>lingua</managed-bean-name>
<managed-bean-class>dev.java.net. ... .lingua.web.jsf.LinguaBackingBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Bom, o JSP:
<f:subview id="lingua_content">
<h:form id="form_lingua_content">
<t:commandLink id="portugues" action="#{lingua.portugues}" value="#{msgs.linguaPortuguese}" title="#{msgs.linguaPortugueseTitle}"/>
<t:commandLink id="espanhol" [b]action="#{lingua.espanhol}" [/b]value="#{msgs.linguaSpanish}" title="#{msgs.linguaSpanishTitle}"/>
<t:commandLink id="ingles" action="#{lingua.ingles}" value="#{msgs.linguaEnglish}" title="#{msgs.linguaEnglishTitle}"/>
<t:commandLink id="alemao" action="#{lingua.alemao}" value="#{msgs.linguaDeutch}" title="#{msgs.linguaDeutchTitle}"/>
</h:form>
</f:subview>
E o meu LinguaBackingBean:
[code]public class LinguaBackingBean{
private Locale locale= null;
/** Creates a new instance of LinguaBackingBean */
public LinguaBackingBean() {
locale= new Locale("pt", "BR");
}
public Locale getLocale(){
return this.locale;
}
public void setLocale(Locale locale){
this.locale= locale;
}
public String portugues(){
locale= new Locale("pt", "BR");
return "reload";
}
public String ingles(){
locale= new Locale("en", "US");
return "reload";
}[/code]
No meu faces-config.xml:
<navigation-rule>
<from-view-id>/*</from-view-id>
<navigation-case>
<from-outcome>reload</from-outcome>
<to-view-id>/index.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Ah!!! Os arquivos de properties:
- br.com.....message.core
--- Messages.properties
----- default language
----- pt_BR - Portuguese (Brazil)
----- es_ES - Spanish (Spain)
----- en_US - English (United States)[/code]
Bom... Agora o problema!!! Lá no meu arquivo "header.jsp" é feita a seguinte "chamada":
[code]<f:view locale="#{lingua.locale}">[/code]
Esta "chamada" é executada perfeitamente... Ele busca lá no meu BackingBean o Locale e, se eu mudo, por exemplo, no construtor da classe LinguaBackingBean o Locale que dever ser "instanciado" inicialmente, ele carrega beleza as [i]properties[/i].
Agora, no meu arquivo JSP "lingua" eu tenho o seguinte:
[code] <t:commandLink id="ingles" action="#{lingua.ingles}" value="#{msgs.linguaEnglish}" title="#{msgs.linguaEnglishTitle}"/>
E… O método “inglês” do meu BackingBean simplemente não é executado. Eu já fiz inumeras tentativas, do tipo, ao invés de ter uma subview ao redor do form ter uma view, ao invés de ter um commandLink, ter um commandButton, ao ínves de ter no meu BackingBean o método “ingles” ter o método “getIngles”, e não sei mais o que tudo! Simplemente, ao clicar no link, o método no BackingBean não é executado!
Não é gerado nenhum tipo de log para que eu pudesse analisar e… Acredito que é algo simples, mas não estou conseguindo identificar (talvez por estar já faz um tempão querendo fazer este “esquema” de internacionalização funcionar e…)
Bom, fico no aguarde de alguma “orientação”!
No mais, fico grato desde já pela atenção de todos!
Att,
E. Vinicius D. Mayer