Majoritatea site-urilor multilingve utilizează tehnologia pentru a determina automat limbajul utilizatorului. Se pare că: un utilizator, când vizitează o resursă, vede în fața lui pagini cu conținut în limba maternă. Cea mai simplă metodă de determinare este cea a fiecărui vizitator. Tehnologia este simplă și în multe feluri convenabilă pentru vizitatori. Dar are nuanțe proprii.
Utilizând IP-ul sau, mai precis, GeoIP este cel mai accesibil și mai ușor mod. Dar, în același timp, este adesea inexactă. Mulți utilizatori se plâng: atunci când sunt în afara Rusiei, inițial toate site-urile sunt descărcate în limba țării în care au reședința. Acest lucru este extrem de inconfortabil, iar cel mai interesant este faptul că astfel de site-uri mari, precum Facebook, păcătuiesc.
- aplicație ușoară, abilitatea de a implementa în diferite limbi
- dacă nu țineți cont de problemele descrise mai sus - o precizie ridicată a determinării;
- viteza mare (instantanee) - doar o singură cerere către baza de date este suficientă pentru a obține rezultatul.
Dezavantajele metodei de determinare a limbajului prin IP includ:
- necesitatea de a actualiza constant baza de date IP;
- Este imposibil să verificăm cât de fiabile sunt datele;
- Datele IP pentru Rusia nu sunt întotdeauna exacte.
Primul și cel mai simplu mod este să utilizați o bibliotecă gratuită. De exemplu, pentru site-urile din PHP, puteți utiliza extensia GeoIP. Linkul conține instrucțiuni detaliate de instalare și alte recomandări.
În PHP, există elemente standard ale matricei superglobale $ _SERVER pentru a determina adresa IP și pentru a comuta la versiunea lingvistică dorită. Aici este elementul specific folosit
Acesta este responsabil pentru trimiterea datelor de limbă ale utilizatorului pe server, returnând valoarea en, en sau orice altceva. Deci, aceasta arată ca aceste date:
Prima valoare este limba, a doua este regiunea, iar coeficientul indică prioritatea (în ce limbă utilizatorul preferă mai mult). Datorită acestei logici, de exemplu, pagina de pornire Google pentru un utilizator vorbitor de limbă rusă care se află în Ucraina va descărca în limba rusă, dar de pe un server Google.com.ua.
Pentru a determina limba, puteți folosi următorul cod:
preg_match_all ( '/ ([az] (: - [az])) (:;? ??? q = ([. 0-9] +)) /', strtolower ($ _ SERVER [ "HTTP_ACCEPT_LANGUAGE"]), $ meciuri); // calculați potrivirile cu potrivirile de matrice $
$ langs = array_combine ($ meciuri [1], $ meciuri [2]); // Creați un matrice cu cheile $ matches [1] și valorile $ se potrivește [2]
foreach ($ langs ca $ n => $ v)
$ langs [$ n] = $ v. $ v. 1; // Dacă nu există q, setați valoarea la 1
arsort ($ langs); // sortează în ordine descrescătoare q
cheia ecou ($ langs); // Afișați limba prestabilită
>
Este suficient să instalați codul pe site - iar vizitatorii vor primi paginile descărcate în limba de care au nevoie, fără a întreprinde acțiuni suplimentare. Iată o altă metodă similară:
preg_match ( '/ ^ \ w /', $ _ SERVER [ 'HTTP_ACCEPT_LANGUAGE'], $ meciuri);
comutator (strtolower (meciuri de $ [0]))
caz "ru": $ accept_lang = "ru"; // dacă rusă
caz "de": $ accept_lang = "de"; pauză; // dacă germanul
cazul "en": cazul "uk": cazul "us": $ accept_lang = "en"; pauză; // daca engleza
cazul "ua": $ accept_lang = "ua"; pauză; // dacă ucraineanul
implicit: $ accept_lang = "en"; // dacă nu există potriviri, atunci implicit, de exemplu, în limba engleză
echo $ accept_lang;
>
$ sites = array (
// obțineți limba
$ lang = substr ($ _ SERVER ['HTTP_ACCEPT_LANGUAGE'], 0, 2); // Tăiați primele două litere
// verificați limba
dacă (! in_array ($ lang, array_keys ($ sites)))
$ lang = "ru";
// redirecționați către subdomeniu
antet ('Locație:'. $ sites [$ lang]);
Pentru a proteja împotriva eventualelor greșeli în definirea, permite capacitatea ușoară și clară de a schimba manual interfața de limbă - astfel încât chiar și pe un site cu personajele un vizitator rus pentru a înțelege cum de a schimba limba.