Modificarea limbii doar pentru front-end în WordPress

8 feb. 2014, 13:50:40
Vizualizări: 18.1K
Voturi: 14

Am instalat o temă WordPress și pot vedea fișierele .mo și .po în /public_html/wp-content/themes/themename/lang, limba pe care vreau să o folosesc este disponibilă.

Puteți să-mi recomandați cum să folosesc o limbă specifică? Nu vreau să schimb limba din admin, doar limba temei.

1
Comentarii

Posibil duplicat al Schimbarea localizării în timpul execuției?

T.Todua T.Todua
4 nov. 2018 18:34:41
Toate răspunsurile la întrebare 7
0

Ei bine, de fapt nu ai nevoie de nimic special pentru a avea două limbi diferite în back end și front end. Tocmai am testat din nou pe WP 5.1

  1. accesează settings și setează Site Language la limba pentru front end, de exemplu - germană, apoi salvează.

  2. accesează Users și apoi dă click pe edit pentru contul tău de administrator. Acolo poți seta Language la engleză și salvează. Gata. Front end-ul tău va folosi germana ca limbă de bază, iar back end-ul va fi în engleză.

24 feb. 2019 23:20:38
0

Dacă cineva încă caută soluția, iată ce ar trebui să faceți începând cu versiunea 4.7

function wp_noshor_redefine_locale($locale) {
    if( is_admin() ):
        switch_to_locale('en_US');
    endif;
}
add_filter('init','wp_noshor_redefine_locale');

Acest cod forțează panoul de administrare să se încarce în engleză, apoi puteți merge la setări și alegeți limba dorită.

7 apr. 2018 04:24:39
8

Puteți filtra șirul pentru locale, acesta conține limba curentă. Și puteți exclude administratorul din acel filtru:

is_admin() or add_filter( 'locale', function() {
    return 'ar';
});
8 feb. 2014 13:54:08
Comentarii

De fapt, mă refer la cum pot activa o limbă specifică pentru temă?

Hicham Hicham
8 feb. 2014 13:56:12

Acest lucru se întâmplă automat atunci când locale se potrivește cu un fișier de traducere existent.

fuxia fuxia
8 feb. 2014 13:57:11

îmi pare rău că deranjez, sunt nou în WP, dar cum pot face ca locale să se potrivească cu fișierul de traducere?

Hicham Hicham
8 feb. 2014 13:57:49

Prin adăugarea codului de mai sus într-un plugin sau în fișierul functions.php al temei tale.

fuxia fuxia
8 feb. 2014 13:58:17

trebuie să introduc ar-AR pentru ca tema mea să fie în arabă?

Hicham Hicham
8 feb. 2014 14:01:09

Depinde de numele fișierelor tale mo. Încearcă, dacă nu ești sigur.

fuxia fuxia
8 feb. 2014 14:04:06

Vreau să schimb doar limita din interfața site-ului în arabă, nu și cea din back-end (panoul de administrare WordPress), deci doar limita temei. După cum am înțeles, trebuie să modific fișierul functions.php al temei mele și să adaug următoarele: is_admin() sau add_filter( 'locale', function() { return 'ar-AR'; });

Hicham Hicham
8 feb. 2014 14:06:41

Da, exact. Încearcă asta.

fuxia fuxia
8 feb. 2014 14:27:05
Arată celelalte 3 comentarii
0

Cred că cea mai simplă opțiune pentru tine ar fi să actualizezi instalarea folosind versiunea localizată de WordPress pentru limba ta maternă (și să te asiguri că WPLANG rămâne setat corespunzător), iar apoi să folosești un plugin precum:

... pentru a schimba doar interfața de administrare în engleză.

15 aug. 2014 17:55:17
0

Iată soluția completă și mai bună pentru a schimba doar limba temei (front-end) sau a pluginului. Funcționează chiar și pentru a schimba limba unei anumite pagini/postări etc.

TLDR; Există un filtru numit locale, care determină ce limbă să fie încărcată. Puteți schimba la limba dorită în funcție de condițiile pe care le preferați.

Schimbarea doar a limbii temei, sau pe baza altor condiții, fără a afecta limba din panoul de administrare.

add_filter('locale', function($locale) {

    if( is_admin() ) {
        return $locale; // Păstrează limba implicită dacă este partea de administrare.
    }

    // Puteți încărca limba pe baza oricăror condiții aici, cum ar fi is_page(), is_singular(), is_archive() etc.
    // În acest exemplu, doresc să schimb limba pentru întregul front-end.

    $locale = 'en_US'; // Schimbă la limba dorită. Limba trebuie să fie instalată și încărcată.

    return $locale; // Returnează limba care va fi utilizată.

});

Înainte de a schimba limba, poate fi necesar să încărcați mai întâi acea limbă.

În tema sau copilul temei, încărcați limba personalizată folosind acest fragment de cod.

add_action( 'after_setup_theme', function() {

    // Presupunând că fișierele de limbă sunt în /wp-content/themes/tema-dvs/languages
    // Nu uitați să schimbați 'text-domain' la domeniul de text al temei.

    // Pentru Temă.
    load_theme_textdomain( 'text-domain', get_template_directory() . '/languages' );

    // Pentru Copilul Temei
    load_child_theme_textdomain( 'text-domain', get_stylesheet_directory() . '/languages' );

    // Eliminați load_child_theme_textdomain dacă îl utilizați pentru tema principală,
    // SAU eliminați load_theme_textdomain dacă încărcați limba pentru copilul temei.

});

Similar, puteți schimba limba pe baza URL-ului, sau pentru pagina pluginului etc.

Sper că vă va fi de ajutor. Sau anunțați-mă dacă am omis ceva.

1 aug. 2020 07:20:43
0

Iată un exemplu de cod pe care îl puteți folosi pentru a schimba limba dinamic în WordPress:

add_filter('locale', 'change_user_lang');
function change_user_lang($locale)
{
    if (is_admin()) return 'en_US'; // setează limba în panoul de administrare la Engleză
    // logica personalizată pentru limbă aici, de exemplu:
    // if (some condition) return 'fr_FR'; // setează limba la Franceză
    // if (some other condition) return 'de_DE'; // setează limba la Germană

    return $locale; // returnează limba originală dacă nu sunt îndeplinite condițiile
}
15 apr. 2023 08:04:02
2

Puteți încerca și acest lucru:

1. Descărcați scriptul jQuery translate de la acest link

2. Cum funcționează ( documentație, test live )

<?php
function ravs_frontend_translate_script() {
    wp_enqueue_script( 'translate', get_template_directory_uri() . '/js/jquery.translate.js', array( 'jquery' ), '0.0.1', true );
}
add_action( 'wp_enqueue_scripts', 'ravs_frontend_translate_script' );


function ravs_translate_webpage_fx(){
?>
<script>
    // rulează scriptul după ce ambele scripturi sunt încărcate pentru traducerea paginii web
        jQuery(document).ready(function(){
          //din engleză în germană:
          jQuery('body').translate( 'ar' );
        });
</script>
<?php
add_action('wp_footer','ravs_translate_webpage_fx', 999 ); // asigură-te că acest hook rulează după ce jquery-translate este inclus în pagina web
12 feb. 2014 15:31:04
Comentarii

Dar asta înseamnă să folosești Google pentru a traduce pagina, nu să folosești fișierele .po pe care le are deja, nu-i așa?

Rup Rup
12 feb. 2014 20:26:46

@Rup Da, folosește Google Translate, nu fișierul .po. Poate fi posibil ca fișierul .po să nu conțină traducerea pentru un cuvânt aleatoriu, atunci _e() pur și simplu îl afișează, în timp ce Google Traducător convertește întreaga pagină.

Ravinder Kumar Ravinder Kumar
12 feb. 2014 20:52:06