Az n billentyű átugrik az oldal navigációhoz. Ugrás a szöveg elejére.

Ez a dokumentum egy fordítás. Bármilyen ellentmondás vagy hiba esetén a legfrissebb angol nyelvű eredeti változatot kell mérvadónak tekinteni. A szerzői jog a W3C tulajdonát képezi, amint az alább látható.

Fordító: Dénes Kohn, Metaphraser - Translation Company

s_gotoW3cHome Internacionalizációs Tevékenység
 

A Nyelv Deklarálása XHTML-ben és HTML-ben

Célközönség: HTML/XHTML és CSS tartalomszerkesztők. Ez az anyag alkalmazható ha dokumentumot hozunk létre akár egy szerkesztőben vagy akár szkripttel. Feltételezzük, hogy Ön rendelkezik az alapvető HTML és CSS ismeretekkel.

Megjegyzés: Változások történtek az eredeti angol változatban amióta a dokumentum le lett fordítva. Változások megtekintése.

Miért kéne elolvasnia?

Egy oldalon használt nyelvről az információ fontos a hozzáférhetőség, a stílus használata, keresés és más okok miatt. Emellett a nyelvi információt, ami a böngésző és a szerver között közvetítődik, fel lehet használni hogy tökéletesítsük a navigációt a felhasználók számára és javítsuk az oldal lokalizálhatóságát. Ez az útmutató segíteni fog, hogy hasznát vegye a lehetőségeknek amik most elérhetőek és a közeljövőben elérhetőek lesznek a nyelvi információ megfelelő deklarálásával.

Célkitűzések

Az alábbi útmutatóval Ön képes lesz:

Ha siet és csak meg akarja tudni, hogy mit tegyen az elmélet nélkül, kezdje el olvasni a Szövegfeldolgozó nyelv deklarálása résztől.

Miért deklaráljuk a nyelvet?

Az alkalmazások használhatnak információt a tartalom nyelvéről, hogy a felhasználóknak a legmegfelelőbb információt nyútsák vagy hogy a legmegfelelőbb módon nyújtsák. Minél több tartalom van jól jelölve, annál hasznosabb és áthatóbb alkalmazások lesznek.

A nyelvi információ hasznos a hozzáférhetőséghez, szerkesztő eszközökhöz, fordító eszközökhöz, betűtípus kiválasztáshoz, oldal megjelenítéshez, kereséshez és szkripteléshez.

Egy dokumentum nyelvéről az információ rendkívűl fontos a képernyő olvasóknak és a hozzáférhetőségnek kezdettől fogva. Ezeknek az alkalmazásoknak tudniuk szükséges hogy a szövegből képesek kimenetet előállítani vagy talán váltaniuk kell egy másféle nyelvi módra.

A szerkesztő eszközök olyan dolgokhoz használhatják a nyelvi információt mint a helyesírás és nyelvtan ellenőrzés. Hogy elérjük a webes tartalom szerkesztésnél is azt a fajta támogatást mint ami például a Microsoft Office-ban van, lényeges, hogy a szerkesztők tudják, hogyan társítsák a dokumentumukat és a szöveget nyelvi információval és lényeges, hogy így is tegyenek.

Itt egy példa, hogy egy böngésző hogyan használhatja a nyelvi információt. Az oldal Unicode-ban van kódolva, egyszerűsített kínai, tradícionális kínai, japán és koreai nyelvek osztozhatnak ugyanazon a kódegységen. Azonban ott van egy elvárás az ezen a nyelven beszélők részéről, hogy ezeknek a nyelveknek az írásjelei nyelvenként eltérhetnek kis részletekben. Néhány böngésző a nyelvi információt arra használja, hogy megfelelő betűtípust tulajdonítson ezekhez a nyelvekhez, ha nincs ilyen stílus deklarálva. Az alul látható illusztráció a képen megmutatja hogy hogyan hat a language tag megváltoztatása egy böngészőben, mint a Firefox vagy az Internet Explorer. (Ezt mi magunk is kipróbálhatjuk a teszt oldalt használva.)

Egy oldal részlete ahol különböző betűtípusok vannak alkalmazva a böngésző által ugyanarra a karakterre, attól függően, hogy a szöveg egyszerűsített kínaiként, tradíciónális kínaiként, japánként vagy koreaiként van megjelölve.

A nyelvi jelzés emellett lehetővé teszi, hogy megfelelő stílusvariációkat alkalmazzunk amelyeket a style sheet-ben definiálunk. (Lásd Stílusok a lang attribútum használatával.) Például a betűtípusoknak vagy sorközöknek változniuk kellhet, hogy alkalmazkodjanak a különböző ábécékhez, a stílus által generált idézőjelek különbözőek lehetnek nyelvenként, a hangsúlyt különböző módon kell kifejezni, stb.

A nyelvi információ jelölése lehetővé teszi a nyelv-specifikus feldolgozást. Például egy XSLT folyamatot fel lehet használni hogy szöveget nyerjen ki a dokumentum nyelvének megfelelő módon rendezve. Vagy az is lehetséges, hogy az XSLT lang() funkciót használva nyelv-specifikus szöveget nyerjünk ki egy fájlból. Egy másik példa, hogy a nyelv információt arra használjuk, hogy kultúra-specifikus stílust alkalmazzunk, mint amilyen a megfelelő idézet helyettesítése vagy a hangsúly, az XSL-F0-ba való konverzió alatt.

Sok esetben ezek az alkalmazások nem talán nem olyan dolgok amiket fontosnak látunk először, amikor fejlesztjük a tartalmunkat, de tipikusan nagyon könnyű hozzáadni a szerkesztés alatt. Viszont sokkal problémásabb átalakítani utólag ha szükség van rá.

Emellett néhány alkalmazás a nyelv jelölésére még mindig korai fejlesztési fázisban van, de a legobb ha most adjuk hozzá a nyelvi információt a tartalmunkhoz, hogy később, amikor a technológia megérik rá, learathassuk a gyümölcsét.

Ez változhat a jövőben, főleg ahogy a nagyobb kereső motorok egyre érdekeltebbek lesznek a nyelv iránt. Mindazonáltal mi jelenleg egy visszatérő problémával nézünk szembe. Az emberek akik nem látják a nyelvi információ alkalmazásait, nem nyújtanak információt a tartalmukról. A nyelvvel kapcsolatos alkalmazások lassan tudnak elterjedni, amíg ez az információ nincs széles körben alkalmazva a tartalmakban. Ez a körforgás megtörhető azzal, ha a tartalomszerkesztők lépéseket tesznek, hogy deklarálják a nyelvi információt.

Ahogy már mondtuk, ezt általában nagyon egyszerű megtenni és nem jár hátránnyal.

A nyelv deklarálásának két típusa

Két mód van a deklarálásra, amiből az egyik a tartalom nyelvét határozza meg:

  1. hogy egy szöveg bizonyos részét kifejezzük, így az alkalmazások amik manipulálják a szöveget (pl. szövegből beszédre fordító motorok, style sheet-ek, stb.) helyesen megérthetik és kezelhetik a szöveget amivel éppen dolguk van,

  2. hogy kifejezzük a dokumentum várható célközönségének a nyelvét. Ez meta adat a teljes forrásról, amit használhatunk nyelv egyeztetéshez, stb.

A deklaráció első típusa arra hivatkozik amit úgy nevezünk, hogy szövegfeldolgozó nyelv. Ez kényszerből csak egyetlen nyelvre hivatkozik egyszerre, habár a deklaráció felülírható egy szövegbe ágyazott résznél (pl. egy francia idézet angol tartalomban).

A várható célközönség nyelvének deklarálása másrészől több mint egy nyelv deklarálását is bevonhatja, pl. olyan dokumentumok amik hasonló szöveget tartalmaznak több nyelven. Azonban nem szükségképpen listáz ki minden nyelvet ami a dokumentumban feltűnik (pl. egy japán kifejezésekről szóló könyv angol turistáknak tartalmazhat sok japán szöveget, de a célközönség nyelve angol).

További anyagokat amik a nyelvet leíró két mód közti különbséget tárgyalják az Internacionalizáció Legjobb Gyakorlatai: A Nyelv Meghatározása XHTML és HTML tartalomban című írásunkban olvasható.

HTML és XHTML-nél érdemes megfontolni, hogy a nyelv deklarálási stratégiák hogyan különböznek a fenti esetektől.

Egy illusztráció a nyelv leírásának két különböző módjáról egy dokumentumban.

Módok a nyelv deklarálására XHTML/HTML-ben

Négy hely van ahol nyelvi információt lehet deklarálni egy XHTML vagy HTML dokumentumnak:

  1. A HTTP Content-Language fejlécben. Ez a fejléc nem része a dokumentumnak, de elküldésre kerül a dokumentummal a szerver által. A nyelvi információ nem mindig van elküldve, de lehetséges. A következő egy példa egy HTTP fejléc tetejére és aljára, ami az alsó sorban mutatja a nyelvi információt.

    HTTP/1.1 200 OK
    Date: Wed, 05 Nov 2003 10:46:04 GMT
    Server: Apache/1.3.28 (Unix) PHP/4.2.3
    …
    Content-Type: text/html; charset=utf-8
    Content-Language: en, fr, es
  2. Egy nyelvi attribútumban a html tag-ben. Például:

    <html lang="en">
  3. Egy meta elemben a dokumentum head részében a content attribútum Content-Language-re állításával. Például:

    <meta http-equiv="Content-Language" content="en,fr,es" />
  4. Egy elem nyelvi attribútumában a dokumentumon belül. Például:

    <p>The French word for <em>cat</em> is <em lang="fr">chat</em>.

HTTP Content-Language fejléc

A HTTP Content-Language fejléc a szerveren kerül beállításra és egy fájllal kerül elküldésre.

Több mint egy nyelvet tud meghatározni egyszerre. Ez megfelelő, hogy a kívánt célközönség nyelvét deklaráljuk, de a szövegfeldolgozó nyelv deklarálására nem, amelyik csak egyetlen nyelv lehet egyszerre.

Ha a böngésző a HTTP fejlécből nyeri ki a nyelvi információt, az a deklaráció felül lesz írva bármilyen deklarációval, ami a html tag attribútumában van.

Ha nincs nyelv deklarálva a html tag-ben, néhány, de nem az összes böngésző felismeri a HTTP fejlécben deklarált értéket a szövegfeldolgozó alkalmazásokhoz. Azonban még ha a böngésző fel is ismeri ezt a deklarációt, ennek az információnak az alkalmazása némileg egyenlőtlen.

Nyelv attribútumok

A lang vagy xml:lang attribútum használatával deklarált nyelvi információ öröklődik minden elemben amit tartalmaz. Ez azt jelenti, hogy a nyelvi információ delarálása a html elemben beállítja az alapértelmezett szövegfeldolgozó nyelvet az egész dokumentumra. Jegyezzük meg, ahogy említettük, hogy ez a fajta deklaráció felülír bármilyen deklarációt a HTTP fejlécben.

Csak egyetlen nyelvet határozhatunk meg a language attribútum használatával. Emiatt ez a megközelítés nem illeszkedik jól az elsődleges nyelvek deklarálásához, ahol több nyelvet kellhet bevonni. Másrészről a korlátozás, hogy egy nyelv lehet egy elemben, pontosan az ami szükséges a szövegfeldolgozó nyelvek deklarálásához.

Csatolhatunk nyelv attribútumokat bármilyen elemhez, hogy jelezzük, annak a szövegnek a nyelve abban az elemben különbözik a körülötte lévőktől.

A legtöbb fő böngésző úgy tűnik felismeri a deklarációkat, amik a nyelvi attribútumokkal készültek, azokhoz a támogatott extrákhoz, amik a nyelvi információn alapulnak.

Meta elem Content-Language-el

Egy meta elem használata a dokumentum head részében a http-equiv attribútummal, ami Content-Language-re van állítva, nincs külön említve a HTML specifikációban és mégis sok weben található útmutató szól arról, hogy hogyan deklaráljuk a nyelvet a HTML-ünkben a használatával és néhány jólismert HTML szerkesztő eszköz is létrehoz ilyen elemeket amikor meghatározzuk a nyelvi információt bennük.

Sajnos kevés a bizonyíték, hogy bármilyen főbb böngésző felismeri az ilyen deklarációkat a szövegfeldolgozó tulajdonság kivitelezéséhez. Arra is sincs sok bizonyíték, hogy a keresők használják ezt az információt, mint meta adatot a dokumentumról.

Ezért úgy tűnik bölcsebb kerülni a használatát ennek a megközelítésnek jelenleg.

Amióta a content attribútum argumentumai a meta elemben lehetővé teszik több nyelv kifejezését, ez a megközelítés úgy tűnik alkalmassá teszi magát a meta adat deklarálására a dokumentum célközönségének nyelvével kapcsolatosan. Inkább mint a szövegfeldolgozó nyelv deklarálására. Mint ilyen, ez az egyetlen jelenleg elérhető mód a szerkesztőknek hogy deklaráljanak ilyen meta adatot egy dokumentumon belül, ennek következtében potenciálisan hasznos. Hogy milyen kiterjedésben használják a meta adatot a felhasználók, még mindig nem tiszta azonban. Szintén vitatható, hogy vajon van-e értelme vagy sem meta adatot használni egy dokumentumban.

A szövegfeldolgozó nyelv deklarálása

Az előző szekció fényében itt van néhány javaslat a szövegfeldolgozó nyelv deklarálásához a teljes dokumentumra vagy egy részére nézve.

Mindig használjunk attribútumokat hogy deklaráljuk a szövegfeldolgozó nyelvet a html elemben. Ez be fog állítani egy alapértelmezett nyelvet az összes szövegre a dokumentumban. Ez felülírható ha szükséges máshol a dokumentumban.

Jegyezzük meg, hogy a html elemet kéne inkább használnunk mintsem a body elemet, mivel a body elem nem fedi le az összes szöveget dokumentum fejlécében.

Nyelvi attribútumokat kéne használnunk az elemeken amik bármi olyan tartalmat vesznek körül, ami különbözik attól a nyelvtől, mint amit deklaráltunk a html elemben.

Egy hely van főleg, ahol problémánk lesz. Ha többnyelvű szöveget használunk a title elemben, nem tudjuk a szöveget különböző nyelvekkel megjelölni, mert a title attribútum csak karaktereket engedélyez, jelölést nem. Ugyanez a helyzet a szövegnél az attribútumokan. Erre nincs jó megoldás jelenleg.

A megfelelő attribútum kiválasztása

Amikor HTML-t készítünk, a lang attribútumot használjuk hogy deklaráljuk a dokumentum vagy egy szövegrész nyelvét. Például a következő sor egy dokumentumot kanadai franciának határoz meg:

<html lang="fr-CA">

Amikor XHTML-t text/html-ként tálaljuk, használnunk kéne a lang attribútumot és a xml:lang attribútumot is. Az xml:lang attribútum a szabványos módja, hogy azonosítsuk a nyelvi információt XML-ben. A következő példa megmutatja, hogy hogyan jelölnék az előző példát XHTML 1.0-ban.

<html lang="fr-CA" xml:lang="fr-CA" xmlns="http://www.w3.org/1999/xhtml">

Az xml:lang attribútum valójában nem hasznos a fájl HTML-ként való kezelésére, de átveszi a lang attribútumtól bármikor, amikor XML-ként kezeljük a dokumentumot, mondjuk szkriptelésnél vagy validálásnál.

Ha XHTML 1.0 oldalakat XML-ként tálalunk (azaz egy MIME típust használunk mint application/xhtml+xml), vagy XHTML 1.1-ként tálalunk oldalakat, nincs szükségünk a lang attribútumra, mivel a lang része a HTML nyelvnek. Az xml:lang attribútum elegendő.

<html xml:lang="fr-CA" xmlns="http://www.w3.org/1999/xhtml">

Mit tegyünk ha nincs elem amira az attribútumunkat rátehetjük

Ha nincs jelölés egy másik nyelvű szöveg körül, használjuk a span elemet, hogy megszabjuk a határokat. Itt egy példa XHTML 1.0-ban, amit text/html-ként tálalunk:

<p>A cím kínaiul <span lang="zh-Hans" xml:lang="zh-Hans">中国科学院文献情报中心</span>.</p>

A közönség nyelvével kapcsolatos meta adat meghatározása

Ha a kívánt célközönség nyelvével kapcsolatos meta adatot akarjuk deklarálni az oldalunkon, akkor azt úgy tegyük, hogy a szervert rávesszük, küldje el az információt a HTTP fejlécben.

Jegyezzük meg, hogy ez a megközelítés nem egy megoldás, ami mindig elérhető. A HTTP Content-Language fejléc használata lehetséges problémákat von maga után, amik a kezeléssel és a szerveroldali információ használatával kapcsolatosak. Sok szerkesztő nehéznek találja a szerverbeállításokat, különösen ha egy ISP-vel van dolguk. Emellett az oldalak nem mindig szervereken találhatóak.

Elméletben jó ha deklarálunk egy ilyen nyelvi információt egy meta elemben. Ezt könnyű a szerkesztőknek hozzáadni és megmarad a dokumentummal ha nem a szerverről nézik. A gyakorlatban azonban úgy néz ki, hogy ez keveset van használva jelenleg.

Ha a célközönségünk több mint egy nyelvet beszél, mindkét módszer lehetővé teszi hogy vesszővel elválasztott nyelvlistával lássuk el mint érték.

Nyelvi értékek meghatározása

Hogy biztosak legyünk abban, hogy minden böngésző felismeri, melyik nyelvet értjük követendőnek amikor nyelvi értékeket adunk meg. Szintén megfontolandó, hogy hogyan hivatkozzunk a nyelvjárásbeli különbségekre a nyelvek között szabályos módon, pl. a különbség az amerikai és brit angol között, amelyek jelentősen elágaznak a helyesírási és kiejtésbeli kifejezésben.

A nyelv azonosításának szabályai jelenleg egy pár IETF specifikációban van leírva, együttesen BCP 47-ként hivatkozunk rá. Továbbá, hogy egyszerűsítsék a nyelvi tag-eket, a BCP 47 leírja, hogy hogyan szerkesszünk nyelvi tag-eket, amik lehetővé teszik dialektusok, szkriptek és más variánsok meghatározását az adott nyelvvel kapcsolatban.

A BCP 47 magában foglalja a nyelv és ország ISO kódjainak készletét. Hogy releváns kódokat találjunk, a IANA Language Subtag Registry-nél kell utánanézni.

Egy gyengéd de egész mélyreható bemutatása annak, hogy ez hogyan is működik, elolvasható a Nyelvi tagek HTML-ben és XML-ben című cikkünkben.

Mondja el nekünk mit gondol! (Angol).

Feliratkozás RSS Feed-re.

Új források

Kezdőoldal hírek

Twitter (Kezdőoldal hírek)

‎@webi18n

További olvasnivaló

Szerző: Richard Ishida, W3C. Fordító: Dénes Kohn, Metaphraser - Translation Company.

Valid XHTML 1.0!
Valid CSS!
UTF-8-ben kódolva!

Angolról fordítva: 2007-03-07. A lefordított verzió utolsó módosítása: 2010-11-25 11:07 GMT

A dokumentum módosításainak a történetéhez keresse ezt az i18n blogban: tutorial-language-decl