Cakephp本地化,无法在设置DEFAULT_LANGUAGE时更改语言

时间:2010-03-25 08:05:12

标签: cakephp localization

我很困惑:)

我正在使用cakephp中的p18n组件:
http://www.palivoda.eu/2008/04/i18n-in-cakephp-12-database-content-translation-part-2/

这个组件要求我在core.php中设置以下常量:

  

define(“DEFAULT_LANGUAGE”,“eng”)

但是,当设置此项时,我无法使用以下语言更改语言:

  

配置:: write('Config.language','eng');

目前,据我所知,更改静态内容的区域设置的唯一方法是使用Configure :: write。但是要通过使用p28n组件来改变动态内容,我必须将DEFINE_LANGUAGE常量设置为一个值。

这一切都让人很困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不熟悉特定的组件,但我通过在app/config/bootstrap.php文件中设置相同的常量然后设置要在我的{{1中使用的“实际”语言来“手动”完成此操作(从核心代码复制到AppController)。该控制器的相应片段如下所示:

app/app_controller.php

漂亮的香草味,但效果很好。突破uses ( 'L10n' ); class AppController extends Controller { public function beforeFilter() { $this->_setLanguage(); /** * Set the default "domain" for translations. The domain is the * same as the po file name in a given locale directory. e.g. * __d ( 'homepage', 'message_id' ) would look for the * message_id key in homepage.po. Using the __() convenience * function will always look in default.po. */ $this->set ( 'domain', 'default' ); } private function _setLanguage() { $this->L10n = new L10n(); # Auto-detect the request language settings $this->L10n->get(); } } 方法允许使用不同的方法来确定区域设置(例如像fr.mydomain.com这样的子域)。