Sanırım bir çözüm buldum, ama biraz önce
Öncül
load_theme_textdomain()ve load_child_theme_textdomain()temel olarak eşittir, tek fark kullandıkları varsayılan yoldur:
- geçerli dili alırlar (kullanarak
get_locale()) ve göreli .mo dosyasını argüman olarak iletilen yola eklerler ;
- daha sonra
load_textdomain()hem textdomain hem de sonuçta ortaya çıkan .mo dosyasına giden yolu bağımsız değişken olarak çağırırlar.
Sonra load_textdomain.mo dosyasını genel textdomain değişkenine yükler, ancak kaynaktan okuyabileceğimiz gibi :
Alan adı zaten mevcutsa çeviriler birleştirilir.
Her iki kümede de aynı dize varsa, orijinal değerden çeviri alınır.
Bu nedenle, yalnızca istediğimiz tema üst öğesinin dizelerini geçersiz kılmak / değiştirmek için , üst tema .mo dosyasını yüklemeden önce , yalnızca çevrilen dizeleri içeren üst metin alanı için özel bir .mo dosyası yüklememiz gerekir .
Çözüm
Sonunda, alt tema dilleri klasörüne ana temanın adını (sadece kolaylık sağlamak için) içeren bir klasör oluşturdum ve içine üst metin alanı için özel bir .mo dosyaları (dilde, xx_XX.moformda, xx_XXdil kodu nerede ).
Sonra eylem functions.phpsırasında after_setup_themealt tema dosyama, alt tema metin etki alanı için .mo dosyasını yükleyen satırın yanına bir satır ekledim :
add_action( 'after_setup_theme', function () {
// load custom translation file for the parent theme
load_theme_textdomain( 'parent-textdomain', get_stylesheet_directory() . '/languages/parent-theme' );
// load translation file for the child theme
load_child_theme_textdomain( 'my-child-theme', get_stylesheet_directory() . '/languages' );
} );
Alt functions.phptemanın dosyası üst öğeden önce yüklendiğinden, bu dizeler üst tema çevirisine göre önceliğe sahip olacaktır (veya add_actionişlevin üçüncü parametresini kullanarak önceliği ayarlayabilirdim ).
Not: Öncüllerde aynı olacağını söylediğim gibi kullanmak load_child_theme_textdomainyerine kullanabilirdim load_theme_textdomain.