LinguaPloneの利用 [Plone3.3]
LinguaPlone を利用することで Plone を多言語化することができる。
インストール
サーバへのインストール
$PLONE_INSTANCE : /usr/local/Plone/zinstance (Plone のインスタンス)
インストールは解凍後、開発用ソースディレクトリに Products.LinguaPlone という名前で格納する。ダウンロードは http://pypi.python.org/pypi/Products.LinguaPlone より行える。
# tar zxvf Products.LinguaPlone-3.0c3.zip # mv Products.LinguaPlone-3.0c3 $PLONE_INSTANCE/src/Products.LinguaPlone
次にインスタンス内の buildout.cfg を設定する。
eggs = Plone : + Products.LinguaPlone develop = : + src/Products.LinguaPlone [versions] : Products.LinguaPlone = 3.0c3
最後に設定を反映する。
# bin/buildout # bin/plonectl stop; bin/plonectl start
Ploneへのインストール
次に Plone に管理者でログインし、「サイト設定→プロダクトを追加・削除」より LinguaPlone をインストールする。
言語セレクタに言語クラスを付ける
各言語に応じた CSS を適用できるよう、言語ごとの class 属性を付与する。Products.LinguaPlone/Products/LinguaPlone/browser/selector.pt を編集する。
tal:attributes="href lang/url; - title name"> + title name; + class string:langtab-${code}">
ローカルロールユーザが対応付け言語選択時にPloneのルートまでたどれない点を修正
Products.LinguaPlone/Products/LinguaPlone/skins/LinguaPlone/translationbrowser_popup.pt を編集する。(\\部分は改行せず1行で記入)
- results python: test(search_text!='', query_results, \\ - [item for item in here.listFolderContents() if checkPermission('View',item)]); + results python: test(search_text!='', query_results, \\ + [item.getObject() for item in here.getFolderContents({'Language': 'all'}) \\ + if checkPermission('View',item)]);
デフォルトビューコンテンツの言語切替時に1階層上のコンテンツに遷移してしまう点を修正
フォルダのデフォルトコンテンツがパラメータ付きの場合など、階層がずれることでエラーが発生してしまう。Products.LinguaPlone/Products/LinguaPlone/browser/selector.py を修正する。
- data['url'] = state.canonical_object_url() + appendtourl + data['url'] = trans.absolute_url() + appendtourl else:
設定
以下では Plone のルートに各言語のトップページ用のフォルダ(日本語:ja、英語:en)を作成することを想定。
設定
Plone に管理者でログインし「サイト設定→言語」から次のように設定する。
- デフォルト言語
デフォルトでは日本語のコンテンツとして作成されるようにする。
Japanese
- 利用可能言語
利用可能な言語は、日本語と英語とする。
Japanese、English
さらにバーチャルホストを用いる場合は ZMI の portal_languages の Negotiation Scheme で次のものにもチェックを入れておく。
Use language codes in URL path for manual override.
ロゴのリンク先を変更
portal_view_customizations で plone.logo を編集する。
- tal:attributes="href view/navigation_root_url" + tal:define="base view/navigation_root_url" + tal:attributes="href python: base + '/' + context.Language()"
ホームタブの設定
言語に応じてホームのページを変更するため、portal_actions で Home を以下のように設定する。
- URL (Expression) : string:${globals_view/navigationRootUrl} + URL (Expression) : string:${globals_view/navigationRootUrl}/${here/Language}
検索結果を言語ごとのトップページ配下で呼び出す
検索結果の言語が英語になってしまうためこのように対応する。portal_view_customizations で plone.searchbox を編集する。
- tal:attributes="action string:${view/site_url}/search"> + tal:attributes="action string:${view/site_url}/${context/Language}/search">