многоязычный HTML с JQuery и вложенным JSON - PullRequest
0 голосов
/ 19 декабря 2018

Я подготовил простой многоязычный веб-сайт со следующим кодом JQuery:

(function() {
  var language, translate;

  translate = function(jsdata) {
    $('[tkey]').each(function(index) {
      var strTr;
      strTr = jsdata[$(this).attr('tkey')];
      $(this).html(strTr);
    });
  };

  language = $.cookie('language');

  if (language === 'en') {
    $.getJSON('en.json', translate);
  } else {
    $.getJSON('hu.json', translate);
    $('#eng').show(0);
    $('#hun').hide(0);
  }

}).call(this);

Если данные хранятся в двух простых файлах JSON, таких как

en.json

{
  "title" : "test1",
  "body" : "Hello Word!"
}

hu.json

{
  "title" : "teszt1",
  "body" : "Szia Világ!"
}

Я могу назвать содержимое в HTML следующим образом

<p tkey='title'></p>
<p tkey='body'></p>

На самом деле, я хотел бы использовать вложенные файлы JSON, сгенерированные из некоторых файлов MD.как эти

en.json

{
  "1.md": {
    "title": "test 1", "body": "Hello Word!"
  },
  "2.md": {
    "title": "test 2", "body": "Hello Word again!"
  }
}

hu.json

{
  "1.md": {
    "title": "teszt 1", "body": "Szia Világ!"
  },
  "2.md": {
    "title": "teszt 2", "body": "Szia Világ megint!"
  }
}

Не могли бы вы помочь мне, как я могу назвать их в HTML?

<p tkey='1.md.title'></p>
<p tkey='1.md.body'></p>

не работает.

Спасибо за помощь!

1 Ответ

0 голосов
/ 19 декабря 2018

Если ваш первый пример работает, то самый быстрый способ работы со вторым должен выглядеть следующим образом:

<p tkey1="1.md" tkey2="title"></p>
<p tkey1="1.md" tkey2="body"></p>

и ваша translate функция

  translate = function(jsdata) {
    $('[tkey1]').each(function(index) {
      var strTr;
      strTr = jsdata[$(this).attr('tkey1')][$(this).attr('tkey2')];
      $(this).html(strTr);
    });
  };
...