Cakephp Localization, Cannot Change language, когда установлен DEFAULT_LANGUAGE - PullRequest
0 голосов
/ 25 марта 2010

Я в замешательстве:)

Я использую компонент p18n в cakephp, найденный здесь:
http://www.palivoda.eu/2008/04/i18n-in-cakephp-12-database-content-translation-part-2/

Этот компонент требует от меня установить в core.php следующую константу:

define ("DEFAULT_LANGUAGE", 'eng')

Однако, когда это установлено, я не могу изменить язык с помощью:

Configure :: write ('Config.language', 'eng');

На данный момент, насколько мне известно, единственный способ изменить локаль моего статического содержимого - это использовать Configure :: write. Но для изменения динамического содержимого с помощью компонента p28n необходимо, чтобы константе DEFINE_LANGUAGE было присвоено значение.

Это все очень запутанно. Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 25 марта 2010

Я не знаком с конкретным компонентом, но я сделал это «вручную», установив ту же константу в моем файле app/config/bootstrap.php, а затем установив «фактический» язык, который будет использоваться в моем 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();
  }
}

Довольно ванильный материал, но он прекрасно работает. А использование метода _setLanguage() позволяет использовать различные методологии для определения локали (например, субдомен, например, fr.mydomain.com).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...