Posso deixar de fora o textdomain do plugin para os termos usados no core?

10

Eu tenho um plugin que coloca status dos posts nos menus de admin do tipo post. Eu estou no meio da internacionalização, e estou me perguntando como lidar com essa situação.

O plug-in usa algumas strings exclusivas que receberão um textdomain assim:

__( 'Select the post statuses to <strong>exclude</strong> from post type admin menus', 'csmpmsi' )

Mas também há casos em que estou usando uma palavra relacionada ao núcleo para seu significado relacionado ao núcleo, como este: __( 'Pages' ) . Nessa situação, parece fazer sentido para mim excluir o textdomain e aproveitar os termos que já estão localizados no núcleo. No entanto, o códice parece muito explícito:

  

Se você está tentando traduzir um plug-in, o mesmo conselho acima se aplica, exceto que

     
  • você deve usar um domínio, que é carregado em um gancho do seu plugin

  •   
  • todas as chamadas de tradução devem se tornar __ ('text', 'domain-name')

  •   

Então este é o WP-kosher?

    
por mrwweb 26.12.2012 / 23:57

3 respostas

14

Nunca confie em sequências principais para tradução, elas podem mudar ou obter um parâmetro context a qualquer momento. Quando isso acontecer, seus usuários receberão uma interface parcialmente traduzida e seus tradutores não terão como corrigir isso.

Tenha também em mente que a mesma string não é necessária traduzida em todos os lugares com a mesma palavra. Mesmo sem um parâmetro de contexto, pode ser útil usar uma tradução diferente para o seu plugin em alguns idiomas. Mas isso não seria possível se você não incluir a string no seu plug-in.

Veja esta discussão de bate-papo tivemos alguns dias atrás sobre este assunto.

    
por fuxia 27.12.2012 / 00:18
4

Sim, mas por favor não. Isso é como um padrão de codificação, é melhor segui-lo mesmo quando você pode obter uma pequena vantagem ignorando-o.

Razões melhores:

  1. Na versão 3.5, o WordPress não possui arquivos de tradução monolíticos, foi dividido em 3 partes por motivos de desempenho. Se esta tendência continuar, você pode ter certeza de que o domínio padrão será carregado quando você tentar usá-lo em __('Pages') ?

  2. Você não salva o trabalho no localizador - Ferramentas de tradução como o poedit não sabem como lidar com dois domínios de tradução em um arquivo e, no seu exemplo, eles gerarão um arquivo .po que contém a palavra 'Páginas', mesmo se você usar o domínio padrão para isso. O localizador não verifica o uso real das sequências que ele traduz, a menos que ele precise entender o contexto para que ele não perceba o domínio diferente e traduza a palavra. Além disso, se o localizador conhecer suas ferramentas, ele terá um banco de dados de tradução baseado nos arquivos principais de tradução do WordPress, de modo a permitir que o poedit traduza automaticamente palavras como "Páginas".

por Mark Kaplun 27.12.2012 / 00:39
0

Você pode experimentar

add_action('wp',function(){
    load_default_textdomain();
    _e('Settings');
});

Ou

add_action('wp',function(){
    $locale = is_admin() ? get_user_locale() : get_locale();
    load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
    load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo" );

    // WPMU
    //load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo" );
    //load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo" );

    _e('Settings');
    _e('First Name');
    _e('Last Name');
});

Referência: enlace

Boa sorte !!

    
por Ann 07.09.2017 / 22:28