Copyright © 2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
この文書は、Web上のマニフェストファイルおよび 類似の文書形式の仕様に関連する定義とベストプラクティスを提供します。
このセクションは、この 文書の公開時点における状態を説明します。現在のW3C 公開物の一覧と、この技術報告書の最新版は、 https://www.w3.org/TR/ のW3C技術 報告書索引で確認できます。
Web上の一部の仕様は、まとめて利用される一連のファイルまたはリソースの定義を扱います。一般的な 設計パターンは、どのリソースが 利用可能であるか、各種リソースをどのように使用すべきかを定義するマニフェストまたは設定ファイルを提供すること、または リソースのコレクションに関するさまざまな種類のメタデータを提供することです。この文書は、Web上のマニフェストファイルおよび類似の文書形式の仕様に関連する定義とベストプラクティスを提供します。
この文書は、国際化 ワーキンググループによって、 ノートトラックを用いた グループノートとして公開されました。
このグループノートは、 国際化ワーキンググループによって承認されていますが、 W3C自体またはその 会員によって承認されたものではありません。
これは草案文書であり、いつでも他の 文書によって更新、置換、または廃止される可能性があります。この文書を 作業中のもの以外として引用することは不適切です。
W3C 特許 ポリシーは、この 文書に関していかなるライセンス要件またはコミットメントも伴いません。
この文書は、 2023年11月03日版W3Cプロセス文書に準拠します。
Web上の一部の仕様は、まとめて利用される一連のファイルまたはリソースの定義を扱います。一般的な 設計パターンは、どのリソースが 利用可能であるか、さまざまなリソースをどのように使用すべきかを定義するマニフェストまたは設定ファイルを提供すること、または リソースのコレクションに関するさまざまな種類のメタデータを提供することです。
このような仕様の例には、Webapp [APPMANIFEST]、Miniapp [MINIAPP-MANIFEST]、およびePub [EPUB-33]が含まれます。
マニフェストファイル形式には通常、ローカライズできない構文的コンテンツまたはユーザー指定 値が含まれます。しかし、ほとんどのマニフェストファイル形式には、少なくとも一部のローカライズ可能な コンテンツフィールドも含まれます。ローカライズ可能な コンテンツ値を含むマニフェストファイル形式を定義する仕様は、ユーザーがそのマニフェストを異なる言語にローカライズする手段を提供する必要があります。この 文書では、一般的な設計の長所と短所、およびマニフェストの構築と 管理に関連するいくつかのベストプラクティスを扱います。
これら(および他の多くの)ベストプラクティスは、補足資料へのリンクとともに、 仕様開発者のための国際化ベストプラクティス [INTERNATIONAL-SPECS]にもあります。ここにあるベストプラクティスに 加えて、Web上の言語メタデータに関する追加のベストプラクティスは [STRING-META] にあります。中核的な 用語は、国際化用語集 [I18N-GLOSSARY]にもあります。
Web上でマニフェストファイルが使用される方法にはさまざまなものがあり、これらはマニフェストの ローカライズ戦略の選択に影響します。
パッケージ化されたマニフェスト。 一部のマニフェストは、 他のファイルとともにパッケージ化され、アプリケーションまたは文書を形成します。マニフェストは一般に、 より大きなコンテンツ集合の一部として消費され、そのコンテンツは単一の単位としてダウンロードされるため、この種のマニフェストは、 ロケールに基づく名前またはパスを持つ複数のファイルを使用するなど、よりモジュール化されたローカライズ戦略を使用できます。
簡略記述 マニフェスト。 一部のマニフェストは、アプリケーション、 文書、または他のリソースの簡略記述として使用されることを意図しています。この種のマニフェストは、多くの場合、 実際のリソースまたはその構成部分を取得する前段階として、クライアントによってダウンロードされます。複数のファイルを取得することには レイテンシ、サイズ、およびストレージ上の影響があるため、この種のマニフェストは通常、単一ファイルまたはその他の モジュール性の低いアプローチの使用を目指します。
もう1つの考慮事項は、その仕様で採用される言語ネゴシエーション 戦略です。マニフェストが(well-known URLにキャッシュされるのではなく) オンデマンドで生成できる場合、ローカライズはリクエストごとに適用される可能性があります。これは 簡略マニフェストのスタイルにより近いことを示します。他の場合、ある 実装はネゴシエーションできるが他の実装はできない場合には、仕様が 異なる戦略の使用を許可することが重要になることがあります。
現代の動作環境は非常に広範な利用可能ロケールの集合をサポートしており、 アプリケーション所有者は、多様な利用者を単一のローカライズされたアプリケーションまたは 文書で満たしたいと考えることが多い点に留意してください。仕様内の例は必然的に3つか4つ程度のロケールに制限されますが、 50以上の特定ロケールを持つ実際のアプリケーションは珍しくありません。
マニフェストは、ユーザーの言語優先設定を利用可能なローカライズ済みリソースに一致させる必要があります。ユーザーの
ロケール優先設定には、主言語サブタグだけでなく、より多くのものが含まれる場合があります。たとえば、
zh-Hans(「簡体字漢字で書かれた中国語」を意味する)のようなタグでは用字系、または
fr-CA(「カナダで使用されるフランス語」を意味する)のようなタグでは地域
—あるいはその両方—が含まれる場合があります。一部のシステムは、カレンダー、数字の形状、照合順序などの
調整を含む [BCP47] の拡張である
Unicodeロケール
識別子をサポートします。詳細は、[LTLI]を参照してください。
ローカライズ済みリソースをユーザーのロケール優先設定に一致させるには、通常、 [BCP47]の「lookup」照合方式や [CLDR]の「best match」方式のような仕組みを用いた 「ロケールフォールバック」が関係します。これらは、各リソース上の言語タグを比較し、 ユーザーの優先設定に完全に一致する最長のタグを探します。また通常、ローカライズ済みリソースのいずれも ユーザーの優先設定に一致しない場合に使用する既定ロケールもあります。
利用可能なリソース(5. パスと ファイル名のローカライズに見られるものなど)または何らかの形式の言語マップ内の項目(3.4 言語マップを参照)に対して言語タグを照合する場合、最初の候補一致が全体として最良の一致でない可能性があるため、 実装は利用可能なすべての値を調べる必要がある場合があります。
たとえば、次の言語マップを考えます。
"localized-resource": {
"en": {"value": "This is English"},
"en-GB": {"value": "This is UK English"},
"en-US": {"value": "This is US English"}
}
ユーザーのロケール優先設定が
en-GBまたはen-USである場合、最良一致は一覧に含まれています。明らかに、
enの項目はどちらの値にも一致すると考えられる可能性があるため、最良一致を見つけるには
一覧全体を読む必要があります。
ユーザーのロケール優先設定がen-AE(アラブ首長国連邦で使用される英語)である場合、
一覧の最良一致はenですが、best matchingの一部の実装は帯域外情報を適用して、
より長いタグに一致させる可能性があります。
ユーザーのロケール優先設定がfr-FR(フランスで使用されるフランス語)である場合、
どの値も一致せず、使用する値を選択するために何らかの既定化が必要になります。
最後に、ユーザーのロケール優先設定には、ロケール設定を調整するために使用されるものや言語変種などの
追加のサブタグが含まれる場合があります。調整されたロケールの例としては、
en-US-u-hc-h23(米国英語だが、「時刻周期」が24時間制に設定されている)があります。言語変種の例としては、
en-GB-oxendict(英国英語だが、Oxford English Dictionaryの綴り規則を使用する)があります。
ロケールフォールバックは、ユーザーの優先設定を利用可能な値の一覧と照合し、
完全一致が見つからない場合は最後のサブタグを削除して繰り返すように実装されます。これは
[BCP47]の言語タグ照合部分(特に [RFC4647])で「lookup」として説明されています。したがって、タグ
en-GB-oxendictは、上記の言語マップと次のように比較されます:
en-GB-oxendict // no match
en-GB // matches en-GB
en // if en-GB were not present, matches en
(default) // no match, use defaults
マニフェストに格納された自然言語 値は、どのような文書形式またはデータ構造と同様に、消費者が正常に使用するために、 言語および方向のメタデータを必要とします。要件に関する詳細情報は、[STRING-META]を参照してください。
マニフェスト内の文字列値には4つの一般的なシリアライズがあり、この セクションで説明します。仕様は、これらを組み合わせて完全なローカライズソリューションを構成することを意図しています。
非言語フィールド(すなわち、 人間の言語ではないデータを含む文字列)については、言語または方向のメタデータをその値に関連付けるべきではありません。これには、アプリケーション内部データ 値 [INTERNATIONAL-SPECS]が含まれることに注意してください。
消費者が
データに言語タグを割り当てる必要がある場合、値zxx(非言語)を使用すべきです。消費者がデータに基底
方向を割り当てる必要がある場合、値autoを使用すべきです。
単一の言語で現れるローカライズ可能な
テキストフィールドについては、値を表すためにデータ構造を使用します。
推奨される表現は、3つのフィールドを持つオブジェクトです。フィールドvalueは
実際の文字列を含みます。フィールドlangは妥当な [BCP47] 言語タグを含みます。フィールド
dirは文字列の基底方向(値
ltr、rtl、またはautoのいずれか)を含みます。
[STRING-META] のローカライズ可能な WebIDL辞書を参照してください。
単一言語のローカライズ可能なテキストフィールドは、ある文書に自然言語の 文字列が少ししかない場合に最も有効です。マニフェストのような文書に多くの自然言語文字列が含まれる場合、 これは非効率になります。これらの文字列を符号化する複雑さを減らすための回避策の1つは、 言語および基底方向について文書レベルの既定値を確立することです。言語は方向を意味しないため、 これらは別個の値です。それでも、上記の単一言語のローカライズ可能なテキストフィールド 表現を使用して、任意の文字列値でどちらの値も上書きできる必要があります。
[JSON-LD] の@context機構を利用できる仕様では、
@languageフィールドと@directionフィールドを使用して、文書レベルの既定値を提供します。
仕様が独自の文書レベルの既定値を定義する場合は、2つの任意フィールドを提供します:
languageと呼ばれるべきであり、妥当な [BCP47] 言語タグを含むように指定されるべきです。仕様は、
[BCP47] 言語タグが整形式であるかどうかだけを実装が確認すればよいと指定するべきです。
directionと呼ばれるべきであり、値
ltr、rtl、またはautoをサポートすべきです。
世界は単一言語ではありません。単一の言語のみを含む文書を持つことは、マニフェストをローカライズするために、 各言語ごとに文書の反復を多数提供することを意味します。これには、マニフェストを要求する際に 言語ネゴシエーションが必要になる場合もあります。
これに対処する1つの方法は、マニフェスト文書内の各ローカライズ可能なテキストフィールドに対して 多言語値を許可することです。
言語選択は、言語タグの文字列値をユーザーの優先 ロケールに単に完全一致させることではありません。通常のオブジェクト表現のローカライズ可能な テキストフィールドでは、値に関連付けられた言語タグを見つけるために、オブジェクトをデシリアライズする必要があります。これは、あるマニフェストファイル内に多くの値がある場合に非効率になることがあります。 このような場合のベストプラクティスは、言語マップを使用してローカライズ可能なテキスト値を整理することです。このような マップは選択の目的で言語タグを公開しますが、それでもマップの値側ではオブジェクト表現を使用します。これは、特定の 文字列値について言語と方向の両方を上書きする必要がある場合があるためです。
ローカライズされたマニフェストを作成するには、いくつかの一般的なアプローチがあります。それぞれに一定の利点があり (また一定の欠点もあります):
単一マニフェストのアプローチは、言語値の配列を使用してローカライズ可能なフィールドを定義することで、 ローカライズを可能にします。
単一マニフェストの利点には、次のものがあります:
このアプローチには、次のような欠点もあります:
単一マニフェストは、ローカライズ可能なコンテンツフィールドの数が限られている、かつ/または言語数が限られている 小さなソースファイルで最も有効です。ほとんどの単一マニフェストは、実際の選択を行うために、 何らかの種類の「言語索引付け」方式([JSON-LD] に見られるものなど)を定義します。
ロケール固有のマニフェストでは、サポートされる各言語またはロケールごとに個別のファイルを作成します。通常、
仕様はマニフェストファイルを割り当てて見つけるために、pathまたはfilenameの
どちらかに基づく構成方式を選択します。
ロケール固有のマニフェストの利点には、次のものがあります:
欠点には、次のものがあります:
一般的な折衷案は、ローカライズできないコンテンツの大部分またはすべてを含む中央マニフェストファイルを用意し、 ローカライズ可能なコンテンツを含む個別ファイルと組み合わせることです。場合によっては、中央 マニフェストファイルがローカライズ可能なコンテンツの既定値を含みます。中央マニフェストには、 利用可能なロケールのディレクトリまたは一覧(あるいは言語固有マニフェストのURL)を含めることもでき、 それによりクライアントは実際に利用可能なローカライズ済みファイルだけを取得しようとすれば済みます。
一部のマニフェストは、パスを変更することでマニフェストのローカライズ済みバリアントを保存することを選びます。 他のものは、ファイル名を変更することを好みます。
パスベースの保存には、複数のファイルをまとめてローカライズできるという利点があります。たとえば、 ローカライズ済みマニフェストは、ローカライズ済みのアイコン、ロゴ、スタイルシート、README、利用規約ファイルを マニフェストとともに含めることができます。新しい言語は、新しいディレクトリを追加することで追加できます。
パスベースのシステムには、ファイル名が一般に「すべて同じ」であり、特定のファイルの内容が ファイル名からは明らかでなく、アプリケーション階層内の場所によってのみ分かるという欠点があります。
ファイル名ベースの保存には、ファイルの内容がファイル名から明らかであり、 この点でファイルの管理がより簡単になる場合があるという利点があります。
マニフェストのローカライズは、マニフェスト内の文字列コンテンツが個々のデータ値ごとに 言語および方向のメタデータを提供する必要性をなくすものではないことに注意してください。マニフェストファイルは、 言語および方向についてファイル全体の既定値を定義できますが、特定のファイルはどちらの値も上書きできるべきです。詳細は [STRING-META]を参照してください。
一部のマニフェストでは、ローカライズ済みファイル内の値の「疎な配置」を許可します。たとえば、
en-US(英語、米国)ファイルは、米国固有の値を1つか2つだけ含み、
内容の大部分をen(英語)ファイルに依存する場合があります。仕様は、設定ミスや翻訳漏れを
避けるために、疎な配置が許可されるかどうか、およびそれがどのように機能するかを明示する必要があります。