Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- Sempre que pesquisei sobre como traduzir as mensagens do Delphi obtive, na maioria das vezes, a mesma resposta. Basicamente essas respostas envolviam a substituição das units do Delphi por outras já traduzidas.
- Enfim encontrei algo mais elegante. Todas as mensagens do Delphi são declaradas como resourcestring, que é uma área onde são declaradas “constantes” que podem ser alteradas em run-time, ou seja, sem a necessidade de recompilar o projeto.
- Para alterar essas “constantes” usamos a função VirtualProtec (windows.pas). Através dela obtemos a estrutura do resourcestring armazenado no executável e a alteramos. Para simplificar criei um método que faz toda a operação.
- }
- procedure SetResourceString(AResString: PResStringRec; ANewValue: PChar);
- var
- POldProtect: DWORD;
- begin
- VirtualProtect(AResString, SizeOf(AResString^), PAGE_EXECUTE_READWRITE, @POldProtect);
- AResString^.Identifier := Integer(ANewValue);
- VirtualProtect(AResString, SizeOf(AResString^), POldProtect, @POldProtect);
- end;
- {
- Para utilizar esse método basta passar o ponteiro do resourcestring e seu novo valor. Exemplo:
- }
- resourcestring
- rsMinhaMensagem = ‘Exemplo de alteração do resourcestring’;
- SetResourceString(@rsMinhaMensagem, ‘rsMinhaMensagem mudou’);
- {
- As declarações de resourcestring do Delphi estão espalhadas em várias units (corbcnst, midconst, mxconsts, comconst, webconst, ibconst, bdeconst, comstrs, consts), portanto para traduzir basta localiza-las na pasta source da instalação do Delphi e executar o método SetResourceString para cada constante que deseja traduzir. Exemplo:}
- SetResourceString(@SMsgDlgYes, ‘Novo Yes’);
- {
- Toda a tradução pode ser declarada na inicialização de uma unit comum a todos os seus projetos. Você encontrará mais detalhes no projeto exemplo.
- Esse conceito pode ser utilizado para a internacionalização de seu sistema, ou seja, poderíamos declarar todas as mensagens como resourcestring e cria um mecanismo no sistema que permita ao usuário trocar a linguagem. Nas versões mais atuais do Delphi já temos opções que simplificam esse trabalho.
- Origem http://leandropiga.nothus.com.br/?p=38}
Advertisement
Add Comment
Please, Sign In to add comment