この章では、Oracle Portal付属のAPIを使用して様々な言語でコンテンツを作成する方法について説明します。内容は、次のとおりです。

これらのAPIの詳細は、Portal Centerの『Oracle Portal PL/SQL API Reference』を参照してください。
http://portalcenter.oracle.com
「Portal Focus Areas」セクションで「Portlet Development」をクリックし、次に、「APIs and References」セクションで「PL/SQL API Reference」をクリックします。
|
ヒント: Webブラウザまたは外部アプリケーションからAPIをコールする場合、最初にセッション・コンテキストを設定する必要があります。詳細は、10.1項「セッション・コンテキストの設定」を参照してください。 |
APIを使用してポータル・オブジェクトの翻訳を作成するには、ページ・グループが複数の言語をサポートするようにページ・グループ管理者によって設定されている必要があります。APIを使用する前に、ページ・グループの構成方法と翻訳指定のあるオブジェクトの動作内容を理解するために『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』の第20章「Portalコンテンツの翻訳」を参照することをお薦めします。
ポータル・オブジェクトの翻訳を作成または変更するための基本的方法は、言語コンテキストを設定し、次に、適切なコンテンツ管理APIを使用してアイテムを作成または変更することです。
ページ・グループのデフォルト言語を確認するには、次の問合せを実行します。
select distinct wwnls_api.get_language(default_language) "Page Group Default Language" from wwsbr_all_content_areas pg where name = 'MyPageGroup';
SQL*Plusセッションの言語コンテキストを確認するには、以下の手順に従います。
デフォルト言語を取得するために使用されるSQL文は、Portalスキーマ・ユーザーとして実行する必要があります。ポータル・スキーマに接続するには、ポータル・スキーマのパスワードと、ポータル・リポジトリがインストールされているデータベースのSERVICE_NAME/SIDを入力します。
次の問合せを実行します。
select wwctx_api.get_nls_language "Session Context Language Code",
wwnls_api.get_language(wwctx_api.get_nls_language) "Language Description"
from dual;
|
注意: SQL*Plusにログインしてユーザー・コンテキストを設定する場合、最初はNLS_LANG環境変数によって指定されている言語になります。 |
コンテンツを別の言語で作成する前に、例14-1に示すように、wwctx_api.set_nls_language APIを使用してセッション言語を設定します。
例14-1 セッション言語の設定(set_nls_language API)
begin
wwctx_api.set_nls_language(
p_nls_language => wwnls_api.GREEK,
p_nls_territory => wwnls_api.TER_GREECE
);
exception
...
end;
/
p_nls_language: セッションに設定する言語の、グローバリゼーション・サポート言語としての略語です。
p_nls_territory: セッションに設定する地域の、グローバリゼーション・サポート地域としての略語です。

使用可能な言語および地域の定数のリストは、Portal Centerの『Oracle Portal PL/SQL API Reference』のWWNLS_APIパッケージに関するドキュメントを参照してください。
http://portalcenter.oracle.com
「Portal Focus Areas」セクションで「Portlet Development」をクリックし、次に、「APIs and References」セクションで「PL/SQL API Reference」をクリックします。
既存の翻訳の変更は、単に言語コンテキストを設定し、適切なAPIを使用してオブジェクトを変更するだけです。例14-2では、フランス語の翻訳を指定した既存のテキスト・アイテムのテキストを変更しています。
例14-2 翻訳の変更
declare
l_item_master_id number;
begin
-- Set the language context.
wwctx_api.set_nls_language(
p_nls_language => wwnls_api.FRENCH
);
-- Edit the item (this edits the French translation).
l_item_master_id := wwsbr_api.modify_item(
p_master_item_id => 453,
p_item_id => 454,
p_caid => 33,
p_folder_id => 45,
p_display_name => 'Revue de Film');
p_text => 'C'est le texte de la revue');
);
-- Process cache invalidation messages.
wwpro_api_invalidation.execute_cache_invalidation;
exception
...
end;
/
例14-2で使用されるmodify_item APIの詳細は、11.2.2項「アイテムの編集」を参照してください。
セッションがページ・グループのデフォルト言語とは異なる言語を使用し、ページ・グループに対してセッション言語の翻訳が有効である場合、add_item APIは、アイテムの作成時にアイテムの翻訳を作成します。たとえば、ページ・グループのデフォルト言語が英語で、セッション言語がフランス語であり、ページ・グループに対してフランス語の翻訳が有効である場合には、APIは、アイテム表に次の2行を追加します。
デフォルト言語の値がus(英語)の行
セッション言語の値がf(フランス語)の行
言語以外にも、これらの行は、アイテムIDなどすべての属性について同じ値を持つことになります。これを防ぐには、翻訳を作成する前に、常に最初にデフォルト言語でアイテムを追加することをお薦めします。
同様の状況下で、modify_item APIは、セッション言語の翻訳を更新します(翻訳が存在する場合)。翻訳が存在しない場合、セッション言語で翻訳が有効になっているかぎり、このAPIは新しい翻訳を作成します。このため、既存のアイテムに翻訳を追加する場合は、modify_item(またはmodify_item_post_upload) APIを使用します。例14-3では、ファイル・アイテムを作成してから、言語コンテキストを変更し、アイテムに翻訳を追加しています。
例14-3 翻訳の作成
declare
l_item_masterthing_id number;
l_item_masterthing_id2 number;
l_item_id number;
begin
-- Set the language context.
wwctx_api.set_nls_language(
p_nls_language => wwnls_api.AMERICAN
);
-- Add an item that resides on the same server as the portal content repository
-- database.
l_item_masterthing_id := wwsbr_api.add_item(
p_caid => 53, - A known page group ID.
p_folder_id => 1, - A known page ID.
p_display_name => 'My File',
p_type_id => wwsbr_api.ITEM_TYPE_FILE,
p_type_caid => wwsbr_api.SHARED_OBJECTS,
p_region_id => 513, - A known region on the page.
p_description => 'Description of my file',
p_file_filename => '/docs_for_upload/English_File.txt'
);
-- Note that if the default language was not American then OracleAS Portal
-- would in addition automatically create a translation of the item in the
-- default language.
--
-- Determine the item id.
select id
into l_item_id
from wwsbr_all_items
where masterid = l_item_masterthing_id
and caid = l_site_id
and language = wwctx_api.get_nls_language
and is_current_version = 1;
-- Change the language context to French.
wwctx_api.set_nls_language(
p_nls_language => wwnls_api.FRENCH
);
-- Modify item adding its translation and any translated attributes.
l_item_masterthing_id2 := wwsbr_api.modify_item(
p_master_item_id => l_item_masterthing_id,
p_item_id => l_item_id,
p_caid => l_site_id,
p_folder_id => l_page_id,
p_display_name => 'Mon Fichier',
p_description => 'Description du fichier',
p_file_filename => '/docs_for_upload/French_File.txt'
);
-- Process cache invalidation messages.
wwpro_api_invalidation.execute_cache_invalidation;
exception
...
end;
/
例14-3で使用されるadd_item APIの詳細は、12.4項「アイテムの作成」を参照してください。modify_item APIの詳細は、11.2.2項「アイテムの編集」を参照してください。
modify_item APIを使用してp_addnewversionをTRUEに設定し、デフォルト以外の言語でアイテムの新しいバージョンを作成しようとすると、新しいバージョンは作成されず、かわりに新しい翻訳が追加されます。
翻訳でバージョニングを使用する場合は、デフォルト言語でアイテムの新しいバージョンを作成して、その新しいバージョンを翻訳することをお薦めします。
翻訳でアイテムのバージョニングを使用する効果の詳細は、『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』の20.3項「翻訳可能なコンテンツの作成」を参照してください。