Html язык русский: Объявление языка в HTML
Содержание
Объявление языка в HTML
Объявление языка в HTML
Вопрос
Как установить язык содержимого моей HTML страницы?
Краткий ответ
Всегда используйте языковой атрибут тэга html
для объявления языка по умолчанию на странице. Если страница содержит контент на другом языке, добавляйте языковой атрибут к элементам, окружающим этот контент.
Используйте lang
атрибут для HTML страниц и xml:lang
атрибут для страниц XML. Для XHTML 1.x и документов HTML5 Polyglot используйте оба атрибута вместе.
Используйте языковые тэги из IANA Language Subtag Registry. Вы можете найти тэги также с помощью Language Subtag Lookup.
Используйте вложенные элементы для того, чтобы позаботиться о контенте и значения атрибутов для одинаковых элементов на разных языках.
Детали
Основы
Всегда используйте языковой атрибут элемента html
. Он наследуется всеми другими элементами, и поэтому для текста в head
элементе документа будет задан язык по умолчанию.
Обратите внимание, что предпочтительнее использовать html
элемент, чем body
, так как body
элемент не включает в себя текст из head
элемента.
Если у вас есть какой-либо контент на странице, язык которого отличается от заданного в языковом атрибуте элемента html
, добавляйте языковые атрибуты к элементам окружающим такой контент. Это позволит вам отображать или обрабатывать его различным образом.
С некоторыми частями кода у вас могут возникнуть проблемы. Если у вас есть мультиязычный текст в элементе title
, вы не сможете разметить текст, содержащий разные языки, потому что title
атрибут поддерживает только символы, а не разметку.
То же самое относится к нескольким языкам в значениях атрибутов. На текущий момент эффективное решение этой проблемы отсутствует.
Выбор корректного атрибута
Если ваш документ HTML (то есть обрабатывается, как text/html
), используйте lang
атрибут для установки языка документа
или блока текста. Например, следующий код установит французский языком по умолчанию:
<html lang="fr">
Когда XHTML 1.x или страницы Polyglot обрабатываются, как text/html
, используйте оба атрибута lang
и xml:lang
вместе каждый раз, когда вы хотите объявить язык. Атрибут xml:lang
— это стандартный способ объявления языковой информации в XML. Убедитесь, что значения обоих атрибутов идентичны.
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
Атрибут xml:lang
не особо полезен для обработки HTML файлов, но он будет перекрывать значение lang
атрибута каждый раз, когда вы обрабатываете документ, как XML. Атрибут lang
разрешен синтаксисом XHTML и может быть распознан браузерами.
Однако, когда используются другие синтаксические анализаторы XML (например, функция lang()
в XSLT), вы не можете полагаться на то, что атрибут lang
будет распознан.
Если вы обрабатываете ваш документ, как XML (то есть используете MIME type application/xhtml+xml
), то
атрибут lang
не нужен, будет достаточно атрибута xml:lang
.
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
Что, если содержимое элемента и значения его атрибутов на разных языках?
Иногда язык текста в атрибутах и язык непосредственно контента элемента различаются. Например, в правом верхнем углу этой статьи расположен список ссылок на другие переводы данной страницы.
Текст ссылки отображает язык целевой страницы, но связанный title
атрибут содержит подсказку на языке текущей страницы:
Если ваш код выглядит, как указано ниже, то атрибут языка указывает, что испанский — не только язык контента, но и title
текста.
Это, очевидно, некорректно.
Некорректный код. Не копируйте!
<a lang="es" title="Spanish"
href="qa-html-language-declarations.es">Español</a>
Вместо этого, перенесите языковой атрибут в другой элемент, как показано в данном примере, в котором span
элемент наследует en
язык по умолчанию, установленный у html
элемента.
<span title="Spanish"><a lang="es"
href="qa-html-language-declarations.es">Español</a></span>
Что если нет подходящего элемента для того, чтобы прицепить атрибут языка?
Если вы хотите указать язык контента, но вокруг него нет никакой разметки, используйте такой элемент, как span
или div
.
Вот пример:
<p>You'd say that in Chinese as <span lang="zh-Hans">中国科学院文献情报中心</span>. </p>
Выбор значений языка
Чтобы быть уверенными, что юзер агенты распознают указанный вами язык, вам следует придерживаться стандартизированному подходу при указании значений атрибутов языка.
Вам также необходимо подумать о том, как стандартизированно ссылаться на различные диалекты одного языка, например, такие, как американский и британский английский, которые существенно отличаются своим написанием и произношением.
Правила создания языковых атрибутов описываются IETF спецификацией, которая называется BCP 47. Помимо описания использования простых тэгов языка таких, как en
(английский) или fr
(французский), BCP 47 описывает,
как сочетать языковые тэги, что позволяет вам указывать региональные диалекты, скрипты и другие варианты, относящиеся к данному языку.
BCP 47 включает в себя, но выходит за рамки ISO списков кодов языков и стран. Чтобы найти подходящий код, вам нужно обратиться к IANA Language Subtag Registry.
Неофициальная утилита Language Subtag Lookup предоставляет удобный фронтенд инструментарий для IANA registry.
Для краткого, но достаточно тщательного ознакомления с синтаксисом тэгов BCP 47, читайте Языковые тэги в HTML и XML. Если необходима помощь в выборе корректного языкового тэга из множества возможных тэгов и комбинаций, смотрите Выбор тэга языка.
Дополнительная информация
Указание метаданных о языке аудитории
Если вы хотите создать метаданные, описывающие скорее язык целевой аудитории страницы, чем язык определенной части текста, реализуйте это с помощью отправки сервером
информации в HTTP заголовке Content-Language
. Если ваша целевая аудитория говорит более, чем на одном языке, HTTP заголовок позволяет вам использовать список языков, разделённых запятыми.
Это пример HTTP заголовка, объявляющего ресурс смесью английского, хинди панджаби языков:
Content-Language: en, hi, pa
Обратите внимание, что этот подход не сработает, если страница загружается с жесткого диска, CD или другого источника, не являющегося сервером. В настоящее время нет широко распространенного способа использования таких метаданных внутри страницы.
В прошлом многие люди использовали meta
элемент с атрибутом http-equiv
со значением Content-Language
. Из-за давних путаниц и непоследовательных реализаций этого элемента HTML5 спецификация сделала его несоответствующим стандартам HTML, так что вам больше не следует использовать этот элемент.
Для обратной совместимости, HTML5 описывает алгоритм, с помощью которого язык контента может быть определён из HTTP или meta
Content-Language
информации при определённых условиях. Как бы то ни было, это только запасной механизм для случаев, когда языковой атрибут отсутствует у html
тэга. Если вы используете атрибут языка для html
, что следует делать всегда, подобные запасные пути бесполезны.
Для подробной информации о Content-Language
в HTTP и meta
элементах читайте HTTP и meta для информации о языке.
Различные вещи, которые не относятся к делу
Вероятно, стоит упомянуть ещё несколько моментов, которые не имеют отношения к этой дискуссии.
Первое, невозможно объявить язык с помощью CSS.
Второе, DOCTYPE
, с которого должен начинаться любой HTML может содержать то, что выглядит для некоторых людей, как объявления языка. DOCTYPE
в примере ниже содержит текст EN, что означает ‘English’. Это, тем не менее, указывает на язык schema (схемы), связанной с данным документом – это никоим образом не указывает на непосредственно язык самого документа.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Третье, иногда люди предполагают, что информация о естественном языке может быть получена из кодировки символов. Тем не менее, кодировка символов не позволяет однозначно идентифицировать естественный язык. Должно быть взаимно однозначное сопоставление между кодировкой и языком, чтобы это сработало, а его нет. Одна кодировка может быть использована многими языками, например Latin 1 (ISO-8859-1) используется и французским, и английским, а ещё многими другими языками. В дополнение, кодировка может отличаться в рамках одного языка, например арабский может использовать ‘Windows-1256’ или ‘ISO-8859-6’ или ‘UTF-8’.
Все эти примеры кодировок спорны, так как весь контент сегодня должен быть создан в UTF-8, который охватывает все, кроме самых редких, языки.
В некоторых текстах, таких, как арабский и иврит, отображаемый текст читается в основном справа налево, хотя числа и иностранные термины отображаются слева направо. Необходима разметка, такая, как dir
атрибут, для объявления right-to-left содержания. И в некоторых случаях разметка необходима для правильного отображения двунаправленного текста, но это невозможно сделать с помощью разметки языка.
То же самое относится к направлению текста. Как и в случае с кодировками, не всегда существует соответствие между языком и текстом, в том числе его направлением. Например, азербайджанский может быть записан справа налево (арабская письменность) и слева направо (латиница и кириллица), соответственно код языка az
может относится к обоим вариантам. Дополнительно, разметка направления текста применяет к тексту целый ряд различных значений, в то время, как язык является простым переключателем, который не соответствует поставленным задачам.
Дополнительные материалы
Приступаете к работе? Язык в Сети
руководство, Работа с языком в HTML
Ссылки по теме, Разработка HTML и CSS
- Язык
- Использование атрибутов для объявления языка
- Выбор значений языка
- Объявление изменений языка в документе
Коды языков | htmlbook.
ru
Код языка применяется для атрибутов, задающих язык, на котором написан весь документ или отдельные его блоки. В HTML язык обычно задается через атрибут lang.
В табл. 1 приведены некоторые распространенные языки и их коды, которые используются в качестве значений.
Язык | Код |
---|---|
Абхазский | ab |
Азербайджанский | az |
Аймарский | ay |
Албанский | sq |
Английский | en |
Американский английский | en-us |
Арабский | ar |
Армянский | hy |
Ассамский | as |
Африкаанс | af |
Башкирский | ba |
Белорусский | be |
Бенгальский | bn |
Болгарский | bg |
Бретонский | br |
Валлийский | cy |
Венгерский | hu |
Вьетнамский | vi |
Галисийский | gl |
Голландский | nl |
Греческий | el |
Грузинский | ka |
Гуарани | gn |
Датский | da |
Зулу | zu |
Иврит | iw |
Идиш | ji |
Индонезийский | in |
Интерлингва (искусственный язык) | ia |
Ирландский | ga |
Исландский | is |
Испанский | es |
Итальянский | it |
Казахский | kk |
Камбоджийский | km |
Каталанский | ca |
Кашмирский | ks |
Кечуа | qu |
Киргизский | ky |
Китайский | zh |
Корейский | ko |
Корсиканский | co |
Курдский | ku |
Лаосский | lo |
Латвийский, латышский | lv |
Латынь | la |
Литовский | lt |
Малагасийский | mg |
Малайский | ms |
Мальтийский | mt |
Маори | mi |
Македонский | mk |
Молдавский | mo |
Монгольский | mn |
Науру | na |
Немецкий | de |
Непальский | ne |
Норвежский | no |
Пенджаби | pa |
Персидский | fa |
Польский | pl |
Португальский | pt |
Пуштунский | ps |
Ретороманский | rm |
Румынский | ro |
Русский | ru |
Самоанский | sm |
Санскрит | sa |
Сербский | sr |
Словацкий | sk |
Словенский | sl |
Сомали | so |
Суахили | sw |
Суданский | su |
Тагальский | tl |
Таджикский | tg |
Тайский | th |
Тамильский | ta |
Татарский | tt |
Тибетский | bo |
Тонга | to |
Турецкий | tr |
Туркменский | tk |
Узбекский | uz |
Украинский | uk |
Урду | ur |
Фиджи | fj |
Финский | fi |
Французский | fr |
Фризский | fy |
Хауса | ha |
Хинди | hi |
Хорватский | hr |
Чешский | cs |
Шведский | sv |
Эсперанто (искусственный язык) | eo |
Эстонский | et |
Яванский | jw |
Японский | ja |
utf 8 — HTML на русском
спросил
Изменено
5 лет, 5 месяцев назад
Просмотрено
25 тысяч раз
Мне нужно разработать русскую версию веба. Я получаю текст от переводчика. Я копирую его в коде Dreamweaver, но он не работает.
У меня обычный заголовок:
Что мне делать?
- html
- utf-8
- dreamweaver
- кириллица
2
Вы должны изменить кодировку вашего файла на UTF-8. Вы можете выполнить этот процесс, когда вы Сохранить как файл в Блокноте или вы можете использовать Блокнот ++ (Кодировка -> Кодировать в UTF-8 ) для этого.
2
Документ http://www.mig-marketing.com/proves/nando/ru/ содержит только русский текст в изображении, но ссылается на http://www.mig-marketing.com/proves/nando/ ru/firma.html, который содержит (помимо текста на изображении) русский текст в кодировке ISO-8859-5 (= ISO Latin/Cyrillic). Эта кодировка объявлена в мета-теге
, но проблема в том, что объявление не имеет никакого эффекта, так как HTTP-заголовки имеют преимущество перед ними, и они говорят
Тип содержимого: текст/html; кодировка = ISO-8859-1
(Вы можете легко проверить заголовки ответов HTTP, используя Firefox с расширением для веб-разработчиков и выбрав Информация → Просмотреть заголовки ответов. )
Чтобы исправить это, обратитесь к администратору веб-сервера или попробуйте исправить это самостоятельно, если настройки Apache позволяют использование покаталоговых файлов .htaccess
, в этом случае просто создайте файл с таким именем (включая начальную точку) в каталоге, содержащем русские файлы, и введите текст
AddType text/html;charset=ISO-8859-5 html
Это заставит сервер отправлять все файлы .html в этом каталоге с заголовками HTTP, которые определяют их как закодированные по стандарту ISO-8859-5.
Принудительно пересохраните все ваши файлы в кодировке UTF8.
4
После стольких попыток я обнаружил, что проблема была в сервере. Я не знаю как именно, но когда я сказал им, что мне нужен веб на русском языке, они что-то изменили, и он работает!.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Статус локализации: русский (ru) — Полное руководство по HTML5
С помощью наших пользователей мы переводим это руководство на русский язык.