JSP & Servlets - Internacionalização [Resolvido]

15 respostas
C

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

J

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.

C

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

J

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

C

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).

C

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

:\

J

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”?

C

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.

J

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?

C

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?

J

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.

C

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…

J

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}*
J
Fiz uma pequena alteração no código do JSP:
Seu idioma é *${idioma}*.

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

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

C

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