Re: translate属性による翻訳の制御

translate属性による翻訳の制御 - dskd

@o_tiさんとTwitterで少しやりとりしていた内容で、例えば機械翻訳code要素が訳出されるのは忍びないよね、みたいな感じだったと記憶している。

まあそもそもの考え方として、

code要素は、コンピュータコードの断片を表す。これは、XML要素名、ファイル名、コンピュータプログラム、またはコンピュータが認識するだろう文字列であるかもしれない。

4.5.12 code要素 — HTML5 日本語訳

という具合におおよそ自然言語の範疇外だろうから、code要素に遭遇したら機械の方で勝手に翻訳対象外にしてくれともよさそうだけれども。

あと、

しかし、翻訳の可否は著者が決めるものなのだろうか。何を翻訳したいかは閲覧者が決めるものだと思っている。同じページでも翻訳したい範囲は目的によっても異なるからだ。

translate属性による翻訳の制御 - dskd

とあるのだけれども、個人的にはtranslate属性については、リテラルに表現しないと意味が通じなくなる、というところが使いどころじゃないかなと。前出のコンピュータコードはもちろんのこと、キーボードのキー、アスキーアートなんかも該当するかもしれない。まあ、固有名詞になると越智さんの言う「同じページでも翻訳したい範囲は目的によっても異なるからだ」というのが多少効いてくる気もするけど。


ところで、このHTML5translate属性だけれども、元を辿れば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
Google ○(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が貼れなかったので