[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Многоязычность сайта
IamSmorodin
Добрый день. Подскажите, как сделать сайт многоязычным.
Или где можно почитать?
Спасибо.



Спустя 8 минут, 32 секунды (28.10.2011 - 15:49) Winston написал(а):

Спустя 1 день, 17 часов, 31 минута, 40 секунд (30.10.2011 - 09:21) IamSmorodin написал(а):
Возникло еще парочку вопросов:

1. Могу я в php-файлах, в которых будут хранится тексты разных языков, вместо того, чтобы определять переменную как DEFINE, просто написать, например:

$text = "Привет, мир!";


2. Язык можно поменять на каждой странице. Делаю отдельный скрипт смены языка (в отдельном файле). Как вернуться из этого файла на ту, на которой была произведена смена языка. Или как-то лучше по-другому сделать?

И еще вопросик: как подключать к сайту экзотические шрифты, например, китайский, арабский?

Спасибо.

Спустя 27 минут, 51 секунда (30.10.2011 - 09:48) T1grOK написал(а):
1) Да можете. Просто определяя констранту, вы сразу видите, что это мультиязычная переменная, а не что-то другое, ведь в шаблоне могут содержаться и другие переменные. Для безошибочного определения можно завести массив мультиязычности. Типо $LANG['text'] - и сразу видно что - это языковая переменная.
2) А зачем? Если будет одна точка входа, то можно прописать условие смены языка, сменили - сделали редирект самого на себя. Или использовать массив $_SERVER, в которой находится вся требуемая информация и даже больше.

Спустя 7 часов, 52 минуты, 27 секунд (30.10.2011 - 17:41) IamSmorodin написал(а):
T1grOK
А нет ли какой-то опасности в использовании $_SERVER['HTTP_REFERER']?

Спустя 1 минута, 38 секунд (30.10.2011 - 17:43) Игорь_Vasinsky написал(а):
не понял вопроса. А что может быть страшного в использовании элемента супер глобального массива?

Спустя 2 минуты, 23 секунды (30.10.2011 - 17:45) caballero написал(а):
использование констант как минимум быстрее будет работать
и их не надо объявлять как global внутри функций

и кстати читабельнее использовать const а не define


Спустя 7 минут, 15 секунд (30.10.2011 - 17:52) Игорь_Vasinsky написал(а):
Цитата
и кстати читабельнее использовать const а не define

не согласен. это дело вкуса.

Спустя 11 часов, 13 минут, 9 секунд (31.10.2011 - 05:05) Эли4ка написал(а):
Если хотите реализовать мультиязычность на сайте используйте case...of а выбранные настройки запоминайте в куки на яваскрипт..

Спустя 39 минут, 16 секунд (31.10.2011 - 05:45) imbalance_hero написал(а):
IamSmorodin
Говорим сразу, что приписка HTTP говорит о том, что данная информация пришла от клиента, и являться истиной не может, именно их легче всего подделывать. Её то использовать для статистики правильно, но никак не для редиректов(!). HTTP использовать можно в основном только для статистики.

Спустя 4 часа, 34 минуты, 51 секунда (31.10.2011 - 10:19) IamSmorodin написал(а):
imbalance_hero
Как тогда лучше поступить?

Спустя 6 минут, 39 секунд (31.10.2011 - 10:26) imbalance_hero написал(а):
IamSmorodin
В какой именно ситуации?

Спустя 4 минуты, 12 секунд (31.10.2011 - 10:30) kirik написал(а):
Цитата (Эли4ка @ 30.10.2011 - 22:05)
выбранные настройки запоминайте в куки на яваскрипт..

Этого лучше делать не стоит, ибо поисковики не поймут. Лучше прописывать в url (site.com/ru/page.html). А если в URL не указано, то брать язык из клиентских заголовков.

Спустя 2 минуты, 54 секунды (31.10.2011 - 10:33) Эли4ка написал(а):
kirik
как понять поисковики не поймут?

Спустя 6 минут, 8 секунд (31.10.2011 - 10:39) kirik написал(а):
Эли4ка
Поисковые боты JS не отрабатывают, куки не принимают.

Спустя 12 минут, 7 секунд (31.10.2011 - 10:51) IamSmorodin написал(а):
Цитата (imbalance_hero @ 31.10.2011 - 10:26)
IamSmorodin
В какой именно ситуации?

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

Спустя 41 минута, 25 секунд (31.10.2011 - 11:33) XCross написал(а):
Вообще проблемы нет.

Создаешь файлы разные(php). В них массивы с одинаковыми именами.

langRU.php

$Lang = array(
'username' => 'Имя пользователя',
'password' => 'Пароль',
'hello_world'=> 'Привет, мир!'
);


langEN.php

$Lang = array(
'username' => 'User Name',
'password' => 'Password',
'hello_world'=> 'Hello, World!'
);


Дальше, где у тебя происходит начальная инициализация сайта определяешь, авторизован ли посетитель или нет. Если авторизован, то берем из таблицы информацию о том, какой язык предпочитает пользователь. Если же пользователь не авторизован подключаем язык по дефолту.

Пример:

session_start();

if(isset($_SESSION['user'])){

$GetLang = mysql_query("SELECT `user_language` FROM `users_table` WHERE user_id = ". $_SESSION['user']['id']);
$UserInfo = mysql_fetch_assoc($GetLang);

include 'lang'.$UserInfo['user_language'].'php';

}else{
include 'path_to_default_lang_file.php';
}

echo $Lang['hello_world'];

Спустя 1 час, 22 минуты, 17 секунд (31.10.2011 - 12:55) IamSmorodin написал(а):
kmaks
Спасибо. Тут все мне ясно. У меня чуть в другом проблема. У меня на каждой страничке есть меню, где можно выбрать язык. Ссылки ведут на change_language.php, где GET'ом передается параметр, в зависимости от которого у меня устанавливается куки языка.

У меня вопрос: после того как выполнился скрипт change_language.php, как вернуться на предыдущую страницу, не использую $_SERVER['HTTP_REFERER']?

Спустя 8 минут, 44 секунды (31.10.2011 - 13:04) XCross написал(а):
Ну дак GET' ом посылай адрес текущей страницы. Потом в change_language.php посылай заголовок редиректа на страницу, указанную в GET-параметре.

Спустя 5 часов, 31 минута, 46 секунд (31.10.2011 - 18:36) imbalance_hero написал(а):
IamSmorodin
Смотрел ирбис? Там есть у тебя в Variables: page,rem,sel,id,num . Сюда добавь lang, итого с:
main/read/
ты клацаешь на "сменить язык", ссылка обретает вид:
main/read/all/0/1/RUS
Оттуда меняешь язык и редирект на "page,rem,sel,id,num" и возврат идёт как раз:
main/read (если не отформатирован, то main/read/all/0/1/), то есть вернулся назад. $GET['page'].'/'.$GET['rem'];


_____________
Мой Twitter
Подписывайтесь :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.