@o_tiさんとTwitterで少しやりとりしていた内容で、例えば機械翻訳でcode
要素が訳出されるのは忍びないよね、みたいな感じだったと記憶している。
まあそもそもの考え方として、
4.5.12 code要素 — HTML5 日本語訳
code
要素は、コンピュータコードの断片を表す。これは、XML要素名、ファイル名、コンピュータプログラム、またはコンピュータが認識するだろう文字列であるかもしれない。
という具合におおよそ自然言語の範疇外だろうから、code
要素に遭遇したら機械の方で勝手に翻訳対象外にしてくれともよさそうだけれども。
あと、
しかし、翻訳の可否は著者が決めるものなのだろうか。何を翻訳したいかは閲覧者が決めるものだと思っている。同じページでも翻訳したい範囲は目的によっても異なるからだ。
translate属性による翻訳の制御 - dskd
とあるのだけれども、個人的にはtranslate
属性については、リテラルに表現しないと意味が通じなくなる、というところが使いどころじゃないかなと。前出のコンピュータコードはもちろんのこと、キーボードのキー、アスキーアートなんかも該当するかもしれない。まあ、固有名詞になると越智さんの言う「同じページでも翻訳したい範囲は目的によっても異なるからだ」というのが多少効いてくる気もするけど。
ところで、このHTML5のtranslate
属性だけれども、元を辿ればInternationalization Tag Set (ITS) からその概念が取り入れられたものだったりする。Nu Html Checkerあたりで、
Info: Using the schema for HTML with SVG 1.1, MathML 3.0, RDFa 1.1, and ITS 2.0 support.
Showing results for https://validator.w3.org/nu/ - Nu Html Checker
という文言を見たことがあると思うけど、ITS 2.0
というのがそれにあたる。ちなみに仕様はInternationalization Tag Set (ITS) Version 2.0になる。HTML5+RDFaのように、HTML5+ITS 2.0というのもできるにはできると。2.5 Specific HTML supportに具体的な使い方がいくつかの例示とともに示されているけれども、XPathで要素まるごと制御するといったことも可能で、例えばインラインに埋め込む方法だと、
<head> <script type=application/its+xml id=ru1> <its:rules version="2.0" xmlns:its="http://www.w3.org/2005/11/its" xmlns:h="http://www.w3.org/1999/xhtml"> <its:translateRule translate="no" selector="//h:code"/> </its:rules> </script> ... <p>This sentence should be translated, but code names like the <code>span</code> element should not be translated. Of course there are always exceptions: certain code values should be translated, e.g. to a value in your language like <code translate=yes>warning</code>.</p>
とすれば、code
要素はtranslate=no
が既定にできると。またlink
要素で
<link href=EX-translateRule-html5-1.xml rel=its-rules>
として、外部XMLに
<its:rules version="2.0" xmlns:its="http://www.w3.org/2005/11/its" xmlns:h="http://www.w3.org/1999/xhtml"> <its:translateRule translate="no" selector="//h:code"/> </its:rules>
とすることもできると。上記に実際どの程度実装が対応してるか、仕様に例示されているページを翻訳サービスに実際かけてみた。
翻訳サービス | インライン(script ) |
外部ファイル(link ) |
---|---|---|
○(URL) | ○(URL) | |
Yahoo! JAPAN | ×(URL) | ×(URL) |
Bing | ×(URL) | ×(URL) |
Yandex*1 | × | × |
Baidu | ×(URL) | ×(URL) |
とまあ、Google以外壊滅だった。BingとYandexは冒頭で触れたようにcode
要素に遭遇すると翻訳しないようになっているようで、これは実装としてある意味正しい姿、なのかもしれない。いずれにせよ、各翻訳サービスによってブレがあるものの、機械翻訳を制御できる術はあるにはある、といったところか。
*1:https://translate.yandex.com/translate からURLでの翻訳はできるが、URLが貼れなかったので