簡體   English   中英

如何根據語言更改CodeIgniter的URI段

[英]How to change CodeIgniter's URI segments based on a language

題:
如何使我的URL語言特定,例如:

  • 英語
    www.website.com/zh-CN/controller-in-en
  • 其他語言
    www.website.com/controller-in-oth-lang/method-in-oth-lang
    (我希望根據語言文件中的“ en-controller-in-en”和“ in-method-en-en”翻譯,將此URL自動重定向到www.website.com/controller-in-en/method-in-en )。

附加信息:
將來,我計划將不同語言的用戶重定向到不同的子域,例如lt.website.com,但是現在我希望根據用戶的語言來翻譯URI段。

我想明確指出:

  1. 我已經知道如何創建語言切換器和更改語言。
  2. 我不希望語​​言代碼包含在url中,例如'/ en'或'/ lt'。

我的(壞)想法:
我認為可以通過轉換后的路由地址完成$route[lang('url_market')] = 'market/index'; 但是在完成路由后,語言庫尚未加載。

基於@AdrienXL答案,這是不使用數據庫的示例。

$config['routes_translation']['en'] = array(
'home' => 'home'
);

$config['routes_translation']['fr'] = array(
'home' => 'accueil'
);

顯然,您知道使用會話的用戶所使用的語言,並且擁有控制器名稱,您可以通過訪問config項輕松獲得翻譯。

$translatedNamed = $config['routes_translation'][$language_code][$controller] 

其中應該為您提供“住所”和“應計”的fr

我看到的唯一方法是通過數據庫。

建立一個看起來像這樣的表:

routes_translation

*****************************************
*id |  controller   | translation | lang*
*****************************************
* 1 | home          |    home     | en  *
* 2 | home          |  accueil    | fr  *
                   ...
*****************************************

然后在你的routes.php

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->get('routes_translation');
$result = $query->result();
foreach( $result as $row )
{
    $route[$row->translation] = $row->controller;
} 

簡單....

  1. 從數據庫獲取用戶選擇的語言或將其存儲在SESSION中
  2. 加載語言庫時傳遞所選語言

例如:$ this-> lang-> load(“ message”,$ SESSION ['selected_language']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM