Bisakah saya tinggalkan plugin textdomain untuk istilah yang digunakan dalam core?


10

Saya punya plugin yang menempatkan status posting ke dalam menu admin tipe posting. Saya tengah menginternasionalkannya, dan saya bertanya-tanya bagaimana menangani situasi ini.

Plugin menggunakan beberapa string unik yang akan mendapatkan textdomain seperti ini:

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

Tapi kemudian ada juga kasus di mana saya menggunakan kata yang berhubungan dengan inti makna terkait inti-mereka seperti ini: __( 'Pages' ). Dalam situasi ini, tampaknya masuk akal bagi saya untuk mengecualikan domain teks dan memanfaatkan istilah yang sudah terlokalisasi di inti. Namun, kodeks tersebut tampak sangat eksplisit:

Jika Anda mencoba menerjemahkan plugin, saran yang sama seperti di atas berlaku, kecuali itu

  • Anda harus menggunakan domain, yang dimuat di hook plugin Anda

  • setiap panggilan terjemahan harus menjadi __ ('teks', 'nama-domain')

Jadi ini WP-halal?


1
Terima kasih telah mengajukan pertanyaan yang menggugah pikiran, jawaban (dari toscho dan Mark Kaplun sejauh ini) telah menarik dan bermanfaat bagi saya!
webaware

Jawaban:


14

Jangan pernah mengandalkan string inti untuk terjemahan, mereka dapat mengubah atau mendapatkan contextparameter kapan saja. Setelah itu terjadi, pengguna Anda mendapatkan antarmuka yang diterjemahkan sebagian, dan penerjemah Anda tidak memiliki cara untuk memperbaikinya.

Juga perlu diingat senar yang sama tidak perlu diterjemahkan di mana-mana dengan kata yang sama. Bahkan tanpa parameter konteks mungkin berguna untuk menggunakan terjemahan berbeda untuk plugin Anda dalam beberapa bahasa. Tetapi ini tidak akan mungkin terjadi jika Anda tidak memasukkan string ke dalam plugin Anda.

Lihat diskusi obrolan yang kami lakukan beberapa hari lalu tentang topik ini.


Ingat juga bahwa string masih akan muncul di file POT Anda, bahkan jika itu tidak memiliki domain teks.
scribu

@scribu Tergantung pada parser. Plugin pelokalan codestyling akan mengabaikannya.
fuxia

Sepertinya ada beberapa ketidaksepakatan antara jawaban ini dan jawaban ini pada pertanyaan yang hampir identik ...
mrwweb

4

Ya, tapi tolong jangan. Ini seperti standar pengkodean, lebih baik mengikutinya bahkan ketika Anda bisa mendapatkan keuntungan kecil dengan mem-bypassnya.

Alasan yang lebih baik:

  1. Dalam versi 3.5 WordPress tidak memiliki file terjemahan monolith, itu dipecah menjadi 3 bagian karena alasan kinerja. Jika tren ini terus berlanjut, dapatkah Anda yakin bahwa domain default akan dimuat sama sekali ketika Anda mencoba menggunakannya __('Pages')?

  2. Anda tidak menyimpan pekerjaan ke pelokalan - Alat terjemahan seperti poedit tidak tahu bagaimana menangani dua domain terjemahan dalam satu file, dan dalam contoh Anda mereka akan menghasilkan file .po yang berisi kata 'Halaman' bahkan jika Anda gunakan domain default untuk itu. Pelokalan tidak memeriksa penggunaan sebenarnya dari string yang dia terjemahkan kecuali dia perlu memahami konteksnya sehingga dia tidak akan melihat domain yang berbeda dan akan menerjemahkan kata tersebut. Selain itu, jika pelacak tahu alatnya, ia akan memiliki DB terjemahan berdasarkan file terjemahan inti WordPress dengan cara yang memungkinkan poedit untuk menerjemahkan secara otomatis kata-kata seperti 'Halaman'.


0

Kamu bisa mencobanya

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

Atau

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');
});

Referensi : https://v123.tw/use-wordpress-core-translation/

Semoga berhasil!!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.