С нами с 24.11.17
Сообщения: 69
Рейтинг: 204
|
Добавлено: 19/12/17 в 11:19 |
Всем привет. Не знаю точно в какой раздел лучше, заранее прошу прощения, если не туда...
Дано: мультияз-сидж на СмартСЖ, кат-ии переведены внутри смарта, а остальная часть (названия меню, пагинация, общие слова какие-то и т.п.) подгружается через внешний .txt файл. Так вот, на некоторых языках всплыла такая вот проблем - у первого символа бьется кодировка. Именно первый символ и только из моего .txt файла (т.е. в категориях, например, не замечено). Выглядит вот так: prnt.sc/hpga8n
только на хинди, арабском, китайском и корейском языках. Остальные нормально. Кручу-верчу, не пойму в чем проблема... Кодировка в файлах UTF-8 (без BOM и с ним пробовал - без разницы). Знакомый админ крутил настройки сервака - безрезультатно. Если бы всё криво выводилось (из базы смарта и из моего файла), то понятно, что где-то глобальная ошибка, а тут только несколько языков и именно первый символ... Есть какие-то мысли, куда следует посмотреть и что попробовать?
ps: Пока нашел временное решение - отбил первый символ пробелом. Выглядит нормально (не бьётся ничего), но впереди пробел (внешне не заметно, но в коде видно).
|
|
|
|
С нами с 28.07.17
Сообщения: 207
Рейтинг: -303
|
Добавлено: 19/12/17 в 13:25 |
Перенеси суть txt в темплейт смарта и подключай на нужных страницах
Перевод меню сайта ( i18 )
Довольно просто сделать перевод меню сайта (те ссылок типа Most Popular, Order By date и прочее) на другие языки.
1. Делаем кастом темплейт например languages в котором будет код слов
Код: [развернуть] | <?php
$my_keywords['en'] = array(
'most_popular' => 'Most popular',
'order_by_date' => 'Order By Date',
и так далее
);
$my_keywords['ru'] = array(
'most_popular' => 'Самые популярные',
'order_by_date' => 'Сортировать по дате',
и так далее
);
$my_keywords['de'] = array(
'most_popular' => 'Populärste',
'order_by_date' => 'Sortiert nach Datum',
и так далее
);
|
и так далее сколько угодно языков
далее 2 варианта подставления языка:
по языку браузера
Код: [развернуть] | if (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'ru')) {
$lang = $my_keywords['ru'];
} elseif (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'de')) {
$lang = $my_keywords['de'];
} else $lang = $my_keywords['en'];
|
или по geo_ip
Код: [развернуть] | if ($_SERVER['GEOIP_COUNTRY_CODE'] =='RU') {
$lang = $my_keywords['ru'];
} elseif ($_SERVER['GEOIP_COUNTRY_CODE'] =='DE') {
$lang = $my_keywords['de'];
} else $lang = $my_keywords['en']; |
надеюсь в обоих примерах понятно как добавить больше языков
и в конце темпелйта
Код: [развернуть] | if ($_GET['force_lng'] and isset($my_keywords[$_GET['force_lng']])) {
setcookie('force_lng', $_GET['force_lng'], time() + 86400);
$lang = $my_keywords[$_GET['force_lng']];
} elseif ($_COOKIE['force_lng'] and isset($my_keywords[$_COOKIE['force_lng']])){
$lang = $my_keywords[$_COOKIE['force_lng']];
}
|
Все, конец темплейта
2. во всех темплейтах где надо будут разные языки инклудим этот созданный темплейт
<!--INCLUDE_TEMPLATE_languages-->
3. В темпелейтах соответствующие слова заменяем на переменные, например
Most popular меняем на <?=$lang['most_popular']?>
Order By Date меняем на <?=$lang['order_by_date']?>
и так далее
с этого момента у вас уже должны быть разные описания для разных языков
4. даем юзеру возможность переключить язык “насильно”
для этого ставим линку вида
http://domain/?force_lng=de (и тп нужных язык в зависимости от массива ваших языков в $my_keywords['de'])
Все.
|
|
|
|
Elite mercenary
С нами с 26.04.09
Сообщения: 10376
Рейтинг: 1650
|
Добавлено: 20/12/17 в 01:25 |
Оффтопик: как же эту матрицу из 1го пункта кумарно делать, куча работы руками
|
|
|
|
С нами с 28.07.17
Сообщения: 207
Рейтинг: -303
|
Добавлено: 20/12/17 в 11:22 |
|
|
|
|
С нами с 24.11.17
Сообщения: 69
Рейтинг: 204
|
Добавлено: 20/12/17 в 18:20 |
Dx: Да, спасибо, это видел. Но по-идее была бы проблема со всеми языками? А у меня только с четырьмя из 2. Странно.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 21/12/17 в 12:46 |
proffitraff писал: | хинди, арабском, китайском и корейском языках |
а чем переведены внутри смарта?
вообще имеет смысл лепить на сайт кривой гугл-транслейт азиатских языков?
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |