Xpoint
   [напомнить пароль]

Как организованы языки в атрибуте lang XML и Unicode?

Метки: [без меток]
2006-01-16 17:56:08 [обр] Алексей Фёдоров(0/3)[досье]

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

Как писать русский или английский текст в Unicode я знаю, делал это не раз. Также я прекрасно знаю об атрибуте lang, использующийся в XHTML, знаю какие значения писать в зависимости от языка. Но вот вопрос, как быть с языками народов входящими в состав России? К примеру: татарский, марийский, чувашский языки и др.

Если брать XML/XHTML, то под значение «ru» перечисленные языки явно не подпадают. У английского языка для каждого диалекта есть отдельное значение («en-au», «en-bz», «en-gb», «en-ie» и пр.). Получаются, были учтены даже диалекты, а в нашем случае абсолютно разные языки оказываются или подведены под одну гребёнку или менее распространённые из них должны оказаться не у дел. И ли всё-таки lang определяет не language, а country? Какое значение атрибута lang мне писать в документе на марийском языке?

О Unicode, как он устроен? Алфавит каждого языка представлен отдельным непрерывным массивом символов? Или есть просто набор всяких символов, откуда каждый язык берёт «нужные», а точнее «подходящие для него» символы? Если верно первое то, как узнать какой диапазон символов выделен для чувашского языка? И как узнать вообще выделен ли? А если не выделен, куда обращаться чтобы добавить алфавиты народов России?

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

Буду очень признателен за советы, соображения и ссылки.

спустя 26 минут [обр] Роман Чемисов(0/327)[досье]
Алексей Фёдоров[досье]
Немного:
CultureInfo Names
Кстати, вот, что нашёл: unicode чувашский язык
И, естественно, Unicode Home Page
спустя 58 минут [обр] Закиров Руслан(0/341)[досье]

Языки:
http://www.unicode.org/onlinedat/languages-scripts.html

Второй столбец в таблице - скрипты, таблицы символов по скрипту можно найти странице http://www.unicode.org/charts/

спустя 36 минут [обр] Давид Мзареулян(9/1003)[досье]

По стандарту в xml:lang следует писать код языка в соответствии с RFC3066(ietf). Согласно этому RFC, стандартные коды языков следует быть из ISO 639, а те языки, которые там отсутствуют, должны писаться с префиксом “i”: i-чтототам.

Код татарского языка там — tat или tt, чувашского — chu, марийского — chm.

спустя 2 часа 22 минуты [обр] Алексей Фёдоров(0/3)[досье]

Закиров Руслан[досье] Давид Мзареулян[досье]
Спасибо огромное вам! Очень сильно выручили!

Ещё возник вопрос один. Вы можете сказать, можно ли базируясь на Unicode включить алфавит по нужному языку в стандартном инструментарии под Windows XP? Вроде Windows XP поддерживает Unicode, но, по крайней мере, марийский и чувашский языки в «Язык и региональные стандарты» найти не удалось. Из всех редакторов «для Web», понимающих Unicode знаю только notepad.exe и EditPlus. Можно ли как-то в них такой текст писать? Вообще-то я так понимаю, по идее, все зависит не от них, а от Windows. Как же всё настроить?

Ещё раз спасибо!

спустя 1 час 49 минут [обр] Закиров Руслан(0/341)[досье]

Давид немного ошибся, вормат i-... для language sabtags, которые не входят в ISO639, но зарегестрированы IANA (http://www.iana.org/assignments/language-subtag-registry), правда ISO остается предпочтительным.

Для своих расширений можно использовать формат x-.....

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

  1. Шрифт, стандарт Unicode не определяет шрифты и даже (на сколько я понимаю) не определяет отображение символов, все символы, которые изображены в pdf'ах по ссылкам, взяты из шрифтов предоставленных сторонними разработчиками и права принадлежат им.
  2. Раскладки клавиатуры - это таблица преобразования скан-кодов клавиш в какую либо кодировку, в данном случае Unicode.

нашел ссылку http://www.belti.ru/peoples/font.html и http://forum.na-svyazi.ru/lofiversion/index.php/t39461.html (форум о чувашском)

спустя 8 часов [обр] Алексей Фёдоров(0/3)[досье]
Закиров Руслан[досье]
Я правильно понял, что если XML-документ на марийском языке - нужно писать не lang="i-che", а lang="x-che"?
спустя 57 минут [обр] Ярослав Сюзёв (yara)(2/305)[досье]
М Перенесено из форума "Интернет::HTML-верстка::Верстка"
спустя 5 минут [обр] Денис Ибаев aka Dionys(0/57)[досье]
по ISO 639-2 нужно писать chm, а che — это чеченский…
спустя 1 час 8 минут [обр] Алексей Фёдоров(0/3)[досье]
Ок, хорошо chm, но префикс x-... нужен или нет? Я не могу в указанных ссылках найти в стандарте что нужен префикс именно x-.... А точнее говоря, вообще о префиксе не могу найти.
спустя 7 минут [обр] Денис Ибаев aka Dionys(0/57)[досье]
не нужен:
The following rules apply to the primary subtag:
  • All 2-letter subtags are interpreted according to assignments found in ISO standard 639, "Code for the representation of names of languages" [ISO 639], or assignments subsequently made by the ISO 639 part 1 maintenance agency or governing standardization bodies. (Note: A revision is underway, and is expected to be released as ISO 639-1:2000)
  • All 3-letter subtags are interpreted according to assignments found in ISO 639 part 2, "Codes for the representation of names of languages — Part 2: Alpha-3 code [ISO 639-2]", or assignments subsequently made by the ISO 639 part 2 maintenance agency or governing standardization bodies.
  • The value "i" is reserved for IANA-defined registrations
  • The value "x" is reserved for private use. Subtags of "x" shall not be registered by the IANA.
  • Other values shall not be assigned except by revision of this standard.
спустя 20 минут [обр] Алексей Фёдоров(0/3)[досье]
Денис Ибаев aka Dionys[досье]
Спасибо большое. Как только умудряетесь находить эту инфу, диву даюсь. :)
спустя 16 минут [обр] Денис Ибаев aka Dionys(0/57)[досье]
это ж RFC3066(ietf), на который дал ссылку Давид Мзареулян[досье]… там же чуть ниже описана процедура выбора обозначения…
спустя 20 минут [обр] Алексей Фёдоров(0/3)[досье]
сообщение промодерировано

Ещё вопрос «по теме», может кто-нибудь подскажет... Имеется валидный документ XHTML 1.0 Strict. В порядке эксперимента портим его:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="any" lang="shit">

Как можно видеть, в теге html атрибуты xml:lang и lang имеют явно не стандартизированное значение. Однако http://validator.w3.org/ не находит ошибок в таком документе. Получается прямой зависимости стандартов XHTML 1.0 Strict и ISO 639-2 нет? Или стандарт подразумевает, что обозначения языков это не жестко заданное множество, а некое размытое понятие, типа - «какие-то символы, обозначающие какой-то язык»?

Раньше мне казалось, что назначение атрибута lang очевидно, но сейчас я понимаю, что всё не так просто. Кто-нибудь может привести пример серьёзной системы, которая реально использует этот атрибут для дела (кроме поисковиков и валидаторов)? Иначе говоря, теоретически, а не практически, что будет с XML-документом, если значение lang неправильное или что даст правильное значение lang?

Денис Ибаев aka Dionys[досье]
Хм... Видимо глаза разбежались от ссылок, не смог найти нужное...

спустя 20 минут [обр] Денис Ибаев aka Dionys(0/57)[досье]

атрибут lang может использоваться:

  1. при автоматической обработке текста, например, для автоматического перевода или проверки орфографии;
  2. для правильного отображения текста…

но я не знаю не одной реальной системы, относящейся к пункту 1…

спустя 37 минут [обр] Алексей Фёдоров(0/3)[досье]

Денис Ибаев aka Dionys[досье]
Ну, перечисленное как раз очевидно... Больше волнует почему валидатор не находит ошибки в испорченом докумете. А фразу:

Иначе говоря, теоретически, а не практически, что будет с XML-документом, если значение lang неправильное или что даст правильное значение lang?

наверное было бы лучше выразить как «насколько важна правильность этого атрибута?» В стандартах очень многое сделано для далёкого светлого будущего, хотелось бы знать, что предполагали разработчики о том, как будет использоваться этот атрибут, когда Семантический Веб придёт в нашу жизнь и настанет рай на Земле? В спецификации можно найти ответ на вопрос «как?», а мне хотелось бы понять «почему именно так?».

спустя 3 часа 47 минут [обр] Закиров Руслан(0/341)[досье]

Валидатор не ругается потому что DTD вашего документа опредляет это значение как NMTOKEN и только в коментарии написано, что значения определяются в RFC.

На данный момент, как мне кажется, важность минимальная.

спустя 1 час 29 минут [обр] Алексей Фёдоров(0/3)[досье]
Спасибо всем. Вроде всё прояснилось. :)
спустя 1 год 10 месяцев [обр] wiktar(0/20)[досье]

Хотел бы уточнить вот что:

какой тэг предпочтителен в аттрибуте lang: двух или трёхбуквенный? Или это не имеет значения?

спустя 3 года 11 месяцев [обр] Евгений Седов aka KPbIC(0/176)[досье]

Предпочтительней трехбуквенный. И чувашский это chv, а chu это древне-болгарский.

http://www.loc.gov/standards/iso639-2/php/code_list.php

Powered by POEM™ Engine Copyright © 2002-2005