2010-03-26 72 views
4

我知道如何創建.po文件以及如何生成.mo文件,然後在我的Codeigniter支持的站點上使用它們進行翻譯。但是,我不太確定如何從網站GUI更改語言。我想堅持codeigniter的默認網址調用架構:www.domain.com/controllername/method/param1/param2。使用getign和codeigniter進行多語言支持,最佳實踐?

調用這樣的服務器是一個沒有腦子:www.domain.com/controllername?lang=en

這樣做,對於使用默認網址架構中的每個控制器,需要我去實現每一個同樣的方法控制器,只是將lang參數傳遞給setlocale()函數,然後綁定到我的.po域名。感覺尷尬...

ANy想法你們如何使用codeigniter中的gettext?是的,我確實想使用gettext。

回答

1

我檢查用戶的語言鉤住「post_controller_constructor」處的檢測,並將其設置爲全局可用(例如,在運行時更改配置文件中的語言)。控制器只需使用該值。

在回退

  1. 以下檢查已經通過GET參數(例如?LANG = EN)設定被檢測的語言?
  2. 它被設置在cookie中?
  3. 什麼是瀏覽器建議的語言?
  4. 使用配置

如果語言不支持默認語言,但是,使用默認值。 使用新數據設置或刷新cookie。

所以你平時不如果用戶點擊某處改變語言

+0

「鉤住'post_controller_constructor'處的檢測」是什麼意思? – DanMan 2012-07-22 16:22:15

+0

我的意思是「我給hook'post_controller_constructor」添加了一個回調函數。請參閱http://codeigniter.com/user_guide/general/hooks.html。你需要在你的代碼在控制器類被實例化之後運行,但是在你的具體控制器方法被調用之前,你需要運行代碼 – 2012-07-23 09:19:33

+0

。謝謝。 – DanMan 2012-07-23 09:59:29

2

我只是做一個庫,它可以自動翻譯橫置之間的所有文字和{需要使用GET參數,evenctuallly只是一個時間/ T】在視圖中,我張貼在這裏情況下,一些人想用它代替調用視圖了gettext功能:

http://www.chuongduong.net/page/15/codeigniter-gettext-with-smarty-or-parser-template-without-php-code-in-view.html

視圖代碼可能是:

<html> 
<head> 
<title>{blog_title}</title> 
</head> 
<body> 

<h3>{blog_heading}</h3> 
{blog_entries} 

<h5>{t}Title is{/t} {title}</h5> 

<p>{t 1="<b>" 2="</b>"}Click here %1to see%2 me{/t}{body}</p> 

<p>{t 1="{id}" 2="author"}The id is: %1 wrote by %2{/t}</p> 

<p>{t 1="<a href=\"link here\">" 2="</a>"}Please lick on me%2{/t}</p> 

{/blog_entries} 

</body> 

</html>