Атрибут lang тега <bdo>
Описание
Атрибут lang для тега <bdo> указывает язык текста, к которому применяется изменение направления. Хотя <bdo> в первую очередь управляет направлением, lang помогает:
- Корректно отображать символы языка
- Улучшать доступность для скринридеров
- Обеспечивать правильную работу средств перевода
- Оптимизировать типографику для конкретного языка
Пример использования:
<bdo dir="rtl" lang="ar">
اللغة العربية
</bdo>
Рекомендуемые языковые коды:
| Язык | Код | Направление |
|---|---|---|
| Арабский | ar |
RTL |
| Иврит | he |
RTL |
| Персидский | fa |
RTL |
| Урду | ur |
RTL |
Особенности работы:
- Не изменяет поведение атрибута
dir - Влияет на выбор шрифта и рендеринг текста
- Может переопределять унаследованный язык от родительских элементов
- Рекомендуется для всех случаев использования
<bdo>
Пример с CSS:
/* Специфичные стили для арабского текста */
bdo[lang="ar"] {
font-family: 'Arabic Font', sans-serif;
letter-spacing: 0;
}
/* Стили для персидского текста */
bdo[lang="fa"] {
font-family: 'Iranian Sans', serif;
}
Совет: Всегда указывайте lang вместе с dir для RTL-языков - это помогает браузерам корректно обрабатывать текст.
JavaScript-применение:
// Динамическое определение языка
function setBdoLanguage(element, text) {
const rtlChars = /[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/;
element.lang = rtlChars.test(text) ? 'ar' : 'en';
element.dir = rtlChars.test(text) ? 'rtl' : 'ltr';
}
Ошибки и решения:
<!-- Неправильно: язык не соответствует направлению -->
<bdo dir="rtl" lang="en">English text</bdo>
<!-- Правильно: -->
<bdo dir="ltr" lang="en">English text</bdo>
<bdo dir="rtl" lang="ar">نص عربي</bdo>
Рекомендации:
- Используйте стандартные коды языков (ISO 639-1)
- Для региональных вариантов добавляйте код страны (
ar-EG,he-IL) - Проверяйте соответствие между
langи фактическим содержимым - Сочетайте с атрибутом
dirдля полного контроля