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

funnywheel

PHP & JS
Регистрация
6 Авг 2010
Сообщения
255
Реакции
219
Есть сайт на DLE, попросили добавить мультиязычность на поддоменах.

Имеем селектор языков в шаблоне, выполнен списком ссылок.
HTML:
<ul>
<li><a href="#">RU</a></li>
...
</ul>

Задача: как получать ссылку с адресом на поддомен на текущую страницу?
другими словами, если я нахожусь на странице site.ru/testpage.html, то при клике по ENG меня перекидывало-бы на eng.site.ru/testpage.html
 
Возможно такой способ быдловат...

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>
 
Думаю, лучше так:
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 поизящнее будет.
 
А если JS отключен? Лучше это делать на стороне сервера. Что за CMS стоит?
 
Что за CMS стоит?
DLE. В первом посте указано.
Точно знаю, что в Joomla при реализации многоязычного сайта, движок сам отдает нужный контент, ориентируясь на языковые настройки браузера.
Модуль, с похожим функционалом, видел где-то полгода назад для DLE в сети. Судя по демо, вполне корректно работает

Хотя, вариант allseo проще
 
Спасибо откликнувшимся (долго не смотрел темку, немного не до этого было, сегодня сделал).

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

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

А если JS отключен? Лучше это делать на стороне сервера. Что за CMS стоит?
На сайте обильно используется 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>
 
я, наверное, параноик, но стараюсь чтобы java была только там где без неё не обойтись вообще никак. поэтому, когда была нужна такая штука делал подстановку под-сервера к началу адресной строке на php. хотя всё от двига зависит, естественно.
 
Назад
Сверху