Jesteś tutaj: Główna → Teksty → Zapomniane znaczniki → Wyróżnianie obcojęzycznych fragmentów tekstu
Opublikowano 21 stycznia 2005
Problem: w pisanym przez nas tekście, który ma być umieszczony w sieci jako strona WWW występują obcojęzyczne słowa. Jak oznaczyć je w sposób semantycznie poprawny, tak, by czytniki ekranowe nie miały problemu z ich rozpoznaniem, a i użytkownik dobrej przeglądarki mógł je jednoznacznie zidentyfikować?
Zadałem to pytanie na grupie pl.comp.www. Odpowiedzi na mój post można policzyć na palcach jednej ręki, jedna z nich jednak zasługuje na szczególna uwagę, tym bardziej, że pokrywa się z tym, co udało mi się znaleźć w ramach własnych poszukiwań.
langZgodnie, ze specyfikacją
HTML, atrybut lang służy do:
The
langattribute specifies the language of element content and attribute values; whether it is relevant for a given attribute depends on the syntax and semantics of the attribute and the operation involved.
co, w wolnym tłumaczeniu, daje:
Atrybut
langokreśla język elementu treści i jego inne wartości (&)
Atrybutu tego można użyć w kontekście prawie każdego elementu pojawiającego się na stronie; w szczególności, można go stosować w odniesieniu do takich elementów, jak:
P - akapity;EM oraz STRONG - podkreślenia;BLOCKQUOTE - przytaczanie;HTML;lang jest więc pierwszym składnikiem poprawnego
oznaczania obcojęzycznych fragmentów tekstu.
Chcąc zachować właściwą strukturę dokumentu, powinniśmy jakoś
wyróżnić pisany w obcym języku fragment za pomocą znaczników
HTML. Do grupowania elementów na stronie służą
znaczniki DIV
oraz SPAN. Ze względu na specyfikę obu tych
elementów, właściwszym wydaje się być SPAN
(DIV może być - w zależności od określenia w
arkuszu stylów - może być elementem tak blokowym, jak i
liniowym, podczas gdy SPAN jest z definicji
elementem liniowym). We wspomniej przeze mnie odpowiedzi na mój
post, Paweł Knapik pisze:
Mozna uzyc:
<span lang="en">some_word</span>w kodzie, orazspan[lang="en"] { font-style: italic; }w CSS. IE niestety nie zrozumie, wiec trzeba by nadac dodatkowo klase.
Paweł wspomina tutaj o trzecim (last but not least) elemencie: typografii.
W wypowiedzi Pawła, podkreślona jest również konieczność
podkreślenia wizualnego fragmentu tekstu pisanego w obcym
języku. Przyjęło się, że w takich sytuacjach używana jest kursywa.
Na stronach WWW efekt tekstu pisanego kursywać
można uzyskać w dwojaki sposób: bądź to przez nadanie wartości
italic atrybutowi font-style, bądź to za
pomocą znacznika I. Każde rozwiązanie ma swoje zalety,
ale również i wady.
Chcąc całkowicie odseparować treść od strony wizualnej naszej
(sic!) strony, winniśmy skorzystać z arkusza
stylów, stosując regułę: span[lang] { font-style: italic;
}, a same fragmenty tekstu obcojęzycznego oznaczać w sposób
przytoczony przez Pawła. Zalety rozwiązania są oczywiste: w kodzie
strony korzystamy tylko i wyłącznie ze znaczników strukturalnych,
odseparowaliśmy wygląd od treści, nasza strona będzie zgodna z
nowymi standardami (np. z XHTML 2.0). Wady
rozwiązania: selektor span[lang] nie jest obsługiwany
przez Internet Explorer†. Nie jest to jednak wada poważna -
IE znany jest z wielu innych poważniejszych
uchybień wobec standardów sieciowych. Dużo poważniejszym, moim
zdaniem, problemem jest to, że przy wyłączonej obsłudze
CSS, użytkownik w żaden sposób nie będzie
wiedział, czy dane słowo jest napisane w obcym języku, czy nie -
niezależnie od rodzaju używanej przez niego bądź nią
przeglądarki.
INa ratunek przychodzi znacznik I. Jego używanie
jednak - choć uzyskujemy pożądany efekt: wszystkie teksty
obcojęzyczne są pisane kursywą - jest nieco kontrowersyjne.
Przede wszystkim, znacznik I jest znacznikiem
czysto wizualnym, przez co w pewnym sensie niezgodnym z duchem
XHTML. Nie oznacza to jednak, że jest on
znacznikiem niedozwolnym: nie tylko jest on wymieniony w
specyfikacji XHTML
1.0 Strict, ale również jego użycie jest legalne w
XHTML w wersji 1.1. Jednakże, nie występuje on w
specyfikacji
XHTML 2.0, co oznacza, że dokumenty używające
tego znacznika nie będą zgodne z nowym standardem (w moim
przekonaniu, jednak, nim XHTML 2.0 zostanie
oficjalnie ogłoszony przez W3C jako obowiązujący standard,
minie dużo czasu).
Z drugiej jednak strony, dozwolone jest używanie znaczników
I i B, jeśli celem projektanta strony
jest uzyskanie pożądanego efektu typograficznego. Znowu odnosząc
się do postu Pawła:
Oznaczanie wyrazów pochodzenia obcego kursywą jest ogólnie przyjętą praktyką (...)
Chodzi więc tylko i wyłącznie o typografię! Znacznik
I nadaje się do tego idealnie - zapewnia właściwe
formatowanie czcionki, jest poprawnie interpretowany przez
wszystkie przeglądarki (łącznie z np. Lynksem) i
póki co jest zgodny ze standardem. Zgodnie z tym, słowa i zwroty
pochodzenia obcego, oznaczać będę znacznikiem
<i>: Voila!
†można to częściowo obejść przez przypisanie specjalnej klasy do fragmentów pisanych w obcym języku; w ten sposób jednak używamy znaczników XHTML do tworzenia wizualnej definicji dokumentu, co jest sprzeczne z ideą odseparowywania treści od wyglądu.