Jesteś tutaj: GłównaTekstyZapomniane znaczniki → Wyróżnianie obcojęzycznych fragmentów tekstu

O wyróżnianiu 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ń.

Atrybut lang

Zgodnie, ze specyfikacją HTML, atrybut lang służy do:

The lang attribute 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 lang okreś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:

lang jest więc pierwszym składnikiem poprawnego oznaczania obcojęzycznych fragmentów tekstu.

Struktura dokumentu

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, oraz span[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.

Typografia

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.

Wariant 1: wykorzystanie arkusza stylów CSS

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.

Wariant 2: wykorzystanie znacznika I

Na 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.