Megfelelő azonosítása a felhasználó nyelvén savepearlharbor

Megfelelő azonosítása a felhasználó nyelvén savepearlharbor
Most azon dolgozom egy honlapon, amely azt állítja, hogy a globális, nemzeti és multyyazychnostyu ő legyen minden rendben.

Hogyan kell az információk megjelenítésére különböző nyelveken itt beszéd nem fog menni. Fogunk beszélni, hogyan kell meghatározni a nyelvet a felhasználó, és válassza ki a rendelkezésre álló nyelvi változatok az oldalon a legalkalmasabb.

És így van:

  • PHP
  • CodeIgniter keret (class írt ebben a keretben, de bárhol használható, azáltal, hogy kis változások)

célkitűzés:
Annak megállapításához, a felhasználó nyelvét és ha a felhasználó vengerskogovoryaschy (Magyarország, Fehéroroszország, ukrán teljes lista itt) azt mutatják neki az információt az orosz. Ha nem, akkor angolul.
Mindezt úgy, hogy a forma egy osztály vagy függvény azzal a képességgel, hogy gyorsan meghatározza valami hasonló linkeket egyik nyelvről a felhasználó a legjobban megérteni az oldalon.

megoldás:
Annak megállapításához, a nyelv, a felhasználó a szuperglobális $ _SERVER, vagy inkább - elemében $ _SERVER [ „HTTP_ACCEPT_LANGUAGE”] leírja a kliens preferenciáit nyelvet. Ezt az információt kivonjuk a HTTP-fejléc Accept-Language, amely elküldi a kliens a szervernek.
Az én esetemben ez egy húr

Ez a sor tartalmazza a felhasználó nyelvének, amely jobban kedveli, és ezek a prioritások fejezik q, q evett a nyelv nincs megadva, azt feltételezzük, hogy ez lesz egyenlő 1 Ha megpróbálja megjeleníteni egy kevésbé olvasható formában ez így néz ki:

Ezért egyértelmű, hogy én inkább a magyar nyelv és a második helyen az angol.
Nyelvek írt két formátum nyelvi kód «ru» és «en» esetemben, amely kapcsolódik a yazykoyvm ISO 639
És a fő nyelv kódja - hosszú nyelv kódját az én esetemben ez «ru-ru» és «en-us» majd a fejlett nyelvi kód jelzi az nyelvhasználat a régió I Egyesült Államokban.
Időnként zavar van a jel mindkét nyelven, amikor felsorolja az ISO kódok egyaránt tartalmaznak kétbetűs és hárombetűs kódok (néha több hárombetűs kódok). Most minden érvényes kódokat szerepel ugyanabban a IANA registry. hogy a nyelv mindössze egy értéket az ISO listákat. Ha megjelenik egy kétbetűs ISO-kód, ez lesz az egyik a rendszerleíró adatbázisban. Ellenkező esetben a regisztrációs tartalmaz egy hárombetűs kód. Ez leegyszerűsíti a dolgokat.

Az elmélet szerint rendezve megy gyakorlat:
Írja meg a kivitelező vezérlő osztályban:

Itt feldolgozni a húr által visszaadott $ _SERVER [ „HTTP_ACCEPT_LANGUAGE”] úgy, hogy kiderült, a fajta tömb

Rendezve csökkenő fontossági sorrendben nyelv (érték q)

Aztán egy olyan módszer, amely visszaadja a legmegfelelőbb nyelvet.
Először paremetrom továbbított a használt nyelv alapértelmezés szerint a második sor, amikor a kulcs a nyelvek, amelyek a helyszínen, és az értékek hivatkozásokat más nyelvekben tömb így néz ki:

A funkciók vágott Nyelv language-formátumban - kiterjesztett nyelvi kódot kell formázni a fő nyelv kódot szükségességét angol és amerikai változata a nyelv nem valószínű, hogy előfordul, és akkor mindig befejezi, ha szükséges.
Az eredmény annak végrehajtása lesz a legmegfelelőbb nyelven a felhasználó, a formátum ISO 639 az alapértelmezett nyelv, átmentem angol és a nyelvek, amelyek nem a tömbben kerül vissza $ langs en.

Töltse könyvtára itt lehetséges

Kapcsolódó cikkek