要約

言語を設定すると、支援技術によってテキストを正しく解釈してレンダリングできるようになり、また、ユーザーはリーディングシステムの言語拡張機能を利用できるようになります。

テクニック

例1 — パッケージドキュメントでの言語の宣言

こちらの例では、英語の文書に対して、パッケージ内のメタデータが正しく解釈されるように、package要素のxml:lang属性を英語に指定しています。

<package … xml:lang="en">
例 2 — デフォルトのパッケージドキュメント言語を上書きする

次の例では、xml:lang属性が、著者名が日本語であることを示すために使用されています。

<package … xml:lang="en">
   <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
     …
     <dc:creator id="creator" xml:lang="ja">村上 春樹</dc:creator>
     …
   </metadata>
   …
</package>
例3 — 出版物の主な言語の指定

次の例では、dc:language要素が、コンテンツの主要言語がフランス語と英語であることを示すために使用されています。

<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
     …
     <dc:language>fr</dc:language>
     <dc:language>en</dc:language>
     …
   </metadata>
例4 — XHTMLおよびSVGコンテンツドキュメントの言語の設定

xml:lang属性はXHTMLやSVGなどのXML文法の言語を設定しますが、同じ値を持つlang属性を含めることもお勧めします。詳細についてはlang属性の設定に関するセクションを参照してください。

<html … xml:lang="en" lang="en">
   …
</html>
<svg … xml:lang="en" lang="en">
   …
</svg>

よくある質問

出版物で使用されているすべての言語をリストアップする必要がありますか?

いいえ、 dc:language要素には、コンテンツの主要言語のみをリストアップする必要があります。たとえば、出版物に外国語の語句がいくつか含まれていてもその言語はリストアップする必要はありません。

解説

出版物の言語を設定することは、支援技術がテキストを正しく発音するのに役立つため、アクセシビリティを確保するための重要なステップです。言語宣言がないと、支援技術はユーザーのデフォルト言語でテキストを読み上げます。これにより、テキスト全体が誤って発音されたり (出版物が別の言語である場合)、個々の語句が誤って読み上げられたりする(文章内に外国語の語句が含まれる場合)可能性があります。

このチュートリアルでは、支援技術やリーディングシステムで情報を利用できるように、EPUB パッケージ ドキュメント、XHTML および SVG コンテンツ ドキュメントの言語を設定する方法について説明します。

言語タグとは何か

言語の設定方法の説明に入る前に、まず何を設定するかを理解することが重要です。言語は、言語、地域、スクリプトなどを識別するハイフンで区切られたコードである言語タグを使用して宣言されます。

少なくとも、各言語タグは、主要言語を識別する二文字または三文字のコードで構成されます。

次の表に、言語コードをいくつか示します。

コード 言語
de ドイツ語
en 英語
he ヘブライ語
hi ヒンディー語
ko 韓国語

言語コードの完全なリストについては、 IANA 言語レジストリを参照してください (言語名を検索するとコードが見つかります)。

多くの言語では、主な言語コードのみを指定します。ただし、地域的な方言を持つ言語の場合は、より正確に指定するために地域サブタグを追加できます。

たとえば、アメリカとイギリスでは発音が大きく異なる場合があります。「 en 」というコードだけでは、必要な個所でどちらを適用すればよいか支援技術に通知されません (たとえば、登場人物が地方の方言で話すアメリカまたはイギリスの小説の場合など)。地域を追加すると、支援技術がより適切な音声を選択して再生できるようになるため、この問題は解消します。

地域サブタグはハイフンを使用して言語に追加されます。たとえば、「en-US」は、テキストが米国で話されている英語であることを示します。

次の表に、一般的な言語タグとその地域サブタグを示します。

コード 言語
en-UK イギリス英語
en-US アメリカ英語
fr-CA カナダで話されているフランス語
fr-FR フランスで話されているフランス語

一般的な慣習として地域タグは大文字で表記しますが、これは必須ではありません。言語タグは大文字と小文字を区別せずに処理されます。

スクリプトサブタグを使用して、テキストを記述している文字を指定できます。たとえば、簡体字中国語と繁体字中国語は、「zh-Hans」と「zh-Hant」スクリプトタグを使用して区別できます。スクリプトサブタグは、文書全体が複数種類のスクリプトで表現しうる場合にのみ使用してください。

言語タグの詳細な説明については、W3Cの記事「HTMLおよびXMLの言語タグ」を参照してください。

言語の指定方法

言語タグが何であるかを理解したところで、次はそれらのタグをマークアップ言語で表現する方法に移りましょう。

XHTML、SVG、EPUB パッケージ ドキュメントなどのXMLベースのマークアップ言語では、テキストの言語を宣言するための標準的な方法はxml:lang属性であり、この属性の値は言語タグです。

一番良い方法は、常にルート要素 (つまり、他のすべてのマークアップを含む要素) で言語を宣言することです。たとえば、XHTMLドキュメントの言語は次のように指定できます。

<html … xml:lang="en-US">
   …
</html>

言語情報は継承されるため、ルート要素に属性を設定すると、文書内のすべての要素とテキストの言語を自動的に宣言したことになります。

複数の言語が使われる場合

すべての出版物が単一の言語で書かれているわけではありません。多言語出版物では言語が頻繁に切り替わる場合があり、他の出版物では別の言語の短いフレーズや単語が含まれる場合もあります。

言語の変更を示すには、外国語のテキストを囲むタグで新しい言語を宣言するだけです。次の例に示すように、言語の変更はそのタグ内にのみ適用されます。

<p xml:lang="en">
    This is in English
    <span xml:lang="fr">mais ceci en fran&ccedil;ais</span>
    and back to English again.
</p>

注記

わかりやすくするために、これらの XHTML の例ではlang属性は省略されています。この属性を含めることがなぜ便利なのかについては、XHTMLおよびSVGのlangに関するセクションを参照してください。

マークアップ ドキュメントのテキストは、言語宣言を持つ最も近い祖先タグの言語を常に継承するため、言語を変更できる回数に制限はありません。

<p xml:lang="en">
    English
    <span xml:lang="fr">
       French
       <span xml:lang="es">Spanish</span>
       French
    </span>
    English
</p>

主要言語が変更されたときにそれを明示するのは、テキスト読み上げエンジン(TTS)が外国語のフレーズを正しく発音するのに重要です。正しい言語情報がない場合、テキスト読み上げエンジンはデフォルト言語のルールに従ってテキストを発音しようとします。

ただし、すでにデフォルト言語の一部となっている用語やフレーズについては、言語の変更を明示する必要はありません。「café」や「coup d'état」などの単語は、フランス語に由来していますが、現在では一般的な英語のフレーズと見なされています。英語のテキスト読み上げエンジンは、通常、これらの単語を英語として処理できます。

パッケージドキュメントの言語の設定

EPUB 出版物には複数の文書が含まれるため、コンテンツの言語を指定する必要がある場所は複数あります。最初に確認すべきなのはパッケージ ドキュメントです。

パッケージ ドキュメントは、作品に関するメタデータ、作品に属するリソース、およびそれらのリソースを読む順番の情報が含まれた、EPUB出版物の中心的な文書です。お察しのとおり、パッケージ ドキュメントにはタイトルや著者名などのメタデータが含まれているため、この情報がどの言語で書かれているかをリーディングシステムに伝えることは重要です。

最も一般的な方法は、次の例のように、 package要素に言語タグを宣言することです。

<package … xml:lang="en">

package要素はルート要素 (つまり、他のすべての要素を含む) であるため、この要素で指定した言語は、そこに含まれるすべてのメタデータに適用されます。

注記

EPUB2では、 package要素のxml:lang属性を使用したグローバル言語宣言は許可されていません。すべてのメタデータ タグでxml:lang属性を宣言する必要があります。

package要素にグローバル言語宣言があり、メタデータが別の言語で記述されている場合には、その宣言を上書きする必要があります。たとえば、書籍が翻訳版である場合は、 dc:creatorタグに言語宣言を追加すると、著者名の言語を明示できます。

<dc:creator xml:lang="fr">Albert Camus</dc:creator>

パッケージ ドキュメント メタデータには、メタデータ タグ内のテキストの言語を上書きできないという一つの制限があります。たとえば、外国語の用語や語句を含むタイトルがあり、その部分が別の言語であることは明示できません。そのタグのデフォルトの言語で読み取る必要があります。

パッケージドキュメントのメタデータで地域コード(たとえば、アメリカ英語の場合は「-US」を追加)を使用することはほとんど役に立ちません。通常、ユーザーはメタデータを自分の好みの地域の方言で発音されることを期待します。

パッケージ ドキュメントのメタデータの言語を設定することは、リーディングシステムに必要な言語情報を提供する最初のステップにすぎません。次のセクションで説明するように、パッケージドキュメント内の出版物コンテンツの言語を指定することも必要です。

注記

EPUBには現在、メタデータの翻訳を追加する方法がありません。次のように二つのタイトルを入れることはできます。

<dc:title>King Lear</dc:title>
<dc:title xml:lang="fr">Le roi Lear</dc:title>

リーディングシステムは、二番目のタイトルをフランス語のサブタイトルとして扱います (認識された場合)。ただし、 alternate-scriptプロパティを使用して、代替スクリプトでメタデータを提供することは可能です。

出版物の言語の設定

xml:lang属性はパッケージ ドキュメントのメタデータの言語を指定しますが、出版物のコンテンツの言語をリーディング システムに伝えるものではありません。メタデータとコンテンツの言語は同じであることが多いですが、これを指定する別の方法が含まれているのには十分な理由があります。たとえば、作品が多言語である場合や、特定の地域の方言で書かれている場合があります。

EPUB では、コンテンツの主要言語を識別するために、パッケージ ドキュメントのメタデータに少なくとも一つのdc:languageタグを含める必要があります。xml xml:lang属性と同様に、この要素の値は言語コードです。

<dc:language>es</dc:language>

出版物が複数の言語で書かれている場合(新しい言語学習ガイドなど)、各言語ごとにdc:language要素を繰り返すことができます(例 2を参照)。すべての言語を一つのタグに含めないでください。言語をリストアップする順序は、その言語の優先順位を示します(つまり、最初のdc:language要素は作品の主要言語を定義します)。

ただし、 dc:languageタグに含まれる言語情報は参考情報にすぎません。このプロパティを設定すると、リーディングシステムが出版物のレンダリングを最適化するのに役立ちます。この情報を使用して、たとえば言語固有の辞書をプリロードしたり、ユーザーがコンテンツを音声で読み上げようとしたときに遅延が発生しないようにテキスト読み上げエンジンをプリロードしたりすることができます。パッケージ ドキュメント メタデータの言語と出版物内の各コンテンツドキュメントの言語の両方を設定する必要があります。

コンテンツの言語を設定する

パッケージドキュメントの言語設定は重要ですが、各コンテンツドキュメントの言語の指定はさらに重要です。パッケージドキュメントに設定された情報は自動的にコンテンツドキュメントには波及しません。

EPUBがサポートする2つの主要な形式であるXHTMLおよびSVGのコンテンツドキュメントの言語設定は、パッケージドキュメントの言語を設定する方法と同じです。ドキュメントの主要言語は、各ドキュメントのそれぞれのルート要素に設定します (例 4を参照)。その後、用語やフレーズをHTMLまたはSVGのさまざまなタグで囲むことで、それらの用語やフレーズが別の言語であることを明示します。

<html … xml:lang="en" lang="en">
   …
   <body>
      …
      <p>
          As the French would say, there is a
          certain "<span xml:lang="fr" lang="fr">je ne
          sais quoi</span>" about the way that …
      </p>
      …
   </body>
</html>

注記

XHTMLドキュメントでの言語設定の詳細については、ナレッジベースの「HTML言語」トピックを参照してください。

lang属性

XHTMLおよびSVGドキュメントではxml:lang属性の使用は必須ですが、lang属性の追加もお勧めします。この場合、 xml:lang属性とlang属性で表現される言語タグは一致していなければなりません。例:

<html … xml:lang="en-US" lang="en-US">

両方の属性を追加することを推奨する理由は、EPUB出版物のXHTMLおよびSVGドキュメントが、規格の要件であるにもかかわらず、必ずしもXMLとして処理されるとは限らないためです。たとえば、ブラウザベースのリーディングシステムでは、デフォルトですべてのXHTMLドキュメントを通常の HTMLとして処理する場合があります。この場合、HTMLプロセッサはlang属性のみを認識するためxml:lang属性を無視します。常に両方の属性を追加することで、ドキュメントの処理方法に関係なく、正しい言語情報がユーザーに提供されるようになります。

関連リンク