Rilevare la lingua in cui è scritto un articolo

11 feb 2013, 15:30:55
Visualizzazioni: 14.1K
Voti: 3

Esiste un modo per valutare la lingua in cui è scritto un articolo o una pagina? Sto costruendo un sito multilingue e sto quasi perdendo la pazienza nel tentativo di far sì che la navigazione front-end tenga conto della lingua scelta. Finora il plugin Polylang http://wordpress.org/extend/plugins/polylang/ ha funzionato bene per tutto il resto.

6
Commenti

Cosa intendi con 'valutare'? Analizzare il testo e rilevare la lingua? Oppure ottenere la lingua assegnata quando il post è stato creato?

Max Yudin Max Yudin
11 feb 2013 15:42:01

Ottieni la lingua assegnata quando il post/la pagina è stata creata. Ci saranno pagine scritte, ad esempio, in francese e olandese. Se la lingua che ho scelto è l'olandese, non voglio che i collegamenti alle pagine in francese siano visibili.

tembamazingi tembamazingi
11 feb 2013 15:56:16

Basta rimuovere pll_the_languages() dai template o eliminare il widget Language Switcher. Dipende da dove proviene.

Max Yudin Max Yudin
11 feb 2013 16:04:31

Provato senza successo, purtroppo. I miei menu non sono ancora specifici per lingua. La lingua viene ignorata soprattutto quando si naviga il contenuto per categoria, se questo può aiutare a diagnosticare il problema.

tembamazingi tembamazingi
11 feb 2013 16:25:09

Se intendi i Menu Personalizzati devi crearne uno per ogni lingua. Vedi i menu di navigazione Polylang.

Max Yudin Max Yudin
11 feb 2013 16:37:35

Grazie a entrambi, le vostre risposte hanno sicuramente chiarito molte cose per me

tembamazingi tembamazingi
11 feb 2013 17:05:00
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 3
3

La lingua principale di un articolo dovrebbe essere salvata in un campo meta del post. Non esiste un modo automatico per rilevarla. Anche gli algoritmi di Google falliscono regolarmente in questo.

Quindi aggiungi un campo personalizzato lang e controlla con…

$language = get_post_meta( get_the_ID(), 'lang', TRUE );

… in quale lingua è stato scritto l'articolo.

Aggiornamento

Ecco un esempio molto semplice per un selettore di lingua. Sarà visibile su ogni tipo di post con un metabox Pubblica.

descrizione immagine

get_post_meta( get_the_ID(), '_language', TRUE ); 

… restituirà la lingua dell'articolo se disponibile.

add_action( 'post_submitbox_misc_actions', 't5_language_selector' );
add_action( 'save_post', 't5_save_language' );

function t5_language_selector()
{
    print '<div class="misc-pub-section">
        <label for="t5_language_id">Lingua</label>
        <select name="t5_language" id="t5_language_id">';

    $current = get_post_meta( get_the_ID(), '_language', TRUE );
    $languages = array (
        'en' => 'Inglese',
        'de' => 'Tedesco',
        'ja' => 'Giapponese'
    );

    foreach ( $languages as $key => $language )
        printf(
            '<option value="%1$s" %2$s>%3$s</option>',
            $key,
            selected( $key, $current, FALSE ),
            $language
        );

    print '</select></div>';
}


function t5_save_language( $id )
{
    if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
        return;

    if ( ! current_user_can( 'edit_post', $id ) )
        return;

    if ( ! isset ( $_POST['t5_language'] ) )
        return delete_post_meta( $id, '_language' );

    if ( ! in_array( $_POST['t5_language'], array ( 'en', 'de', 'ja' ) ) )
        return;

    update_post_meta( $id, '_language', $_POST['t5_language'] );
}
11 feb 2013 15:36:07
Commenti

Grazie per la risposta, è possibile aggiungere il campo personalizzato anche al post_type delle pagine?

tembamazingi tembamazingi
11 feb 2013 15:57:29

@user27302 Vedi il mio aggiornamento. Ho aggiunto un esempio.

fuxia fuxia
11 feb 2013 16:26:55

Sei fantastico! Grazie mille, ora sono decisamente sulla strada giusta.

tembamazingi tembamazingi
11 feb 2013 17:09:30
0

Per le API REST, wp-graphql e il comando wp eval-file di wp-cli ho avuto bisogno di fare

wp_get_post_terms( $post->ID, 'language' )[0]->slug
30 ago 2018 16:57:19
0

La funzione di cui hai bisogno è pll_get_post_language().

Fonte: https://polylang.pro/doc/function-reference/

10 dic 2024 00:02:29