1. Escreva com a localização em mente
Não use echo
ou print()
produza saída de texto; use as funções do WordPress __()
e _e()
:
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
e __()
fornecerá a tradução - no idioma atual - do texto fornecido como o primeiro parâmetro. _e()
produzirá o texto enquanto __()
o retornará.
O segundo parâmetro é o domínio do texto , você o usará para informar ao WordPress que o texto fornecido como o primeiro parâmetro pertence a este plugin, você pode usar qualquer nome que desejar, mas eu prefiro usar o mesmo nome que usei para o plugin arquivo de diretório, acho mais intuitivo.
Como gerar texto dinâmico como: "Olá, <nome de usuário>"?
Com __()
e sprintf()
:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
2. Prepare os arquivos .pot / .po / .mo
Definições
- O arquivo .pot : é colocado à sua disposição pelo desenvolvedor do plugin e é usado como ponto de partida para criar novas traduções, o WordPress não o utiliza.
- Um arquivo .po : é um arquivo de tradução que você ou outra pessoa iniciou, e talvez tenha concluído, o WordPress não o usa.
- Arquivo A.mo : é criado automaticamente pelo Poedit sempre que você salva um arquivo .po, tudo o que você pode fazer com esses arquivos é carregá-los ou carregá-los novamente sempre que você criar ou atualizar um arquivo .po. O WordPress obtém traduções de arquivos .mo .
Abra o Poedit e crie um novo catálogo (Arquivo ›Novo Catálogo ...) com estas configurações:
- Informações do projeto: use suas informações (ou sua equipe), o idioma e o país devem corresponder ao idioma padrão do plug-in
- Caminhos:
- Caminho base:
.
- Caminhos: remova tudo e adicione
..
(armazenaremos o arquivo de idioma em um subdiretório de plug-in chamado de idiomas)
- Palavras-chave: remover tudo e adicionar
__
e_e
Salve o catálogo e verifique os arquivos do plug-in em busca de texto traduzível, pressionando o botão Atualizar. Quando a atualização terminar, feche esse catálogo, você não precisará atualizar esse arquivo, a menos que adicione novas strings traduzíveis (por exemplo, incluídas ou ) no seu plug-in./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
__()
_e()
Agora vamos criar a primeira tradução (usarei fr_FR):
Usando Podeit , crie um catálogo a partir de um arquivo POT
(Arquivo ›Novo Catálogo a partir do Arquivo POT ...) :
- Informações do projeto: Use suas informações (ou sua equipe), altere o idioma e o país , usarei francês e França
- Caminhos: Não mude
- Palavras-chave: Não chame
Salve o catálogo como . Traduza algumas ou todas as seqüências de caracteres, salve o arquivo .po novamente, faça o upload dos arquivos .po e .mo./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
Observe que sempre que você salva um arquivo .po, um arquivo .mo é gerado com o mesmo nome, o nome do arquivo .po é crucial , ele é composto da concatenação do domínio de texto do plug-in (my-plugin) e do código do idioma ( fr_FR), sempre nomeie seus arquivos .po para plugins como este: [textdomain] - [locale] .po , eis alguns exemplos:
- Italiano / Itália:
wpcf7-it_IT.po
- Português / Brasil:
wpcf7-pt_BR.po
- Árabe:
wpcf7-ar.po
... Sim!
Sempre que o plug-in for atualizado com novo texto, atualize o arquivo po, traduza novas strings e recarregue novamente os arquivos .po e .mo
3. Instrua o plugin a carregar o texto traduzido para o idioma atual
Em algum lugar do seu plug-in, você deve dizer ao WordPress para usar o seu arquivo .mo, você pode fazê-lo usando este código no início do seu arquivo de plug-in:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
Substitua my-plugin
pelo nome do seu plug-in no 1º e no 3º parâmetro da load_plugin_textdomain
função.
4. Teste e solucione problemas
Alguns motivos podem não funcionar:
- Strings não são importadas para o arquivo .pot ou .po
- → Configurações incorretas do catálogo (caminho ou palavras-chave ou ambas)
- O texto não é traduzido no site WordPress
- → arquivo .mo para esse idioma ausente ou com um nome de arquivo errado
- → Domínio de texto não usado (substitua
_e('my text')
por _e('my text', 'my-plugin')
)
- → Domínio de texto não carregado (use o exemplo acima com os parâmetros corretos, o WP não avisará sobre erros)
A resposta de Nabil é bastante completa, mas há uma variação fácil, desde que:
Seu plugin está no repositório de plugins WordPress.org
Você deseja exigir que seu plug-in funcione apenas com o WordPress 4.6 ou superior.
Os passos são os seguintes:
No arquivo readme.txt do seu plug-in, adicione
Requires at least: 4.6
. Consulte https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/se ainda não estiver, faça o upload do seu plug-in no repositório de plug-ins do WordPress. Veja https://wordpress.org/plugins/developers/add/ .
Encontre o domínio slug / texto do seu plugin. Para fazer isso, acesse a página do seu plug-in no repositório de plug-ins do WordPress. O URL será como https://wordpress.org/plugins/your-plugin-slug/ . Essa última parte da URL, "your-plugin-slug", é a lesma do seu plugin. É isso que você usa para o domínio de texto das funções de tradução.
Use as funções de tradução do WordPress em seu plugin (como
__e(‘hello’, ‘my-plugin-domain’);
). Apenas certifique-se de usar o domínio de texto do plug-in correto, adquirido na etapa anterior. Consulte https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ para obter mais informações.Se você seguir as etapas acima, o WordPress cuidará de:
(Resposta da minha postagem no blog aqui: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )
fonte