Как обрабатывать сложные строки в интернализации (i18n)? - PullRequest
0 голосов
/ 08 мая 2018

Пусть у нас жало I want to by {number} apples. А у нас и интерфейс:

String with select tag inside.

Как лучше всего поддерживать с условиями:

  • вся фраза должна быть текстом
  • apples может иметь форму множественного числа

Как решить эту проблему в ваших JavaScript-проектах?

1 Ответ

0 голосов
/ 08 мая 2018

Вы должны создать структуру данных для хранения всех этих фраз и сделать функцию, которая выбирает их в зависимости от условий (не идеальное решение или безупречный JavaScript, но может дать вам представление):

var translations =
{
  "English":{
    "I want to by %n apples":[
      [0, "%n apples"],
      [1, "%n apple"],
      [2, "%n apples"]
    ]
  }
},
{
  "American":{
    "I want to by %n apples":[
      [0, "%n apples, dude"],
      [1, "%n apple, dude"],
      [2, "%n apples, dude"]
    ]
  }
};

var languageToUse = "American";
var stringToReplace = "I want to by %n apples";
var numberOfItems = 1;
var newEnding = translations[languageToUse][stringToReplace][numberOfItems];

var res = stringToReplace.replace("%n apples", newEnding);

// res = "I want to by %n apple, dude"

http://i18njs.com/ имеет отличные примеры, как это сделать.

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