Çeviriye hazır bir eklenti oluşturmanın en iyi yolu nedir?
En başından tercüme edilmesi gerekmez, ancak farklı kültürlerden gelen geliştiricilerin eklentinin yerelleştirme sürecine katılabilmesi için kolayca çevrilebilir olması gerekir.
Çeviriye hazır bir eklenti oluşturmanın en iyi yolu nedir?
En başından tercüme edilmesi gerekmez, ancak farklı kültürlerden gelen geliştiricilerin eklentinin yerelleştirme sürecine katılabilmesi için kolayca çevrilebilir olması gerekir.
Yanıtlar:
Metin çıktısı oluşturmak için echo
veya kullanmayın print()
, bunun yerine WordPress işlevlerini kullanın __()
ve _e()
:
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
ve __()
ilk parametre olarak sağlanan metnin çevirisini - geçerli dilde - sağlayacaktır. _e()
metni verirken metni __()
döndürür.
İkinci parametre metin alanıdır , WordPress'e ilk parametre olarak sağlanan metnin bu eklentiye ait olduğunu söylemek için kullanacaksınız, istediğiniz herhangi bir adı kullanabilirsiniz, ancak eklenti için kullandığım adı kullanmayı tercih ediyorum dizinde daha sezgisel buluyorum.
İle __()
ve sprintf()
:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
Tanımlar
Poedit'i açın ve şu ayarlarla yeni bir katalog oluşturun (Dosya ›Yeni Kataloğu ...) :
.
..
, (dil dosyasını diller adı verilen bir eklenti alt dizininde depolayacağız)__
ve_e
Kaydet olarak katalog ve tarama güncelleme düğmesine basarak çevrilebilir metin için eklenti dosyaları. Güncelleme bu kataloğu kapatmayı bitirdiğinde, eklentinize yeni çevrilebilir dizeler (örn. Veya içine alınmış ) eklemediğiniz sürece bu dosyayı güncellemeniz gerekmez ./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
__()
_e()
Şimdi ilk çeviriyi oluşturalım (fr_FR kullanacağım):
Kullanılması Podeit , bir POT dosyasından bir katalog oluşturmak (Dosya> POT dosyasından Yeni katalog ...) :
Kataloğu olarak kaydedin . Bazı veya tüm dizeleri, Çevir kaydet tekrar po dosyası yüklemek po ve .mo dosyaları hem./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
Bir .po dosyasını kaydettiğinizde aynı adla bir .mo dosyası oluşturulduğunda , .po dosyasının dosya adının çok önemli olduğunu , bunun eklenti metin etki alanının (my-plugin) ve dil yerel ayarının ( fr_FR), her zaman .po dosyalarınızı şu gibi eklentiler için adlandırın: [textdomain] - [locale] .po , işte bazı örnekler:
wpcf7-it_IT.po
wpcf7-pt_BR.po
wpcf7-ar.po
... Evet!Eklenti yeni metinle her güncellendiğinde, güncelleme , po dosyasını çevirmek yeni dizeleri ve po ve .mo reupload dosyaları
Eklentinizde bir yerde, WordPress'e .mo dosyanızı kullanmasını söylemelisiniz, eklenti dosyanızın başlangıcında bu kodu kullanarak yapabilirsiniz:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
İşlevin my-plugin
1. ve 3. parametrelerinde eklenti adınızla değiştirin load_plugin_textdomain
.
Bazı nedenler işe yaramayabilir:
_e('my text')
ile _e('my text', 'my-plugin')
)Nabil'in cevabı oldukça eksiksiz ancak sağlanan kolay bir varyasyon var:
Eklentiniz WordPress.org eklenti deposunda
Eklentinizin yalnızca WordPress 4.6 veya üstü ile çalışmasını istemeye hazırsınız.
Adımlar şunlardır:
Eklentinizin readme.txt dosyasına ekleyin
Requires at least: 4.6
. Bkz. Https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/
zaten değilse, eklentinizi WordPress eklenti deposuna yükleyin. Bkz. Https://wordpress.org/plugins/developers/add/ .
Eklentinizin bilgi / metin alanını bulun. Bunu yapmak için WordPress eklenti deposundaki eklentinizin sayfasına gidin. URL, https://wordpress.org/plugins/your-plugin-slug/ şeklinde olacaktır . URL'nin son kısmı olan "eklentiniz-slug", eklentinizin sümüktür. Çeviri işlevlerinin metin alanı için kullandığınız budur.
Eklentinizde WordPress'in çeviri işlevlerini kullanın (gibi __e(‘hello’, ‘my-plugin-domain’);
). Önceki adımda alınan doğru eklenti metin alanını kullandığınızdan emin olun. Daha fazla bilgi için https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ adresine bakın .
Yukarıdaki adımları uygularsanız, WordPress şunlarla ilgilenir:
(Buradaki blog yazımdan cevap: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )