Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Dan-ovi Web saveti


Dan-ovi Web saveti:

Jezici

Pošto je reč "Svetska" deo imena veba, mreža nikada nije trebalo da bude medij isključivo na engleskom. Možete da koristite bilo koji jezik na svojim veb sajtovima. Razni objekti dodati su veb standardima da bi vam ukazali koji jezik koristite zbog prevodilaca i onih koji postavljaju indekse. Mogu, čak, i da se inteligentno posluže različitim jezičkim verzijama vaše stranice tako da odgovaraju podešavanjima korisnika. Na ovoj stranici opisane su neke od tih tehnika.

Ovde pod pojmom "jezici" smatramo ljudske jezike, poput španskog i mandarinskog, a ne kompjuterske jezike kao što su HTML i JavaScript. Izbor kompjuterskih jezika koje koristite na svom sajtu je, takođe, važan ali to nije predmet ovog članka!

Označavanje jezika

HTML vam omogućava da obeležite dokument, ili deo njega i da napišete kojim je jezikom pisan. To je urađeno uz pomoć LANG atributa, koji može da stane u bilo koju oznaku.

Da biste označili da je cela strana na engleskom, treba da stavite sledećI kod na početak HTML oznake:

<HTML lang="en">

Vrednost atributa je kod za jezik kojim je pisan dokument. Najčešće upotrebljavani jezici imaju kodove od dva slova (što je definisano u standardu ISO 639-1), a šira lista (uključujući i "mrtve" jezike) ima kodove od po tri slova (ISO 639-2). RFC 3066 navodi da se kod od dva slova mora koristiti čak i kad postoji kod od tri slova, pa će se, normalno, u atributima veb jezika naći samo dvoslovni kodovi. Ovde i ovde možete videti neke kodove koji se sastoje od dva slova.

Da bi odredio poseban dijalekat, posle jezičkog koda može da stoji kosa crta i dodatni kod, obično kod države. Kada se to radi, tradicionalno se kod jezika piše malim slovima, a sufiks koda države velikim slovima (mada to nije neophodno jer za kodove nije bitna veličina slova). Dakle, američki engleski može da se označi kao en-US a britanski engleski kao en-GB. (Imajte na umu da je GB pravilna oznaka za Ujedinjeno Kraljevstvo, a ne UK, iako je .uk sufiks domena koji se tamo koristi). U drugim slučajevima, međutim, standardni kod države isti je kao kod domena za datu zemlju); es-MX je šifra za meksički španski. Dijalekti koji nisu nacionalni mogu biti napisani svojim punim nazivom, npr -- en-cockney za kokni dijalekat engleskog jezika.

Takođe, mogu se označiti manji delovi dokumenta napisani drugim jezikom, tako što će se jezički atribut ubaciti u oznaku elementa. Na primer, možete odrediti jezik citata ubacujući jezički atribut u oznaku za poseban blok unutar teksta (blockquote). Ako nijedan element ne pokriva deo dokumenta koji hoćete tako da obeležite, za ovu svrhu možete koristiti DIV ili SPAN element. (DIV je element na nivou bloka koji može zaključivati čitave pasuse i druge blok elemente, a; SPAN je element na nivou karaktera koji može biti sadržan u pasusu ili u drugom bloku). Na primer:

<BLOCKQUOTE lang="en">How are you? Or, as I'd say in Spanish, "<SPAN lang="es">¿Como estás, o como diga en inglés, '<SPAN lang="en">How are you?</SPAN>'?</SPAN>"</BLOCKQUOTE>

U vašem pretraživaču, to izgleda ovako:

How are you? Or, as I'd say in Spanish, "¿Como estás, o como diga en inglés, 'How are you?'?"

Verovatno ne postoji vidljiv efekat od tih različitih jezičkih atributa, mada će ih, u nekim slučajevima, pretraživač iskoristiti i nekako obeležiti, npr. koristeći različite fontove. Međutim, u običnom grafičkom pretraživaču, ako prikazuje jezike kao što su engleski i španski, koji koriste standardne ASCII i Latin-1 karaktere) nema potrebe za tim. (Za druge jezike, koji koriste "egzotičnije" skupove karaktera, Netscape 7 i Mozilla zaista menjaju font na osnovu jezičkog atributa). U svakom slučaju, informacije o tome na kom je jeziku koji pasus na raspolaganju su svim korisničkim agentima kao što je, na primer, govorni pretraživač koji podešava izgovor prema tim informacijama ili robot koji gradi različite indekse materijala na različitim jezicima. (U stvari, IBM-ov Home Page Reader, govorni pretraživač prepoznaje jezičke atribute i u zavisnosti od toga prilagođava izgovor teksta). W3C smernice za pristupačnost traže da verno označite jezik svakog teksta na svom sajtu.

Imajte na umu da se elementi sa jezičkim atributima mogu ugnezditi na proizvoljne dubine. Najdublji element koji okružuje određeni segment teksta uvek je onaj koji određuje o kom je jeziku reč. Dakle, u prethodnom primeru, citat kao celina je na engleskom, ali ima odeljak na španskom koji sadrži pododeljak na engleskom jeziku.

Drugi način za označavanje jezika dokumenta

Navedeni atributi su deo HTML-a. Međutim, postoji još jedan sloj standarda i protokola kojim veb dokumenti dolaze do korisnika, a to je HTTP, (protokol za prenos hiperteksta). HTTP takođe ima metod za preciziranje na kom je jeziku vaš dokument. Ako imate svoj server, pošaljite ovo zaglavlje:

Content-Language: en-US

ova oznaka pokazuje da je stranica na američkom engleskom. Govorim o HTTP protokolu i o tome kako da podesite svoj server za različite jezičke postavke. Ako nećete da podešavate jezik prikazivanja sadržaja, verovatno nema potrebe da se zamarate podešavanjima HTTP protokola. HTML jezički atributi lakši su i fleksibilniji za korišćenje (jer mogu da označe i delove stranice, a ne samo stranicu u celini).

Onlajn prevodioci

Jedna vrsta korisničkog agenta, koja bi mogla da iskoristi ove atribute, je onlajn prevodilac. Njegov zadatak je da sadržaje veb stranica prevodi na različite jezike. Nažalost, prevodioci koji su trenutno u upotrebi izgleda da nemaju mnogo koristi od jezičkih atributa. AltaVista Babelfish translator, trenutno najpopularniji prevodilac, kao da uopšte ne mari za ove atribute. Umesto toga, oslanja se na korisnika koji na opadajućem meniju određuje jezik, a zatim veruje ovoj proceni bez obzira na stvaran sadržaj stranice. Nekoliko drugih onlajn prevodilaca minimalno koristi jezičke atribute tako što obraća pažnju na onaj koji se nalazi na vrhu HTML elementa i prikazuje jezik celog dokumenta, ali ne i druge atribute koji se odnose na manje delove dokumenta. Zbog toga nastaju neobične situacije kada je gotovo cela stranica na jednom jeziku, ali sadrži citate na drugim jezicima jer će prevodilac pokušati da prevede citate kao da su na jeziku glavnog teksta. (npr. u španskom citatu na engleskoj stranici videće reč: "sin", koja na španskom znači “bez", a na engleskom ista reč: “sin” znači: “greh”, pa će je tako i prevesti: "pecado"). Ovo je slučaj gde bi inteligentniji prevodilac mogao primetiti atribute za označavanje jezika delova dokumenata i shvatiti da ti delovi treba da ostanu neprevedeni ili da se prevedu sa jezika drugog porekla.

Ova situacija je, izgleda, još jedna od mnogih "kokoška ili jaje" dilema koje muče uvođenje logičnih, strukturnih elemenata i atributa u HTML. Programeri se ne trude da implementiraju podršku za njih jer ih koristi veoma mali broj veb autora, a veb autori ne opterećuju se njima jer mali broj programa ima veze s tim. Ovaj Gordijev čvor izgleda da ne utiče na poboljšanja izgleda koja imaju za cilj da stvore "uredan" vizuelni efekat kakve su Netscape i Microsoft uveli mnogo puta tokom proteklih godina. Izgleda da ove pojave imaju veliki broj fanova koji jedva čekaju da ih koriste, bez obzira na to što je podrška pretraživača još uvek nesigurna (ikona koja blešti na prvoj strani s natpisom: “Najbolje se vidi ako imate poslednju verziju svog omiljenog pretraživača” jednostavno tera ljude da nadograđuju). Bar je to bio slučaj u ranim godinama masovne popularnosti veba, a sad se čini da je situacija malo zrelija i stabilnija. Sva proširenja koja utiču na osnovnu logičku strukturu, iza kulisa, bez primetnog vizuelnog efekta, ne pobuđuju isti interes među veb dizajnerima i programerima, tako da je njihov napredak mnogo sporiji.

Da bismo prekinuli taj ciklus, savetujem veb autorima da koriste ovu vrstu logičkih oznaka; time neće ugrozitii prikazivanje svojih stranica, a podstaći će buduće generacije autora korisničkih agenata da, konačno, urade nešto korisno u vezi sa oznakama i atributima.

Označavanje linkova

Osim što ukazuje na jezik delova teksta na vašoj stranici, takođe može da ukaže na jezik drugih dokumenata s kojima ga povezujete. Za tu svrhu koristi se hreflang atribut. Na primer:

<A hreflang="es" lang="en" href="spanish.html">A page in Spanish</A>

Imajte na umu da gornji element ima i lang i hreflang atribut. lang atribut pokazuje jezik teksta u okviru elementa, u ovom slučaju to je "A page in Spanish" koji je na engleskom jeziku, kao što je i navedeno. hreflang atribut ukazuje na to da je stranica s kojom se povezuje na španskom.

Iako nema mnogo podrške korisničkog agenta za ovaj atribut, pretraživač Mozilla pokazuje jezik odredišnog dokumenta u prozoru sa podacima koji se pojavljuju kad kliknete desnim tasterom na link i izaberete opciju: “Properties".

Jezičko posredovanje

Sada, nešto malo složenije. Možete imati verzije stranica na nekoliko različitih jezika. Mehanizam postoji zato da bi vašim korisnicima pružio željeni jezik, a sve sa istim URL-om. Ovaj mehanizam, nazvan "posredno primanje jezičkog sadržaja”, prisutan je u HTTP protokolu već godinama, ali se prilično retko koristi. Veb programeri odabrali su ovo kao jedan od točkova koje neprekidno otkrivaju na razne načine i koji su obično inferiorni u odnosu na originalni sistem. Zbog toga su sajtovi puni komplikovanih novotarija sa kolačićima, a JavaScript pokušava da usmeri ljude na jezik koji im najviše odgovara (na kraju, ako su kolačići i JavaScript onemogućeni, ne uspeva da ih usmeri nigde) ili na osnovu pretpostavke servera u kojoj je državi korisnik (vrlo nepouzdano za utvrđivanje jer korisnici mogu biti prijavljeni preko ISP-a u drugoj zemlji, a ne tamo gde se zaista nalaze; osim toga, na osnovu fizičke lokacije ne može se sa sigurnošću utvrditi kojim jezikom govore).

Postoji bolji način. Pretraživači nude kao deo svojih konfiguracija mogućnost da odrede kojim jezikom njihovi korisnici žele da se služe, po željenom redosledu. Ta informacija šalje se kao deo HTTP zahteva za bilo koju veb stranicu koju korisnik preuzima, a server može na osnovu toga da izabere koju će verziju poslati.

Konfigurisanje jezičkih postavki pretraživača

Prednost pretraživača je obično u tome što ima spisak jezika među kojima korisnik može da izabere neke formirajući svoju listu. Mozilla i Netscape imaju ovu opciju u okviru "Preferences" u meniju "Edit" gde se nalazi podsekcija "Languages", u delu “Navigator”. U pretraživaču Opera podešavanje se vrši u okviru opcije "Preferences", stavka "File", pod menijem "Languages". Za MSIE, to je "Internet Options" stavka u meniju "Tools", zatim pritisnite taster "Languages" na dnu taba "General".

Nažalost, nijedan od ovih pretraživača ne objašnjava korisniku kako da odredi svoje jezičke prioritete. Konkretno, odnos generičkih jezika (es = španski) i specifičnih jezičkih varijeteta (es-MX = meksički španski) nije objašnjen. Ukoliko korisnik izabere određeni jezički varijetet (na primer, varijantu jezika jedne zemlje), ali razume i druge dijalekte na tom jeziku, onda treba da se opredeli i za generičku verziju kako bi osigurao da mu sve varijante tih stranica budu na raspolaganju, a ne samo one koje korisnik preferira. Na primer, neko ko razume španski i engleski, a više voli meksički španski i američki engleski (ali prihvata i druge varijante), podesiće redosled jezika na sledeći način:

es-MX, es, en-US, en

U tom slučaju, ako je traženi dokument dostupan na meksičkom španskom, biće prikazan pre svih ostalih verzija. Međutim, ako takva verzija nije dostupna, ali postoji jedna na venecuelanskom španskom (es-VE), onda će se tretirati kao pandan generičkom španskom unosu i biće prva prikazana. Ako nema španske verzije, prvo će proveriti postoji li raspoloživa verzija na američkom engleskom. Ako ne postoji, pretraživač će potražiti britanski engleski (en-GB) i na kraju, stranicu na generičkom engleskom (en). Imajte u vidu da generičku verziju treba da štiklirate posle specifičnih varijanti, inače će vam prikazati generičku verziju pre bilo koje podvrste datog jezika, a ne onu koju biste najviše voleli. Ako sajt, slučajno, ima verziju i na britanskom i na američkom engleskom en, pretraživač će nasumično izabrati koju će verziju prikazati (ili, ako postoji “podešavanje kvaliteta” u konfiguraciji servera, vebmaster će odlučiti koja je verzija bolja ako je krajnjem korisniku svejedno). Ako vam je na spisku prvo štikliran američki engleski en-US, time će se nedvosmisleno izraziti vaša preferenca za američki engleski..

Međutim, ako na vašoj listi preferenci nema generičkih verzija:

es-MX, en-US

onda saopštavate serveru da hoćete isključivo meksički španski ili američki engleski, bez bilo kakvih varijeteta. Ako sajt ima verzije na panamskom španskom i autralijskom engleskom, nijedna od njih neće odgovarati vašoj listi preferenci, pa ćete biti prepušteni na milost i nemilost serveru koji odlučuje o tome šta će raditi kad nema jezičkih podudaranja. (Dole možete videti kako vebmaster rešava ovakve slučajeve.) Najverovatnije nećete dobiti verziju na jeziku koji ste tražili u ovom slučaju, pa bi ovo trebalo da izbegavate. Nažalost, glavni pretraživači vas ne upozoravaju na to, a neki od njih spremno će prihvatiti takva pogrešna podešavanja bez žalbe. (Postoje retki slučajevi u kojima neko može zapravo imati koristi zbog ovakvog podešavanja, posebno kad je reč o jeziku s međusobno nerazumljivim dijalektima, ali uopšteno gledajući, korisnicima je bolje da dobiju i generičke i specifične jezičke varijetete).

Opera izbegava ovaj problem tako što obuhvata samo generičke jezike bez varijeteteta (osim nekoliko izuzetaka kao što je kineski, za koji se nudi nekoliko varijanti). Zahvaljujući tome, otklonjena je mogućnost da korisnik napravi zbrku štiklirajući samo specifične jezičke varijante, bez njihovih generičkih roditelja, a cena za to je sposobnost prikazivanja finesa u razlikama među dijalektima. S druge strane, MSIE uključuje uglavnom posebne dijalekte na svojoj listi, a u slučaju mnogih jezika generička verzija nije ni dostupna (iako možete u prazno polje upisati dodatne jezike po sopstvenom izboru). To otežava korisnicima da pravilno konfigurišu jezičke postavke, i specifičnih i generičkih verzija, čak i ako znaju šta treba da rade.

Najbolji način da se ovo sredi, po mom mišljenju, bio bi da se uključe i generičke i specifične varijante (kao što rade Mozilla i Netscape), ali trebalo bi da imaju i neku poruku upozorenja ukoliko korisnik postavlja preference izostavljajući generičke varijante (što kod ovih pretraživača, nažalost, nije slučaj).

Pretraživači "iz kutije", obično će biti konfigurisani u skladu s podešavanjima jezika korisničkog interfejsa. Ako kupite računar koji je podešen posebno za određenu zemlju, svaki instalirani pretraživač najverovatnije će biti podešen za dominantni jezik te zemlje. Ako ste kupili računar iz druge zemlje (npr. Meksikanci često dobijaju računare iz Sjedinjenih Američkih Država) i lokalni distributer nije promenio konfiguraciju, možda će biti podešen na strani jezik zemlje odakle potiče. Ako preuzimate pretraživač, možda imate izbor verzija na različitim jezicima ili jezičkih podešavanja konfiguracije tokom procesa instalacije. Pošto većina korisnika ne menja početnu podrazumevanu konfiguraciju, to znači da neki, ali ne i svi pretraživači, imaju pravilno konfigurisane jezičke preference u skladu s potrebama korisnika. Osim toga, veliki broj pretraživača konfigurisan je tako da prihvata samo određenu varijantu jezika, a ne jezik u celini, zbog neuspeha kreatora pretraživača da se izbore s generičkim i specifičnim varijantama jezika -- en-US umesto en.

Zbog ovih problema, neki vebmasteri pitaju se da li je jezičko posredovanje uopšte dobra ideja, što može da dovede do filozofske rasprave o tome da li je bolje nastaviti s pokušajima da se edukuju korisnici o mogućnostima upotrebe pretraživača ili da programeri, jednostavno, odustanu od toga i da programiraju u skladu s pretpostavljenim neznanjem korisnika. U takvim raspravama, obično zastupam stranu koja želi da nauči pravilnu upotrebu pretraživača i da u to uputi korisnike jer drugi put dovodi do pojednostavljivanja interneta i večitog smišljanja kako da se sve što više uprosti.

Podešavanje sajtova za jezičko posredovanje

Precizno podešavanje sajta za upotrebu ove karakteristike zavisi od softvera servera. Pošto je trenutno Apache najpopularniji veb server, opisaću kako postavke funkcionišu u njegovom sistemu, ali i kod softvera ostalih servera je slično.

Kreirajte dokumenata

Prvo, potrebno je da kreirate različite jezičke verzije svojih dokumenata s doslednom šemom imena. Zapravo, moguće je konfigurisati jezičko posredovanje bez obzira na to kako imenujete različite verzije, ali je najlakše uraditi to tako što ćete fajlovima priključiti ekstenzije na osnovu jezika, pored svih dodataka koji su već tu da ukažu na tip podataka. Na primer, ako ste ranije imali samo jednu verziju stranice na određenom jeziku, pod nazivom mypage.html, a sada hoćete da napravite razliku između španske i engleske verzije, možete ih nazvati mypage.html.en i mypage.html.es. (Kasnije ću reći nešto više o jezičkom sufiksu - da li treba da se piše pre ili posle ekstenzije fajla, npr .html, za sada, pretpostavimo samo da se sufiks za jezik piše na poslednjem mestu.)

Postavka konfiguracije

Sada treba da kažete serveru šta znače sufiksi i da li nameravate da ih koristite za jezičko posredovanje. Jedan od načina da to uradite je uz pomoć .htaccess datoteke (to joj je naziv, .htaccess, sa tačkom kao prvim slovom, što mnogim korisnicima koji su navikli na MS-Windows šeme filename.ext; može delovati neprirodno. Nažalost, neki softveri otežavaju kreiranje datoteka sa sličnim nazivima jer pokušavaju da transformišu naziv u neki poznatiji stil). Za to su vam potrebni sledeći redovi:

Options +MultiViews
AddLanguage en-US .en
AddLanguage es-MX .es
LanguagePriority en-US es-MX

Prvi red saopštava da Apache treba da omogući korišćenje opcije "MultiViews", gde može da bira između nekoliko verzija dokumenta, umesto da svima prikazuje isti fajl. Naredne dve linije .en saopštavaju da je dokument na engleskom (en US varijanta) i .es na španskom (meksička varijanta). (Ovde možete popisati koliko god jezika želite, sa različitom ekstenzijom za svaki. Ekstenzije mogu da se poklapaju s jezičkim kodom, ali i ne moraju. Obično, ljudi koji koriste poljski imaju drugačiju ekstenziju osim .pl jer se oznaka .pl obično upotrebljava za Perl skripta). Poslednja linija sugeriše redosled prioriteta za različite jezike u slučajevima kada korisnički agent ne daje prednost određenom jeziku. Ovde sam naveo engleski kao prvi izbor. Verovatno želite da koristite jezik za koji smatrate da je najkvalitetniji na vašem sajtu, možda jezik originalnog teksta, i verujete da bi se u prevodu mogle izgubiti neke finese.

Datoteke .htaccess mogu biti smeštene u bilo kom poddirektorijumu vašeg sajta i mogu se primeniti na sve što je u tom direktorijumu, kao i na sve zavisne direktorijume. Dakle, trebalo bi da postavite fajl u direktorijum korena servera svog sajta (najviši direktorijum gde se čuvaju javni veb podaci, obično tamo gde se nalazi glavna početna stranica) ako želite da primenite jezičko podešavanje na ceo sajt, ili u poddirektorijum, ako koristite ove funkcije samo u podskupu sajta i ne želite da mešaju s ostatkom sadržaja.

Sad probajte da mu pristupite!

Pošto ste podesili .htaccess fajl i stavili mypage.html.en i mypage.html.es datoteke na mrežu, možete pokušati da pristupite URL-u http://yoursite.example/mypage.html (gde je yoursite.example zamenjen domenom vašeg sajta i bilo kojom informacijom o putanji do mesta gde se nalazi vaša stranica). Ako ste sve uradili ispravno, trebalo bi da završite na engleskoj ili španskoj verziji stranice što zavisi od vaše jezičke konfiguracije.

Ups... Opet sam na staroj verziji stranice!

Ako ste, umesto toga, završili na staroj verziji mypage.html odakle ste krenuli da podesite jezik, znači da ste ostavili taj fajl pored novih datoteka mypage.html.en i mypage.html.es. Kada korisnik pokuša da pristupi URL-u koji se završava na mypage.html, Apache prvo traži datoteke čiji se naziv tačno poklapa s pomenutim. Ako pronađe jednu, ne pokušava da ponovo pretraži, već odmah prikazuje datoteku koju je našao. Zato bi trebalo da obrišete staru datoteku ako hoćete da vam Apache nađe nove datoteke koje ste tražili. Ako nema odgovarajuće datoteke, Apache nastavlja da traži gledajući sve fajlove pod nazivom mypage.html sa dodatnom ekstenzijom ili ekstenzijama dok ne vidi koji od njih naviše odgovara prihvatljivim jezicima (u teoriji, mogu se koristiti HTML, PDF i MS-Word verzije nekog dokumenta na osnovu korisničkih preferenci, mada popularni pretraživači u ovom trenutku ne koriste mnogo ove mogućnosti). Ako je prvi izbor korisnika engleski jezik, odmah će naći i prikazati mypage.html.en.

U stvari, .html nije uvek obavezan deo URL-a kad je omogućena funkcija višestrukog pregleda jer je taj deo takođe predmet potrage, a svi pretraživači ubrajaju HTML u jedan od svojih prihvaćenih tipova sadržaja. Zahtev za URL koji se završava na mypage (bez ekstenzije) upariće se sa mypage.html.en jer Apache spaja .html sa vrstom text/html tipa MIME, a vi ste ga povezali s .en engleskim jezikom.

Neki programeri smatraju da je bolje koristiti URL bez ekstenzija zato što su kraći, čistiji i više prilagođeni budućim promenama (u budućnosti ćete moći da promenite format podataka ili jezik skripta, bez promene URL-a). Ostali smatraju da im je izgled pomalo neprirodan jer su navikli da imaju URL ekstenzije na kraju, kada nije reč o poddirektorijumima čiji se nazivi završavaju kosim crtama. Ako dodajete pretrage sa više pregleda postojećem sajtu, verovatno već koristite URL linkove koji imaju završetak .html (ili neku drugu ekstenziju) i možda naćete da ih menjate. Dakle, postoje prednosti i mane za oba načina, ali najvažnije je da oba funkcionišu. Jedna od prednosti izostavljanja ekstenzije iz URL-a je u tome što možete dodati višestruke ekstenzije po bilo kom redosledu - vrsti sadržaja, jeziku ili nekom drugom kriterijumu pretrage. Iz URL adrese možete da dodate više ekstenzija po bilo kom redosledu, tipu sadržaja, jezika i drugih parametara -- .html.en i .en.html radiće identično. Ako vam se URL završava na .html, vaši fajlovi ne smeju da ugrade druge ekstenzije pre toga, inače se neće pravilno uparivati.

Šta ako korisnik ne navede nijedan jezik u zahtevu?

Jedan od problema na koji možete naići je susret sa zahtevima koji ne pokazuju da im je bilo koji jezik sa vašeg spiska prihvatljiv. Ako korisnik pošalje jezički niz, npr. fr-CA, fr, de, označavajući da su mu prioritetni jezici: kanadski francuski, generički francuski, nemački i generički, onda se neće upariti sa stranicama na španskom ili na engleskom. Tehnički, za korisnika nije prihvatljivo ništa na vašem sajtu, a korisnik sa navedenom konfiguracijom dobiće obaveštenje da je na stranici došlo do greške. (Nažalost, to obaveštenje je uglavnom na engleskom jeziku, iako je korisnik ukazao na to da mu taj jezik nije prihvatljiv!) Iako je ovo tehnički ispravno, većina vebmastera bi to radije izbegla; ružno je i teško razumeti stranicu koja počinje rečima "Not Acceptable/Neprihvatljivo" zbog čega često korisnici pomisle da su uradili nešto loše. Stoga, većina vebmastera radije prikazuje neku verziju njihovog stvarnog sadržaja čak i ako je na jeziku koji korisnik ne razume. Ova potreba postaje još hitnija zbog činjenice da postoje loše konfigurisani pretraživači koji ne šalju stranice na jezicima preferenci korisnika. Ako, na primer, pretraživač šalje spisak jezika koji isključuje generičke verzije željenih jezika, kao en-GB, es-VE, onda ni verzije američkog engleskog ili meksičkog španskog neće biti uparene i korisnik će dobiti obaveštenje da je stranica s greškom, nesrećni obrt događaja.

Srećom, postoji i zaobilazno rešenje. Ako ostavite čist mypage.html fajl pored mypage.html.en, poslužiće vam kao prednost nad ostalim datotekama u odgovoru na zahtev za mypage.html. Ako koristite verziju URL adrese bez ekstenzije, možete čuvati te datoteke jednu pored druge prepuštajući pretrazi da prikaže verziju sa jezičkim kodom u slučaju da se poklapa sa zahtevima i prikazujući verziju bez koda tamo gde nema nema jezičkog poklapanja. Međutim, ako vaš link ima ekstenziju, još uvek možete da ga pokrenete, ali na malo komplikovaniji način. Samo kreirajte fajl pod nazivom mypage.html.html, sa dvostrukom ekstenzijom. Neće odmah odgovoriti na zahtev jer će se pretraga nastaviti, ali prikazaće tu stranicu kao podrazumevanu ako ništa drugo ne uspe.

Čak i ako koristite linkove bez ekstenzija, čime možete da izbegnete dvostruku ekstenziju, treba da razmotrite podrazumevane indeks stranice za svaki direktorijum. Vaš server je, najverovatnije, konfigurisan tako da traži nekoliko specifičnih imena poput index.html, a ne index bez ekstenzije. Upariće index.html.en, i index.html.html putem jezičkih poklapanja, ali ako postoji index.html, on će prvo biti uparen i sprečiće pretragu za podrazumevanim indeksom. Dakle, verovatno treba da koristite "duple ekstenzije" za podrazumevane verzije, čak i ako negde možete da se izvučete sa jednom ekstenzijom.

Verovatno želite da vam podrazumevana verzija bude identična sa jezičkim postavkama. Možete jednostavno kopirati drugi fajl u ovo novo ime, ali u tom slučaju ne smete zaboraviti da ažurirate obe verzije kad god dođe do promena na stranici. Možete da se poslužite jednom boljom tehnikom: neka podrazumevano ime fajla bude “link” za drugu verziju fajla. Ako vam je server na platformi kao što je Unix i imate shell pristup, možete da koristite komandu:

ln mypage.html.en mypage.html.html

da biste kreirali mypage.html.html kao “link” koji uvek vraća isti sadržaj kao mypage.html.en, automatski se ažurirajući kad god se promeni fajl.

Najnovija verzija Apache ima još neke komande koje su upotrebljene u .htaccess datotekama da na jednostavniji način nađu jezičko podudaranje, ali mnogim sajtovima (uključujući i moj) i dalje se pristupa preko provajdera sa starijim verzijama, tako da je opisana tehnika, za sada, neophodna.

Još jedan problem... I rešenje kao nužno zlo

Kao što je već pomenuto, javljaju se uznemirujuće tendencije pretraživača da se konfigurišu na osnovu samo jedne jezičke varijante, a ne na njegovom generičkom obliku -- kao en-US koji ne prati en. Tehnički, ovim se poručuje da korisnik želi samo američki engleski, a ne bilo koju drugu varijantu engleskog. Ako je dokument dostupan na britanskom engleskom i na francuskom jeziku, a podrazumevani jezik sajta francuski, onda će se korisniku prikazati francuska verzija iako je engleski, verovatno, traženi jezik. Naleteo sam na ovaj problem na sajtu koji sam postavio, gde su dve verzije: en-US i es-MX. Podrazumevana je verzija na engleskom jeziku, a otkrio sam da su mnogi posetioci konfigursiali pretragu za varijante španskog, kao što je es-PR (portorikanski španski), a dobili englesku verziju čak i tamo gde bi meksički španski imao više smisla. Sve je to u savršenom skladu sa standardima - to je ono što su korisnici stvarno tražili. Ali, svrha sajta nije u tome da raspravljam s posetiocima, niti da ih učim kako da podese svoje pretraživače. Dakle, posle nekoliko pokušaja i grešaka, našao sam pomalo rogobatno rešenje kao nužno zlo koje će korisnicima pružiti ono što im treba, a ne ono što su tražili. Ne preporučujem to čiste savesti - jer se potpuno protivi mojoj filozofiji veb programiranja koja kaže da se treba doslovno držati sgvih standarda i izbegavati svako brzo rešenje koje dovodi do zaglupljivanja tako rasprostranjenog na internetu u današnje vreme - ali, u ovom slučaju toliko poboljšava korisničko iskustvo da vam ga predstavljam, pa ga možete i sami isprobati ako želite.

Napravio sam španske verzije svog dokumenta koje se “pretvaraju” da su druge verzije španskog, pored meksičke. Gledao sam logove servera i konfiguracije pretraživača i izlistao varijetete španskog koji se često upotrebljavaju, a zatim sam dodao njihove kodove svom fajlu .htaccess:

AddLanguage es .es1
AddLanguage es-CL .es2
AddLanguage es-CO .es3
AddLanguage es-CR .es4
AddLanguage es-PA .es5
AddLanguage es-PE .es6
AddLanguage es-PR .es7
AddLanguage es-PY .es8
AddLanguage es-SV .es9
AddLanguage es-AR .es10
AddLanguage es-DO .es11
AddLanguage es-US .es12
AddLanguage es-UY .es13
AddLanguage es-BO .es14
AddLanguage es-EC .es15
AddLanguage es-GT .es16
AddLanguage es-HN .es17
AddLanguage es-NI .es18
AddLanguage es-ES .es19
AddLanguage es-VE .es20

Time sam pokrio mnoge nacionalne varijantie i dodao jedan generički, za svaki slučaj (što nije zaista neophodno jer bi trebalo da se upari s bilo kojom varijantom, ali moji pokušaji i greške pokazali su mi da se ponekad generička verzija prikazuje umesto varijante koja nije na spisku, ko zna zbog čega). Svakom fajlu dodao sam drugačiju ekstenziju, .es1, .es2, itd.

Zatim sam kreirao fajlove povezane sa svakom stranicom i verzijom španskog i nazvao ih:
index.html.es1.es2.es3.es4.es5.es6.es7.es8.es9.es10
index.html.es11.es12.es13.es14.es15.es16.es17.es18.es19.es20

Bilo bi zaista zamorno kreirati ručno toliki broj fajlova, ali ja sam programer... Napravio sam Perl skripta koja su obavila posao umesto mene za ceo sajt!

Rezultat: ako je pretraživač korisnika konfigurisan za es-PE, server ga "laže" i tvrdi da je španska verzija zapravo ta verzija. Drugim rečima, kršim standarde da bi korisnik, po želji, dobio špansku, umesto engleske verzije.

Možete to da uradite, ali i ne morate. Nadajmo se da će jednog dana pretraživači imati bolje konfiguracije i da nam sve ovo neće ni biti potrebno.

Uvek uključite i običan link

Kao što sam već nekoliko puta rekao, korisnici, na žalost, ne konfiguršu pravilno svoje pretraživače kad je reč o jezičkim podešavanjima. Takođe, ponekad koriste tuđe pretraživače (npr. na javnim mestima kao što su biblioteke i internet kafei) koji mogu biti konfigurisani prema različitim jezičkim preferencama. Korisnici takođe mogu biti zainteresovani za više od jedne jezičke verzije zato što tečno govore više od jednog jezika ili zato što pokušavaju da nauče još jedan jezik. Zato je važno dati korisniku priliku da stigne do drugih verzija svojih višejezičkih stranica. To možete uraditi tako što ćete uključiti linkove do stranica sa ostalim jezičkim verzijama. Direktnim povezivanjem sa stranicom mypage.html.es, uvek ćete dobiti špansku verziju bez obzira na konfiguraciju koju je korisnik podesio.

Preporučujem, međutim, da ne koristite slike zastava za te linkove, iako je to uobičajeno, jer to predstavlja pogrešan pristup. Zastave označavaju države, a ne jezike. Da li engleski treba da predstavlja američka ili britanska zastava? Koji jezik treba da predstavlja kanadska zastava? (I engleski i francuski su zvanični jezici u toj zemlji.) Osim toga, zastave nisu uvek jedinstvene! Bolje je da koristite ime svakog jezika kao tekst linka.

Možda ćete hteti da uključite oznaku LINK reference za alternativne jezičke verzije:

<link rel="alternative" lang="fr" hreflang="fr" title="En Français" href="mypage.html.fr">

Zahvaljujući tome pretraživači koji podržavaju ovaj element obezbeđuju neku vrstu korisničkog interfejsa koji omogućava pristup različitim verzijama jezika. Međutim, pošto podrška u današnjim pretraživačima nije baš dobra, ne bi trebalo da vam to bude jedini način da se povežete s alternativnim verzijama.

Nameće se jedno interesantno pitanje: ako su sve stranice vašeg sajta konfigurisane tako da se prikazuju kroz jezičko podešavanje, da li navigacioni linkovi unutar sajta treba da idu na "generički" URL svake strane (dakle, svaki link treba podvrgnuti jezičkom posredovanju) ili na određene jezičke verzije? Ovo je veliki problem. Ako koristite "generičke" URL adrese, to može biti komplikovano za nekoga ko pokušava, iz bilo kog razloga, da pregleda sajt na nekom drugom jeziku osim na onom koji je određen podešavanjima pretraživača. Sreće se s različitim verzijama jezika i mora na svakoj stranici da klikne na link sa odgovarajućim jezikom. To je odličan argument da se korisnik zadrži u okvirima određenog jezika kad odabere sledeći specifičan link. S druge strane, ako to uradite, ohrabrujete druge da se povežu s vašim sajtom, uključujući i kreatore indeksa pretraživača, koji se povezuju s URL-om određenog jezika, zanemarujući jezička podešavanja, pošto se generički URL neće pojaviti među internim linkovima. To znači da će mnogi novi korisnici doći do vašeg sajta kroz ovakve linkove, a jezičko podešavanje nikad neće imati šansu da se usavrši i napreduje. U tom slučaju, možda niste ni podesili tu opciju traženja jezika. Povezivanjem s generičkim URL-om, linkovi koji odgovaraju parametrima jezičkih podešavanja ostaju van domašaja sajta (iako će i linkovi na specifičnim jezicima biti povezani i dobiće svoj indeks, pošto i vi imate direktne linkove koji vode do njih).

Konačno, otkrio sam i rešenje ove dileme: ako dodate ovaj JavaScript zaglavlju stranica:

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">

function settaglinks(tag, lang)
{
  anchors = document.getElementsByTagName(tag);
  for (i=0;anchors[i];i++)
  {
    if (anchors[i].href.lastIndexOf('.html') == anchors[i].href.length-5 &&
        anchors[i].href.indexOf('yourdomain.example') >= 0)
    {
      anchors[i].href = anchors[i].href+'.'+lang;
    }
    else if (anchors[i].href.charAt(anchors[i].href.length - 1) == '/' &&
        anchors[i].href.indexOf('yourdomain.example') >= 0)
    {
      anchors[i].href = anchors[i].href+'index.html.'+lang;
    }
  }
}

function setlinks(lang)
{
  if (document.location.href.lastIndexOf('.'+lang) == document.location.href.length-3)
  {
    settaglinks('a', lang);
    settaglinks('link', lang);
  }
}

</SCRIPT>

i zatim unesete onload="setlinks('en')" u svoju <BODY> oznaku (menjajući 'en' u jezički kod za datu stranicu i 'yourdomain.example' naziv domena svog sajta), onda će svi linkovi, umesto na generičke, biti podešeni na specifične jezičke verzije kada korisnik pristupa stranici sa URL-a određenog jezika, ali ne i kada pristupa stranici sa generički podešenog URL-a. To će se desiti ako su korisnici omogućili JavaScript i ako njihovi pretraživači podržavaju sve karakteristike koje on koristi. Ako to nije slučaj, onda treba da "degradira graciozno" ostavljajući linkove na miru. Korisnici koji izaberu jezičku verziju tako što slede link do nje, od tada će dobijati linkove na tom jeziku, dok će korisnici koji prepuštaju da im pretraživači biraju jezik ostati na generičkim varijantama URL-a. Pretraživači (koji generalno ignorišu JavaScript) videće i indekse generičkih adresa.

Neka od objašnjenja koja sam ovde izneo daleko su od moje filozofije "Drži se jednostavnog objašnjenja", ali ponekad se nešto mora reći na komplikovan način da bi se posao obavio... Ali, ne komplikovanije od toga.

Skupovi znakova i kodiranje

Ovde pominjem skupove znakova i kodiranje samo da bih napomenuo da je to posebno pitanje, odvojeno od jezika, mada često zbunjujuće. Već imam posebnu stranicu o karakterima i fontovima. Specifikacija određenog jezika kroz HTML atribut ili HTTP zaglavlja ne nagoveštava kakve će karaktere dokument koristi ili kojim fontom treba da se prikaže; iako pretraživač može prikazati različite podrazumevane fontove u zavisnosti od jezika. Konfuzija nastaje zbog činjenice da različiti jezici zahtevaju drugačiji izbor karaktera koji se, u nekim slučajevima, veoma malo razlikuju (isti osnovni alfabet, ali nekoliko različitih slova ili dijakritičkih znakova), a ponekad su razlike radikalne (npr. ćirilična azbuka, grčki alfabet ili nealfabetski sistemi kakvi su japansko i kinesko pismo). Zbog toga se posebni znakovi i fontovi dodeljuju određenim jezicima.

Još uvek je neosnovana pretpostavka da dokument koristi određene karaktere samo zato što se ti karakteri vezuju za taj jezik. Citat u dokumentu može imati oznaku lang="ru" jer je na ruskom, ali ne znači da je napisan ćirilicom jer je transkribovan latiničnim pismom (npr. "glasnost" i "perestroika"). Čak i kad bi bio napisan ćirilicom, postojalo bi mnogo različitih fontova koji uključuju ćirilični repertoar. Upotreba jezičkih oznaka nije zamena za pravilno kodiranje karaktera u HTTP odgovoru vašeg servera. To se može uraditi u .htaccess fajlu:

AddDefaultCharset ISO-8859-1

Ova linija može da se koristi ako su svi vaši dokumenti u sistemu kodiranja ISO-8859-1 (upotrebljivom za većinu zapadnoevropskih jezika), a ako koristite različita kodiranja za dokumenta na različitim jezicima, moraćete da usavršite proces; možda uz pomoć različitih ekstenzija za svaki fajl i postavljanjem konfiguracija na odgovarajući način. (Kada sam prvi put pisao o ovome, pre nekoliko godina, različite vrste kodiranja bile su uobičajene, ali danas je veoma popularno koristiti UTF-8 za sve i svašta jer podržava ceo Unicode repertoar. Srećom, mnogi urednici tekstova, uključujući i onaj koji ja koristim, UltraEdit, podržavaju prirodnu izmenu u UTF-8, tako da je ovo izvodljivo.)


Published (Last edited): 17-12-2012 , source: http://webtips.dan.info/language.html