Usar ou não usar um arquivo só de i18n?

11 respostas
saoj

Algumas pessoas levantaram pontos importantes sobre as desvantagens de ter um arquivo só:

:arrow: O arquivo base pode ficar muito grande

:arrow: Suporte a linguas não latinas, como chinês e japonês.

Bom, o que eu posso dizer é que eu usei um arquivo só na prática em um projeto grande com 5 linguas e tudo correu muito bem. Mas as 5 linguas eram todas latinas. Quando vc precisa de uma nova tradução vc escolhe a língua que vai servir como base para o tradutor, dá um cut and paste em outro arquivo, e envia esse arquivo pra ele. Quando voltar vc dá um cut and paste pra dentro do arquivo i18n e pronto. Ninguém morre com cut and paste, né?

Mas estou me rendendo a admitir que um arquivo por língua é mais seguro, o que vai exigir um refactoring do framework.

Como funciona Japonês ??? Os textos vão num arquivo properties tb ??? Como funciona isso ???

Vcs tem certeza que um arquivo só é suicídio ??? Por que o arquivo vai ficar grande, não me parece um argumento sólido. Quando eu abro um diretório e vejo aquele amontoado de arquivo properties, aquilo sim me assusta um pouco. Eu prefiro trabalhar com um arquivo só, do que com 17 simultaneamente. O pessoal de design, que mantinham esses arquivos, ficaram bastante felizes tb. Mas se todo mundo é contra eu não posso estar certo…

11 Respostas

Rafael_Steil

Nossa cara, eh a mesma coisa que colocar todas as tuas classes em um unico source file. Simplesmente nao rola.

Sao coisas diferentes (linguas diferentes). Nao ha pq estar num mesmo arquivo. Se voce eh preguico a ponto de criar uma classezinha de I18n que gerencie isso, vc sempre pode fazer assim:

Properties p = new Properties();
p.load("en_US.properties");
p.load("fi_FR.properties");
p.load("ru_RU.properties");

Porem, vc vai precisa de prefixox nas key (enUS_Hello, fiFI_Hello) e etc…

Rafael

saoj

Misturar japonês e português num arquivo só vai ficar esquisito mesmo.

Beleza, vou dar um jeito de separar isso, sem ter que refazer tudo. Acho que dá tranquilo!

vamorim

saoj:
Misturar japonês e português num arquivo só vai ficar esquisito mesmo.

Beleza, vou dar um jeito de separar isso, sem ter que refazer tudo. Acho que dá tranquilo!

Se isso não for fácil de fazer, significa que seu código não está muito flexível. :wink:

Para falar a verdade, tanto dividir em vários arquivos quanto usar tudo num só arquivo são escolhas ruins! Quem me garante que todas as keys que existem em português existem também em inglês?

Acho que o ideal seria existir alguma ferramenta para fazer a gerência colaborativa de i18n. A cada key criada para uma linguagem, seria gerada o equivalente nas outras e ficaria marcado que as outras estão incompletas. Sem contar que a gerência manual de categorias de mensagens parecem coisa de dois séculos atrás.

Por fim, a ferramenta geraria um arquivão ou todos os arquivos separados. Isso tem que ficar transparente pois isso não deveria fazer diferença para a classe que carrega as mensagens.

Rafael_Steil

Voce precisa ter apenas um arquivo completo, e entao usar ele como seguranca. Por exemplo, no JForum, eu sempre carrego o en_US, que eh o meu base. Entao, se alguem escolhe pt_BR, dou um merge do pt_BR com o en_US. Caso alguma key falte no pt_BR, automaticamente a key em ingles vai ser usada - a propria natureza do Properties te permite isso.

Rafael

vamorim

Rafael Steil:
Voce precisa ter apenas um arquivo completo, e entao usar ele como seguranca. Por exemplo, no JForum, eu sempre carrego o en_US, que eh o meu base. Entao, se alguem escolhe pt_BR, dou um merge do pt_BR com o en_US. Caso alguma key falte no pt_BR, automaticamente a key em ingles vai ser usada - a propria natureza do Properties te permite isso.

Rafael

Mas isso é uma solução paleativa. :stuck_out_tongue:

Você corre o risco que ter uma mensagem em inglês no código de uma janelinha pouco visitada.

Cada vez que precisar ter certeza que não há mensagens em inglês numa versão em português, vai necessitar percorrer as 800 linhas de cada um dos 17 arquivos! :wink:

saoj

Tem toda razão !!! Essa é a única parte do código que eu reaproveitei de tempos passados. Bom, ótimo oportunidade para meter a mão ali e refazer algumas coisas. :slight_smile:

Rafael_Steil

vamorim:

Cada vez que precisar ter certeza que não há mensagens em inglês numa versão em português, vai necessitar percorrer as 800 linhas de cada um dos 17 arquivos! :wink:

Se vc estivesse dizendo isso para a tiazinha do cafe, ela provavelmente faria isso mesmo :mrgreen: . Porem, nos, como bons programadores Java, resolvemos o problema com ou 3 ou 4 linhas de codigo :wink: (aka, abre properties1, abre properties2, entao da um diff )

Rafael

louds

Usar arquivos de properties separados é legal quando você usa ResourceBundles para internacionalização e localização.

vamorim

Rafael Steil:
vamorim:

Cada vez que precisar ter certeza que não há mensagens em inglês numa versão em português, vai necessitar percorrer as 800 linhas de cada um dos 17 arquivos! :wink:

Se vc estivesse dizendo isso para a tiazinha do cafe, ela provavelmente faria isso mesmo :mrgreen: . Porem, nos, como bons programadores Java, resolvemos o problema com ou 3 ou 4 linhas de codigo :wink: (aka, abre properties1, abre properties2, entao da um diff )

Rafael

Tem razão. :slight_smile:

Mauricio_Linhares

No alvo, mas se o cara não usar, vai terminar fazendo a mesma coisa que eles fazem, na mão :mrgreen:

E ainda tem outra né, tem que pensar em como fazer a “escolha” da linguagem poder ser feita por um usuário. Imagina que eu to num cybercafé na Finlândia e resolvo acessar o JFórum, o browser lá pode estar pra finlandês e eu vou pirar sem saber de nada, então o framework poderia dar opção de o usuário escolher a lingua (assim como o JForum dá).

saoj

Maurício Linhares:

E ainda tem outra né, tem que pensar em como fazer a “escolha” da linguagem poder ser feita por um usuário. Imagina que eu to num cybercafé na Finlândia e resolvo acessar o JFórum, o browser lá pode estar pra finlandês e eu vou pirar sem saber de nada, então o framework poderia dar opção de o usuário escolher a lingua (assim como o JForum dá).

Isso o Mentawai já faz, via método setUserLocale da action de autenticação.

(Tô trabalhando pra separar os arquivos !!!)

Criado 16 de junho de 2005
Ultima resposta 17 de jun. de 2005
Respostas 11
Participantes 5