Internacionalização
Pluralizar
Pluralizar é uma biblioteca Python para a Internacionalização (i18n) e Pluralização (p10n).
The library assumes a folder (for example “translations”) that contains files like:
it.json
it-IT.json
fr.json
fr-FR.json
(etc)
Cada arquivo tem a seguinte estrutura, por exemplo para o italiano (it.json):
{"dog": {"0": "no cane", "1": "un cane", "2": "{n} cani", "10": "tantissimi cani"}}
As chaves de nível superior são as expressões a ser traduzido e o valor associado / dicionário mapeia um número para uma tradução. Diferentes traduções correspondem a diferentes formas de plural da expressão,
Aqui está outro exemplo para a palavra “cama” em checo
{"bed": {"0": "no postel", "1": "postel", "2": "postele", "5": "postelí"}}
Para traduzir e pluralizar de “cachorro” string um simplesmente deforma a corda na operadora T da seguinte forma:
>>> from pluralize import Translator
>>> T = Translator('translations')
>>> dog = T("dog")
>>> print(dog)
dog
>>> T.select('it')
>>> print(dog)
un cane
>>> print(dog.format(n=0))
no cane
>>> print(dog.format(n=1))
un cane
>>> print(dog.format(n=5))
5 cani
>>> print(dog.format(n=20))
tantissimi cani
A cadeia pode conter vários espaços reservados, mas o {n} espaço reservado é especial porque a variável chamada “n” é usado para determinar a pluralização pelo melhor jogo (tecla dict max <= n).
T (…) os objetos podem ser adicionados em conjunto com os outros e com a corda, como cordas regulares.
T.select (s) pode analisar uma string s seguinte HTTP aceito formato de idioma.
Atualizar os arquivos de tradução
Encontrar todas as cordas envoltas em T (…) em .py, .html e arquivos .js:
matches = T.find_matches('path/to/app/folder')
Adicione entradas recém-descobertas em todos os idiomas suportados
T.update_languages(matches)
Add a new supported language (for example German, “de”)
T.languages['de'] = {}
Certifique-se de todos os idiomas contêm as mesmas expressões de origem
known_expressions = set()
for language in T.languages.values():
for expression in language:
known_expressions.add(expression)
T.update_languages(known_expressions))
Finalmente salvar as alterações:
T.save('translations')