- 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
- 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)
- Criando Settings Pages Profissionais no WordPress
- Permissões Customizadas e Controle de Acesso em Plugins WordPress
- Separação Clara de Camadas: Core, Domain e Infra
- Atualizações Automáticas via GitHub.
- Checklist Final de Publicação: WordPress.org e Produção
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.potetc. - Localização (l10n)
É a parte onde de fato traduzimos os textos — criando arquivos.poe.mopara 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-extremaLembre-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
.potno 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!





















