Cайт на двух языке - (ru, en) основное язык - (en). Уважаемые Программист скажите пожалуйста как сделать так чтобы после выбора языка (ru), вовремя перехода на главную страницу, вместе (www.site.com) загрузился (www.site.com/index.php?lang=ru) и наоборот. мой код: PHP: if(isset($_GET['lang'])) $language = $_GET['lang']; else $language = ""; if ($language == "ru") { include("headerRU.php"); } else { include("header.php"); } HTML: <a href="index.php?lang=ru"><img src="img/flags/RU.gif" align="right" title="Russian"></a> <a href="index.php?lang=no"><img src="img/flags/GB.gif" align="right" title="English"></a> Низкий вам поклон...
вы можете и ссылку на главную сделать с отметкой языка. Это ж как раз будет нормально, разные адреса - разные страницы, по контенту. Т.е. всегда язык палить по адресу.
Лучше всё-таки использовать get параметры. Если информацию о выбранной языковой версии хранить в контексте пользователя, то, например, делиться ссылками на страницу в нужной языковой версии будет сложновато. Ну то есть у страницы на выбранном языке нужно делать уникальный url. И по нему восстанавливать язык и показывать нужный контент.
А зачем делиться ссылкой с нужной языковой версией? Основной язык должен определяться настройками браузера, а я уже сам выберу какой мне предпочтительно. Если я делюсь ссылкой, мне важно содержимое, а не то, на каком языке оно отобразится. Почти никогда язык не указывается в GET параметре. Языковые настройки хранятся обычно в куки, или в сессии
Вы Шо-то путаете, т.е. это явно не для случая ТСа. Речь об обычном сайте, а не ЛК и т.п. Если оч. хоЦа, вам никто не запрещает дополнительно иметь адреса для автодетекта языка. Но вот не иметь «языковых адресов» весьма опрометчиво. --- Добавлено --- P.S. Конечно, не обязательно использовать только GET-параметр. ЧЁ никогда не встречали ветки /ru/, /en/ и т.п. или языковые версии на отдельных (под)доменах?
Согласен, такое часто встречается, но обычно как раз таки такие ссылки формируются на сервере, и берутся эти значения из заранее установленных. У вас же нет ссылок на каждый раздел для каждого языка, ссылка одна, а то, на какую языковую версию сайта она ведёт уже и определяется параметром установленного языка, который в свою очередь устанавливается по умолчанию из настроек браузера, это чтоб случайно не выдать американцу, у которого всё на английском версию сайта на русском языке (Если такая возможность конечно предусмотрена, и сайт мультиязычный) --- Добавлено --- Нет, реализовать конечно можно по разному, можно брать этот параметр из GET, или по ЧПУ, и на основе него уже формировать ссылки, но это, как по мне не очень удобно. Зачем в ссылке лишняя информация, которую можно "спрятать" куда-нибудь в сессию?
@SamyRed не надо путать настройки интерфеса и язык контента. Если ссылаться на наш форум, то каждый раздел или тема имеет свой уникальный адрес, он не зависит от выбранных настроек языка для данного пользователя. НО!!!!! Если заведем разделы для тем на английском языке, или на украинском, то у этих разделов будут свои уникальные адреса и можно будет бросать ссылку либо "PHP для новичков" (рус), либо на "PHP for dummies" (eng). Понимаешь? Язык контента => свой адрес. не принципиально важно за счет чего — поддомен, папка в пути или параметр — это разные URL. Язык интерфейса => значение в куки или в сессии, на URL не влияет. --- Добавлено --- П.С. Не всем очевидно, что http://example.com/boogie и http://example.com/boogie?lang=ru это разные URL. Я не призываю делать многоязычность контента за счёт GET-параметров, помоему это некрасивый вариант. Но просто имейте в виду, что для поисковика параметры это часть адреса. Страницы c разными параметрами могут индексироваться независимо. Для указания "единственно верного" варианта адреса в странице может присутствовать ссылка на канонический адрес.
Моё сугубое IMHO как правильно сделать многоязычность на сайте. 1. Для страниц с разным языком содержимого нужны разные адреса и проще всего это сделать через "папки" /en/about-us, /ru/about-us и т.п. Для удобства администратора, CMS может помочь, храня несколько вариантов статьи для разных языков как логически единую запись. Но с т.з. посетителя и поисковика, варианты статьи на разном языке это разные страницы! 2. Язык интерфейса, т.е. язык меню и сообщений, это отдельная задача. Он выбирается по убыванию значимости: - если пользователь залогинен, берем язык из его профиля - если не залогинен, но уже выбрал язык по ссылке - берем из куки - если не залогинен и не выбирал язык, берем из заголовка Accept-Language Теперь можно вернуться к вопросу ТС: Я бы не стал использовать параметр lang для всех страниц, а также не светил бы index.php в адресе. Допустим у нас есть обработчик выбора языка по адресу /set-language принимающий параметр lang. Код (HTML5): ... <a href="/set-language?lang=ru" rel="nofollow">РУ</a> | <a href="/set-language?lang=en" rel="nofollow">EN</a> Обработчик /set-language делает две вещи: 1. Сохраняет выбранный язык в куку. А если пользователь ещё и залогинен, то дополнительно в поле его профиля. Это значение будет использоваться дальше для локализации меню и сообщений. 2. Делает редирект на главную страницу в нужном языке, т.е. на /en/ либо /ru/. Так как у нас русский является языком по умолчанию, мы на главной странице / выводим копию страницы /ru/, а в шапке ставим Код (HTML5): <head> <link rel="canonical" href="https://www.site.com/ru/" /> ... Логично предположить, что главная на английском содержит ссылки на другие страницы тоже на английском. Но реально пользователь может гулять по сайту как ему заблагорассудится, заходя то на английские страницы, то на русские, но при этом у него язык меню уже выбран и сохранен в куке, он от URL не зависит. А вот контент напрямую зависит от URL и только от него!
А чем плохо хранить варианты в одном файле? То есть смотрим, какой язык сейчас " в действии" и тупо через if выбираем. Типа PHP: if ($_SESSION["lan"] == 'ru') {} if ($_SESSION["lan"] == 'en') {} Заголовки, меню через настроечные файлы. Так, например PHP: $text_menu = array(); $text_menu['start'] = "Главная"; $text_menu['news'] = 'Новости';