[ww2]: Problemas com Localization

Tenho uma action chamada SystemAction que implementa ActionSupport. No mesmo pacote tenho dois arquivos de properties:
SystemAction_en.properties
SystemAction_pt_BR.properties

No webwork.properties tenho a propriedade webwork.locale=pt_BR e mesmo assim o texto mostrado está sendo o do arquivo SystemAction_en.properties.
No meu template eu tenho:

			#if( $action.hasErrors() )
				#foreach( $error in $action.getErrors() )
				<p align="center">
					<font color="red">$error</font>
				</p>
				#end
			#end

Como podem perceber estou utilizando validation. O que pode estar errado?

Vc esta utilizando o getText dentro da sua action?

Não, não estou utilizando getText dentro da action. Mas não entendí a pergunta.
Só mais um detalhe: a action que está sendo executada é uma classe filha de SystemAction.

Não sei se tem algo haver, mas não consegui utilizar:

#if( $actionErrors.size() > 0 )
     ...
#end

A princípio achei que essa variável (actionErrors) não “valesse” para validações (achando que erros de actions e erros de validações fosse algo que recebesse tratamento diferenciado). Mas fui dar uma bisbilhotada no código (classes RequiredFieldValidator, FieldValidatorSupport, ValidatorSupport) e ví que os erros de validações são adicionados com ‘addActionError’. Então, não sei pq não funcionou.

Só pra atualizar, eu estava utilizando:

#foreach( $error in $action.getErrors() )

mas getErrors está deprecada, então estou utilizando:

#foreach( $error in $action.getFieldErrors() )

Resumindo, ainda não sei pq ele continua localizando a chave pelo arquivo SystemAction_en.properties sendo que meu locale está setado para pt_BR.

[quote=“maresp”]Não, não estou utilizando getText dentro da action. Mas não entendí a pergunta.
Só mais um detalhe: a action que está sendo executada é uma classe filha de SystemAction.[/quote]

O getText e resposavel por “pegar” sua chave definida nos arquivos de Locale e colocar o valor correspondente ao locale selecionado!

Costumo utizar assim na action:

//Assumindo que $error possua a chave da mensagem #foreach( $error in $action.getErrors() ) <p align="center"> <font color="red">$action.getText($error)</font> </p> #end

Opa … são diferenciados sim.

Existem 2 tipos de erros com o Webwork:

  1. Da action que você pode testar se existe chamando hasActionErrors e iteranto sobre o getActionErrors;
  2. Dos campos que você testa com hasFieldErrors e manipula com getFieldError (ou coisa assim).

A diferenca eh que os fieldErross estão ligados a um campo e as tags do WW usam pra colocar a mensagem diretamente no campo (e marca-lo como errorLabel) enquanto actionErrors são apenas uma lista.

Onde eu disse:

Costumo utizar assim na action:

Entenda:

Costumo utizar assim na VIEW: :oops: :oops: :oops:

Olá,

Quais as configurações locais do SO?

]['s

[quote=“fabgp2001”]Olá,

Quais as configurações locais do SO?

]['s[/quote]

Nao entendi o pq da curiosidade ?

[quote=“aborges”][quote=“fabgp2001”]Olá,

Quais as configurações locais do SO?

]['s[/quote]

Nao entendi o pq da curiosidade ?[/quote]

Não é curiosidade…é pq o WW pega a locale do usuario para aplicar no I18N. Simples.

]['s

Acho q vc nao leu direito o primeiro post dele:

Nao sou expert em WW, mas acho q isso resolve o locale.

Me corrija c eu estiver errado, certo ? :wink:

[quote=“aborges”]Acho q vc nao leu direito o primeiro post dele:

Nao sou expert em WW, mas acho q isso resolve o locale.

Me corrija c eu estiver errado, certo ? :wink:[/quote]

Me desculpa, mas eu li sim o primeiro post dele.

Segue.

[quote]Internacionalização

Esse recurso do Webwork torna mais fácil a tradução do site, podendo ser
utilizado para simples mensagens de erros até o conteúdo do site.

Para definir o idioma do usuário, o Webwork busca o locale da requisição
http.
Os arquivos com as traduções devem ter no mesmo nome da action +
.properties. [/quote]

]['s

Fiz o teste aq e era isto mesmo… :smiley:

Bem, to rodando no WinXP. A configuração do local está certa (Brasil).

Não teria muita lógica se fosse diferente. Se é para adequar o teu site a cada usuario que usamos I18N nada mais normal que buscar pela localização dele.

Estranho. Verifica a Locale o que o WW ta usando quando ele chama actions.

[quote]Resource bundles are searched in the following order:
ActionClass.properties
BaseClass.properties (all the way to Object.properties)
Interface.properties (every interface and sub-interface)
package.properties (every of every base class, all the way to java/lang/package.properties) [/quote]

O WW faz a busca ainda da seguinte maneira.

ActionClass_<LOCALE>.properties

Se ele não encontra o arquivo para a Locale do usuario ele vai pro arquivo default sem locale.

]['s

smota:
Tá certo… concordo, eles tem tratamento diferenciado mesmo. Fiz confusão pq minha action tb estava retornando ERROR.

aborges:
Não estou utilizando getText pq ao iterar sobre os erros o container já sabe o que ele precisa procurar através do arquivo MinhaAction-validation.xml, onde vc preenche o atributo key da tag message.

fabgp2001:
tudo bem que o webwork busca o locale da requisição http, mas não é para isso que serve o parâmetro webwork.locale do webwork.properties?

[quote=“maresp”]fabgp2001:
tudo bem que o webwork busca o locale da requisição http, mas não é para isso que serve o parâmetro webwork.locale do webwork.properties?[/quote]

Sim, serve para setar a Locale padrão, justamente por isso perguntei a tua Locale, se estivesse como en seria normal ele ta pegando este arquivo. Agora como tu disse que a tua locale ta como pt_BR ta estranho. Por isso pedi para ver a qual locale ele ta usando no request do http, tem como fazer isso?

]['s

Bem o problema mudou um pouco de figura.
Fiz um $action.getLocale() na página e saiu en_US. Menos mal, mas pq en_US se no webwork.properties tá pt_BR?

[quote=“maresp”]Bem o problema mudou um pouco de figura.
Fiz um $action.getLocale() na página e saiu en_US. Menos mal, mas pq en_US se no webwork.properties tá pt_BR?[/quote]

Era o que eu imaginava. Tu ja verificou se o tomcat (ou container que tu ta usando) ta achando o webwork.properties? Ou se não ta dando erro no carregar o arquivo??

]['s

Provavelmente seu browser é que está enviando … no firefox isso tá em TOOLS -> OPTIONS -> GENERAL -> LANGUAGES

Mesmo com SO em portuga o danado fica com o locale padrao para en_US e depois en … vc tem que adicionar na mao pt_BR e aproveita coloca no topo da sua lista.