Jump to content
  • Sign Up
JIucky

Смена языка на сайте при помощи <select>?

Recommended Posts

Помогите с помощью JS сделать такой функционал, который позволял бы при выборе какого то языка из списка <select> в браузере загружать соответствующий URL с переводом сайта. Значение для URL надо брать из <option value="/en/">. И еще важно, после того как новый URL будет заружен надо чтобы в списке <select> сохранялся выбранный язык, т.е. ему присваивался атрибут selected.

<select>
	<option>Choose language<option>
	<option value="/en/">English<option>
  	<option value="/es/">Español<option>
	<option value="/de/">Deutsch<option>
	<option value="/it/">Italiano<option>
  	<option value="/nl/">Nederlandse<option>
</select>

 

Share this post


Link to post
Share on other sites

Топорный вариант:

<select id="lang">
  <option>Choose language</option>
  <option value="/en/">English</option>
  <option value="/es/">Español</option>
  <option value="/de/">Deutsch</option>
  <option value="/it/">Italiano</option>
  <option value="/nl/">Nederlandse</option>
</select>
 var lang = document.getElementById('lang');
lang.onchange = function(){ 
window.location = 'http://сайт.com' + lang.options[lang.options.selectedIndex].value + 'index.html'}

Ну а чтобы был выбран нужный элемент в списке - на нужной странице присваиваете selected соответствующему пункту в html 

Share this post


Link to post
Share on other sites

AlexZaw, это не совсем то что нужно. Смотрите, у мена есть такой урл http://site.com. При выборе языка пользователем из списка, например Deutsch, в браузере должен осуществляться переход на версию сайта с выбранным языком, т.е. урл меняется на http://site.com/de/. И вот уже на этой странице http://site.com/de/ в списке должен быть присвоен атрибут selected выбранному языку Deutsch. В вашем варианте после перехода на http://site.com/de/ в списке сбросится выбранный ранее <option> на первый из списка, т.е. он будет <option>Choose language</option>.

Share this post


Link to post
Share on other sites

Так я вам и говорю что вариант топорный, но проблему с пунктом селекта можно решить установив selected в html на странице http://site.com/de/  вручную на нужном пункте, и так для каждого языка. По идее можно конечно передавать параметры на открываемую страницу, и на ней в зависимости от переданного параметра выставлять нужный пункт. Но с этим я пока не разбирался

Share this post


Link to post
Share on other sites

можно js проверять при загрузке страницы присутствует ли выбранный язык, если это /de/
найти его в select и выставить ему selected

а вообще это лучше делать на уровне сервера при формировании пунктов select

Share this post


Link to post
Share on other sites
В 09.07.2018 в 13:46, Switch74 сказал:

а вообще это лучше делать на уровне сервера при формировании пунктов select

Это как? Покажите пример пожалуйста.

Share this post


Link to post
Share on other sites
$url = preg_split('/\?/',$_SERVER['REQUEST_URI']);
$url = preg_split('/\//',$url[0]);
$lng = array('de'=>'','en'=>'','ru'=>'');
if(!empty($url[1])) $lng[$url[1]] = ' selected';
echo '<select>';
foreach($lng as $key=>$val)
{
echo '<option value="'.$key.'"'.$val.'>'.$key.'</option>';
}
echo '</select>';

как-нить так

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Miss_Cherie
      Здравствуйте!
      Возникает проблема при работе с select'ом. Стиль select изменен с помощью скриптов.
      При генерации кода получается следующее:


      <select class="selectBox" name="PERSONAL_GENDER" style="display: none;">
      <option value="">(неизвестно)</option>
      <option selected="SELECTED" value="M">Мужской</option>
      <option value="F">Женский</option>
      </select>
      <a class="selectBox selectBox-dropdown" style="width: 469px; display: inline-block; -moz-user-select: none;" title="" tabindex="0">
      <span class="selectBox-label" style="width: 425px;">Мужской</span>
      <span class="selectBox-arrow"></span>
      </a>

      —КОД ВЫПАДАЮЩЕГО СПИСКА—
      <ul class="selectBox-dropdown-menu selectBox-options" style="-moz-user-select: none; width: 469px; top: 1145px; left: 424.8px; display: block;">
      <li class="">
      <a rel="">(неизвестно)</a>
      </li>
      <li class="selectBox-selected">
      <a rel="M">Мужской</a>
      </li>
      <li class="">
      <a rel="F">Женский</a>
      </li>
      </ul>


      Но на сайте есть моменты, когда в зависимости от выбранного пункта выполняется подгрузка определенного контента (и перезагрузка страницы). И после перезагрузки select теряет все свои стили (то есть js не подгружается) и это в коде выглядит так:


      <select id="COUNTRYORDER_PROP_5" type="location" onchange="SetContact(this.value)" name="COUNTRYORDER_PROP_5">

      <option>(выберите страну)</option>

      <option selected="selected" value="1">Азербайджан</option>

      <option value="12">Армения</option>

      <option value="2">Беларусь</option>
      </select>


      Я думаю, что проблема в атрибуте onchange="...", который добавляется у select'a . Но никак не могу исправить.
      Помогите, пожалуйста!
      Как сделать, чтобы функция подгрузки стилей у селекта всегда вызывалась?
  • Member Statistics

    46,841
    Total Members
    1,451
    Most Online
    SkyMasteer
    Newest Member
    SkyMasteer
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Спрашивают сейчас

  • Пишут сейчас

    • Облако в помощь: как облачные технологии помогают известным компаниям Ценным опытом нужно делиться, особенно – опытом успешного использования облачных сервисов. Начнем с опыта компаний, чьи товары и услуги на слуху по всему миру. Поговорим о тех, кто внедрил облачные технологии (или планирует это сделать) и выгодно использует свое облачное преимущество над конкурентами.   Немного истории   Люди грезили облаками всегда. И если в буквальном смысле их покорение далось человечеству еще в 18 веке (спасибо братьям Монгольфье), то в интересующем нас значении все произошло много позже.   Ждать пришлось более двух столетий. Да, «облачные» идеи провозглашались еще в 50-х годах 20 века, задолго до появления интернета, но впервые по-настоящему материализовались лишь в 1999 году. Тогда компания Salesforce начала давать пользователям доступ к своим вычислительным ресурсам через веб-сайт. Новинка разлеталась как горячие пирожки, поэтому скоро похожими решениями обзавелись гиганты – Amazon, Google, IBM и Microsoft.   Облако на колесах   Компьютерам, как известно, уже давно не сидится в офисах – добрались они и до автопромышленности, причем много лет назад. А где компьютеры, там и до облака рукой подать. Одними из первых это смекнули в компании Volvo и приступили к созданию умного автомобиля нового поколения. А работать он будет вот как: автомобиль во время движения фиксирует все потенциальные опасности (скользкий участок трассы, яма, авария, обломок дерева и т.д.) и передает их в облачную базу данных, откуда эта информация транслируется на все автомобили, которые приближаются к опасному отрезку пути. Если Volvo успеет внедрить эту технологию раньше всех, то наверняка покорит сердца еще большего количества автолюбителей, в частности тех, кому безопасность на дороге превыше всего.       Финансы В банковском деле вопрос безопасности тоже стоит далеко не на последнем месте. Это, а еще желание опередить конкурентов в плане производительности привело в облака мировых гигантов банковского дела: BBVA, Goldman Sachs, Capital One и других. За признанными авторитетами подтягиваются организации поменьше – облачные технологии становятся трендом среди банкиров.   В Украине процесс виртуализации хоть и отстает немного, но на месте не стоит. Не так давно экс-топы ПриватБанка анонсировали запуск осенью 2017 года первого в стране мобильного банка без физических отделений. Сами разработчики обещают, что приложение будет даже круче, чем Приват24. Ждем.   Умный дом…   Технологии умного дома стремительно обретают популярность по всему миру. Активнее всего их внедряют в США, Китае и Германии. Суть следующая – в доме подключаются датчики и устройства, которые связывают между собой все электроприборы и позволяют управлять ими с помощью одного пульта или даже смартфона. Чтобы хранить и обрабатывать весь массив информации, пользователю, по логике, нужен мощный компьютер, что сказывается на стоимости такого решения. Выход нашелся довольно быстро – обрабатывать информацию в вычислительном облаке, что позволило снизить затраты на умный дом, подняв тем самым его популярность.   Если полноценный умный дом не по карману, то можно выбрать его «упрощенные», бюджетные версии. В частности, компания Xiaomi со своим Smart Home Kit предложила автоматизировать основные процессы в доме по доступной цене, чем значительно повысила свой авторитет на рынке.   …да и город не дурак   Если построить рядом много умных домов, получится умный город? Ну, почти. :) Умный город – это еще и интеллектуальные системы общественного транспорта, виртуальные очереди в поликлинику и городские службы, централизованная система проката велосипедов и автомобилей и много других по-настоящему классных и нужных решений. Среди европейских городов такие системы частично реализованы в Париже, Мадриде, Барселоне, Лондоне.   Не отстает Китай. Так, власти административного района Макао (или, как его еще называют, «Китайский Лас-Вегас») заключили соглашение на внедрение облачных технологий с компанией Alibaba. Уже через 4 года Макао превратится в умный город с развитой ИТ-инфраструктурой.   На этом, пожалуй, пока сделаем паузу. Впишите и свое имя в список великих, прихватив с собой облако на удачу. Не знаете, с чего начать? Обращайтесь к нам за грамотной консультацией, мы рады вам 24х7.    
    • По указанному адресу убрал, ничего не изменилось
    • Здравствуйте. Уберите строку следующую строку в файле "wp-content/themes/yoo_nano2_wp-child/style.css" *{ box-sizing: border-box; }  
  • Popular Contributors

×
×
  • Create New...