5

我想建立一个具有两种语言内容的网站。我想使用 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);
});

我应该如何处理这个?谢谢。

4

2 回答 2

7

最好不要从 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/

于 2012-11-17T04:59:09.213 回答
0

在 Days 中搜索了一个解决方案,可以为我会做的一个小应用程序切换语言很棒。
所以 SEO 友好你的朋友说。哦对!!我在 html 中有两种语言,所以它加载得很好。我用类切换语言(意味着这个开关首先在没有任何 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>
于 2014-03-18T11:52:30.857 回答