Post-Configurando a internacionalização no seu projeto Django

Autor: saviodiow

Vizualizações: 356

Data de publicação: 30 de Dezembro de 2023 às 22:33

Configurando a Internacionalização no Seu Projeto Django

Se você deseja traduzir páginas de um projeto Django do inglês para o português, o Django oferece suporte à internacionalização (i18n) e localização (l10n). Abaixo está um guia passo a passo para configurar a internacionalização no seu projeto:

1. Configuração Inicial

Certifique-se de que as configurações de internacionalização estejam corretamente definidas no arquivo settings.py. As seguintes configurações devem ser adicionadas ou verificadas:

# settings.py

INSTALLED_APPS = [
    # ...
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.flatpages',
    'django.contrib.humanize',
    'django.contrib.admindocs',
    # ...
]

MIDDLEWARE = [
    # ...
    'django.middleware.locale.LocaleMiddleware',
    # ...
]

LANGUAGES = [
    ('en', 'English'),
    ('pt', 'Portuguese'),
]

LOCALE_PATHS = [
    os.path.join(BASE_DIR, 'locale'),
]

USE_I18N = True
USE_L10N = True
USE_TZ = True

 

2. Inclua os Imports Necessários

No seu arquivo models.py, inclua os imports necessários para suportar a internacionalização:

from django.db import models
from django.utils.translation import gettext_lazy as _

3. Use gettext_lazy para Nomes Descritivos

Ao definir seus modelos, utilize gettext_lazy para envolver os "verbose names" (nomes descritivos) dos campos. Isso permite que o Django identifique essas strings para tradução.

class MyModel(models.Model):
    name = models.CharField(max_length=255, verbose_name=_("Name"))
    description = models.TextField(verbose_name=_("Description"))

 

4. Crie o Diretório de Locale

Crie um diretório chamado locale na pasta raiz do seu projeto. Este será o local onde as traduções serão armazenadas:

mkdir locale

5. Extração de Mensagens

Execute o seguinte comando para extrair as mensagens de texto do código-fonte e criar os arquivos de tradução:

python manage.py makemessages -l pt

Este comando criará o diretório locale/pt/LC_MESSAGES/ e um arquivo django.po dentro dele.

6. Edite os Arquivos de Tradução

Abra o arquivo django.po que foi criado no diretório locale/pt/LC_MESSAGES/ usando um editor de texto ou uma ferramenta de tradução. O conteúdo será semelhante a este:

#: path/to/your/template.html:10
msgid "Hello, world!"
msgstr ""

Adicione a tradução na linha msgstr para a string correspondente:

#: path/to/your/template.html:10
msgid "Hello, world!"
msgstr "Olá, mundo!"

7. Compile as Traduções

Após editar os arquivos de tradução, compile as traduções com o seguinte comando:

python manage.py compilemessages

8. Tradução no Template

Nos seus templates, utilize a tag {% trans %} para marcar o texto que será traduzido:

 

{% load i18n %}

<p>{% trans "Hello, world!" %}</p>

 

Conclusão

Agora seu projeto Django está configurado para suportar múltiplos idiomas. Sempre que precisar adicionar novas traduções, lembre-se de executar o comando makemessages e atualizar o arquivo django.po. Não se esqueça de compilar as traduções antes de testá-las em produção.