@freeman0204

Какой самый простой способ сделать двуязычный сайт?

Вот что я нагуглил. Видел такие варианты есть сайт site.com/en или site.com/ru т.е. я выбрал язык, например русский, и если я перейду на страницу о нас то будет что то типа того site.com/ru/o_nas если на английский то site.com/en/o_nas т.е. есть страница en и ru и через них это работает.
Также видел такое index.php?lang-en или index.php?lang-ru, эти get параметры дописываются при нажатии на выбор языка и допустим главная перевелась, хотя у меня пока не получилось. но если перейти на site.com/o_nas то эти get параметры пропадают.
Мне нужно что бы при нажатии на en|ru соответственно сайт перевился полностью и на какую я страницу бы не перешел она была на выбранном языке. На счет куки и сессий, они не важны сейчас, главное что бы пока не закрыт браузер язык оставался выбранным, пока пользователь сам не переключит на другой.

ООП и подобного не нужно, самое простое на процедурном.

У меня все берется с БД как я понял если 2 языка то нужно создать по 2 таблицы o_nas_ru и o_nas_en и при условии писать в нужную. Но на практике не выходит.

То что я накодил:
блок я переключение языка.

<div class="tag">Language:<a href="index.php?lang-en">English</a>|<a href="index.php?lang=ru">Русский</div>


Как сделать то что я описал выше, и что бы нужный текст с админки писался в нужную таблицу (в админке будет сразу два поля например для русского и анг. текста и в БД разные таблицы) и отображался в зависимости от того что выбрано на сайте ru или en? Можно небольшой пример для понимания сути.

И как сделать что бы по стандарту был русский, т.е. что бы не просто index.php грузится в index.php.ru или index.php?lang.ru как правильней?
  • Вопрос задан
  • 444 просмотра
Решения вопроса 2
metallix
@metallix
Backend - developer
Как вариант в таблицах с контетом можно добавить поле language, где соответственно будет хранится id или ISO код языка по которому и будет подгружаться нужные записи.
т.е.
index.php?lang-en
будет загружать записи у которых language == 'en'.
В общем в кратце принцип такой)
Ответ написан
@dady_KK
PM
Насколько я понял у Вас проблема с самим алгоритмом. На одном из наших проектов мультиязычность делается следующим образом: при первом заходе посетителя определяется язык браузера по заголовкам, если такой язык есть в списке поддерживаемых языков то это значение записывается либо в куки, либо в сессию и используется уже в дальнейшем, если такого языка нет, то используется заранее выбранный язык по умолчанию. В базе есть доп.поле Lang для статей и другой информации, которая будет меняться в зависимости от языка, это поле редактируется из админки. Шаблон сайта, точнее тексты из шаблона - хранятся в языковых файлах, это просто файлы в которых ассоциативные массивы с разными названиями (типа ru, en) и одинаковыми ключами и соответствующими значениями и в шаблоне прописаны значения из массивов, где имя массива динамическое. И самое главное - есть два пути передачи языка через ГЕТ, либо вообще убрать ссылки без языка, либо ссылки без языка должны иметь заранее заданный язык по умолчанию. Резюмирую: при первом заходе определяем язык и записываем куда-то его (куки, сессия и прочее) и показываем страницу, где в шаблоне все фразы вызываются динамически в зависимости от языка и выводится основной текст (новость или содержание страницы) из базы по ключу Lang в соответствующей таблице. Как-то так
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы