私は Web アプリケーションを設計しました。これは と という 2 人の異なるユーザーに対して機能しuser1
、user2
両方のユーザーがview
異なる言語で を必要としています。
について調べましたが、その方法では、両方のユーザーに同じ言語を設定yii:t()
する で言語を定義する必要があります。main.config
両方のユーザー向けにビューを異なる言語に翻訳するにはどうすればよいですか?
私は Web アプリケーションを設計しました。これは と という 2 人の異なるユーザーに対して機能しuser1
、user2
両方のユーザーがview
異なる言語で を必要としています。
について調べましたが、その方法では、両方のユーザーに同じ言語を設定yii:t()
する で言語を定義する必要があります。main.config
両方のユーザー向けにビューを異なる言語に翻訳するにはどうすればよいですか?
これがお役に立てば幸いです。コンポーネントでurlmanager.phpを編集する必要があります。ファイルがない場合は、ファイルを作成する必要があります。
このURLを確認してください:多言語
ありがとう。
これをSiteController.phpに入れてください:
public function actionChangeLocale($locale) {
// (OPTIONAL) if is registered user (not guest), save preferred locale in database
if (!Yii::app()->user->isGuest) {
// Update user settings
$uid = Yii::app()->user->id;
User::model()->updateByPk($uid, array('locale' => $locale));
}
// change locale
Yii::app()->user->setState('_locale', $locale);
// redirect to previous page, in the new locale
if(isset($_SERVER["HTTP_REFERER"]))
$referrer = $_SERVER["HTTP_REFERER"];
else
$referrer = Yii::app()->getBaseUrl(true) . '/';
$this->redirect($referrer);
}
main.php構成URLマネージャールールを編集します。
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'caseSensitive' => false,
'rules' => array(
'lang/<id:\w+>' => 'site/changeLocale',
ロケールを変更するには、ユーザーが目的のロケールを指すようにするためのリンクを作成します。
http://www.mysite.com/myapp/lang/en
http://www.mysite.com/myapp/lang/zh
http://www.mysite.com/myapp/lang/ja
http://www.mysite.com/myapp/lang/in
...
ログインしたユーザーの優先ロケールをデータベースに保存した場合は、これをSiteController.phpログインアクションに追加します。
$uid = Yii::app()->user->id;
$user = User::model()->findbypk($uid);
$userLocale = isset($user->locale) ? $model->locale : Yii::app()->language;
Yii::app()->user->setState('_locale', $userLocale);
上記の使用法は、htaccessリライトを使用している人向けです。ベースの.htaccessファイルが次のとおりであることを確認してください。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L] # Remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
関連記事:
関連モジュール: