Projeler ve ajans desteği için müsait · Hızlı yanıt, işi yapan kişiden

Ç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.

Sorunumu anlatayım Mesaj gönderin

Nasıl ilerliyorum

  1. 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.

  2. 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.

  3. 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.

  4. Ç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.

  5. 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

İhtiyacınızı bir dakikada anlatın

Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.

besoin
etat
constructeur (facultatif)
extensions (facultatif)
Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Sıkça sorulan sorular

Bazı metinler WPML String Translation’da neden hiç görünmüyor?
Çünkü kod içinde çevrilebilir olarak kayıtlı değiller: bir PHP dosyasına sabit kodlanmış veya birleştirme yoluyla oluşturulmuş bir metin WPML tarafından hiçbir zaman taranmaz. Önce kodun bir gettext fonksiyonundan geçecek şekilde düzeltilmesi gerekir.
WPML yerine Polylang kullanıyorum, bu bir şeyi değiştirir mi?
Prensip aynıdır: ikisi de WordPress’in gettext fonksiyonlarına ve doğru yüklenmiş bir text domain’e dayanır. Sadece çeviri arayüzü ve saklama yöntemi farklıdır.
Tema güncellemesi yaptığım çevirileri sildi, neden?
Bu, çeviri eklentisinin bu metinleri nasıl sakladığına bağlıdır: bazı saklama yöntemleri, kaynak dil dosyalarını yeniden oluşturan bir güncelleme tarafından üzerine yazılır. Herhangi bir şeyi düzeltmeden önce bu mekanizmayı kontrol ediyorum.
Eksik metinlerin çevrilmesi ne kadar sürer?
Zaten çevrilebilir ama çevrilmemiş metinler için hızlıdır, çoğu zaman birkaç saat sürer. Sabit kodlanmış metni çevrilebilir hâle getirmek ise ilgili dosya ve tekrar sayısına bağlıdır.
Metin önizlemede çevrilmiş görünüyor ama canlı sitede görünmüyor, neden?
Bu genellikle bir önbellek sorunudur: çeviri kaydedilmeden önce önbelleğe alınmış bir sayfa, önbellek temizlenene kadar eski hâlini göstermeye devam eder.