[Struts2] Internacionalização / Localização! Manipulação de getLocale com getText

Olá pessoal,

Estou tendo muitas dificuldades para implementar internacionalização (I18n) em um projeto o qual estou trabalhando. Diferente do material que encontrei na web, minha Action sobreescreve o método getLocale. Essa sobrecarga carrega do banco de dados a localização do usuário logado, e retorna um objeto Locale correspondente a lingua dele. O problema é que, no jsp, usando struts:text, a localidade usada é a que vem do browser. Daí passo a usar o struts:property com o getText chamando minha chave contida no meu arquivo.properties… porém ele não obedece o getLocale! Em outra tentativa, a chave vem localizada, mas não formata moeda e data!

E agora?

JSP:

Vindo do Browser:<br /> <s:text name="pais"></s:text><br /> <s:text name="format.date"><s:param value="data"/></s:text><br /> <br /> <br /> Forçado pelo getLocale x getText:<br /> <s:property value="getText('pais')" /><br /> <s:property value="getText('format.date',{data})" /><br />

Action:

	public String execute() {
		return SUCCESS;
	}
	
	public Locale getLocale() {
		return new Locale("de_DE");
	}
	
	public Date getData() {
		return new Date();
	}

Cada properties localizado: (_de_DE, no caso)

pais=Alemanha
format.date = {0,date,dd.MM.yyyy}

Galera já descobri como fazer!

Eliminei a necessidade de reescrever o getLocale, e usei a seguinte linha…

ActionContext.getContext().setLocale(new Locale("pt", "BR", "marcos"));

A necessidade do ultimo parâmetro serve caso o usuário queira, digamos… um dialeto personalizado. Com isso é só usar struts:text e fazer os properties localizados.

Falou!