Magentoの管理画面の日本語化
Magentoの管理画面の日本語化の方法です。
今回のMagentoのVersionは1.4.2.0です。
Step 1. 日本語化ファイルを以下のURLからダウンロード。
https://github.com/rack990/Magento-Japanese-Translation
Step 2. 解凍した中にあるフォルダ[ja_JP]を"/app/locale"にアップロード。
Step 3. [System] → [Cache Management]から[Flush Magento Cache]ボタンをクリック
Step 4. 管理画面のページの下の[interface Locale]ドロップダウンから[日本語]を選択。
CakePHP1.2を使った多言語サポート対応時の覚書き
CakePHP 1.2を使った国際化を実装する際に調べて役に立ったサイトを(主に自分のために)纏めておきます。
1)いつも、人知れずお世話になっているサイト「CakePHPのおいしい食べ方」にとても分かりやすい解説がありました。
CakePHP1.2の簡単国際化
CakePHP1.2のbakeで自動生成した画面は、画面に表示される文字列が__('文字列') で囲まれています。これは、簡単に多言語翻訳ができるように配慮されているからです。
2)次に、言語の切り替えをマニュアルでするためのリンクの作り方では、このサイトの情報が役に立ちました。
To better understand the goal and why some things were done the way they were, I’ll summarize the requirements:
1. The app has to support two languages or more (in this case English and Russian)
2. Default language is English
3. The language switching is based on a URL param
4. The URL format should be: example.com/eng/controller/action
5. Language choice should persist in the session and a cookie
なお、自分のサイトでは
- 多言語サポートとして英語と日本語をサポート
- デフォルトの言語は日本語
- 言語はURL paramで変更できる
- URLフォーマットは: example.com/ja/controller/action といった感じ
- 好みの言語はセッションとクッキーで保持される。
としています。用はWordpressのプラグインで「qTranslate」という便利なプラグインがあるが、同じことをしたい!
なので、こちらの例ではConfigフォルダの中のroutes.phpで以下のように
Router::connect('/:language/:controller/:action/*', array(), array('language' => '[a-z]{3}'));としていますが、自分は[en]と[ja]など2文字がよかったので以下のようにしました。
Router::connect('/:language/:controller/:action/*', array(), array('language' => '[a-z]{2}'));で、後は引用元にもあるように、_setLanguage()をapp_controller.phpの中に記述して、beforeFilter()関数から呼び出すようにします。
function _setLanguage() { if ($this->Cookie->read('lang') && !$this->Session->check('Config.language')) { $this->Session->write('Config.language', $this->Cookie->read('lang')); } else if (isset($this->params['language']) && ($this->params['language'] != $this->Session->read('Config.language'))) { $this->Session->write('Config.language', $this->params['language']); $this->Cookie->write('lang', $this->params['language'], null, '20 days'); } }さらに、app_helper.phpに以下のurl()関数をオーバーライドする関数を作ってお膳立ては出来上がり。
function url($url = null, $full = false) { if(!isset($url['language']) && isset($this->params['language'])) { $url['language'] = $this->params['language']; } return parent::url($url, $full); }最後に、肝心のリンクを作ります。
自分はviews/layouts/default.ctpにリンクを作りました。<p> <?php echo $html->link('English', array('language'=>'en')); ?> </p> <p> <?php echo $html->link('Japanese', array('language'=>'ja')); ?> </p>で、出来上がり。
example.com/en/controller/action
で言語を英語に切り替えた後、
example.com/controller/action
でアクセスしても、選択言語が保持されているのを確認します。自分が作っているCakePHPサイトで挙動が確認できます。
http://labeauty.getmycity.com
(実はまだ多言語サポート対応中のためFooterの一番下にEnglish、Japaneseの隠しリンクがあるw)