Suporte multilíngue
A pygeoapi suporta multilingualismo a três níveis:
- Na configuração da pygeoapi pode fornecer títulos e resumos do serviço e coleções em múltiplas linguagens.
- Um conjunto de strings de texto traduzíveis que são traduzidas e introduzidas como parte dos formatos de saída JSON e HTML. As traduções são geridas pela framework Babel
- Nomes/valores de colunas em conjuntos de dados baseados em funcionalidades. Se um conjunto de dados contém colunas em múltiplas línguas, a pygeoapi tentará devolver respostas de dados na língua solicitada
Note
As mensagens de erro não são traduzidas, para facilitar copy-paste do erro para o stackoverflow e GitHub issues.
A negociação de língua é acionada pelo cabeçalho HTTP Accept-Language
enviado pelo cliente, e pode sempre ser substituída com o parâmetro URL ?lang=fr
.
Configuração multilíngue
Na configuração da pygeoapi podemos indicar as línguas suportadas pela instância. A primeira língua é a língua padrão. Para a maioria das propriedades de configuração textuais podemos fornecer uma tradução em línguas alternativas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Strings de texto dentro de templates HTML Jinja2
A maioria das strings de texto traduzíveis existe dentro dos templates HTML Jinja2. As strings de texto a serem traduzidas são colocadas numa tag trans
, da seguinte forma:
1 |
|
O Babel fornece um utilitário que extrai todas as chaves a serem traduzidas dos templates para um único ficheiro .pot
.
pybabel extract -F babel-mapping.ini -o locale/messages.pot ./
pybabel extract -F babel-mapping.ini -o locale/messages.pot ./
O ficheiro .pot
resultante é usado para criar ou atualizar ficheiros .po
existentes, que existem para cada língua, contendo as traduções atuais.
pybabel init -d locale -l it -i locale/messages.pot
pybabel init -d locale -l it -i locale/messages.pot
Os ficheiros .po
são armazenados no repositório de código fonte da pygeoapi no GitHub. Pode criar um Pull Request para adicionar ou atualizar as suas linguagens favoritas. Os ficheiros .po
também podem ser adicionados a software de tradução como transifex.com.
Editar um ficheiro .po
Abra um ficheiro .po
da pasta locale num editor de texto. Edite alguns valores. Guarde o ficheiro e reinicie o serviço. Verifique se o conteúdo atualizado está disponível. Também pode tentar adicionar uma nova chave a um template e traduzi-la através do mecanismo .po
.
Anotar a língua das colunas de dados
A pygeoapi inclui um mecanismo para influenciar as respostas da API baseado na língua solicitada. Se o nosso serviço opera com requisitos multilíngues, pode fazer sentido adicionar colunas textuais em múltiplas línguas. Por exemplo, na configuração da pygeoapi podemos então indicar qual coluna deve ser usada como o campo título, para qual língua.
Publicar um conjunto de dados multilíngue
Para este workshop, preparámos um conjunto de dados multilíngue de hotspots de wifi gratuitos em Florença
(workshop/exercises/data/free-wifi-florence.csv
). Vamos adicionar o conjunto de dados à configuração da pygeoapi usando o provedor CSV. Vamos adicionar uma configuração title-field com para cada coluna traduzida a língua relevante.
1 2 3 4 5 6 |
|
Vamos testar a configuração navegando para a página de itens da coleção e mudando a língua anexando ?lang=it
, ?lang=de
ao URL.
Resumo
Parabéns! Personalizámos a pygeoapi para suportar múltiplas línguas.