我有两个网站以英文和阿拉伯文版本显示。
环顾四周后,我发现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
以下用于检测语言:
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");
此会话设置我用于切换RTL / LTR样式表。有没有更好的方法呢?
现在,我面临的问题是:
domain.com/ar/someslugsoranything
和domain.com/en/someslugsoranything
。编辑:
我后来评论了以下内容,因为启用qTranslate自己的语言切换器可以保持所选语言的持久性。实际上,可以省略整个inspectVars
函数。
$GLOBALS['q_config']['language']= $_SESSION['custom_lang'];
答案 0 :(得分: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并不是一个好主意。