Как работают функции шаблонизации в EcmaScript 2015?

247
04 ноября 2017, 16:22

Прочитал статью https://learn.javascript.ru/es-string

В ней написано, как можно реализовать интернационализацию с помощью функции i18n.

'use strict';
let messages = {
  "Hello, {0}!": "Привет, {0}!"
};
function i18n(strings, ...values) {
  // По форме строки получим шаблон для поиска в messages
  // На месте каждого из значений будет его номер: {0}, {1}, …
  let pattern = "";
  for(let i = 0; i < values.length; i++) {
    pattern += strings[i] + '{' + i + '}';
  }
  pattern += strings[strings.length - 1];
  // Теперь pattern = "Hello, {0}!"
  let translated = messages[pattern]; // "Привет, {0}!"
  // Заменит в "Привет, {0}" цифры вида {num} на values[num]
  return translated.replace(/\{(\d)\}/g, (s, num) => values[num]);
}
// Пример использования
let name = "Вася";
// Перевести строку
alert( i18n`Hello, ${name}!` ); // Привет, Вася!

Не понятно, как можно было бы использовать эту функцию. Приведите, пожалуйста, реальный пример работы этой чудо-функции.

READ ALSO
Удалить конкретные теги

Удалить конкретные теги

В div contenteditable при наборе текста после первого слова ставится 1 <br> (стандартный) и 1 <br> которым я фиксил один багВопрос как можно заменить...

233
jQuery кавычки в списке атрибутов

jQuery кавычки в списке атрибутов

Всем добраНе могу понять как экранировать вставку переменной в списке атрибутов

237
Как установить название континента в Google geo chart

Как установить название континента в Google geo chart

В гугл гео чарте чтобы обозначить субконтиненты используются трехзначные индексы, и при наведении курсора на карте соответственно выводится...

196