-
Notifications
You must be signed in to change notification settings - Fork 12
Internationalization Guide [PT BR]
A internacionalização do Amadeus permite que o mesmo conteúdo seja disponibilizado em diferentes línguas e formatos de acordo com a preferência do usuário, sem a necessidade de reestruturar ou reescrever a aplicação.
É importante entender que o Amadeus reproduz o conteúdo de acordo com a configuração do navegador. Na ausência de tradução, o conteúdo será fornecido por padrão em inglês.
Para utilizar a internacionalização, é necessário adicionar rótulos aos códigos em Python e nos templates. Estes rótulos irão demarcar os textos que devem ser traduzidos ou não.
Uma vez rotulado, é possível gerar arquivos de tradução. Esses arquivos permitem que tradutores preencham com a tradução adequada para cada campo.
O sistema de internacionalização está ativo por padrão. Em caso de otimizações, é possível desativá-lo no arquivo /amadeuslms/amadeus/settings.py e modificar para USE_I18N = False
- Adicionando rótulos ao código em Python
Para demarcar que texto deve ser traduzido no código Python, é utilizado a função ugettext_lazy
, importada do django.utils.translation
. É uma prática comum utilizar o alias _
ao importar para facilitar a escrita. O ugettext_lazy
pode ser utilizada para traduzir constantes e variáveis tanto em models, quanto em views, como no exemplo a seguir:
1 from django.db import models
2 from django.utils.translation import ugettext_lazy as _
3
4 class MyThing(models.Model):
5 name = models.CharField(help_text=_('This is the help text'))
- Adicionando rótulos ao template
Os templates são marcados através de template tags. A primeira template tag é {% load i18n %}
e deve ser inserida no topo de cada template o qual deve ser traduzido, ainda que esse template herde de um template que já possua a tag.
Em seguida, cada termo que deve ser traduzido deve possuir a template tag {% trans %}
, como por exemplo:
1 <title>{% trans "This is the title." %}</title>
2 <title>{% trans myvar %}</title>
A template tag {% trans %}
pode ser inserida em valores constantes ou variáveis.
- Gerando arquivos de tradução
Para gerar os arquivos de tradução, basta executar através do diretório raíz o comando:
$ django-admin makemessages -l pt_BR
Onde "pt_BR" é a língua desejada para obter a tradução. Como resultado, será gerado dentro de cada app do Amadeus o arquivo locale/pt_BR/LC_MESSAGES/django.po
- Traduzindo
Cada arquivo locale/pt_BR/LC_MESSAGES/django.po
contém um cabeçalho iniciado por '#', em seguida algumas informações sobre a versão do arquivo e do tradutor responsável. Por fim, cada linha contém a seguinte sequência:
1 #:origin directory
2 msgid:"Some phrase"
3 msgstr:""
Onde '#' corresponde ao local de origem do arquivo, msgid é a mensagem original a ser traduzida e msgstr é a tradução referente na aquela língua. Basta adicionar a tradução entre as aspas da linha 3.
- Atualizando os arquivos de tradução
Caso sejam adicionados novos rótulos após gerado o arquivo inicial de tradução, é necessário executar o comando responsável por reexaminar todos códigos Python e Templates procurando por novos rótulos e atualizações:
$ django-admin makemessages -a
- Concluindo o processo de tradução
Após concluídas todas modificações e edições, é necessário rodar o comando(dentro de cada app) responsável por compilar as mudanças realizadas de maneira a tornar mais eficiente o processo de tradução:
$ django-admin compilemessages
Depois desse processo, as traduções estão prontas para serem usadas!
1 # SOME DESCRIPTIVE TITLE.
2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 #, fuzzy
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2016-10-26 14:47-0300\n"
12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14 "Language-Team: LANGUAGE <[email protected]>\n"
15 "Language: \n"
16 "MIME-Version: 1.0\n"
17 "Content-Type: text/plain; charset=UTF-8\n"
18 "Content-Transfer-Encoding: 8bit\n"
19 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20
21 #: files/forms.py:12 files/forms.py:29
22 msgid "File too large (Max 10MB)"
23 msgstr "Arquivo muito grande (máximo de 10MB)"
24
25 #: files/models.py:20
26 msgid "Professors"
27 msgstr "Professores"
28
29 #: files/models.py:21
30 msgid "Description"
31 msgstr "Descrição"
32
33 #: files/models.py:22 files/models.py:27
34 msgid "File"
35 msgstr "Arquivo"
36
37 #: files/models.py:23
38 msgid "Type file"
39 msgstr "Tipo de arquivo"
40
41 #: files/models.py:28
42 msgid "Files"
43 msgstr "Arquivos"
44
45 #: files/templates/files/create_file.html:10
46 msgid "Add File"
47 msgstr "Adicionar arquivo"
48
49 #: files/templates/files/create_file.html:38
50 #: files/templates/files/update_file.html:40
51 msgid "Choose your file..."
52 msgstr "Escolha seu arquivo..."
53
54 #: files/templates/files/create_file.html:68
55 #: files/templates/files/update_file.html:73
56 msgid "The file size shouldnt exceed 10MB"
57 msgstr "O tamanho máximo não pode exceder 10MB"
58
59 #: files/templates/files/create_file.html:74
60 #: files/templates/files/delete_file.html:34
61 #: files/templates/files/update_file.html:79
62 msgid "Close"
63 msgstr "Fechar"
64
65 #: files/templates/files/create_file.html:75
66 #: files/templates/files/update_file.html:80
67 msgid "Submit"
68 msgstr "Enviar"
69
70 #: files/templates/files/delete_file.html:12
71 msgid "Delete File"
72 msgstr "Deletar arquivo"
73
74 #: files/templates/files/delete_file.html:30
75 msgid "Are you sure to delete "
76 msgstr "Tem certeza que deseja deletar "
77
78 #: files/templates/files/delete_file.html:35
79 msgid "Delete"
80 msgstr "Deletar"
81
82 #: files/templates/files/update_file.html:12
83 msgid "Edit File"
84 msgstr "Editar arquivo"
85
86 #: files/templates/files/update_file.html:48
87 msgid "See current file"
88 msgstr "Visualizar arquivo atual"