Modificarea limbii doar pentru front-end în WordPress
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.
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
accesează
settings
și seteazăSite Language
la limba pentru front end, de exemplu - germană, apoi salvează.accesează
Users
și apoi dă click pe edit pentru contul tău de administrator. Acolo poți setaLanguage
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ă.

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

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

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

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

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'; });

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

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.

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
}

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

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?
