• User Attivo

    Allora Michele, sai come vedere la provenienza dell'utente?

    :gthi:


  • User Attivo

    Ciao Michele,

    Dai un'occhiata a questa classe: www.devpro.it/php4_id_89.html

    penso faccia al caso tuo.

    Facci sapere come risolvi.

    😉


  • User

    Ciao, il modulo linkato permette di conoscere il paese di provenienza, ma come faccio poi a dare l'istruzione per il redirect ? Non esiste uno script già pronto ?
    grazie
    M.


  • User Attivo

    Lo puoi fare in php, ti sposto nella sezione adatta.
    😉


  • User Attivo

    Allora Michele, se hai XP nella barra delle applicazioni vedi (a destra) un IT che significa Italiano-Italia? 😉

    Bene, quello è recuperabile da php, anche se non hai XP e/o non lo vedi.

    Ti faccio qualche esempio:

    Italiano Italia --> it-it
    Francese Francia --> fr-fr
    Inglese Stati Uniti --> en-us

    Puoi fare così usando gli esempi che ti ho scritto poco sopra:

    [php]<?php
    $lin = $_SERVER['HTTP_LANGUAGE']; // Appunto la lingua del pc

    if($lin == "it-it") { header('Location: pagina-in-italiano.htm-php'); } // Se è italiano italia, nota quel "it-it"
    else if($lin == "it-it") { header('Location: pagina-in-francese.htm-php'); } // Se è francese francia, nota quel "fr-fr"
    else if($lin == "en-us") { header('Location: pagina-in-inglese.htm-php'); } // Se è inglese americano, nota quel "en-us"
    else { echo "Per la tua lingua non c'è nessuna pagina"; } // Se per la lingua dell'utente non hai messo nessun "if"
    ?>[/php]

    Oppure così:

    [php]<?php switch($_SERVER['HTTP_LANGUAGE']) {
    case 'it-it': header('Location: pagina-in-italiano.htm-php'); break; // Se è italiano italia, nota quel "it-it"
    case 'fr-fr': header('Location: pagina-in-francese.htm-php'); break; // Se è francese francia, nota quel "fr-fr"
    case 'en-us': header('Location: pagina-in-inglese.htm-php'); break; // Se è inglese americano, nota quel "en-us"
    default: echo "Per la tua lingua non c'è nessuna pagina"; break; // Se per la lingua dell'utente non hai messo nessun "case"
    } ?>[/php]

    Fammi sapere... 🙂

    :gthi:


  • Bannato User Attivo

    dove hai letto che esiste un HTTP_LANGUAGE? non sono riuscito a trovare niente a riguardo, ho trovato invece (it2.php.net/reserved.variables.server) un HTTP_ACCEPT_LANGUAGE che sarebbe > Contents of the Accept-Language: header from the current request, if there is one. Example: 'en'. cioè la lingua impostata sul browser.
    Sembra inoltre che i valori possibili sono > aa = Afar
    ab = Abkhazian
    ae = Avestan
    af = Afrikaans
    ak = Akan
    am = Amarico
    an = Aragonese
    ar = Arabo
    as = Assamese
    ast = Asturiano
    av = Avaric
    ay = Ayamara
    az = Azerbaigiano
    ba = Bashkir
    be = Bielorusso
    bg = Bulgaro
    bh = Bihari
    bi = Bislama
    bm = Bambara
    bn = Bengali
    bo = Tibetano
    br = Bretone
    bs = Bosniaco
    ca = Catalano
    ce = Chechen
    ch = Chamorro
    co = Corso
    cr = Cree
    cs = Ceco
    cu = Church Slavic
    cv = Chuvash
    cy = Gallese
    da = Danese
    de = Tedesco
    dv = Divehi
    dz = Bhutanese
    ee = Ewe
    el = Greco
    en = Inglese
    eo = Esperanto
    es = Spagnolo
    et = Estone
    eu = Basco
    fa = Persiano
    ff = Fulah
    fi = Finlandese
    fj = Fijian
    fo = Faeroese
    fr = Francese
    fy = Frisian
    ga = Irlandese
    gd = Gaelico scozzese
    gl = Gallego
    gn = Guarani
    gu = Gujarati
    gv = Manx
    ha = Hausa
    he = Ebraico
    hi = Hindi
    ho = Hiri Motu
    hr = Croato
    hsb = Upper Sorbian
    ht = Haitian
    hu = Ungherese
    hy = Armeno
    hz = Herero
    ia = Interlingua
    id = Indonesiano
    ie = Interlingue
    ig = Igbo
    ii = Sichuan Yi
    ik = Inupiak
    io = Ido
    is = Islandese
    it = Italiano
    iu = Inuktitut
    ja = Giapponese
    jv = Javanese
    ka = Georgiano
    kg = Kongo
    ki = Kikuyu
    kj = Kuanyama
    kk = Cazaco
    kl = Groenlandese
    km = Cambogiano
    kn = Keniota
    ko = Coreano
    kok = Konkani
    kr = Kanuri
    ks = Kashmiro
    ku = Curdo
    kv = Komi
    kw = Cornish
    ky = Kirghiso
    la = Latino
    lb = Lussemburghese
    lg = Ganda
    li = Limburgan
    ln = Lingala
    lo = Laotiano
    lt = Lituano
    lu = Luba-Katanga
    lv = Lettone
    mg = Malvescio
    mh = Marshallese
    mi = Maori
    mk = Macedone
    ml = Malayalam
    mn = Mongolo
    mo = Moldavo
    mr = Marathi
    ms = Malese
    mt = Maltese
    my = Birmano
    na = Nauru
    nb = Norvegese Bokmal
    nd = Ndebele, North
    ne = Nepalese
    ng = Ndonga
    nl = Olandese
    nn = Norvegese Nynorsk
    no = Norvegese
    nr = Ndebele, South
    nso = Sotho, Northern
    nv = Navajo
    ny = Chichewa
    oc = Occitano
    oj = Ojibwa
    om = Oromo
    or = Oriya
    os = Ossetian
    pa = Punjabi
    pi = Pali
    pl = Polacco
    ps = Pashto
    pt = Portoghese
    qu = Quechua
    rm = Rhaeto-Romanico
    rn = Kirundi
    ro = Rumeno
    ru = Russo
    rw = Kinyarwanda
    sa = Sanscrito
    sc = Sardo
    sd = Sindhi
    se = Northern Sami
    sg = Sangro
    si = Cingalese
    sk = Slovacco
    sl = Sloveno
    sm = Samoano
    sn = Shona
    so = Somalo
    sq = Albanese
    sr = Serbo
    ss = Siswati
    st = Sotho, Southern
    su = Sudanese
    sv = Svedese
    sw = Swahili
    ta = Tamil
    te = Telugu
    tg = Tajik
    th = Tailandese
    ti = Tigrinya
    tig = Tigre
    tk = Turkmeno
    tl = Tagalog
    tlh = Klingon
    tn = Tswana
    to = Tonga
    tr = Turco
    ts = Tsonga
    tt = Tartaro
    tw = Twi
    ty = Tahitian
    ug = Uighur
    uk = Ucraino
    ur = Urdo
    uz = Uzbeco
    ve = Venda
    vi = Vietnamita
    vo = Volapak
    wa = Walloon
    wen = Sorbian
    wo = Wolof
    xh = Xhosa
    yi = Yiddish
    yo = Yoruba
    za = Zhuang
    zh = Cinese
    zu = Zulue che l'header in questione ci arrivi come:

    • Accept-Language: da, en-gb;q=0.8, en;q=0.7*
      per cui bisogna fare uno split di HTTP_ACCEPT_LANGUAGE usando la virgola come separatore e prendere il primo valore, mentre gli altri sono la coppia lingua/importanza da usare nel caso il primo valore non è contemplato nelle nostre applicazioni.

    (rif. forum.html.it/forum/showthread.php?s=&postid=11442553)


  • User Attivo

    @saro78 said:

    dove hai letto che esiste un HTTP_LANGUAGE? non sono riuscito a trovare niente a riguardo, ho trovato invece (it2.php.net/reserved.variables.server) un HTTP_ACCEPT_LANGUAGE che sarebbe cioè la lingua impostata sul browser.

    Sì è vero, ho sbagliato a scrivere (mi ricordavo male), è $_SERVER['HTTP_ACCEPT_LANGUAGE'], però l'idea degli if o della funzione switch() è buona, no? :wink3:

    :gthi:


  • Bannato User Attivo

    si l'idea dello switch (o if) è corretta tranne per il fatto che il controllo va fatto su > uno split di HTTP_ACCEPT_LANGUAGE usando la virgola come separatore e prendere il primo valore


  • User Attivo

    Tipo questo?

    [php]list($lingua) = explode(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']);[/php]

    E poi usare $lingua al posto di $_SERVER?

    Comunque sapevo che era il trattino, non la virgola, vedendo appunto it-it, fr-fr e en-us ma se dici che va la virgola usiamo la virgola 😉

    :gthi:


  • Bannato User Attivo

    in realtà sembrerebbe che i valori possibili sono definiti come en, it, da, ect, quindi 2 caratteri, poi però dicono che l'header arriva come:*** da**, en-gb;q=0.8, en;q=0.7 *quindi può anche essere en-gb come primo valore, non è chiaro da quello che si legge nelle guide in rete.
    L'unica soluzione è fare un pò di prove con una pagina di test e cambiando la lingua del browser/S.O., per vedere cosa arriva nell'header HTTP_ACCEPT_LANGUAGE.

    [edit]
    il mio browser manda:
    Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3

    su firefox se si va in
    Strumenti->Opzioni->Avanzate->Generale->Lingue->[Scegli...]
    si vedono tutte le lingue possibili, che ahimè sono diverse da quelle che ho incollato nel post precedente. Tante sono nel formato it-it, rimane fermo il concetto che più lingue sono separate da virgola 😉