[11] HTML のほとんどの要素型で定義されている属性
lang
は、その要素の属性値および文内容
(text content) の基底言語 (base language) を指定します。
[11] この属性の値は %LanguageCode;
型 (IETF の言語札)
であり、大文字・小文字は区別されません。
既定値は未知です。
[25] 仕様書:
lang
and xml:lang
Attributes
(参考) IW:XHTML10:"C_7"[15] なお、ここで言語とは自然言語であって、 プログラム言語は除外されています。 (IW:HTML4:"struct/dirlang.html#langcodes" 参照。)
[12] この属性の値は、 UA が種々の用途で使います。 IW:HTML4:"struct/dirlang.html#idx-language-1" に挙げられている例としては:
があります。
[13] lang
属性の意図は、 UA が特定言語における旧来の文化的慣習に基づいてより有意義に内容を描画できるようにということにあります。
UA に特定言語では型破りな文字をさほど意味のない方法で描画することを求めるものではありません。
UA は、 lang
属性で指定された値に関わらず、
全ての文字を描画するように最前の努力をなさなければなりません [HTML4]。
という良く分からない文章の心は、
にしたら (そうしなければ表示されていたはずの) 漢字が豆腐とかに化けてしまう糞 UA
逝っとくれと、そういうことですかねぇ。 >>4 の例からみても。違いますか?lang
=en
[24] XHTML 1.0 で XML の
xml:lang
属性が XHTML
に取り入れられました。
XHTML 1.0 互換性指針によれば、互換性指針に従う文書は
lang
と xml:lang
の両方を指定するべきです。
xml:lang
が優先されます。 XHTML 1.0 C.7
[30] 根要素の html
要素には
lang
属性を指定することが推奨されています
>>29。
[97] Content-Language:
も参照。
[16] ある要素の言語は、次の情報から決定されます。 (先のものが優先度が高い。)
(IW:HTML4:"struct/dirlang.html#h-8.1.2" 参照。) [17] 実際には HTML は HTTP 以外でも使われますから、 HTTP に限らず転送プロトコル一般の言語情報を第3位と解釈するのがよいでしょう。
転送プロトコルが複数組み合わされる場合は (各プロトコル(群)で特に規定がある場合はそれによるとし、そうでない場合は) 内側の (HTML 文書に近い) プロトコルの情報が優先されるとするのがよいでしょう。
[18] http-equiv
な meta
要素を使って
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 の処理さえ知っていれば、それなりの結果が期待できます。
[102] draft-ietf-html-style-00, https://datatracker.ietf.org/doc/html/draft-ietf-html-style-00
[103] draft-ietf-html-style-01, https://datatracker.ietf.org/doc/html/draft-ietf-html-style-01
[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 の継承に関する規定もありました。
[12] w3/w3-parse.el at master · emacsmirror/w3 · GitHub, https://github.com/emacsmirror/w3/blob/master/w3-parse.el#L1194
[100] The HTML Professional DTD, , https://web.archive.org/web/19970512004934/http://www.ucc.ie/html/dtds/htmlpro.html
[101] >>100 この文書中で lang
を使っている。属性なし。
English 文中、ラテン語由来語彙に使っている。
[36] XHTML m12n における事実上の廃止
XHTML m12n では抽象モジュール定義に lang
属性は含まれず、遺物再定義 DTDモジュールの定義にひっそり含まれています。
XHTML m12n を基に構築されている XHTML 1.1 や XHTML 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 γ-radiation,</Q> he explained.</P>
(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
属性と内容の文字にも強い関係が認められますが、
それ以上の制約は存在しません。例えば、 lang
が ja
で、内容がアラビア文字であったとしても、
(それが日本語を表記したものなら) 何ら問題ありません。
[41] レンダリングとの関係
lang
属性による言語の指定は、
その要素の内容を視覚的、音声、その他の方法によって適切にレンダリングするための情報の1つとして利用されます。
[37]
lang
属性が XML に取込まれて
xml:lang
属性となった背景には、
XLink 1.0 と同様に、 HTML に限らず汎用的に使えそうなものは XML
系マーク付け言語共用の語彙にしてしまおうという思惑が見え隠れしています。
それ自体は至極結構なことですが、それがために旧来の HTML と XHTML 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
属性の値には inherit
を指定できます。 (言語札 (>>40) 参照)[7] XML 1.0 SE Errata では重大な変更が加えられています。型が NMTOKEN
から CDATA
に変更され、空文字列が認められました。
[21]
und
(決定できない) という言語札もあったりしますが、空文字列はもっと積極的に、どの言語にも属さない場合 (絵とか) に使う、のではないでしょうかねぇ。
(名無しさん)
[35]
XInclude 1.0 では言語情報を取込みの前後で保存するために
言語
特性を定義し、
xml:lang
属性 (とそこに記された情報)
の処理を規定しています。
[46] Atom 1.0 や AtomPub や RFC 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
[69] DTBook でも認められていました。
なぜか lang
と xml:lang
の両方がありました。
(コメントには XHTML 由来らしきことが書かれています。)
[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
[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
[63] 元の Google 社員の発言は検証していないが、 このページで引用している部分では、 Google は見出しのように「使うな」とは一言も言っていない。 もし本当に言っているなら、そこか見出しにするほど重要事項なのだから、 必ずそこを引用しているだろう。 つまり見出しはいわゆる釣りタイトルで捏造だ。 (本文に書いてないことを見出しにするのはかなりタチが悪い。)
[64]
しかも lang
属性を使っていないのは Google検索の話だけで、
それ以外の用法で使われないとは誰も言っていない。
HTML の知識がある人にとっては、
レンダリングや :lang
など lang
属性が使われる場面がいくつかあることは常識ではないか。
それを「HTML界の「盲腸」のようなタグ」などと意味不明なことを書き、
専門家面して読者を騙そうとするのは誠実ではない。
[65] Demos: Add lang="en" to html files by ricea · Pull Request #974 · whatwg/streams () https://github.com/whatwg/streams/pull/974
[67] rfc3863 () https://datatracker.ietf.org/doc/html/rfc3863#section-4.1.6
[70] 000132512.pdf, , https://www.soumu.go.jp/main_content/000132512.pdf#page=45
[71] >>70 これは RDFデータモデルの欠陥なのでは... 問題が見えにくく、運用者に押し付けるのはしんどいよなあ....
[94] RDF/XML ならまだ耐えられても RDFa はなあ...
[95] RDFデータモデルの欠陥というのは酷かもしれないが、かといって RDFa レベルでどうにかなる問題ではないし、 RDFa の書き方でがんばったところで対処できないケースも想定されるからなあ。 RDFa の設計思想が間違ってた、ってことになると RDFa がかわいそうw