Переменные значения / методы JSON внутри JSON - PullRequest
0 голосов
/ 15 ноября 2018

Мой сайт имеет функцию синтеза речи из заданного текста. Я хотел разнообразить его, чтобы включить несколько языков. Поэтому я решил переместить тексты в JSON voiceOutputs.

{
    "english": {
        "actionStarted": "Action has started",
        "success": "Success",
        "error": "Error occured",
        "goodNight": "Good Night"
    },
    "japanese": {
        "actionStarted": "アクションが始まりました",
        "success": "成功しました",
        "error": "エラーが発生しました",
        "goodNight": "おやすみなさい"
    }
}

И я могу использовать эти тексты

voiceOutputs.[getCookie("voiceLang")].actionStarted;

Как мне преобразовать мои зависимые от переменной тексты в структуру JSON, поскольку шаблон предложения отличается в зависимости от языка.

Например.

"Good bye " + variableforName
variableForName + "おやすみなさい。"

Я не могу напрямую вызывать «goodBye» и «お や す み な さ い», так как я хочу создать обобщенную версию вывода, и мне нужен правильный шаблон слов в зависимости от языка.

обходные: 1. Использование функции (легко, но не оптимизировано и требует много работы)

function goodNight(variableForName) {
    if (getCookie("voiceLang") == "japanese") {
        return variableForName+voiceOutputs.[getCookie("voiceLang")].goodNight;
    }
    else if (getCookie("voiceLang") == "english") {
            return voiceOutputs.[getCookie("voiceLang")].goodNight + " " + variableForName;
    }
  1. Методы внутри voiceOutputs JSON:

Возможно ли это?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете использовать библиотеку для строковых форматов (я не знаю каких-либо твердых, пожалуйста, отредактируйте мой ответ или опубликуйте свой собственный), но вы также можете просто использовать Vanilla Javascript String.prototype.replace в сочетании с шаблоном символов, которого вы не ожидаете в противном случае можно увидеть в одной строке

Е.Г.

"Good bye {{%name}}";
"{{%name}}おやすみなさい。";

Затем вы можете использовать оба способа одинаково, позвонив по номеру .replace('{{%name}}', nameVariable)

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