RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 783239
Accepted
user3178479
user3178479
Asked:2020-02-11 02:54:17 +0000 UTC2020-02-11 02:54:17 +0000 UTC 2020-02-11 02:54:17 +0000 UTC

在客户端更改语言 - JavaScript (jQuery)

  • 772

我想更改客户端页面上的语言。我遇到了一篇关于 Habré的文章,但那里不再有示例。

json 文件的内容与示例中的相同。

语言/eng.json

{
"hello_world":"Hello World",
"some_text":"Some Text"
}

语言/rus.json

{
"hello_world":"Привет Мир",
"some_text":"Некоторый текст"
}

示例中的功能代码:

var LANGUAGE;

$.redrawLanguage = function (lang) {
$.ajax({
url : 'languages/' + lang + '.json', //тянем файл с языком
dataType : 'json',
success : function (response) {
LANGUAGE = response; //записываем в глобальную переменную, а вдруг пригодиться
$('body').find("[lng]").each(function () //ищем все элементы с атрибутом
{
var lng = LANGUAGE[ $(this).attr('lng') ]; //берем нужное значение по атрибуту lng
var tag = $(this)[0].tagName.toLowerCase();
switch (tag) //узнаем название тега
{
case "input":
$(this).val(lng);
break;
default:
$(this).html(lng);
break;
}
});
}
});
}

在我的示例中,我想通过单击相应的 RU\EN 按钮来实现此翻译:

var LANGUAGE = false;
$.redrawLanguage = function (lang) {
  $.ajax({
    url : 'languages/' + lang + '.json', //тянем файл с языком
    dataType : 'json',
    success : function (response) {
      LANGUAGE = response; 
      $('body').find("[lng]").each(function () {
        var lng = LANGUAGE[ $(this).attr('lng') ]; 
        var tag = $(this)[0].tagName.toLowerCase();
        
        console.log(response + ' ' + lng);
        
        
        switch (tag) {
          case "input":
            $(this).val(lng);
            break;
            default:
            $(this).html(lng);
          break;
        }
      });
    }
  });
}

$.getLanguage = function (key) {
  if (typeof(LANGUAGE[key]) != 'undefined') {
    return LANGUAGE[key]; 
  }
  return key; 
}

$('#ru').on('click', function(e){
  e.preventDefault();

  var
    $this = $(this);

    $.redrawLanguage('eng');

});

$('#en').on('click', function(e){
  e.preventDefault();

  var
    $this = $(this);

    $.redrawLanguage('rus');

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<menu>
  <a href="#" class="link" id="ru">RU</a>
  <a href="#" class="link" id="en">EN</a>
</menu>

<p lng="rus">
  Привет Мир
  Некоторый текст
</p>

但是什么也没有发生,没有错误和 json - 状态 200。

console.log(response + ' ' + lng);- 显示[object Object] undefined

如何通过单击按钮在页面上开始翻译,我做错了什么?与函数一样$.getLanguage,如何使用它,

将需要以便能够在任意位置使用 javascript 在当前语言中取出所需的行,

?

javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    HamSter
    2020-02-12T17:32:28Z2020-02-12T17:32:28Z

    html- 中的错误<p lng="rus">,您需要使用的不是语言,而是键 - <p lng="hello_world">,并且该函数已使用适当的所需语言(所需 json 文件的名称)调用 -$.redrawLanguage('eng');或$.redrawLanguage('rus');

    var LANGUAGE = false;
    $.redrawLanguage = function (lang) {
      $.ajax({
        url : 'languages/' + lang + '.json', //тянем файл с языком
        dataType : 'json',
        success : function (response) {
          LANGUAGE = response; 
          $('body').find("[lng]").each(function () {
            var lng = LANGUAGE[ $(this).attr('lng') ]; 
            var tag = $(this)[0].tagName.toLowerCase();
    
            switch (tag) {
              case "input":
              $(this).val(lng);
              break;
              default:
              $(this).html(lng);								
              break;
            }
          });
    
    
        }
      });
    }
    
    $.getLanguage = function (key) {
      if (typeof(LANGUAGE[key]) != 'undefined') {
        return LANGUAGE[key]; 
      }
      return key; 
    }
    
    
    $('#ru').on('click', function(e){
      e.preventDefault();
    
      var
        $this = $(this);
    
        $.redrawLanguage('eng');
    
    });
    
    $('#en').on('click', function(e){
      e.preventDefault();
    
      var
        $this = $(this);
    
        $.redrawLanguage('rus');
        console.log($.getLanguage('hello_world') );
        console.log($.getLanguage('some_text') );
    
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    
    <menu>
      <a href="#" class="link" id="en">RU</a>
      <a href="#" class="link" id="ru">EN</a>
    </menu>
    
    <p lng="hello_world">
      Привет Мир		
    </p>
    
    <p lng="some_text">
      Некоторый текст
    </p>
    
    
    
    <p lng="hello_world">
      Hello World
    </p>
    
    
    
    <p lng="some_text">
      Some Text
    </p>
            
    
    	

    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5