我很困惑:)
我正在使用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常量设置为一个值。
这一切都让人很困惑。任何帮助将不胜感激。
答案 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这样的子域)。