2014-01-13 106 views
0

我最近開始使用框架(CodeIgniter),並且在大量研究仍然存在許多疑問之後,特別是關於多語種網站。在codeigniter中翻譯多語言網站的路線(url)

我想「翻譯」的網址,比如,我有​​和fr/home,但我想對每一種語言了自己的翻譯一樣fr/accueilpt/inicio,等等... 所以到目前爲止所有我的系統正在做的是改變的語言,但是URL(控制器)保持在相同的語言(英語)的 ​​,fr/homept/home代替fr/accueilpt/inicio

什麼我必須做的做到這一點某種「翻譯」或路由?爲每種語言創建控制器並分別調用它們會更好嗎?我開始這樣做,但在某個時候我意識到這是非常巨大的,可能這不是一個好習慣。但是我發現爲每種語言創建一個控制器要容易得多,但是我不知道在哪個文件中以及在哪個文件中我必須設置「自動運行功能」來檢測/保存語言首選項。

而且當我在URL類型只是語言(例如/en/fr)它沒有「重定向」到主控制器(家):

// '/en', '/de', '/fr' and '/nl' URIs -> use default controller 
$route['^(en|fr|pt)$'] = $route['default_controller']; 

這不是爲我工作,除非我鍵入「/」之後的語言: /fr/正常工作!,/fr不起作用!

+0

在我的看法中,如果你的控制器與當前選擇的語言不一樣,用戶不會使用'url'瀏覽你的站點,他們將通過你提供的'menu'和'links' 。這是你必須做的。但是如果你真的想要這種功能,你將不得不爲不同的語言添加或調用不同的控制器。 – tomexsans

回答

0

我成功地使用了爲語言設置Cookie的方法,而不是在URI中設置Cookie,然後在我的頁面數據庫中爲每種語言設置所有URI段,然後在我的頁面模型中加載正確的語言URI和基於語言cookie的文本。

現在唯一剩下的問題是路由,我設置這樣的事情在我的路線文件的末尾,重定向所有剩餘請求的頁面控制器方法:

$route['(:any)'] = "main/pages"; 
$route['(:any)/(:any)'] = "main/pages"; 

這樣我可以有兩種頁面URI和子菜單URI與我的本地化版本。

+0

謝謝!這確實是一種可能性,以及將所有語言的網址保留爲英文。但我真的想用CI來實現這一點。我知道如何獲得我想要的結果的其他方式,但我認爲我的可能解決方案可能不是最佳方法和模式的最佳方式...... – PauloBraga