WPML

Aprenda a registrar textos de entrada do usuário de plugins e temas para tradução. Depois de registrados, você pode traduzi-los com a Tradução de Strings.

Como registrar textos de entrada do usuário

Quando um usuário cria novas strings ou atualiza strings existentes, elas precisam ser registradas na tabela de strings do WPML.

Você pode fazer essa chamada com o hook de ação wpml_register_single_string:

do_action( 'wpml_register_single_string', string $context, string $name, string $value )
  • $context – O nome do plugin ou tema, em um formato legível por humanos.
  • $name – O nome da string, que ajuda o tradutor a entender o que está sendo traduzido.
  • $value – A string que precisa ser traduzida.

Considere este exemplo de widget personalizado, que inclui um título, um campo input de linha única e um textarea. Para registrar esses campos para tradução quando as opções do widget forem salvas ou atualizadas, usamos a função update:

Uso do hook de ação wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

Neste exemplo, dizemos ao WPML que ele precisa traduzir os textos de entrada do usuário para os campos input e textarea. Esses textos serão registrados no contexto de strings Widgets com o nome Custom Widgetinput field e Custom Widget – textarea field, respectivamente.

Depois de registrar os textos, você pode usar o hook de ação wpml_translate_single_string para exibir as traduções no front-end.

Como integrar a Tradução de Strings com plugins e temas

Ao integrar a Tradução de Strings com plugins ou temas, é importante certificar-se de que as chamadas existam.

Implemente chamadas condicionais

Envolva suas chamadas em instruções if_function_exists() para que, se o WPML estiver ativado, ele seja chamado e, caso contrário, a operação normal seja mantida.

Lide com a ativação tardia do WPML

Como desenvolvedor de tema ou plugin, você também deve considerar o caso em que o WPML é ativado muito tempo depois que o usuário começa a usar seu tema ou plugin.

Nesses casos, as strings não serão traduzidas porque a chamada para wpml_register_single_string não é feita quando elas são criadas. Para contornar isso, você deve registrar todas as strings do usuário toda vez que a tela do painel de administração do plugin for carregada.

Embora isso adicione um tempo de execução insignificante, garante que as strings sejam sempre enviadas para tradução e estejam atualizadas.

O código deve primeiro verificar se a função wpml_register_single_string existe. Se existir, a função deve ser chamada para registrar todos os textos de entrada do usuário. Veja como funciona:

  • Se a função for chamada com valores em branco ou NULL, o WPML ignorará essas chamadas.
  • Se uma string já existir e não for modificada, o WPML ignorará a chamada.
  • A função só entra em ação se strings novas ou modificadas forem registradas.

Toda a tabela de tradução é armazenada em cache na memória, portanto, chamá-la repetidamente consome muito pouco poder de processamento.

Recursos adicionais

Para registrar textos codificados de temas e plugins para tradução, veja nosso artigo sobre como encontrar strings que não aparecem na página Tradução de Strings.

Para registrar opções de tema ou plugin para tradução, veja nosso guia sobre o uso do arquivo de configuração de idioma.

Para traduzir elementos de tema ou plugin como um grupo, veja nossa Tradução de pacotes de strings.

Escrito por Amir · Última atualização em 7 de junho de 2024