質問: Cakephpにて、多言語対応の社内システムを構築中のWEB屋歴半年の新参者です。 ユーザーがログインした後、 ヘッダーに設置している言語切り替えボタンで、 英語・日本語のページ切り替え機能を実装したいです。 ルーティングは、サブドメインでもサブディレクトリでもなんでも構いません。 Viewでindex_en.ctp, index_jp.ctpで以前は切り替えを行っていたのですが、あまり効率が良くないので、 poファイルを使って__()で切り替えができたらと思っています。 多言語 Cakephpで検索しても、出てくるのはpoファイル作成、ブラウザの言語設定で自動的に切り替えばかりなのですが、 自動ではなく手動での切り替え方法を模索中です。 上記要件を満たすみなさんのオススメのプラグインやサイト(英語サイトでも可)があればご教示ください。 宜しくお願い致します。
回答: オススメのプラグインやサイトではないのですが、簡単なので方法を書きます。 poファイルを用意する必要はありますが、ここでは説明を省きます。 まず、Tsubasa0404さんのおっしゃる通り、言語を手動で切り替える際には、URLを目印に切り替えるといいと思います。 example.com/ja/ example.com/en/ ja.example.com/ en.example.com/ そして、poファイルの切り替えは、URLを目印に、各言語のロケールIDを入れ替えて実現できます。 ロケールIDはコントローラーで次のコードで入れ替えます。 ``` // CakePHP2 Configure::write('Config.language', 'ロケールID'); // CakePHP3 use Cake\I18n\I18n; I18n::locale('ロケールID'); ``` ロケールIDは、CakePHP2だとlib\Cake\I18n\L10n.phpに書いてあります。 また、CakePHP3ですが、bootstrap.phpでも切り替えできます。 初期設定の言語はここで設定します。 ``` ini_set('intl.default_locale', 'ロケールID'); ```