jQuery语言切换器

时间:2012-11-17 04:35:32

标签: jquery

我想建立一个内容为两种语言的网站。我想使用jQuery进行语言切换。我的想法是:

而不是HTML页面中的实际内容:

<div>Hello there</div>

我想使用类:

HTML:

<div class="hello_EN"></div>

JS(我不擅长JS;我把它与一些PHP相结合,所以我可以让自己理解):

var EN = new array('hello_EN' => 'Hello there');
foreach($EN as $class => $content)
$(".$class").text("$content"); //this should populate all my HTML classes with its content

然后,我必须拥有我的第二语言阵列:

var RO = new array('hello_RO' => 'Salut');

现在,切换:

$("#change_to_RO").click(function() {
       $(EN).replaceWith(RO);
});

我该如何处理? 感谢。

2 个答案:

答案 0 :(得分:6)

最好从JavaScript处理此问题。话虽这么说,作为一个学术和学习练习,这里只是一个粗略的想法,你可以如何做这样的事情:

<select id="lang">
    <option>English</option>
    <option>Portuguese</option>
    <option>Russian</option>
</select>
<span data-translate="_hello">Hello</span>, 
<span data-translate="_january">January</span>!​
// Some variables for later
var dictionary, set_lang;

// Object literal behaving as multi-dictionary
dictionary = {
    "english": {
        "_hello": "Hello",
        "_january": "January"
    },
    "portuguese": {
        "_hello": "Oie",
        "_january": "Janeiro"
    },
    "russian": {
        "_hello": "привет",
        "_january": "январь"
    }
};

$(function () {

    // Lets be professional, shall we?
    "use strict";

    // Function for swapping dictionaries
    set_lang = function (dictionary) {
        $("[data-translate]").text(function () {
            var key = $(this).data("translate");
            if (dictionary.hasOwnProperty(key)) {
                return dictionary[key];
            }
        });
    };

    // Swap languages when menu changes
    $("#lang").on("change", function () {
        var language = $(this).val().toLowerCase();
        if (dictionary.hasOwnProperty(language)) {
            set_lang(dictionary[language]);
        }
    });

    // Set initial language to English
    set_lang(dictionary.english);

});​

小提琴:http://jsfiddle.net/MBRG4/5/

答案 1 :(得分:0)

搜索天数以获得一个解决方案来切换语言真棒我会做的小型应用程序 所以SEO友好你的朋友说。哦,是的!!我在html中有两种语言,所以它很好。我用类切换语言(意思是这个swithcer在没有任何JS的情况下工作)

<style>  
   div.de,  :lang(de) {  display: none;  }   
</style>


<!-- Javascripts -->
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>


</head>   
<body  > 


<button id="german">German</button>
<button id="english">English</button>


<br><br>

<a href="" lang="de">de</a>
<a href="" lang="en">en</a>

<p lang="de">Deutscher Text</p>
<p lang="en">Englischer Text</p>

<div class="de">Deutsches Div</div> 
<div class="en">Englisches Div</div>

<div class="de"> <iframe width="560" height="315" src="http://www.youtube.com/embed/ZQL7d3k_yh0" frameborder="0" allowfullscreen></iframe>  </div>
<div class="en"> <iframe width="560" height="315" src="http://www.youtube.com/embed/NWfbtFpnCM4" frameborder="0" allowfullscreen></iframe>  </div>


<hr>


<script>
  $( "#german" ).click(function() {
    $("#german").attr('id','notactive')  
      $(".en, :lang(en)").fadeOut('slow', function(){
        $(".de, :lang(de)").fadeIn('slow');
      });  
  });

  $( "#english" ).click(function() {
    $("#english").attr('id','notactive')  
      $(".de, :lang(de)").fadeOut('slow', function(){
        $(".en, :lang(en)").fadeIn('slow');
      });  
  });    

</script>