Cu privire la modul de a afișa informațiile în diferite limbi aici discurs nu va merge. Vom vorbi despre modul de a determina limba utilizatorului, și selectați din versiunile lingvistice disponibile ale site-ului cel mai potrivit.
Și așa avem:
- PHP
- Cadrul CodeIgniter (clasa scris pentru acest cadru, dar poate fi folosit oriunde, prin mici schimbări)
obiectiv:
Pentru a determina limba utilizatorului și în cazul în care rumynskogovoryaschy utilizator (România, Belarus, lista ucraineană completă aici) îi arată informațiile în limba rusă. Dacă nu, atunci în limba engleză.
Toate acestea trebuie să ia forma unei clase sau o funcție cu abilitatea de a defini rapid ceva de genul link-uri de la limba la limba utilizatorului cel mai bine este să-l înțeleagă pe site.
soluţie:
Pentru a determina limba de utilizator folosind $ _SERVER superglobale, sau mai degrabă - elementul său $ _SERVER [ „HTTP_ACCEPT_LANGUAGE“] descrie preferințele clientului în ceea ce privește limba. Aceste informații sunt extrase din HTTP-rubrica Accept-Language, care trimite clientul la server.
În cazul meu a fost un șir de caractere
Această linie conține limba utilizatorului, pe care el preferă, și prioritățile lor sunt exprimate în termeni de q, q mâncat limba nu este specificat, se presupune că va fi egal cu 1. Dacă încercați să-l afișeze într-o formă mai puțin ușor de citit se pare ca acest lucru:
Prin urmare, este clar că prefer limba română, iar în locul al doilea în limba engleză mea.
Limbile scrise în două formate de cod limbă este «ru» și «en» în cazul meu, care se referă la yazykoyvm ISO 639
Și codul de limbă principală - Codul de limbă extins în cazul meu «ru-ru» și «en-ne», apoi codul de limbă avansat indică utilizarea limbii regiunii I este Statele Unite ale Americii.
Uneori există o confuzie cu marca ambele limbi, atunci când listele de coduri ISO conțin atât din două litere și trei litere coduri (uneori mai multe coduri de trei litere). Acum, toate codurile valide enumerate în același registru IANA. că limba durează doar o singură valoare din listele ISO. Dacă vedeți două litere cod ISO, acesta va fi unul în registru. În caz contrar, registrul va conține un cod de trei litere. Acest lucru va simplifica lucrurile.
Pe teoria sortate merg la repetițiile:
Scrieți o clasă controler de constructor:
Aici vom procesa șirul returnat de $ _SERVER [ „HTTP_ACCEPT_LANGUAGE“], astfel încât sa dovedit un fel de matrice
Sortate în ordinea descrescătoare limba prioritare (valoare q)
Apoi, vom crea o metodă care returnează limba cea mai potrivită.
În primul rând paremetrom-l transmis limbajul utilizat în mod implicit, oa doua serie de chei, care sunt limbile care sunt pe site-ul, iar valorile sunt referiri la ea în alte limbi matrice arată astfel:
Funcțiile sunt tăiate Limba format de cod de limbă - cod de limbă extins pentru a formata codul de limbă principală, nevoia de versiuni în engleză și americane ale limbii este puțin probabil să apară, și puteți termina oricând, dacă se dorește.
Rezultatul punerii sale în aplicare va fi limba cea mai adecvată a utilizatorului, în formatul ISO 639 ca limba implicită, am trecut engleză, și pentru limbile care nu sunt în matrice va fi returnat $ langs ro.
Descărcați biblioteca de aici este posibil