Çok dilli bir WordPress sitesinde çevrilmemiş metinler
Çok dilli bir WordPress sitesi bazı yerlerde hâlâ kaynak dildeki metni gösteriyor: sitenin WPML mi yoksa Polylang mi kullandığına göre neden hiçbir zaman tam olarak aynı değildir; çevrilmemiş bir metin ya bir yerde kayıtlı değildir ya da kod düzeltilmediği sürece yapısal olarak çevrilmesi mümkün değildir.
Nasıl ilerliyorum
-
Metnin kaynağının bulunması
Metnin temadan mı, bir WooCommerce eklentisinden mi, yoksa JavaScript ile eklenen bir içerikten mi geldiğini kontrol ediyorum, çünkü her durum farklı şekilde ele alınır.
-
Text domain kontrolü
load_plugin_textdomain() veya load_theme_textdomain() fonksiyonunun beklenen /languages klasörünü doğru şekilde yüklediğini ve eklenti veya tema başlığında belirtilen text domain’i doğru gösterdiğini kontrol ediyorum.
-
Kod içinde arama
Metnin __(), _e() veya esc_html__() üzerinden geçip geçmediğini kontrol ediyorum. Bir şablona veya PHP dosyasına sabit olarak yazılmışsa, hangi araç kullanılırsa kullanılsın çevrilebilir olarak hiç kaydedilmemiştir.
-
Çeviri veya kod düzeltmesi
Zaten kayıtlı ama çevrilmemiş bir metin için WPML String Translation veya Polylang çeviri editörüne ekliyorum. Sabit kodlanmış bir metin için ise kaynağı, bir gettext fonksiyonundan geçecek şekilde düzeltiyorum.
-
Güncelleme sonrası kontrol
Yakın zamanda yapılan bir tema veya eklenti güncellemesinin, bir sonraki dağıtımda üzerine yazılabilecek şekilde saklanan özel çevirileri sıfırlayıp sıfırlamadığını kontrol ediyorum.
Düzenli olarak ele aldığım durumlar
- Sitenin geri kalanı çevrilmişken bir düğme, hata mesajı veya sepet metni kaynak dilde kalıyor
- Bir metin WPML String Translation’da doğru şekilde görünüyor ama sitede hiçbir zaman çevrilmiyor
- JavaScript ile eklenen bir metin, doğrulama mesajı veya bildirim, hiçbir zaman çeviriden geçmiyor
- Bir tema veya eklenti güncellemesinden sonra özel çeviriler kayboldu
- Yeni bir dil eklendiğinde birden bir düzine hiç çevrilmemiş metin ortaya çıkıyor
Bir metin neden çevrilmeden kalır
Çok dilli bir WordPress sitesi genellikle WPML veya Polylang üzerine kuruludur; bu iki eklenti, WordPress’in gettext fonksiyonları — __(), _e(), esc_html__() — üzerinden kaydedilen ve ilgili tema ya da eklentinin text domain’ine bağlı metinleri çevirir. Bir metin çeviri aracında hiçbir zaman görünmüyorsa, bunun ilk nedeni genellikle yapısal olarak çevrilebilir olmamasıdır: gettext’ten geçmeden bir PHP dosyasına veya şablona sabit olarak yazılmıştır.
İkinci sık görülen durum ise şudur: metin çevrilebilir bir metin olarak gerçekten mevcuttur, ancak text domain doğru şekilde yüklenmemektedir; örneğin load_plugin_textdomain() eksiktir veya yanlış /languages klasörünü göstermektedir. .po ve .mo dosyaları vardır, ama WordPress onları hiçbir zaman aramaz.
WPML’nin String Translation modülü yalnızca doğru şekilde kaydedilmiş olanı bulur: JavaScript ile eklenen bir metin veya gettext’e bütün olarak verilmek yerine PHP içinde birleştirilerek oluşturulan bir metin, tarama tarafından düzenli olarak atlanır.
İlgili sayfalar
-
Özel eklenti geliştirme
Sabit kodlanmış bir metni gerçekten çevrilebilir hâle getirmek kaynak kodun değiştirilmesini gerektirir.
-
Mağazada görünmeyen ürünler
Orijinaline bağlanmamış bir WPML çevirisi de bir ürünü bir dilde görünmez hâle getirebilir.
-
WordPress bakımı
Her güncellemeden sonra yapılan düzenli takip, özel çevirilerin kaybolmasını önler.
İhtiyacınızı bir dakikada anlatın
Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.