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')