要約

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

テクニック

例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 コンテンツ ドキュメントの言語を設定する方法について説明します。

言語タグとは何か

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

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

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

コード 言語
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要素はルート要素 (つまり、他のすべての要素を含む) であるため、この要素で指定した言語は、そこに含まれるすべてのメタデータに適用されます。

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

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

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

パッケージ ドキュメント メタデータの 1 つの制限は、メタデータ タグ内のテキストの言語を上書きできないことです。たとえば、外国語の用語や語句を含むタイトルがある場合、そのテキストが別の言語であるかどうかは識別できません。タグの既定の言語で読み取る必要があります。

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

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

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

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

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

出版物の言語の設定

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

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

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

出版物が複数の言語で書かれている場合(新しい言語学習ガイドなど)、各言語ごとにdc:language要素を繰り返すことができます(例 2を参照)。すべての言語を 1 つのタグに含めないでください。言語をリストアップする順序は、その言語の優先順位を示します(つまり、最初の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属性を無視します。常に両方の属性を追加することで、ドキュメントの処理方法に関係なく、正しい言語情報がユーザーに提供されるようになります。

関連リンク