JSP & Servlets - Internacionalização [Resolvido]

15 respostas
ccefetpb

criei um projeto web e adicionei internacionalização, no meu notebook o texto do meu site aparece em pt br, se eu acesso do servidor aparece em inglês (idioma do servidor).

O meu problema é que eu quero que o texto apareça de acordo com o pc do usuário, na verdade eu programei para que isso acontecesse, mas não está.

Eu capturo o idioma assim:

<%
 ResourceBundle rb = ResourceBundle.getBundle("labels", request.getLocale().getDefault());; 
%>

Mas não está funcionando, continua utilizando o idioma do computador onde está o servidor e não do cliente. O que está errado?

Agradecido.

15 Respostas

jyoshiriro

Olá,

amigo…

  1. Não precisa do “.getDefault()” após o “.getLocale()”

  2. Verifique se os browsers testados realmente estão usando o locale que acha que estão.

Boa sorte.

Abraços.

ccefetpb

Obrigado por responder. Eu já tentei assim. Do jeito que vc disse, fica sempre em inglês.

jyoshiriro

Já depurou somente a parte request.getLocale() para ver se aparece o locale real do cliente?

ccefetpb

Sim, se eu uso getLocale o idioma que aparece no debug é US (inglês). se eu uso getDefault o idioma que aparece é BR (PORTUGUÊS).

ccefetpb

O problema é que mesmo usando getDefault o texto no servidor só aparece em inglÊs.

:\

jyoshiriro

Então… você não tem como testar o que acontece no teu servidor?

E o “.getLocale()” é o correto. O “.getDefault()” busca não o locale que o cliente está de fato usando e sim o locale padrão do mesmo. Por exemplo: Se instalou o FF em português brasileiro mas foi lá nas configurações e pediu para as solicitações serem enviadas em ‘en’. O '.getLocale()" vai retornar ‘en’ mas o ‘.getDefault()’ retornará ‘pt_BR’.

E não está faltando nenhum arquivo de texto na aplicação no servidor que está dando esse “bug”?

ccefetpb

Não tenho como testar o que está acontecendo no servidor :.

mas se o getDefault na minha máquina exibe em pt br e o getLocale exibe em inglÊs eu esperaria o mesmo comportamento no servidor.

Só que o getDefault continua exibindo em inglês.

Não está faltando nenhum arquivo no properties, pois se fosse esse o caso nem renderizava a página.

jyoshiriro

Se quando você testa localmente o “getLocale()” tá retornando inglês é porque seu navegador está enviando a solicitação “em inglês”. Sebes como ver/configurar isso no navegador que está usando para testes?

ccefetpb

Não, não sei, mas vê só o que eu quero capturar é o idioma do navegador do cliente. Imagino, que 99% das pessoas não configura o idioma das requisições, mas seleciona o idioma do navegador de acordo com seu próprio.

Há outra forma de capturar essa informação?

jyoshiriro

Então, amigo.

Vai ver que, por algum motivo, o navegador que você está usando está configurado para enviar a requisição usando “en”, entendeu?

Tentou fazer o teste com outros navegadores pra ver se para todos mostra em inglês? Pediu pra pessoas de outros micros testarem?

A forma de capturar essa informação é somente essa. A “outra” é “POG”: passar uma parâmetro de requisição dizendo seu próprio idioma.

ccefetpb

Já cara, já pedi para muitos amigos testarem, em diferentes pcs, diferentes navegadores, diferentes SOs. Sinceramente, eu acho que está certo, mas não está funcionando…

jyoshiriro

Olá.

Amigo, criei um Servlet simples e joguei num servidor linux em inglês.

Acesse você mesmo e diga o que aparece:
http://avalihc.com.br/idioma/testar-idioma

O código do Servlet é:
public class TestarIdioma extends HttpServlet {
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Locale loc = request.getLocale();
		request.setAttribute("idioma", loc.toString());
		RequestDispatcher rd = request.getRequestDispatcher("resultado.jsp");
		rd.forward(request, response);
	}

}
O do JSP ("resultado.jsp") é só:
Seu idioma é *${idioma}*
jyoshiriro
Fiz uma pequena alteração no código do JSP:
Seu idioma é *${idioma}*.

<br>
Idioma do servidor: <%=java.util.Locale.getDefault()%>
ccefetpb

Cara, vou testar mais uma vez. Novamente muito obrigado.

ccefetpb

Cara, muito obrigado, deu certo. Você estava certo e eu estava errado. Parabéns mesmo. Tô muito feliz aqui. Muito obrigado pela ajuda.

Criado 22 de julho de 2012
Ultima resposta 23 de jul. de 2012
Respostas 15
Participantes 2