Mikor helyénvaló és mikor nem nyelvi egyeztetést használni?
A nyelvi egyeztetés a HTTP protokoll egy funkciója, amely hagyja hogy egy szerver kiválasszon egy oldalt a különböző nyelvű verziók közül az URL alapján illetve
a böngésző által küldött beállításokkal kapcsolatos információ alapján (kimondottan az Accept-Language
fejlécben). Ez különbözik a böngésző IP címén
alapuló oldalválasztástól vagy a felhasználó általi választástól a nyelvválasztó oldalon. Ha nincs egyezés a böngésző által küldött beállítás és a szerveren elérhető
nyelvek között, akkor vagy egy nyelvválasztó oldalt jelenít meg a szerver vagy az alapértelmezett nyelven jeleníti meg az oldalt.
Sok esetben a rendben van a kezdeti böngésző beállítás a nyelvi tulajdonságokhoz. Például ha a böngészőnk japán, akkor az feltételezi hogy japánul nézzük az oldalakat, ezért ezt az információt küldi a szervernek. A népszerűbb böngészők lehetővé teszik számunkra hogy módosítsuk ezeket a nyelvi beállításokat. További információkért tekintse meg a GYIK Nyelvi tulajdonságok beállítása a böngészőben című leírását.
Ez a GYIK megválaszolja a kérdést, hogy mikor helyénvaló (vagy nem) nyelvi egyeztetést beállítani a szerveren.
A rövid válasz: mindig.
A kevésbé hosszú válasz: majdnem mindig, de nem kizárólag.
A nyelvi egyeztetés nem mindig úgy működik ahogy eltervezzük; vannak módszerek hogy pótoljuk a hiányosságokat; az egyik ilyen gondoskodik a kellemetlenségről a navigációban.
A nyelvi egyeztetés nyílvánvalóan egy hasznos dolog de mielőtt elkezdenénk használni, fontos hogy megértsük a határait. Hogy ezt illusztráljuk, egy www.example.be című oldalt fogunk használni példának, ami a tartalmát flamandul, franciául és németül kínálja. Az oldal használja a nyelvi egyeztetést és az alapértelmezett a flamand nyelv minden oldalon. A látogatónk, Szilvia, olaszul beszél de elboldogul a némettel. Számos szituáció adódhat:
Remélhetőleg most már tiszta a kép: a nyelvi egyeztetés nem mindig a tervezett eredményt adja.
Tovább a nyelvi egyeztetés nem is odavaló amikor az oldalak nem egyenértékűek, azaz nincs meg ugyanaz az alapvető tartalom külöböző nyelveken. A GYIK: Egynyelvű és Többnyelvű Weboldalak megvilágítja ezt a kérdést, különösen a "Többnyelvű, azonos tartalom" és "Többnyelvű, változott tartalom" részek. Jegyezzük meg azonban hogy a kulturális adaptáció néhány lépése (pl. a pénznem változtatása) nem feltétlenül teszi nem-egyenértékűvé az oldalakat. A nem-egyenértékű limitáció a nyelvi egyeztetésnél akkor merül fel valójában, amikor egy weboldal úgy van adaptálva, hogy a különböző nyelvű oldalak nem felelnek meg egy másiknak.
A korlátozások ellenére a nyelvi egyeztetés egy hasznos funkció és jó lenne a többnyelvű weboldalakba implementálni. De hiányosságokat is kezelni kell. Röviden fontos hogy a látogatóknak biztosítsuk a lehetőséget, hogy felülírhassák az automata nyelvválasztást, ha az rossz. Ez azt jelenti, hogy érdemes egy olyan elemet betenni az oldalra (nyelvválasztást) ami más elérhető nyelvekre mutat. Ezeknek az elemeknek természetesen tisztán láthatónak és érthetőnek kell lennie azoknak a látogatóknak is, akik nem járatosak az éppen megjelenített oldal nyelvében.
Felmerül egy kérdés: a nyelvi egyeztetést és a 'kézi' nyelvválasztást az összes oldalra implementálni kéne vagy csak a főoldalra? A legjobb válasz az "összes oldalra", kivéve azokat az oldalakat amelyek nem eléggé egyenértékűek. A nyelvi egyeztetés jó mert ha Jaap elküld Pierre-nek egy linket ami az www.example.be-re mutat, Pierre örülni fog, hogy a francia változatot látja, még ha Jaap a flamandot is olvasta. Nyelvválasztókat szintén kell biztosítani, akár használunk nyelvi egyeztetést akár nem. Ha az egyeztetés hiányzik, Pierre-nek szüksége lesz a nyelvváltoztatóra hogy a francia változatot kapja meg Jaap linkjéből.
Mellesleg néhány weboldal visszaküldi egy nyelvválasztó oldalra a felhasználót, ha nincs egyezés a látogató beállításai és az elérhető nyelvek között (www.example.be csinálhatná ezt is ahelyett, hogy a flamand oldalt mutatja). Megvan az előnye hogy tisztázzuk a szituációt és nem adunk elsőbbséget egy nyelvnek a többi helyett, amely politikailag érzékeny probléma is lehet. Sajnos néhány weboldal mindig erre a külön nyelvválasztó oldalra visz vissza ahelyett hogy a nyelvi egyeztetést implementálná. Ez mindenkit arra kényszerít, hogy mindig menjen keresztül azon az oldalon, miközben nincs látható előnye.
Tételezzük fel hogy Szilvia meglátogatja a www.example.be-t és flamand nyelv fogadja. Ő azután kattint a német nyelvre a választóban és tovább olvassa. Semmi gond. De aztán kattint egy linkre ami egy érdekes oldalra viszi a weboldalon. Upsz, flamand nyelv megint! Szerencsére a nyelvválasztó még mindig ott van, de néhány ilyen kitérő után kezd frusztrálttá válni érthető okokból. Nem tudna a www.example.be emlékezni, hogy Szilvia nem tud flamandul?
Számos módja van hogy a www.example.be megjegyezze a választott nyelvet. Az, hogy melyik választjuk majd, attól függ, hogy milyen technológia érhető el a szerveren illetve hogy mennyi erőfeszítést áldozunk bele
Ha a weboldal session-t használ (például sütiket), akkor egyszerű dolog elintézni, hogy a nyelv a session része legyen. Amint Szivlia a németre kattint a nyelvválasztón, az tárolásra kerül (vagy a sütiben vagy a szerveren) és onnantól a német oldalakat fogja látni amíg a weboldalon navigál. A sütit beállíthatjuk állandóra (bár ez a biztonsági problémákat növeli), így Szilvia automatikusan németül látja az oldalt következő alkalommal is, amikor visszatér a www.example.be-re. A weboldalak amik bejelentkezést használnak, szintén tárolhatják a nyelvi beállításokat a felhasználó profiljában és ennek megfelelően jeleníthetik meg az oldalakat. A nyelvi egyeztetés ilyenkor csak azoknak a felhasználóknál van használva, akik még nem jelentkeztek be.
A másik mód hogy csökkentsük a frusztrációt, hogy minden belső linket a weboldalon belül nyelv-specifikussá teszünk. A német főoldalon a linkek a mélyebb oldalakra
így néznének ki: href="company/about.de.html"
(ahelyett hogy company/about.html
, ami nyelv-generikus lenne)*. A navigáció kényszerítve
van hogy maradjon német, amíg nem lesz felülírva speciális nyelvválasztóval. Ennek van néhány rossz tulajdonsága is azonban. Az egyik, hogy minden belső link lefordítandó
anyaggá válik, növelve a fordítás költségét, nem beszélve a lehetséges hibákról. A másik, hogy ha Jaap küld egy linket Pierre-nek, az URL nyelv-specifikus lesz;
Pierre a flamand nyelvű oldalt fogja látni. Egyik rossz tulajdonság sem vészes azonban. Ha a sessionnel vagy a profillal nem biztosítható a nyelv megjegyzése, akkor a nyelv-specifikus
linkek használata a megfelelő mód erre.
Jegyezzük meg, hogy bizonyos formái a nyelv-specifikus és nyelv-generikus URL-eknek amiket mutattunk (company/about.de.html és company/about.html) attól függnek, hogy milyen technológiát használunk a szerver oldalon, hogy a nyelvi egyeztetést implementáljuk. Az Apache MultiViews-t használva inkább a company/about.html.de és company/about.html amit szívesebben lát a szerver.
A HTTP Accept-Language
fejléc nem az egyetlen nyelvi információ ami elérhető. Minden böngésző küld egy User-agent
fejlécet ami azonosítja a böngészőt, a verzió számát és néhány
esetben a nyelvét is. Ezt fel lehet használni hogy megtippeljük a felhasználó által preferált nyelvet ha az Accept-Language
fejléc hiányzik, de ez kevésbé megbízható és többnyire
korlátozott (egy nyelvre kizárólag) mint az Accept-Language
. Különös odafigyeléssel használjuk.
A nyelvi egyeztetés csak egy aspektusa a HTTP tartalom egyeztetésnek. Más aspektusok amik automatikusan egyeztetve lehetnek például a formátum (HTML, PDF vagy sima szöveg), a karakterkódolás és az átvitel kódolása (kódolt, tömörített, stb.). A nyelvi egyeztetés a leghasznosabb és a legtöbbet használt.