Добавить подтверждение на другом языке - PullRequest
0 голосов
/ 04 сентября 2018

Как добавить сообщение «Подтвердить и прощаться» на другом языке в зависимости от выбора языка пользователем. Допустим, я хочу добавить испанскую версию, которая прощается

 .cancelAction(
    "cancelRequest", "Thank you for reaching out, Good bye!",
    {
        matches: /^nevermind$|^cancel$|^cancel.*request/i,
        confirmPrompt: "This will cancel your request. Are you sure?"
    }
);

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Bot Framework поддерживает локализацию. О том, как это сделать, вы можете прочитать в Узле здесь . На этой странице будет объяснено, как определить язык для пользователя бота с помощью запроса пользователя или автоматически. также описано, как добавить языковые строки для ваших запросов.

Ключом к локализации бота является метод session.preferredLocal (). Этот метод сохраняет и получает пользовательские настройки языка.

Самый простой способ определить языковой языковой стандарт и установить его - это запросить у пользователя. Вот пример узла

bot.dialog('/localePicker', [
function (session) {
    // Prompt the user to select their preferred locale
    builder.Prompts.choice(session, "What's your preferred language?", 'English|Español');
},
function (session, results) {
    // Update preferred locale
    var locale;
    switch (results.response.entity) {
        case 'English':
            locale = 'en';
            break;
        case 'Español':
            locale = 'es';
            break;            
    }
    session.preferredLocale(locale, function (err) {
        if (!err) {
            // Locale files loaded
            session.endDialog(`Your preferred language is now ${results.response.entity}`);
        } else {
            // Problem loading the selected locale
            session.error(err);
        }
    });
}

]); * * 1 010

Первая часть этого кода запрашивает у пользователя предпочитаемый язык и предоставляет им английский и испанский языки в качестве двух доступных вариантов. На основании ответа пользователя код локали затем устанавливается путем вызова session.preferredLocale ().

Чтобы использовать предпочтительный языковой стандарт пользователя, вам потребуется соответствующий файл приглашения локализации. Эти файлы будут содержать различные запросы ботов на соответствующем языке. Вам понадобится один файл на каждый язык, который вы собираетесь поддерживать.

Обычно эти файлы находятся в ./locale/ndomlanguage‹/index.json, где {language} - код языка (например, «en» или «es»). Файлы json и будут выглядеть так: для английского

{
    "greeting": ["Hello!", "Hi there"]
}

и для испанского

{
    "greeting": ["Hola!", "Hola"]
}

Вот пример того, как ваш код будет выглядеть

var bot = new builder.UniversalBot(connector, [
function (session) {
    session.send("greeting");
    session.beginDialog('/localePicker');
},
function (session) {
    builder.Prompts.text(session, "text_prompt");
}
]);

За кулисами происходит то, что в основном происходит, файл index.json, возвращаемый session.preferredLocale (), ищет запрос, если он его находит, он возвращает, что в противном случае он вернет набор подсказок для языкового стандарта по умолчанию.

0 голосов
/ 04 сентября 2018

Я использую session.userData.languagePreference, и я подумываю добавить оператор if внутри cancelAction, но синтаксис неправильный, я не могу поместить оператор if там: /

.cancelAction(
    if ( session.userData.languagePreference = 0;) {

  "cancelRequest", "Thank you for reaching out, Good bye!",
  {
      matches: /^nevermind$|^cancel$|^cancel.*request/i,
      confirmPrompt: "This will cancel your request. Are you sure?"
  }
);
0 голосов
/ 04 сентября 2018

Вы можете сделать это, используя переменную, значение которой устанавливается в зависимости от языка. Затем эту переменную можно использовать для получения соответствующего текста из объекта.

Например:

var language = "spanish";
	
var cancelTextFromLang = {
	spanish: "Gracias por comunicarte, ¡Adiós!",
	english: "Thank you for reaching out, Good bye!",
	french: "Merci d'avoir tendu la main, au revoir!"
};

console.log(cancelTextFromLang[language])

Вы можете применить это к заданному коду следующим образом:

var language = "spanish";

var cancelTextFromLang = {
    spanish: "Gracias por comunicarte, ¡Adiós!",
    english: "Thank you for reaching out, Good bye!",
    french: "Merci d'avoir tendu la main, au revoir!"
};

.cancelAction(
    "cancelRequest", cancelTextFromLang[language],
    {
        matches: /^nevermind$|^cancel$|^cancel.*request/i,
        confirmPrompt: "This will cancel your request. Are you sure?"
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...