WordPress: qTranslate X dil değiştiricisini dil koduyla birlikte

QTranslate X ile temel bir dil değiştirici yapmaya çalışıyorum, şunun gibi:

FR | EN

Bunu başarmak için bir işlev var: qtranxf_generateLanguageSelectCode ('text'); ancak sadece 'text', 'image' veya 'her ikisini de' kabul edebilir, bu yüzden benim ihtiyaçlarıma uymuyor: 'text 'dilin tam adıdır.

Dil kodunu nasıl gösterebilirim? Bunu yapmak için bir filtre yapmak için herhangi bir fikir?

4

7 cevap

Çeviri kodunun altına aşağıdaki betiği eklemeye çalışın.

echo qtranxf_generateLanguageSelectCode('text');
<script>jQuery(document).ready(function(){ jQuery('.lang-en a span').html('EN'); jQuery('.lang-fr a span').html('FR'); })</script>

Sunucu Kenarı Çözümü:

Lütfen eklenti kodunda değişiklik yapmadan dil adını dil koduna göre değiştiren Kod'u bulun ve kelimeyi press filter ile yapabilirsiniz.

Aşağıdaki kodu function.php dosyasına yapıştırın.

add_filter('template_include','start_buffer_EN',1);
function start_buffer_EN($template) {
  ob_start('end_buffer_EN');  
  return $template;
}
function end_buffer_EN($buffer) {
  return str_replace('English','EN',$buffer);  
}

add_filter('template_include','start_buffer_FR',1);
function start_buffer_FR($template) {
  ob_start('end_buffer_FR');
  return $template;
}
function end_buffer_FR($buffer) {  
  return str_replace('Français','FR',$buffer);
}

Dil adını doğrudan wp-admin'den dil ismini değiştirerek değiştirebilirsiniz.

Q-translate-x-change-image-name-from-admin

9
katma
Sunucu tarafı bir çözüm aradığımı söylemeliydim. Istemci tarafında içerik enjekte biraz tehlikeli IMHO.
katma yazar enguerranws, kaynak
Teşekkürler, ancak çekirdek eklentiyi değiştirmek istemediğimi de söylemeliydim (güncelleme amacıyla). Bu yüzden, bunu bir filtre/kanca veya başka bir şeyle başarmaya çalışıyorum.
katma yazar enguerranws, kaynak
Son nokta hakkında düşünmemek için kendimi aptal hissediyorum. Bunu fark ettiğin için teşekkürler. Kodumu aşağıya yazdım, ancak dil adını qTranslate X'in parametrelerinde kullanacağımı düşünüyorum.
katma yazar enguerranws, kaynak
Eklenti dizinindeki qtranslate_widget.php dizininde 159 numaralı satırı echo '>' dan değiştirin. $ Q_config ['language_name'] [$ language]. echo '>'. $ dil. '';
katma yazar Ash Patel, kaynak
nazikçe cevap vermemi tavsiye ederim
katma yazar Ash Patel, kaynak

Bir arkadaşım bu konuda bana yardımcı oldu ve Ash Patel'in cevabına dayanıyor ancak daha temiz bir şekilde (IMHO):

function my_qtranxf_generateLanguageSelectCode($style='', $id='') {
    ob_start();  
    qtranxf_generateLanguageSelectCode($style, $id);
    $o = ob_get_contents();
    ob_end_clean();
    return str_replace(array('English', 'Français'),array('EN', 'FR'), $o); 
}
1
katma

Eklentiyi incelemek OluşturucuLanguageSelectCode öğesinin belgelendiğinden daha fazla türü olduğunu gördüm. Yani dil kodlarını kullanmak için basitçe 'short' türünü kullanabilirsiniz:

qtranxf_generateLanguageSelectCode('short');

Bu, son cevaptan bu yana eklenen bir özellik olabilir.

İşte tüm switcher türlerine genel bir bakış: 'text', 'image', 'hem', 'short', 'css_only', 'custom' ve 'dropdown'. Farklı türlerin nasıl çalıştığına bakmadım, ancak bunları eklenti klasöründe qtranslate_widget.php içinde bulabilirsiniz.

1
katma
Yükseltmeden gelebilir. BTW, tüm çeviri ihtiyaçlarım için tamamen Polylang eklentisine taşındım.
katma yazar enguerranws, kaynak

Bunun için widget kullanabilirsiniz

<?php the_widget('qTranslateXWidget', array('type' => 'custom', 'format' => '%c') );?>

(% c - Dil 2 Harfli Kod)

Açılır tip ve 2 Harfli Kod kullanmak istiyorsanız, bu çalışmaz çünkü format argümanı sadece 'custom' tipiyle çalışır. Bu durumda, Yehuda Tiram'ın cevabı ile giderdim (özellikle çok diliniz varsa ve müşterinizin hangi dilleri kullanmak isteyeceğini bilmiyorsanız).

Buradaki diğer belgeler

1
katma

Neden dil adını sadece ihtiyacın doğrultusunda değiştirmiyorsun? Dil düzenlemesinde mümkündür ve hiçbir şeyi etkilemez.

0
katma

Aşağıdaki sorguyu kullanarak yaptım ve benim için iyi çalışıyor.

<?php if (qtranxf_getLanguage() == 'ar') { ?>
<script>
    jQuery(document).ready(function() {
        var current_URL = jQuery(location).attr('href');
        url = current_URL.replace('/ar/', '/en/')
        jQuery('.languages-selection ul li a').attr('href', url)
    });
</script>
<?php } elseif (qtranxf_getLanguage() == 'en') { ?>
<script>
    jQuery(document).ready(function() {
        var current_URL = jQuery(location).attr('href');
        url = current_URL.replace('/en/', '/ar/')
        jQuery('.languages-selection ul li a').attr('href', url)
    });
</script>
<?php } ?>
0
katma

https://qtranslatexteam.wordpress.com/faq/

For example, to show flag only in the top language menu item, enter #qtransLangSw?title=none, if in addition to this current language is not needed to be shown, enter #qtransLangSw?title=none&current=hidden, and so on.

0
katma