2012-12-04 73 views
1

我有兩個網站以英文和阿拉伯文版本顯示。雙語wordpress:如何更好地切換語言?

環顧四周後,我發現qTranslate插件對於簡單的解決方案非常有用。

我用.htaccess如下所示:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^ar[\/]?$ index.php?lang=ar 
RewriteRule ^en[\/]?$ index.php?lang=en 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 
</IfModule> 

而在主題functions.php用於檢測語言以下:我用於切換RTL/LTR樣式表

 function inspectVars($vars) { 

     session_start(); 

     if ($_GET['lang'] == "ar") { 
     $_SESSION['custom_lang'] = "ar"; 
     } elseif ($_GET['lang'] == "en") { 
     $_SESSION['custom_lang'] = "en"; 
     } elseif (!isset($_GET['lang']) && !isset($_SESSION['custom_lang'])) { 
     $_SESSION['custom_lang'] = "en"; 
     } 
     $GLOBALS['q_config']['language']= $_SESSION['custom_lang']; 
    return $vars; 
    } 

    add_filter("query_vars", "inspectVars"); 

此會話設置。有沒有更好的方法來做到這一點?現在

,我面臨的問題是:

  1. 如何使用一個鏈接,會切換當前頁面,博客成其他語言?我使用domain/ar和domain/en進行切換,但首先要回家。
  2. 我想保留類似domain.com/ar/someslugsoranythingdomain.com/en/someslugsoranything的網址。
  3. 我有一些圖片,幻燈片在需要切換語言變化的模板。什麼是最好的方式?還有HTML格式的文本,也需要切換。

編輯: 我後來因爲啓用了qTranslate自己的語言切換器而保留了所選語言的持久性,因此註釋如下。事實上,整個inspectVars功能可以省略。

  $GLOBALS['q_config']['language']= $_SESSION['custom_lang']; 
+1

旁註;無需逃避斜線。如果你有像'en /?key = value'這樣的URL,你也可以添加QSA標誌。所以'RewriteRule^ar /?$ index.php?lang = ar [QSA]' – Gerben

+1

對於'domain.com/ar/someslugsoranything',使用'RewriteRule^ar(/(.*))?$ index.php?lang = ar&page = $ 2 [QSA]' – Gerben

回答

0

我已經解決了大部分問題。

註釋掉.htaccess文件的兩行:

#RewriteRule ^ar[\/]?$ index.php?lang=ar 
#RewriteRule ^en[\/]?$ index.php?lang=en 

而且許多問題得到了與下面的帖子解決了,我發現剛纔:

我現在有

Displaying content based on language with qTranslate 最大的問題是需要用阿拉伯語切換的混合HTML文本。在模板中,我嘗試了qTranslate簡碼和<!--:lang--><!--:-->標籤,但它們在那裏不起作用。另外,直接寫入HTML到HTML並不是一個好主意,我猜。

+0

我也從functions.php中刪除了下面的代碼,所以我不會在會話中存儲語言。 qTranslate更好地處理它。 $ GLOBALS ['q_config'] ['language'] = $ _SESSION ['custom_lang']; – Lenin