Sou membro de uma equipe com mais de 20 desenvolvedores. Cada desenvolvedor trabalha em um módulo separado (algo em torno de 10 módulos). Em cada módulo, podemos ter pelo menos 50 formulários CRUD, o que significa que atualmente temos cerca de 500 botões adicionar , salvar botões , editar botões etc.
No entanto, como queremos globalizar nosso aplicativo, precisamos traduzir textos em nosso aplicativo. Por exemplo, em todos os lugares, a palavra add deve tornar-se ajouter para os usuários franceses.
O que fizemos até agora é que, para cada visualização na interface do usuário ou na camada de apresentação, temos um dicionário de pares de traduções chave / valor. Em seguida, durante a renderização da visualização, traduzimos textos e strings necessários usando este dicionário. No entanto, esta abordagem, temos vindo a ter algo perto de 500 add em 500 dicionários. Isso significa que violamos o principal DRY.
Por outro lado, se centralizarmos seqüências comuns, como colocar add em um só lugar, e pedir aos desenvolvedores que a usem em todos os lugares, encontraremos o problema de não ter certeza se uma sequência já está definida no dicionário centralizado ou não.
Uma outra opção pode ser não ter dicionário de tradução e usar serviços de tradução on-line como Google Translate, Bing Translator etc.
Outro problema que encontramos é que alguns desenvolvedores, sob o estresse de entregar o projeto no prazo, não conseguem se lembrar das chaves de tradução . Por exemplo, para o texto do botão adicionar, um desenvolvedor usou add enquanto outro desenvolvedor usou new etc.
Qual é a melhor prática ou o método mais conhecido para globalização e localização de recursos de cadeia de caracteres de um aplicativo?
Respostas:
Até onde eu sei, há uma boa biblioteca chamada
localeplanet
Localização e Internacionalização em JavaScript. Além disso, acho que é nativo e não tem dependências para outras bibliotecas (por exemplo, jQuery)Aqui está o site da biblioteca: http://www.localeplanet.com/
Observe também este artigo da Mozilla, você pode encontrar métodos e algoritmos muito bons para tradução no lado do cliente: http://blog.mozilla.org/webdev/2011/10/06/i18njs-internationalize-your-javascript-with- uma ajudinha-do-json-e-o-servidor /
A parte comum de todos esses artigos / bibliotecas é que eles usam uma
i18n
classe e umget
método (de certa forma também definem um nome de função menor como_
) para recuperar / converter o arquivokey
paravalue
. Na minha explicação doskey
meios que string você deseja traduzir e osvalue
meios traduzidos string.Então, você só precisa de um documento JSON para armazenar
key
'svalue
' e 's.Por exemplo:
E aqui o JSON:
Acredito que o uso de soluções atuais de bibliotecas populares é uma boa abordagem.
fonte
Acredito que já existem muitas soluções para esse problema em linguagens do servidor, como ASP.Net/C#.
Eu descrevi alguns dos principais aspectos do problema
Problema : precisamos carregar dados apenas para o idioma desejado
Solução : para esse fim, salvamos os dados em arquivos separados para cada idioma
ex. res.de.js, res.fr.js, res.en.js, res.js (para o idioma padrão)
Problema: os arquivos de recursos de cada página devem ser separados, para obtermos apenas os dados necessários
Solução : podemos usar algumas ferramentas que já existem, como https://github.com/rgrove/lazyload
Problema: precisamos de uma estrutura de par de chave / valor para salvar nossos dados
Solução : sugiro um objeto javascript em vez de string / string air. Podemos nos beneficiar do intellisense de um IDE
Problema: os membros gerais devem ser armazenados em um arquivo público e todas as páginas devem acessá-los
Solução : para esse propósito, crio uma pasta na raiz do aplicativo Web chamada Global_Resources e uma pasta para armazenar o arquivo global para cada subpasta que denominamos 'Local_Resources'
Problema: cada membro de subsistema / subpasta / módulo deve substituir os membros Global_Resources em seu escopo
Solução : considerei um arquivo para cada
Estrutura de Aplicação
O código correspondente para os arquivos:
Global_Resources / default.js
Global_Resources / default.fr.js
O arquivo de recurso para o idioma desejado deve ser carregado na página selecionada em Global_Resource - Esse deve ser o primeiro arquivo carregado em todas as páginas.
UserManagementSystem / Local_Resources / default.js
UserManagementSystem / Local_Resources / default.fr.js
UserManagementSystem / Local_Resources / createUser.js
UserManagementSystem / Local_Resources / createUser.fr.js
arquivo manager.js (esse arquivo deve ser carregado por último)
Espero que ajude :)
fonte
"Create" : {"message": "Create", "description": "text on the button that opens the editor with a blank Foo"}
eles fazem para localizar extensões do Chrome, por exemplo. Ou crie um arquivo separado contendo esses comentários.O jQuery.i18n é um plugin jQuery leve para permitir a internacionalização em suas páginas da web. Ele permite que você empacote seqüências de recursos personalizadas em arquivos '.properties', assim como nos Java Resource Bundles. Ele carrega e analisa pacotes de recursos (.properties) com base no idioma ou idioma fornecido relatado pelo navegador.
Para saber mais sobre isso, consulte Como internacionalizar suas páginas usando o JQuery?
fonte