Коды языков в HTML


Содержание

Коды @OSLang

Значения (строковое в колонке Hex) возвращаемые макросом @OSLang определяют язык OS

Примечание: Коды, содержащие буквы, возможно, могут содержать эти буквы в верхнем регистре.
Теги языков читаются так: de-AT : language-region : Немецкий, используемый в Австрии

Hex Dec Тег Язык
0004 4 zh-CHS Китайский — упрощенный
0401 1025 ar-SA Арабский (Саудовская Аравия)
0402 1026 bg-BG Болгарский (Болгария)
0403 1027 ca-ES Каталанский (Каталония)
0404 1028 zh-TW Китайский (Тайвань)
0405 1029 cs-CZ Чешский (Республика Чехия)
0406 1030 da-DK Датский (Дания)
0407 1031 de-DE Немецкий (Германия)
0408 1032 el-GR Греческий (Греция)
0409 1033 en-US Английский (США)
040a 1034 es Испанский (традиционная сортировка)
040b 1035 fi-FI Финский (Финляндия)
040c 1036 fr-FR Французский (Франция)
040d 1037 he-IL Иврит (Израиль)
040e 1038 hu-HU Венгерский (Венгрия)
040f 1039 is-IS Исландский (Исландия)
0410 1040 it-IT Итальянский (Италия)
0411 1041 ja-JP Японский (Япония)
0412 1042 ko-KR Корейский (Республика Корея)
0413 1043 nl-NL Нидерландский (Нидерланды)
0414 1044 nb-NO Норвежский, букмол (Норвегия)
0415 1045 pl-PL Польский (Польша)
0416 1046 pt-BR Португальский (Бразилия)
0417 1047 rm-CH Ретороманский (Швейцария)
0418 1048 ro-RO Румынский (Румыния)
0419 1049 ru-RU Русский (Россия)
041a 1050 hr-HR Хорватский (Хорватия)
041b 1051 sk-SK Словацкий (Словакия)
041c 1052 sq-AL Албанский (Албания)
041d 1053 sv-SE Шведский (Швеция)
041e 1054 th-TH Тайский (Таиланд)
041f 1055 tr-TR Турецкий (Турция)
0420 1056 ur-PK Урду (Исламская Республика Пакистан)
0421 1057 id-ID Индонезийский (Индонезия)
0422 1058 uk-UA Украинский (Украина)
0423 1059 be-BY Белорусский (Беларусь)
0424 1060 sl-SI Словенский (Словения)
0425 1061 et-EE Эстонский (Эстония)
0426 1062 lv-LV Латышский (Латвия)
0427 1063 lt-LT Литовский (Литва)
0428 1064 tg-Cyrl-TJ Таджикский (кириллица) — Таджикистан
0429 1065 fa-IR Фарси (Иран)
042a 1066 vi-VN Вьетнамский (Вьетнам)
042b 1067 hy-AM Армянский (Армения)
042c 1068 az-Latn-AZ Азербайджанский (латиница, Азербайджан)
042d 1069 eu-ES Баскский (Страна Басков)
042e 1070 hsb-DE Upper Sorbian — Германия
042f 1071 mk-MK Македонский (Бывшая югославская Республика Македония)
0432 1074 tn-ZA Тсвана (Южная Африка)
0434 1076 xh-ZA Исикоса (Южная Африка)
0435 1077 zu-ZA Исизулу (Южная Африка)
0436 1078 af-ZA Африкаанс (Южная Африка)
0437 1079 ka-GE Грузинский (Грузия)
0438 1080 fo-FO Фарерский (Фарерские о-ва)
0439 1081 hi-IN Хинди (Индия)
043a 1082 mt-MT Мальтийский (Мальта)
043b 1083 se-NO Саамский северный (Норвегия)
043e 1086 ms-MY Малайский (Малайзия)
043f 1087 kk-KZ Казахский (Казахстан)
0440 1088 ky-KG Киргизский (Киргизия)
0441 1089 sw-KE Суахили (Кения)
0442 1090 tk-TM Туркменский — Туркмения
0443 1091 uz-Latn-UZ Узбекский (латиница, Узбекистан)
0444 1092 tt-RU Татарский (Россия)
0445 1093 bn-IN Бенгальский (Индия)
0446 1094 pa-IN Пенджабский (Индия)
0447 1095 gu-IN Гуджарати (Индия)
0448 1096 or-IN Ория (Индия)
0449 1097 ta-IN Тамильский (Индия)
044a 1098 te-IN Телугу (Индия)
044b 1099 kn-IN Каннада (Индия)
044c 1100 ml-IN Малаялам (Индия)
044d 1101 as-IN Ассамский (Индия)
044e 1102 mr-IN Маратхи (Индия)
044f 1103 sa-IN Санскрит (Индия)
0450 1104 mn-MN монгольский (кириллица, Монголия)
0451 1105 bo-CN Тибетский — Китай
0452 1106 cy-GB Валлийский (Соединенное Королевство)
0453 1107 km-KH Кхмерский (Камбоджа)
0454 1108 lo-LA Лаосский (Лаосская Народно-Демократическая Республика)
045c 1116 chr-Cher-US Чероки — Чероки
045d 1117 iu-Cans-CA Inuktitut (Canadian_Syllabics) — Канада
0456 1110 gl-ES Галисийский (Галисия)
0457 1111 kok-IN Конкани (Индия)
045a 1114 syr-SY Сирийский (Сирия)
045b 1115 si-LK Сингальский (Шри-Ланка)
045e 1118 am-ET Амхарский (Эфиопия)
0461 1121 ne-NP Непальский (Непал)
0462 1122 fy-NL Фризский (Нидерланды)
0463 1123 ps-AF Пушту (Афганистан)
0464 1124 fil-PH Филиппинский (Филиппины)
0465 1125 dv-MV Дивихай (Мальдивы)
0468 1128 ha-Latn-NG Хауса (латиница, Нигерия)
046a 1130 yo-NG Йоруба (Нигерия)
046B 1131 quz-BO Кечуа (Боливия)
046c 1132 nso-ZA Северный сото (Южная Африка)
046d 1133 ba-RU Башкирский — Россия
046e 1134 lb-LU Люксембургский (Люксембург)
046f 1135 kl-GL Гренландский — Гренландия
0470 1136 ig-NG Игбо (Нигерия)
0473 1139 ti-ET Тигринья — Эфиопия
0475 1141 haw-US Гавайский США
0478 1144 ii-CN Yi — Китай
047a 1146 arn-CL Арaуканский (Чили)
047c 1148 moh-CA Могавк (Могавк)
047e 1150 br-FR Бретонский — Франция
0480 1152 ug-CN Уйгурский — Китай
0481 1153 mi-NZ Маори (Новая Зеландия)
0482 1154 oc-FR Occitan — Франция
0483 1155 co-FR Corsican — Франция
0484 1156 gsw-FR Alsatian — Франция
0485 1157 sah-RU Саха — Россия
0486 1158 qut-GT Киче — Гватемала
0487 1159 rw-RW Киньяруанда (Руанда)
0488 1160 wo-SN Волоф (Республика Сенегал)
048c 1164 prs-AF Dari — Афганистан
0491 1169 gd-GB Шотландский гэльский — Соединенное Королевство (Великобритания)
0492 1170 ku-Arab-IQ Центральный курдский — Ирак
0801 2049 ar-IQ Арабский (Ирак)
0803 2051 ca-ES-valencia Valencian — Валенсия
0804 2052 zh-CN Китайский (КНР)
0807 2055 de-CH Немецкий (Швейцария)
0809 2057 en-GB Английский (Великобритания)
080a 2058 es-MX Испанский (Мексика)
080c 2060 fr-BE Французский (Бельгия)
0810 2064 it-CH Итальянский (Швейцария)
0813 2067 nl-BE Нидерландский (Бельгия)
0814 2068 nn-NO Норвежский, нюнорск (Норвегия)
0816 2070 pt-PT Португальский (Португалия)
0819 2073 ru-MO Русский (Молдова)
081a 2074 sr-Latn-CS Сербский (латиница, Сербия)
081d 2077 sv-FI Шведский (Финляндия)
082c 2092 az-Cyrl-AZ Азербайджанский (кириллица, Азербайджан)
082e 2094 dsb-DE Lower Sorbian — Германия
0832 2098 tn-BW Сетсвана / Тсвана — Ботсвана
083B 2107 se-SE Саамский северный (Швеция)
083c 2108 ga-IE Ирландский (Ирландия)
083e 2110 ms-BN Малайский (Бруней-Даруссалам)
0843 2115 uz-Cyrl-UZ Узбекский (кириллица, Узбекистан)
0845 2117 bn-BD Бенгальский (Бангладеш)
0846 2118 pa-Arab-PK Панджаби — Пакистан
0849 2121 ta-LK Тамил — Шри-Ланка
0850 2128 mn-Mong-CN Монгольский (Монг) — Монголия
0859 2137 sd-Arab-PK Синдхи — Пакистан
085d 2141 iu-Latn-CA Инуктитут (латиница, Канада)
085f 2143 tzm-Latn-DZ Тамазигхт (латиница) — Алжир
0867 2151 ff-Latn-SN Пулар — Сенегал
086b 2155 quz-EC Кечуа (Эквадор)
0873 2163 ti-ER Тигринья — Эритрея
0c01 3073 ar-EG Арабский (Египет)
0c04 3076 zh-HK Китайский (Гонконг)
0c07 3079 de-AT Немецкий (Австрия)
0c09 3081 en-AU Английский (Австралия)
0c0a 3082 es-ES Испанский (Испания)
0c0c 3084 fr-CA Французский (Канада)
0c1a 3098 sr-Cyrl-CS Сербский (кириллица, Сербия)
0c3b 3131 se-FI Саамский северный (Финляндия)
0c6b 3179 quz-PE Кечуа (Перу)
1001 4097 ar-LY Арабский (Ливия)
1004 4100 zh-SG Китайский (Сингапур)
1007 4103 de-LU Немецкий (Люксембург)
1009 4105 en-CA Английский (Канада)
100a 4106 es-GT Испанский (Гватемала)
100c 4108 fr-CH Французский (Швейцария)
101a 4122 hr-BA Хорватский (Босния и Герцеговина)
103b 4155 smj-NO Саамский Лул (Норвегия)
105f 4191 tzm-Tfng-MA Центральный Атлас Тамазигхт (тифинаг) — Марокко
1401 5121 ar-DZ Арабский (Алжир)
1404 5124 zh-MO Китайский (Макао)
1407 5127 de-LI Немецкий (Лихтенштейн)
1409 5129 en-NZ Английский (Новая Зеландия)
140a 5130 es-CR Испанский (Коста-Рика)
140c 5132 fr-LU Французский (Люксембург)
141a 5146 bs-Latn-BA Боснийский (латиница, Босния и Герцеговина)
143b 5179 smj-SE Саамский Лул (Швеция)
1801 6145 ar-MA Арабский (Марокко)
1809 6153 en-IE Английский (Ирландия)
180a 6154 es-PA Испанский (Панама)
180c 6156 fr-MC Французский (Монако)
181a 6170 sr-SP-Cyrl Сербский (кириллица, Сербия)
183b 6203 sma-NO Саамский южный (Норвегия)
1c01 7169 ar-TN Арабский (Тунис)
1c09 7177 en-ZA Английский (Южная Африка)
1c0a 7178 es-DO Испанский (Доминиканская республика)
1c1a 7194 sr-Cyrl-BA Сербский (кириллица, Босния и Герцеговина)
1c3b 7227 sma-SE Саамский южный (Швеция)
2001 8193 ar-OM Арабский (Оман)
2009 8201 en-JM Английский (Ямайка)
200a 8202 es-VE Испанский (Венесуэла)
201a 8218 bs-Cyrl-BA Боснийский (кириллица, Босния и Герцеговина)
203b 8251 sms-FI Саамский Скольт (Финляндия)
2401 9217 ar-YE Арабский (Йемен)
2409 9225 en-029 Английский (Карибский бассейн)
240a 9226 es-CO Испанский (Колумбия)
241a 9242 sr-Latn-RS Сербский (латиница) — Сербия
243b 9275 smn-FI Саамский Инари (Финляндия)
2801 10241 ar-SY Арабский (Сирия)
2809 10249 en-BZ Английский (Белиз)
280a 10250 es-PE Испанский (Перу)
281a 10266 sr-Cyrl-RS Сербский (кириллица) — Сербия
2c01 11265 ar-JO Арабский (Иордания)
2c09 11273 en-TT Английский (Тринидад и Тобаго)
2c0a 11274 es-AR Испанский (Аргентина)
2c1a 11290 sr-Latn-ME Сербский (латиница) — Черногория
3001 12289 ar-LB Арабский (Ливан)
3009 12297 en-ZW Английский (Зимбабве)
300a 12298 es-EC Испанский (Эквадор)
301a 12314 sr-Cyrl-ME Сербский (кириллица) — Черногория
3401 13313 ar-KW Арабский (Кувейт)
3409 13321 en-PH Английский (Республика Филиппины)
340a 13322 es-CL Испанский (Чили)
3801 14337 ar-AE Арабский (ОАЭ)
380a 14346 es-UY Испанский (Уругвай)
3c01 15361 ar-BH Арабский (Бахрейн)
3c0a 15370 es-PY Испанский (Парагвай)
4001 16385 ar-QA Арабская (Катар)
4009 16393 en-IN Английский — Индия
400a 16394 es-BO Испанский (Боливия)
4409 17417 en-MY Английский — Малайзия
440a 17418 es-SV Испанский (Сальвадор)
4809 18441 en-SG Английский — Сингапур
480a 18442 es-HN Испанский (Гондурас)
4c0a 19466 es-NI Испанский (Никарагуа)
500a 20490 es-PR Испанский (Пуэрто-Рико)
540a 21514 es-US Испанский — США
7c04 31748 zh-CHT Китайский (традиционное письмо)

MsgBox ( 0 , «Язык вашей операционной системы:» , _Language ())

Func _Language ()
Switch @OSLang
Case «0419» , «0819»
Return «Русский»
Case «0422»
Return «Украинский»
Case «0423»
Return «Белорусский»
Case «0437»
Return «Грузинский»
Case «082c»
Return «Азербайджанский»
Case «0443» , «0843»
Return «Узбекский»
Case «043f»
Return «Казахский»
Case «0444»
Return «Татарский»
Case «0440»
Return «Киргизский»
Case «0413» , «0813»
Return «Нидерландский»
Case «0409» , «0809» , «0c09» , «1009» , «1409» , «1809» , «1c09» , «2009» , «2409» , «2809» , «2c09» , «3009» , «3409»
Return «Английский»
Case «040c» , «080c» , «0c0c» , «100c» , «140c» , «180c»
Return «Французский»
Case «0407» , «0807» , «0c07» , «1007» , «1407»
Return «Немецкий»
Case «0410» , «0810»
Return «Итальянский»
Case «0414» , «0814»
Return «Норвежский»
Case «0416» , «0816»
Return «Португальский»
Case «040a» , «080a» , «0c0a» , «100a» , «140a» , «180a» , «1c0a» , «200a» , «240a» , «280a» , «2c0a» , «300a» , «340a» , «380a» , «3c0a» , «400a» , «440a» , «480a» , «4c0a» , «500a»
Return «Испанский»
Case «041d» , «081d»
Return «Шведский»
Case Else
Return «Не удалось определить язык OS, добавьте его в функцию»
EndSwitch
EndFunc

Объявление языка в HTML

Целевая аудитория: HTML кодеры, веб-разработчики (PHP, JSP, и т. д.), менеджеры веб-проектов, а также все, кто хочет лучше понимать, как объявлять язык текста на веб-странице.

Вопрос

Как установить язык содержимого моей 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 атрибут для установки языка документа или блока текста. Например, следующий код установит французский языком по умолчанию:

Когда XHTML 1.x или страницы Polyglot обрабатываются, как text/html , используйте оба атрибута lang и xml:lang вместе каждый раз, когда вы хотите объявить язык. Атрибут xml:lang — это стандартный способ объявления языковой информации в XML. Убедитесь, что значения обоих атрибутов идентичны.

Атрибут xml:lang не особо полезен для обработки HTML файлов, но он будет перекрывать значение lang атрибута каждый раз, когда вы обрабатываете документ, как XML. Атрибут lang разрешен синтаксисом XHTML и может быть распознан браузерами. Однако, когда используются другие синтаксические анализаторы XML (например, функция lang() в XSLT), вы не можете полагаться на то, что атрибут lang будет распознан.

Если вы обрабатываете ваш документ, как XML (то есть используете MIME type application/xhtml+xml ), то атрибут lang не нужен, будет достаточно атрибута xml:lang .

Что, если содержимое элемента и значения его атрибутов на разных языках?

Иногда язык текста в атрибутах и язык непосредственно контента элемента различаются. Например, в правом верхнем углу этой статьи расположен список ссылок на другие переводы данной страницы. Текст ссылки отображает язык целевой страницы, но связанный title атрибут содержит подсказку на языке текущей страницы:

Если ваш код выглядит, как указано ниже, то атрибут языка указывает, что испанский — не только язык контента, но и title текста. Это, очевидно, некорректно.

Вместо этого, перенесите языковой атрибут в другой элемент, как показано в данном примере, в котором span элемент наследует en язык по умолчанию, установленный у html элемента.

Что если нет подходящего элемента для того, чтобы прицепить атрибут языка?

Если вы хотите указать язык контента, но вокруг него нет никакой разметки, используйте такой элемент, как span или div . Вот пример:

You’d say that in Chinese as 中国科学院文献情报中心 .

Выбор значений языка

Чтобы быть уверенными, что юзер агенты распознают указанный вами язык, вам следует придерживаться стандартизированному подходу при указании значений атрибутов языка. Вам также необходимо подумать о том, как стандартизированно ссылаться на различные диалекты одного языка, например, такие, как американский и британский английский, которые существенно отличаются своим написанием и произношением.

Правила создания языковых атрибутов описываются 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 (схемы), связанной с данным документом – это никоим образом не указывает на непосредственно язык самого документа.

Илон Маск рекомендует:  Как работать с буфером обмена (clipboard)

Третье, иногда люди предполагают, что информация о естественном языке может быть получена из кодировки символов. Тем не менее, кодировка символов не позволяет однозначно идентифицировать естественный язык. Должно быть взаимно однозначное сопоставление между кодировкой и языком, чтобы это сработало, а его нет. Одна кодировка может быть использована многими языками, например Latin 1 (ISO-8859-1) используется и французским, и английским, а ещё многими другими языками. В дополнение, кодировка может отличаться в рамках одного языка, например арабский может использовать ‘Windows-1256’ или ‘ISO-8859-6’ или ‘UTF-8’.

Все эти примеры кодировок спорны, так как весь контент сегодня должен быть создан в UTF-8, который охватывает все, кроме самых редких, языки.

В некоторых текстах, таких, как арабский и иврит, отображаемый текст читается в основном справа налево, хотя числа и иностранные термины отображаются слева направо. Необходима разметка, такая, как dir атрибут, для объявления right-to-left содержания. И в некоторых случаях разметка необходима для правильного отображения двунаправленного текста, но это невозможно сделать с помощью разметки языка.

То же самое относится к направлению текста. Как и в случае с кодировками, не всегда существует соответствие между языком и текстом, в том числе его направлением. Например, азербайджанский может быть записан справа налево (арабская письменность) и слева направо (латиница и кириллица), соответственно код языка az может относится к обоим вариантам. Дополнительно, разметка направления текста применяет к тексту целый ряд различных значений, в то время, как язык является простым переключателем, который не соответствует поставленным задачам.

HTML :: Коды языков

– это специальные короткие алфавитные или цифровые коды, которые были разработаны для представления языков в обработке данных и коммуникациях.

В HTML 5 для указания кода требуемого языка используется один из наиболее известных стандартов ISO 639-1 , в котором используются сокращенные обозначения языков мира в виде двух латинских букв. Обычно коды языков указываются в качестве значения универсального атрибута lang для того, чтобы помочь браузерам и поисковым системам правильно обработать веб-страницу либо отдельные ее части (см. пример ниже).

В представленной таблице перечислены русские и английские названия всех доступных в стандарте ISO 639-1 языков, а также соответствующие им буквенные коды.

Коды языков в HTML

Этот стандарт определяет коды большинства языков:

  • ISO 639-1 (1998) содержит 2-буквенные сокращения;
  • ISO 639-2 (2002) содержит 3-буквенные сокращения;
  • ISO 639-3 (2007) — 3-буквенные сокращения;

Двухбуквенные коды в большинстве своём совпадают с кодами, используемыми в других классификаторах, например:

  • коды стран по ISO 3166-1,
  • коды валют по ISO 4217,
  • доменные имена верхнего уровня стран (ccTLD) в Интернете — с небольшими разночтениями.

ГОСТ 7.75-97

Межгосударственный стандарт ГОСТ 7.75-97 «Коды наименований языков» в основном (за небольшими расхождениями) соответствует ИСО 639 и содержит список наименований языков на русском и английском языках, трёхбуквенные коды на основе кириллического алфавита, трёхбуквенные коды на основе латинского алфавита, трёхсимвольные цифровые коды. Разработан Российской Государственной библиотекой и Техническим Комитетом ТК 191 «Научно-техническая информация, библиотечное и издательское дело». Внесен Госстандартом Российской Федерации. Принят Межгосударственным Советом по стандартизации, метрологии и сертификации (отчет Технического секретариата № 12-97 от 21 ноября 1997 г.). Дата введения в действие непосредственно в качестве государственного стандарта Российской Федерации: 01 января 1999 г. Изменен: 01 декабря 2000 г.(Изменение № 1).

В 2010 г. Российской Государственной библиотекой (Научно-исследовательский отдел поддержки форматов машиночитаемых данных) ведется работа по пересмотру ГОСТ 7.75-97 на предмет соответствия ISO-639 согласно плану национальной системы стандартизации на 2009 г.

Согласно Изменению № 1, принятому Межгосударственным Советом по стандартизации, метрологии и сертификации (Протокол № 17 от 22 июня 2000 г.), ГОСТ 7.75-97 является стандартом в следующих государствах:

ГОСТ 7.75-97 устанавливает буквенные и цифровые обозначения наименований языков в кодированной форме, единые для различных систем обработки информации, ее хранения и обмена.

Всего предусмотрено 442 кода для 473 наименований языков на русском (из них альтернативных наименований — 31), тогда как ISO 639-2 предусмартивает 545 кодов для 563 наименований на английском языке, включая альтернативные.

Коды предназначаются для использования библиотеками, информационными службами и издательствами в целях унифицированного обозначения языка документа, что особенно важно при обмене информацией в автоматизированных информационных системах. Устанавливаемые стандартом коды также могут быть приняты лексикографами в любых случаях использования кодированной формы наименования языка.

Простой способ добавить несколько языков на сайт

Введение

В рамках своего проекта я столкнулся с задачей сделать текущий сайт компании мультиязычным. Более точно: создать возможность быстро и просто перевести сайт на английский, польский, итальянский и т.д.

Поиск в интернете показал, что существующие варианты создания мультиязычного сайта крайне громоздки и неэффективны. Подключать сторонние библиотеки зачастую проблемно, а советы по написанию своего решения связаны с большим объёмом однотипной работы.

Написание альтернативного метода смены локали заняло у меня всего несколько часов, а поддержание семантического единства и вовсе сводит к минимуму изменения при последующем добавлении новых страниц.

Исходные файлы примера сайта с автоматическим переводом можно скачать на github

Существующие альтернативы

Когда задача только появилась в разработке, первым шагом, разумеется, стало исследование готовых решений и советов на форумах о том, как наиболее просто и правильно реализовать возможность смены локали. Самые популярные интернет ресурсы для создания мультиязычных сайтов предлагаю следующие решения:

    Создание дублирующих html блоков с текстом на разных языках, из которых только один оставляется активным для пользователя, а остальные прячутся (display: none).

Очевидным минусом такого способа является невероятно быстрое увеличение кода и мгновенная потеря читабельности и поддерживаемости кода. Кроме того, такое решение является уязвимым для ошибок в тексте и масштабируемости с точки зрения увеличения количества языков (далее локалей).

Подключение стороннего сервиса машинного перевода (такого как google translate) с большим количеством встроенных языков и минимальными изменениями в исходном коде страницы.

Когда задача только появилась в task list мы использовали этот способ как самый очевидный и удобный, однако опыт работы с клиентами – носителями языка из соединённых штатов и Израиля показал, что машинный перевод часто допускает ошибки при смене локали, а пользователи сайтов крайне резко реагируют на подобные ошибки перевода. В конце концом стратегические партнеры настойчиво посоветовали сменить способ изменения локали, и от этого способа пришлось отказаться.

Смена языка при помощи возможностей js или сторонних библиотек/фреймворков, таких как jQuery, основанных на поиске и прямом изменении DOM элементов.

Особенностью такого подхода является поиск огромного количества js селекторов, текст внутри которых необходимо заменить. Такой подход может хорошо работать для небольших проектов, однако при увеличении количества страниц пропорционально увеличивается количества функций замены текста, что ведет к потере эффективности в больших проектах.

Альтернативное решение

Основой подхода, который я предлагаю, как альтернативу существующим способам является, как ни странно не база, написанного мной js кода, которая является в целом тривиальной, а правило оформление селекторов, поддерживание которого позволяет гибко и просто настроить перевод любого количество страниц на любой язык без изменения кодовой базы и излишнего дублирования данных.

В изменении локали при альтернативном подходе выделяются три основных игрока:

  • html страница с установленным правилом оформления селекторов блоков с текстом
  • общий js сервис, основная задача которого состоит в замене textContet DOM элементов согласно правилу оформления селекторов
  • JSON файл локали, содержащий в себе структуру с содержанием html блоков на всех языках, используемых при смене локали

Соблюдение правила оформления селекторов изменяемых элементов позволяет избавиться от необходимости менять js код сервиса смены локали, что является большим плюсом с точки зрения масштабируемости проекта.

Правило построения селекторов

Большинство методов смены локали страницы (среди приведенных альтернатив 1,3 и частично 2) предполагают необходимость каким-либо способом «пометить» изменяемый html блок, как правильно при помощи изменении поля class. Этот же механизм использует и альтернативный вариант.

Первым шагом оформления селекторов является разделение исходной страницы на функциональные блоки верхнего уровня. На странице нашей компании — это блоки:
Каждому блоку даем условное название, например,

Меню (menu)

Визитная карточка (home)

Пример работы сервиса (example)

Партнеры (clients)

Область применения сервиса (userfulBlock)

Примеры работы сервиса (examples)

Контакты и обратная связь (contacts)

После этого мы далее разбиваем каждый блок на более мелкие функциональные блоки, как это делается при применении библиотеки React.

Выделенным областям присваиваем свои имена и получаем структуру вида:

menu

home main, description, buttons

example statistics, headline, description, buttons

clients buttons

userfulBlock headline, userfulCards, elseBlock

examples headline, cards

contacts headline, description, contacts, form

Далее продолжаем эту процедуру пока не достигнем блоков, содержащих исходный текст.

В итоге получаем готовую структуру JSON файла локали, содержащий все необходимые тексты для изменения языка. Также, исходя из этого алгоритма определяется правило построения селекторов:

Каждый селектор начинается с ключевого слова locale и далее, согласно стилю dash case добавляются имена всех родительских блоков включая блок, содержащий исходный текст, например, описание примера в первой карточке будем иметь селектор locale-example-cards-description

Пример полученного файла json локали можно увидеть на github

Сервис смены локали

Сервис смены локали представляет собой модуль, содержащий функцию загрузки файла локали

с необязательным параметром defLang – язык установленные после загрузки локали (язык по умолчанию), а также основную функцию изменения текущей локали

с указанием требуемого языка.

Функция загрузки локали

Функция загрузки локали использует стандартный XMLHttpRequest запрос за данными. Использование именного этого стандарта обусловлено желанием минимизировать количество зависимостей и простотой использования запроса. После получения файла локали в консоль выводится оповещение о получении данных, а также вызывается функция изменения локали на язык по умолчанию в случае, если этот язык был передан в функцию как необязательный параметр. Ознакомиться с кодом функции можно тут:

Функция изменения локали

Типы данных

Представляет собой рекурсивную функцию, основной задачей которой являет обход объекта, содержащий локаль страницы (используя DFS алгоритм). Использование рекурсии при построении функции позволяет закодировать алгоритм максимально просто и лаконично, однако слишком большая глубина рекурсии может привести к переполнению стека. Особенности обхода данной проблемы можно найти на одноименном форуме, либо же ознакомившись с соответствующими статьями на habr.com.

В основе работы рекурсивной функции заложена обработка 4 типов данных:

    поле содержащее строку исходного текста, используемого для добавления на страницу.
    Например:

поле содержащее массив строк исходного текста, используемого для добавления на
страницу. Такое поле необходимо для создания списков, элементы которых могут менять
порядок. Например:

Вложенная структура данных, содержащая свой набор полей, необходимая для построения
архитектуры страницы. Например:

Массив вложенных структур данных, с одинаковым набором используемых полей. Такие
массивы используются, когда появляются списки одинаковых блоков кода, например,
карточек участников команды, или портфолио или тарифов оказываемых услуг.
Например:

На сайте это может выглядеть так:

Функции обработки

Обработка типа данных с исходным текстом осуществляется отдельной функцией

Принимающей на вход название поля структуры с исходным текстом, текущий объект локали, содержащий текст, который нужно добавить и текущее имя селектора, необходимое для поиска DOM элемента.

Обработка массива строк с исходным текстом также осуществляется отдельной функцией

Сигнатура и тело этой функции ничем не отличается от прошлой за исключением того, что элементам DOM присваиваются элементы из массива.

Основная рекурсивная функция замены текста занимается классификацией текущего поля локали в один 4 приведенных выше типов и соответствующей реакцией на полученный тип:

На вход эта функция принимает текущую языковую локаль и корневой селектор (в данном случае “locale”). Далее при обнаружении вложенной структуры или массива структур функция будет рекурсивно вызывать саму себя, соответствующе изменяя входные параметры.

Основным плюсом альтернативного подхода является то, что описанный выше сервис не требует никаких функциональных изменений, и добавляется как js файл, использующий созданный вами файл локали.

Заключение

Суть описанного выше подхода заключается в зафиксированном правиле описания селекторов и построения файла локали. Благодаря этому появляется уникальная возможность перевода любых страниц из коробки и переиспользования уже переведенного материала.

Описанный выше алгоритм построения селекторов не является обязательным и критичным для работы сервиса. Сервис является гибким для расширения и добавления новых методов и алгоритмов, а также для построения имен селекторов и структуры json локали. Возможным плюсом будет являться сохранение локали в cookie браузера и изменение локали, в зависимости от местоположения пользователя сервиса.

Исходные файлы примера сайта с автоматическим переводом можно скачать на github.

Какую локаль правильно указывать в атрибуте lang тега html?

Правильный, минимально достаточный вариант:

Суффикс -RU означает «тот русский, на котором говорят именно в России» и конкретно для русского языка является избыточным.

Если страница релевантна запросу и при этом на этом же сайте нет вариантов этого же текста на других диалектах, едва ли имеет смысл не показывать эту страницу пользователю только на том основании, что на ней используется другой диалект того же языка. Для владельца сайта в этом тем более нет смысла.

Различия между диалектами одного языка обычно не слишком существенны. (Украинский язык, насколько мне известно, самостоятелен [код «uk» согласно ISO 639-1] и диалектом русского не является.)

Пожалуй, определённая логика в этом есть, но учитывая, что она носит неоднозначный характер (только самому пользователю доподлинно известно, что именно он ищет на самом деле), а также тот факт, что на многих сайтах язык не указан вообще (что не означает, что контент соответствующих страниц не является качественным/релевантным), маловероятно, что поисковики снабжены столь тонкими механизмами. Более того, не факт, что поисковики используют атрибут lang как таковой.

В этом контексте были бы полезны комментарии официальных представителей основных поисковых сервисов, но вряд ли мы услышим здесь таковые.

Linux.yaroslavl.ru

В этом разделе документа обсуждаются два важных вопроса интернационализации HTML: задание языка (атрибут lang ) и направления (атрибут dir ) текста в документе.

8.1 Задание языка содержимого: атрибут lang

Информация о языке, указанная с помощью атрибута lang , может использоваться агентом пользователя для управления генерацией изображения различными способами. Некоторые ситуации, в которых указываемая автором информация а языке, может быть полезна:

  • Помощь поисковым машинам
  • Помощь синтезаторам речи
  • Помощь агентам пользователей в выборе вариантов глифов для высококачественной типографии
  • Помощь агенту пользователя в выборе набора кавычек
  • Помощь агенту пользователя в вопросах переноса, лигатур и интервалов
  • Помощь программа проверки грамматики и орфографии

Атрибут lang указывает код содержимого элемента и значений атрибутов; относится ли он к данному атрибуту, зависит от синтаксиса и семантики атрибута и от операции.

Атрибут lang предназначен для того, чтобы позволить агентам пользователей более осмысленно генерировать изображение на основе принятой культурной практики для данного языка. Это не подразумевает, что агенты пользователей должны генерировать символы, не являющиеся типичными для конкретного языка, менее осмысленным способом; агенты пользователей должны пытаться сгенерировать се символы , независимо от значения, указанного в атрибуте lang .

Например, если в русском тексте должен появиться символ греческого алфавита:

агент пользователя (1) должен попытаться сгенерировать русский текст соответствующим образом (например, в соответствующих кавычках) и (2) попытаться сгенерировать символ γ, даже если это не русский символ.

Дополнительную информацию см. в разделе о неотображаемых символах.

Значением атрибута lang является код языка, идентифицирующий естественный разговорный язык, который устно, письменно или иным образом используется для передачи информации между людьми. Компьютерные языки явным образом исключены из кодов языков.

В документе [RFC1766] определены и описаны все коды языков, которые должны использоваться в документах на языке HTML.

Кратко говоря, коды языков состоят из первичного кода и ряда подкодов, который может быть пустым:

Вот несколько примеров кодов языков:

  • «en»: английский
  • «en-US»: американская версия английского.
  • «en-cockney»: кокни (диалект английского).
  • «i-navajo»: навахо (язык американских индейцев).
  • «x-klingon»: Первичный код «x» обозначает экспериментальный код языка

Двухбуквенные первичные коды зарезервированы для сокращений языков по стандарту [ISO639]. Сюда входят коды fr (французский), de (немецкий), it (итальянский), nl (голландский), el (греческий), es (испанский), pt (португальский), ar (арабский), he (иврит), ru (русский), zh (китайский), ja (японский), hi (хинди), ur (урду) и sa (санскрит).

Любой двухбуквенный подкод считается кодом страны в стандарте [ISO3166].

8.1.2 Наследование кодов языков

Элемент наследует информацию о коде языка в следующем порядке старшинства (от высшего к низшему):

  • Атрибут lang , установленный для самого элемента.
  • Самый близкий родительский элемент, для которого установлено значение атрибута lang (то есть атрибут lang наследуется).
  • Заголовок HTTP «Content-Language» (который может конфигурироваться на сервере). Например:
  • Значения по умолчанию и настройки агента пользователя.

В этом примере первичным языком документа является французский («fr»). Один абзац объявлен на испанском языке («es»), после чего язык снова становится французским. В следующий абзац включена японская фраза («ja»), после чего язык опять изменяется на французский.

8.1.3 Интерпретация кодов языков

В контексте HTML код языка должен интерпретироваться агентами пользователя как иерархия знаков, а не один знак. Если агент пользователя генерирует изображение в соответствии с информацией о языке (скажем, сравнивая языковые коды в таблицах стилей и значения атрибута lang ), он всегда должен находить точное соответствие, но должен также принимать во внимание первичные коды. Таким образом, если значение атрибута lang «en-US» установлено для элемента HTML , агент пользователя должен сначала выбрать информацию о стиле, совпадающую с «en-US», а затем сгенерировать более общее значение «en».

Примечание. Иерархия кодов языков не гарантирует понимания всех языков с общими префиксами людьми, бегло говорящими на одном или нескольких из этих языков. Она помогает пользователю запросить эту общность, когда для пользователя она является истинной.

8.2 Указание направления текста и таблиц: атрибут dir

Определения атрибутовdir = LTR | RTL [CI] Этот атрибут задает основное направление нейтрального в смысле направления текста (например, текста, который не наследует направленность, как определено в [UNICODE]) и направление таблиц. Возможные значения:

  • LTR : Слева направо.
  • RTL : Справа налево.
Илон Маск рекомендует:  Атрибут target в HTML

Кроме задания языка документа с помощью атрибута lang , авторы могут указать основное направление (слева направо или справа налево) частей текста, таблицы и т.д. Это делается с помощью атрибута dir .

Спецификация [UNICODE] назначает направление символам и определяет (сложный) алгоритм для определения соответствующего направления текста. Если документ не содержит отображаемых справа налево символов, агент пользователя не должен использовать двунаправленный алгоритм [UNICODE]. Если документ содержит такие символы, и если агент пользователя и отображает, он должен использовать двунаправленный алгоритм.

Хотя в Unicode определены специальные символы, отвечающие за направление текста, HTML предлагает конструкции разметки высшего уровня, выполняющие те же функции: атрибут dir (не спутайте с элементом DIR ) и элемент BDO . Таким образом, чтобы привести цитату на иврите, проще написать

чем с эквивалентными ссылками Unicode:

Агенты пользователей не должны использовать атрибут lang для определения направления текста.

Атрибут dir наследуется, и его можно переопределить. Подробнее см. в разделе о наследовании информации о направлении текста.

8.2.1 Введение в двунаправленный алгоритм

В следующем примере проиллюстрировано ожидаемое поведение двунаправленного алгоритма. В нем показаны английский текст слева направо и текст на иврите справа налево.

Рассмотрите следующий текст:

Символы в этом примере (и во всех реплицированных примерах) хранятся в компьютере в том же виде, в каком они отображаются здесь: первый символ — «а», второй — «н», последний «6».

Предположим, для содержащего этот абзац документа определен английский язык. Это означает, что основным направлением является направление слева направо. Корректное представление этой строки:

Строки точек указывают структуру предложения: основным языком является английский, но встроены некоторые элементы на иврите. Для получения корректного представления не нужно никакой дополнительной разметки, поскольку фрагменты на иврите корректно обращаются агентами пользователя, применяющими двунаправленный алгоритм.

С другой стороны, если для документа определен язык иврит, основным будет направление справа налево. Корректное представление, таким образом, будет:

В это случае все предложение представляется справа налево, а фрагменты на английском языке обращаются двунаправленным алгоритмом.

8.2.2 Наследование информации о направлении текста

Для двунаправленного алгоритма Unicode необходимо основное направление текста для текстовых блоков. Чтобы указать основное направление элементов уровня блока, установите для этого элемента атрибута dir . Значением атрибута dir , устанавливаемым по умолчанию, является «ltr» (слева направо).

Если атрибут dir установлен для элемента уровня блока, он действует на протяжении всего элемента и для всех вложенных элементов уровня блока. Установка атрибута dir для вложенного элемента имеет приоритет по отношению к наследуемому значению.

Чтобы установить основное направление текста для всего документа, установите атрибут dir в элементе HTML .

Встроенные элементы, с другой стороны, не наследуют атрибут dir . Это означает, что встроенный элемент без атрибута dir не открывает дополнительного уровня внедрения в соответствии с двунаправленным алгоритмом. (Здесь элементом считается элемент уровня блока или встроенный элемент на основе представления по умолчанию. Помните, что элементы INS и DEL могут быть элементами уровня блока или встраиваемыми элементами в зависимости от контекста.)

8.2.3 Установка направления внедренного текста

Двунаправленный алгоритм [UNICODE] автоматически обращает последовательности внедренных символов в соответствии с наследуемым направлением (как показано в предыдущих примерах). Однако в общем в расчет принимается только один уровень внедрения. Для того, чтобы изменения направления достигали дополнительных уровней, используйте атрибут dir во встроенном элементе.

Рассмотрите текст предыдущего примера:

Предположим, основным языком для документа, содержащего этот абзац, является английский. В этом английском предложении содержится фрагмент на иврите, продолжающийся от ИВРИТ2 до ИВРИТ4, и в нем содержится англоязычный фрагмент (английский3). Таким образом, желаемое представление текста:

Для изменения направления текста двух внедренных фрагментов необходимо задать дополнительную информацию, что мы и делаем, явно разделяя второе внедрение. В этом примере мы используем для разметки текста элемент SPAN и атрибут dir :

Авторы также могут использовать для изменения направления нескольких внедренных фрагментов символы Unicode. Для указания направления слева направо во внедряемом фрагменте окружите текст символами LEFT-TO-RIGHT EMBEDDING («LRE», шестнадцатеричный код 202A) и POP DIRECTIONAL FORMATTING («PDF», шестнадцатеричный код 202C). Для указания направления справа налево во внедряемом фрагменте окружите текст символами RIGHT-TO-LEFT EMBEDDING («RTE», шестнадцатеричный код 202B) и PDF.

Использование разметки направленности HTML с символами Unicode. Авторы и разработчики средств создания HTML-документов должны знать о возможных конфликтах, возникающих при использовании атрибута dir со встроенными элементами (включая BDO ) одновременно с соответствующими символами форматирования [UNICODE]. Предпочтительнее использовать только один метод. Метод с использованием разметки гарантирует структурную целостность документа и устраняет некоторые проблемы с редактированием двунаправленного текста HTML в простых текстовых редакторах, но некоторое программное обеспечение может лучше использовать символы [UNICODE]. Если используются оба метода, следует хорошо позаботиться о правильном вложении разметки и символов, иначе результаты могут быть непредсказуемыми.

8.2.4 Приоритет над двунаправленным алгоритмом: элемент BDO

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутовdir = LTR | RTL [CI] Этот обязательный атрибут указывает основное направление текстового содержимого элемента. Это направление имеет приоритет по отношению к наследуемому направлению символов, как определено в [UNICODE]. Возможные значения:

  • LTR : Направление слева направо.
  • RTL : Направление справа налево.

Двунаправленного алгоритма и атрибута dir обычно достаточно для управления изменением направления внедренного текста. Однако в некоторых ситуациях двунаправленный алгоритм может привести к некорректному представлению. Элемент BDO позволяет авторам отключать двунаправленный алгоритм для выбранных фрагментов текста.

Рассмотрите документ с тем же текстовым фрагментом:

но предположите, что этот текст уже представлен в нужном порядке. Одной причиной этого может быть то, что стандарт MIME ([RFC2045], [RFC1556]) благоприятствует визуальному порядку, то есть последовательности с направлением справа налево вставляются в байтовый поток с направлением справа налево. В электронной почте это может форматироваться, включая перевод строки, например:

Это конфликтует с двунаправленным алгоритмом [UNICODE], поскольку этот алгоритм инвертирует 2ТИРВИ, 4ТИРВИи 6ТИРВИ во второй раз, так что слова на иврите отображаются слева направо, а не справа налево.

В этом случае решением будет переопределить действие двунаправленного алгоритма, поместив выдержку Email в элемент PRE (для сохранения переводов строки) и каждую строку, для которой атрибут dir установлен в LTR , в элемент BDO :

Двунаправленному алгоритму выдается команда «Я должен быть слева направо!», что приведет к нужному представлению:

Элемент BDO следует использовать в сценариях, где необходим абсолютный контроль над последовательностью (например, многоязыковые номера частей). Атрибут dir для этого элемента является обязательным.

Авторы могут также использовать специальные символы Unicode для того, чтобы избежать использования двунаправленного алгоритма — LEFT-TO-RIGHT OVERR >

Примечание. Помните, что при использовании атрибута dir во встроенных элементах (включая BDO ) одновременно с соответствующими символами форматирования [UNICODE], могут возникать конфликты.

Двунаправленность и кодировка символов В соответствии с [RFC1555] и [RFC1556] существуют специальные соглашения относительно использования значений параметра «charset» для указания обработки двунаправленности в почте MIME, в частности для отличия визуальной, явной и неявной направленности. Значение параметра «ISO-8859-8» (для иврита) обозначает визуальную кодировку, «ISO-8859-8-i» обозначает неявную двунаправленность, а «ISO-8859-8-e» обозначает явную направленность.

Поскольку HTML использует двунаправленный алгоритм Unicode, соответствующие документы, использующие кодировку ISO 8859-8, должны помечаться как «ISO-8859-8-i». Явное управление направлением в HTML также возможно, но его нельзя выразить в ISO 8859-8, поскольку не следует использовать «ISO-8859-8-e».

Значение «ISO-8859-8» подразумевает, что документ отформатирован визуально, и некоторая разметка будет использоваться неправильно (например, TABLE с выравниванием по правому краю без разбивки строк), чтобы гарантировать правильное отображение для более старых агентов пользователя, не поддерживающих двунаправленность. Такие документы не удовлетворяют настоящей спецификации. При необходимости их можно изменить (и одновременно они будут корректно отображаться в старых версиях агентов пользователей), добавив, где нужно, разметку BDO . Вопреки сказанному в [RFC1555] и [RFC1556], кодировка ISO-8859-6 (арабская) не представляет визуального порядка.

8.2.5 Ссылки на символы для управления направлением и объединением

Поскольку иногда возникает двусмысленность относительно некоторых символов (например, символов пунктуации), спецификация [UNICODE] включает символы для правильного определения назначения. Спецификация Unicode также включает некоторые символы для управления объединением при необходимости (например, в некоторых ситуациях с арабскими символами). HTML 4.0 включает для этих символов ссылки на символы.

Следующее DTD определяет представление некоторых объектов направления:

Объект zwnj используется для блокировки объединения в тех контекстах, где объединение произойдет, но оно происходить не должно. Объект zwj имеет обратное действие; он производит объединение в случае, когда оно не предполагается, но должно произойти. Например, арабская буква «HEH» используется для сокращения «Hijri», названия исламской системы летоисчисления. Поскольку отдельный иероглиф «HEH» в арабской письменности выглядит как цифра пять, для того, чтобы не путать букву «HEH» с последней цифрой пять в годе, используется исходная форма буквы «HEH». Однако, нет последующего контекста (например, буквы для объединения), с которым можно объединить «HEH». Символ zwj предоставляет такой контекст.

Точно так же в персидских текстах буква может иногда объединяться с последующей буквой, в то время как в рукописном тексте этого быть не должно. Символ zwnj используется для блокировки объединения в таких случаях.

Символы порядка, lrm и rlm , используются для определения направления нейтральных по отношению к направлению символов. Например, если двойные кавычки ставятся между арабской (справа налево) и латинской (слева направо) буквами, направление кавычек неясно (относятся ли они к арабскому или к латинскому тексту?). Символы lrm и rlm имеют свойство направления, но не имеют свойств ширины и разделения слов/строк. Подробнее см. [UNICODE].

Отражение глифов символов. Вообще двунаправленный алгоритм не отражает глифы символов и не влияет на них. Исключением являются такие символы как скобки (см. [UNICODE], таблица 4-7). Если отражение желательно, например, для египетских иероглифов, греческих знаков или специальных эффектов дизайна, можно сделать это с помощью стилей.

8.2.6 Таблице стилей и двунаправленность

Вообще использование таблиц стилей для изменения визуального представления элемента с уровня блока до встроенного и наоборот используется в прямом направлении. Однако, поскольку двунаправленный алгоритм использует различия встроенных элементов/элементов уровня блока, во время преобразования нужно быть внимательным.

Если встроенный элемент, не имеющий атрибута dir, преобразуется в стиль элемента уровня блока с помощью таблицы стилей, для определения основного направления блока он наследует атрибут dir от ближайшего родительского элемента блока.

Если элемент блока, не имеющий атрибута a dir, преобразуется к стилю встроенного элемента с помощью таблицы стилей, результирующее представление должно быть эквивалентным, в терминах двунаправленного форматирования, форматированию, получаемому путем явного добавления атрибута dir (которому назначено унаследованное значение) преобразованному элементу.

8 Информация о языке и направление текста

В этом разделе документа обсуждаются два важных вопроса интернационализации HTML: задание языка (атрибут lang ) и направления (атрибут dir ) текста в документе.

8.1 Задание языка содержимого: атрибут lang

Информация о языке, указанная с помощью атрибута lang , может использоваться агентом пользователя для управления генерацией изображения различными способами. Некоторые ситуации, в которых указываемая автором информация а языке, может быть полезна:

  • Помощь поисковым машинам
  • Помощь синтезаторам речи
  • Помощь агентам пользователей в выборе вариантов глифов для высококачественной типографии
  • Помощь агенту пользователя в выборе набора кавычек
  • Помощь агенту пользователя в вопросах переноса, лигатур и интервалов
  • Помощь программа проверки грамматики и орфографии

Атрибут lang указывает код содержимого элемента и значений атрибутов; относится ли он к данному атрибуту, зависит от синтаксиса и семантики атрибута и от операции.

Атрибут lang предназначен для того, чтобы позволить агентам пользователей более осмысленно генерировать изображение на основе принятой культурной практики для данного языка. Это не подразумевает, что агенты пользователей должны генерировать символы, не являющиеся типичными для конкретного языка, менее осмысленным способом; агенты пользователей должны пытаться сгенерировать се символы , независимо от значения, указанного в атрибуте lang .

Например, если в русском тексте должен появиться символ греческого алфавита:

агент пользователя (1) должен попытаться сгенерировать русский текст соответствующим образом (например, в соответствующих кавычках) и (2) попытаться сгенерировать символ γ, даже если это не русский символ.

Дополнительную информацию см. в разделе о неотображаемых символах.

Значением атрибута lang является код языка, идентифицирующий естественный разговорный язык, который устно, письменно или иным образом используется для передачи информации между людьми. Компьютерные языки явным образом исключены из кодов языков.

В документе [RFC1766] определены и описаны все коды языков, которые должны использоваться в документах на языке HTML.

Кратко говоря, коды языков состоят из первичного кода и ряда подкодов, который может быть пустым:

Вот несколько примеров кодов языков:

  • «en»: английский
  • «en-US»: американская версия английского.
  • «en-cockney»: кокни (диалект английского).
  • «i-navajo»: навахо (язык американских индейцев).
  • «x-klingon»: Первичный код «x» обозначает экспериментальный код языка

Двухбуквенные первичные коды зарезервированы для сокращений языков по стандарту [ISO639]. Сюда входят коды fr (французский), de (немецкий), it (итальянский), nl (голландский), el (греческий), es (испанский), pt (португальский), ar (арабский), he (иврит), ru (русский), zh (китайский), ja (японский), hi (хинди), ur (урду) и sa (санскрит).

Любой двухбуквенный подкод считается кодом страны в стандарте [ISO3166].

8.1.2 Наследование кодов языков

Элемент наследует информацию о коде языка в следующем порядке старшинства (от высшего к низшему):

  • Атрибут lang , установленный для самого элемента.
  • Самый близкий родительский элемент, для которого установлено значение атрибута lang (то есть атрибут lang наследуется).
  • Заголовок HTTP «Content-Language» (который может конфигурироваться на сервере). Например:
  • Значения по умолчанию и настройки агента пользователя.

В этом примере первичным языком документа является французский («fr»). Один абзац объявлен на испанском языке («es»), после чего язык снова становится французским. В следующий абзац включена японская фраза («ja»), после чего язык опять изменяется на французский.

8.1.3 Интерпретация кодов языков

В контексте HTML код языка должен интерпретироваться агентами пользователя как иерархия знаков, а не один знак. Если агент пользователя генерирует изображение в соответствии с информацией о языке (скажем, сравнивая языковые коды в таблицах стилей и значения атрибута lang ), он всегда должен находить точное соответствие, но должен также принимать во внимание первичные коды. Таким образом, если значение атрибута lang «en-US» установлено для элемента HTML , агент пользователя должен сначала выбрать информацию о стиле, совпадающую с «en-US», а затем сгенерировать более общее значение «en».

Примечание. Иерархия кодов языков не гарантирует понимания всех языков с общими префиксами людьми, бегло говорящими на одном или нескольких из этих языков. Она помогает пользователю запросить эту общность, когда для пользователя она является истинной.

8.2 Указание направления текста и таблиц: атрибут dir

Определения атрибутовdir = LTR | RTL [CI] Этот атрибут задает основное направление нейтрального в смысле направления текста (например, текста, который не наследует направленность, как определено в [UNICODE]) и направление таблиц. Возможные значения:

  • LTR : Слева направо.
  • RTL : Справа налево.

Кроме задания языка документа с помощью атрибута lang , авторы могут указать основное направление (слева направо или справа налево) частей текста, таблицы и т.д. Это делается с помощью атрибута dir .

Спецификация [UNICODE] назначает направление символам и определяет (сложный) алгоритм для определения соответствующего направления текста. Если документ не содержит отображаемых справа налево символов, агент пользователя не должен использовать двунаправленный алгоритм [UNICODE]. Если документ содержит такие символы, и если агент пользователя и отображает, он должен использовать двунаправленный алгоритм.

Хотя в Unicode определены специальные символы, отвечающие за направление текста, HTML предлагает конструкции разметки высшего уровня, выполняющие те же функции: атрибут dir (не спутайте с элементом DIR ) и элемент BDO . Таким образом, чтобы привести цитату на иврите, проще написать

чем с эквивалентными ссылками Unicode:

Агенты пользователей не должны использовать атрибут lang для определения направления текста.

Атрибут dir наследуется, и его можно переопределить. Подробнее см. в разделе о наследовании информации о направлении текста.

8.2.1 Введение в двунаправленный алгоритм

В следующем примере проиллюстрировано ожидаемое поведение двунаправленного алгоритма. В нем показаны английский текст слева направо и текст на иврите справа налево.

Рассмотрите следующий текст:

Символы в этом примере (и во всех реплицированных примерах) хранятся в компьютере в том же виде, в каком они отображаются здесь: первый символ — «а», второй — «н», последний «6».

Предположим, для содержащего этот абзац документа определен английский язык. Это означает, что основным направлением является направление слева направо. Корректное представление этой строки:

Строки точек указывают структуру предложения: основным языком является английский, но встроены некоторые элементы на иврите. Для получения корректного представления не нужно никакой дополнительной разметки, поскольку фрагменты на иврите корректно обращаются агентами пользователя, применяющими двунаправленный алгоритм.

С другой стороны, если для документа определен язык иврит, основным будет направление справа налево. Корректное представление, таким образом, будет:

В это случае все предложение представляется справа налево, а фрагменты на английском языке обращаются двунаправленным алгоритмом.

8.2.2 Наследование информации о направлении текста

Для двунаправленного алгоритма Unicode необходимо основное направление текста для текстовых блоков. Чтобы указать основное направление элементов уровня блока, установите для этого элемента атрибута dir . Значением атрибута dir , устанавливаемым по умолчанию, является «ltr» (слева направо).

Если атрибут dir установлен для элемента уровня блока, он действует на протяжении всего элемента и для всех вложенных элементов уровня блока. Установка атрибута dir для вложенного элемента имеет приоритет по отношению к наследуемому значению.

Чтобы установить основное направление текста для всего документа, установите атрибут dir в элементе HTML .

Встроенные элементы, с другой стороны, не наследуют атрибут dir . Это означает, что встроенный элемент без атрибута dir не открывает дополнительного уровня внедрения в соответствии с двунаправленным алгоритмом. (Здесь элементом считается элемент уровня блока или встроенный элемент на основе представления по умолчанию. Помните, что элементы INS и DEL могут быть элементами уровня блока или встраиваемыми элементами в зависимости от контекста.)

Илон Маск рекомендует:  Что такое код iis метабаза

8.2.3 Установка направления внедренного текста

Двунаправленный алгоритм [UNICODE] автоматически обращает последовательности внедренных символов в соответствии с наследуемым направлением (как показано в предыдущих примерах). Однако в общем в расчет принимается только один уровень внедрения. Для того, чтобы изменения направления достигали дополнительных уровней, используйте атрибут dir во встроенном элементе.

Рассмотрите текст предыдущего примера:

Предположим, основным языком для документа, содержащего этот абзац, является английский. В этом английском предложении содержится фрагмент на иврите, продолжающийся от ИВРИТ2 до ИВРИТ4, и в нем содержится англоязычный фрагмент (английский3). Таким образом, желаемое представление текста:

Для изменения направления текста двух внедренных фрагментов необходимо задать дополнительную информацию, что мы и делаем, явно разделяя второе внедрение. В этом примере мы используем для разметки текста элемент SPAN и атрибут dir :

Авторы также могут использовать для изменения направления нескольких внедренных фрагментов символы Unicode. Для указания направления слева направо во внедряемом фрагменте окружите текст символами LEFT-TO-RIGHT EMBEDDING («LRE», шестнадцатеричный код 202A) и POP DIRECTIONAL FORMATTING («PDF», шестнадцатеричный код 202C). Для указания направления справа налево во внедряемом фрагменте окружите текст символами RIGHT-TO-LEFT EMBEDDING («RTE», шестнадцатеричный код 202B) и PDF.

Использование разметки направленности HTML с символами Unicode. Авторы и разработчики средств создания HTML-документов должны знать о возможных конфликтах, возникающих при использовании атрибута dir со встроенными элементами (включая BDO ) одновременно с соответствующими символами форматирования [UNICODE]. Предпочтительнее использовать только один метод. Метод с использованием разметки гарантирует структурную целостность документа и устраняет некоторые проблемы с редактированием двунаправленного текста HTML в простых текстовых редакторах, но некоторое программное обеспечение может лучше использовать символы [UNICODE]. Если используются оба метода, следует хорошо позаботиться о правильном вложении разметки и символов, иначе результаты могут быть непредсказуемыми.

8.2.4 Приоритет над двунаправленным алгоритмом: элемент BDO

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутовdir = LTR | RTL [CI] Этот обязательный атрибут указывает основное направление текстового содержимого элемента. Это направление имеет приоритет по отношению к наследуемому направлению символов, как определено в [UNICODE]. Возможные значения:

  • LTR : Направление слева направо.
  • RTL : Направление справа налево.

Двунаправленного алгоритма и атрибута dir обычно достаточно для управления изменением направления внедренного текста. Однако в некоторых ситуациях двунаправленный алгоритм может привести к некорректному представлению. Элемент BDO позволяет авторам отключать двунаправленный алгоритм для выбранных фрагментов текста.

Рассмотрите документ с тем же текстовым фрагментом:

но предположите, что этот текст уже представлен в нужном порядке. Одной причиной этого может быть то, что стандарт MIME ([RFC2045], [RFC1556]) благоприятствует визуальному порядку, то есть последовательности с направлением справа налево вставляются в байтовый поток с направлением справа налево. В электронной почте это может форматироваться, включая перевод строки, например:

Это конфликтует с двунаправленным алгоритмом [UNICODE], поскольку этот алгоритм инвертирует 2ТИРВИ, 4ТИРВИи 6ТИРВИ во второй раз, так что слова на иврите отображаются слева направо, а не справа налево.

В этом случае решением будет переопределить действие двунаправленного алгоритма, поместив выдержку Email в элемент PRE (для сохранения переводов строки) и каждую строку, для которой атрибут dir установлен в LTR , в элемент BDO :

Двунаправленному алгоритму выдается команда «Я должен быть слева направо!», что приведет к нужному представлению:

Элемент BDO следует использовать в сценариях, где необходим абсолютный контроль над последовательностью (например, многоязыковые номера частей). Атрибут dir для этого элемента является обязательным.

Авторы могут также использовать специальные символы Unicode для того, чтобы избежать использования двунаправленного алгоритма — LEFT-TO-RIGHT OVERR >

Примечание. Помните, что при использовании атрибута dir во встроенных элементах (включая BDO ) одновременно с соответствующими символами форматирования [UNICODE], могут возникать конфликты.

Двунаправленность и кодировка символов В соответствии с [RFC1555] и [RFC1556] существуют специальные соглашения относительно использования значений параметра «charset» для указания обработки двунаправленности в почте MIME, в частности для отличия визуальной, явной и неявной направленности. Значение параметра «ISO-8859-8» (для иврита) обозначает визуальную кодировку, «ISO-8859-8-i» обозначает неявную двунаправленность, а «ISO-8859-8-e» обозначает явную направленность.

Поскольку HTML использует двунаправленный алгоритм Unicode, соответствующие документы, использующие кодировку ISO 8859-8, должны помечаться как «ISO-8859-8-i». Явное управление направлением в HTML также возможно, но его нельзя выразить в ISO 8859-8, поскольку не следует использовать «ISO-8859-8-e».

Значение «ISO-8859-8» подразумевает, что документ отформатирован визуально, и некоторая разметка будет использоваться неправильно (например, TABLE с выравниванием по правому краю без разбивки строк), чтобы гарантировать правильное отображение для более старых агентов пользователя, не поддерживающих двунаправленность. Такие документы не удовлетворяют настоящей спецификации. При необходимости их можно изменить (и одновременно они будут корректно отображаться в старых версиях агентов пользователей), добавив, где нужно, разметку BDO . Вопреки сказанному в [RFC1555] и [RFC1556], кодировка ISO-8859-6 (арабская) не представляет визуального порядка.

8.2.5 Ссылки на символы для управления направлением и объединением

Поскольку иногда возникает двусмысленность относительно некоторых символов (например, символов пунктуации), спецификация [UNICODE] включает символы для правильного определения назначения. Спецификация Unicode также включает некоторые символы для управления объединением при необходимости (например, в некоторых ситуациях с арабскими символами). HTML 4.0 включает для этих символов ссылки на символы.

Следующее DTD определяет представление некоторых объектов направления:

Объект zwnj используется для блокировки объединения в тех контекстах, где объединение произойдет, но оно происходить не должно. Объект zwj имеет обратное действие; он производит объединение в случае, когда оно не предполагается, но должно произойти. Например, арабская буква «HEH» используется для сокращения «Hijri», названия исламской системы летоисчисления. Поскольку отдельный иероглиф «HEH» в арабской письменности выглядит как цифра пять, для того, чтобы не путать букву «HEH» с последней цифрой пять в годе, используется исходная форма буквы «HEH». Однако, нет последующего контекста (например, буквы для объединения), с которым можно объединить «HEH». Символ zwj предоставляет такой контекст.

Точно так же в персидских текстах буква может иногда объединяться с последующей буквой, в то время как в рукописном тексте этого быть не должно. Символ zwnj используется для блокировки объединения в таких случаях.

Символы порядка, lrm и rlm , используются для определения направления нейтральных по отношению к направлению символов. Например, если двойные кавычки ставятся между арабской (справа налево) и латинской (слева направо) буквами, направление кавычек неясно (относятся ли они к арабскому или к латинскому тексту?). Символы lrm и rlm имеют свойство направления, но не имеют свойств ширины и разделения слов/строк. Подробнее см. [UNICODE].

Отражение глифов символов. Вообще двунаправленный алгоритм не отражает глифы символов и не влияет на них. Исключением являются такие символы как скобки (см. [UNICODE], таблица 4-7). Если отражение желательно, например, для египетских иероглифов, греческих знаков или специальных эффектов дизайна, можно сделать это с помощью стилей.

8.2.6 Таблицы стилей и двунаправленность

Вообще использование таблиц стилей для изменения визуального представления элемента с уровня блока до встроенного и наоборот используется в прямом направлении. Однако, поскольку двунаправленный алгоритм использует различия встроенных элементов/элементов уровня блока, во время преобразования нужно быть внимательным.

Если встроенный элемент, не имеющий атрибута dir, преобразуется в стиль элемента уровня блока с помощью таблицы стилей, для определения основного направления блока он наследует атрибут dir от ближайшего родительского элемента блока.

Блог Vaden Pro

  • 398 просмотров

Характеристика значения

Общее определение

Коды для языков используются для корректного написания знаков препинания и других вспомогательных символов. Это необходимо так, как на разных языках мира они обозначаются по-разному.

Функцию корректного отображения отыгрывает браузер. Он обращается к своей базе, по соответствующему коду определяет язык и правильно отображает текст. Связующим звеном между необходимым текстом и кодировкой языка является атрибут lang. Именно он является носителем кода.

Как правильно задавать?

Ниже представлена небольшая информация о некоторых мировых языках и кодировкой для них.

Кодировка языка

Язык контента Кодировка
Абхазский язык 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

Важно помнить, что код заданный атрибутом lang внутри тега html задаст языковое оформление ко всему документу. Если необходимо применить языковые настройки к локальной части контента, то атрибут с кодом следует связывать с классом или тегом, внутри которых будет находиться необходимая часть текста.

Существует также возможность обращаться к атрибуту с заданной кодировкой в файле CSS. Это нужно для установки особых шрифтов, работающих только для определенного языка. В тоже время некоторые символы для дополнительного оформления текста могут изменять высоту строки. Поэтому нужно будет корректировать размер шрифта или высоту строки. Помимо этого каждый язык имеет собственные правила переноса, что тоже учитывается при применении кодировки языка.

Проверка орфографии улучшается в том случае, если браузеру удалось определить язык контента. Это еще одна значимая причина, по которой не следует игнорировать применения атрибута с языковым кодированием.

Еще один совет для использования языковых настроек заключается в том, что их необходимо применять сразу при создании контента. Это мотивируется тем, что при развитии спецификаций W3C значимость оформления текста с использованием языковых кодировок может возрасти. А внесение их в созданный контент сложнее, чем в тот, который только формируется.

Также хотелось подчеркнуть актуальность этой темы, так как на просторах веб-сети все больше появляется мульти язычных веб-сайтов. И эта тенденция набирает все больших и больших оборотов.

Одним из логичных объяснений этому является стремление захватить как можно большую аудиторию для блогеров с одной стороны, и расширить круг потенциальных клиентов для бизнесменов с другой стороны.

Как написать простую HTML-страничку

Создание веб-сайтов не такое сложное дело, как кажется. Узнайте, как закодировать простую страницу с помощью HTML — языка разметки для Web.

Спроектировать и создать простой веб-сайт очень просто. Даже новички могут изучать веб-дизайн, не прилагая слишком много усилий и времени.

HTML — это основной язык разметки веб-страниц. Давайте изучим его основы, и попробуем создать простую страницу.

Введение в HTML

HTML — это язык гипертекстовой разметки.

Гипертекст — это текст, который работает как ссылка.

HTML определяет структуру веб-страницы, и обеспечивает ее надлежащее отображение в браузере. Документ HTML может быть очень простым или сложным, в зависимости от поставленных задач.

Веб-браузеры получают HTML-документы с веб-сервера, и отображают их как веб-страницы. Каждый браузер понимает HTML, и воспроизводит изображения, текст, видео, так, как это написано в коде.

HTML является основным языком разметки для Web. Однако он используется для создания статических веб-страниц, без интерактивности и анимации. HTML5, последняя версия HTML, немного лучше в этом смысле, особенно что касается видео или аудио.

HTML5

HTML сегодня – это HTML5, новейшая версия, которая добавляет больше функций, чем предыдущие, и теперь может определять способ отображения видео, изображений и текста на экране браузера.

HTML5 — один из мощных инструментов для разработки веб-страниц. С HTML5 потоковая передача мультимедиа возможна без использования сторонних плагинов, таких как Flash. HTML5 также поддерживает хранение данных на стороне клиента. Это можно использовать для поддержки веб-приложений, когда клиент находится в автономном режиме.

Веб и HTML

Сеть состоит из взаимосвязанных веб-страниц и приложений, а также изображений, видео, анимации и интерактивного контента. Языки разметки составляют основу Web. Эти языки используются с тех пор, когда сайты были очень простыми, и будут оставаться частью сети, ее развития и будущего.

HTML остается фундаментальным навыком для всех веб-разработчиков и дизайнеров.

Согласно обзору W3Techs, HTML — это язык, используемый на 74,3% всех сайтов.

Среди подкатегорий, HTML5 используется на 82,9% всех сайтов, которые используют HTML.

Как создать простую HTML-страницу

Разработка HTML проста, и поэтому можно легко научиться кодировать простую HTML-страницу. Но для начала нужно изучить основы языка.

Кодирование HTML с помощью текстового редактора

Документ HTML — это в основном текстовый документ. Существует множество доступных редакторов текста, которые можно использовать для написания HTML. Два самых популярных: Dreamweaver и Sublime Text. Бесплатные редакторы — Notepad ++ для Windows и Text Wrangler для Mac. На самом деле сделать веб-страницу можно и в Microsoft Word, но делать это не стоит, поскольку он добавляет дополнительный и ненужный код в документы HTML.

Для примера мы будем использовать Notepad ++ в качестве редактора. Вы можете выбрать любой редактор по вашему выбору.

Создание и редактирование HTML

Создание нового документа HTML такое же, как и для любого другого типа документа. Выберите «Файл» — «Новый», чтобы открыть новый документ в Notepad ++. Внесите изменения в документ и нажмите «Сохранить».

Сохранение HTML

HTML-документ — это файл с расширением .htm или .html. Некоторые редакторы также могут предоставить опцию «Сохранить как HTML». Называть файл лучше латинскими буквами, с маленькой буквы, а пробелы заменять тире или точками.

Если вы написали код в «Блокноте» и сохранили его как текстовый документ, то перевести его в html-страничку можно с помощью программы Total Commander. Выбираем команду «Переименовать» и меняем расширение файла из .txt на .html.

Формат HTML-страницы

HTML как язык состоит из элементов, тегов и атрибутов, которые определяют содержание сайта. Элементы HTML позволяют нам добавлять таблицы, изображения, видео, аудио и т. д. на веб-страницу.

Элементы HTML

Элементы определяют структуру и содержимое веб-страницы. Обозначаются угловыми скобками вокруг имени элемента. Содержимое, которое не находится между «<>«, будет отображаться на веб-сайте. Элемент выглядит примерно так:

Элемент с угловыми скобками вокруг него образует тег ( ). Теги не отображаются на экране, но помогают браузеру понять, что он должен отображать. Открывающий тег отмечает начало элемента, а закрывающий тег отмечает его конец.

Содержимое между открывающим и закрывающим тэгами является содержимым элемента.

Теги могут использоваться двумя способами:

Использование тегов в паре

Парные теги содержат открывающий и закрывающий теги. Вот как они выглядят:

Существует открывающий тег (

) и закрывающий тег ( ), указывающий конец абзаца. Это означает, что все, что находится между этими двумя тегами, является абзацем.

Одиночные теги используются для определения самозакрывающихся элементов, и вставки элементов, таких как изображения. Вам не нужно определять начало и конец этих элементов.

Эти элементы пишутся так:

Закрытие / (косая черта) также не является обязательным. Это то же самое, что и при записи . Однако, чтобы избежать путаницы с открывающим тегом, рекомендуется добавить / (косую черту) в конце.

Атрибуты — это элементы, которые расширяют теги дополнительной информацией. Атрибут помещается в открывающий тег, и включает имя и значение.

Тег с атрибутом будет выглядеть так:

Тег «HTML» выше имеет атрибут «lang» со значением «en-US».

Структура документа HTML

Каждый HTML-документ имеет базовую структуру, определенную с помощью следующих элементов:

DOCTYPE или DTD: Декларация типа документа указывает версию используемого HTML. Этот тег помещается в начале документа.

HTML: Пара тегов HTML определяет начало и конец документа HTML.

Раздел HEADER : этот раздел определяет общую информацию для страницы, и обычно короткий. Содержимое этого элемента не отображается на странице. Заголовок содержит тег TITLE, который определяет название документа, отображаемое в строке заголовка браузера. HEADER также может содержать метаданные, или ссылки на внешние файлы.

Раздел BODY: Этот раздел содержит основную часть страницы. Его содержимое отображается в браузере. Большая часть кода HTML-страницы находится внутри элемента body.

Кодировка: этот тег указывает кодировку, используемую в документе HTML. Кодировка указывает, как файл сохраняется, и как будут отображаться специальные символы. Общепринятым значением для этого тега является UTF-8, который позволяет отображать практически все символы языка.

Простая страница HTML

Теперь, когда мы поняли основные элементы HTML, попробуем создать базовую HTML-страницу. Давайте начнем с создания чистого текстового документа в текстовом редакторе.

Шаг 1: Первая строка добавляемого HTML-кода указывает элемент DOCTYPE как «html». Это означает, что используется последняя версия HTML.


Шаг 2:
Далее мы добавляем теги начала и конца для документа html. Мы также определяем язык как английский (en).

Шаг 3: Затем мы добавляем тег заголовка с тегом Title и сведениями о наборе символов.

Шаг 4: После этого пишется тег BODY.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL