Поддержка языков

Автор skyflox, 19 марта 2011, 19:20:48

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

skyflox

Скажите, можно ли сделать так, чтобы в разделах можно было выставить разный язык по умолчанию? Просто у меня есть 2 раздела: русский и английский. Перенаправление с сайтов осуществляется в определенный раздел. И было бы здорово, если бы гость заходя в с сайта на форум видел бы интерфейс на родном языке.

Модуль выбора языка у меня стоит, но это немного не то...

Mavn

самое простое решение
Пример
есть раздел http://www.simplemachines.ru/index.php?board=54.0
для того чтобы при обращении напрямую к этому разделу автоматически переключался язык можно
<a href="http://www.simplemachines.ru/index.php?board=54.0;language=english">English board</a>
вставить в название раздела такую вот вещь.
ну конечно же выбор языка для пользователей должен быть включен.
не проверял но по идее должно работать
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

skyflox

Увы, с данной конструкцией возникает баг. Наверное надо в багтрекер отписать, ибо это хоть и пустячная, но уязвимость.
Если войти в форум по подобной ссылке, то язык намертво прописывается где-то в сессии. Переключатель языков - не срабатывает. Помогает только заход в профиль, и выставление там снова русского языка.

Bugo

Попробуйте в Load.php перед строчкой

// Allow the user to change their language if its valid.

добавить блок

global $board;
$eng_boards = array(2, 3); // id англоязычных разделов
if (in_array($board, $eng_boards)) {
updateMemberData($user_info['id'], array('lngfile' => 'english'));
$user_info['language'] = 'english';
$_SESSION['language'] = $user_info['language'];
}

После этого при заходе в разделы, id которых входит в массив eng_boards, текущий язык пользователя будет переключаться на английский.

skyflox

Bugo:
Огромное спасибо!

Чуть-чуть переделал скрипт и заработало)
global $board;
$eng_boards = array(11, 12); // id англоязычных разделов
if(in_array($board, $eng_boards)){
if(empty($_SESSION['language'])){
  $_SESSION['language'] = 'english';
}
}

Иными словами, если это 1-й заход посетителя и в его сессии еще не прописан язык - определяем его.
Если это не первый заход, или посетитель залогинен на форуме - язык будет выставлен дальше по коду (там проверяется есть ли данные в $user_info['language'] и если нет - устанавливаются из сессии или из данных посетителя).

В итоге, все работает корректно. Для залогиненного посетителя - отображается тот язык, который он выбрал в профиле, для тех кто переопределил язык с помощью "селектора" - также отображается выбранный язык. Ну а для новенькие видят форум на том языке, в какой раздел они попали при входе.
Еще раз - спасибо! )