HTML (r6971)で追加されたtranslate属性
translate
なるグローバル属性がHTMLに追加された。
- 6971. Introduce a new global attribute for localisers to tell whether or not content should be translated.
- The
translate
attribute
技術文書をGoogle TranslateやLivedoor翻訳に通すと、コードブロックの中身とかが翻訳されることがある。(でも何年か前よりだいぶまともになってる気がする…)。これをなんとかするのがtranslate
属性。
translate=yes
もしくはtranslate=no
を指定する。
<pre translate=no><code> (function () { var b = document.body; if (!!b.oncontextmenu) b.oncontextmenu = null; if (!!b.onselectstart) b.onselectstart = null; }()); </code></pre>
こうするとそれを理解してくれるUAは「(関数 () ...」なんて翻訳しないという仕組み。
もともとのバグは2011年4月に立てられたものだったんだけど、それよりずっと昔に提案されてたなあとログを漁ったらあった。2008年8月に、当時MicrosoftのIE Teamにいた(そして現Google)のChris Wilsonがほとんど同じ物を提案している。
さて、野暮ったいのが、HTMLの属性っていうこと。ユースケースとして多いのがコードとかなんだろうけれど、CSSのように特定の要素をセレクタとしてそこに適用させたほうが、つど<pre translate=no>
とするよりもずっと楽。というかそうじゃないとやってらんない。
というかこれはCSSだろうと思った人、翻訳プロキシがCSSを解すかってことを考えてほしい。もにゃりともするけれど、HTML文書内にないと厳しい。
属性のもとになったのはITSのtranslate
属性なんだけど、ITSの場合はtranslateRule
なる要素でそのルールを指定することもできる仕組みになっている。ただ、それだけのためにHTMLに要素を増やしてもね…。meta
でどうこうするのもしんどいし、うーん。