【问题标题】:use Jquery/JavaScript to build translator function?使用 Jquery/JavaScript 构建翻译功能?
【发布时间】:2016-07-10 20:00:29
【问题描述】:

我目前正在使用dreamweaver,并且正在尝试构建一个简单的翻译功能。我有一个包含多个选项的下拉菜单(每种语言由专门的 id 指定),我希望用户选择选择的语言并翻译选择的 HTML 字符串。到目前为止,我已经尝试了所有方法,但我似乎无法让它发挥作用,我认为这将是最简单的方法。任何想法或编辑都会有很大帮助。 p.s.我是个初学者

jQuery:

$("#French").click(function(){
    $("#AppartmentB").replaceWith("maison");
});

HTML:

<select name="selectmenu" id="selectmenu">
    <option value="option1" id="English">English</option>
    <option value="option2" id="French">French</option>
</select>


<div data-role="page" id="AppartmentPage" class="page">
   <h1 class="TopText" align="center" id="AppartmentT">Appartment</h1>
   <h1 class="BotText" align="center" id="AppartmentB">Appartment</h1>
</div>

【问题讨论】:

    标签: javascript jquery translation


    【解决方案1】:

    我整理了一个基本示例。本质上,JS 有一个翻译数据库。我只放入了一个带有 1 个键的项目,text。 JS 侦听语言选择下拉菜单的任何更改。

    这实质上就是有多少本地化库在起作用。如果您想实现更强大的功能,请查看jquery-localize

    // Translation database
    var translations = {
      'en': {
        'text': 'Apartment'
      },
      'fr': {
        'text': 'Maison'
      }
    }
    
    // Li
    $("#languageSelect").change(function() {
      var str = '';
      $("#languageSelect option:selected").each(function() {
        var langCode = $(this).val();
        str += translations[langCode]['text'];
      });
      $("#translatedText").text(str);
    }).change();
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select id="languageSelect">
      <option value="en" selected="selected">English</option>
      <option value="fr">French</option>
    </select>
    
    <div data-role="page" id="AppartmentPage" class="page">
      <h1 id="translatedText">Apartment</h1>
    </div>

    【讨论】:

    • 这太棒了,这已经困扰我好几个星期了。我试图让程序作为一个整体敏感地将所有主要文本翻译成用户计算机/移动设备所在的语言环境,并能够选择性地翻译页面上的其他字符串。我正在考虑使用 xml 语言设置来使程序响应用户的语言环境,上面的示例用于选择性翻译能力。你对此有何看法?
    • 您可以使用一些 JavaScript 以用户的语言阅读 - check this other answer out。我不确定您将如何构建您的应用程序,但我建议您将本地化/翻译推送到后端。否则,考虑到每次加载页面时您可能最终都加载到一个巨大的翻译数据库中,事情可能会很快变得繁重。在后端检测用户的语言并在那里进行大部分初始翻译(如果需要)。
    • 如果用户无法访问互联网,同样的方法是否有效?如果没有,有没有一种方法可以建立字符串存储的存储,并且一旦用户选择了他们选择的语言,就可以交换文本?
    • 您能否再解释一下您的应用程序,以便为我提供更多背景信息?您可以将语言分解为一系列 JSON 文件并在需要时获取它们(例如,仅当用户的语言是法语时才获取 translations.fr.json)。事实上,我建议将翻译“数据库”存储在 JSON 文件中,而不是像我在示例中那样直接将其存储在 JS 中。不过,我不建议每次用户想要翻译页面上的一小段文本时都获取 JSON 文件。
    • 回答您原来的问题:是的,您可以将翻译存储在 JSON 文件中,然后在用户选择他们的语言时加载该文件。
    【解决方案2】:

    您正在替换整个匹配的标签而不是其内容,并且您无法在选择选项上收听点击事件。

    尝试监听您的 select 元素的 change 事件,并将语言用作选项值。

    HTML:

    <select name="selectmenu" id="selectmenu">
      <option value="english">English</option>
      <option value="french">French</option>
    </select>
    

    JS:

    $("#selectmenu").on('change', function() {
      var chosenLanguage = $(this).val();
      switch (chosenLanguage) {
        case 'french':
          $('#AppartmentB').text('Maison');
          break;
        case 'english':
          $('#AppartmentB').text('Appartment');
          break;
      }
    });
    

    在此处查看完整的工作示例:https://jsfiddle.net/r76hLLte/

    【讨论】:

    • 这太好了,谢谢你也包含了这个例子,我正在努力让程序能够离线运行,所以这很完美!
    • 我已经在我的程序中尝试过这个答案,但它似乎没有用。我的主页上有我的选择菜单,在下一页我有我的翻译词。我认为,既然我是通过他们的价值观和身份来理解的,那应该没关系。我还把我的 JS 放在了我的 元素中的 元素中。据我所知,这应该是正确的。
    • 如果您将脚本放在&lt;head&gt; 中,您会在选择框存在之前开始监听它。将脚本放在身体的绝对底部。
    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 2023-04-04
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2018-08-28
    • 2019-06-21
    相关资源
    最近更新 更多