Uma aplicação. Cinco idiomas.
Trocados enquanto ela roda.
O sgcLocalization traduz as suas próprias aplicações Delphi, C++Builder e Lazarus. Cada formulário, cada mensagem, cada plural, com um editor e uma linha de código para trocar o idioma.
- English
- Deutsch
- Español
- Français
- Italiano
A imagem acima é um único executável. O mesmo painel, os mesmos dados, em inglês, alemão, espanhol, francês e italiano, e o usuário troca o idioma em uma caixa de combinação enquanto a aplicação roda. Sem reiniciar e sem uma segunda compilação.
Essa aplicação foi traduzida com o sgcLocalization, um novo produto da suíte sgcUI. Ele funciona com VCL, FireMonkey e LCL, do Delphi 7 ao Delphi 13, no C++Builder e no Lazarus, e está incluído em todas as edições do sgcUI e em cada produto individual.
O sgcLocalization em um minuto: escanear, traduzir e trocar o idioma de uma aplicação real. Também no YouTube.
Troque o idioma com uma linha
Este é todo o código de que a troca de idioma precisa:
uses
sgcLocalization_Engine;
procedure TfrmMain.btnGermanClick(Sender: TObject);
begin
sgcSetLanguage('de');
end;
Se você prefere nenhum código, coloque no formulário o combo de idiomas pronto para uso (TsgcVCLLanguageCombo ou TsgcFMXLanguageCombo). Ele lista os idiomas do seu projeto e troca quando o usuário escolhe um.
A troca faz mais do que substituir legendas:
- Os formulários criados depois são traduzidos automaticamente. Uma caixa de diálogo aberta dez minutos após a troca aparece no idioma certo.
- Os valores alterados por código são mantidos. Um label que o seu código preencheu com o nome de um cliente não é sobrescrito por uma tradução.
- As seleções sobrevivem. Combos e listas mantêm o item selecionado enquanto seus itens mudam de idioma.
- Os idiomas da direita para a esquerda invertem o layout, de modo que um usuário de árabe ou hebraico recebe um formulário espelhado.
Para iniciar no idioma do sistema do usuário, defina uma propriedade:
sgcVCLLocalizer1.Language := 'auto';
Quão pouco trabalho dá
O localizador (TsgcVCLLocalizer para VCL, TsgcFMXLocalizer para FireMonkey) encontra cada propriedade de texto por meio de RTTI. Você não marca propriedades, não renomeia componentes e não altera seus formulários.
As regras de ignorar embutidas pulam o que nunca é texto: nomes de componentes, nomes de campos, SQL, nomes de arquivos, strings de formato e as propriedades que não são texto dos próprios controles do sgcUI. Você pode adicionar suas próprias regras. Um formulário que mistura controles padrão e controles do sgcUI é escaneado de forma limpa, então a lista que você traduz contém textos e nada mais.
Textos no código: snippets
Nem todo texto está em um formulário. Mensagens, linhas de status e legendas montadas em código são snippets. Envolva o texto em sgcT e ele passa a ser traduzível:
if MessageDlg(sgcT('Save changes?'), mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
SaveOrder;
A mesma palavra pode precisar de duas traduções. Em inglês, "Open" é ao mesmo tempo um comando e o estado de um pedido. O sgcTC adiciona um contexto, de modo que cada significado recebe a sua própria tradução:
btnOpen.Caption := sgcTC('command', 'Open');
lblState.Caption := sgcTC('order status', 'Open');
Os plurais usam sgcTN. Você escreve o singular e o plural do idioma de origem, e a tradução fornece tantas formas quantas o idioma de destino precisar:
lblSelected.Caption := sgcTN('%d order selected', '%d orders selected',
Count, [Count]);
As regras de plural vêm do CLDR, então estão corretas para todos os idiomas. O polonês, por exemplo, recebe quatro formas, e o editor pede ao tradutor cada uma delas.
Um editor de traduções
Todas as traduções são editadas em um só lugar. Clique com o botão direito no localizador em tempo de design para abrir o editor dentro do IDE, ou use a ferramenta independente fora dele.
- Estados dos itens. Cada texto é novo, alterado, proposta, traduzido, revisado ou obsoleto, e você filtra por estado.
- Filtros e seleção múltipla. Filtre por idioma, formulário ou texto de busca, selecione várias linhas e altere-as juntas.
- Marcas de versão. Marque uma versão, e o filtro "novos ou alterados desde" mostra exatamente o que a próxima versão precisa traduzir. Nada fica de fora.
- O idioma do seu tradutor. O próprio editor está disponível em 12 idiomas, com os temas claro e escuro.
Validação que pega os erros de sempre
Uma tradução que perde um %d ou uma tecla de acesso é fácil de escrever e difícil de notar. O sgcLocalization verifica cada tradução, seja ela digitada, importada ou proposta por IA:
- especificadores de formato e marcadores de posição,
- teclas de acesso,
- quebras de linha, espaços no início e no fim,
- traduções vazias e formas de plural.
Um item com erro não pode ser definido como revisado, de modo que um texto quebrado não passa para uma versão como trabalho concluído.
Tradução por IA, como propostas
O editor pode traduzir com serviços de IA como ChatGPT, Claude, Gemini e Ollama. Escolha os idiomas de destino, forneça um glossário e instruções sobre o tom, e comece.
Os resultados chegam como propostas. Você aceita ou rejeita cada uma, e uma proposta nunca sobrescreve um texto que já está traduzido. A mesma validação roda sobre elas.
XLIFF para tradutores profissionais
As agências de tradução trabalham com XLIFF. O sgcLocalization exporta XLIFF 1.2 para um idioma e importa o arquivo quando ele volta.
Uma importação nunca grava diretamente no seu projeto. Ela abre uma lista de revisão com cada alteração: o texto antigo, o texto novo, o tipo de alteração e qualquer problema encontrado. Somente as linhas que você marcar são aplicadas.
Um arquivo de projeto
As traduções de uma aplicação ficam em um arquivo de projeto com a extensão .sgcloc. Ele é JSON, então é amigável ao controle de versão: uma tradução alterada é um diff pequeno que você pode ler em uma revisão de código. Se você prefere um único executável sem nada ao lado, o projeto pode ser embutido no arquivo do formulário.
Veja em uma aplicação real
A demo de vitrine é o Order Desk, uma aplicação de negócios completa: um painel, pedidos, clientes, um planejador, análise dinâmica, um assistente e uma visualização de impressão. Ela está traduzida para inglês, alemão, espanhol, francês e italiano, e vem nas versões VCL, FireMonkey e Lazarus.
A pasta da demo também tem três inícios rápidos, a ferramenta independente do editor de traduções e um guia Primeiros Passos que leva você de um formulário vazio a uma aplicação traduzida.
Incluído no sgcUI
O sgcLocalization acompanha o sgcUI 2026.12.0. Ele não é vendido separadamente: está incluído em todas as edições do sgcUI e em cada produto individual, e vem selecionado por padrão no instalador.
Sua aplicação, no idioma do seu cliente
Baixe o sgcUI, abra a demo Order Desk e troque o idioma enquanto ela roda. Depois, solte um localizador no seu próprio formulário principal.
Dúvidas ou comentários? Entre em contato, você receberá a resposta das pessoas que escreveram o código.
