Internacionalização dos Modelos no Django
A internacionalização (i18n) dos modelos é um passo fundamental para criar aplicações Django que suportam múltiplos idiomas. Neste post, vamos explorar como você pode internacionalizar seus modelos para suportar Português do Brasil (PT-BR) e Inglês (EN), e como essa abordagem pode ser estendida para qualquer número de idiomas.
Configuração Inicial
Antes de começarmos, é importante ter o Django instalado e configurado. Além disso, você precisará instalar a biblioteca django-modeltranslation
, que facilita a tradução de campos de modelos.
pip install django-modeltranslation
Adicione modeltranslation
à sua lista de INSTALLED_APPS
no arquivo settings.py
.
Modelos e Tradução
Vamos supor que você tenha um modelo chamado Produto
, que contém um campo descricao
. Para internacionalizar este campo, você fará o seguinte:
- Defina os Idiomas Suportados: No
settings.py
, definaLANGUAGES
com os códigos dos idiomas que você deseja suportar.
LANGUAGES = (
('pt-br', 'Português do Brasil'),
('en', 'English'),
)
- Crie uma Classe de Tradução: No mesmo aplicativo do seu modelo, crie um arquivo chamado
translation.py
e defina uma classe de tradução para o seu modelo.
from modeltranslation.translator import register, TranslationOptions
from .models import Produto
@register(Produto)
class ProdutoTranslationOptions(TranslationOptions):
fields = ('descricao',)
- Migre o Banco de Dados: Execute os comandos abaixo para aplicar as alterações ao banco de dados.
python manage.py makemigrations
python manage.py migrate
Utilizando os Modelos Internacionalizados
Com os modelos internacionalizados, você pode salvar e recuperar informações em diferentes idiomas. Por exemplo, para salvar a descrição em PT-BR e EN:
from .models import Produto
produto = Produto()
produto.descricao_pt_br = 'Uma descrição em Português do Brasil'
produto.descricao_en = 'A description in English'
produto.save()
Para recuperar a descrição no idioma atual do usuário:
from django.utils.translation import get_language
from .models import Produto
produto = Produto.objects.get(pk=1)
idioma_atual = get_language()
descricao = getattr(produto, f'descricao_{idioma_atual}')
print(descricao)
Conclusão
A internacionalização dos modelos no Django permite que você crie aplicações verdadeiramente globais. Com a configuração correta e o uso da biblioteca django-modeltranslation
, você pode facilmente gerenciar conteúdo multilíngue em seus modelos. Lembre-se de que a flexibilidade do Django torna possível suportar quantos idiomas você precisar, sem limites!
Para mais detalhes, você pode assistir a esse video tutorial.
Repositório para mais detalhes: [link do repositório]
Conteúdo que você vai ver:
- ✅ Configurar no Settings
- ✅ Criando Modelo
- ✅ Configurações no
admin.py
etranslation.py
- ✅ Lista Artigos na Home