I have two websites to be displayed in English and Arabic versions.
After looking around I found that qTranslate plugin does the job very good for a simple solutions.
I used .htaccess
as the following:
<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>
And at theme functions.php
the following for detecting language:
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");
This session setting I used for switching the RTL/LTR stylesheets. Is there a better way to do so?
Now, the problem I am facing is:
domain.com/ar/someslugsoranything
and domain.com/en/someslugsoranything
.Edit: I have later commented out the following because enabling qTranslate's own language switcher keeps the persistence of language chosen. In fact the whole inspectVars
functions can be omitted.
$GLOBALS['q_config']['language']= $_SESSION['custom_lang'];
I have solved most of the problems.
By commenting out the two lines of .htaccess
file:
#RewriteRule ^ar[\/]?$ index.php?lang=ar
#RewriteRule ^en[\/]?$ index.php?lang=en
And many of the problems got resolved with the following post I found just now:
Displaying content based on language with qTranslate Biggest problem I have now is the mixed HTML texts which need to be switched in Arabic. Within the template I tried qTranslate shortcodes and the <!--:lang--><!--:-->
tags but they do not work there. Also, writing arabic directly into HTML is not a good idea I guess.