Fazer regras de texto

10 respostas
Thiago_Ananias

Olá pessoal, seguinte, estou com uma duvida de performance, o que vcs acham?

Eu quero criar um sistema que tenha varias linguas, e dependendo da lingua setada ele vai me trazer os textos traduzidos, por exemplo

<blockquote>Texto texto = new Texto();

texto.setLingua(“portugues”);

texto.escrever(“Testando”);

</blockquote>

Caso eu tivesse colocado Ingles seria traduzido automaticamente esta palavra “Testando” por outra no banco de dados, cada palavra terá uma traducao para uma lingua no BD, a minha questão é:

Eu tenho que carregar isso todas as paginas todas as vezes!!!Isso pode ser muito custoso ao BD, tem como eu armazenar isso a primeira vez que o sistema abre com um Singleton e depois pesquisar neste objeto? se sim, como faço?

[]s!

10 Respostas

Giulliano

vc esta reinventando a roda…

dê uma olhada nas internacionalizações do JSF por exemplo…as mensagens ficam em vários arquivos .properties…e dependendo da versão(pt-BR,us-EN) do seu browser é carregado um tipo de arquivo diferente.

Thiago_Ananias

Blz… mas deste jeito posso aplicar regras de texto…e trocar coisas textos especificos por outros…vou dar uma olhada neste lance de internacionalizacao

B

Thiago,

Eu tive um problema no qual eu precisava pegar mensagens do banco de dados para eu usar no programa diversas vezes.
Para resolver o problema de performance eu optei por criar uma classe que comunica com o banco e armazena as mensagens numa hashtable, feito isso depois eu pego as mensagens direto da hashtable e nessa classe tem um metodo reload caso vc queira atualizar essa Hash(no seu caso com um novo idioma).

Espero ter ajudado!

Abraço,
Bruno

Giulliano

sim…existe por exemplo o arquivo messages.properties (contem várias mensagens em inglês) e existe o arquivo messages.properties_br (contem várias mensagens em português)

Para usar as mensagens vc usa Keys. ficaria assim:

Key:texto

mensagemBoasVidas: Seja Bem Vindo;

tituloPadrao: Empresa BlaBlaBla;
xandroalmeida

Não reinvente a roda, use os recursos já existentes. São mais fáceis do que você pensa.

De uma olhada nestes dois excelentes texto sobre o assunto.

http://blog.caelum.com.br/2007/10/02/internacionalizacao-no-codigo-java/
http://blog.caelum.com.br/2007/08/13/i18n-internacionalizacao-com-jstl/

Thiago_Ananias

Muito obrigado pelas respostas, fizeram eu pensar bastante!!!

OK! Eu entendi como funciona o Resource Bundle! massssss imaginem isso em um sistema Graaannde, todos os textos tem que ter uma referencia certo?

messages_pt_BR.properties
welcome=Bem vindo no Brasil

messages_de_DE.properties
welcome=Hallo in Deutschland

messages.properties
welcome=Welcome in default
logout=Leaving default

Agora imaginem 200 paginas, quantas referencias não irão existir!! Quem é que vai entender um código cheio de referencias (neste caso "welcome", "Logout")!!

Do jeito que eu estou propondo será mais claro o entendimento:
objeto.tx("Mensagem que será traduzida");

Além de ser possível aplicar regras de texto em cima, por exemplo, posso trocar em todos os textos na lingua portuguesa a palavra "Thiago" por "Ananias" tranquilamente.

o que vcs acham?

[]s

Thiago_Ananias

Ninguem :frowning:

Então pessoal…só para frisar, não importa que eu vou reinventar a roda, eu quero fazer algo BOM! o melhor possível!! Eu quero que deem suas opnioes, falem que minha ideia é ruim, motivos, queria saber quais são os pós e contras destas duas soluções abordadas aki, se alguem tiver outra solução será muito bem vinda!!

Outra vantagem da minha porposta é que os cadastros, podem ter as linguas tb, eu posso habilitar mais de um INPUT para digitar a versao portugues e ingles por exemplo!!

Obrigado!

[]s.

xandroalmeida

Traduzir um texto de forma automática é algo beeeem mais complexa.
Subsitituir as palavras de uma frase pela sua tradução não vai dar certo.

Thiago_Ananias

Mas aqui na empresa isso esta feito em .NET!!! o que vai ser traduzido não são as palavras mas sim as frases!!!

Thiago_Ananias

OK pessoal, depois de tanta questionação sobre como fazer a internacionalização (Que achei super válido!!!), eu vou fazer do jeito que foi porposto por mim no início pelo código ser de mais fácil manutenção.

Volto a minha pergunta inicial, qual o melhor o objeto para eu armazenar um Array de Strings para poder pesquisar dentro dele? fazendo pelo BD seria facil, mas custoso para o Server, eu já sei a estratégia a ser utilizada, mas preciso de um objeto que armazene estes dados para mim, alguem tem uma sugestão ae?

Brigadú!!

Criado 18 de dezembro de 2007
Ultima resposta 19 de dez. de 2007
Respostas 10
Participantes 4