lang

lang 属性

[11] HTML のほとんどの要素型で定義されている属性 lang は、その要素属性値および文内容 (text content) の基底言語 (base language) を指定します。

仕様書

[11] この属性の値は %LanguageCode; 型 (IETF言語札) であり、大文字小文字は区別されません。 既定値は未知 (unknown) です。

[25] 仕様書:

[15] なお、ここで言語とは自然言語であって、 プログラム言語は除外されています。 (<IW:HTML4:"struct/dirlang.html#langcodes"> 参照。)

[12] この属性の値は、 UA が種々の用途で使います。 <IW:HTML4:"struct/dirlang.html#idx-language-1"> に挙げられている例としては:

があります。

[13] lang 属性の意図は、 UA が特定言語における旧来の文化的慣習に基づいてより有意義に内容を描画できるようにということにあります。 UA に特定言語では型破りな文字をさほど意味のない方法で描画することを求めるものではありません。 UA は、 lang 属性で指定された値に関わらず、 全ての文字を描画するように最前の努力をなさなければなりません [HTML4]。

という良く分からない文章の心は、 lang=en にしたら (そうしなければ表示されていたはずの) 漢字が豆腐とかに化けてしまう糞 UA 逝っとくれと、そういうことですかねぇ。 >>4 の例からみても。違いますか?

代替

[24] XHTML 1.0XMLxml:lang 属性が XHTML に取り入れられました。

XHTML 1.0 互換性指針によれば、互換性指針に従う文書は langxml:lang の両方を指定するべきです。 xml:lang が優先されます。 XHTML 1.0 C.7

文脈

[30] 根要素html 要素には lang 属性を指定することが推奨 (encourage) されています >>29

[31] 音声合成ツールや翻訳ツールの言語判定を助けるものです >>29

継承

[16] ある要素の言語は、次の情報から決定されます。 (先のものが優先度が高い。)

  1. その要素の lang 属性値
  2. 一番近い lang 属性を持つ要素の lang 属性値
  3. HTTPContent-Language 頭欄
  4. UA の既定値・利用者の設定

(<IW:HTML4:"struct/dirlang.html#h-8.1.2"> 参照。) [17] 実際には HTML は HTTP 以外でも使われますから、 HTTP に限らず転送プロトコル一般の言語情報を第3位と解釈するのがよいでしょう。

転送プロトコルが複数組み合わされる場合は (各プロトコル(群)で特に規定がある場合はそれによるとし、そうでない場合は) 内側の (HTML 文書に近い) プロトコルの情報が優先されるとするのがよいでしょう。

[18] http-equivmeta 要素を使って Content-Language を指定する方法も実際には良く使われています。 HTML 4 が触れていない以上、厳密に HTML 4 に従う UA では無視するのが良いのかもしれませんが、現実路線(謎)の UA は HTTP など上位プロトコルが言語情報を持たないときにはこれを参照してもよいのではないでしょうか。

[19] ところで、 HTTP では Content-Language: ja, en のように複数の言語を指定できるのですが、 HTML 4 ではできません。 実装者はその辺注意されたし。

[22] 表の中では %cellvalign と同じ継承規則が使われると HTML 4 では規定されています。

言語札の階層性

[10] 言語札は ja-JP, en-US のような階層構造を持っています。

HTML 4 は、言語情報による処理に際して、まず全体の一致を試み、 次に最初の部分の一致によるべきだとしています。 <IW:HTML4:"struct/dirlang.html#h-8.1.3"> 参照。

こうすれば、たとえ ja-JP の処理を知らなくても、 ja の処理さえ知っていれば、それなりの結果が期待できます。

歴史

[26] 仕様書:

[27] 標準として最初に lang 属性HTML に導入されたのは HTML 2.x (RFC 2070) でした。 HTML 2.x ではすべての要素型のうち、 意味をなさないと考えられた br, hr, base, nextid, meta 以外すべてに lang 属性が追加されました RFC 2070 3.

[28] RFC 2070属性値として RFC 1766言語札を参照しつつも構文と意味を独自に規定 (というかコピペ) していました。 >>10 の階層的比較に関する規定や >>16 の継承に関する規定もありました。

[36] XHTML m12n における事実上の廃止 XHTML m12n では抽象モジュール定義に lang 属性は含まれず、遺物再定義 DTDモジュールの定義にひっそり含まれています。

XHTML m12n を基に構築されている XHTML 1.1XHTML Basic にはそもそも遺物モジュールが取込まれていませんから、 lang 属性は存在しません。

仕様書:

[49] XHTML+RDFa and @lang (Shane McCarron 著, 版) <http://lists.w3.org/Archives/Public/public-xhtml2/2009Jan/0110.html>

The XHTML 2 Working Group has been asked to re-introduce the lang attribute into XHTML family languages. Basically this is so that assistive technologies will correctly identify the language of content.

It will also address some issues that arise when content is served up as text/html instead of application/xhtml+xml.

[14] [HTML4] から。

<P><Q lang="en">Her super-powers were the result of
&gamma;-radiation,</Q> he explained.</P>

  • UA は、英語の内容を適切な方法の描画 (たとえば引用符の取り扱い) を試みるべきです。
  • UA は、英語の文字でなくても最前の努力でもって表示を試みなければなりません。

(p 要素またはそれより上位の要素でも lang=en とちゃんと指定しておかないと、引用符は決定できないと思うのですけどねぇ。)

[23] 英語の文章の中に日本語 (羅馬字表記) が混じっている例

<p>Horizontal in vertical ("<span lang="ja">Tate-chu-yoko</span>")
</p>

In Japanese, this effect is known as <a href="#g-tatechuyoko">"<span lang="ja">Tate</span>-<span lang="ja">chu</span>-<span lang="ja">yoko</span>"</a>.

共に出典は CSS3 Text Module <http://www.w3.org/TR/2003/CR-css3-text-20030514/#writing-mode>

関連

[39] 文字コードとの関係

lang 属性は、 文字コード (符号化文字集合符号化方式) とは直交するものです。文字コードの選択によって lang 属性の要/不要や値が影響を受けることはありません

[40] 文字種との関係

lang 属性による言語の指定は、 その要素内容として使われる文字の種類 (用字系正書法等) とは直接は関係ありません

言語文字の種類の間には元々強い関係が存在するので、 lang 属性内容文字にも強い関係が認められますが、 それ以上の制約は存在しません。例えば、 langja で、内容アラビア文字であったとしても、 (それが日本語を表記したものなら) 何ら問題ありません。

[41] レンダリングとの関係

lang 属性による言語の指定は、 その要素内容視覚的音声、その他の方法によって適切にレンダリングするための情報の1つとして利用されます。

メモ

[37] lang 属性XML に取込まれて xml:lang 属性となった背景には、 XLink 1.0 と同様に、 HTML に限らず汎用的に使えそうなものは XMLマーク付け言語共用の語彙にしてしまおうという思惑が見え隠れしています。

それ自体は至極結構なことですが、それがために旧来の HTMLXHTML 1 の致命的な断絶を招いてしまいました。言語属性の普及状況がいまいちなのも XHTML 1 の普及状況がいまいちなのもこの問題が大きな原因の 1つだというのは言い過ぎでしょうか。

[42] Internationalization Best Practices: Specifying Language in XHTML & HTML Content (2007-02-16 05:52:24 +09:00 版) <http://www.w3.org/International/geo/html-tech/tech-lang.html> (名無しさん)

[44] lang attributes accross (X)HTML versions - W3C Q&A Weblog (2007-08-31 19:12:14 +09:00 版) <http://www.w3.org/QA/2007/08/xhtml-html-lang-attributes.html>

[47] MAMA: Common attributes - Opera Developer Community ( 版) <http://dev.opera.com/articles/view/mama-common-attributes/#lang>

xml:lang 属性 (XML)

[7] XML 1.0 SE Errata では重大な変更が加えられています。型が NMTOKEN から CDATA に変更され、空文字列が認められました。

[21] und (決定できない) という言語札もあったりしますが、空文字列はもっと積極的に、どの言語にも属さない場合 (絵とか) に使う、のではないでしょうかねぇ。 (名無しさん)

[35] XInclude 1.0 では言語情報を取込みの前後で保存するために 言語特性を定義し、 xml:lang 属性 (とそこに記された情報) の処理を規定しています。

応用

[46] Atom 1.0AtomPubRFC 6721 で定義されたすべての要素xml:lang 属性を持つことができます。どちらの仕様でも指定された言語はその要素子孫に適用されると説明されていますが、 Atom 1.0 では更に Language-Sensitive とされた要素属性にのみ有意であると規定されています Atom 1.0 2.

[55] Speech Synthesis Markup Language (SSML) Version 1.1 ( 版) <http://www.w3.org/TR/2010/REC-speech-synthesis11-20100907/#adef_xmllang>

メモ

[1] lang 属性の値で CJK 字形を区別するのは、間違ってはいませんが良い考えではありません。 (でも Unicode には他に方法はないです。)

[2] >>1 異体字タグ? 萎えるな。それに XML でそれは使えるんだろうか?

[45] 英語翻訳 - エキサイト 翻訳 ( 版) <http://www.excite.co.jp/world/english/>

.en_m { lang: EN; font-family: Verdana; }
.en_s { lang: EN; font-family: Verdana; }

[48] Document Structure – SVG Tiny 1.2 ( 版) <http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/struct.html#XMLLangAttribute>

[50] EMMA: Extensible MultiModal Annotation markup language ( 版) <http://www.w3.org/TR/2009/REC-emma-20090210/#s4.2.5>

本文では BCP 47 (日付は2006年、リンク先は最新版) を参照していますが、データ型としては XML Schema (日付は第2版、リンク先は最新版) の xs:language になっています。

[51] IRC logs: freenode / #whatwg / 20090508 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20090508#l-73>

[52] IRC logs: freenode / #whatwg / 20090602 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20090602#l-368>

[53] XHTML2 Working Group Teleconference -- 16 Sep 2009 ( 版) <http://www.w3.org/2009/09/16-xhtml-minutes.html#item05>

[54] IRC logs: freenode / #whatwg / 20100205 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20100205#l-166>

[56] Speech Synthesis Markup Language (SSML) Version 1.1 ( ( 版)) <http://www.w3.org/TR/2010/REC-speech-synthesis11-20100907/#edef_lang>

[57] RFC 3920 - Extensible Messaging and Presence Protocol (XMPP): Core ( 版) <http://tools.ietf.org/html/rfc3920#section-9.1.5>

NMTOKEN でなければなりませんRFC 3066 言語タグでなければなりません

[58] Document Structure – SVG 1.1 (Second Edition) ( ( 版)) <http://www.w3.org/TR/2011/REC-SVG11-20110816/struct.html#LangSpaceAttrs>

[73] >>72 では省略時の既定値が i-default です。

[75] Web Application Description Language ( ( 版)) <http://www.w3.org/Submission/2009/SUBM-wadl-20090831/#x3-80002.3>

[76] Web Applications 1.0 r7421 Encourage lang='' on root element. ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=7420&to=7421>

[77] Re: xml:lang in the light of error frequencies ( (Ian Hickson 著, 版)) <http://lists.w3.org/Archives/Public/public-html/2008Aug/0301.html>

[81] Web Applications 1.0 r7894 Don't set the language when it's just spaces. ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=7893&to=7894>

[82] [whatwg] HTML: A DOM attribute that returns the language of a node ( ( 版)) <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-July/040044.html>

[83] [whatwg] HTML: A DOM attribute that returns the language of a node ( ( 版)) <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-September/040846.html>

[84] Bug 23512 – API to expose actual language of a node, to aid scripts doing localisation and CJK editors during copy&paste and drag&drop ( ( 版)) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=23512>

[85] XHTML+RDFa 1.1 - Second Edition ( ( 版)) <http://www.w3.org/TR/2013/REC-xhtml-rdfa-20130822/#s_xhtmlrdfa>

[86] HTML+RDFa 1.1 ( ( 版)) <http://www.w3.org/TR/2013/REC-html-rdfa-20130822/#additional-rdfa-processing-rules>

[87] XML Binding Language (XBL) 2.0 ( ( 版)) <http://www.w3.org/TR/2007/CR-xbl-20070316/#forwarding0>

[88] XPath and XQuery Functions and Operators 3.0 ( ( 版)) <http://www.w3.org/TR/xpath-functions-3/#func-lang>

[89] Internationalization Tag Set (ITS) Version 1.0 ( ( 版)) <http://www.w3.org/TR/its/#language-information>

[90] Internationalization Tag Set (ITS) Version 2.0 ( ( 版)) <http://www.w3.org/TR/its20/#language-information>

[91] Authoring HTML: Language declarations ( ( 版)) <http://www.w3.org/TR/2014/NOTE-i18n-html-tech-lang-20140603/>

[92] Bug 26951 – why do these examples of <html> lack the lang attribute? ( ( 版)) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=26951#c7>

[93] The Platform for Privacy Preferences 1.0 (P3P1.0) Specification ( ( 版)) <http://www.w3.org/TR/P3P/#multiple>

[6] Proposals/dropxmlattributes - SVG ( 版) <https://www.w3.org/Graphics/SVG/WG/wiki/Proposals/dropxmlattributes>

[9] Issue 341854 - chromium - Remove vestigal xml:base support - An open-source project to help move the web forward. - Google Project Hosting ( 版) <https://code.google.com/p/chromium/issues/detail?id=341854>

[20] 16489 – Retrieve element language ( 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=16489>

[32] RFC 7749 - The "xml2rfc" Version 2 Vocabulary ( 版) <https://tools.ietf.org/html/rfc7749#section-2.33.11>

The natural language used in the document (defaults to "en").

[33] Editorial: add lang attribute to most examples · whatwg/html@ea5c6a2 ( 版) <https://github.com/whatwg/html/commit/ea5c6a25d154f2c2d3f32cfc5148b05c6f4be30b>

[34] LANG attribute list () <https://cdn.rawgit.com/operasoftware/devopera-static-backup/master/http/devfiles.myopera.com/articles/572/langlist-url.htm>

[38] XPath and XQuery Functions and Operators 3.1 () <https://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#func-lang>

[43] 23512 – API to expose actual language of a node, to aid scripts doing localisation and CJK editors during copy&paste and drag&drop () <https://www.w3.org/Bugs/Public/show_bug.cgi?id=23512>

[59] RFC 5323 - Web Distributed Authoring and Versioning (WebDAV) SEARCH () <https://tools.ietf.org/html/rfc5323#section-5.12>

[60] RFC 5323 - Web Distributed Authoring and Versioning (WebDAV) SEARCH () <https://tools.ietf.org/html/rfc5323#section-6>

Properties may be language-tagged using the xml:lang attribute (see

[RFC4918], Section 4.3). The optional operators DAV:language-defined

(Section 5.12.1) and DAV:language-matches (Section 5.12.2) allow the

expression of conditions on the language tagging information.

[61] AMP HTML Specification – AMP () <https://www.ampproject.org/docs/reference/spec>

XML-related attributes, such as xmlns, xml:lang, xml:base, and xml:space are disallowed in AMP HTML.