Прискорююча кнопка n назначена для пропусків при навігації по сторінкам. Пропуск для переходу на початок контента.

Даний документ є перекладом. У випадку будь-яких невідповідностей і помилок остання версія документу англійською мовою повинна розглядатися як офіційна. Першопочаткове авторське право належить W3C, як це вказано нижче.

Перекладач: Alexandr Shlapak (Олександр Шлапак)

s_gotoW3cHome Інтернаціоналізація
 

CSS чи розмітка для підтримки bidi

Аудиторія: шифрувальники XML та XHTML/HTML (використовуючи редактори або скрипти), розробники скриптів (PHP, JSP, і т.д.), шифрувальники CSS, розробники схем (DTDs, XML Schema, RelaxNG, і т.д.), і кожен, хто реалізує HTML використовуючи скрипти з вирівнюванням справа наліво.

Питання

Чи варто використовувати CSS або розмітку для коректного форматування основаного на Unicode bidi тексту в основаних на HTML і XML мовах розмітки?

Ввідна інформація

Текст написаний Арабською мовою або Івритських скриптах вирівнюється переважно справа наліво (RTL), тоді як текст в інших скриптах вирівнюється зліва право (LTR). Більшість часу Unicode bidi алгоритм піклується про спрямованість тексту, основаного на властивостях використовуваних символів. Тим не менш, необхідні деякі способи її вказівки:

Ми показуємо приклади використовуючи текст, що написаний на реальних скриптах, які вирівнюється справа наліво і, так як ASCII візуально розташована версія відразу ж після цього, показує Англійський текст в нижньому регістрі та Іврит або Арабську мову у верхньому регістрі. Порядок і позиція символів відображає відмінність від оригіналу.

Приклад:

Щоб прояснити третій пункт вище, це речення забезпечує приклад того, що ви можете отримати, якщо будете покладатися тільки на двонаправлений алгоритм. Це неправильно. Тому що вся цитата на Івриті, і, отже, вирівнюється справа наліво, текст "W3C" і кома повинні з'явитися зліва (тобто після) тексту на Івриті.

Назва на Івриті буде "פעילות הבינאום, W3C".

ASCII версія:
Назва на Івриті буде "YTIVITCA NOITAZILANOITANRETNI, w3c".

Правильний результат при відображенні буде виглядати наступним чином:

Назва на Івриті буде "פעילות הבינאום, W3C".

ASCII версія:
Назва на Івриті буде "w3c ,YTIVITCA NOITAZILANOITANRETNI".

XHTML/HTML забезпечує розмітку для досягнення цих цілей. До них належать:

Розмітка Ефект
dir атрибут Встановлює спрямованість для елемента, до якого він підключений і нижче. Можливі значення включають: rtl та ltr.
bdo елемент Перевизначає спрямованість тексту, як це визначено Unicode bidi алгоритмом.

Також наступним чином CSS забезпечує підтримку для спрямованості тексту:

Власність Значення Ефект
unicode-bidi embed Припустимо, що в тексті до якого це застосовується спрямування вирівнювання визначається властивістю direction.
bidi-override Текст до якого це застосовується перевизначить Unicode bidi алгоритм згідно до спрямування вирівнювання, яке визначене властивістю direction.
direction ltr Встановлює основний напрямок LTR для тексту, до якого застосована властивість unicode-bidi.
rtl Встановлює основний напрямок RTL для тексту, до якого застосована властивість unicode-bidi.

Питання про те чи повинні ви використовувати розмітку або CSS для вказівки спрямованості в мовах розмітки основаних на XML і HTML.

Відповідь

Ви завжди повинні використовувати специалізовану bidi розмітку для описання контенту там де є розмітка. Потім CSS може знадобитися або не знадобитися для описання значення тої розмітки. Це залежить від того чи маєте ви справу із контентом, який обробляється клієнтським додатком як HTML або XML. (Зверніть увагу, що XHTML може обслуговуватися в обидвох випадках!)

Завжди майте на увазі, що ні розмітка, ні CSS не повинні використовуватися якщо вони не потрібні. Наше питання стосується ситуацій, коли Unicode bidi алгоритм не є достатнім сам по собі, або ‎ та ‏ не можуть бути використані для встановлення спрямованості.

Давайте розглянемо це ще більш детально.

Використання специалізованої розмітки

Тому що спрямованість є невід'ємною частиною структури документа, розмітка повинна бути використана для установки спрямованості документа або частини інформації, або для визначення місця в тексті, де двонаправлений алгоритм Unicode сам по собі недостатній для досягнення бажаної спрямованості.

Для отримання бажаного вирівнювання справа наліво або двонаправленого ефекту, деякі люди просто застосовують CSS до будь-якого загального параграфу або оточують відповідний текст вбудованими елементами. Тим не менш, стилізація, яка застосована за допомогою CSS не є постійною. Її можна вимкнути, скасувати, не виявити або змінити/замінити у різних контекстах. Хоча bidi розмітка необхідна тільки для візуальної подачі тексту, це не є просто декоративною функцією. Модним залишається інтеграція розмітки з контентом документа. Вона також вносить значну ясність у контент, якщо ви використовуєте специалізовану bidi розмітку.

Тому ви повинні використовувати специалізовану bidi розмітку всякий раз, коли це можливо. Не просто прикріпити CSS стиль до загального елементу для досягнення ефекту.

Зверніть увагу, що це передбачає, що документи, написані на мовах розмітки завжди звертаються до розмітки, яка спеціально призначена для підтримки тексту змішаного напрямку. Людей, які проектують DTD або Схеми слід заохочувати, щоб вони додавали елементи чи атрибути.

HTML або XHTML, що обслуговуються як text/html

Використовуйте тільки розмітку. Рекомендація CSS2 рекомендує використовувати розмітку для bidi тексту в HTML. Насправді це доходить до того, якби сказати, що відповідні HTML клієнтські додатки можуть ігнорувати CSS bidi властивості. Це тому, що специфікація HTML чітко визначає очікувану поведінку клієнтських додатків по відношенню до bidi розмітки.

XHTML, що обслуговується як application/xhtml+xml

XHTML 1.0, що обслуговується як application/xhtml+xml буде використовувати ту ж семантику що й HTML. Таким чином, також є сенс використовувати тільки розмітку і не використовувати для цього CSS.

Загальна XML розмітка та XHTML, що обслуговується як application/xml або text/xml

Зазвичай клієнтський додаток не буде автоматично розпізнавати або знати що робити з будь-якою bidi розміткою, яку ви використовуєте в XML документах. Тому CSS властивості слід використовувати для того, щоб вказати очікувану візуальну поведінку тексту в вашому документі.

Однак, CSS завжди повинна бути пов'язана із специалізованою bidi розміткою в тексті.

XHTML, що обслуговується як application/xml або text/xml трактується клієнтськими додатками як XML, а не HTML.

Нижче показано CSS, яка була б доцільною для набору розмітки доступной в XHTML:

*[dir="ltr"] { direction: ltr; unicode-bidi: embed }

*[dir="rtl"] { direction: rtl; unicode-bidi: embed }

bdo[dir="ltr"] { direction: ltr; unicode-bidi: bidi-override }

bdo[dir="rtl"] { direction: rtl; unicode-bidi: bidi-override }

Доречі

Є ситуації в XHTML/HTML і, можливо, інші мови розмітки на основі XML, де текст з'являється в атрибуті або елементі, який підтримує тільки символьні дані. Ні розмітка, ні CSS не може використовуватися для зміни спрямованості або атрибутів тексту або частини тексту в елементі, який підтримує тільки символьні дані. У цих випадках необхідно використати Unicode коди форматування спрямованості. (Для отримання детальної інформації дивіться FAQ (часті запитання) (X)HTML та bidi коди форматування чи розмітка.)

Для мов розмітки на основі XML, bidi стайлінг повинен бути визначений в окрему таблицю стилів, і та таблиця стилів включена в інші ваші таблиці стилів або у ваш документ. Це спрощує розробку таблиць стилів і підсилює різницю між bidi та іншим стайлінгом. Думайте про таблицю стилів bidi, як про частину інформації схеми, яка визначає значення специфічної bidi розмітки, а не як про декоративний стайлінг, який може існувати в різних варіантах.

Розкажіть нам про те, що Ви думаєте.

Підписатися на RSS джерело.

Нові джерела

Новини головної сторінки

Twitter (Новини головної сторінки)

‎@webi18n

Додаткові матеріали

Автор: Richard Ishida, W3C. Перекладач: Alexandr Shlapak (Олександр Шлапак).

Допустимий XHTML 1.0!
Допустимий CSS!
Кодування UTF-8!

Переклад Англійського контенту від 2007-08-29. Переклад останнього оновлення 2011-10-24 14:00 GMT

Для перегляду історії внесення змін до перекладу натисність qa-bidi-css-markup в блоге i18n.