この章では、Community-Gadgetsの機能を複数の言語に翻訳可能にする方法について説明します。
この章には次の項が含まれます。
Community-Gadgetsのユーザー・インタフェースはデフォルトで、英語、フランス語、ドイツ語、イタリア語、日本語、韓国語、ポルトガル語、スペイン語、簡体字中国語、繁体字中国語に翻訳できます。さらに、必要に応じて既存のラベルや翻訳を新しい言語にカスタマイズすることもできます。
言語パックは、Community-Gadgets Webアプリケーションのファイル・システム(cg.war/WEB-INF/classes/i18n_resources
)にあります。
i18n_resources
ディレクトリには2つのサブフォルダserver
およびwidgets
があり、それぞれにCommunity-Gadgetsインタフェースのリソース、およびクライアント側のウィジェットのリソースが含まれています。
server
ディレクトリには、コミュニティ・アプリケーションのサブシステムに基づいて区切られたJavaプロパティ・リソース・バンドルのリストが含まれます。core
、cos-resources
、gadgets, gadgets-exception, service
、shared
、users
の各サブシステムのローカライゼーションが含まれます。
widgets
ディレクトリには、各フォルダを特定のウィジェットに対応付けるフォルダのリストが含まれます。たとえば、wsdk.comments
フォルダはコメント・ウィジェットに対応付けられ、wsdk.reviews
フォルダはレビュー・ウィジェットに対応付けられます。
cos.commons
ディレクトリには、すべてのウィジェットで共有されるリソースがあります。Communityインタフェースと、Webサイトにデプロイされるウィジェットでは、必要な言語を選択するためのロジックが異なります。次の項では、2つのロジックのタイプを優先度の高い順に説明します。
ログインしているビジネス・ユーザーのWebエクスペリエンス管理(WEM)プロファイルで言語がカスタマイズされている場合は、それを適用します。それ以外の場合は、次の手順に進みます。
ブラウザのロケールがサポートされている場合は、この設定を適用します。それ以外の場合は、次の手順に進みます。
デフォルトのEnglish
ロケールを適用します。
この項で説明する言語検出ロジックは、Community-Gadgets側のすべてのウィジェットに適用されます。
次の1番目と2番目の手順は、Webサイトにすでに、サイト・コンテンツを異なる言語で表示するためのいくつかの言語選択メカニズムがあることを前提としています。たとえば、大半のサイトには、この目的でサイトの上部または下部に言語アイコンがあります。このメカニズムが言語選択にCookieまたはJavaScript変数を使用する場合は、Communityウィジェットもクライアントの同意を得た後にそれらを使用できます。サイト開発者は、cos_language
CookieまたはJavaScript変数と言語値の作成を可能にすることで、言語選択メカニズムをカスタマイズできます。これが実行されると、Communityウィジェットはクライアントの言語選択メカニズムを使用して、サイト・コンテンツを異なる言語で表示できます。
cos_language
Cookieによって提供される言語パラメータを使用します(これはサイトの開発者が手動で指定します)。
Cookieが設定されていない場合は、次の手順に進みます。
JavaScriptのグローバル変数cos_language
の言語パラメータを使用します(これはサイトの開発者またはインテグレータが手動で指定できます)。
変数が設定されていない場合は、次の手順に進みます。
管理者がCommunityインタフェースの「設定」→「言語」で選択したデフォルトの言語設定を使用します(図82-2)。
この設定は、サイトにデプロイされたすべてのタイプのウィジェットに適用されます。
新しい言語を追加するには、次の手順を実行します。
Community-Gadgetsの構成(第82.3項「Community-Gadgetsへの新しい言語の登録」を参照)のリストに新しい言語を追加して、その言語がCommunityインタフェースのデフォルト言語セレクタに表示されるようにします。
cg.war/WEB-INF/classes/i18n_resources
/<subfolders containing translation files>
内にあるすべてのリソースの翻訳をアップロードします。つまり、このディレクトリ内のすべての*_en.properties
ファイルを翻訳し、翻訳されたファイル(たとえば、ロシア語の場合、*_ru.properties
というファイルになる)をコピーして戻します。
Community-Gadgetsの構成に新しい言語を登録するには:
cg.war/WEB-INF/lib
ディレクトリに移動します。
cos-shared-11.1.1.8.0.jar
ファイルを開き、cos_core_metadata.xml
ファイルを抽出します。
schema::cos::commons:permissions:language
という文字列を検索します。この宣言は次のとおりです。
<bean id="language" class="com.fatwire.cos.metadata.core.model.MetadataDescriptorImpl"> <property name="uid" value="schema::cos::commons:permissions:language"/> <property name="name" value="label.language"/> <property name="defaultValue" value="en_US"/> <property name="dataOptionsValue" value="[ { name: 'label.language.english', value:'en_US'}, { name: 'label.language.brazilian_portuguese', value:'pt_BR'}, { name: 'label.language.chinese_simplified', value:'zh_CN'}, { name: 'label.language.chinese_traditional', value:'zh_TW'}, { name: 'label.language.french', value:'fr'}, { name: 'label.language.german', value:'de'}, { name: 'label.language.italian', value:'it'}, { name: 'label.language.japanese', value:'ja'}, { name: 'label.language.korean', value:'ko'}, { name: 'label.language.spanish', value:'es'}, <ADD COMMA AND INSERT NEW LANGUAGE HERE> ]"/> … </bean>
dataOptionsValue
プロパティに、新しい言語用の新しいJSONオブジェクトを追加します。たとえば、ロシア語の場合は次のようなエントリになります。
{ name: 'label.language.russian', value:'ru'}
ロシア語のエントリが追加された後のプロパティ値は次のようになります。
<property name="dataOptionsValue" value="[ { name: 'label.language.english', value:'en_US'}, { name: 'label.language.brazilian_portuguese', value:'pt_BR'}, { name: 'label.language.chinese_simplified', value:'zh_CN'}, { name: 'label.language.chinese_traditional', value:'zh_TW'}, { name: 'label.language.french', value:'fr'}, { name: 'label.language.german', value:'de'}, { name: 'label.language.italian', value:'it'}, { name: 'label.language.japanese', value:'ja'}, { name: 'label.language.korean', value:'ko'}, { name: 'label.language.spanish', value:'es'} { name: 'label.language.russian', value:'ru_RU'} ]"/>
cos_core_metadata.xml
ファイルを保存し、この改訂されたファイルをcos-shared-11.1.1.8.0.jar
ファイルに含めます。
i18n_resources/server/cos-resources_<LANG>.properties
のリソース・バンドルに移動し、label.langauge.russian
というキーと、サポートされている各言語の翻訳値を追加します。
それぞれのcos-resources
ファイル(cos-resources.properties
、cos-resources_de.properties
、cos-resources_es.properties
、cos-resources_fr.properties
、cos-resources_it.properties
など)に、言語ラベルのセットが含まれています。次に示すのはcos-resources_en.properties
の例です。
label.language.english = English label.language.brazilian_portuguese = Brazilian Portuguese label.language.chinese_simplified = Simplified Chinese label.language.chinese_traditional = Traditional Chinese label.language.french = French label.language.german = German label.language.italian = Italian label.language.japanese = Japanese label.language.korean = Korean label.language.spanish = Spanish
パラメータ名(たとえば、label.language.russian
)およびパラメータ値(たとえば、Russian for cos-resources_en.properties
)を含む新しい行を追加します。
label.langauge.russian=Russian
label.langauge.russian
のcos-resources_en.properties
の値は異なります(cos-resources_de.properties
の場合はRussische
、cos-resources_fr.properties
の場合はRusse
になる)。
つまり、次のように指定します。
label.langauge.<lang_id>=<value_translation>
i18n_resources
ディレクトリ内で再帰的に検索したすべてのリソース・バンドルについて、対応する言語接尾辞を持つ同じフォルダ内の翻訳ファイルをアップロードします。たとえば、i18n_resources/server/users.properties
という名前のディレクトリでは、英語パック用のロシア語翻訳を見つけることができます。したがって、i18n_resources/server/
ディレクトリにはRussian: users_ru_RU.properties
の翻訳ファイルをアップロードします。
Community管理アプリケーション用のアプリケーション・サーバーを再起動します。
新しい言語表示を確認するには、Communityに管理者としてログインし、「設定」メニューから「言語」を選択します。