SETANDO Locale BR no DateFormat

6 respostas
N

Galera do forum, me ajudem:

Estou programando em uma máquina XP em português!

No programa uso um date format para instanciar um Date. Mas quando
coloco o programa para rodar em uma máquina win2000server em inglês
dá um erro ao instânciar o Date. Um erro de formato, pois ele pega o Locale default.

Como faço pra colocar o locale brasileiro como default ???

Eu dei um System.out.println(Locale.getDefault()); e apareceu English
na máquina que eu falei.

Exceção:

-------------:English (United States):-------------x

ERROR - Servlet.service() for servlet jsp threw exception

java.text.ParseException: Unparseable date: 01/01/2000

at java.text.DateFormat.parse(Unknown Source)

at org.apache.jsp.sitecopi.cadastro.equipamento.relatorioEquipamento_jsp._jspService(org.apache.jsp.sitecopi.cadastro.equipamento.relatorioEquipamento_jsp:219)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

at java.lang.Thread.run(Unknown Source)

6 Respostas

T

Bom, você pode fazer uma de duas coisas:

  • Locale.setDefault (só que você vai ter de pôr isso em tudo que é lugar)
  • Como você usa o Tomcat, dá para passar alguma opção de linha de comando para o java.exe para que ele use um locale default diferente - não sei se usar -Duser.country=BR -Duser.language=pt é suficiente ;-).
    É questão de mexer em catalina.bat se não me engano.
  • Se o tomcat está rodando como serviço e ele está usando algum usuário específico da rede, você pode alterar as configurações regionais desse usuário nesse computador, mas acredito que isso não seja muito confiável.
A

Estou escrvendo uma aplicação desktop, tenho que traduzir as caixas de diálogo, mas na minha instalação da JRE no Fedora c4, não veio o locale pt_BR. Alguém sabe como posso instalar ou baixar???

T

Se você tem de traduzir aquelas caixas de diálogo do Swing, como o JFileChooser e outras coisas, elas não são automaticamente traduzidas, mesmo reinstalando o seu Linux ou Windows para a língua portuguesa. Procure alguma coisa como “UIManager.put” aqui mesmo no forum.

A

Meu caso não é bem esse e já até usei em algumas caixas de diálogo, mas a caixa de diálogo que estou tentando traduzir agora (printDialog) é da classe printJob, e acredito eu, que seja necessário usar internacionalização mesmo.

Outra coisa é que lá na pasta do jre lib/locale/ não tem a pasta do locale pt_BR, tem como baixar isso de algum site???

T

Tou lendo o fonte da classe sun.awt.print.PrintDialog (baixe o fonte completo do JDK - mais conhecido como SCSL JDK Download ou JRL JDK Dowload - , esses fontes não estão em src.zip) e ele diz que puxa as mensagens do resource bundle de nome “sun.awt.print.resources.pdialog”; outra classe (ServiceUI) puxa mais mensagens do resource bundle “sun.print.resources.serviceui”. Ainda outro resource seria “sun.awt.print.resources.printcontrol.properties”.
http://forum.java.sun.com/thread.jspa?threadID=332957&messageID=3040418

Fuçando mais um pouco nos fontes, achei os arquivos de mensagens para o PrinterDialog (que ficam em j2se/src/share/classes/sun/awt/print/resources nesses fontes do JDK).
Os arquivos estão lá, mas na verdade não sei como é que dá para incluir um arquivo pdialog_pt_BR.properties na sua aplicação e fazer o PrintDialog ler esse arquivo. Talvez seja só o caso de fazer Locale.setDefault (new Locale (“pt”, “BR”)) e pôr o novo arquivo pdialog_pt_BR.properties no classpath.

K

thingol vc mencionou em colocar -Duser.country=BR -Duser.language=pt em algum arquivo de conf do tomcat.
Eu nao gostaria de ficar dando Locale.setDefault em todas as action’s do meu projeto.

mas se eu conseguir setar na JVM o meu locale em algum arquivo de conf do JETTY, para ser executado no java.exe
talvez funcione…

Vou identificar esse arquivo
acho que é jettyservice.com
algo assim…

Quero definir meu locale porque no ambiente de produção (que roda SO em portugues) esta com o locale em ingles …
misteriosamente…

Criado 4 de julho de 2005
Ultima resposta 9 de jan. de 2009
Respostas 6
Participantes 4