Pergunta

Eu tenho um aplicativo científica freeware que é usado por milhares de pessoas em quase 100 países. Muitos já se ofereceu para traduzir de forma gratuita. Agora que D2009 torna isso mais fácil (com ferramentas integradas e externas de localização, além de suporte nativo Unicode) que eu gostaria de fazer isso acontecer para algumas línguas e progressivamente adicionar quantos energia usuário irá apoiar.

Eu estou pensando que eu vou distribuir uma planilha com uma lista de strings (dezenas, mas não centenas) a ser traduzido, tê-los devolvê-lo e comparar apresentações no mesmo idioma de 2-3 usuários, em seguida, trabalhar para resolver discrepâncias de consenso. Então eu vou incorporar as localizações usando a tradução Ambiente Integrado e distribuir atualizações localizadas.

Alguém delegado tradução para os usuários? Qualquer gotchas, específico-D2009 ou de outra forma?

EDIT:? Alguém já comparou o suporte de localização embutido no D2009 contra dxgettext

Foi útil?

Solução

Eu nunca fui um amigo de ferramentas de localização proprietários para aplicações freeware ou Open Source. Usando dxgettext , a porta de Delphi GNU gettext parece uma opção muito melhor para mim:

  • Integração no programa (mesmo muito mais tarde do que o seu desenvolvimento) é fácil.
  • Extração de strings traduzíveis pode ser feito por programas de linha de comando e é, portanto, facilmente introduzidos em uma compilação automatizada.
  • Uma nova tradução pode ser adicionado simplesmente criando um novo diretório com a estrutura correta, copiando o arquivo vazio de tradução para ele, e começar a traduzir as strings. Isso é algo cada usuário pode fazer por si mesmos, não há necessidade de envolver o autor original para a criação de uma nova tradução. Há também gratificação instantânea com este processo -. Uma vez que o programa for reiniciado as novas traduções são apresentadas imediatamente
  • Alterar uma tradução existente é ainda mais fácil do que criar um novo. Assim, se um usuário encontra ortografia ou outros erros ou necessidades de melhoria na tradução podem corrigi-los facilmente e enviar as alterações ao autor.
  • Novas versões do programa trabalhar com traduções antigas, degrada sistema muito graciosamente -. Novos e não traduzidas cordas são simplesmente mostrado não modificada
  • As traduções podem ser feitas usando apenas o bloco de notas, mas existem várias ferramentas gratuitas para criar e gerenciar arquivos de tradução também; veja os links na página dxgettext. Eles estão localizados a si mesmos, e têm algumas vantagens sobre uma folha de cálculo, bem como:
    • A localização das cordas no código-fonte pode ser mostrado (só faz sentido para aplicativos de código aberto, é claro).
    • A percentagem de mensagens traduzidas é mostrado.
    • As modificações cordas já traduzidos são destacadas também.
  • O sistema inteiro é amadurecer e à prova de futuro - Eu tenho usado dxgettext para Delphi 4 programas, e não deve haver mudanças necessárias para Delphi 2009 ainda -. Arquivos de tradução foram sempre UTF-8 codificado

Usando uma planilha para a tradução não parece uma solução viável para mim uma vez que você tem mais do que alguns idiomas. Suponha que uma nova versão do programa adiciona 2 cordas novas e muda 10 cordas apenas ligeiramente - você não precisa adicionar as novas cordas e destacar as cordas alterados em todos os vários arquivos dúzia de folhas de cálculo e enviá-los novamente para os seus tradutores? Usando dxgettext você apenas envia o arquivo po alterado para todos eles.

Editar:

Há um comentário interessante sobre os problemas podem existir com dxgettext e bibliotecas. Eu nunca fiz esta experiência, como já parou de usar seqüências de recursos completamente. A maior parte dos nossos programas são em alemão, e apenas alguns são em Inglês ou traduzido em várias línguas.

Nossas bibliotecas internas usar "_ (...)" em torno de todas as strings traduzíveis. Há define ENGLISH e USEGETTEXT que são definidos em uma base por projeto. Se ENGLISH ou USEGETTEXT são definidos, em seguida, os textos em inglês são compilados no DCUs, então o texto em alemão é compilado para o DCUs. Se USEGETTEXT não está definido "_ ()" é compilado como uma função que retorna seu parâmetro como está, então a pesquisa de tradução dxgettext é usado.

Outras dicas

Eu tenho ... Pode haver alguns desafios.

  • Uma cadeia não significa muito em si mesmo, ele precisa de um contexto.
  • corolário, a mesma seqüência pode precisam ter mais de uma tradução.
  • tela imobiliário: cuidado com comprimento variável, dependendo do idioma, por exemplo, francês tende a ser mais detalhado do Inglês.
  • a menos que você é proficiente em um determinado idioma, você não será capaz de avaliar as discrepâncias.

Eu usei TsiLang Tradução Suíte para permitir que os usuários finais para traduzir. Eu modifiquei o código para permitir a criptografia de modo que se alguém faz um trabalho realmente bom eles podem proteger seu nome contra um arquivo de tradução, mas, em geral, a idéia é que as pessoas podem partilhar as suas traduções, e adicionar / editar qualquer pequena parte que deseja. Dado que tudo acontece dentro do aplicativo, e com visibilidade instantânea, ele funciona muito bem.

Como você mencionou, D2009 vem com ferramentas de localização. Por que simplesmente não usá-los? AFAIK você pode distribuir o gerente de tradução externa (etm.exe). Você precisa de mais alguma coisa?

Além disso, a localização é mais do que apenas o texto a traduzir. ETM também suporta tradução de recursos .dfm.

Para completar, aqui é outra ferramenta de localização Delphi chamado Delphi Localizer I descobriram recentemente que parece ser bem desenhado e polido. A ferramenta é gratuita para uso comercial, com excepção dos projectos governamentais (não sei exatamente por que a exceção).

FWIW I têm usos TsiLang Tradução suíte no passado e atualmente estou trabalhando em outro projeto usando as ferramentas de localização fornecidos com DevExpress VCL. Os integra posteriores bem com seus componentes, bem como componentes de terceiros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top