Mikor használjunk nyelvi egyeztetést

Kérdés

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.

Válasz

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 hiányosságai

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:

  1. Szilvia böngészője rendesen van beállítva, elsőként az olaszt preferálja, másodsorban a németet. Az olasz nem elérhető a www.example.be-n, az oldalak így németül jelennek meg, a látogató egész boldog. Ez az amiért a nyelvi egyeztetés létrejött!
  2. Szilvia nem szakember, sosem hallott a HTTP nyelvi egyeztetésről és sosem érezte szükségét hogy átállítsa a böngészője beállításait. A böngészője olasz verziójú, ami alapértelmezett nyelvnek (helyesen) az olaszt veszi. Amikor ellátogat Szilvia a www.example.be-re, az olasz nem elérhető és az oldal flamand nyelven jelenik meg, holott a német is elérhető lenne. Rossz.
  3. Szilvia nem a saját böngészőjét használja, egy internetkávézóban ül moszkvában. A böngésző oroszra van állítva. Ismét flamand nyelven látja az oldalt. Rossz.

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 hiányosságok pótlása

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.

Navigáció

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.

Mellesleg

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.