WordPress Eklentisini Adım Adım Nasıl Çevirebilirsiniz?

Projeniz için mükemmel WordPress eklentisini buldunuz. Tam olarak ihtiyacınız olanı yapıyor, yorumlar harika ve sonra onu etkinleştirip her düğmenin, etiketin ve hata mesajının İngilizce olduğunu fark ediyorsunuz. Almanca, Fransızca veya Japonca ziyaretçileriniz okuyamayacakları bir metin duvarına çarpacaklar.
İyi haber şu ki, iyi oluşturulmuş çoğu eklenti çeviriye hazırdır; yani geliştirici, sizin gibi kişilerin onları çevirebilmesi için dizelerini Gettext işlevlerine sarmıştır. Zorluk, dosyaların nerede bulunduğunu, çevirinize ne ad vereceğinizi ve bir sonraki eklenti güncellemesinin çalışmanızı silmemesi için nereye koyacağınızı bilmektir.
Bu kılavuz, bir WordPress eklentisini çevirmenizi baştan sona nasıl yapacağınızı gösterir: metin alanını ve dil klasörünü bulmak, .pot şablonunu almak veya oluşturmak, doğru adlandırılmış .po ve .mo dosyaları oluşturmak ve WordPress'in bunları güvenilir bir şekilde yükleyeceği yere yerleştirmek. Ayrıca, bu yaklaşımın tam olarak çeviremeyeceği tek eklenti türünü de ele alacağız, böylece imkansız bir durumla mücadele ederek saatlerce zaman kaybetmezsiniz.
Bir Eklentinin Çeviri Dosyalarını Nasıl Bulursunuz?
Herhangi bir şeyi çevirmeden önce, eklentiden iki bilgiye ihtiyacınız var: metin alanı ve dil klasörü. Metin alanı, eklentinin kendi çevirilerini tanımlamak için kullandığı benzersiz dizedir ve dil klasörü, kaynak şablonun bulunduğu yerdir.
Dil Klasörünü ve Metin Alanını Bulmak
Eklenti dizinini wp-content/plugins/your-plugin/ adresinde açın ve bir /languages alt klasörüne bakın. İçinde genellikle her çevrilebilir dizeyi içeren boş şablon olan bir .pot dosyası bulacaksınız.
Metin alanını onaylamak için eklentinin ana PHP dosyasını açın ve başlık bloğuna bakın:
/**
* Plugin Name: Awesome Plugin
* Text Domain: awesome-plugin
* Domain Path: /languages
*/
Burada metin alanı awesome-plugin'dir. Bu değer kritik öneme sahiptir, çünkü çeviri dosyalarınız bunu adlarında içermelidir, aksi takdirde WordPress bunları asla eklentiyle eşleştiremez. Ayrıca kod boyunca her dize çağrısında da göreceksiniz:
echo __( 'Settings saved successfully.', 'awesome-plugin' );
İkinci argüman, awesome-plugin, yine metin alanıdır. Bunu kullanan her dize, kataloğunuz tarafından çevrilebilir. Eklentinin arayüzündeki bir dizede bu sarmalayıcı eksikse, örneğin bir geliştirici __() kullanmadan echo 'Save' komutunu sabit kodlamışsa, o dize hiç çevrilemez ve hiçbir .po dosyası ona ulaşamaz. Çoğu saygın eklenti her şeyi doğru şekilde sarar, ancak çevrilmeyi reddeden bir veya iki inatçı dize fark ederseniz, kaynakta eksik bir Gettext sarmalayıcı olası bir nedendir.
Bir eklentinin gerçekten çeviriye hazır olup olmadığını anlamanın hızlı bir yolu, WordPress.org dizinindeki listesini kontrol etmektir; bu, bir çeviri yüzdesini gösterir ve bir /languages şablonuna bağlantı verir. Aktif bir çeviri projesi olan bir eklentinin, terk edilmiş bir eklentiye göre temiz, tamamen sarmalanmış dizelere sahip olma olasılığı çok daha yüksektir.
Eklentide POT Dosyası Yoksa Ne Yapmalısınız?
Bazı eklentiler .pot şablonu olmadan gönderilir. Eğer /languages klasörü boşsa veya eksikse, çevrilebilir dizeleri kaynak kodda tarayarak şablonu kendiniz oluşturmanız gerekir.
Bunun için standart araç, her Gettext çağrısını yeni bir .pot içine çıkaran WP-CLI'dır.
wp i18n make-pot wp-content/plugins/awesome-plugin \
wp-content/plugins/awesome-plugin/languages/awesome-plugin.pot
Bu komut, eklentinin PHP ve JavaScript dosyalarını tarar, her __(), _e(), _n() ve ilgili çağrıyı bulur ve eksiksiz bir şablon yazar. Grafik bir yöntem tercih ediyorsanız, Poedit Pro kaynak kodu aynı şekilde tarayabilir. Her iki durumda da sonuç, boş çevirilerle tüm kaynak dizeleri içeren ve gerçek bir dil dosyasına dönüştürülmeye hazır bir .pot dosyasıdır.
Kendi şablonunuzu oluşturmanın gizli bir faydası vardır: orijinal geliştiricinin gönderilen bir .pot dosyasına dahil etmeyi unutmuş olabileceği dizeleri yakalar. Eklentiler hızla gelişir ve 2.1 sürümüyle gelen bir şablon, 2.4'te eklenen dizeleri kaçırabilir. Mevcut kaynaktan yeniden oluşturmak, kataloğunuzun eklentinin iki sürüm önce gösterdiklerini değil, bugün gerçekten gösterdiklerini yansıtmasını garanti eder. Bir eklenti için çevirileri zamanla sürdürüyorsanız, her büyük güncellemeden sonra make-pot komutunu yeniden çalıştırmak güvenilir bir alışkanlıktır.
PO ve MO Dosyalarını Doğru Adla Oluşturma
Bir eklentiyi çevirirken en sık yapılan hata dosya adıdır. WordPress, eklenti çevirilerini çok belirli bir kalıba göre eşleştirerek bulur ve tek bir yanlış karakter, çevirinizin tamamen göz ardı edilmesi anlamına gelir.
Dosya Adı Formülü
Eklenti çevirileri için kalıp text-domain-locale şeklindedir. Dolayısıyla, awesome-plugin metin alanının Almanca'ya çevrilmesi için dosyaların şu şekilde adlandırılması gerekir:
awesome-plugin-de_DE.po
awesome-plugin-de_DE.mo
Yerel kod, WordPress site dil kodudur: Almanca için de_DE, Fransızca için fr_FR, İspanyolca için es_ES, Brezilya Portekizcesi için pt_BR. Yerel kodu yanlış girerseniz WordPress dosyanızı sessizce atlar. Bunları Poedit gibi bir düzenleyicide .pot şablonundan oluşturursunuz; bu düzenleyici kaydettiğinizde ikili .mo dosyasını otomatik olarak derler. Bu düzenleyiciye yeni başlıyorsanız, eksiksiz Poedit kılavuzu bir şablondan adım adım nasıl çeviri oluşturulacağını açıklar.
Dosyaları Güncellemelerin Silmemesi İçin Nereye Yerleştirmelisiniz?
İki olası konum vardır ve doğru olanı seçmek önemlidir.
# RISKY: inside the plugin — wiped on every plugin update
wp-content/plugins/awesome-plugin/languages/awesome-plugin-de_DE.mo
# SAFE: the global languages override folder — survives updates
wp-content/languages/plugins/awesome-plugin-de_DE.mo
Her zaman wp-content/languages/plugins/ kullanın. WordPress önce bu geçersiz kılma dizinini kontrol eder ve eklenti klasörünün dışında yer aldığı için, eklentiyi güncellemek çevirilerinize asla dokunmaz. Eklentinin kendi klasörüne yerleştirilen dosyalar, yeni bir sürüm yüklendiği anda üzerine yazılır.
Bu geçersiz kılma davranışı, WordPress yerelleştirmesinin en kullanışlı ve en az bilinen özelliklerinden biridir. Bu, herhangi bir üçüncü taraf eklentisi için özel veya düzeltilmiş çevirileri, çatallamaya gerek kalmadan dağıtabileceğiniz ve değişikliklerinizin tamamen güncelleme güvenli olduğu anlamına gelir. Aynı eklentiyi çalıştıran birkaç istemci sitesini yönetiyorsanız, tek bir geçersiz kılma .mo dosyası kümesi tutabilir ve yerel ayar eşleştiği sürece her sitenin bunları otomatik olarak alacağını bilerek hepsine dağıtabilirsiniz.
WordPress Çevirinizi Nasıl Yükler?
Çeviriye hazır bir eklenti, başlatma sırasında load_plugin_textdomain() çağrısını yaparak WordPress'e kataloğunu yüklemesini söyler:
add_action( 'init', function() {
load_plugin_textdomain(
'awesome-plugin',
false,
dirname( plugin_basename( __FILE__ ) ) . '/languages'
);
} );
WordPress 4.6 ve sonraki sürümlerdeki çoğu modern eklenti için buna dokunmanıza gerek yoktur. WordPress, dosya adınız ve site yerel ayarınız eşleştiği sürece wp-content/languages/plugins/ konumundan çevirileri otomatik olarak yükler. Tamamladığınız çeviri hala görünmüyorsa, bunun nedeni hemen hemen her zaman bir dosya adı uyuşmazlığı, güncel olmayan bir .mo dosyası veya yanlış yerel ayara ayarlanmış bir site dilidir. Çevirilerinizin WordPress'te neden görünmediğine dair sorun giderme kılavuzumuz, bu hata noktalarının her birini ele alır.
Dizeleri Veritabanında Depolayan Eklentiler
İşte önemli sınırlama. Gettext yaklaşımı yalnızca eklentinin kodunda bulunan dizeleri çevirir. Bazı eklentiler, özellikle form oluşturucular, sayfa oluşturucular ve e-ticaret uzantıları, WordPress veritabanına kaydedilen içerik (form etiketleri, ürün özellikleri, özel mesajlar) oluşturmanıza olanak tanır. Bu dizeler kullanıcı tarafından oluşturulan verilerdir, .pot dosyasının bir parçası değildir, bu nedenle bir .po dosyası onlara ulaşamaz. Veritabanı içeriği için WPML veya Polylang gibi çok dilli bir eklentiye veya eklentinin kendi dize çeviri özelliğine ihtiyacınız vardır. Bir .po dosyasının sorunu çözebileceğini varsaymadan önce, belirli bir dizenin kodda mı yoksa veritabanında mı yaşadığını her zaman test edin.
Basit bir test, hangi tür dizeyle uğraştığınızı size söyler. Metin, bir ayar alanına yazdığınız bir şey, oluşturduğunuz bir form etiketi, özel bir teşekkür mesajı, bir ürün adı ise, bu veritabanı içeriğidir ve bir .po dosyası ona dokunamaz. Metin, eklentinin yerleşik arayüzünün bir parçasıysa, düğme etiketleri, doğrulama hataları, eklentinin kendisiyle birlikte gelen yönetici bildirimleri ise, kodda yer alır ve bir .po dosyası tam olarak doğru araçtır. Bu ayrımı erken yapmak, saatlerce süren hayal kırıklığını önler, çünkü hiçbir miktarda mükemmel .po düzenlemesi, eklentinin çalışma zamanında veritabanından çektiği bir dizeyi asla çeviremeyecektir.
Manuel Uğraş Olmadan Büyük Ölçekte Çeviri Yapmak
Tek bir eklentiyi elle tek bir dile çevirmek yönetilebilir bir iştir. On dile çevirmek veya bir istemci sitesi için bir dizi eklentiyi çevirmek, günlerce süren tekrarlayan bir işe dönüşür ve her manuel düzenleme, %s veya %1$s gibi bir yer tutucuyu karıştırma ve çıktıyı bozma riskini taşır.
İşte burada bulut iş akışı denklemi değiştirir. Eklentinin .po veya .pot dosyasını SimplePoTranslate'e yükleyin, hedef dillerinizi seçin ve bağlama duyarlı yapay zeka tüm kataloğu çevirirken Sözdizimi Kilitleme her yer tutucuyu, HTML etiketini ve kod belirtecini dondurarak hiçbir şeyin bozulmamasını sağlar. Akıllı Toplu İşleme büyük katalogları tek bir geçişte ele alır ve .po, .mo, .json, .php ve .xliff içeren bir ZIP dosyasını doğru biçimlendirilmiş ve wp-content/languages/plugins/ içine bırakmaya hazır olarak indirirsiniz. Tamamen bulutta çalıştığı için masaüstü kurulumu ve sitenizde herhangi bir şişkinlik olmaz.
Bir eklentiyi çevirmenin, biraz farklı bir klasör kuralı ve yükleme işlevi kullanan bir temayı çevirmekten farklı olduğunu unutmayın. Hedefiniz bir temaysa, bunun yerine geliştirici olmasanız bile herhangi bir WordPress temasını yerelleştirme hakkındaki özel kılavuzumuzu takip edin.
Bir eklentiniz ve bir diliniz varsa manuel yolu kullanın. Birçok dile hızlıca ve yer tutucu güvenliğinden ödün vermeden ihtiyacınız varsa bulutu kullanın.
WordPress eklentinizi hedef kitlenizin konuştuğu her dile tek bir değişkeni bile bozmadan çevirmeye hazır mısınız? SimplePoTranslate'i ücretsiz deneyin — kredi kartı gerekmez. Ücretsiz katman, ilk eklenti
.podosyanızı dakikalar içinde, her dizede Sözdizimi Kilitleme ile çevirmenizi sağlar.