Posso deixar o domínio de texto do plug-in para termos usados ​​no núcleo?

10

Eu tenho um plugin que coloca status de postagem nos menus de administração do tipo de postagem. Estou no meio da internacionalização e estou me perguntando como lidar com essa situação.

O plug-in usa algumas strings exclusivas que obterão um domínio de texto como este:

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

Mas depois há também casos em que eu estou usando uma palavra relacionada-core para seu significado core-relacionadas, como este: __( 'Pages' ). Nesta situação, parece fazer todo o sentido excluir um domínio de texto e aproveitar os termos que já estão localizados no núcleo. No entanto, o códice parece muito explícito:

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

  • você deve usar um domínio, carregado em um gancho do seu plug-in

  • toda chamada de tradução deve se tornar __ ('text', 'domain-name')

Então esse é o WP-kosher?

mrwweb
fonte
11
Obrigado por fazer uma pergunta instigante, as respostas (de toscho e Mark Kaplun até agora) foram interessantes e úteis para mim!
Webaware

Respostas:

14

Nunca confie nas principais strings para tradução, pois elas podem mudar ou obter um contextparâmetro a qualquer momento. Quando isso acontece, seus usuários obtêm uma interface parcialmente traduzida e seus tradutores não têm como corrigir isso.

Lembre-se também de 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 plug-in em alguns idiomas. Mas isso não seria possível se você não incluir a string no seu plugin.

Veja esta discussão de bate - papo que tivemos alguns dias atrás sobre este tópico.

fuxia
fonte
Lembre-se também de que a string ainda aparecerá no seu arquivo POT, mesmo que não tenha um domínio de texto.
Scribd
@scribu Depende do analisador. O plugin de localização de codestyling o ignorará.
fuxia
Parece que há alguma discordância entre esta resposta e esta resposta sobre uma questão quase idêntica ...
mrwweb
4

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

Melhores razões:

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

  2. Você não salva o trabalho no localizador - Ferramentas de tradução como poedit não sabem como lidar com dois domínios de tradução em um arquivo e, no seu exemplo, elas geram um arquivo .po que contém a palavra 'Páginas', mesmo que você use o domínio padrão para ele. O localizador não verifica o uso real das seqüências de caracteres que ele traduz, a menos que precise entender o contexto, para que ele não observe o domínio diferente e traduza a palavra. Além disso, se o localizador conhece suas ferramentas, ele terá um banco de dados de tradução baseado nos arquivos principais de tradução do WordPress, de maneira que permita ao poedit traduzir automaticamente palavras como 'Páginas'.

Mark Kaplun
fonte
0

Você pode experimentá-lo

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: https://v123.tw/use-wordpress-core-translation/

Boa sorte!!

Ann
fonte