Come cambiare la lingua solo per il front-end?

8 feb 2014, 13:50:40
Visualizzazioni: 18.1K
Voti: 14

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.

1
Commenti

Possibile duplicato di Cambiare la localizzazione a runtime?

T.Todua T.Todua
4 nov 2018 18:34:41
Tutte le risposte alla domanda 7
0

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

  1. Vai nelle impostazioni e imposta la Lingua del sito alla lingua del frontend, ad esempio - Tedesco, poi salva.

  2. Vai su Utenti e poi clicca modifica sul tuo account amministratore. Lì puoi impostare la Lingua in Inglese e salvare. Tutto qui. Il tuo frontend utilizzerà il Tedesco come base e il backend sarà in Inglese.

24 feb 2019 23:20:38
0

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.

7 apr 2018 04:24:39
8

Puoi filtrare la stringa per locale, che contiene la lingua corrente. E puoi escludere l'admin da questo filtro:

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

In realtà, intendo come posso attivare una lingua specifica per il tema?

Hicham Hicham
8 feb 2014 13:56:12

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

fuxia fuxia
8 feb 2014 13:57:11

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

Hicham Hicham
8 feb 2014 13:57:49

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

fuxia fuxia
8 feb 2014 13:58:17

devo inserire ar-AR affinché il mio tema sia in arabo?

Hicham Hicham
8 feb 2014 14:01:09

Dipende dal nome dei tuoi file mo. Provalo, se non sei sicuro.

fuxia fuxia
8 feb 2014 14:04:06

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

Hicham Hicham
8 feb 2014 14:06:41

Sì, esattamente. Prova pure.

fuxia fuxia
8 feb 2014 14:27:05
Mostra i restanti 3 commenti
0

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.

15 ago 2014 17:55:17
0

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.

1 ago 2020 07:20:43
0

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
}
15 apr 2023 08:04:02
2

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
12 feb 2014 15:31:04
Commenti

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

Rup Rup
12 feb 2014 20:26:46

@Rup Sì, sta usando il traduttore di Google, non il file .po. Forse è possibile che il file .po non contenga la traduzione per una parola casuale, quindi _e() semplicemente la visualizza mentre il traduttore di Google converte l'intera pagina web.

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