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

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

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

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

Пропажа пробілів Bidi

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

Питання

Чому мій браузер не показує пробіли між Латинським текстом та Арабським/Івритом?

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

Пробіли між Латинським і Арабським такстом/Івритом можуть пропадати коли в середині тексту за ним слідують білі пробіли - вбудований елемент, що включає в себе атрибут dir.

Наприклад, в таких браузерах код:

<p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

Виглядатиме наступним чином, де стрілка вказує місцезнаходження зниклого пробілу:

Зображення результату, що показує, відсутність пробілу ліворуч від Латинського тексту.

Зверніть увагу, що цей ефект виникає, коли текст, що вирівнюється справа-наліво вбудований в уривок, який вирівнюється зліва-направо .

Відповідь

Якщо попередній розділ описує тільки зовнішній вигляд вашого коду, то рішенням цієї проблеми буде видалити усі пробіли перед кінцевим тегом вбудованого елементу, або видалити атрибут dir (при необхідності).

Наприклад, для видалення пробілу між (W3C) та </span> при використанні:

<p dir="rtl"> العالمية <span dir="ltr">(W3C)</span> تخلق قواعد </p>

ви отримаєте наступне:

Зображення результату, що показує, пробіли по обидва боки від Латинського тексту.

Зазначимо також, що в цьому прикладі атрибут dir="ltr" в елементі <span> навколо тексту (W3C) насправді не потребує правильного розташування. Якщо ви пропустите атрибут або весь span елемент це також вирішить цю проблему.

Як це буде виглядати?

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

Код: <p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Код: <p dir="rtl"> العالمية <span dir="ltr">(W3C)</span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Код: <p dir="rtl"> العالمية <span>(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Код: <p dir="rtl"> العالمية <span>(W3C)</span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Код: <p dir="rtl"> العالمية (W3C) تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Доречі

Якщо ви хочете докладніше дізнатися чому це відбувається, то прочитайте цей розділ.

Очікуваною є поведінка, коли текст що відображається не описується детально в специфікації XHTML/HTML, але описується в поточних специфікаціях CSS. Хоча приклади на цій сторінці, не використовують CSS, зате в них застосовуються ті ж принципи. Наступний текст взято з Робочого Проекту CSS 2.1:

  1. Якщо 'white-space' встановлене як 'normal', 'nowrap', або 'pre-line',
    1. кожна вкладка (U+0009) перетворюється в пробіл (U+0020)
    2. Видаляється будь-який пробіл (U+0020) за яким слідує інший пробіл (U+0020) — навіть пробіл перед вбудованим символом, якщо він також має 'white-space' встановлене як 'normal', 'nowrap' або 'pre-line'.

Розглянемо приклад, що виглядає таким чином (кольори представляють пробіли, U +0020, для полегшення ідентифікації):

<ltr>A <rtl> B </rtl> C</ltr>

специфікація говорить про те, що пробіл після A зберігається, пробіл перед B видаляється, пробіл після B зберігається, пробіл перед C видаляється. Потім це виконується відповідно до двонаправленого алгоритму Unicode, і кінцевий результат буде таким:

A  BC

Зверніть увагу, що є два пробіли між A та B! Вкладення рівнів може бути виражене таким чином:

11221

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

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

Нові джерела

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

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

‎@webi18n

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

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

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

Переклад Англійського контенту від 2003-11-06. Переклад останнього оновлення 2011-10-01 11:00 GMT

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