@speculant

Как вывести текст из json в определенные места в зависимости от языка?

Здравствуйте, нужна помощь.
Имеется json файл допустим такой. Требуется вывести нужный элемент на свое место, при выборе языка.
На кнопке языка я ставлю id, при клике определяю его затем ищу места с классмом .lang и определяю их ключи по которым вытаскиваю нужный перевод из json, но не понимаю как это правильно сделать)

{
  "_id" : "post",
  "en" : 
    {
      "post" : "Post",
      "news" : "News"
    },
  "ru" :
    {
      "post" : "Посты",
      "news" : "Новости"
    }
},
{
  "_id" : "menu",
  "en" : 
    {
      "post" : "menu1",
      "news" : "menu2"
    },
  "ru" :
    {
      "post" : "меню1",
      "news" : "меню2"
    }
}


var requestURL = 'lang.json';
	var request = new XMLHttpRequest();
	request.open('GET', requestURL);
	request.responseType = 'json';
	request.send()

	request.onload = function() {
	var obj = request.response;
	eng(obj);
	}

	$(function eng(jsonObj){
		$('.translate').click(function(){
			var lang = $(this).attr('id');

			$('.lang').each(function(index, element){
				$(this).text(jsonObj[lang][$(this)]);
			});
		});
	});


<li id="en">En</li>
	<li id="ru">Русский</li>

	<a  class="lang" key="post" href="***">Посты</a>
	<a  class="lang" key="news" href="***">Новости</a>
  • Вопрос задан
  • 1129 просмотров
Решения вопроса 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
Во-первых, тут json не правильный, потому как или это не объект, а массив, или не нужно никаких "_id".
Как должно быть:
{
  "post": {
      "en" : {
          "post" : "Post",
          "news" : "News"
        },
      "ru" : {
          "post" : "Посты",
          "news" : "Новости"
        }
    },
    "menu": {
      "en" : {
          "post" : "menu1",
          "news" : "menu2"
       },
      "ru" : {
          "post" : "меню1",
          "news" : "меню2"
       }
    }
}

Во-вторых, если вы используете jquery, зачем вам огороды с XMLHttpRequest? jquery прекрасно поддерживает в человекопонятном виде ajax.

var lang = "ru"; // захардкодил, для простоты

$.get({
    url: "lang.json",
    dataType: "json",
    success: function(data) {
        $(".lang").each(function(entry){
            var $el = $(this);
            var text = data[$el.attr("key")][lang];
            $el.text(text);
        });
    }
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы