2013-01-11 169 views
1

我設計了一個Web應用程序,它適用於兩個不同的用戶,分別爲user1user2,並且這兩個用戶需要使用不同語言的view如何切換不同用戶的語言環境/語言

我已經學習了關於yii:t(),但通過該方法,我們必須在main.config中定義語言,它爲兩個用戶設置相同的語言。

如何以兩種用戶的不同語言翻譯我的視圖?

回答

2

我希望這可以幫助你: 你需要在你的組件中編輯urlmanager.php,如果沒有文件,你需要創建一個。

檢查這個網址:Multilingual

感謝。

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', 

要更改語言環境,創建一個鏈接指向用戶

+0

感謝編碼器,它的工作 –

+0

嘿編碼器,我正在工作的那個鏈接,當我點擊我的用戶界面中的語言的任何鏈接,然後它給出了一個錯誤,如:url:site/logout not found,my url is在?r = site/logout,我應該怎麼做 –

+1

你是否實現了urlmanager? 已經提到你需要創建一個.. –

1

SiteController.php將這個到所需區域:

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 

相關文章:

相關模塊:

+0

偉大的工作謝謝, –

+0

嘿Sameuel,當我使用url http:// localhost/Snitch-appointpress/Appointpress/lang/en那麼我收到錯誤在此服務器上未找到請求的URL/Snitch-appointpress/Appointpress/lang/en。 –

+0

是否實現了url管理器規則?另外,執行htaccess重寫。更新了答案。 –