要約
言語を設定すると、支援技術によってテキストを正しく解釈してレンダリングできるようになり、また、ユーザーはリーディングシステムの言語拡張機能を利用できるようになります。
テクニック
-
パッケージドキュメントのデフォルトの言語を
package
要素のxml:lang
属性を用いて設定します。 -
デフォルトの言語とは異なる言語を用いる場合には、パッケージドキュメントの要素に
xml:lang
属性を設定します。 -
パッケージドキュメントのメタデータセクションの
dc:language
要素に出版物の主な言語を記述します。[[WCAG-3.1.1]] -
EPUBコンテンツドキュメントのデフォルト言語を設定します。[[WCAG-3.1.1]]
-
EPUBコンテンツドキュメント内で言語の変更を記述します。[[WCAG-3.1.2]]
-
言語コードがBCP 47に準拠していることを確認します。[[WCAG-3.1.1]]
例
よくある質問
- 出版物で使用されているすべての言語をリストアップする必要がありますか?
いいえ、
dc:language
要素には、コンテンツの主要言語のみをリストアップする必要があります。たとえば、出版物に外国語の語句がいくつか含まれていてもその言語はリストアップする必要はありません。
解説
出版物の言語を設定することは、支援技術がテキストを正しく発音するのに役立つため、アクセシビリティを確保するための重要なステップです。言語宣言がないと、支援技術はユーザーのデフォルト言語でテキストを読み上げます。これにより、テキスト全体が誤って発音されたり (出版物が別の言語である場合)、個々の語句が誤って読み上げられたりする(文章内に外国語の語句が含まれる場合)可能性があります。
このチュートリアルでは、支援技術やリーディングシステムで情報を利用できるように、EPUB パッケージ ドキュメント、XHTML および SVG コンテンツ ドキュメントの言語を設定する方法について説明します。
言語の指定方法
言語タグが何であるかを理解したところで、次はそれらのタグをマークアップ言語で表現する方法に移りましょう。
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ç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
属性を無視します。常に両方の属性を追加することで、ドキュメントの処理方法に関係なく、正しい言語情報がユーザーに提供されるようになります。