это как удобно. в куки, да, но писать только перевыбранный язык. а умолчание определять по соответствующим заголовкам запроса. ну субддомен или фрагмент пути (да, как бы хост-порт-путь-запрос-анкер это всё входит в урл, сорьки) это куча "лишних" адресов. впрочем всегда будет понятно какую именно версию читает пользователь. можно и по одному урлу выдавать разный контент (по заголовкам/куке определяя язык) но тогда поисковику нужно будет сообщить что у страницы есть языковые варианты. а то он зайдет с разными настройками, увидит разные страницы и забанит за шум.
какой именно сегмент урл? фрагмент пути? фрагмент хоста? а тогда фрагмент субдомен/домен/ти-эл-ди? давайте корректной терминологией выражаться, ну пожалуйста.
Код (PHP): <?php session_start(); // Массив доступных для выбора языков $LangArray = array("ru", "ua", "en"); // Язык по умолчанию $DefaultLang = "ru"; // Если язык уже выбран и сохранен в сессии отправляем его скрипту if($_SESSION['NowLang']) { // Проверяем если выбранный язык доступен для выбора if(!in_array($_SESSION['NowLang'], $LangArray)) { // Неправильный выбор, возвращаем язык по умолчанию $_SESSION['NowLang'] = $DefaultLang; } } else { // Достаём язык из куков так как в сесси нет if(isset($_COOKIE['NowLang'])){ $language = $_COOKIE['NowLang']; // получем язык сайта из куки }else{ // В куках нет языка делаем по умолчанию русским $_SESSION['NowLang'] = $DefaultLang; } } // Выбранный язык отправлен скрипту через GET $language = addslashes($_GET['lang']); if($language) { // Проверяем если выбранный язык доступен для выбора if(!in_array($language, $LangArray)) { // Неправильный выбор, возвращаем язык по умолчанию $_SESSION['NowLang'] = $DefaultLang; } else { // Сохраняем язык в сессии $_SESSION['NowLang'] = $language; // Сохраняем язык в куки setcookie ("NowLang", $language, time() + 3600*24, "/"); // устанавливаем куку с языком сайта } } // Открываем текущий язык $CurentLang = addslashes($_SESSION['NowLang']); include_once ("language/language.".$CurentLang.".php"); ?> получилось что то вроде этого но как мне кажется долго обрабатывается или ошибся гдето Добавлено спустя 3 минуты 40 секунд: Может стоит как то запиать в sql вдруг пользователь авторизован и язык сайта у него записан ну если запись сделать .... или не стоит?
огорчили вы меня очень((( база вам чем досадила? Куки в топку. Работаем с сессией. Если не задана сессия, дефолиный язык записываем в сессию. Есои задана используем выбранный пользователем язык. Все просто. Добавлено спустя 58 секунд: Боюсь спросить а addslashes зачем?
человек пришел на сайт. показали тот язык который попросил его браузер. человек руками выбрал язык - записали в куку. если человек наш пользователь - записали выбранный язык в профиле и при авторизации запихиваем в куку. то есть работаем с заголовками. это быстро. и не требует лишних запросов к субд. Добавлено спустя 1 минуту 10 секунд: а можно обоснование использования сессии? ну чисто для общего развития.
Так а если я вот выбрал английский язык ушёл с сайта сессия оборвалась в следующий раз опять русский отобразиться Зачем??? Добавлено спустя 1 минуту 22 секунды: Код (Text): а можно обоснование использования сессии? ну чисто для общего развития. Ну что бы не запрашивать постоянно язык а в случии чего обращаться к сессии
Мозжечком чую нет там аторизации и профилей. Ты на своих сайтах через куки язык определяешь? Добавлено спустя 1 минуту 8 секунд: Не будь перфекционистом. Покажи где запоминается язык.
Выше писали, используй example.com/ru/, куки можешь использовать, когда человек выбрал язык, чтобы по возвращению был его выбор (перенаправлять в ru/, en/). Ещё браузер сообщает какой язык используют в системе, по нему можешь делать выбор за человека, пока он сам не определился.
ну не тебе вопрос был. но раз ты ответил то ты тоже не прав. закрыл чувак браузер (случайно срукожопил), открыл обратно, открыл сайт и вот ведь тваюмать - опять язык придется выбирать. а кука будет всегда прилетать вместе с каждым запросом к веб-серверу. как и другой заголовок. и по ним двум мы тупо определим один раз глобальную переменную (константу) с именем языка. никаких лишних сессий, никаких запросов к субд. Добавлено спустя 4 минуты 2 секунды: если мы переводим только интерфейс сайта то зачем нам городить огород с субдоменами/доменами/тлд/фрагментами пути. если у нас языкозависимый контент то возможны варианты, при которых в куках всё равно будет выбранный язык. банально чтоб интерфейс был в выбранном языке, а контент - в контекстном. как контекст делать уже кому как удобно и душа лежит.
Пионеры не ищут легких путей. Сложно спорить. Добавлено спустя 4 минуты 49 секунд: Чем координально отличается от кук? Ничем, разве что куки могут быть отключены. С сессией гораздо удобней работать, выдумвать сложности на пустом месте глупо. У человека обычный сайт, без всяких поддоменов и т.д. 90% делают через указание в url. С эстетической стороны мне так приятней.
Поясните мне вот такой момент скрипт отрабатывает за 0.000640869140625 и после того как он отработал в браузере продалжает крутиться иконка мол сайт ещё грузиться это как так? Добавлено спустя 24 секунды: ещё секунды 3
холивар на тему выключенного джаваскрипта. проходили. дальше. $lang = $c['lang'] в разы сложнее чем $lang = $s['lang'] перед которым еще и сессию надо не забыть стартануть. понятно, чем больше строк в алгоритме тем он тебе кажется проще. ок. тогда спор закончен наверное. адекватных примеров нет. неуместные тычки зачем-то есть. ведь мы про разные вещи говорим. не заметил? Добавлено спустя 21 секунду: смотри кто соединения не закрыл. кипэлайв и всё такое.
Проверь network через браузер он все загрузил? Добавлено спустя 1 минуту 14 секунд: Тебя пугает сессион старт? Сессия на 99.9999% сайтах испоьзуется. Добавлено спустя 51 секунду: Ну ок. Мне код писать надо и сегодня сдать
Ну сессия файлы дёргает по умолчанию, а cookie нет, думаю в вакууме куки лучше чтобы хранить 1 параметр
Надо отталкиваться от задачи, если ее можно решить быстро просто надо так и делать. Не вижу ничего плохого в сессии, куки излишни, а выдумывать как бы мозг помучить это глупо.
да почему куки-то излишни?)))) можно другие бэкэнды выбрать, мемкэш тот же - озу дергается в тысячи раз чаще файлов.
И че? Пусть дергает. Такая у них судьба. Если это в качестве оптимизации то это глупо((( Добавлено спустя 47 секунд: С пхп жопа, переходите на django Добавлено спустя 2 минуты 42 секунды: Да ну нафиг они? Зачем запоминать какой язык выбрал пользователь? Зайдет еще раз выберет, не помрет. Если никто не ставит такой задачи, а ее очень редко кто поставит, для админки может быть, то и реализовывать не надо.
ну как бы а зачем на серваке хранить лишние данные о языке. язык/тему и тому подобное юзер выбрал - зачем мне ради него сессию создавать? глупо если у меня зашло миллион посетителей создавать миллион сессий если допустим у меня сайт не имеет в себе никакой реализации "личного кабинета". тогда как раз пусть пара байт у каждого из миллиона в куках похранится. мне так будет приятнее. в общем я пока за куки. ну опять же у каждого свой взгляд на реализацию))) и уверен что по большей части именно задача должна определять наиболее правильный подход к её решению. 1-1 ))) тс, ты за нашими спорами что-нибудь полезное усвоил?
Считаю надо сразу оговориться о чем речь: язык интерфейса или язык контента. Контент однозначно должен определяться URL. Если это правило не соблюдать, будут проблемы с поисковиками и вообще с адекватностью ссылок. Интерфейс — меню, имена полей в формах и т.п. — наверное полезно предугадывать, но давать перекрыть на выбор самого пользователя. И этот язык уже сам по себе, отвязан от URL. Как хранить предпочтения незареганных юзеров, помоему пофигу. Если в движке сессии уже используются зачем-то, можно еще один параметр добавить. Если не используются — то проще в куку засунуть. (А если подумать о времени жизни сессии, то язык в куке предпочтительнее в любом случае.) Я так думаю.