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'),
)
  1. 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',)
  1. 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 e translation.py
  • ✅ Lista Artigos na Home

Olá,

Você precisa fazer login no sistema para comentar.

Entrar

Comentários

Total de Comentários: 1

Open Codigo
Open Codigo

asdasd