Como manter o plugin traduz após as atualizações?

9

enlace A pasta do idioma do bbpress (wp-content / plugins / bbpress / bbp-languages) tem esse aviso:

/**
 * Do not put custom translations here. They will be deleted on bbPress updates.
 *
 * Keep custom bbPress translations in /wp-content/languages/
 */

Na verdade, isso não é um problema novo e sim, eles estão certos. Isso é um grande problema se você estiver usando plugins do wordpress com um idioma diferente do inglês.

Basicamente eu traduzi o bbpress e criei arquivos .po e .mo. Os arquivos estão funcionando se eu colocá-los em sua pasta normal wp-content / plugins / bbpress / bbp-languages. Mas como acima aviso diz que irá apagar quando atualizar. Mas o problema é que a tradução não está funcionando se eu colocá-los na pasta wp-content / languages / como sugerido no bbpress.

Eu acho que deve haver um gancho ou algo que eu possa ativá-lo, mas qual é a melhor solução para isso? Simplesmente quero manter os arquivos de idiomas do plugin em wp-content / languages /

    
por Ünsal Korkmaz 08.10.2011 / 17:03

4 respostas

3

Você precisa substituir a chamada pelo arquivo de idioma do BBpress.

Um bom lugar para fazer isso é um arquivo específico de idioma em seu diretório de idiomas gerais. Para o turco, provavelmente seria um arquivo chamado tr_TR.php . Isso será carregado automaticamente e somente se corresponder ao idioma do seu blog. Não será sobrescrito.

O BBPress não usa a função load_plugin_textdomain , mas usa load_textdomain . Aqui você pode encontrar um filtro:

$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

Portanto, no seu arquivo php de idioma, basta adicionar um filtro para alterar o caminho:

function load_bbpress_tr_mofile( $mofile, $domain )
{
    if ( 'bbpress' == $domain )
    {
        // replace this. :)
        return 'FULL_PATH_TO_YOUR_FILE';
    }
    return $mofile;
}
add_filter( 'load_textdomain_mofile', 'load_bbpress_tr_mofile', 10, 2 );
    
por fuxia 08.10.2011 / 18:09
2

O que você precisa fazer é criar um plugin simples que irá gerenciar o text_domain dos plugins instalados. Se você não quer ter uma solução global, você pode adicionar o código ao seu functions.php no seu tema.

A idéia é instruir o wordpress sobre onde encontrar as traduções. Internamente, em todos os plugins, isso é feito usando algo semelhante a

load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );

esta é a função que você irá usar. Como você pode ver aqui , o último argumento é usado para definir o relativo ao caminho do plug-in, onde residem os arquivos de tradução.

Você pode fazer o que quiser colocando uma linha para cada plug-in que deseja alterar na pasta de idiomas da seguinte forma.

load_plugin_textdomain('bbpress', false, '../../languages/bbpress');

isso instruirá o wordpress a carregar seus arquivos de tradução personalizados de uma pasta ao lado da pasta plugins que tem uma pasta chamada bbpress que possui os arquivos de tradução usando a mesma nomenclatura EXACT que cada plug-in usa.

Seu método, que instrui o textdomains para todos os plug-ins, deve ser executado na fase init da seguinte forma

function set_myplugins_languages() {
     .... your code here.....
}
add_action('init', 'set_myplugins_languages');

(Não se esqueça de marcar isso como resposta se você achou útil)

    
por Odys 08.10.2011 / 17:54
0

Para que isso funcione, você precisa ter os arquivos de tradução do WordPress no WP_LANG_DIR e ter a localidade global definida para esse idioma. Se você está apenas incluindo traduções para o bbPress sem alterar a localidade ou ter os principais arquivos de tradução do WordPress presentes, nada será traduzido apesar de você estar carregando-os.

Se você deseja substituir a localidade apenas pelo bbPress, é necessário adicionar um filtro a 'bbpress_locale', que permite substituir o arquivo mo do bbPress.

Embora seja verdade que o bbPress 2.0 utilize a função load_textdomain (), load_plugin_textdomain () é apenas um wrapper para load_textdomain () de qualquer maneira. O método bbPress 2.0 é mais robusto e permite o posicionamento global do arquivo de tradução, para que você não os perca durante a atualização do plug-in.

    
por John James Jacoby 17.11.2011 / 20:35
-1

No meu caso, a criação de uma tradução personalizada permanente para o plug-in requer as seguintes etapas (exemplos de tradução de plug-in do ACF):

  1. crie wp-content/languages/plugins/ diretório
  2. copie o arquivo de tradução selecionado .po da pasta lang/ do plug-in (ou de qualquer outro com traduções) para o wp-content/languages/plugins/ (por exemplo, de lang/acf-pl_PL.po para wp-content/languages/plugins/acf-pl_PL.po )
  3. personalize a tradução com, por exemplo Poedit ou qualquer outro programa para editar .po arquivos e gerar .mo e salvar em wp-content/languages/plugins/ (por exemplo, wp-content/languages/plugins/acf-pl_PL.mo )

Desta forma, a tradução deve ser preservada mesmo após a atualização do plugin.

Não tenho certeza se essa estratégia funcionará para todos os plug-ins, mas vale a pena tentar.

    
por jmarceli 12.10.2016 / 00:12