ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

30 多言語サポートのサイトの構成

この章では、サイトの多言語サポートの構成について説明します。

この章には次の項が含まれます。

30.1 多言語サポートのサイトの構成の概要

多言語サポートのサイトを構成すると、そのサイトのユーザーはロケール(言語バージョン)の指定をアセットに割り当て、アセットの翻訳を作成できるようになります。多言語コンテンツ用のサイト固有の配信ルールを作成するオプションもあり、そのルールによって、どの言語バージョンのアセットをオンライン・サイトで表示するか、訪問者のリクエストがそのコンテンツでまだ用意できていない言語バージョンの場合はどう対処するかが決まります。

この章では、サイトの設計の計画作成および実装する場合に考慮する必要のあるトピックについて、多言語サポートの観点から説明します。そのうえで、多言語アセットと関連機能をサポートするためにサイトの構成に必要な手順について説明します。

この項の内容は、次のとおりです。

30.1.1 ディメンション

WebCenter Sitesのロケール指定は、ディメンションの概念によって実装されます。ディメンションとは、別の点では意味的に同一であるアセットを区別する識別子のことです。ロケール(アメリカ英語はen_US)は、同一のコンテンツに対する2つの翻訳を区別するディメンションの1タイプです。

ディメンションは、タイプ「ディメンション」のアセットで表されます。このアセット・タイプは、ユーザーが「ディメンション」アセット(サブタイプ「ロケール」)を作成できるよう、またコンテンツ・プロバイダがロケール指定を翻訳対象のアセットに割り当てることができるように、開発者がサイト単位で有効にする必要があります。


注意:

ユーザーは、ロケール指定が割り当てられていないアセットの翻訳を作成できません。


各「ディメンション」アセットは、サイトでロケールを表示します。たとえば、en_US「ディメンション」アセットはアメリカ英語、fr_CA「ディメンション」アセットはカナダ仏語を表します。コンテンツ・アセットにロケールが割り当てられると、その割当ては対応するアセット・タイプのassetType_Dim表に記録されます。

指定されたロケールでのコンテンツの公開では、オンライン・サイトのロケールを有効にする必要があります。つまり、ロケールを示すディメンション・アセットを配信システムに公開し、サイトのディメンション・セットにそのロケールを加える必要があります。 第30.1.2項「ディメンション・セット」を参照してください。

30.1.2 ディメンション・セット

ロケールをすでに作成してある場合には、少なくとも1つのディメンション・セットを作成することをお薦めします。ディメンション・セットとはディメンション・アセット(ロケール)のグループ化のことで、サイト訪問者へのコンテンツの配信に次のような影響を与えます。

  • ディメンション・セットは、オンライン・サイトで有効にするロケールの指定を定義します。つまり、ディメンション・セットはコンテンツが訪問者に表示される際の言語を指定します。たとえば、あるディメンション・セットにはヨーロッパ言語が含まれ、他のセットにはアジア言語が含まれるなどです。

  • ディメンション・セットは、ロケールに基づくコンテンツのフィルタリングを定義します。たとえば、訪問者がリクエストした時点でコンテンツが訪問者の希望言語で存在しない場合の処理方法などです。ディメンション・セットを配信システムに公開しない場合には、ロケールのフィルタリングは機能しません。ロケール・フィルタリングの詳細は、第30.2項「ロケール・フィルタリングでの作業」を参照してください。


    注意:

    ディメンション・セットは、WebCenter Sitesのユーザー・インタフェースの操作には影響を与えません。


オンライン・サイトの機能に対するロケール・フィルタリングでは、各ディメンション・セットで参照されている「ディメンション・セット」アセットと「ディメンション」アセットの両方を承認して配信システムに公開する必要があります。(参照されている「ディメンション」アセットは、それを参照する「ディメンション・セット」アセットに依存しているため、どちらもそれぞれの「ディメンション・セット」アセットで承認されている必要があります。)

30.1.3 サイト間の多言語サポート

複数のサイトで多言語サポートを設定している場合、次のいずれかのシナリオの実装を選択できます。

  • ロケールは作成するが、ディメンション・セットは作成しない

    このオプションを選択すると、コンテンツ・プロバイダは複数の言語でコンテンツを管理できますが、レンダリング時のロケール・フィルタリングは有効になりません。すべての必須言語での翻訳が最初から各アセットに存在している場合にのみ、このオプションを使用します。

  • ロケールとディメンション・セットを作成し、それらをサイト間で共有する

    このオプションには、複数のサイトで多言語サポートを有効にする最も簡単な方法が用意されています。この方法で設定したサイトでは、ディメンション・セットに格納されたプロパティ(オンライン・サイト上で表示が有効化されたロケール、ロケール・フィルタリング・メソッド、および該当する場合はレンダリング時のアセット翻訳を検索する際における階層フィルタのトラバース経路であるフォールバック階層)を共有します。詳細は、第30.2.2.3項「階層フィルタ」を参照してください。複数のターゲット・サイトにレプリケートする基本となるサイトを作成する場合には、ロケールのターゲット・サイトへの共有が最善の方法です。

  • 各サイトに個別のロケールとディメンション・セットを作成する

    このオプションでは、構成の複雑さが増加する分だけ、最高の柔軟性を得ることができます。サイトでこの方法を設定すると、ロケール・フィルタ・タイプやフォールバック階層などのプロパティを各サイトに合うよう調整できるというメリットがあります。


    注意:

    複数サイトで同一の言語を表すために「ディメンション」アセットの複製を作成できますが、不要な複雑さを招くため、お薦めしません。


  • 最後の2つのオプションの混在

    このオプションは、柔軟性と構成の複雑さのバランスが程よく取れています。可能なベスト・プラクティスとして、一意のロケールのプールを作成し、そのプールから各サイトで必要なロケールを共有し、必要に応じて各サイトでディメンション・セットを共有または作成するという方法があります。

30.1.4 マスター・アセット、翻訳および多言語セット

アセットを初めてロケールに割り当てる際には、アセットはマスター・ステータスまたはディメンションの親ステータスを取得します。マスター・ステータスを使用すると、多言語セット(コンテンツが意味的に同一であっても異なった言語で存在する一連のアセット)を構成できます。(これは、ディメンション・セットとは同一でない点に注意してください。ディメンション・セットはオンライン・サイトとアセットがレンダリングされる方法にのみ影響を及ぼします。)


注意:

マスター・アセットとディメンションの親は同じものです。マスター・アセットはWebCenter Sitesのユーザー・インタフェースに表示されます。ディメンションの親はOracle Fusion Middleware WebCenter Sitesタグ・リファレンス、データベース表の名前(assetType_DimPなど)およびエレメント・コードで使用されます。


たとえば、「記事」アセットをアメリカ英語(en_US)として指定し、いずれかのロケールがサイトで有効になっている翻訳を作成した場合(フランス語(fr_CA)やドイツ語(de_DE)など)、翻訳はそれらのディメンションの親(アメリカ英語のアセット)を指し、それらのロケールとマスターが相互に同等な意味であることを示します。

マスター・ステータスでアセットの翻訳を作成すると、アセットがコピーされ、選択したロケールがコピーに割り当てられます。次に、翻訳済のコンテンツを入力して新しいアセットとしてその翻訳を保存します。

この時点で、ソース・アセットとその翻訳は多言語セットにリンクされ、翻訳にそのマスターとしてソース・アセットまたはディメンションの親が採用されます。マスターではないセットのメンバーにマスター・ステータスを指定できますが、マスターになることができるのは一度に1つのセット・メンバーのみです。

リンク付けは、アセット・タイプに対してassetType_DimP表を介して実現されます。この表には次の情報が格納されています。

  • マスター(ディメンションの親)アセットのID

  • 翻訳アセットのID

  • その翻訳に割り当てられたロケール・ディメンション・アセットのID

WebCenter Sitesインタフェースでマスター・アセットまたはいずれかの既存の翻訳から翻訳の作成を開始できますが、多言語セットのすべての翻訳は常にディメンションの親(マスター)アセットを指しています。


注意:

ロケールを意識したアセットがリビジョン追跡されている場合、アセットのロケール・データへの変更(ロケール指定やマスター・ステータスなど)により新しいバージョンのアセットは生成されません。


30.1.5 翻訳およびアセット関係

アセットが翻訳される際にアセット関係を処理する方法の要約は、次の表のとおりです。

関係のタイプ 動作

アソシエーション

アソシエーションが含まれているアセットを翻訳すると、ソース・アセットに関連付けられているすべてのアセットが、自動的に翻訳と関連付けられます。その後、関連付けられたアセットを翻訳して、その翻訳済のバージョンを翻訳済の親アセットと関連付けるかどうかを選択できます。

コレクション

コレクション・アセットの翻訳を作成すると、新しいコレクション・アセットはソース・アセットのメンバー・アセットを保持します。次に、メンバー・アセットを翻訳し、翻訳済バージョンを新しいコレクション・アセットに格納して、古いコレクションから引き継いだメンバー・アセットを置き換えることができます。

静的リスト推奨

新しい言語バージョンの静的リスト推奨を作成すると、新しい推奨アセットには、ソース・アセットのメンバー・アセットが保持されます。次に、メンバー・アセットを翻訳し、翻訳済バージョンを新しい推奨アセットに格納して、古いコレクションから引き継いだメンバー・アセットを置き換えることができます。

動的リスト推奨

動的リスト推奨はエレメント・コードで移入されるため、影響を受けません。

関連アイテム推奨

関連アイテムのアソシエーションが含まれているアセットを翻訳すると、ソース・アセットに関連付けられているすべてのアセットが、自動的に翻訳と関連付けられます。その後、関連付けられたアセットを翻訳して、その翻訳済のバージョンを翻訳済の親アセットと関連付けるかどうかを選択できます。

アセット・タイプの属性

アセット・タイプの属性によるアソシエーションが含まれているアセットを翻訳すると、ソース・アセットに関連付けられているすべてのアセットが、自動的に翻訳と関連付けられます。その後、関連付けられたアセットを翻訳して、その翻訳済のバージョンを翻訳済の親アセットと関連付けるかどうかを選択できます。

埋込みリンク

埋込みリンクは影響を受けません。埋込みリンクを含むアセットが翻訳されるとは、リンク対象のコンテンツの対応する翻訳(存在する場合)を指すように、リンクを手動で更新する必要があります。


レンダリング時のアセット関係の処理の詳細は、第30.2項「ロケール・フィルタリングでの作業」を参照してください。

30.1.6 承認依存性

あるアセットの編集により別の承認ステータスが変更される場合、2つのアセット間には承認依存性が存在します。ローカライズ済アセットに影響を与える承認依存性の要約は、次の表のとおりです。

依存性 アセット承認への影響

Exists依存性は、ローカライズ済アセットと割り当てられたロケールを示す「ディメンション」アセットの間に存在します。

ローカライズ済アセットの公開を承認するには、対応する「ディメンション」アセットも承認されている必要があります。

多言語セットでは、マスター・アセットとそれにリンクされている各翻訳間にExists依存性が存在します。

アセットの最初の翻訳を作成する場合には、アセットとその翻訳の両方を承認する必要があります。

翻訳を承認するには、マスター・アセットが承認済の場合を除いて、対応するマスター・アセットも承認する必要があります。

次の場合には、すべてのメンバーを再承認する必要があります。

  • 新規翻訳をセットに追加したり、既存の翻訳をセットから削除する場合。

  • セットのマスター・アセットを編集する場合。

  • セットの別のメンバーをマスターとして指定する場合。

Exists依存性は、「ディメンション・セット」アセットとそのディメンション・セットで有効化されているロケールを示す「ディメンション」アセットの間に存在します。

ディメンション・セットを承認するには、対応する「ディメンション」アセットも承認されている必要があります。


30.2 ロケール・フィルタリングでの作業

理想的には、多言語サイトは起動される前にそのコンテンツに関して全部そろっていることが望ましいです。つまり、すべてのアセットとそれらの関連事項が必要な言語ですべて存在しているのが理想です。しかし、多くの場合、そうではありません。そのような場合、ロケール・フィルタを使用して、訪問者が指定した環境と言語プリファレンスに応じて、レンダリング時にサイトに表示されるアセットの言語バージョンを決定します。たとえば、リクエストされたアセットがリクエストされた言語に存在しない場合、ビジネス・ロジックに対応を決定するように指定できます。

ロケール・フィルタリングを使用して、元のコンテンツがオンライン・サイトに公開された後に、リクエストされた翻訳の作成をコンテンツ・プロバイダに許可することで、編集作業を徐々に広げていくことができます。ロケール・フィルタリングにより、欠落した翻訳が配信システムに公開されたらただちにサイトで自動的にそれらをピックアップできます。

ロケール・フィルタリングにより配信システムで追加のロードが取り込まれる点に留意してください。追加のロードの容量は、フィルタリング・ロジックの複雑度に応じて異なります。

この項の内容は、次のとおりです。

30.2.1 ロケール・フィルタリングによるアセット関係の処理

ロケール・フィルタリングの実装を選択する方法は、サイトのアセット関係を構造化する方法に影響を与えますし、オンライン・サイトの動作の方法に応じて、その逆もあります。

次のオプションのいずれかの実装を選択できます。

  • 各ロケールに対して異なるアセット関係のツリーを保持する

    アセットのレンダリング時に、このモデルはリクエストされたアセットに関連付けられたどのようなアセットでもレンダリングします。

    たとえば、英語とフランス語のアセットが存在し、バージョンごとに関連付けられたアセットの一意のセットが存在する場合、各バージョンは関連付けられた個別のアセットにレンダリングされます。フィルタリングは、訪問者が指定した言語プリファレンスと一致するリクエスト済アセットのバージョンを検索して配信する場合のみ使用されます。関連付けられたアセットは、すべての必要な言語に翻訳されていると見込まれています。

    このモデルでは、各言語に対して完全に独立したコンテンツが許可されます。このモデルをFirst Site IIサンプル・サイトで使用します。

  • 同じアセット関係ツリーをすべてのロケールに使用する

    アセットのレンダリング時に、このモデルは、訪問者が指定する言語プリファレンスとは無関係に、リクエストされたアセットのうち関連付けられたアセットを、リクエストされたアセットの特定言語バージョンと関連付けられたアセットに置換します。

    たとえば、英語とフランス語のアセットが存在し、バージョンごとに関連付けられたアセットの一意のセットが存在する場合、訪問者が言語プリファレンスでフランス語を指定すると、フィルタリングはリクエストされたアセットのフランス語バージョンを検索して配信しますが、フランス語バージョンの関連付けられたアセットのかわりに英語バージョンの関連付けられたアセットに置換されます(フィルタリングが関連付けを導出する言語バージョンは英語であるという仮定により)。

    このモデルでは、すべての言語間で確実にコンテンツが一貫しています。

  • 上記の2つのモデルの混在

    サイトに最大量の柔軟性とカスタマイズが許可されます。2つのモデル間の最適の比率は、サイトで対象とする動作に応じて異なります。

30.2.2 含まれるロケール・フィルタ

WebCenter Sitesでは次のロケール・フィルタが提供されています。

必要に応じて、カスタム・ロケール・フィルタ実装のオプションもあります。カスタム・フィルタの詳細は、第30.2.3項「カスタム・ロケール・フィルタ」を参照してください。

実装を選択したフィルタのタイプに応じて、フィルタの対象となるアセットは次の条件のうちの1つまたは両方を満たしている必要があります。

  • アセットには、割り当てられたロケールが指定されている必要があります。ロケールの指定がないアセットは、ロケール・フィルタで無視されます。

  • 相互の翻訳であるアセットは、多言語セットにリンクされている必要があります(マスター・アセットによって相互の翻訳として指定されます)。そうでない場合は、フィルタは必要な翻訳の検索を実行できません。

30.2.2.1 簡易フィルタ

簡易フィルタは、コンテンツが複数の言語で存在しているサイトで、1つの言語のみでレンダリングされる場合に選択できます。フィルタでは次がチェックされます。

  • 要求されたアセットが訪問者によって指定された言語のものであるかどうか

  • アセットのロケールがサイトのディメンション・セットにリストされているかどうか

両方の条件に一致していると、フィルタはレンダリング用のテンプレートにアセットを渡します。そうでない場合にはレンダリングされません。

簡易フィルタでは、配信システムのパフォーマンスへの影響は最小になりますが、作業する必要のある編集作業量が増加します。アセットは必要な言語バージョンで存在する必要があり、そうでないとオンライン・サイトに表示されないためです。

30.2.2.2 簡易参照フィルタ

簡易参照フィルタは、1言語でのみレンダリングする必要のあるサイトで、複数言語でコンテンツが存在している可能性があっても、レンダリング時にすべての必要な翻訳が存在している保証のないサイトで理想的です。フィルタでは次がチェックされます。

  • 要求されたアセットが訪問者によって指定された言語のものであるかどうか

  • アセットのロケールがサイトのディメンション・セットにリストされているかどうか

リクエストされたアセットが訪問者の希望した言語で存在しない場合には、フィルタはアセットの翻訳をチェックして適切な代替アセットを検索します。フィルタが一致する翻訳を検出した場合には、それをテンプレートに渡します。そうでない場合には、レンダリングされません。(翻訳のロケールがサイトのディメンション・セットに存在しない場合にも、フィルタは何も返しません。)

このフィルタでは、パフォーマンスと機能性の間の合理的なバランスが提供されます。検索の問合せにより配信システムへの負荷は多少増加しますが、アセット作成のための編集作業の量は軽減されます。必要な翻訳は、元のコンテンツがオンライン・サイトに公開された後で作成できるためです。欠落した翻訳が配信システムに公開されると、検索メカニズムがただちにそれらをピックアップします。

FirstSiteIIサンプル・サイトでは、このフィルタがデフォルト・ロケール・フィルタとして使用されています。

30.2.2.3 階層フィルタ

階層フィルタは、リクエストされたアセットのロケールが訪問者によりリクエストされたロケールと一致しているかどうかをチェックします。ロケールが一致しない場合、フィルタはアセットの翻訳をチェックして、適切な代替の翻訳が存在しないか確認します。フィルタが一致する翻訳を検出した場合、それをテンプレートに渡します。検出しない場合には、サイトのディメンション・セットを構成する際に設定したフォールバック階層に従って、リクエストされたアセットの翻訳に置換します。フォールバック階層では、フィルタがリクエストされたアセット用に置換する必要のある言語バージョンとその順番が指定されます。

たとえば、次の階層について見てみましょう。

  • · en_US(アメリカ英語)

    • · de_DE(独語)

      • · de_CH(スイス独語)

      • · de_AT(オーストリア独語)

  • · fr_FR(仏語)

    • · fr_BE(ベルギー仏語)

    • · fr_CA(カナダ仏語)

  • · en_UK(イギリス英語)

この例では、訪問者がスイス独語(de_CH)のアセットをリクエストした場合、フィルタはアセットの翻訳を検索してアセットのスイス独語バージョンを検出すると、そのバージョンをテンプレートに渡します。フィルタがスイス独語バージョンを検出できない場合、階層パス内でその次に最適なロケールの独語(de_DE)にフォールバックします。同様に独語の翻訳が存在しない場合、フィルタはツリーの最上階に達するまで指定されたパスを階層内で追跡します。そのプロセスで一致が検出されない場合は、何もレンダリングされません。

前述の例では、訪問者が単一の希望言語を指定する場合について説明しました。ユーザーが複数の希望言語を指定する場合(通常、順序付けられたリストのフォームで)、フィルタは訪問者の最も希望する言語に対するフォールバック階層で一致する検索を試行します。一致が検出されない場合には、フィルタはフォールバック階層で一致が検出されるまで、訪問者のリストで次の言語をチェックします。その場合、前述のように、フィルタは一致するロケールからフォールバック・ツリーの最上位までパスを追跡して、リクエストされたアセットの翻訳の置換を試行します。

たとえば、ユーザーの希望する言語が日本語、仏語、英語(その順番で希望)だとすると、フィルタはフォールバック階層で日本語の検出を試行します。日本語が階層に存在しない場合には、次に仏語の検出が試行されます。仏語は階層に存在するので、仏語からツリーのルート・ノードへのパスが追跡され、この項で前述した例のように、そのパスに従って置換が施行されます。

階層フィルタは強力で便利ですが、次のような欠点があります。

  • 追加のデータベース問合せは、フィルタの負担が配信システムのパフォーマンスにかかります。パフォーマンス・ヒットを最小限にするには、できるだけ多くの必要な言語がコンテンツに存在するように編集して、フィルタのアクティビティを最小限にする必要があります。(別のフィルタの使用を選択することも可能です。)

  • オンライン・サイトに表示するアセットに対するコントロールは、もっぱらサイト開発者や管理者の手にゆだねられます。これは、フィルタが、サイトへの訪問者が指定するプリファレンスの順ではなく(各訪問者からの複数言語のプリファレンスを受け入れるようにサイトが設定されていると仮定して)、ディメンション・セットで構成されたフォールバック・ツリーを追跡するためです。

30.2.3 カスタム・ロケール・フィルタ

サイトの設計に応じて、カスタム・フィルタの作成を決定できます。たとえば、サイトの設計により、ディメンション・セットで定義されたフィルタではなく、訪問者が指定するロケールの優先度を優先的に選択する階層(フォールバック)フィルタがコールされるとします。そのような場合は、「ディメンション・セット」アセットの「編集」フォームのフィールドで、カスタム・フィルタ・クラスを指定できます。

30.2.4 構成依存性

サイトにロケール・フィルタリングを組み込むことを決定した場合、結果として導入される追加の構成の依存性を説明する必要があります。構成の依存性によって、ページが配信システムでキャッシュされる方法が指定されます。

30.2.4.1 アセットの検索連鎖

ロケール・フィルタリングを使用してアセットの翻訳を検索する場合、検索プロセス時にロードされるアセットに基づいて、次のファクタがページのキャッシュ方法を指定します。

  • 採用されるフィルタリング・ロジック

  • 検索リクエスト元からのページとアセット

  • 訪問者が指定する言語プリファレンス

リクエストされたアセットを含むキャッシュ済ページは、検索プロセス時にロードされたすべてのアセットに依存します。したがって、検索プロセス時にロードされたアセットが変更されると、影響を受けたページがキャッシュからフラッシュされます。

たとえば、簡易参照フィルタと次の多言語セットについて見てみましょう。

· en_US(マスター)

  • · fr_FR(翻訳)

  • · de_DE(翻訳)

訪問者が仏語バージョンを含むページをリクエストしているが、その訪問者の言語プリファレンスが独語の場合、検索連鎖は次のようになります。

fr_FR > en_US > de_DE

この例では、フィルタはまず仏語バージョンにリンクされたマスター・アセットをロードし、次にそのマスター・アセットを使用して独語バージョンを検索するため、3つのアセットがすべてロードされます。したがって、これら3通のアセットのいずれかが変更されると、影響を受けたページがキャッシュからフラッシュされます。

他方、ユーザーがセットのマスター・アセットであるアメリカ英語バージョンをリクエストすると、検索連鎖はもっと短くなります。

fr_FR > en_US

この場合、仏語バージョンとアメリカ英語バージョンがロードされますが、独語バージョンはロードされません。したがって、独語バージョンを変更すると、対応するページがキャッシュからフラッシュされますが、仏語バージョンやアメリカ英語バージョンを変更してもフラッシュされません。

WebCenter Sitesに含まれるロケール・フィルタで採用される検索メカニズムの詳細は、第30.2.2項「含まれるロケール・フィルタ」を参照してください。

第30.2.4.2項「キャッシング・ルール」では、多言語アセットに適用されるキャッシング・ルールについて説明します。

30.2.4.2 キャッシング・ルール

翻訳が検索されて影響を受けるページがキャッシュされると、次のいずれかが発生するたびにページがキャッシュからフラッシュされます。

  • 新しい言語が多言語セットに追加された

  • ページのレンダリング時に検索連鎖の一部だった翻訳が編集された

  • 多言語セットのメンバーの翻訳が削除された

  • セットのマスター・アセットが編集された

  • セットの別のメンバーがマスターとして指定された

30.2.5 サイトへのフィルタリング・サポートの追加

ロケール・フィルタリングのサポートをサイトに追加するには、サイトで使用するテンプレートとエレメント・コードを変更する必要があります。

テンプレート・コードがアセットのc/cid値を介してアセットをフェッチすると、ロケール・フィルタは受信c/cid値でのフィルタのビジネス・ロジックを実行し、結果のc/cid値(またはなし)をレンダリング対象のテンプレートに返します。

サイトの構造は、テンプレートへのロケール・フィルタリングの実装方法に影響を及ぼしますし、その逆の場合もあります。また、異なるシナリオで、サイトの動作を指定します。

たとえば、5つの記事があり、それぞれに2つの言語en(英語)とfr(仏語)のバージョンが存在するとします。その記事は、a1ena1fra2ena2frなどになります。これらの記事をコレクションに配置し、次のいずれかの方法でロケール・フィルタリングを実装します。

  • 英語コレクションc1enを作成して、それに英語の記事のすべてを割り当てます。この方法では、コレクションをレンダリングする前に、c1enアセットのc/cidに簡易フィルタを実行し、c/cid値をフィルタリングせずにその子をレンダリングします。c1enコレクションが単一言語であることを信頼しているためです。

  • 多言語コレクションを作成し(それにロケールを割り当てないで)、その記事を任意の言語に追加します。次に、各記事をレンダリングする際に、記事のc/cid値をフィルタリングして、記事が訪問者に指定されたロケールでレンダリングされるようにします。

この項の残りの部分では、FirstSiteIIサンプル・サイトに基づいてコードの例を示します。多言語サポートの方法を把握するために、FirstSiteIIのコードを調べることをお薦めします。

30.2.5.1 テンプレートへのフィルタリングの追加

通常、フィルタリング・コードをユーティリティのエレメントに配置して、そのエレメントをテンプレートの最上部でコールしてc/cid値を処理します。

次の例では、FSIILayoutテンプレートがrender:lookupタグを介してFSIICommon/Multilingual/Filterエレメントのアセットに格納されたフィルタ・コードをコールする方法を示しています。

<%-- Execute the Dimension filter to look up the translated asset that corresponds to the locale that the visitor requested. --%>
<render:lookup site='<%=ics.GetVar("site")%>' varname="Filter" key="Filter" match=":x" tid='<%=ics.GetVar("tid")%>' />
<render:callelement elementname='<%=ics.GetVar("Filter")%>' scoped="global"/>

30.2.5.2 訪問者のロケール・プリファレンスの取得と保持

フィルタリングを稼働するには、訪問者に希望の言語(ロケール)の指定を許可する必要があります。このプリファレンスは、サイト全体に伝搬される必要があります(すべてのテンプレートに渡される)。

次の例では、これをFSIIWrapperエレメントで実現する方法を示します。この例の最後のセクションでは、セッション変数(例の初めの部分で、セッション変数が存在することを確認します)から値を取得してロケール変数を設定する方法を示しています。

<%-- The session variable locale refers to the id of the dimension with the 
subtype of Locale that specifies which language the site is to be rendered in. 
Users can select the locale of their choice from a menu on every page of the 
site, and once selected, it is stored in session. A default locale is mapped to 
this CSElement and is set if it has not already been set. --%>
<ics:if condition='<%=ics.GetSSVar("preferred_locale") == null%>'>
<ics:then>
<render:lookup site='<%=ics.GetVar("site")%>' varname="default:locale:name" key='DefaultLocale' ttype="CSElement" tid='<%=ics.GetVar("eid")%>' match=":x"/>
<asset:load name="defaultLocale" type="Dimension" field="name" value='<%=ics.GetVar("default:locale:name")%>'/>
<asset:get name="defaultLocale" field="id" output="default:locale:id"/>
<ics:setssvar name="preferred_locale" value='<%=ics.GetVar("default:locale:id")%>'/>
</ics:then>
</ics:if>
<%-- Call the wrapped child page. There is no need to look up the template or to enable any special PageBuilder functionality, so we can use the render:satellitepage tag in this situation. --%>
<render:satellitepage pagename='<%=ics.GetVar("childpagename")%>' packedargs='<%=ics.GetVar("packedargs")%>'>
<render:argument name='c' value='<%=ics.GetVar("c")%>'/>
<render:argument name='cid' value='<%=ics.GetVar("cid")%>'/>
<render:argument name='p' value='<%=ics.GetVar("p")%>' />
<render:argument name="locale" value='<%=ics.GetSSVar("preferred_locale")%>'/>
</render:satellitepage>

30.2.5.3 検索結果のフィルタリング

オンライン・サイトに検索機能が備わっている場合、訪問者へ返された検索結果を、訪問者の言語プリファレンスに基づいてフィルタリングするように選択できます。

次の例は、Page/SearchDetailViewテンプレートが検索結果のIListをフィルタリングして、問合せがすべての言語に対して実行され、目的の結果のみが返されるようにする方法を示しています。

<%-- look up the dimension set and filter the ProductList results --%>
<asset:load name="GlobalDimSet" type="DimensionSet" field="name" value='<%=ics.GetVar("GlobalDimSet")%>' />
<dimensionset:filter name="GlobalDimSet" tofilter="ProductList" list="ProductList">
<dimensionset:asset assettype="Dimension" assetid='<%=ics.GetVar("locale")%>'/>
</dimensionset:filter>

詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。さらに、FirstSiteIIサンプル・サイトのコードを調べて、多言語サポートを実装する方法を確認してください。

30.3 サイトに対する多言語サポートの計画

多言語サポートのサイトの構成を開始する前に、次の前提条件が満たされているか確認します。これらの決定事項についてサイト管理者と合意しておくことがベストです。

  1. 所属する組織のコンテンツ管理のニーズに基づいて、最初にサイト(複数可)に実装する言語の数を決定します。次のいずれかを実行できます。

    • サイト(複数可)を作成して最初に単一言語をサポートし、必要に応じてその他の言語のサポートを追加する。

    • 前もってすべてのサイトで取り込む言語すべてを計画し、適切なロケールを作成しておく。

  2. 既存のロケールとディメンション・セットを新しいサイト(複数可)で共有するか、個別のものを作成するかを決定します。詳細は、第30.1.3項「サイト間の多言語サポート」を参照してください。

  3. アセット関係をロケールの観点でレンダリング時に処理する方法を決定し、その決定に合ったロケール・フィルタリング・メソッドを選択します。この選択事項は、必要とするレベルのオートメーション、配信システムのパフォーマンスおよび編集の作業負荷の間のバランスをうまくとる必要があるため、サイトの管理者と合意しておくことがベストです。詳細は、第30.2項「ロケール・フィルタリングでの作業」を参照してください。次の事項に注意してください。

    • 別のフィルタリング・メソッドには、配信システムへのパフォーマンス・ヒットを犠牲にした異なったレベルのオートメーションが用意されています。フィルタが複雑になればなるほど、パフォーマンス・ヒットは高くなります。たとえば、簡易参照フィルタには階層フィルタより高いパフォーマンスが備わっています。

    • 実装するフィルタリング・メソッドに応じて、サイト・コンテンツへの編集作業は徐々に広げていくことができます。オリジナル・コンテンツが作成されてライブ・サイトに公表された後で、翻訳を作成できます。実装するフィルタリング・ロジックは、必要とされる言語バージョンで存在していないコンテンツに対して実行する手順を決定します。

  4. 単一言語サイトを多言語サイトに変換する場合には、デフォルト・ロケールをサイトのアセットに割り当てる際に使用するエレメント・コードを取得します。FirstSiteIIサンプル・サイトに基づいたサンプル・コードは、第30.4.10.1項「デフォルト・ロケールの一括割当て用サンプル・エレメント・コード」に記載されています。


    注意:

    多言語セットを備えたサイトをレプリケートする場合、マスター・アセットがターゲット・サイトで(共有またはコピーのいずれかにより)使用できることを確認してください。使用できない場合は、セット・メンバーはターゲット・サイトの相互の翻訳にリンクされなくなります。


30.4 サイトに対する多言語サポートの構成

この項では、多言語サポートのサイトを構成する際に必要な手順を説明します。

この項の内容は、次のとおりです。

30.4.1 構成のクイック・リファレンス

この項では、サイトの多言語サポートの構成に必要な手順の概要を述べます。構成プロセスの際には、このリストをクイック・リファレンスとして使用してください。

サイトの多言語サポートを構成するには

  1. 必要な決定と準備を行います。詳細は、第30.3項「サイトに対する多言語サポートの計画」を参照してください。

  2. 「ディメンション」アセット・タイプおよび「ディメンション・セット」アセット・タイプをサイトで有効にします。手順は、第30.4.2項「「ディメンション」アセット・タイプおよび「ディメンション・セット」アセット・タイプの有効化」を参照してください。

  3. 「ディメンション」アセット・タイプの「ロケール」サブタイプをサイトで有効にします。手順は、第30.4.3項「「ディメンション」アセット・タイプの「ロケール」サブタイプの有効化」を参照してください。

  4. 目的のロケールを作成または共有します。手順は、次の各項を参照してください。

    新規ロケールの作成か既存ロケールの共有のいずれかを決定する際のヘルプは、第30.1.3項「サイト間の多言語サポート」を参照してください。

  5. ディメンション・セットを作成または共有します。手順は、次の各項を参照してください。

    新規ディメンション・セットの作成か既存ディメンション・セットの共有のいずれかを決定する際のヘルプは、第30.1.3項「サイト間の多言語サポート」を参照してください。

  6. (オプション)既存の単一言語サイトを多言語サイトに変換する場合、デフォルトのロケールをサイトの各アセットに割り当てるエレメント・コードを実行します。手順については、第30.4.10項「デフォルト・ロケールのサイト内アセットへの一括割当て」を参照してください。この項には、サイトでカスタマイズできるサンプル・コードが記載されています。

  7. サイトで使用するテンプレートを変更して、ディメンション・セットの構成時に選択したロケール・フィルタのサポートを追加します。このプロセスの概要は、第30.2.5項「サイトへのフィルタリング・サポートの追加」を参照してください。


    注意:

    ロケール・フィルタリング以外にも、次のサイト機能を実装する必要があります。

    • 訪問者の言語プリファレンスの指定を許可する

    • 訪問者の言語プリファレンスをサイト全体に伝搬する(サイトのすべてのテンプレートに渡す)

    • セッションの間、訪問者の言語プリファレンスを維持する


30.4.2 「ディメンション」アセット・タイプおよび「ディメンション・セット」アセット・タイプの有効化

サイトで「ディメンション」アセットと「ディメンション・セット」アセットを作成する前に、対応するアセット・タイプとサブタイプを有効化する必要があります。この手順では、「ディメンション」アセット・タイプと「ディメンション・セット」アセット・タイプをサイトで有効にする方法を説明します。次の手順では、サイトで「ディメンション」アセット・タイプの「ロケール」サブタイプを有効にする方法を説明します。

サイトで「ディメンション」アセット・タイプと「ディメンション・セット」アセット・タイプを有効にするには

  1. WebCenter Sitesインタフェースにログインして、アセット・タイプを有効化するサイトを選択します。

  2. Adminインタフェースを選択します。

  3. ツリーで、「管理」タブを選択します。

  4. 「管理」タブで、次の階層をドリル・ダウンします。

    1. 「サイト」ノードを開きます。

    2. 「サイト」ノードで、目的のサイトに対応するノードを開きます。

    3. 必要なサイト・ノードで、「アセット・タイプ」ノードを開きます。

    4. 「アセット・タイプ」ノードで、「有効化」ノードをダブルクリックします。

    WebCenter Sitesに「アセット・タイプの有効化」フォームが表示されます。

  5. 「アセット・タイプの有効化」フォームで、「ディメンション」アセット・タイプと「ディメンション・セット」アセット・タイプの隣にあるチェック・ボックスを選択します。

  6. 「アセット・タイプの有効化」をクリックします。

    WebCenter Sitesに「スタート・メニューの選択」フォームが表示されます。

  7. 「スタート・メニューの選択」フォームで、すべてのチェック・ボックスを選択し、「アセット・タイプの有効化」をクリックします。

    WebCenter Sitesにアセット・タイプがサイトで有効化されたことを確認するメッセージが表示されます。

30.4.3 「ディメンション」アセット・タイプの「ロケール」サブタイプの有効化

ロケールをサイトのアセットに割り当てる前に、サイトで「ディメンション」アセット・タイプの「ロケール」サブタイプを有効化する必要があります。

サイトで「ディメンション」アセット・タイプの「ロケール」サブタイプを有効化するには

  1. WebCenter Sitesインタフェースにログインして、サブタイプを有効化するサイトを選択します。

  2. Adminインタフェースを選択します。

  3. ツリーで、「管理」タブを選択します。

  4. 「管理」タブで、次の階層をドリル・ダウンします。

    1. 「アセット・タイプ」ノードを開きます。

    2. 「アセット・タイプ」ノードで、「ディメンション」ノードを開きます。

    3. 「ディメンション」ノードで、「サブタイプ」ノードをダブルクリックします。

    WebCenter Sitesに「アセット・タイプのサブタイプ: ディメンション」フォームが表示されます。

  5. フォームで、「ロケール」サブタイプの隣にある「編集」(鉛筆)アイコンをクリックします。

    WebCenter Sitesに「ディメンション・サブタイプの編集: ロケール」フォームが表示されます。

  6. 「サイト」フィールドで、「ロケール」サブタイプを有効にするサイトを、[Ctrl]キーを押しながらクリックします。


    注意:

    既存のサイトの選択をそのままにするには、サイト名を[Ctrl]キーを押しながらクリックする必要があります。単にサイト名をクリックした場合は、他の選択済サイト(ある場合)の選択が解除されます。


  7. 「保存」をクリックします。

30.4.4 ロケールの作成

新規ロケールをサイトに追加するには、次の手順を実行して、目的のロケールを示す「ロケール」サブタイプの「ディメンション」アセットを作成します。


注意:

作成するロケールがWebCenter Sitesシステムの別のサイトにある「ディメンション」アセットで示されている言語を指定する場合、その言語を示す既存の「ディメンション」アセットを現在のサイトで共有して冗長性を回避します。


ロケールを作成するには

  1. ボタン・バーで、「新規」をクリックします。

  2. アセット・タイプのリストで、「新規ディメンション」を選択します。

  3. WebCenter Sitesに「新規ディメンション」フォームが表示されます。

  4. 「新規ディメンション」フォームで、次の手順を実行します。

    1. 「名前」フィールドに、そのロケールの説明的な名前を入力します。ベスト・プラクティスとして、次の表記規則を使用することをお薦めします。

      xx_YY

      ここで:

      • xxは2文字のISO 639-1言語コード(仏語の場合はfr)

      • YYは2文字のISO国コード(カナダの場合はCA)

      前述の例をまとめると、名前fr_CAはカナダ仏語を示します。

      1. 「説明」フィールドに、このロケールが表す言語の説明を入力します。

      2. 「サブタイプ」ドロップダウン・リストで、「ロケール」を選択します。

      3. 「保存」をクリックします。

30.4.5 ロケールの別のサイトへの共有

ロケールを別のサイトで共有するには、対応する「ディメンション」アセットを共有する必要があります。

ロケールを別のサイトで共有するには

  1. WebCenter Sitesインタフェースにログインして、共有するロケールに対する「ディメンション」アセットが存在するサイトを選択します。

  2. Adminインタフェースを選択します。

  3. 目的の「ディメンション」アセットを検索し、その「調査」フォームを開きます。

    1. ボタン・バーで、「検索」をクリックします。

    2. アセット・タイプのリストで、「ディメンションの検索」を選択します。

    3. 目的の検索条件(ある場合)を指定して、「検索」をクリックします。

    4. 検索結果のリストで、目的のアセットに移動して名前をクリックします。

      アセットが「調査」フォームで表示されます。

  4. アクション・バーで、「ディメンションの共有」を選択します。

    WebCenter Sitesに「ディメンションの共有」フォームが表示されます。

  5. 「ディメンションの共有」フォームで、「ディメンション」アセットを共有するサイトの隣にあるチェック・ボックスを選択します。(アセットをWebCenter Sitesシステム上のすべてのサイトで共有するには、「すべてのサイト」チェック・ボックスを選択します。)

  6. 「変更の保存」をクリックします。

  7. 選択したサイトでアセットが使用可能になったことを示すメッセージが表示されます。

30.4.6 ディメンション・セットの作成と構成

新規ディメンション・セットを作成して構成するには

  1. 次の手順に従って、ディメンション・セットに追加する「ディメンション」アセット(ロケール)をブックマークに追加します。

    1. ボタン・バーで、「検索」をクリックします。

    2. 「検索」フォームで、「ディメンションの検索」をクリックします。

    3. 目的の検索条件(ある場合)を指定して、「検索」をクリックします。

    4. 検索結果のリストで、目的の「ディメンション」アセットに移動して、チェック・ボックスを選択します。

    5. 「ブックマークに追加」をクリックします。

  2. 次の手順に従って、ディメンション・セットを作成して構成します。

    1. ボタン・バーで、「新規」をクリックします。

    2. 「新規」アセット・リストで、「新規ディメンション・セット」を選択します。

      WebCenter Sitesに「新規ディメンション・セット」フォームが表示されます。

    3. 「名前」フィールドに、そのディメンション・セットを説明する名前を入力します。

    4. ツリーで、「ブックマーク」タブを選択します。

    5. 「ブックマーク」タブで、ディメンション・セットに追加するロケールを選択し、「選択したアイテムの追加」をクリックします。追加するロケールごとに、この手順を繰り返します。

    6. 「ディメンション・フィルタ・クラス」フィールドで、目的のロケール・フィルタ・タイプを選択します。「詳細」オプションを選択すると、カスタム・フィルタ・クラスを指定できます。

      ロケール・フィルタ・タイプの詳細は、第30.2項「ロケール・フィルタリングでの作業」を参照してください。

    7. (オプション)手順2「詳細」を選択した場合は、表示されたテキスト・ボックスにカスタム・フィルタ・クラスの名前を入力します。

    8. 終了したら、「変更の保存」をクリックします。

    9. (オプション)手順2階層フィルタを選択した場合は、第30.4.9項「階層フィルタのフォールバック階層の構成」の手順を完了して、フィルタのフォールバック階層を構成します。

30.4.7 ディメンション・セットの別のサイトへの共有

ディメンション・セットを別のサイトへ共有させるには、対応する「ディメンション・セット」アセットを共有する必要があります。

ディメンション・セットを別のサイトへ共有させるには

  1. WebCenter Sitesにログインし、共有する「ディメンション・セット」アセットが存在するサイトを選択します。

  2. Adminインタフェースを選択します。

  3. 目的の「ディメンション・セット」アセットを検索し、その「調査」フォームを開きます。

    1. ボタン・バーで、「検索」をクリックします。

    2. アセット・タイプのリストで、「ディメンション・セットの検索」を選択します。

    3. 目的の検索条件(ある場合)を指定して、「検索」をクリックします。

    4. 検索結果のリストで、目的のアセットに移動して名前をクリックします。

      アセットが「調査」フォームで表示されます。

  4. アクション・バーで、「ディメンション・セットの共有」を選択します。

    WebCenter Sitesに「ディメンション・セットの共有」フォームが表示されます。

  5. 「ディメンション・セットの共有」フォームで、「ディメンション・セット」アセットを共有するサイトの隣にあるチェック・ボックスを選択します。(アセットをWebCenter Sitesシステム上のすべてのサイトで共有するには、「すべてのサイト」チェック・ボックスを選択します。)

  6. 「変更の保存」をクリックします。

  7. 選択したサイトでアセットが使用可能になったことを示すメッセージが表示されます。

30.4.8 ロケール・フィルタの構成

通常、サイトにディメンション・セットを作成する際にロケール・フィルタを構成します。既存のディメンション・セットのロケール・フィルタの構成を変更するには、次の手順を実行します。

ロケール・フィルタを構成するには

  1. 構成するロケール・フィルタのディメンション・セットを検索して、「調査」フォームで開きます。

    1. ボタン・バーで、「検索」をクリックします。

    2. 「検索」フォームで、「ディメンション・セットの検索」をクリックします。

    3. 目的の検索条件(ある場合)を指定して、「検索」をクリックします。

    4. 検索結果のリストで、目的のアセットに移動して名前をクリックします。

      アセットが「調査」フォームで表示されます。

  2. 「ディメンション・フィルタ・クラス」フィールドで、目的のフィルタ・タイプの隣にあるオプションを選択します。「詳細」オプションを選択すると、カスタム・フィルタ・クラスを指定できます。

    ロケール・フィルタの詳細は、第30.2項「ロケール・フィルタリングでの作業」を参照してください。

  3. (オプション)手順2「詳細」を選択した場合は、表示されたテキスト・フィールドにカスタム・フィルタ・クラスの名前を入力します。

  4. 「変更の保存」をクリックします。

  5. (オプション)手順2階層フィルタを選択した場合は、第30.4.9項「階層フィルタのフォールバック階層の構成」の手順を完了して、フィルタのフォールバック階層を構成します。

30.4.9 階層フィルタのフォールバック階層の構成

ディメンション・セットの構成時に階層(フォールバック)ロケール・フィルタを選択した場合は、次の手順を実行して、フィルタのフォールバック階層を構成します。

階層ロケール・フィルタのフォールバック階層を構成するには

  1. 新規ロケールを追加したり、既存ロケールをフォールバック階層で並べ替える場合、次の手順に従って、階層に追加するロケールを表す「ディメンション」アセットをブックマークに追加します。

    1. ボタン・バーで、「検索」をクリックします。

    2. 「検索」フォームで、「ディメンションの検索」をクリックします。

    3. 目的の検索条件(ある場合)を指定して、「検索」をクリックします。

    4. 検索結果のリストで、目的の「ディメンション」アセットに移動して、チェック・ボックスを選択します。

    5. 「ブックマークに追加」をクリックします。

  2. 「調査」フォームで、構成する階層フィルタが存在するディメンション・セットを検索して開きます。

    1. ボタン・バーで、「検索」をクリックします。

    2. 「検索」フォームで、「ディメンション・セットの検索」をクリックします。

    3. 目的の検索条件(ある場合)を指定して、「検索」をクリックします。

    4. 検索結果のリストで、目的の「ディメンション・セット」アセットに移動して、ハイパーリンク名をクリックします。

      「調査」フォームに「ディメンション・セット」アセットが表示されます。

  3. フォールバック階層を構成します。


    注意:

    フォールバック階層を構成するときには、次の点に注意してください。

    • ロケールは、フォールバック階層に1回のみ表示できます。

    • 階層からロケールを削除する必要がある場合は、ロケール・ノードの隣にある「削除」(ゴミ箱)アイコンをクリックします。

    • 階層内のロケールの位置を変更する必要がある場合は、そのロケールを削除して、目的の親ノードの下に追加します。


    1. 「ディメンション・フィルタ・クラス」フィールドで、「ロケール階層の構成」をクリックします。

      WebCenter Sitesに「ロケール階層の構成」フォームが表示されます。

    2. 「ロケール階層の構成」フォームで、「編集」をクリックします。

      WebCenter Sitesにフォームの編集可能バージョンが表示されます。

    3. ツリーで、「ブックマーク」タブを選択します。

    4. (オプション)階層が空白の場合には、「ブックマーク」タブでフォールバック階層の最上位ノードとして指定するロケールを選択し、「選択したアイテムの追加」をクリックします。

    5. 階層に追加するロケールの親ノードを選択します。

      スクラッチから階層を作成する場合は、選択できるのは、手順dで追加した最上位レベルのノードのみです。

      階層作成時には、フォールバック・プロセスが発生していく方向(最も特殊なものから最も特殊でないものへという方向、つまりツリーのルート・ノード方向)に注意してください。

    6. 「ブックマーク」タブで、手順eで選択した親ノードの下に表示するロケールを選択して、「選択したアイテムの追加」をクリックします。

    7. 階層に追加するロケールごとに、手順efを繰り返します。

    8. フォールバック階層が完了したら、「変更の保存」をクリックします。

30.4.10 デフォルト・ロケールのサイト内アセットへの一括割当て

単一言語サイトから多言語サイトへ変換している場合、デフォルト・ロケールをサイト内のすべてのアセットに割り当てる必要があります。これを迅速に実現させるには、デフォルト・ロケールをアセットに割り当てるエレメントを実行します。


注意:

この手順のサンプル・エレメント・コードは、第30.4.10.1項「デフォルト・ロケールの一括割当て用サンプル・エレメント・コード」を参照してください。サンプル・コードは例として記載されているため、実際のサイトではカスタマイズする必要があります。


デフォルト・ロケールをサイト内アセットへ一括して割り当てるには

  1. CSElementアセットを作成して、デフォルト・ロケールをアセットに割り当てるエレメント・コードを保持します。

  2. 手順1で作成したCSElementアセットを参照する、SiteEntryアセットを作成します。

  3. 手順2で作成したSiteEntryアセットを、次のURLでコールします。

http://<host>:<port>/<context>/ContentServer?pagename=
<siteentry_name>

ここで:

  • <host>は、ご使用のWebCenter Sitesシステムのホストです。

  • <port>は、WebCenter Sitesが接続をリスニングするポート番号です。

  • <context>は、WebCenter Sitesアプリケーションに割り当てられたアプリケーション・コンテキストのルートです。

  • <siteentry_name>は、手順2で作成したSiteEntryアセットの名前です。

エレメント・コードが実行を完了したら、アセットに目的のロケールが割り当てられていることを確認してください。割り当てられていない場合は、エレメント・コードの考えられるエラーをチェックします。

30.4.10.1 デフォルト・ロケールの一括割当て用サンプル・エレメント・コード

この項には、FirstSiteIIサンプル・サイトに記述されたサンプル・エレメント・コードが記載されています。このコードは、次の操作を実行します。

  1. en_USという名前の「ディメンション」アセットを作成して、サイト内のデフォルト・ロケール指定を示します(この例ではアメリカ英語)。

  2. このデフォルト・ロケールをサイト内の「ページ」アセットに割り当てます。


    注意:

    この項のコードは、例として提供されています。これを使用すると決定したら、実際のサイトに対してカスタマイズしてください。デプロイ前にコードをテストしてください。この例には、エラー・チェック機能は含まれていません。


<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld"%>
<%@ taglib prefix="asset" uri="futuretense_cs/asset.tld"%>
<%@ taglib prefix="ics" uri="futuretense_cs/ics.tld"%>
<%@ taglib prefix="render" uri="futuretense_cs/render.tld"%>
<%@ taglib prefix="user" uri="futuretense_cs/user.tld"%>

<cs:ftcs>

<%-- Record dependencies for the SiteEntry and the CSElement --%>
<ics:if condition='<%=ics.GetVar("seid")!=null%>'>
<ics:then>
<render:logdep cid='<%=ics.GetVar("seid")%>' c="SiteEntry"/>
</ics:then>
</ics:if>

<ics:if condition='<%=ics.GetVar("eid")!=null%>'>
<ics:then>
<render:logdep cid='<%=ics.GetVar("eid")%>' c="CSElement"/>
</ics:then>
</ics:if>

<%-- log in as firstsite--%>
<user:login username="firstsite" password="firstsite"/>
<%-- create the Dimension asset (this can be done manually) --%>
<asset:create name="en_US" type="Dimension"/>
<asset:setsubtype name="en_US" value="Locale"/>
<asset:set name="en_US" field="name" value='en_US'/>
<asset:set name="en_US" field="description" value='US English'/>
<%-- enter your site's pubid below --%>
<ics:setvar name="primarypubid" value="1112198287026"/> 
<asset:save name="en_US"/>

<%-- look up the id of the Dimension asset you just created --%>
<asset:get name="en_US" field="id" output="en_US.id"/>

<%-- get a list of all Content_C assets in the site, and assign a dimension to each of them --%>
<asset:list type="Content_C" list="allContentAssets" pubid="1112198287026"/>
<ics:listloop listname="allContentAssets">
<ics:listget listname="allContentAssets" fieldname="id" output="id"/>
<asset:load type="Content_C" objectid='<%=ics.GetVar("id")%>' name="tempName" editable="true"/>
<asset:adddimension name="tempName" dimensionid='<%=ics.GetVar("en_US.id")%>'/>
<asset:save name="tempName"/>
</ics:listloop>
</cs:ftcs>