UNPKG

botbuilder-dialogs-adaptive

Version:

Rule system for the Microsoft BotBuilder dialog system.

68 lines (59 loc) 2.55 kB
/** * @module botbuilder-dialogs-adaptive */ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { DialogContext } from 'botbuilder-dialogs'; import { MultiLanguageGeneratorBase, MultiLanguageGeneratorBaseConfiguration } from './multiLanguageGeneratorBase'; import { LanguageGenerator } from '../languageGenerator'; import { LanguageGeneratorManager } from './languageGeneratorManager'; import { languageGeneratorManagerKey } from '../languageGeneratorExtensions'; /** * Multi language resource generator that extends [MultiLanguageGeneratorBase](xref:botbuilder-dialogs-adaptive.MultiLanguageGeneratorBase) class. */ export interface ResourceMultiLanguageGeneratorConfiguration extends MultiLanguageGeneratorBaseConfiguration { resourceId?: string; } /** * Uses resourceExplorer to mount root lg and all language variants as a multi language generator. * * @remarks Given file name like "foo.lg" this will generate a map of foo.{LOCALE}.lg files. */ export class ResourceMultiLanguageGenerator<T = unknown, D extends Record<string, unknown> = Record<string, unknown>> extends MultiLanguageGeneratorBase<T, D> implements ResourceMultiLanguageGeneratorConfiguration { static $kind = 'Microsoft.ResourceMultiLanguageGenerator'; /** * Initializes a new instance of the ResourceMultiLanguageGenerator class. * * @param resourceId Resource id of LG file. */ constructor(resourceId?: string) { super(); this.resourceId = resourceId; } /** * Resource id of LG file. */ resourceId: string; /** * Implementation of lookup by locale. * * @param dialogContext Context for the current turn of conversation. * @param locale Locale to lookup. * @returns An object with a boolean showing existence and the language generator. */ tryGetGenerator(dialogContext: DialogContext, locale: string): { exist: boolean; result: LanguageGenerator<T, D> } { const manager = dialogContext.services.get(languageGeneratorManagerKey) as LanguageGeneratorManager<T, D>; const resourceId = locale === undefined || locale === '' ? this.resourceId : this.resourceId.replace('.lg', `.${locale}.lg`); if (manager.languageGenerators.has(resourceId)) { return { exist: true, result: manager.languageGenerators.get(resourceId) as LanguageGenerator<T, D> }; } else { return { exist: false, result: undefined }; } } }