WordPress Extremo
- Como Criar um Plugin WordPress com Composer e PSR-4 – WordPress Extremo Dia 1
- Como Usar Serviços em Plugins para Código Limpo e Desacoplado – WordPress Extremo Dia 2
- Como Usar Repositórios em Plugins para Separar Lógica de Dados – WordPress Extremo Dia 3
- Injeção de Dependência Manual em Plugins WordPress – WordPress Extremo Dia 4
- Hooks Avançados no WordPress: apply_filters, do_action e boas práticas
- Criando Comandos WP-CLI Personalizados para Plugins WordPress
- Criando Blocos Personalizados com Gutenberg e React
- Estilizando Blocos Gutenberg com CSS e Classes Dinâmicas
- Cor, Alinhamento e Estilo Dinâmico com Gutenberg + React
- Ícones, Imagens e Classes Personalizadas no Gutenberg
- Componentes Reutilizáveis e Atributos Compostos em Blocos Gutenberg
- Conectando Blocos com a REST API do WordPress
- Bloco Dinâmico com Renderização no Servidor
- Filtrando Posts por Categoria no Editor do Bloco
- Bloco de Posts com Filtro por Múltiplas Categorias
- Como Gerenciar Logs e Erros Internos em Plugins WordPress (Do Jeito Certo)
- Tratamento de Erros e Uso Inteligente de Exceptions em Plugins WordPress
- Segurança Profunda em Plugins WordPress
- Internacionalização e Localização (i18n e l10n)
Fala, pessoal! 👋
Aqui é o Asllan Maciel e hoje vamos mergulhar em uma parte fundamental para quem quer distribuir plugins de WordPress para o mundo: internacionalização e localização — os famosos i18n e l10n.
Se você já criou um plugin e usou strings direto no código como "Erro ao salvar dados"
ou "Clique aqui"
, saiba que isso dificulta (ou impede) a tradução do seu plugin para outros idiomas.
Vamos resolver isso e deixar seu projeto pronto para ser usado em qualquer idioma!
🌍 Diferença entre i18n e l10n
- Internacionalização (i18n)
É o processo de preparar seu código para ser traduzido — ou seja, usar funções que permitem a tradução, organizar arquivos.pot
etc. - Localização (l10n)
É a parte onde de fato traduzimos os textos — criando arquivos.po
e.mo
para o idioma desejado.
🧰 Como preparar seu plugin para i18n no WordPress
1. Text Domain
É o identificador único para as traduções do seu plugin. Deve ser igual ao slug do plugin.
Exemplo:
Se o nome do plugin for wp-arquitetura-extrema.php
, o domínio deve ser:
load_plugin_textdomain('wp-arquitetura-extrema', false, dirname(plugin_basename(__FILE__)) . '/languages');
Inclua isso no seu arquivo principal do plugin logo após carregar o autoload.
2. Funções de tradução
Aqui estão as funções que você deve usar em vez de strings fixas:
Função | Uso |
---|---|
__() | Retorna a string traduzida |
_e() | Exibe a string traduzida |
_x() | Como __ , mas com contexto |
_n() | Para pluralização (singular , plural , $number , domain ) |
_nx() | Plural com contexto |
Exemplo:
echo __('Erro ao processar o pagamento', 'wp-arquitetura-extrema');
_e('Clique aqui para continuar', 'wp-arquitetura-extrema');
3. Estrutura de Pastas
Seu plugin deve conter uma pasta chamada languages/
.
Dentro dela ficarão os arquivos de tradução: .pot
, .po
e .mo
.
Exemplo:
wp-arquitetura-extrema/
├── languages/
│ ├── wp-arquitetura-extrema.pot
│ ├── wp-arquitetura-extrema-pt_BR.po
│ └── wp-arquitetura-extrema-pt_BR.mo
🛠️ Gerando o Arquivo .pot
Você pode usar o WP-CLI para gerar automaticamente o arquivo .pot
com todas as strings que podem ser traduzidas.
Comando:
wp i18n make-pot . languages/wp-arquitetura-extrema.pot --slug=wp-arquitetura-extrema
Lembre-se de rodar o comando dentro da pasta do seu plugin.
🧪 Exemplo prático no seu plugin
Suponha que você tenha isso no seu plugin:
echo 'Erro ao conectar com a API';
Substitua por:
echo __('Erro ao conectar com a API', 'wp-arquitetura-extrema');
Agora a string está pronta para ser traduzida.
🔄 Traduzindo com Poedit
- Abra o arquivo
.pot
no Poedit. - Adicione as traduções para
pt_BR
. - Salve como
wp-arquitetura-extrema-pt_BR.po
. - O Poedit vai gerar automaticamente o
.mo
.
Coloque ambos em languages/
e está pronto.
🔗 Lembrando os dias anteriores
- Já viu como organizamos nosso plugin com Composer e PSR-4? 👉 Dia 01/15
- Já sabe como criar serviços e repositórios desacoplados? 👉 Dia 02/15
- Já criamos logs para rastrear erros no plugin? 👉 Dia 07/15
✨ Encerrando
Adicionar i18n/l10n mostra profissionalismo e respeito ao seu público internacional.
Se você está construindo um plugin para mais do que só você mesmo, isso é obrigatório.
🚀 Quer avançar mais rápido?
🔗 Faça parte dos nossos cursos e mentorias
📲 Siga @wp24horas no Instagram e YouTube.
💬 Deixe seu comentário aqui abaixo!