Указание неуказанных или вымышленных языков в атрибуте lang

Как мне указать язык, отличный от того, который указан в реестре языковых подтегов IANA, например, вымышленный язык?

Ссылаясь на BCP 47 (RFC 5646 и 4647), я предполагаю, что тег und или -x потребуется индикатор частного использования; но предпочтительна ли форма (например,) «und-x-dothraki», «x-dothraki», «qgm-dothraki» (используя q+gm для Джорджа Мартина) или что-то еще?

Рассмотрим этот пример:

The Ficlang words <i lang="???">foo bar</i> mean “Hello, sir” in English.

Каким будет правильное значение атрибута lang="???" выше?

(В идеале это должно включать способ различать несколько нестандартных языков.)


person J. C. Salomon    schedule 30.05.2013    source источник
comment
Связано: Действителен ли атрибут lang=unknown?   -  person J. C. Salomon    schedule 30.05.2013
comment
В более раннем черновике я предположил, что lang="und" может быть уместным в кодировке Inferno Данте: <i lang="und">Papé Satàn, papé Satàn aleppe!</i>   -  person J. C. Salomon    schedule 06.06.2013


Ответы (2)


Согласно международному стандарту ISO 639−2 код языка mis обозначает некодированные языки.

Тем не менее, BCP 47 — документ IETF, описывающий «наилучшую текущую практику Интернета», а не стандарт, — говорит, что mis не следует использовать. Аргумент довольно слабый: «Поскольку добавление других кодов в будущем может сделать его применение недействительным, он по своей сути нестабилен и, следовательно, несовместим с целями стабильности BCP 47. Всегда предпочтительнее использовать другие подтеги: либо 'und' или (по предварительному согласованию) вложенные теги для частного использования».

HTML5 CR — рекомендация-кандидат W3C — говорит, что если lang является пустой строкой, т.е. lang="", тогда "это должно быть интерпретировано как означающее, что язык узла явно неизвестен". Нынешние HTML-рекомендации такого принципа не содержат, и они довольно расплывчаты в отношении специальных значений атрибута lang.

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

person Jukka K. Korpela    schedule 30.05.2013
comment
Квенья и синдарин не включены в список; у них есть коды qya и sjn в ISO 639-3, который является одним из стандарты, на которые ссылается BCP 47. - person Jukka K. Korpela; 31.05.2013
comment
Если язык не имеет зарегистрированного тега, то не существует функционального способа указать язык. Вы можете использовать lang="" или lang=und или lang=mis (что не одобряется в BCP, но только с НЕ ДОЛЖЕН, а не ДОЛЖЕН НЕ ДОЛЖЕН). Вы можете вместо этого или дополнительно использовать тег для частного использования, например, lang=x-dothraki, но это будет зависеть от соглашения между вами и другими заинтересованными сторонами. Я не совсем понимаю, чего вы ожидаете от этого атрибута, поэтому я не могу сделать обоснованное предложение по поводу выбора. - person Jukka K. Korpela; 31.05.2013
comment
Вы действительно изменили вопрос. Я думаю, вы должны были оставить все как есть, принять ответ и опубликовать новый вопрос. - person Jukka K. Korpela; 06.06.2013
comment
(Если вы просто хотите выделить свою собственную обработку, например стиль, использование атрибутов class является простым и безопасным способом.) - person Jukka K. Korpela; 06.06.2013
comment
Это не игра на чтение мыслей. Вопросы следует задавать так, как они заданы, и вы можете уточнить вопрос, но не должны его менять. Будущие читатели будут очень сбиты с толку ответами и комментариями, которые относятся к заданному вами вопросу, но затем заменены чем-то другим. - person Jukka K. Korpela; 06.06.2013
comment
давайте продолжим это обсуждение в чате - person J. C. Salomon; 06.06.2013

(Я бы прокомментировал ответ @Jukka K Korpela, но комментарии слишком короткие)

Я искал способ использовать атрибут lang для обозначения компьютерного языка, используемого в теге <code>, и в итоге оказался на странице страница атрибутов языка MDN, в которой говорится, что:

Атрибут содержит один «языковой тег» в формате, определенном в Теги для идентификации языков (BCP47).

Таким образом, стандартом, которому необходимо (должно) следовать, является CSP47. Читая спецификацию BCP47, я обнаружил:

[ISO639-2] определил несколько кодов, включенных в реестр вложенных тегов, которые требуют особого внимания при выборе языковых тегов.

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

Языковые теги НЕ ДОЛЖНЫ включать эти вложенные теги в качестве префикса, если только дополнительная информация не несет какую-либо ценность для приложения.

Мы в этом случае: вы предоставляете дополнительную информацию (содержимое тега написано на вашем вымышленном языке), поэтому можно использовать атрибут lang вместо того, чтобы не использовать его.

Вложенный тег основного языка «mul» (несколько) идентифицирует содержимое на нескольких языках. [...]

Не наш случай

Вложенный тег основного языка und (неопределенный) идентифицирует лингвистическое содержимое, язык которого не определен.

Этот вложенный тег НЕ СЛЕДУЕТ использовать, за исключением случаев, когда требуется языковой тег, а информация о языке недоступна или не может быть определена.

Желательно не указывать языковой тег (где это разрешено). Вложенный тег 'und' может быть полезен для протоколов, которые требуют предоставления языкового тега или где требуется вложенный тег основного языка (например, в "und-Latn"). Вложенный тег 'und' МОЖЕТ быть также полезен при сопоставлении языковых тегов в определенных ситуациях.

Тоже не наш случай: язык определяется, просто его нет в стандарте BCP. Следовательно, также не используйте 'und'.

Вложенный тег основного языка «zxx» (нелингвистический, не применимый) определяет контент, для которого языковая классификация не подходит или не применяется. Некоторые примеры могут включать инструментальную или электронную музыку; звукозаписи, состоящие из невербальных звуков; аудиовизуальные материалы без повествования, диалогов, печатных титров и субтитров; машиночитаемые файлы данных, состоящие из машинных языков или кодов символов; или исходный код программы.

Не случай вымышленного языка (при условии, что ваши вымышленные персонажи не являются инструментами)

Вложенный тег основного языка «mis» (некодированный) идентифицирует контент, язык которого известен, но в настоящее время не имеет соответствующего вложенного тега.

Кажется, это ваш случай: давайте использовать это!

Этот подтег НЕ ДОЛЖЕН использоваться.

Хм...

Поскольку добавление других кодов в будущем может сделать его применение недействительным, он по своей природе нестабилен и, следовательно, несовместим с целями стабильности BCP 47.

Ах да, «вложенный тег не следует использовать для языков, которые когда-нибудь могут оказаться в BCP47»! Сомневаюсь, что твой...

Всегда предпочтительнее использовать другие вложенные теги: либо 'und', либо (по предварительному согласованию) вложенные теги для частного использования.

Это еще один способ сделать это, вы можете использовать языковой тег x- и рассматривать его как частный язык. Пустой тег lang не подходит, так как язык известен. Не установить это тоже было бы ошибкой, так как это не язык основного потока.

Пока я понимаю спецификацию, вы можете использовать языковые теги mis-... или x-.... Пожалуйста, поправьте меня, если я ошибаюсь (это то, как я скоро пойду в том же случае [вымышленный язык], поэтому, если я знаю, что это неправильный путь, прежде чем начинать код, мне будет легче исправить это!)

person Xenos    schedule 16.10.2019