Internacionalizar o plugin para que as seqüências de caracteres possam ser traduzidas no WPML

Um desenvolvedor de terceiros criou um widget de texto com título, corpo e miniatura. Este acompanhamento de plug-in de widget não foi internacionalizado e, portanto, as cadeias de caracteres não aparecem no gerenciamento de tradução de string do WPML. Eu preciso deles para serem carregados. Então eu estou tentando registrar o domínio das conexões como indicado aqui , mas o código que eu adicionei:

function accompany_text_init() { $plugin_dir = basename(dirname(__FILE__)); load_plugin_textdomain( 'accompany-text', false, $plugin_dir ); } add_action('init', 'accommpany_text_init'); 

não é carregado. Parece que o widget não está registrado. Aqui está o código completo . O que estou fazendo de errado? A posição de chamada está desligada? Um novato de codificação de plugin aqui e um PHP-er junior assim apreciariam alguma ajuda.

Solutions Collecting From Web of "Internacionalizar o plugin para que as seqüências de caracteres possam ser traduzidas no WPML"

Você deve usar as funções de tradução .

Exemplo:

 _e( 'Number', 'accompany-text' ); 

Você precisará adicionar o seguinte

 $plugin_dir = basename(dirname(__FILE__)); load_plugin_textdomain( 'accompany-text', false, $plugin_dir ); 

dentro do qual a class do widget é inicializada. No seu exemplo, dentro da function AccompanyPostWidget .

Dito isto, não parece haver nenhuma string de texto que seja traduzível na class de widgets que você ligou. Por exemplo, para traduzir o número da palavra (como na resposta de Toscho)

 < ?php _e( 'Number', 'accompany-text' ); ?> 

Como um exemplo mais completo, o seguinte carrega o domínio do texto e torna a descrição do Widget traduzível:

  function AccompanyPostWidget(){ $plugin_dir = basename(dirname(__FILE__)); load_plugin_textdomain( 'accompany-text', false, $plugin_dir ); $widget_ops = array('classname' => 'AccompanyPostWidget', 'description' => __( 'Displays a Accompany post with thumbnail','accompany-text'); $this->WP_Widget('AccompanyPostWidget', 'Accompany Text Widget', $widget_ops); } 

Observação lateral

O seguinte seria “normalmente” suficiente, mas não é carregado a tempo de traduzir o título e a descrição do widget:

 function accompany_text_init() { $plugin_dir = basename(dirname(__FILE__)); load_plugin_textdomain( 'accompany-text', false, $plugin_dir ); } add_action('init', 'accompany_text_init'); 

Depois de uma grande ajuda – apesar de um pouco atrasado – dos caras da WPML , especialmente @Brooks, consegui resolver o código corrigido. A function icl_register_strings () estava no lugar errado, então o WPML desliguei-o para a atualização () Método de onde se pode desinfetar as variables ​​da instância antes de serem usadas pelo widget. A function icl_t () foi colocada no método widget (). O widget () que é usado para exibir conteúdo dentro do widget quando ele aparece na barra lateral em seu blog. Eles também alteraram um dos argumentos $ name de icl_register_string ($ context, $ name, $ value) para ‘widget body -‘. $ this-> id, então podemos agora ter valores exclusivos armazenados para esse valor. O código pode ser visto aqui: https://github.com/jasperf/Accompany-Widget