Entendendo a Estrutura
Criar uma estrutura personalizada para armazenar seus arquivos de tradução dentro de um tema filho é uma excelente prática, especialmente para traduções que você deseja manter personalizadas e independentes das atualizações dos temas e plugins originais.
Estrutura Proposta:
seu-tema-filho/
├── languages/
│ ├── plugins/
│ │ └── seu-plugin/seu-plugin.mo
│ └── themes/
│ └── seu-tema/seu-tema.mo
└── functions.php
Código no functions.php
Para que o WordPress reconheça e utilize os arquivos de tradução localizados nesta estrutura personalizada, você precisará adicionar o seguinte código ao seu arquivo functions.php
:
PHP
function meu_tema_filho_load_textdomain() {
load_textdomain( 'seu-plugin', get_stylesheet_directory() . '/languages/plugins/seu-plugin/seu-plugin.mo' );
load_textdomain( 'seu-tema', get_stylesheet_directory() . '/languages/themes/seu-tema/seu-tema.mo' );
}
add_action( 'after_setup_theme', 'meu_tema_filho_load_textdomain' );
Explicando o Código:
meu_tema_filho_load_textdomain()
: Essa função define o nome da função que carregará os arquivos de tradução.load_textdomain()
: Essa função é nativa do WordPress e é responsável por carregar um arquivo.mo
de tradução.seu-plugin
eseu-tema
: Substitua esses nomes pelos textdomains (identificadores únicos) dos seus plugins e temas, respectivamente.get_stylesheet_directory()
: Essa função retorna o caminho completo até a pasta raiz do seu tema filho.add_action( 'after_setup_theme', 'meu_tema_filho_load_textdomain' )
: Essa linha adiciona a função criada anteriormente ao hookafter_setup_theme
, garantindo que ela seja executada após a inicialização do tema.
Criando os Arquivos .mo
Para criar os arquivos .mo
, você pode utilizar ferramentas como o Poedit. Essa ferramenta permite que você edite os arquivos .po
(que contêm as strings a serem traduzidas) e gere os arquivos .mo
compilados, que são os que o WordPress realmente utiliza.
Vantagens dessa Estrutura:
- Personalização: Você pode personalizar as traduções sem afetar os arquivos originais dos plugins e temas.
- Organização: Mantém os arquivos de tradução organizados em uma estrutura lógica.
- Atualizações: As suas traduções personalizadas não serão sobrescritas por futuras atualizações.
Considerações Adicionais:
- Textdomains: Certifique-se de utilizar os textdomains corretos para cada plugin e tema. Você pode encontrar o textdomain nos arquivos
.pot
ou nos próprios arquivos de código dos plugins e temas. - Múltiplos Idiomas: Se você precisar suportar múltiplos idiomas, você pode criar pastas adicionais dentro da pasta
languages
para cada idioma. - Plugins de Tradução: Existem plugins como o Loco Translate que facilitam a criação e gestão de traduções no WordPress.
Exemplo Completo:
PHP
function meu_tema_filho_load_textdomain() {
load_textdomain( 'woocommerce', get_stylesheet_directory() . '/languages/plugins/woocommerce/woocommerce.mo' ); // Exemplo para WooCommerce
load_textdomain( 'my-custom-theme', get_stylesheet_directory() . '/languages/themes/my-custom-theme/my-custom-theme.mo' );
}
add_action( 'after_setup_theme', 'meu_tema_filho_load_textdomain' );
Com essa configuração, o WordPress buscará os arquivos de tradução personalizados para o WooCommerce e para o seu tema personalizado dentro da estrutura definida.
Dica: Para facilitar a criação e gestão dos arquivos de tradução, você pode utilizar ferramentas como o Poedit ou plugins como o Loco Translate.
Exemplo 2:
// Traduções Personalizadas pt-br
function meu_tema_filho_load_textdomain() {
load_textdomain( 'elessi-theme', get_stylesheet_directory() . '/languages/themes/elessi-theme-pt_BR.mo', 'pt_BR' );
load_textdomain( 'nasa-core', get_stylesheet_directory() . '/languages/plugins/nasa-core-pt_BR.mo', 'pt_BR' );
}
add_action( 'after_setup_theme', 'meu_tema_filho_load_textdomain', 20 );
Como corrigir possíveis problemas nas traduções personalizadas:
Vamos tentar resolver o problema das traduções personalizadas no seu site WordPress. Aqui estão algumas verificações e ajustes que podem ajudar:
- Verifique o Text Domain: Certifique-se de que os text domains utilizados no código correspondem exatamente aos text domains usados nos arquivos de idioma dos plugins e temas. O código fornecido usa
nasa-core
eelessi-theme
. Verifique se são esses mesmos text domains que aparecem nas chamadas__()
ou_e()
nos arquivos PHP dos plugins e temas. - Carregar Traduções do Tema Filho: Como você está usando um tema filho, verifique se as traduções estão sendo carregadas corretamente do tema pai antes de adicionar suas traduções personalizadas. Você pode ajustar o código para garantir isso:
// Traduções Personalizadas pt-br
function meu_tema_filho_load_textdomain() {
load_child_theme_textdomain( 'elessi-theme', get_stylesheet_directory() . '/languages/themes' );
load_textdomain( 'nasa-core', get_stylesheet_directory() . '/languages/plugins/nasa-core-pt_BR.mo' );
}
add_action( 'after_setup_theme', 'meu_tema_filho_load_textdomain' );
- Estrutura de Pastas e Nomes de Arquivos: Confirme que os arquivos
.mo
estão na estrutura correta. Para temas, normalmente, a estrutura de pastas seria:
wp-content/themes/seu-tema-filho/languages/themes/elessi-theme-pt_BR.mo
Para plugins:
wp-content/themes/seu-tema-filho/languages/plugins/nasa-core-pt_BR.mo
- Permissões do Servidor: Certifique-se de que as permissões dos arquivos e pastas permitem que o WordPress acesse e carregue os arquivos
.mo
. Geralmente, as permissões devem ser 755 para pastas e 644 para arquivos. - Cache: Além do cache do navegador, considere limpar qualquer cache de plugins de cache ou do próprio servidor.
- Depuração: Ative o modo de depuração do WordPress para verificar se há algum erro relacionado ao carregamento dos arquivos de tradução:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Os logs serão salvos em wp-content/debug.log
.
- Prioridade do Hook: Tente ajustar a prioridade do hook para garantir que as traduções sejam carregadas no momento certo:
add_action( 'after_setup_theme', 'meu_tema_filho_load_textdomain', 20 );
- Função de Depuração: Adicione uma função de depuração para confirmar se os arquivos
.mo
estão sendo carregados corretamente:
function meu_tema_filho_load_textdomain() {
$result_nasa = load_textdomain( 'nasa-core', get_stylesheet_directory() . '/languages/plugins/nasa-core-pt_BR.mo' );
$result_elessi = load_textdomain( 'elessi-theme', get_stylesheet_directory() . '/languages/themes/elessi-theme-pt_BR.mo' );
if ( ! $result_nasa ) {
error_log( 'Falha ao carregar nasa-core-pt_BR.mo' );
}
if ( ! $result_elessi ) {
error_log( 'Falha ao carregar elessi-theme-pt_BR.mo' );
}
}
Verifique o log de erros para mensagens de falha.
Essas verificações e ajustes devem ajudar a identificar o problema. Ao seguir esses passos, você terá um controle mais preciso sobre as traduções do seu site WordPress e poderá manter suas personalizações mesmo após atualizações de plugins e temas.