/// <summary> /// Constructor for developer defined detection of user messages /// </summary> /// <param name="getUserLocale">Delegate for getting the user locale</param> /// <param name="checkUserLocaleChanged">Delegate that returns true if the locale was changed (implements logic to change locale by intercepting the message)</param> /// <param name="toLocale">Target Locale</param> /// <param name="localeConverter">An ILocaleConverter instance</param> public LocaleConverterMiddleware(Func <ITurnContext, string> getUserLocale, Func <ITurnContext, Task <bool> > checkUserLocaleChanged, string toLocale, ILocaleConverter localeConverter) { _localeConverter = localeConverter ?? throw new ArgumentNullException(nameof(localeConverter)); if (string.IsNullOrEmpty(toLocale)) { throw new ArgumentNullException(nameof(toLocale)); } else if (!localeConverter.IsLocaleAvailable(toLocale)) { throw new ArgumentNullException("The locale " + nameof(toLocale) + " is unavailable"); } _toLocale = toLocale; _getUserLocale = getUserLocale ?? throw new ArgumentNullException(nameof(getUserLocale)); _setUserLocale = checkUserLocaleChanged ?? throw new ArgumentNullException(nameof(checkUserLocaleChanged)); }
/// <summary> /// Constructor for developer defined detection of user messages /// </summary> /// <param name="userLocaleProperty">PropertyAccessor for the users preferred locale</param> /// <param name="toLocale">Target Locale</param> /// <param name="localeConverter">An ILocaleConverter instance</param> public LocaleConverterMiddleware(IStatePropertyAccessor <string> userLocaleProperty, string toLocale, ILocaleConverter localeConverter) { _localeConverter = localeConverter ?? throw new ArgumentNullException(nameof(localeConverter)); if (string.IsNullOrEmpty(toLocale)) { throw new ArgumentNullException(nameof(toLocale)); } else if (!localeConverter.IsLocaleAvailable(toLocale)) { throw new ArgumentNullException("The locale " + nameof(toLocale) + " is unavailable"); } _toLocale = toLocale; _userLocaleProperty = userLocaleProperty ?? throw new ArgumentNullException(nameof(userLocaleProperty)); }