Мультиязычный сайт. Как сделать префикс текущей ссылки?

Тема в разделе "Верстка", создана пользователем funnywheel, 12 июл 2013.

Информация :
Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с Правилами раздела и Правилами форума
Для быстрого поиска ответов на ваши вопросы воспользуйтесь Картой раздела и/или Поиском по разделу
Модераторы: ultra
  1. funnywheel

    funnywheel WordPress developer

    Регистр.:
    6 авг 2010
    Сообщения:
    217
    Симпатии:
    147
    Есть сайт на DLE, попросили добавить мультиязычность на поддоменах.

    Имеем селектор языков в шаблоне, выполнен списком ссылок.
    HTML:
    <ul>
    <li><a href="#">RU</a></li>
    ...
    </ul>
    Задача: как получать ссылку с адресом на поддомен на текущую страницу?
    другими словами, если я нахожусь на странице site.ru/testpage.html, то при клике по ENG меня перекидывало-бы на eng.site.ru/testpage.html
     
  2. Compressor

    Compressor

    Регистр.:
    31 янв 2009
    Сообщения:
    314
    Симпатии:
    200
    Возможно такой способ быдловат...

    HTML:
    <ul>
        <li><a id ="rulink" href="#">RU</a></li>
        <li><a id ="enlink" href="#">EN</a></li> 
    </ul>
    <script>
    var url = location.href.replace("http://","");
    document.getElementById("enlink").href = "http://eng." + url;
    document.getElementById("rulink").href = "http://rus." + url;
    </script>
     
    funnywheel нравится это.
  3. allseo

    allseo Создатель

    Регистр.:
    26 июн 2013
    Сообщения:
    38
    Симпатии:
    10
    Думаю, лучше так:
    HTML:
    <ul id='lang'>
    <li><a href="#">ENG</a></li>
    <li><a href="#">RU</a></li>
    </ul>
    <script>
     var url=location.href;
     var langsel=document.getElementById('lang');
     langsel=langsel.getElementsByTagName('a');
     for (var i=0;i<=langsel.length;i++){
      langsel[i].href=url.substring(0,7)+this.innerHTML.toLowerCase()+'.'+url.substring(7,url.length+1);
     }
    </script>
    Это если названия пунктов соответствуют языковым префиксам, конечно, иначе придётся их отдельно, скажем, в data-аттрибутах хранить. На jQuery поизящнее будет.
     
  4. etosh

    etosh Создатель

    Регистр.:
    22 июл 2013
    Сообщения:
    32
    Симпатии:
    4
    А если JS отключен? Лучше это делать на стороне сервера. Что за CMS стоит?
     
  5. ERRetick

    ERRetick Создатель

    Регистр.:
    17 июл 2012
    Сообщения:
    10
    Симпатии:
    0
    DLE. В первом посте указано.
    Точно знаю, что в Joomla при реализации многоязычного сайта, движок сам отдает нужный контент, ориентируясь на языковые настройки браузера.
    Модуль, с похожим функционалом, видел где-то полгода назад для DLE в сети. Судя по демо, вполне корректно работает

    Хотя, вариант allseo проще
     
  6. funnywheel

    funnywheel WordPress developer

    Регистр.:
    6 авг 2010
    Сообщения:
    217
    Симпатии:
    147
    Спасибо откликнувшимся (долго не смотрел темку, немного не до этого было, сегодня сделал).

    Видел вариант на доп. полях и смене шаблона, мне не подходит, не буду вдаваться в подробности, конкретно модуль не встречал, если наткнетесь - выложите пожалуйста.

    На сайте обильно используется JS, и если у пользователя он будет отключен, то селектор языков будет наименее заметной проблеммкой ;-)

    На основе этого способа и сделан рабочий вариант, спасибо за направление мыслей.

    HTML:
    <script>
    window.onload=function()
    {
        var en = location.href.replace("http://","http://en.");
        var ua = location.href.replace("http://","http://ua.");
        document.getElementById('enlink').setAttribute('href', en);
        document.getElementById("ualink").setAttribute('href', ua);
    }
    </script>
     
    <a id="ualink" href="#">UA</a>
    <a id="enlink" href="#">EN</a>
     
  7. noxxxxx

    noxxxxx Постоялец

    Регистр.:
    19 апр 2007
    Сообщения:
    132
    Симпатии:
    32
    я, наверное, параноик, но стараюсь чтобы java была только там где без неё не обойтись вообще никак. поэтому, когда была нужна такая штука делал подстановку под-сервера к началу адресной строке на php. хотя всё от двига зависит, естественно.