[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Default Locale com problema?  XML
Forum Index -> Comentários Gerais
Author Message
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

org.mentawai.i18n.LocaleManager.java:

[code]
public static Locale getDefaultLocale() {
if (locales.size() == 0) return DEFAULT_LOCALE;
return locales.get(0);
}
[code]


Porque o LocaleManager.getDefaultLocale() pega o locale 0 como default? Poque o 0 é o default?

Default não é o que eu setei no action usando:
this.setLocale(locale);

??

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


Default é o locale que o mentawai utiliza como default se ele não conseguir encontrar nenhum outro.

Por definição é o primeiro que vc seta com o Locale.addLocale

Se vc não chamou esse método então fica sendo o DEFAULT_LOCALE

Vc não deve setar manualmente o locale da action. O locale da action pode ser qualquer um, o que é diferente do default.

O Menta já se vira para setar o locale da action pra vc... Ligando o debug mode dá para ver quais os locales que ele está pegando...

Sergio Oliveira

bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

eu estou setando o locale na action porque eu quero que o site fique em um idioma diferente do idioma do browser...

ou seja, meu browser pode ser PT, mas que quer ver o site em IT...

pra fazer isso eu tenho que setar o locale como fiz, certo? funcionou para os arquivos de i18n do menta...

mas agora eu quero pegar esse locale que eu estou usando em outro lugar, alguma sugestão?

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


O Mentawai escolhe o locale pra vc. Vc não deve fazer isso, ou seja, setar na mão, pois o menta tem uma lógica pra fazer isso.

Vc deve usar:

Locale.addLocale(INGLES)
Locale.addLocale(PT)

Feito isso, não importa qual seja o locale do browser, o locale será ingles (default) ou pt.

Sergio Oliveira

bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline


Feito isso, não importa qual seja o locale do browser, o locale será ingles (default) ou pt.
 


pois é... mas como assim ingles ou pt? quem escolhe isso? não posso deixar automático
eu preciso definir exatamente qual locale a pessoa estará usando.

tipo o Locale.addLocale vai adicionar locales em um array, blz? (alias n sei q classe Locale é essa pq n eh a java.util.Locale e não tem uma classe Locale no menta, vc deve ter trocado o nome).

De q q forma, esse array ai não é o q eu preciso... Qual o locale está sendo usado entre esses que estão no array? Preciso setar isso, entendeu? N posso usar automático.

Por isso estou usando:
this.setLocale() dentro da action principal (e funciona)

--------
mas a dúvida é como pegar o locale corrente depois usando o LocaleManager ou algo parecido... (já que o LocaleManager.getDefaultLocale() n faz isso...)



n sei se consegui explicar, mas n posso usar esse detects automaticos


http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

No seu exemplo, acho que você estava querendo dizer isso:

Code:
 		LocaleManager.add(new Locale("pt", "BR"));
 		LocaleManager.add(new Locale("en", "US"));
 		LocaleManager.add(new Locale("it", "IT"));
 


mas isso eu já uso dentro do ApplicationManager...

a questão é que eu quero escolher qual desses Locale é o current...

e depois quero pegar isso de alguma maneira

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


Entendi.

Se o locale está no banco de dados por exemplo, e vc quer setar para a sessão do cara, vc faz assim dentro da action:

BaseLoginAction.setUserLocale(new Locale("pt"), session)

Feito isso aquela sessão terá o locale "pt" sempre... até expirar ou ser invalidada...

Se o locale não está na sessão, então ele pega pelo browser...

se o browser é japonês, então o locale será pt_BR (default)

se o browser é en_US ou en então o locale será en_US

e por aí vai...

acho que entendi sua dúvida, o que vc quer é setar na session, que automaticamente será setado na action pra vc pelo mentawai... vc está fazendo isso só que na mão... acho que tb pode...

Sergio Oliveira

bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

é, setar eu consegui...

o problema é que eu quero pega depois em um lugar que não é action... (dentro de uma taglib)...

ai tentei usar o LocaleManager.getDefaultLocale(), mas ele não é LocaleManager.getCurrenLocale() como eu imaginei... então ficou a dúvida

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


As taglibs do Mentawai possuem acesso a Action, daí vc pega mole com getLocale.

Se é uma tag lib sua, então vc tem acesso ao request, logo pode pegar a action assim:

req.getAttribute("action")

Com a action vc chama getLocale

Sergio Oliveira

bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

hmmmm.... vlw =)

Mas para o futuro acho que seria uma boa ter um LocaleManager.getCurrentLocale()...

Mas vlw d+

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team