Bagaimana agar plugin tetap diterjemahkan setelah pembaruan?

9

http://wordpress.org/extend/plugins/bbpress/ folder bahasa bbpress '(wp-content / plugins / bbpress / bbp-languages) memiliki peringatan itu:

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

Sebenarnya ini bukan masalah baru dan ya mereka benar. Ini adalah masalah besar jika Anda menggunakan plugin wordpress dengan bahasa non-Inggris.

Pada dasarnya saya menerjemahkan bbpress dan membuat file .po dan .mo. File berfungsi jika saya meletakkannya di folder normal wp-content / plugins / bbpress / bbp-languages. Tetapi seperti peringatan di atas mengatakan bahwa itu akan dihapus saat pembaruan. Tetapi masalahnya adalah, menerjemahkan tidak berfungsi jika saya menempatkannya di wp-content / languages ​​/ folder seperti yang disarankan di bbpress.

Saya pikir harus ada pengait atau sesuatu yang bisa saya aktifkan tetapi apa solusi terbaik untuk itu? Cukup saya ingin menyimpan file bahasa plugin di wp-content / languages ​​/

Ünsal Korkmaz
sumber
baik .. setelah saya cek kode bbpress .. sepertinya saya perlu memasukkan file dalam / wp-content / bahasa / bbpress / tidak secara langsung / wp-content / bahasa / Sekarang berfungsi untuk bbpress tetapi pertanyaan masih perlu mendapatkan jawaban untuk plugin lainnya imo
Ünsal Korkmaz

Jawaban:

3

Anda harus mengganti panggilan ke file bahasa BBpress.

Tempat yang baik untuk melakukan ini adalah file khusus bahasa di direktori bahasa umum Anda. Untuk bahasa Turki, file itu mungkin bernama tr_TR.php. Ini akan dimuat secara otomatis dan hanya jika itu cocok dengan bahasa blog Anda. Itu tidak akan ditimpa.

BBPress tidak menggunakan fungsi load_plugin_textdomain, melainkan menggunakan load_textdomain. Di sini Anda dapat menemukan filter:

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

Jadi dalam file php bahasa Anda, tambahkan saja filter untuk mengubah jalur:

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 );
fuxia
sumber
tampaknya ada bug .. bbpress.trac.wordpress.org/ticket/1647 mencari ke dalamnya .. saya akan menggunakan folder bahasa default wp-content / bahasa / jadi apa saran Anda untuk 'FULL_PATH_TO_YOUR_FILE'?
Ünsal Korkmaz
Path ke direktori bahasa Anda ( WP_LANG_DIR) ditambah file-file Anda.
fuxia
1
Jawaban yang bagus. Catatan untuk pengembang plugin: lakukan load_plugin_textdomain()panggilan Anda selama aksi "init", jika tidak, kami tidak dapat terhubung ke filter "load_textdomain_mofile". Sudah terlambat sudah saat itu.
Geert
2

Yang harus Anda lakukan adalah membuat plugin sederhana yang akan mengelola text_domain dari plugin yang diinstal. Jika Anda tidak ingin memiliki solusi global, Anda dapat menambahkan kode ke functions.php Anda di tema Anda.

Idenya adalah untuk menginstruksikan wordpress di mana menemukan terjemahan. Secara internal di semua plugin ini dilakukan dengan menggunakan sesuatu yang mirip

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

ini adalah fungsi yang akan Anda gunakan. Seperti yang Anda lihat di sini , argumen terakhir digunakan untuk mengatur relatif ke jalur plugin, tempat file terjemahan berada.

Anda dapat melakukan apa yang Anda inginkan dengan meletakkan satu baris untuk setiap plugin yang ingin Anda ubah folder bahasa mereka sebagai berikut.

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

ini akan memerintahkan wordpress untuk memuat file terjemahan khusus Anda dari folder di sebelah pluginsfolder yang memiliki folder bernama bbpressyang memiliki file terjemahan menggunakan penamaan yang sama persis seperti yang digunakan setiap plugin.

Metode Anda, yang menginstruksikan textdomain untuk semua plugin, harus dijalankan pada initfase sebagai berikut

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

(Jangan lupa untuk menandai ini sebagai jawaban jika Anda merasa itu berguna)

Odys
sumber
0

Agar ini berfungsi, Anda harus memiliki file terjemahan WordPress di WP_LANG_DIR, dan mengatur global global untuk bahasa itu. Jika Anda hanya menyertakan terjemahan untuk bbPress tanpa mengubah lokal atau memiliki file terjemahan inti WordPress, tidak ada yang akan menerjemahkan meskipun Anda memuatnya.

Jika Anda ingin mengganti lokal untuk bbPress saja, Anda perlu menambahkan filter ke 'bbpress_locale' yang memungkinkan Anda untuk menimpa file mo bbPress.

Meskipun benar bahwa bbPress 2.0 menggunakan fungsi load_textdomain (), load_plugin_textdomain () hanyalah pembungkus untuk load_textdomain (). Metode bbPress 2.0 lebih kuat dan memungkinkan untuk penempatan file terjemahan global, sehingga Anda tidak kehilangan mereka selama pembaruan plugin.

John James Jacoby
sumber
-1

Dalam kasus saya membuat terjemahan khusus permanen untuk plugin membutuhkan langkah-langkah berikut (contoh untuk terjemahan plugin ACF):

  1. buat wp-content/languages/plugins/direktori
  2. menyalin file terjemahan yang dipilih .podari lang/folder plugin (atau yang lainnya dengan terjemahan) untuk dibuat wp-content/languages/plugins/(misalnya dari lang/acf-pl_PL.poke wp-content/languages/plugins/acf-pl_PL.po)
  3. menyesuaikan terjemahan dengan mis Poedit atau program lain untuk mengedit .pofile dan kemudian menghasilkan .modan menyimpan wp-content/languages/plugins/(misalnya wp-content/languages/plugins/acf-pl_PL.mo)

Dengan cara ini, terjemahan harus dipertahankan bahkan setelah pembaruan plugin.

Saya tidak yakin apakah strategi ini akan berhasil untuk semua plugin tetapi ini patut dicoba.

Jmarceli
sumber