Eklenti çevirilerini güncellemelerden sonra nasıl saklayabilirim?


9

http://wordpress.org/extend/plugins/bbpress/ bbpress 'dil klasörü (wp-content / plugins / bbpress / bbp-language) şu uyarıyı alır:

/**
 * Do not put custom translations here. They will be deleted on bbPress updates.
 *
 * Keep custom bbPress translations in /wp-content/languages/
 */

Aslında bu yeni bir sorun değil ve evet haklılar. İngilizce olmayan bir dille wordpress eklentileri kullanıyorsanız bu büyük bir sorundur.

Temelde bbpress'i tercüme ettim ve .po ve .mo dosyaları oluşturdum. Dosyaları normal wp-içerik / eklentiler / bbpress / bbp-diller klasörüne koyarsam çalışır. Ancak yukarıdaki uyarı, güncelleme sırasında silineceğini söylüyor. Ancak sorun, bbpress'te önerildiği gibi wp içerik / diller / klasöre koyarsam çeviri çalışmıyor.

Kanca veya aktive edebileceğim bir şey olması gerektiğini düşünüyorum ama bunun için en iyi çözüm nedir? Eklenti dil dosyalarını wp-content / language /


iyi .. ben bbpress kodlarını kontrol ettikten sonra .. / wp-içerik / diller / bbpress / doğrudan / wp-içerik / diller değil dosyaları koymak gerekiyor gibi görünüyor / Şimdi bbpress için çalışıyor ama soru hala cevap almak gerekiyor diğer eklentiler için imo
Ünsal Korkmaz

Yanıtlar:


3

BBpress çağrısının dil dosyasını değiştirmeniz gerekiyor.

Bunu yapmak için iyi bir yer, genel diller dizininizdeki dile özgü bir dosyadır. Türkçe için muhtemelen adlı bir dosya olurdu tr_TR.php. Bu otomatik olarak ve yalnızca blogunuzun diliyle eşleşirse yüklenecektir . Üzerine yazılmayacak.

BBPress işlevi kullanmaz load_plugin_textdomain, onun load_textdomainyerine kullanır . Burada bir filtre bulabilirsiniz:

$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

Yani dil php dosyasında sadece yolu değiştirmek için bir filtre ekleyin:

function load_bbpress_tr_mofile( $mofile, $domain )
{
    if ( 'bbpress' == $domain )
    {
        // replace this. :)
        return 'FULL_PATH_TO_YOUR_FILE';
    }
    return $mofile;
}
add_filter( 'load_textdomain_mofile', 'load_bbpress_tr_mofile', 10, 2 );

bir hata var gibi görünüyor .. bbpress.trac.wordpress.org/ticket/1647 içine bakarak .. ben varsayılan dil klasörü wp-içerik / diller / kullanacağım 'yani' FULL_PATH_TO_YOUR_FILE 'için öneriniz nedir?
Ünsal Korkmaz

Dil dizininizin yolu ( WP_LANG_DIR) artı mo dosyanız.
fuxia

1
İyi cevap. Eklenti geliştiricilerine not: load_plugin_textdomain()"init" işlemi sırasında aramalarınızı yapın, aksi takdirde "load_textdomain_mofile" filtresine bağlanamayız. O zaman zaten çok geç olacak.
Geert

2

Yapmanız gereken, yüklü eklentilerin text_domain'lerini yönetecek basit bir eklenti oluşturmaktır. Global bir çözüm istemiyorsanız, temanızdaki kodu function.php dosyasına ekleyebilirsiniz.

Fikir, çevirileri nerede bulacağına dair wordpress'e talimat vermektir. Dahili olarak tüm eklentilerde bu benzer bir şey kullanılarak yapılır

load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );

kullanacağınız işlev budur. Gördüğünüz gibi burada , son argüman çeviri dosyalarının bulunduğu eklentisi yolu göreli ayarlamak için kullanılır.

Diller klasörünü aşağıdaki gibi değiştirmek istediğiniz her eklenti için bir satır koyarak istediğinizi yapabilirsiniz.

load_plugin_textdomain('bbpress', false, '../../languages/bbpress');

bu, wordpress'e , her bir eklentinin kullandığı EXACT ile aynı isimleri kullanarak çeviri dosyalarına sahip pluginsadlı bir klasörün bulunduğu klasörün yanındaki bir klasörden özel çeviri dosyalarınızı yüklemesini bildirir bbpress.

Tüm eklentiler için metin alanlarına talimat veren yönteminizin initaşamada aşağıdaki gibi çalışması gerekir

function set_myplugins_languages() {
     .... your code here.....
}
add_action('init', 'set_myplugins_languages');

(Yararlı bulduysanız bunu yanıt olarak işaretlemeyi unutmayın)


0

Bunun çalışması için WP_LANG_DIR'da zaten WordPress çeviri dosyalarına sahip olmanız ve global yerel ayarı bu dile ayarlamanız gerekir. Yerel ayarı değiştirmeden veya WordPress'in temel çeviri dosyalarına sahip olmadan yalnızca bbPress çevirilerini dahil ediyorsanız, yüklemenize rağmen hiçbir şey çevrilmez.

Yalnızca bbPress için yerel ayarı geçersiz kılmak istiyorsanız, 'bbpress_locale' öğesine bbPress mo dosyasını geçersiz kılmanızı sağlayan bir filtre eklemeniz gerekir.

BbPress 2.0'ın load_textdomain () işlevini kullandığı doğru olsa da, load_plugin_textdomain () zaten load_textdomain () için yalnızca bir sarıcıdır. BbPress 2.0 yöntemi daha sağlamdır ve global çeviri dosyasının yerleştirilmesine izin verir, bu nedenle eklenti güncellemesi sırasında bunları kaybetmezsiniz.


-1

Benim durumumda eklenti için kalıcı özel çeviri oluşturmak aşağıdaki adımları gerektirir (ACF eklentisi çevirisi için örnekler):

  1. wp-content/languages/plugins/dizin oluştur
  2. seçili çeviri dosyasını .poeklenti lang/klasöründen (veya çevirileri olan herhangi birinden) oluşturulana kopyalayın wp-content/languages/plugins/(ör. - lang/acf-pl_PL.poarası wp-content/languages/plugins/acf-pl_PL.po)
  3. çeviriyi örneğin Poedit veya .podosyaları düzenlemek için başka bir programla özelleştirin ve ardından oluşturup .mokaydedin wp-content/languages/plugins/(örn. wp-content/languages/plugins/acf-pl_PL.mo)

Bu şekilde çeviri, eklenti güncellemesinden sonra bile korunmalıdır.

Bu stratejinin tüm eklentiler için işe yarayıp yaramayacağından emin değilim ama bu kesinlikle denemeye değer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.