2010-07-20 85 views
2

我正在Codeigniter中啓動一個新的網站項目。我需要這個網站是多語言的,英文將成爲默認語言。 我知道codeigniter中的語言類是如何工作的,而且我已經在使用它。Codeigniter中的多語言網站

我擔心的是我需要使用所選語言顯示URL。我將用一個例子解釋一下:

當選擇英語語言,我有這樣的URL: www.domain.com/cars/list_cars 其中汽車是控制器和list_cars是負責調用適當視圖的方法。

當選擇西班牙語語言的語言,我想的URL顯示爲 www.domain.com/coches/mostrar_coches

這是實現這一目標的最佳途徑?我能想到的唯一方式是改變routes.php文件的東西,如:

$route['cars/list_cars'] = 'coches/mostrar_coches';

是否有實現這一目標的任何更好/更簡單的方法?

謝謝!

回答

0

我做了你的建議,使用routes.php爲您的本地化網段。對我來說工作得很好,但是對於每一頁你都需要在你的路線文件中添加一個新條目。

+0

在每個頁面的routes.php中都有一個條目,這是讓我失望的,但我認爲這是唯一的方法。 Codeigniter需要知道您想要將名稱頁翻譯成什麼,並且在這種情況下我無法使用正則表達式。 – yinyang78 2010-07-20 15:54:30

0

翻譯你的控制器和方法名稱是一件令人頭疼的事情。您的搜索引擎優化的好處是如此之小,以至於它確實不值得做,只要確保您有好的內容即可。

+0

我很驚訝你的答案。我不是一位SEO專家,但我多次讀到,在您的網址中使用關鍵字是最重要的考慮因素之一。 這就是爲什麼我要「翻譯」URL。 – yinyang78 2010-07-20 17:28:42

+0

在合適的情況下,SEO的好處將會很大。思想需要付諸實踐。 – stef 2010-07-21 14:12:24

+0

嘿,如果你想手動翻譯每一個URL,所以你可以有一個輕微的SEO碰撞繼續前進,我寧願只是確保我的內容適合每種語言。 – 2010-07-22 08:30:42

2

我用CodeIgniter和Url翻譯構建了concebe.com。我的解決方案是將所有請求重定向到只有一個控制器,該控制器負責根據翻譯調用其他功能。見下圖:

function dinamic($js,$page,$item=NULL,$id=NULL) 
{ 

    switch ($page) 
    { 
     case $this->lang->line('products'): 
      $page='products'; 
     break; 
     case $this->lang->line('about_us'): 
      $page='about_us'; 
     break; 
     ... 
    } 

    //switch page 
    switch ($page) 
    { 
     case 'contact_us': 
      $this->template->render($js,$this->_contact_us($js)); 
      return; 
     break; 
    } 

這是不是一個聰明的解決方案,不幫你,因爲是很難的,但我也必須區分JS調用,這是唯一的辦法,我希望這幫助別人。

約束:當切換語言時,你失去了頁面,你在哪裏。