Come cambiare la lingua solo per il front-end?
Ho installato un tema WordPress, posso vedere i file .mo e .po in /public_html/wp-content/themes/themename/lang
, la lingua che voglio utilizzare è disponibile.
Potreste consigliarmi su come utilizzare una lingua specifica? Non voglio cambiare la lingua dell'amministratore, solo quella del tema.
In realtà, non hai bisogno di nulla di speciale per avere due lingue diverse nel backend e nel frontend. Ho appena testato di nuovo su WP 5.1
Vai nelle
impostazioni
e imposta laLingua del sito
alla lingua del frontend, ad esempio - Tedesco, poi salva.Vai su
Utenti
e poi clicca modifica sul tuo account amministratore. Lì puoi impostare laLingua
in Inglese e salvare. Tutto qui. Il tuo frontend utilizzerà il Tedesco come base e il backend sarà in Inglese.

Se qualcuno sta ancora cercando una soluzione, ecco cosa dovresti fare dalla versione 4.7 in poi
function wp_noshor_redefine_locale($locale) {
if( is_admin() ):
switch_to_locale('en_US');
endif;
// Forza la lingua della dashboard in inglese
}
add_filter('init','wp_noshor_redefine_locale');
// Aggiunge il filtro all'hook 'init' per cambiare la lingua
Questo costringe la dashboard a caricarsi in inglese, dopodiché puoi andare nelle impostazioni e selezionare la lingua desiderata.

Questo avviene automaticamente quando locale
corrisponde a un file di traduzione esistente.

scusa se ti disturbo ma sono nuovo a WP, come posso far corrispondere il locale al file di traduzione?

Aggiungendo il codice sopra a un plugin o al file functions.php
del tuo tema.

Voglio cambiare solo la lingua del front-end in arabo, non il back-end (il mio pannello di amministrazione di WordPress) quindi solo la lingua del mio tema. Quindi, se ho capito bene: devo modificare il functions.php del mio tema e aggiungere quanto segue: is_admin() or add_filter( 'locale', function() { return 'ar-AR'; });

Penso che l'opzione più semplice per te sia aggiornare la tua installazione utilizzando la versione localizzata di WordPress per la tua lingua nativa (assicurandoti che WPLANG
rimanga impostato di conseguenza), e poi utilizzare un plugin come:
... per passare solo l'interfaccia di amministrazione all'inglese.

Ecco la soluzione completa e migliore per cambiare solo la lingua del tema (front-end) o del plugin. Funziona anche per modificare la lingua di una pagina/post specifico, ecc.
TLDR; C'è un filtro chiamato locale
, che determina quale lingua caricare. Puoi cambiarla nella lingua specifica in base alle condizioni che preferisci.
Cambiare solo la lingua del Tema, o basarsi su altre condizioni, senza modificare la lingua della dashboard di amministrazione.
add_filter('locale', function($locale) {
if( is_admin() ) {
return $locale; // Mantieni la lingua predefinita se è lato amministrazione.
}
// Puoi caricare la lingua in base a qualsiasi tag condizionale qui, come is_page(), is_singular(), is_archive(), ecc.
// In questo esempio particolare, voglio cambiare la lingua per tutto il front-end.
$locale = 'en_US'; // Cambia con la lingua desiderata. La lingua deve essere installata e caricata.
return $locale; // Restituisce la lingua da utilizzare.
});
Prima di cambiare la lingua, potresti doverla caricare prima.
Nel tuo tema o child theme, carica la lingua personalizzata utilizzando questo snippet.
add_action( 'after_setup_theme', function() {
// Supponendo che i tuoi file di lingua siano in /wp-content/themes/your-theme/languages
// Non dimenticare di cambiare 'text-domain' con il text-domain del tuo tema.
// Per il Tema.
load_theme_textdomain( 'text-domain', get_template_directory() . '/languages' );
// Per il Child Theme
load_child_theme_textdomain( 'text-domain', get_stylesheet_directory() . '/languages' );
// Rimuovi load_child_theme_textdomain se lo stai usando per il tema principale,
// OPPURE rimuovi load_theme_textdomain se stai caricando la lingua del child theme.
});
Allo stesso modo, puoi cambiare la lingua in base all'URL, o per la pagina del tuo plugin, ecc.
Spero che sia utile. Oppure fammi sapere se ho tralasciato qualcosa.

Ecco un esempio di snippet di codice che puoi utilizzare per cambiare la lingua dinamicamente in WordPress:
add_filter('locale', 'change_user_lang');
function change_user_lang($locale)
{
if (is_admin()) return 'en_US'; // imposta la lingua dell'amministrazione in inglese
// la tua logica personalizzata per la lingua qui, ad esempio:
// if (some condition) return 'fr_FR'; // imposta la lingua in francese
// if (some other condition) return 'de_DE'; // imposta la lingua in tedesco
return $locale; // restituisce la lingua originale se nessuna condizione è soddisfatta
}

Puoi anche provare questo:
1.Scarica lo script jQuery per la traduzione da questo link
2.Come funziona ( documentazione, 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>
// esegui lo script dopo il caricamento di entrambi gli script per tradurre la pagina web
jQuery(document).ready(function(){
//dall'inglese al tedesco:
jQuery('body').translate( 'ar' );
});
</script>
<?php
add_action('wp_footer','ravs_translate_webpage_fx', 999 ); // assicurati che questo hook venga eseguito dopo l'inclusione di jquery-translate nella pagina web

Ma questo significa usare Google per tradurre la pagina, non utilizzare i file .po che già possiede, giusto?
