2013-02-26 76 views
0

無法獲得笨國際化的語言和$當我使用JavaScript來刷新到以下網址GET URL進行工作

http://example.com/search?in=word&other=word2 

它只是去 http://example.com/en/search和$ GET變量迷路

我的htaccess看起來像這樣

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 

這將是最完美的解決方案

// config/routes.php

$route['^(en|fr)/(.+)$'] = "$2"; 
$route['^(en|fr)$'] = $route['default_controller']; 
+0

您是否將頁面設置爲特殊URL?在application/core/MY_Lang.php中,您可以將搜索添加到'$ special'數組中,以阻止它以語言爲前綴。檢查文檔,它位於選項部分 - http://maestric.com/doc/php/codeigniter_i18n – Jeemusu 2013-02-26 07:55:49

+0

是的,我熟悉該選項。然而,如果我禁用它,那麼如何國際化這個頁面呢? – xdotcommer 2013-02-26 08:43:10

+1

如果你想國際化它,那麼不應該該網址是'http://example.com/en/search?in = word&other = word2' – Jeemusu 2013-02-26 08:55:31

回答

0

最好辦法是做到這一點的JavaScript和只添加lang在我的腳本

<script> 
var lang="<?php echo $this->lang->lang(); ?>"; 
</script> 
0

更改的最後一行,包括查詢字符串作爲重寫規則丟棄該部分。見我發現apache docs

RewriteRule .* index.php/$0 [PT,L,QSA] 
+0

nope,只是試過了,我真的認爲它的i18n語言問題,因爲它在我開啓之前工作正常。 例如,如果我關閉i18n爲該URL(no/en /或/ fr /)get變量傳遞罰款 – xdotcommer 2013-02-26 07:16:00

0

我找不到路,我加入switch_uri功能有些變化,所以現在我的功能如下所示:

function switch_uri($lang) 
    { 
    if ((!empty($this->uri)) && (array_key_exists($lang, $this->languages))) 
    { 

     if ($uri_segment = $this->get_uri_lang($this->uri)) 
     { 
      $uri_segment['parts'][0] = $lang; 
      $uri = implode('/',$uri_segment['parts']); 
     } 
     else 
     { 
      $uri = $lang.'/'.$this->uri; 
     } 

     // Add $_GET string 
     if (count($_GET) > 0) 
      $uri .= '?' . http_build_query($_GET, '', "&"); 
    } 

    return $uri; 
    }