Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anderson Nunes

Sistema em múltiplos idiomas

Recommended Posts

Olá, o que preciso é o seguinte, pegar as showmessages(); messagedlgs(); etc dentro do minha aplicação e em tempo de execução, trocar o texto que esta nela, eu acho que tem como fazer agora so falta saber como..Isto é para um projeto onde precisarei usar dois idiomas ou mais, o resto dos componentes eu fiz, agora os showmessages não sei como fazer..

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...

Faz as mensagens serem parametrizadas...

Tipo, passa dentro dos showmessages uma variável.

Aí pela sua lógica você vai alterando o valor dessas variáveis antes de chamar tais showmessages...

 

exemplo:

 

procedure TForm4.AbrirMensagem;
const
 ENG_MENS = 'English';
 PT_MENS  = 'Português';
var
 sMensagem: string;
begin
 case lingua of
   lPortugues : sMensagem := PT_MENS;
   lIngles : sMensagem := ENG_MENS;
 end;
 ShowMessage(sMensagem);
end;

 

 

Veja a lógica que é melhor para você...

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...

Faz as mensagens serem parametrizadas...

Tipo, passa dentro dos showmessages uma variável.

Aí pela sua lógica você vai alterando o valor dessas variáveis antes de chamar tais showmessages...

 

exemplo:

 

procedure TForm4.AbrirMensagem;
const
 ENG_MENS = 'English';
 PT_MENS  = 'Português';
var
 sMensagem: string;
begin
 case lingua of
   lPortugues : sMensagem := PT_MENS;
   lIngles : sMensagem := ENG_MENS;
 end;
 ShowMessage(sMensagem);
end;

 

 

Veja a lógica que é melhor para você...

 

Abraço!

 

Antes de mais nada agradeço a sua resposta.

 

Bom, eu ja pensei nisto, mas o problema é que futuramente o cliente irá precisar colocar mais idiomas, digamos que tenha lá uns 8, então terei problemas, o resto eu ja faço por xml, carregando os texts, captions, etc, de acordo com o idioma carregado, mas os messages ainda não sei como fazer. Imaginei que tivesse como pega-los, bom, mesmo assim agradeço e se conseguiur posto aqui.

 

abços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria um XML com as configurações dos Idiomas e fala pro sistema puxar dele.

Tipo:

 

Idioma, Form, Controle, Text
('Portugues','FrmCadastro', 'Msg', 'Mensagem do ShoMessage')

 

:joia:

 

...Anderson não abra mais de um post no forum sobre o mesmo assunto....

 

http://forum.imasters.com.br/topic/434670-aplicacao-em-mais-de-um-idioma/

 

 

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desativei o outro tópico em virtude da similaridade do assunto.

 

Anderson, para fazer o sistema de tradução, você pode criar uma Unit que conterá variáveis que serão usadas no lugar das mensagens do ShowMessage. Ao iniciar o programa, você faz o load no arquivo de idioma que conterá as frases do seu programa traduzidas para o idioma, atribuindo as frases para cada variável em específico. ex.:

 

english.lpk

[lang_data]
Language='English USA'
[strings]
MSG_REGISTRATION_SUCESS='All data was saved sucessfully'
MSG_REGISTRATION_FAIL='Fail on save data'
....

 

Unit LoadLanguage

unit LoadLanguage;
interface
 MSG_REGISTRATION_SUCESS : String;
 MSG_REGISTRATION_FAIL : String;
...
Implementation;

uses
 TIniFile;

procedure LoadLanguageFile(Const  FileName : String);
var
 LangFile : TIniFile;
begin
 LangFile := TLangFile.Create(FileName);
 MSG_REGISTRATION_FAIL := LangFile.ReadString('MSG_REGISTRATION_FAIL');
 ...

 

Formulario de Cadastro:

procedure TFrm_CadastraCliente(Sender : Tobject);
begin
 if DadosValidados then
   if DadosSalvosComSucesso Then
     ShowMessage(MSG_REGISTRATION_SUCESS);

 

Este é um exemplo de como fazer. Este código contem erros. Neste exemplo, usei o TIniFile, mas você pode usar o XML, um arquivo binário, etc. Apesar deste exemplo, você pode usar o Translation Manager, uma ferramenta presente no Delphi para auxiliar no processo de tradução...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desativei o outro tópico em virtude da similaridade do assunto.

 

Anderson, para fazer o sistema de tradução, você pode criar uma Unit que conterá variáveis que serão usadas no lugar das mensagens do ShowMessage. Ao iniciar o programa, você faz o load no arquivo de idioma que conterá as frases do seu programa traduzidas para o idioma, atribuindo as frases para cada variável em específico. ex.:

 

english.lpk

[lang_data]
Language='English USA'
[strings]
MSG_REGISTRATION_SUCESS='All data was saved sucessfully'
MSG_REGISTRATION_FAIL='Fail on save data'
....

 

Unit LoadLanguage

unit LoadLanguage;
interface
 MSG_REGISTRATION_SUCESS : String;
 MSG_REGISTRATION_FAIL : String;
...
Implementation;

uses
 TIniFile;

procedure LoadLanguageFile(Const  FileName : String);
var
 LangFile : TIniFile;
begin
 LangFile := TLangFile.Create(FileName);
 MSG_REGISTRATION_FAIL := LangFile.ReadString('MSG_REGISTRATION_FAIL');
 ...

 

Formulario de Cadastro:

procedure TFrm_CadastraCliente(Sender : Tobject);
begin
 if DadosValidados then
   if DadosSalvosComSucesso Then
     ShowMessage(MSG_REGISTRATION_SUCESS);

 

Este é um exemplo de como fazer. Este código contem erros. Neste exemplo, usei o TIniFile, mas você pode usar o XML, um arquivo binário, etc. Apesar deste exemplo, você pode usar o Translation Manager, uma ferramenta presente no Delphi para auxiliar no processo de tradução...

 

 

Tudo bem, pode desativar o outro sim. É o mesmo tema.

 

Bom, entendi sim o que voce me explicou, é uma saida viavel eu imagino e similiar ao que estou fazendo com os componentes do form. Valeu amigo, obrigado pela dica e obrigado a todos pelas respostas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.