detectează limba în care este scris un articol

11 feb. 2013, 15:30:55
Vizualizări: 14.1K
Voturi: 3

Există vreo metodă de a evalua limba în care este scris un articol/pagină? Dezvolt un site multilingv și aproape că-mi smulg părul încercând să fac navigația din frontend să țină cont de limba aleasă. Până acum, plugin-ul polylang http://wordpress.org/extend/plugins/polylang/ a funcționat bine pentru orice altceva.

6
Comentarii

Ce înseamnă „evaluare”? Să analizez textul și să detectez limba? Sau să obțin limba atribuită când postarea a fost creată?

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

Obține limba atribuită când postarea/pagina a fost creată. Vor exista pagini scrise în, să zicem, franceză și olandeză. Dacă limba mea aleasă este olandeza, nu doresc ca linkurile către paginile în franceză să fie vizibile.

tembamazingi tembamazingi
11 feb. 2013 15:56:16

Pur și simplu elimină pll_the_languages() din șabloane sau șterge Widget-ul Schimbător de Limbă. Depinde de unde provine.

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

Am încercat asta fără niciun efect, din păcate. Meniurile mele încă nu sunt specifice limbii. Limba este ignorată mai ales când navighez prin conținut pe categorii, dacă asta ajută la diagnosticarea problemei.

tembamazingi tembamazingi
11 feb. 2013 16:25:09

Dacă te referi la Meniuri Personalizate, trebuie să creezi câte un meniu pentru fiecare limbă. Vezi Meniurile de Navigare Polylang.

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

Vă mulțumesc amândurora, răspunsurile voastre cu siguranță mi-au clarificat multe lucruri

tembamazingi tembamazingi
11 feb. 2013 17:05:00
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 3
3

Limba principală a unui articol ar trebui să fie salvată într-un câmp meta al postării. Nu există o metodă automată de a detecta acest lucru. Chiar și euristicile Google eșuează frecvent în această privință.

Deci adaugă un câmp personalizat lang și verifică cu …

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

… în ce limbă a fost scris articolul.

Actualizare

Iată un exemplu foarte simplu pentru un selector de limbă. Acesta va fi vizibil pe fiecare tip de postare care are o casetă meta Publicare.

selector de limbă în caseta meta Publicare

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

… va returna limba postării dacă este disponibilă.

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">Limba</label>
        <select name="t5_language" id="t5_language_id">';

    $current = get_post_meta( get_the_ID(), '_language', TRUE );
    $languages = array (
        'en' => 'Engleză',
        'de' => 'Germană',
        'ja' => 'Japoneză'
    );

    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
Comentarii

Mulțumesc pentru răspuns, este posibil să adăugați câmpul personalizat și la post_type-ul de pagini?

tembamazingi tembamazingi
11 feb. 2013 15:57:29

@user27302 Vezi actualizarea mea. Am adăugat un exemplu.

fuxia fuxia
11 feb. 2013 16:26:55

Ești grozav! Mulțumesc din suflet, sunt cu siguranță pe drumul cel bun acum.

tembamazingi tembamazingi
11 feb. 2013 17:09:30
0

Pentru REST API, wp-graphql și wp-cli's wp eval-file, a trebuit să fac:

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

Funcția de care aveți nevoie este pll_get_post_language().

Sursă: https://polylang.pro/doc/function-reference/

10 dec. 2024 00:02:29