Как изменить языковую папку на той же странице? (используя jQuery или JavaScript) - PullRequest
1 голос
/ 15 сентября 2011

У меня есть сайт с двумя языками: En и Th.Каждый язык имеет одно и то же имя файла в своей папке, то есть /en/ и /th/.Я создал тег <a> для переключения между этими двумя языками в моем включенном заголовочном файле (asp).

Вопрос в том, как получить текущий путь, где бы вы ни находились, и изменить имя папки на enили th?(Если вы находитесь на странице контактов на английском языке, нажмите th, чтобы перейти на страницу контактов на тайском языке.)

Я попытался создать функцию:

<script>
     function changeLanguage(to) {
         var from = jQuery.url.segment(-2);
         var url = from.replace('/' + from + '/', to);
         document.location = url;
     }
</script>

для использования в <a> tag.

<a id="flags" href="#" onclick="changeLanguage(en)"> English </a>|<a href="#" onclick="changeLanguage(th)" >Thai</a>

Но это не работает.Я потратил так много дней, чтобы найти похожий вопрос.Я нашел некоторые, но все еще не мог применить к моему коду.Поэтому, пожалуйста, помогите мне.Я новичок в этом деле и очень нуждаюсь в вашей помощи.Большое спасибо.

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

вам нужно добавить строку, в тот момент, когда вы говорите changeLanguage (переменная с именем en), используйте:

onclick="changeLanguage('en')" 

или используйте jquery для привязки события click для вас:

<a id="flags" href="#en" class="flag"> English </a>|<a href="#th" class="flag">Thai</a>

и используйте код jquery:

$(function() {
    $(".flag").click(function(e) {
        e.preventDefault();
        var to = $(this).attr("href").substring(1); //removes the hash value # (#en will become 'en')
        var from = jQuery.url.segment(-2);
        var url = from.replace('/' + from + '/', '/' + to + '/');
        document.location = url;
    });
});

Вместо этого я переместил текст языка на href, чтобы мы могли отловить это в событии click.

пример, который выдаст предупреждение о том, на каком языке вы нажали: http://jsbin.com/epavoh/2/

0 голосов
/ 16 сентября 2011

@ voigtan, я потратил время, пытаясь понять твой код.Но независимо от того, что я пробовал, этот код все еще добавляет #en или #th после моего URL.

    <script>
     $(".flag").click(function(e) {
     e.preventDefault();
     var to = this.href.substring(1); 
     var from = jQuery.url.segment(-2);
     var url = from.replace('/' + from + '/', '/' + to + '/');
     document.location = url;   
     });        
    </script>

с

   <a id="flags" href="#en" class="flag"> English </a>|<a href="#th" class="flag">Thai</a>

Да, я знаю, для чего используется jQuery.url.segment (-2).Он найдет сегмент URL из 2 путей справа, верно?моя папка была root / en / default.asp, поэтому (-2) вернет значение "en" или "th".

На самом деле нет необходимости использовать Javascript или jQuery.Любая вещь будет в порядке, просто может соответствовать моему .asp, вот и все.

...