Отдельная внутренняя страница "Виджеты" для каждого языка
В настоящее время я пытаюсь заставить свой сервер работать с несколькими языками. Я использую qTranslate в качестве плагина для перевода.
До сих пор я создал пользовательскую страницу опций с поддержкой нескольких языков. Когда вы нажмете на другой язык (в qTranslate на боковой панели), вы получите новую страницу параметров с подготовленными параметрами-переменными
show(option_textarea) -> 'english backend' -> show(option_textarea_en)
(saving under the same variable possible)
Итак, если я использую одну из опций в своем шаблоне, я просто получаю доступ к опции с текущим активным язык
give(option_logo) -> 'german page viewing' -> return option_logo_de
Это также работает на странице виджета. ЗА ИСКЛЮЧЕНИЕМ того, что когда я переключаю свой текущий язык в бэкэнде, каждый виджет получает статус "неиспользуемый", и мне приходится вручную снова вставлять виджеты. Они не существуют для текущего активного языка и не являются предпочтительными. Так что в целом я могу устанавливать виджеты только для одного языка за раз. Виджеты с другого языка, который я установил, затем удаляются. Как я могу отключить это поведение?
Что мне нужно, так это фиксированный система редактирования виджетов, которая работает так же, как и мои параметры. Может быть, есть обходной путь для этой проблемы?
Заранее благодарю.
2 answers
Я не знаю, как работает qTraslate, но вы можете передавать фильтры в Логику виджетов, вы в основном дублируете каждый виджет, по одному для каждого языка. Я использовал этот метод с WPML для отображения виджетов на отдельных языках, что иногда может быть сложно (например, когда они делают прямые запросы к БД).
Как указывает Вик, это самый простой способ.
У меня есть следующая функция в моем functions.php
и я использую ее для фильтрации множества дублированных виджетов, по одному для каждого языка, например: is_lingo('en')
, is_lingo('pt')
, и т.д....
function is_lingo( $what )
{
if ( !function_exists('qtrans_getLanguage') )
return false;
$lingo = qtrans_getLanguage();
if( $what == $lingo )
return true;
return false;
}