WP24Horas
♙ ◴
PARCEIRO RECOMENDADO Vai colocar um WordPress no ar? Comece com uma hospedagem que acompanha o seu projeto. Conhecer a HostGator link patrocinado

Desenvolvimento e Programação

Internationalização de Blocos Gutenberg (i18n)

Por Asllan Maciel2 min de leitura
Internacionalização de Blocos Gutenberg (i18n)
Esta entrada é parte 15 de 20 na série WordPress Extremo: Gutenberg + React + Blocos Customizados

WordPress Extremo: Gutenberg + React + Blocos Customizados

Como Criar um Bloco WordPress com Filtro por Múltiplas Categorias

Bloco de Posts com Filtro por Múltiplas Categorias

Como Filtrar Posts por Categoria em um Bloco Gutenberg

Filtrando Posts por Categoria no Editor do Bloco

Como Criar um Bloco Dinâmico no WordPress com Renderização PHP

Bloco Dinâmico com Renderização no Servidor

Conectando Blocos Gutenberg à REST API

Conectando Blocos com a REST API do WordPress

Componentes Reutilizáveis e Campos Compostos no Gutenberg

Componentes Reutilizáveis e Atributos Compostos em Blocos Gutenberg

Adicionando Imagem Ícone e Classe CSS Personalizada em Bloco Gutenberg

Ícones, Imagens e Classes Personalizadas no Gutenberg

Atributos Visuais e Estilo Dinâmico com Gutenberg

Cor, Alinhamento e Estilo Dinâmico com Gutenberg + React

Como Estilizar Blocos Gutenberg com CSS e Classes Dinâmicas

Estilizando Blocos Gutenberg com CSS e Classes Dinâmicas

Criando Campos Dinâmicos e InspectorControls no Gutenberg

Campos Dinâmicos e InspectorControls no Gutenberg: Deixe Seu Bloco Interativo

Criando Blocos Personalizados com Gutenberg e React

Criando Blocos Personalizados com Gutenberg e React

Como Salvar Dados Personalizados no WordPress Usando Blocos Gutenberg e REST API

Salvando Dados Personalizados no Backend via REST API

Blocos Reutilizáveis com InnerBlocks no Gutenberg

Blocos Reutilizáveis com InnerBlocks no Gutenberg

Comunicação entre Blocos com Block Context API no WordPress

Comunicação entre Blocos com Block Context API no WordPress

Como Criar Blocos Condicionais no Gutenberg com Atributos

Como Criar Blocos Condicionais no Gutenberg com Atributos

Internacionalização de Blocos Gutenberg (i18n)

Internationalização de Blocos Gutenberg (i18n)

Como Carregar Scripts e Estilos no WordPress Apenas Quando Necessário

Scripts e Estilos Condicionais: Carregando apenas quando necessário

Uso de Slots e Templates Personalizados

Como Inserir Blocos Gutenberg via Código, Shortcodes ou PHP

Inserindo Blocos via Código ou Shortcodes

Como Validar e Testar Blocos Gutenberg

Testes e Validação de Blocos com @wordpress/scripts

Como Distribuir Seus Blocos Gutenberg em Plugins ou no GitHub

Distribuindo Seus Blocos: Plugins, Repositório e GitHub

Fala Dev! Blz?

A internacionalização (i18n) é essencial para tornar seus blocos acessíveis a usuários de diferentes idiomas.

O WordPress tem uma infraestrutura robusta para isso, e felizmente o Gutenberg já vem pronto para ser traduzido.


🗂️ O que você vai aprender

  • Como preparar seus blocos para tradução.
  • Como usar o __() e sprintf() do WordPress.
  • Como carregar traduções com wp_set_script_translations().
  • Onde e como gerar os arquivos .pot, .po, .mo.

📦 Estrutura mínima do bloco com i18n

Exemplo: blocks/hello/index.js

import { registerBlockType } from '@wordpress/blocks';
import { __ } from '@wordpress/i18n';
import edit from './edit';
import save from './save';
import metadata from './block.json';

registerBlockType(metadata.name, {
  ...metadata,
  title: __('Hello World', 'wp24h'),
  description: __('A simple hello world block.', 'wp24h'),
  edit,
  save,
});

🔁 Use __(), _x(), sprintf() ou translate() de @wordpress/i18n para qualquer texto exibido.


🧠 i18n nos arquivos edit.js ou save.js

import { __ } from '@wordpress/i18n';

const title = __('Este é um título traduzível', 'wp24h');

📄 block.json com campos traduzíveis

{
  "apiVersion": 2,
  "name": "wp24h/hello",
  "title": "Hello World", 
  "description": "Bloco de exemplo.",
  "category": "widgets",
  "icon": "smiley",
  "textdomain": "wp24h",
  "editorScript": "file:../../dist/hello.js"
}

O textdomain deve bater com o nome do seu plugin (ou do seu tema, se aplicável).


🔄 Carregando traduções via PHP

No Init.php do seu plugin:

add_action('init', function () {
    wp_set_script_translations('wp24h-hello', 'wp24h', plugin_dir_path(__FILE__) . '../../languages');
});

Aqui, 'wp24h-hello' é o handle do script registrado no register_block_type.


🧰 Gerando arquivos .pot

No terminal, use:

npx @wordpress/scripts make-pot ./languages

Isso gera um arquivo .pot com todas as strings encontradas nos blocos.

Para editar e traduzir, use ferramentas como:


📁 Estrutura de pastas ideal

plugin/
├── blocks/
│   └── hello/
│       └── index.js
├── dist/
├── languages/
│   ├── wp24h-pt_BR.po
│   └── wp24h-pt_BR.mo

✅ Checklist de i18n no Gutenberg

EtapaFeito?
Usar __() em todos os textos JS✅
Adicionar textdomain no block.json✅
Chamar wp_set_script_translations()✅
Gerar .pot com make-pot✅
Traduzir .po → .mo✅

✨ Resultado

Com a i18n configurada:

  • Usuários veem textos no idioma do WordPress.
  • Blocos podem ser usados em plugins ou temas multilíngues.
  • Traduções funcionam tanto no editor quanto no frontend.

WordPress Extremo: Gutenberg + React + Blocos Customizados

Como Criar Blocos Condicionais no Gutenberg com Atributos Scripts e Estilos Condicionais: Carregando apenas quando necessário

Sobre o autor

Asllan Maciel

Asllan Maciel, Fundador do WP24Horas, Consultor de Marketing Digital e amante do Empreendedorismo Digital. Tem um caso de amor com o WordPress.