Могу ли я динамически перевести часть строки из файла JSON? - PullRequest
0 голосов
/ 04 июля 2019

Я использовал плагин jquery-lang-js для динамического перевода некоторых элементов моей веб-страницы, и он работает.Более конкретно, я мог бы перевести каждый элемент, содержащийся в моем HTML-файле.

Я написал функцию обратного вызова для отображения результатов из файла JSON, когда это необходимо:

               for (let i = 0; i < lowCostHotels.LOW_COST.length; i++) {
                var entry = lowCostHotels.LOW_COST[i];                    
                if (entry.city == inputCity) {    
                    $("#tbody2").append("<tr><td>" + entry.name() </td></tr>");
                }
            }
        }       
    });
};

Пример показанного результатаэто:

Нога 22 - Passo della Cisa - Pontremoli

, что соответствует первому <td>.

Я хочу заменить

"Нога"

с

"Etape"

То есть я хочу перевести одинчасть строки, содержащейся в файле JSON:

{
  "legs": [
    {
      "name": "Leg 22 - Passo della Cisa - Pontremoli",
      "state": "Italy",
      "region": "Tuscany",
      "city": "Groppoli (Mulazzo)"
    },
    {
      "name": "Leg 22 - Passo della Cisa - Pontremoli",
      "state": "Italy",
      "region": "Tuscany",
      "city": "Groppodalosio"
    }
     ]
}

И я хочу сделать это для каждого из 50 <tr>.

Есть ли какой-нибудь трюк, чтобы сделать это легко илия должен написать другой файл JSON?

1 Ответ

0 голосов
/ 04 июля 2019

Перво-наперво, вместо того, чтобы вы должны использовать forEach.Всегда используйте вспомогательные функции, изначально предоставляемые объектами js, такими как массивы и строки.Они быстрее, короче читаются и занимают меньше времени писать.В качестве бонуса обратите внимание на функции стрелок, если вы используете ES6.

   for (let i = 0; i < lowCostHotels.LOW_COST.length; i++) {
      var entry = lowCostHotels.LOW_COST[i];                    
      if (entry.city == inputCity) {    
          $("#tbody2").append("<tr><td>" + entry.name() </td></tr>");
      }
    }

Становится:

lowCostHotels.LOW_COST.forEach(function(entry) {
  if (entry.city == inputCity) {    
    $("#tbody2").append("<tr><td>" + entry.name() </td></tr>");
  }
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

Тогда, если вы толькохотите заменить Leg на Etape:

lowCostHotels.LOW_COST.forEach(function(entry) {
  if (entry.city == inputCity) {    
    $("#tbody2").append("<tr><td>" + entry.name().replace("Leg", "Etape") </td></tr>");
  }
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

Но вы в значительной степени вручную переводите / меняете здесь свой JSON.Я бы порекомендовал вам взглянуть на другой метод перевода, если тот, который вы используете, переводит все неправильно.С другой стороны, если вам нужно только быстрое исправление для нескольких пропущенных слов, тогда просто replace () сделает свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...