Двуязычный 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 следующее для определения языка:

      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. Есть ли лучший способ сделать это?

Теперь проблема, с которой я столкнулся:

  1. Как использовать ссылку, которая переключит текущую страницу, блоги на другой язык? Я использовал domain / ar и domain / en для переключения, но сначала нужно вернуться домой.
  2. Я хочу сохранить URL-адреса типа domain.com/ar/someslugsoranything и domain.com/en/someslugsoranything.
  3. У меня есть несколько изображений, слайдов в шаблоне, которые нужно переключать при смене языка. Как лучше? Также с ними есть тексты в формате HTML, которые тоже нужно поменять.

Изменить: позже я прокомментировал следующее, потому что включение собственного переключателя языка qTranslate сохраняет постоянство выбранного языка. Фактически все inspectVars функции могут быть опущены.

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

person Lenin    schedule 04.12.2012    source источник
comment
Примечание; нет необходимости избегать косой черты. Также вы можете добавить флаг QSA, если у вас есть URL-адреса типа en/?key=value. Итак RewriteRule ^ar/?$ index.php?lang=ar [QSA]   -  person Gerben    schedule 05.12.2012
comment
Для domain.com/ar/someslugsoranything используйте RewriteRule ^ar(/(.*))?$ index.php?lang=ar&page=$2 [QSA]   -  person Gerben    schedule 05.12.2012


Ответы (1)


Я решил большинство проблем.

Закомментировав две строки файла .htaccess:

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

И многие проблемы были решены с помощью следующего сообщения, которое я только что нашел:

Отображение контента на основе языка с помощью qTranslate Самый большой Проблема, с которой я сейчас сталкиваюсь, - это смешанные тексты HTML, которые нужно переключить на арабский. В шаблоне я попробовал шорткоды qTranslate и теги <!--:lang--><!--:-->, но они там не работают. Кроме того, я думаю, не стоит писать арабский прямо в HTML.

person Lenin    schedule 04.12.2012
comment
Я также избавился от следующей строки из functions.php, поэтому я не храню язык в сеансе. qTranslate справляется с этим лучше. $GLOBALS['q_config']['language']= $_SESSION['custom_lang']; - person Lenin; 10.12.2012