i18n

Tela Software:
i18n
Detalhes de Software:
Versão: 0.1
Data de upload: 14 Apr 15
Revelador: Antonio Cuni
Licença: Livre
Popularidade: 67

Rating: 3.0/5 (Total Votes: 1)

i18n é um pacote que tenta simplificar o fluxo de trabalho e desenvolvimento de aplicativos internacionalizados. & Nbsp; É um wrapper fino em torno das ferramentas existentes, nomeadamente gettext e babel.
Uso básico
# Demo.py
#
de i18n.translator importação Tradutor
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Ativar traduções italiano
tr = Translator ("/ path / to / root ', supported_languages,' it_IT ')
impressão tr ._ ('Olá, mundo! ")
onde / path / to / root / é o diretório raiz do seu projeto. Quando instanciado, a classe Tradutor automaticamente cria um diretório chamado / path / to / root / idiomas onde as traduções são armazenados.
mensagens Extraindo
Antes de fazer a tradução real, você precisa extrair as mensagens de seus arquivos de origem, invocando o comando de extração no módulo i18n, que é um invólucro em torno extrato pybabel e atualização pybabel:
& Nbsp; python -m i18n --root = / path / to / root --languages ​​= it_IT, fr_FR, de_DE extrato
extrato olha por todas as mensagens acondicionada dentro chamadas para _ (), gettext () ou ngettext () e produz um arquivo chamado línguas / template.pot. Este é um file` po gettext padrão que contém todas as mensagens encontradas na aplicação.
Além disso, extrair () também cria um arquivo de catálogo de mensagens para cada um dos idiomas suportados como línguas / $ CODE / LC_MESSAGES / messages.po, onde $ CODE é uma das línguas enumeradas no supported_languages ​​(it_IT, fr_FR de_DE e no exemplo acima ).
Os arquivos de catálogo está agora pronto para ser traduzido usando uma das muitas ferramentas existentes, por exemplo QT Linguist ou Poedit. Para o correto funcionamento do aplicativo, o línguas inteiras / hierarquia precisa ser preservada. Sugerimos para acompanhar os vários arquivos messages.po em Sistema de Controle de Versão, juntamente com os outros arquivos pertencentes à aplicação.
mensagens Atualizando
Durante o desenvolvimento da aplicação, você certamente irá adicionar novas mensagens a ser traduzido. O comando extrato tratar automaticamente neste caso: se ele encontrar arquivos de catálogo existentes, o seu conteúdo (incluindo as traduções existentes) é mesclada com as mensagens recém-extraído.
catálogos Compilando
É necessário compilar os arquivos de catálogo antes de usá-los com gettext. Por padrão, o nosso tradutor objeto compila automaticamente todos os catálogos encontradas em linguagens /, produzindo os correspondentes .mo arquivos. A compilação é feita apenas quando o arquivo de catálogo foi modificado. Isto significa que, na maioria dos casos, você não precisa se preocupar com a compilação dos catálogos.
Se você preferir ter mais controle sobre esta etapa, você pode passar autocompile = False para o construtor de Tradutor e compilá-los manualmente a partir da linha de comando:
& Nbsp; python -m i18n --root = / path / to / root --languages ​​= it_IT, fr_FR, de_DE compilar
Armazenar traduções em um banco de dados
Para algumas aplicações, é útil para permitir que o usuário defina novas traduções e / ou substituir as configurações padrão. i18n suporta este caso de uso com a classe DBTranslator, que é uma subclasse de Translator. Ao traduzir, DBTranslator primeiro procura no banco de dados: se a mensagem não for encontrado, ele delega ao comportamento gettext padrão.
DBTranslator baseia-se sqlalchemy. Seu construtor tem um parâmetro adicional do motor:
de i18n.dbtranslator importação DBTranslator
de sqlalchemy create_engine importação
motor = create_engine ('sqlite: ///db.sqlite')
ROOT = '/ path / to / root'
LANGUAGES = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, LANGUAGES, DEST_LANGUAGE, motor = motor)
impressão tr ._ ("Olá mundo")
DBTranslator cria automaticamente os translation_entries tabela no DB. Então, cabe a aplicação para fornecer uma interface de usuário para manipular a tabela. Para o teste, você pode usar o método add_translation () para inserir uma nova tradução no DB:
tr.add_translation ("it_IT", "Olá mundo", "ciao mondo")
impressão tr ._ ("Hello World") # imprime "ciao mondo"
Como usar um tradutor mundial
Pelo projeto, i18n tenta evitar completamente qualquer estado global. Isso significa que você pode criar uma instância como muitos Tradutor e DBTranslator como você quer, cada um referente a um diretório e / ou banco de dados diferente. Isto é especialmente útil para o ensaio.
No entanto, na prática, a maioria dos projetos quiser usar um tradutor global que sabe sobre as mensagens de todos os componentes do projeto. O aplicativo de demonstração mostra uma maneira de fazê-lo no módulo translate.py:
py importação
de i18n.translator importação Tradutor
# Definir a raiz do projeto para o diretório que contém esse arquivo
ROOT = py.path.local (__ __ arquivo). Dirpath ()
LANGUAGES = ['it_IT', 'fr_FR', 'de_DE']
tr = Translator (ROOT, línguas, 'it_IT')
_ = Tr._
ngettext = tr.ngettext
se __name__ == '__main__':
& Nbsp; tr.cmdline (sys.argv)
Desta forma, o restante do aplicativo pode simplesmente importar e usar _ () e ngettext () de translate.py. Ou, pelo sua preferência, importar diretamente o tr objeto e uso tr ._ () e tr.ngettext () para traduzir mensagens.
As duas últimas linhas do código permite uma maneira conveniente chamar extrair e compilar a partir da linha de comando sem ter que especificar manualmente o diretório raiz e os idiomas suportados. Apenas corra:
& Nbsp; extrato translate.py python # ... ou compilar

Requisitos :

  • Python

Programas semelhantes

ikazuchi
ikazuchi

12 May 15

Translate Toolkit
Translate Toolkit

17 Feb 15

gtranslator
gtranslator

14 Apr 15

Gucharmap
Gucharmap

22 Jun 18

Outro software de desenvolvedor Antonio Cuni

pdbpp
pdbpp

11 May 15

Comentário para i18n

Comentários não encontrado
Adicionar comentário
Ligue imagens!