Page 1 of 4

Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Thu Apr 14, 2016 5:01 pm
by Japansimpson
Что я делал:

1) создал темплейт lang

<?php
$my_keywords['en'] = array(
'text' => 'текст_на_английском_языке',
);
$my_keywords['de'] = array(
'text' => 'текст-на-немецком-языке',
);
$my_keywords['ru'] = array(
'text' => 'текст_на_русском_языке',
);

if (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'de')) {
$lang = $my_keywords['de'];
} elseif (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'ru')) {
$lang = $my_keywords['ru'];
} else $lang = $my_keywords['en'];

if ($_GET['set_lng'] and isset($my_keywords[$_GET['set_lng']])) {
setcookie('force_lng', $_GET['set_lng'], time() + 86400);
$lang = $my_keywords['en'];
} elseif ($_COOKIE['force_lng'] and isset($my_keywords[$_COOKIE['force_lng']])){
$lang = $my_keywords[$_COOKIE['force_lng']];
}
?>

2) Заинклюдил его в темплейт main кодом
<!--INCLUDE_TEMPLATE_lang-->

3) заменил нужный текст куском кода
<?=$lang['text']?>

Открываю сайт в русском браузере - текст на русском. Пробую открыть сайт http://domain/?force_lng=de или http://domain/?force_lng=en - текст всё равно на русском языке. Пробовал переделать темплейт lang на подмену языка по гео-айпи - открывается на английском, форсированная замена языка язык опять не меняет. Пробовал и не 51-й версии, и на ТЦМС (обновлял оба сегодня) - не помогает. Добавлял (на всякий случай) языковые слэйвы - тож не работает. Что же и где я не доделал, подскажите, пожалуйста.

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Thu Apr 14, 2016 6:03 pm
by richmantrade
А если попробовать $_GET['set_lng'] поменять на $_GET['force_lng'] ?
Мне чета кажется что это оЧепятка в мануале :)

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Thu Apr 14, 2016 7:20 pm
by admin
http://smartcj.com/wiki/doku.php?id=ru: ... %D0%B0_i18


что то я тут поискал и set_lng вообще не нашел...
Может быть где то сохранился такой вариант ?

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Fri Apr 15, 2016 12:40 pm
by Japansimpson
Поправил. Теперь страница http://domain.com/ отображается нормально, а http://domain/?force_lng=de отображается с уже измененным текстом, но снизу страницы выводтися варнинг
Warning, can not parse template () (Error: Type 2, Cannot modify header information - headers already sent by (output started at /path/to/scj/folder/tube/index.php(769) : eval()'d code:53), line 247 )
и ниже выводится текстовый код всего темплейта. 247 строка этого темплейта:
247: setcookie('force_lng', $_GET['force_lng'], time() + 86400);
Это в ТЦМС. В 51-й же версии остается дефолтный язык, и он форсированно всё равно не меняется.

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Fri Apr 15, 2016 12:49 pm
by Japansimpson
$_GET['set_lng'] остался на
http://smartcj.com/wiki/doku.php?id=ru: ... gual_sites

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Sat Apr 16, 2016 3:15 pm
by admin
Варинигн потмоу что у вас там видимо есть таг под который нет сабтемпелйта.

От версии скирпта это не зависит. Совершенно весь код которые переводит меню у вас на руках, а точнее в темплейте.

D вики поправил, спасибо.

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Mon Apr 18, 2016 12:42 pm
by Japansimpson
>Варинигн потмоу что у вас там видимо есть таг под который нет сабтемпелйта.

Перепроверил - тагов, под которые нету сабтемплейтов, нету. И, судя по варнингу, ошибка в строке темплейта для мультиязычности:
setcookie('force_lng', $_GET['force_lng'], time() + 86400);

Может я скину доступ в админку в ЛС, проверите?

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Mon Apr 18, 2016 12:45 pm
by admin
Даю 100% гарантии что не на этой строке.

Вы точно проверили что нет указания темпелйта ?

Если точно - скидывайте админку.

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Mon Apr 18, 2016 1:56 pm
by Japansimpson
Проверил - нет указания темпелейтов несуществующих.

Скинул доступы в ЛС.

Re: Перевод меню сайта ( i18 ): форсированно не переводит.

Posted: Mon Apr 18, 2016 4:14 pm
by admin
да, не подумал что могут быть переводы только меню без контента

попробуйте плз заменить

setcookie('force_lng', $_GET['force_lng'], time() + 86400);

на


setcookie('force_lng', (isset($_GET['force_lng']) ? $_GET['force_lng'] : ''), time() + 86400);