i18n dos modelos Django

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:

  1. Defina os Idiomas Suportados: No settings.py, defina LANGUAGES 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 python manage.py makemigrations e python manage.py migrate para aplicar as alterações ao banco de dados.

 

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 podem ver esse video tutorial. 

 

Repositório para mais detalhes

 

Conteúdo que você vai ver: 

✅ Configurar no Settings 

✅ Criando Modelo 

✅ Configurações no admin.py e translation.py 

✅ Lista Artigos na Home

 

Comentários

Total de Comentários: 0