@itwin/core-i18n 5.1.1 → 5.1.3-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  # Change Log - @itwin/core-i18n
2
2
 
3
- This log was last generated on Fri, 08 Aug 2025 18:06:10 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 20 Aug 2025 13:57:10 GMT and should not be manually modified.
4
+
5
+ ## 5.1.3
6
+ Wed, 20 Aug 2025 13:57:10 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 5.1.2
11
+ Thu, 14 Aug 2025 19:38:08 GMT
12
+
13
+ _Version update only_
4
14
 
5
15
  ## 5.1.1
6
16
  Fri, 08 Aug 2025 18:06:10 GMT
@@ -1 +1 @@
1
- {"version":3,"file":"ITwinLocalization.js","sourceRoot":"","sources":["../../src/ITwinLocalization.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Localization\n */\n\nimport i18next, { i18n, InitOptions, Module, TOptionsBase } from \"i18next\";\nimport i18nextBrowserLanguageDetector, { DetectorOptions } from \"i18next-browser-languagedetector\";\nimport Backend, { HttpBackendOptions as BackendOptions } from \"i18next-http-backend\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\n\nconst DEFAULT_MAX_RETRIES: number = 1; // a low number prevents wasted time and potential timeouts when requesting localization files throws an error\n\n/** Options for ITwinLocalization\n * @public\n */\nexport interface LocalizationOptions {\n urlTemplate?: string;\n backendPlugin?: Module;\n detectorPlugin?: Module;\n initOptions?: InitOptions;\n backendHttpOptions?: BackendOptions;\n detectorOptions?: DetectorOptions;\n}\n\n/** Supplies localizations for iTwin.js\n * @note this class uses the [i18next](https://www.i18next.com/) package.\n * @public\n */\nexport class ITwinLocalization implements Localization {\n public i18next: i18n;\n private readonly _initOptions: InitOptions;\n private readonly _backendOptions: BackendOptions;\n private readonly _detectionOptions: DetectorOptions;\n private readonly _namespaces = new Map<string, Promise<void>>();\n\n public constructor(options?: LocalizationOptions) {\n this.i18next = i18next.createInstance();\n\n this._backendOptions = {\n loadPath: options?.urlTemplate ?? \"locales/{{lng}}/{{ns}}.json\",\n crossDomain: true,\n ...options?.backendHttpOptions,\n };\n\n this._detectionOptions = {\n order: [\"querystring\", \"navigator\", \"htmlTag\"],\n lookupQuerystring: \"lng\",\n caches: [],\n ...options?.detectorOptions,\n };\n\n this._initOptions = {\n interpolation: { escapeValue: true },\n fallbackLng: \"en\",\n maxRetries: DEFAULT_MAX_RETRIES,\n backend: this._backendOptions,\n detection: this._detectionOptions,\n ...options?.initOptions,\n };\n\n this.i18next\n .use(options?.detectorPlugin ?? i18nextBrowserLanguageDetector)\n .use(options?.backendPlugin ?? Backend)\n .use(TranslationLogger);\n }\n\n public async initialize(namespaces: string[]): Promise<void> {\n\n // Also consider namespaces passed into constructor\n const initNamespaces: string[] = [this._initOptions.ns || []].flat();\n const combinedNamespaces: Set<string> = new Set([...namespaces, ...initNamespaces]); // without duplicates\n\n const defaultNamespace: string | false | readonly string[] = this._initOptions.defaultNS ?? namespaces[0];\n if (defaultNamespace)\n combinedNamespaces.add(defaultNamespace as string); // Make sure default namespace is in namespaces list\n\n const initOptions: InitOptions = {\n ...this._initOptions,\n defaultNS: defaultNamespace,\n ns: [...combinedNamespaces],\n };\n\n // if in a development environment, set debugging\n if (process.env.NODE_ENV === \"development\")\n initOptions.debug = true;\n\n const initPromise = this.i18next.init(initOptions) as unknown as Promise<void>;\n\n for (const ns of namespaces)\n this._namespaces.set(ns, initPromise);\n\n return initPromise;\n }\n\n /** Replace all instances of `%{key}` within a string with the translations of those keys.\n * For example:\n * ``` ts\n * \"MyKeys\": {\n * \"Key1\": \"First value\",\n * \"Key2\": \"Second value\"\n * }\n * ```\n *\n * ``` ts\n * i18.translateKeys(\"string with %{MyKeys.Key1} followed by %{MyKeys.Key2}!\"\") // returns \"string with First Value followed by Second Value!\"\n * ```\n * @param line The input line, potentially containing %{keys}.\n * @returns The line with all %{keys} translated\n * @public\n */\n public getLocalizedKeys(line: string): string {\n return line.replace(/\\%\\{(.+?)\\}/g, (_match, tag) => this.getLocalizedString(tag));\n }\n\n /** Return the translated value of a key.\n * @param key - the key that matches a property in the JSON localization file.\n * @note The key includes the namespace, which identifies the particular localization file that contains the property,\n * followed by a colon, followed by the property in the JSON file.\n * For example:\n * ``` ts\n * const dataString: string = IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.BingDataAttribution\");\n * ```\n * assigns to dataString the string with property BackgroundMap.BingDataAttribution from the iModelJs.json localization file.\n * @returns The string corresponding to the first key that resolves.\n * @throws Error if no keys resolve to a string.\n * @public\n */\n public getLocalizedString(key: string | string[], options?: TOptionsBase): string {\n if (options?.returnDetails || options?.returnObjects) {\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\n }\n\n const value = this.i18next.t(key, options);\n\n if (typeof value !== \"string\") {\n throw new Error(\"Translation key(s) string not found\");\n }\n\n return value;\n }\n\n /** Gets the English translation.\n * @param namespace - the namespace that identifies the particular localization file that contains the property.\n * @param key - the key that matches a property in the JSON localization file.\n * @returns The string corresponding to the first key that resolves.\n * @throws Error if no keys resolve to a string.\n * @internal\n */\n public getEnglishString(namespace: string, key: string | string[], options?: TOptionsBase): string {\n if (options?.returnDetails || options?.returnObjects) {\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\n }\n\n options = {\n ...options,\n ns: namespace, // ensure namespace argument is used\n };\n\n const en = this.i18next.getFixedT(\"en\", namespace);\n const str = en(key, options);\n if (typeof str !== \"string\")\n throw new Error(\"Translation key(s) not found\");\n\n return str;\n }\n\n /** Get the promise for an already registered Namespace.\n * @param name - the name of the namespace\n * @public\n */\n public getNamespacePromise(name: string): Promise<void> | undefined {\n return this._namespaces.get(name);\n }\n\n /** @internal */\n public getLanguageList(): readonly string[] {\n return this.i18next.languages;\n }\n\n /** override the language detected in the browser */\n public async changeLanguage(language: string) {\n return this.i18next.changeLanguage(language) as unknown as Promise<void>;\n }\n\n /** Register a new Namespace and return it. If the namespace is already registered, it will be returned.\n * @param name - the name of the namespace, which is the base name of the JSON file that contains the localization properties.\n * @note - The registerNamespace method starts fetching the appropriate version of the JSON localization file from the server,\n * based on the current locale. To make sure that fetch is complete before performing translations from this namespace, await\n * fulfillment of the readPromise Promise property of the returned LocalizationNamespace.\n * @see [Localization in iTwin.js]($docs/learning/frontend/Localization.md)\n * @public\n */\n public async registerNamespace(name: string): Promise<void> {\n const existing = this._namespaces.get(name);\n if (existing !== undefined)\n return existing;\n\n const theReadPromise = new Promise<void>((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.i18next.loadNamespaces(name, (err) => {\n if (!err)\n return resolve();\n\n // Here we got a non-null err object.\n // This method is called when the system has attempted to load the resources for the namespaces for each possible locale.\n // For example 'fr-ca' might be the most specific locale, in which case 'fr' and 'en' are fallback locales.\n // Using Backend from i18next-http-backend, err will be an array of strings of each namespace it tried to read and its locale.\n // There might be errs for some other namespaces as well as this one. We resolve the promise unless there's an error for each possible locale.\n let locales = this.getLanguageList().map((thisLocale: any) => `/${thisLocale}/`);\n\n try {\n for (const thisError of err) {\n if (typeof thisError === \"string\")\n locales = locales.filter((thisLocale) => !thisError.includes(thisLocale));\n }\n } catch {\n locales = [];\n }\n // if we removed every locale from the array, it wasn't loaded.\n if (locales.length === 0)\n Logger.logError(\"i18n\", `No resources for namespace ${name} could be loaded`);\n\n resolve();\n });\n });\n this._namespaces.set(name, theReadPromise);\n return theReadPromise;\n }\n\n /** @internal */\n public unregisterNamespace(name: string): void {\n this._namespaces.delete(name);\n }\n}\n\nclass TranslationLogger {\n public static readonly type = \"logger\";\n public log(args: string[]) { Logger.logInfo(\"i18n\", this.createLogMessage(args)); }\n public warn(args: string[]) { Logger.logWarning(\"i18n\", this.createLogMessage(args)); }\n public error(args: string[]) { Logger.logError(\"i18n\", this.createLogMessage(args)); }\n private createLogMessage(args: string[]) {\n let message = args[0];\n for (let i = 1; i < args.length; ++i) {\n if (typeof args[i] === \"string\")\n message += `\\n ${args[i]}`;\n }\n return message;\n }\n}\n"]}
1
+ {"version":3,"file":"ITwinLocalization.js","sourceRoot":"","sources":["../../src/ITwinLocalization.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-i18n.js","sourceRoot":"","sources":["../../src/core-i18n.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;AAE/F,sDAAoC;AAEpC;;GAEG;AAEH;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nexport * from \"./ITwinLocalization\";\n\n/** @docs-package-description\n * The core-i18n package contains classes related to internationalization and localization.\n */\n\n/** @docs-group-description Localization\n * Classes for internationalization and localization of your app.\n */\n"]}
1
+ {"version":3,"file":"core-i18n.js","sourceRoot":"","sources":["../../src/core-i18n.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;AAE/F,sDAAoC;AAEpC;;GAEG;AAEH;;GAEG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ITwinLocalization.test.js","sourceRoot":"","sources":["../../../src/test/ITwinLocalization.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"chai\";\nimport { Localization } from \"@itwin/core-common\";\nimport { ITwinLocalization } from \"../ITwinLocalization\";\n\ndescribe(\"ITwinLocalization\", () => {\n\n let localization: Localization;\n let germanLocalization: Localization;\n\n describe(\"#constructor\", () => {\n\n let itwinLocalization: ITwinLocalization;\n\n it(\"set default namespace\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"set default language as english\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\", lng: \"en\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.lng, \"en\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"set default language as NOT english\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\", lng: \"de\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.lng, \"de\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\");\n });\n\n it(\"set fallback language as NOT english\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\", fallbackLng: \"de\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.fallbackLng, \"de\");\n assert.equal(itwinLocalization.getLocalizedString(\"OnlyGerman\"), \"Hallo\");\n });\n });\n\n describe(\"#initialize\", () => {\n let itwinLocalization: ITwinLocalization;\n\n it(\"cannot fetch from unregistered namespaces\", async () => {\n localization = new ITwinLocalization();\n await localization.initialize([]);\n assert.equal(localization.getEnglishString(\"Default\", \"FirstTrivial\"), \"FirstTrivial\");\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\"), \"FirstTrivial\");\n });\n\n describe(\"with no default namespace predefined\", () => {\n\n before(() => {\n itwinLocalization = new ITwinLocalization();\n });\n\n it(\"no default namespace set when initialized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, undefined);\n });\n\n it(\"initialize with single namespace\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Test\");\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"initialize with two namespaces recognizes both namespaces\", async () => {\n await itwinLocalization.initialize([\"Default\", \"Test\"]);\n\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"initialize with two namespaces sets first as default\", async () => {\n await itwinLocalization.initialize([\"Default\", \"Test\"]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"initialize with duplicate namespace values does not break anything\", async () => {\n await itwinLocalization.initialize([\"Default\", \"Default\"]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n assert.equal(itwinLocalization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\n });\n });\n\n describe(\"with default namespace\", () => {\n\n before(() => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\" } });\n });\n\n it(\"default namespace set when initialized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace not overridden by one namespace\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace not overridden by two namespaces\", async () => {\n await itwinLocalization.initialize([\"NotExist\", \"Test\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"duplicate namespace value does not break default namespace\", async () => {\n await itwinLocalization.initialize([\"Default\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace is in list of all namespaces initalized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n });\n\n it(\"default namespace is in list of all namespaces\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n });\n });\n });\n\n describe(\"#getLocalizedKeys\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n it(\"no substitution\", () => {\n assert.equal(localization.getLocalizedKeys(\"MyString\"), \"MyString\");\n });\n\n describe(\"Default Namespace\", () => {\n\n it(\"first level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{FirstTrivial}\"), \"hi First level string (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"hi %{FirstTrivial}\"), \"hi First level string (default german)\");\n });\n\n it(\"second level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{SecondTrivial.Test1}\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{SecondTrivial.Test2}\"), \"bye Second level string 2 (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"%{SecondTrivial.Test1}\"), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"bye %{SecondTrivial.Test2}\"), \"bye Second level string 2 (default german)\");\n });\n\n it(\"first level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{FirstSubstitution1}\"), \"First level {{str}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"%{FirstSubstitution1}\"), \"First level {{str}} (default german)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"bye %{FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (default german)\");\n });\n\n it(\"second level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"%{SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (default german)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"hi %{SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (default german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"no %{MissingKeyString}\"), \"no MissingKeyString\");\n assert.equal(localization.getLocalizedKeys(\"no %{MissingKeyString}\"), \"no MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{SecondTrivial.MissingString}\"), \"hi SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"%{MissingKeyObject.MissingString}\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Given Namespace\", () => {\n\n it(\"first level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{Default:FirstTrivial}\"), \"hi First level string (default)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Test:FirstTrivial}\"), \"hi First level string (test)\");\n });\n\n it(\"second level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Default:SecondTrivial.Test1}\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Default:SecondTrivial.Test2}\"), \"bye Second level string 2 (default)\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:SecondTrivial.Test1}\"), \"Second level string 1 (test)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Test:SecondTrivial.Test2}\"), \"bye Second level string 2 (test)\");\n });\n\n it(\"first level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Default:FirstSubstitution1}\"), \"First level {{str}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Default:FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:FirstSubstitution1}\"), \"First level {{str}} (test)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Test:FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (test)\");\n });\n\n it(\"second level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Default:SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Default:SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (test)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Test:SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"no %{Default:MissingKeyString}\"), \"no MissingKeyString\");\n assert.equal(localization.getLocalizedKeys(\"no %{Test:MissingKeyString}\"), \"no MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{Default:SecondTrivial.MissingString}\"), \"hi SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"%{Default:MissingKeyObject.MissingString}\"), \"MissingKeyObject.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Test:SecondTrivial.MissingString}\"), \"hi SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:MissingKeyObject.MissingString}\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:FirstTrivial}\"), \"FirstTrivial\");\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:MissingKeyString}\"), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:SecondTrivial.Test1}\"), \"SecondTrivial.Test1\");\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:Missing.String}\"), \"Missing.String\");\n });\n });\n });\n\n // The goal is not to test i18next's interpolation,\n // but just to have some simple tests to make sure the\n // basics work through the ITwinLocalization class.\n // For interpolation options, see: https://www.i18next.com/translation-function/interpolation\n describe(\"#getLocalizedString\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n describe(\"Default Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstTrivial\"]), \"First level string (default)\");\n });\n\n it(\"more than two fallback keys succeeds\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist1\", \"NotExist2\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist1\", \"FirstTrivial\", \"NotExist2\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist1\", \"NotExist2\", \"FirstTrivial\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"1\", \"2\", \"3\", \"4\", \"5\", \"FirstTrivial\"]), \"First level string (default)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (default)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString([\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"first level missing all keys doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString([\"MissingKeyString\", \"MissingString2\"]), \"MissingString2\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"MissingKeyObject.MissingString\"]), \"MissingKeyObject.MissingString\");\n });\n\n it(\"read from en-US fallback\", () => {\n assert.equal(localization.getLocalizedString(\"OnlyEnglishUS\"), \"HelloUS\");\n });\n });\n\n describe(\"Default Namespace (German)\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"FirstTrivial\", \"NotExist\"]), \"First level string (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"FirstTrivial\"]), \"First level string (default german)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test1\"), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test2\"), \"Second level string 2 (default german)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (default german)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"first level missing all keys doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"MissingKeyString\", \"MissingString2\"]), \"MissingString2\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Given Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Default:FirstTrivial\", \"Not:NotExist\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"Default:NotExist\", \"Test:FirstTrivial\"]), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test1\"), \"Second level string 1 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test2\"), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString([\"Test:SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString([\"Test:FirstSubstitution1\", \"Default:NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString([\"Test:SecondSubstitution.Test2\", \"Default:NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"Default:MissingKeyString\"), \"MissingKeyString\");\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n\n it(\"read from en-US fallback\", () => {\n assert.equal(localization.getLocalizedString(\"Default:OnlyEnglishUS\"), \"HelloUS\");\n });\n });\n\n describe(\"Given Namespace (German)\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (german)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondTrivial.Test1\"), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondTrivial.Test2\"), \"Second level string 2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondTrivial.Test1\"), \"Second level string 1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondTrivial.Test2\"), \"Second level string 2 (german)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (german)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:MissingKeyString\"), \"MissingKeyString\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting:FirstTrivial\"), \"FirstTrivial\");\n assert.equal(localization.getLocalizedString(\"Nonexisting:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting:SecondTrivial.Test1\"), \"SecondTrivial.Test1\");\n assert.equal(localization.getLocalizedString(\"Nonexisting:Missing.String\"), \"Missing.String\");\n });\n\n it(\"fallback key fails\", () => {\n assert.equal(localization.getLocalizedString([\"Nonexisting:FirstTrivial\", \"NotExist\"]), \"NotExist\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"Nonexisting:Missing.String\"]), \"Missing.String\");\n });\n });\n\n // Test a few options to make sure they get passed through correctly\n describe(\"With Options\", () => {\n\n it(\"returnDetails throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { returnDetails: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnDetails and returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { returnDetails: true, returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"default value\", () => {\n assert.equal(localization.getLocalizedString(\"Missing\", { defaultValue: \"default\" }), \"default\");\n });\n\n it(\"override fallback language\", () => {\n // Doesn't fallback to English\n assert.equal(germanLocalization.getLocalizedString(\"OnlyEnglish\", { fallbackLng: \"de\" }), \"OnlyEnglish\");\n });\n\n it(\"set namespace\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Test\" }), \"First level string (test)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\", ns: \"Test\" }), \"First level CUSTOM1 (test)\");\n });\n });\n });\n\n describe(\"#getLocalizedString with namespace passed in as an option\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n describe(\"Keys Without Namespaces\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Test\" }), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist\"], { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstTrivial\"], { ns: \"Test\" }), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Default\" }), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Default\" }), \"Second level string 2 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Test\" }), \"Second level string 1 (test)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Test\" }), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondTrivial.Test1\"], { ns: \"Default\" }), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondTrivial.Test2\", \"NotExist\"], { ns: \"Test\" }), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Default\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Test\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution1\"], { ns: \"Default\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString([\"FirstSubstitution1\", \"NotExist\"], { ns: \"Test\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution2\"], { ns: \"Test\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondSubstitution.Test1\"], { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondSubstitution.Test2\", \"NotExist\"], { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"MissingKeyString\", { ns: \"Default\" }), \"MissingKeyString\");\n assert.equal(localization.getLocalizedString(\"MissingKeyString\", { ns: \"Test\" }), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.MissingString\", { ns: \"Test\" }), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString(\"MissingKeyObject.MissingString\", { ns: \"Test\" }), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Keys Without Namespaces (German)\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstTrivial\", { ns: \"Default\" }), \"First level string (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstTrivial\", { ns: \"Test\" }), \"First level string (german)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Default\" }), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Default\" }), \"Second level string 2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Test\" }), \"Second level string 1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Test\" }), \"Second level string 2 (german)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Default\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Test\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (german)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyString\", { ns: \"Default\" }), \"MissingKeyString\");\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyString\", { ns: \"Test\" }), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.MissingString\", { ns: \"Test\" }), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyObject.MissingString\", { ns: \"Test\" }), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Keys With Namespaces\", () => {\n\n it(\"key with same namespace works\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\", { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test1\", { ns: \"Test\" }), \"Second level string 1 (test)\");\n });\n\n it(\"key with different namespace overrides given namespace\", () => {\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\", { ns: \"Default\" }), \"First level string (test)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\", { ns: \"Test\" }), \"First level string (default)\");\n });\n\n it(\"key with same namespace works with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Default:FirstTrivial\"], { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Test:FirstTrivial\"], { ns: \"Test\" }), \"First level string (test)\");\n });\n\n it(\"key with different namespace overrides given namespace with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Test:FirstTrivial\"], { ns: \"Default\" }), \"First level string (test)\");\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Default:FirstTrivial\"], { ns: \"Test\" }), \"First level string (default)\");\n });\n\n it(\"missing key does not find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:MissingKeyString\", { ns: \"Default\" }), \"MissingKeyString\");\n assert.equal(germanLocalization.getLocalizedString([\"Missing1\", \"MissingKeyObject.MissingString\"], { ns: \"Test\" }), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Nonexisting\" }), \"FirstTrivial\");\n assert.equal(localization.getLocalizedString(\"MissingKeyString\", { ns: \"Nonexisting\" }), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Nonexisting\" }), \"SecondTrivial.Test1\");\n assert.equal(localization.getLocalizedString(\"Missing.String\", { ns: \"Nonexisting\" }), \"Missing.String\");\n });\n\n it(\"empty string namespace falls back to default namespace\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"\" }), \"Second level string 1 (default)\");\n });\n\n it(\"fallback key fails\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist\"], { ns: \"Nonexisting\" }), \"NotExist\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"Missing.String\"], { ns: \"Nonexisting\" }), \"Missing.String\");\n });\n\n it(\"use key with valid namespace instead\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\", { ns: \"Nonexisting\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\", { ns: \"Nonexisting\" }), \"First level string (test)\");\n });\n\n it(\"providing key with invalid namespace fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting2:FirstTrivial\", { ns: \"Nonexisting1\" }), \"FirstTrivial\");\n });\n });\n\n // Test a few options to make sure they get passed through correctly\n describe(\"With Options\", () => {\n\n it(\"returnDetails throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { ns: \"Default\", returnDetails: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { ns: \"Default\", returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnDetails and returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { ns: \"Default\", returnDetails: true, returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"default value\", () => {\n assert.equal(localization.getLocalizedString(\"Missing\", { ns: \"Default\", defaultValue: \"default\" }), \"default\");\n });\n\n it(\"override fallback language\", () => {\n // Doesn't fallback to English\n assert.equal(germanLocalization.getLocalizedString(\"OnlyEnglish\", { ns: \"Default\", fallbackLng: \"de\" }), \"OnlyEnglish\");\n });\n });\n });\n\n describe(\"#getEnglishString\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n describe(\"Given Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"FirstTrivial\"), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"FirstTrivial\", \"NotExist\"]), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"NotExist\", \"FirstTrivial\"]), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondTrivial.Test1\"), \"Second level string 1 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondTrivial.Test2\"), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"MissingKeyString\"), \"MissingKeyString\");\n assert.equal(localization.getEnglishString(\"Test\", \"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getEnglishString(\"Test\", \"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getEnglishString(\"Test\", \"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Given Namespace with German default language returns English strings\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstTrivial\"), \"First level string (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"FirstTrivial\", \"NotExist\"]), \"First level string (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"NotExist\", \"FirstTrivial\"]), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondTrivial.Test1\"), \"Second level string 1 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondTrivial.Test2\"), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"MissingKeyString\"), \"MissingKeyString\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"FirstTrivial\"), \"FirstTrivial\");\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"SecondTrivial.Test1\"), \"SecondTrivial.Test1\");\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"Missing.String\"), \"Missing.String\");\n });\n\n it(\"empty string namespace is treated as default namespace\", () => {\n assert.equal(localization.getEnglishString(\"\", \"FirstTrivial\"), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"\", \"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n });\n });\n\n // Test a few options to make sure they get passed through correctly\n describe(\"With Options\", () => {\n\n it(\"returnDetails throws error\", () => {\n assert.throws(() => {\n localization.getEnglishString(\"Default\", \"X\", { returnDetails: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getEnglishString(\"Default\", \"X\", { returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnDetails and returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getEnglishString(\"Default\", \"X\", { returnDetails: true, returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"default value\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"Missing\", { defaultValue: \"default\" }), \"default\");\n });\n\n it(\"english takes priority over fallback language\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"OnlyEnglish\", { fallbackLng: \"de\" }), \"Hello\");\n });\n\n // White box test\n it(\"given namespace overrides namespace translation option\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"FirstTrivial\", { ns: \"Test\" }), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM1\", ns: \"Test\" }), \"First level CUSTOM1 (default)\");\n });\n });\n\n });\n\n // Returned promises never have anything of substance, being only empty or resolving to null...\n // describe(\"#getNamespacePromise\", () => {\n // });\n\n describe(\"#getLanguageList\", () => {\n let languages: readonly string[];\n\n it(\"english language list includes en and en-US\", async () => {\n localization = new ITwinLocalization();\n await localization.initialize([]);\n\n languages = localization.getLanguageList();\n assert.isTrue(languages.includes(\"en-US\"));\n assert.isTrue(languages.includes(\"en\"));\n });\n\n it(\"when non-english language is set as default, that language and english are included in langauge list\", async () => {\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([]);\n\n languages = germanLocalization.getLanguageList();\n assert.isTrue(languages.includes(\"en\"));\n assert.isTrue(languages.includes(\"de\"));\n });\n });\n\n describe(\"#changeLanguage\", () => {\n\n it(\"change from english to another language\", async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\"]);\n\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\"); // english\n await localization.changeLanguage(\"de\");\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\"); // german\n });\n\n it(\"change from another language to english\", async () => {\n localization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await localization.initialize([\"Default\"]);\n\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\"); // german\n await localization.changeLanguage(\"en\");\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\"); // english\n });\n });\n\n describe(\"#registerNamespace\", () => {\n let itwinLocalization: ITwinLocalization;\n\n beforeEach(async () => {\n itwinLocalization = new ITwinLocalization();\n });\n\n it(\"can read from namespace after it is registered\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"Test\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"zero initial, register one\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n });\n\n it(\"zero initial, register two\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n await itwinLocalization.registerNamespace(\"test2\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test2\"));\n });\n\n it(\"one initial, register one\", async () => {\n await itwinLocalization.initialize([\"initial1\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n });\n\n it(\"one initial, register two\", async () => {\n await itwinLocalization.initialize([\"initial1\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n await itwinLocalization.registerNamespace(\"test2\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test2\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n });\n\n it(\"two initial, register one\", async () => {\n await itwinLocalization.initialize([\"initial1\", \"initial2\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial2\"));\n });\n\n it(\"two initial, register two\", async () => {\n await itwinLocalization.initialize([\"initial1\", \"initial2\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n await itwinLocalization.registerNamespace(\"test2\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial2\"));\n });\n\n it(\"register duplicate namespaces\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"Test\");\n await itwinLocalization.registerNamespace(\"Test\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"register duplicate namespace of initial namespace doesn't break anything\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n\n await itwinLocalization.registerNamespace(\"Test\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n });\n\n // unregisterNamespace() isn't used and basically does nothing\n // describe(\"#unregisterNamespace\", () => {\n // });\n\n});\n"]}
1
+ {"version":3,"file":"ITwinLocalization.test.js","sourceRoot":"","sources":["../../../src/test/ITwinLocalization.test.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@
19
19
  */
20
20
  function cov_ogldeftyv() {
21
21
  var path = "C:\\agent\\_work\\1\\s\\core\\i18n\\lib\\cjs\\ITwinLocalization.js";
22
- var hash = "d940188727f7c3f13464903c9fef76d730c540e6";
22
+ var hash = "113751a8262a3149163a15d970bf9098e64926ce";
23
23
  var global = new Function("return this")();
24
24
  var gcv = "__coverage__";
25
25
  var coverageData = {
@@ -2123,10 +2123,10 @@ function cov_ogldeftyv() {
2123
2123
  sources: ["C:\\agent\\_work\\1\\s\\core\\i18n\\src\\ITwinLocalization.ts"],
2124
2124
  names: [],
2125
2125
  mappings: "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",
2126
- sourcesContent: ["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Localization\n */\n\nimport i18next, { i18n, InitOptions, Module, TOptionsBase } from \"i18next\";\nimport i18nextBrowserLanguageDetector, { DetectorOptions } from \"i18next-browser-languagedetector\";\nimport Backend, { HttpBackendOptions as BackendOptions } from \"i18next-http-backend\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\n\nconst DEFAULT_MAX_RETRIES: number = 1; // a low number prevents wasted time and potential timeouts when requesting localization files throws an error\n\n/** Options for ITwinLocalization\n * @public\n */\nexport interface LocalizationOptions {\n urlTemplate?: string;\n backendPlugin?: Module;\n detectorPlugin?: Module;\n initOptions?: InitOptions;\n backendHttpOptions?: BackendOptions;\n detectorOptions?: DetectorOptions;\n}\n\n/** Supplies localizations for iTwin.js\n * @note this class uses the [i18next](https://www.i18next.com/) package.\n * @public\n */\nexport class ITwinLocalization implements Localization {\n public i18next: i18n;\n private readonly _initOptions: InitOptions;\n private readonly _backendOptions: BackendOptions;\n private readonly _detectionOptions: DetectorOptions;\n private readonly _namespaces = new Map<string, Promise<void>>();\n\n public constructor(options?: LocalizationOptions) {\n this.i18next = i18next.createInstance();\n\n this._backendOptions = {\n loadPath: options?.urlTemplate ?? \"locales/{{lng}}/{{ns}}.json\",\n crossDomain: true,\n ...options?.backendHttpOptions,\n };\n\n this._detectionOptions = {\n order: [\"querystring\", \"navigator\", \"htmlTag\"],\n lookupQuerystring: \"lng\",\n caches: [],\n ...options?.detectorOptions,\n };\n\n this._initOptions = {\n interpolation: { escapeValue: true },\n fallbackLng: \"en\",\n maxRetries: DEFAULT_MAX_RETRIES,\n backend: this._backendOptions,\n detection: this._detectionOptions,\n ...options?.initOptions,\n };\n\n this.i18next\n .use(options?.detectorPlugin ?? i18nextBrowserLanguageDetector)\n .use(options?.backendPlugin ?? Backend)\n .use(TranslationLogger);\n }\n\n public async initialize(namespaces: string[]): Promise<void> {\n\n // Also consider namespaces passed into constructor\n const initNamespaces: string[] = [this._initOptions.ns || []].flat();\n const combinedNamespaces: Set<string> = new Set([...namespaces, ...initNamespaces]); // without duplicates\n\n const defaultNamespace: string | false | readonly string[] = this._initOptions.defaultNS ?? namespaces[0];\n if (defaultNamespace)\n combinedNamespaces.add(defaultNamespace as string); // Make sure default namespace is in namespaces list\n\n const initOptions: InitOptions = {\n ...this._initOptions,\n defaultNS: defaultNamespace,\n ns: [...combinedNamespaces],\n };\n\n // if in a development environment, set debugging\n if (process.env.NODE_ENV === \"development\")\n initOptions.debug = true;\n\n const initPromise = this.i18next.init(initOptions) as unknown as Promise<void>;\n\n for (const ns of namespaces)\n this._namespaces.set(ns, initPromise);\n\n return initPromise;\n }\n\n /** Replace all instances of `%{key}` within a string with the translations of those keys.\n * For example:\n * ``` ts\n * \"MyKeys\": {\n * \"Key1\": \"First value\",\n * \"Key2\": \"Second value\"\n * }\n * ```\n *\n * ``` ts\n * i18.translateKeys(\"string with %{MyKeys.Key1} followed by %{MyKeys.Key2}!\"\") // returns \"string with First Value followed by Second Value!\"\n * ```\n * @param line The input line, potentially containing %{keys}.\n * @returns The line with all %{keys} translated\n * @public\n */\n public getLocalizedKeys(line: string): string {\n return line.replace(/\\%\\{(.+?)\\}/g, (_match, tag) => this.getLocalizedString(tag));\n }\n\n /** Return the translated value of a key.\n * @param key - the key that matches a property in the JSON localization file.\n * @note The key includes the namespace, which identifies the particular localization file that contains the property,\n * followed by a colon, followed by the property in the JSON file.\n * For example:\n * ``` ts\n * const dataString: string = IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.BingDataAttribution\");\n * ```\n * assigns to dataString the string with property BackgroundMap.BingDataAttribution from the iModelJs.json localization file.\n * @returns The string corresponding to the first key that resolves.\n * @throws Error if no keys resolve to a string.\n * @public\n */\n public getLocalizedString(key: string | string[], options?: TOptionsBase): string {\n if (options?.returnDetails || options?.returnObjects) {\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\n }\n\n const value = this.i18next.t(key, options);\n\n if (typeof value !== \"string\") {\n throw new Error(\"Translation key(s) string not found\");\n }\n\n return value;\n }\n\n /** Gets the English translation.\n * @param namespace - the namespace that identifies the particular localization file that contains the property.\n * @param key - the key that matches a property in the JSON localization file.\n * @returns The string corresponding to the first key that resolves.\n * @throws Error if no keys resolve to a string.\n * @internal\n */\n public getEnglishString(namespace: string, key: string | string[], options?: TOptionsBase): string {\n if (options?.returnDetails || options?.returnObjects) {\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\n }\n\n options = {\n ...options,\n ns: namespace, // ensure namespace argument is used\n };\n\n const en = this.i18next.getFixedT(\"en\", namespace);\n const str = en(key, options);\n if (typeof str !== \"string\")\n throw new Error(\"Translation key(s) not found\");\n\n return str;\n }\n\n /** Get the promise for an already registered Namespace.\n * @param name - the name of the namespace\n * @public\n */\n public getNamespacePromise(name: string): Promise<void> | undefined {\n return this._namespaces.get(name);\n }\n\n /** @internal */\n public getLanguageList(): readonly string[] {\n return this.i18next.languages;\n }\n\n /** override the language detected in the browser */\n public async changeLanguage(language: string) {\n return this.i18next.changeLanguage(language) as unknown as Promise<void>;\n }\n\n /** Register a new Namespace and return it. If the namespace is already registered, it will be returned.\n * @param name - the name of the namespace, which is the base name of the JSON file that contains the localization properties.\n * @note - The registerNamespace method starts fetching the appropriate version of the JSON localization file from the server,\n * based on the current locale. To make sure that fetch is complete before performing translations from this namespace, await\n * fulfillment of the readPromise Promise property of the returned LocalizationNamespace.\n * @see [Localization in iTwin.js]($docs/learning/frontend/Localization.md)\n * @public\n */\n public async registerNamespace(name: string): Promise<void> {\n const existing = this._namespaces.get(name);\n if (existing !== undefined)\n return existing;\n\n const theReadPromise = new Promise<void>((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.i18next.loadNamespaces(name, (err) => {\n if (!err)\n return resolve();\n\n // Here we got a non-null err object.\n // This method is called when the system has attempted to load the resources for the namespaces for each possible locale.\n // For example 'fr-ca' might be the most specific locale, in which case 'fr' and 'en' are fallback locales.\n // Using Backend from i18next-http-backend, err will be an array of strings of each namespace it tried to read and its locale.\n // There might be errs for some other namespaces as well as this one. We resolve the promise unless there's an error for each possible locale.\n let locales = this.getLanguageList().map((thisLocale: any) => `/${thisLocale}/`);\n\n try {\n for (const thisError of err) {\n if (typeof thisError === \"string\")\n locales = locales.filter((thisLocale) => !thisError.includes(thisLocale));\n }\n } catch {\n locales = [];\n }\n // if we removed every locale from the array, it wasn't loaded.\n if (locales.length === 0)\n Logger.logError(\"i18n\", `No resources for namespace ${name} could be loaded`);\n\n resolve();\n });\n });\n this._namespaces.set(name, theReadPromise);\n return theReadPromise;\n }\n\n /** @internal */\n public unregisterNamespace(name: string): void {\n this._namespaces.delete(name);\n }\n}\n\nclass TranslationLogger {\n public static readonly type = \"logger\";\n public log(args: string[]) { Logger.logInfo(\"i18n\", this.createLogMessage(args)); }\n public warn(args: string[]) { Logger.logWarning(\"i18n\", this.createLogMessage(args)); }\n public error(args: string[]) { Logger.logError(\"i18n\", this.createLogMessage(args)); }\n private createLogMessage(args: string[]) {\n let message = args[0];\n for (let i = 1; i < args.length; ++i) {\n if (typeof args[i] === \"string\")\n message += `\\n ${args[i]}`;\n }\n return message;\n }\n}\n"]
2126
+ sourcesContent: ["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Localization\r\n */\r\n\r\nimport i18next, { i18n, InitOptions, Module, TOptionsBase } from \"i18next\";\r\nimport i18nextBrowserLanguageDetector, { DetectorOptions } from \"i18next-browser-languagedetector\";\r\nimport Backend, { HttpBackendOptions as BackendOptions } from \"i18next-http-backend\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport type { Localization } from \"@itwin/core-common\";\r\n\r\nconst DEFAULT_MAX_RETRIES: number = 1; // a low number prevents wasted time and potential timeouts when requesting localization files throws an error\r\n\r\n/** Options for ITwinLocalization\r\n * @public\r\n */\r\nexport interface LocalizationOptions {\r\n urlTemplate?: string;\r\n backendPlugin?: Module;\r\n detectorPlugin?: Module;\r\n initOptions?: InitOptions;\r\n backendHttpOptions?: BackendOptions;\r\n detectorOptions?: DetectorOptions;\r\n}\r\n\r\n/** Supplies localizations for iTwin.js\r\n * @note this class uses the [i18next](https://www.i18next.com/) package.\r\n * @public\r\n */\r\nexport class ITwinLocalization implements Localization {\r\n public i18next: i18n;\r\n private readonly _initOptions: InitOptions;\r\n private readonly _backendOptions: BackendOptions;\r\n private readonly _detectionOptions: DetectorOptions;\r\n private readonly _namespaces = new Map<string, Promise<void>>();\r\n\r\n public constructor(options?: LocalizationOptions) {\r\n this.i18next = i18next.createInstance();\r\n\r\n this._backendOptions = {\r\n loadPath: options?.urlTemplate ?? \"locales/{{lng}}/{{ns}}.json\",\r\n crossDomain: true,\r\n ...options?.backendHttpOptions,\r\n };\r\n\r\n this._detectionOptions = {\r\n order: [\"querystring\", \"navigator\", \"htmlTag\"],\r\n lookupQuerystring: \"lng\",\r\n caches: [],\r\n ...options?.detectorOptions,\r\n };\r\n\r\n this._initOptions = {\r\n interpolation: { escapeValue: true },\r\n fallbackLng: \"en\",\r\n maxRetries: DEFAULT_MAX_RETRIES,\r\n backend: this._backendOptions,\r\n detection: this._detectionOptions,\r\n ...options?.initOptions,\r\n };\r\n\r\n this.i18next\r\n .use(options?.detectorPlugin ?? i18nextBrowserLanguageDetector)\r\n .use(options?.backendPlugin ?? Backend)\r\n .use(TranslationLogger);\r\n }\r\n\r\n public async initialize(namespaces: string[]): Promise<void> {\r\n\r\n // Also consider namespaces passed into constructor\r\n const initNamespaces: string[] = [this._initOptions.ns || []].flat();\r\n const combinedNamespaces: Set<string> = new Set([...namespaces, ...initNamespaces]); // without duplicates\r\n\r\n const defaultNamespace: string | false | readonly string[] = this._initOptions.defaultNS ?? namespaces[0];\r\n if (defaultNamespace)\r\n combinedNamespaces.add(defaultNamespace as string); // Make sure default namespace is in namespaces list\r\n\r\n const initOptions: InitOptions = {\r\n ...this._initOptions,\r\n defaultNS: defaultNamespace,\r\n ns: [...combinedNamespaces],\r\n };\r\n\r\n // if in a development environment, set debugging\r\n if (process.env.NODE_ENV === \"development\")\r\n initOptions.debug = true;\r\n\r\n const initPromise = this.i18next.init(initOptions) as unknown as Promise<void>;\r\n\r\n for (const ns of namespaces)\r\n this._namespaces.set(ns, initPromise);\r\n\r\n return initPromise;\r\n }\r\n\r\n /** Replace all instances of `%{key}` within a string with the translations of those keys.\r\n * For example:\r\n * ``` ts\r\n * \"MyKeys\": {\r\n * \"Key1\": \"First value\",\r\n * \"Key2\": \"Second value\"\r\n * }\r\n * ```\r\n *\r\n * ``` ts\r\n * i18.translateKeys(\"string with %{MyKeys.Key1} followed by %{MyKeys.Key2}!\"\") // returns \"string with First Value followed by Second Value!\"\r\n * ```\r\n * @param line The input line, potentially containing %{keys}.\r\n * @returns The line with all %{keys} translated\r\n * @public\r\n */\r\n public getLocalizedKeys(line: string): string {\r\n return line.replace(/\\%\\{(.+?)\\}/g, (_match, tag) => this.getLocalizedString(tag));\r\n }\r\n\r\n /** Return the translated value of a key.\r\n * @param key - the key that matches a property in the JSON localization file.\r\n * @note The key includes the namespace, which identifies the particular localization file that contains the property,\r\n * followed by a colon, followed by the property in the JSON file.\r\n * For example:\r\n * ``` ts\r\n * const dataString: string = IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.BingDataAttribution\");\r\n * ```\r\n * assigns to dataString the string with property BackgroundMap.BingDataAttribution from the iModelJs.json localization file.\r\n * @returns The string corresponding to the first key that resolves.\r\n * @throws Error if no keys resolve to a string.\r\n * @public\r\n */\r\n public getLocalizedString(key: string | string[], options?: TOptionsBase): string {\r\n if (options?.returnDetails || options?.returnObjects) {\r\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\r\n }\r\n\r\n const value = this.i18next.t(key, options);\r\n\r\n if (typeof value !== \"string\") {\r\n throw new Error(\"Translation key(s) string not found\");\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** Gets the English translation.\r\n * @param namespace - the namespace that identifies the particular localization file that contains the property.\r\n * @param key - the key that matches a property in the JSON localization file.\r\n * @returns The string corresponding to the first key that resolves.\r\n * @throws Error if no keys resolve to a string.\r\n * @internal\r\n */\r\n public getEnglishString(namespace: string, key: string | string[], options?: TOptionsBase): string {\r\n if (options?.returnDetails || options?.returnObjects) {\r\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\r\n }\r\n\r\n options = {\r\n ...options,\r\n ns: namespace, // ensure namespace argument is used\r\n };\r\n\r\n const en = this.i18next.getFixedT(\"en\", namespace);\r\n const str = en(key, options);\r\n if (typeof str !== \"string\")\r\n throw new Error(\"Translation key(s) not found\");\r\n\r\n return str;\r\n }\r\n\r\n /** Get the promise for an already registered Namespace.\r\n * @param name - the name of the namespace\r\n * @public\r\n */\r\n public getNamespacePromise(name: string): Promise<void> | undefined {\r\n return this._namespaces.get(name);\r\n }\r\n\r\n /** @internal */\r\n public getLanguageList(): readonly string[] {\r\n return this.i18next.languages;\r\n }\r\n\r\n /** override the language detected in the browser */\r\n public async changeLanguage(language: string) {\r\n return this.i18next.changeLanguage(language) as unknown as Promise<void>;\r\n }\r\n\r\n /** Register a new Namespace and return it. If the namespace is already registered, it will be returned.\r\n * @param name - the name of the namespace, which is the base name of the JSON file that contains the localization properties.\r\n * @note - The registerNamespace method starts fetching the appropriate version of the JSON localization file from the server,\r\n * based on the current locale. To make sure that fetch is complete before performing translations from this namespace, await\r\n * fulfillment of the readPromise Promise property of the returned LocalizationNamespace.\r\n * @see [Localization in iTwin.js]($docs/learning/frontend/Localization.md)\r\n * @public\r\n */\r\n public async registerNamespace(name: string): Promise<void> {\r\n const existing = this._namespaces.get(name);\r\n if (existing !== undefined)\r\n return existing;\r\n\r\n const theReadPromise = new Promise<void>((resolve) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.i18next.loadNamespaces(name, (err) => {\r\n if (!err)\r\n return resolve();\r\n\r\n // Here we got a non-null err object.\r\n // This method is called when the system has attempted to load the resources for the namespaces for each possible locale.\r\n // For example 'fr-ca' might be the most specific locale, in which case 'fr' and 'en' are fallback locales.\r\n // Using Backend from i18next-http-backend, err will be an array of strings of each namespace it tried to read and its locale.\r\n // There might be errs for some other namespaces as well as this one. We resolve the promise unless there's an error for each possible locale.\r\n let locales = this.getLanguageList().map((thisLocale: any) => `/${thisLocale}/`);\r\n\r\n try {\r\n for (const thisError of err) {\r\n if (typeof thisError === \"string\")\r\n locales = locales.filter((thisLocale) => !thisError.includes(thisLocale));\r\n }\r\n } catch {\r\n locales = [];\r\n }\r\n // if we removed every locale from the array, it wasn't loaded.\r\n if (locales.length === 0)\r\n Logger.logError(\"i18n\", `No resources for namespace ${name} could be loaded`);\r\n\r\n resolve();\r\n });\r\n });\r\n this._namespaces.set(name, theReadPromise);\r\n return theReadPromise;\r\n }\r\n\r\n /** @internal */\r\n public unregisterNamespace(name: string): void {\r\n this._namespaces.delete(name);\r\n }\r\n}\r\n\r\nclass TranslationLogger {\r\n public static readonly type = \"logger\";\r\n public log(args: string[]) { Logger.logInfo(\"i18n\", this.createLogMessage(args)); }\r\n public warn(args: string[]) { Logger.logWarning(\"i18n\", this.createLogMessage(args)); }\r\n public error(args: string[]) { Logger.logError(\"i18n\", this.createLogMessage(args)); }\r\n private createLogMessage(args: string[]) {\r\n let message = args[0];\r\n for (let i = 1; i < args.length; ++i) {\r\n if (typeof args[i] === \"string\")\r\n message += `\\n ${args[i]}`;\r\n }\r\n return message;\r\n }\r\n}\r\n"]
2127
2127
  },
2128
2128
  _coverageSchema: "1a1c01bbd47fc00a2c39e90264f33305004495a9",
2129
- hash: "d940188727f7c3f13464903c9fef76d730c540e6"
2129
+ hash: "113751a8262a3149163a15d970bf9098e64926ce"
2130
2130
  };
2131
2131
  var coverage = global[gcv] || (global[gcv] = {});
2132
2132
  if (!coverage[path] || coverage[path].hash !== hash) {
@@ -1 +1 @@
1
- {"version":3,"file":"ITwinLocalization.js","sourceRoot":"","sources":["../../src/ITwinLocalization.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Localization\n */\n\nimport i18next, { i18n, InitOptions, Module, TOptionsBase } from \"i18next\";\nimport i18nextBrowserLanguageDetector, { DetectorOptions } from \"i18next-browser-languagedetector\";\nimport Backend, { HttpBackendOptions as BackendOptions } from \"i18next-http-backend\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\n\nconst DEFAULT_MAX_RETRIES: number = 1; // a low number prevents wasted time and potential timeouts when requesting localization files throws an error\n\n/** Options for ITwinLocalization\n * @public\n */\nexport interface LocalizationOptions {\n urlTemplate?: string;\n backendPlugin?: Module;\n detectorPlugin?: Module;\n initOptions?: InitOptions;\n backendHttpOptions?: BackendOptions;\n detectorOptions?: DetectorOptions;\n}\n\n/** Supplies localizations for iTwin.js\n * @note this class uses the [i18next](https://www.i18next.com/) package.\n * @public\n */\nexport class ITwinLocalization implements Localization {\n public i18next: i18n;\n private readonly _initOptions: InitOptions;\n private readonly _backendOptions: BackendOptions;\n private readonly _detectionOptions: DetectorOptions;\n private readonly _namespaces = new Map<string, Promise<void>>();\n\n public constructor(options?: LocalizationOptions) {\n this.i18next = i18next.createInstance();\n\n this._backendOptions = {\n loadPath: options?.urlTemplate ?? \"locales/{{lng}}/{{ns}}.json\",\n crossDomain: true,\n ...options?.backendHttpOptions,\n };\n\n this._detectionOptions = {\n order: [\"querystring\", \"navigator\", \"htmlTag\"],\n lookupQuerystring: \"lng\",\n caches: [],\n ...options?.detectorOptions,\n };\n\n this._initOptions = {\n interpolation: { escapeValue: true },\n fallbackLng: \"en\",\n maxRetries: DEFAULT_MAX_RETRIES,\n backend: this._backendOptions,\n detection: this._detectionOptions,\n ...options?.initOptions,\n };\n\n this.i18next\n .use(options?.detectorPlugin ?? i18nextBrowserLanguageDetector)\n .use(options?.backendPlugin ?? Backend)\n .use(TranslationLogger);\n }\n\n public async initialize(namespaces: string[]): Promise<void> {\n\n // Also consider namespaces passed into constructor\n const initNamespaces: string[] = [this._initOptions.ns || []].flat();\n const combinedNamespaces: Set<string> = new Set([...namespaces, ...initNamespaces]); // without duplicates\n\n const defaultNamespace: string | false | readonly string[] = this._initOptions.defaultNS ?? namespaces[0];\n if (defaultNamespace)\n combinedNamespaces.add(defaultNamespace as string); // Make sure default namespace is in namespaces list\n\n const initOptions: InitOptions = {\n ...this._initOptions,\n defaultNS: defaultNamespace,\n ns: [...combinedNamespaces],\n };\n\n // if in a development environment, set debugging\n if (process.env.NODE_ENV === \"development\")\n initOptions.debug = true;\n\n const initPromise = this.i18next.init(initOptions) as unknown as Promise<void>;\n\n for (const ns of namespaces)\n this._namespaces.set(ns, initPromise);\n\n return initPromise;\n }\n\n /** Replace all instances of `%{key}` within a string with the translations of those keys.\n * For example:\n * ``` ts\n * \"MyKeys\": {\n * \"Key1\": \"First value\",\n * \"Key2\": \"Second value\"\n * }\n * ```\n *\n * ``` ts\n * i18.translateKeys(\"string with %{MyKeys.Key1} followed by %{MyKeys.Key2}!\"\") // returns \"string with First Value followed by Second Value!\"\n * ```\n * @param line The input line, potentially containing %{keys}.\n * @returns The line with all %{keys} translated\n * @public\n */\n public getLocalizedKeys(line: string): string {\n return line.replace(/\\%\\{(.+?)\\}/g, (_match, tag) => this.getLocalizedString(tag));\n }\n\n /** Return the translated value of a key.\n * @param key - the key that matches a property in the JSON localization file.\n * @note The key includes the namespace, which identifies the particular localization file that contains the property,\n * followed by a colon, followed by the property in the JSON file.\n * For example:\n * ``` ts\n * const dataString: string = IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.BingDataAttribution\");\n * ```\n * assigns to dataString the string with property BackgroundMap.BingDataAttribution from the iModelJs.json localization file.\n * @returns The string corresponding to the first key that resolves.\n * @throws Error if no keys resolve to a string.\n * @public\n */\n public getLocalizedString(key: string | string[], options?: TOptionsBase): string {\n if (options?.returnDetails || options?.returnObjects) {\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\n }\n\n const value = this.i18next.t(key, options);\n\n if (typeof value !== \"string\") {\n throw new Error(\"Translation key(s) string not found\");\n }\n\n return value;\n }\n\n /** Gets the English translation.\n * @param namespace - the namespace that identifies the particular localization file that contains the property.\n * @param key - the key that matches a property in the JSON localization file.\n * @returns The string corresponding to the first key that resolves.\n * @throws Error if no keys resolve to a string.\n * @internal\n */\n public getEnglishString(namespace: string, key: string | string[], options?: TOptionsBase): string {\n if (options?.returnDetails || options?.returnObjects) {\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\n }\n\n options = {\n ...options,\n ns: namespace, // ensure namespace argument is used\n };\n\n const en = this.i18next.getFixedT(\"en\", namespace);\n const str = en(key, options);\n if (typeof str !== \"string\")\n throw new Error(\"Translation key(s) not found\");\n\n return str;\n }\n\n /** Get the promise for an already registered Namespace.\n * @param name - the name of the namespace\n * @public\n */\n public getNamespacePromise(name: string): Promise<void> | undefined {\n return this._namespaces.get(name);\n }\n\n /** @internal */\n public getLanguageList(): readonly string[] {\n return this.i18next.languages;\n }\n\n /** override the language detected in the browser */\n public async changeLanguage(language: string) {\n return this.i18next.changeLanguage(language) as unknown as Promise<void>;\n }\n\n /** Register a new Namespace and return it. If the namespace is already registered, it will be returned.\n * @param name - the name of the namespace, which is the base name of the JSON file that contains the localization properties.\n * @note - The registerNamespace method starts fetching the appropriate version of the JSON localization file from the server,\n * based on the current locale. To make sure that fetch is complete before performing translations from this namespace, await\n * fulfillment of the readPromise Promise property of the returned LocalizationNamespace.\n * @see [Localization in iTwin.js]($docs/learning/frontend/Localization.md)\n * @public\n */\n public async registerNamespace(name: string): Promise<void> {\n const existing = this._namespaces.get(name);\n if (existing !== undefined)\n return existing;\n\n const theReadPromise = new Promise<void>((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.i18next.loadNamespaces(name, (err) => {\n if (!err)\n return resolve();\n\n // Here we got a non-null err object.\n // This method is called when the system has attempted to load the resources for the namespaces for each possible locale.\n // For example 'fr-ca' might be the most specific locale, in which case 'fr' and 'en' are fallback locales.\n // Using Backend from i18next-http-backend, err will be an array of strings of each namespace it tried to read and its locale.\n // There might be errs for some other namespaces as well as this one. We resolve the promise unless there's an error for each possible locale.\n let locales = this.getLanguageList().map((thisLocale: any) => `/${thisLocale}/`);\n\n try {\n for (const thisError of err) {\n if (typeof thisError === \"string\")\n locales = locales.filter((thisLocale) => !thisError.includes(thisLocale));\n }\n } catch {\n locales = [];\n }\n // if we removed every locale from the array, it wasn't loaded.\n if (locales.length === 0)\n Logger.logError(\"i18n\", `No resources for namespace ${name} could be loaded`);\n\n resolve();\n });\n });\n this._namespaces.set(name, theReadPromise);\n return theReadPromise;\n }\n\n /** @internal */\n public unregisterNamespace(name: string): void {\n this._namespaces.delete(name);\n }\n}\n\nclass TranslationLogger {\n public static readonly type = \"logger\";\n public log(args: string[]) { Logger.logInfo(\"i18n\", this.createLogMessage(args)); }\n public warn(args: string[]) { Logger.logWarning(\"i18n\", this.createLogMessage(args)); }\n public error(args: string[]) { Logger.logError(\"i18n\", this.createLogMessage(args)); }\n private createLogMessage(args: string[]) {\n let message = args[0];\n for (let i = 1; i < args.length; ++i) {\n if (typeof args[i] === \"string\")\n message += `\\n ${args[i]}`;\n }\n return message;\n }\n}\n"]}
1
+ {"version":3,"file":"ITwinLocalization.js","sourceRoot":"","sources":["../../src/ITwinLocalization.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-i18n.js","sourceRoot":"","sources":["../../src/core-i18n.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,cAAc,qBAAqB,CAAC;AAEpC;;GAEG;AAEH;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nexport * from \"./ITwinLocalization\";\n\n/** @docs-package-description\n * The core-i18n package contains classes related to internationalization and localization.\n */\n\n/** @docs-group-description Localization\n * Classes for internationalization and localization of your app.\n */\n"]}
1
+ {"version":3,"file":"core-i18n.js","sourceRoot":"","sources":["../../src/core-i18n.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,cAAc,qBAAqB,CAAC;AAEpC;;GAEG;AAEH;;GAEG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ITwinLocalization.test.js","sourceRoot":"","sources":["../../../src/test/ITwinLocalization.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"chai\";\nimport { Localization } from \"@itwin/core-common\";\nimport { ITwinLocalization } from \"../ITwinLocalization\";\n\ndescribe(\"ITwinLocalization\", () => {\n\n let localization: Localization;\n let germanLocalization: Localization;\n\n describe(\"#constructor\", () => {\n\n let itwinLocalization: ITwinLocalization;\n\n it(\"set default namespace\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"set default language as english\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\", lng: \"en\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.lng, \"en\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"set default language as NOT english\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\", lng: \"de\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.lng, \"de\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\");\n });\n\n it(\"set fallback language as NOT english\", async () => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\", fallbackLng: \"de\" } });\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.fallbackLng, \"de\");\n assert.equal(itwinLocalization.getLocalizedString(\"OnlyGerman\"), \"Hallo\");\n });\n });\n\n describe(\"#initialize\", () => {\n let itwinLocalization: ITwinLocalization;\n\n it(\"cannot fetch from unregistered namespaces\", async () => {\n localization = new ITwinLocalization();\n await localization.initialize([]);\n assert.equal(localization.getEnglishString(\"Default\", \"FirstTrivial\"), \"FirstTrivial\");\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\"), \"FirstTrivial\");\n });\n\n describe(\"with no default namespace predefined\", () => {\n\n before(() => {\n itwinLocalization = new ITwinLocalization();\n });\n\n it(\"no default namespace set when initialized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, undefined);\n });\n\n it(\"initialize with single namespace\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Test\");\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"initialize with two namespaces recognizes both namespaces\", async () => {\n await itwinLocalization.initialize([\"Default\", \"Test\"]);\n\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"initialize with two namespaces sets first as default\", async () => {\n await itwinLocalization.initialize([\"Default\", \"Test\"]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"initialize with duplicate namespace values does not break anything\", async () => {\n await itwinLocalization.initialize([\"Default\", \"Default\"]);\n\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n assert.equal(itwinLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n assert.equal(itwinLocalization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\n });\n });\n\n describe(\"with default namespace\", () => {\n\n before(() => {\n itwinLocalization = new ITwinLocalization({ initOptions: { defaultNS: \"Default\" } });\n });\n\n it(\"default namespace set when initialized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace not overridden by one namespace\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace not overridden by two namespaces\", async () => {\n await itwinLocalization.initialize([\"NotExist\", \"Test\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"duplicate namespace value does not break default namespace\", async () => {\n await itwinLocalization.initialize([\"Default\"]);\n assert.equal(itwinLocalization.i18next.options.defaultNS, \"Default\");\n });\n\n it(\"default namespace is in list of all namespaces initalized with empty array\", async () => {\n await itwinLocalization.initialize([]);\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n });\n\n it(\"default namespace is in list of all namespaces\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n assert.isTrue(itwinLocalization.i18next.options.ns?.includes(\"Default\"));\n });\n });\n });\n\n describe(\"#getLocalizedKeys\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n it(\"no substitution\", () => {\n assert.equal(localization.getLocalizedKeys(\"MyString\"), \"MyString\");\n });\n\n describe(\"Default Namespace\", () => {\n\n it(\"first level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{FirstTrivial}\"), \"hi First level string (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"hi %{FirstTrivial}\"), \"hi First level string (default german)\");\n });\n\n it(\"second level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{SecondTrivial.Test1}\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{SecondTrivial.Test2}\"), \"bye Second level string 2 (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"%{SecondTrivial.Test1}\"), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"bye %{SecondTrivial.Test2}\"), \"bye Second level string 2 (default german)\");\n });\n\n it(\"first level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{FirstSubstitution1}\"), \"First level {{str}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"%{FirstSubstitution1}\"), \"First level {{str}} (default german)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"bye %{FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (default german)\");\n });\n\n it(\"second level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (default)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"%{SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (default german)\");\n assert.equal(germanLocalization.getLocalizedKeys(\"hi %{SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (default german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"no %{MissingKeyString}\"), \"no MissingKeyString\");\n assert.equal(localization.getLocalizedKeys(\"no %{MissingKeyString}\"), \"no MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{SecondTrivial.MissingString}\"), \"hi SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"%{MissingKeyObject.MissingString}\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Given Namespace\", () => {\n\n it(\"first level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{Default:FirstTrivial}\"), \"hi First level string (default)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Test:FirstTrivial}\"), \"hi First level string (test)\");\n });\n\n it(\"second level string\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Default:SecondTrivial.Test1}\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Default:SecondTrivial.Test2}\"), \"bye Second level string 2 (default)\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:SecondTrivial.Test1}\"), \"Second level string 1 (test)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Test:SecondTrivial.Test2}\"), \"bye Second level string 2 (test)\");\n });\n\n it(\"first level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Default:FirstSubstitution1}\"), \"First level {{str}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Default:FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:FirstSubstitution1}\"), \"First level {{str}} (test)\");\n assert.equal(localization.getLocalizedKeys(\"bye %{Test:FirstSubstitution2}\"), \"bye First level {{str1}} and {{str2}} (test)\");\n });\n\n it(\"second level string with keys\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Default:SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Default:SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (default)\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:SecondSubstitution.Test1}\"), \"Substitute {{varA}} and {{varB}} (test)\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Test:SecondSubstitution.Test2}\"), \"hi Reverse substitute {{varB}} and {{varA}} (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"no %{Default:MissingKeyString}\"), \"no MissingKeyString\");\n assert.equal(localization.getLocalizedKeys(\"no %{Test:MissingKeyString}\"), \"no MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedKeys(\"hi %{Default:SecondTrivial.MissingString}\"), \"hi SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"%{Default:MissingKeyObject.MissingString}\"), \"MissingKeyObject.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"hi %{Test:SecondTrivial.MissingString}\"), \"hi SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedKeys(\"%{Test:MissingKeyObject.MissingString}\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:FirstTrivial}\"), \"FirstTrivial\");\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:MissingKeyString}\"), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:SecondTrivial.Test1}\"), \"SecondTrivial.Test1\");\n assert.equal(localization.getLocalizedKeys(\"%{Nonexisting:Missing.String}\"), \"Missing.String\");\n });\n });\n });\n\n // The goal is not to test i18next's interpolation,\n // but just to have some simple tests to make sure the\n // basics work through the ITwinLocalization class.\n // For interpolation options, see: https://www.i18next.com/translation-function/interpolation\n describe(\"#getLocalizedString\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n describe(\"Default Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstTrivial\"]), \"First level string (default)\");\n });\n\n it(\"more than two fallback keys succeeds\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist1\", \"NotExist2\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist1\", \"FirstTrivial\", \"NotExist2\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist1\", \"NotExist2\", \"FirstTrivial\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"1\", \"2\", \"3\", \"4\", \"5\", \"FirstTrivial\"]), \"First level string (default)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (default)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString([\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"first level missing all keys doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString([\"MissingKeyString\", \"MissingString2\"]), \"MissingString2\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"MissingKeyObject.MissingString\"]), \"MissingKeyObject.MissingString\");\n });\n\n it(\"read from en-US fallback\", () => {\n assert.equal(localization.getLocalizedString(\"OnlyEnglishUS\"), \"HelloUS\");\n });\n });\n\n describe(\"Default Namespace (German)\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"FirstTrivial\", \"NotExist\"]), \"First level string (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"FirstTrivial\"]), \"First level string (default german)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test1\"), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test2\"), \"Second level string 2 (default german)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (default german)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString([\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"first level missing all keys doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString([\"MissingKeyString\", \"MissingString2\"]), \"MissingString2\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Given Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Default:FirstTrivial\", \"Not:NotExist\"]), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"Default:NotExist\", \"Test:FirstTrivial\"]), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test1\"), \"Second level string 1 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test2\"), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString([\"Test:SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString([\"Test:FirstSubstitution1\", \"Default:NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"Default:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"Test:NotExist\", \"Default:SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString([\"Test:SecondSubstitution.Test2\", \"Default:NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"Default:MissingKeyString\"), \"MissingKeyString\");\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString(\"Test:MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n\n it(\"read from en-US fallback\", () => {\n assert.equal(localization.getLocalizedString(\"Default:OnlyEnglishUS\"), \"HelloUS\");\n });\n });\n\n describe(\"Given Namespace (German)\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstTrivial\"), \"First level string (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (german)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondTrivial.Test1\"), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondTrivial.Test2\"), \"Second level string 2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondTrivial.Test1\"), \"Second level string 1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondTrivial.Test2\"), \"Second level string 2 (german)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (german)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Default:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:MissingKeyString\"), \"MissingKeyString\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Test:SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getLocalizedString(\"Test:MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting:FirstTrivial\"), \"FirstTrivial\");\n assert.equal(localization.getLocalizedString(\"Nonexisting:MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting:SecondTrivial.Test1\"), \"SecondTrivial.Test1\");\n assert.equal(localization.getLocalizedString(\"Nonexisting:Missing.String\"), \"Missing.String\");\n });\n\n it(\"fallback key fails\", () => {\n assert.equal(localization.getLocalizedString([\"Nonexisting:FirstTrivial\", \"NotExist\"]), \"NotExist\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"Nonexisting:Missing.String\"]), \"Missing.String\");\n });\n });\n\n // Test a few options to make sure they get passed through correctly\n describe(\"With Options\", () => {\n\n it(\"returnDetails throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { returnDetails: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnDetails and returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { returnDetails: true, returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"default value\", () => {\n assert.equal(localization.getLocalizedString(\"Missing\", { defaultValue: \"default\" }), \"default\");\n });\n\n it(\"override fallback language\", () => {\n // Doesn't fallback to English\n assert.equal(germanLocalization.getLocalizedString(\"OnlyEnglish\", { fallbackLng: \"de\" }), \"OnlyEnglish\");\n });\n\n it(\"set namespace\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Test\" }), \"First level string (test)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { str: \"CUSTOM1\", ns: \"Test\" }), \"First level CUSTOM1 (test)\");\n });\n });\n });\n\n describe(\"#getLocalizedString with namespace passed in as an option\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n describe(\"Keys Without Namespaces\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Test\" }), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist\"], { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstTrivial\"], { ns: \"Test\" }), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Default\" }), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Default\" }), \"Second level string 2 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Test\" }), \"Second level string 1 (test)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Test\" }), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondTrivial.Test1\"], { ns: \"Default\" }), \"Second level string 1 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondTrivial.Test2\", \"NotExist\"], { ns: \"Test\" }), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Default\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Test\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution1\"], { ns: \"Default\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getLocalizedString([\"FirstSubstitution1\", \"NotExist\"], { ns: \"Test\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"FirstSubstitution2\"], { ns: \"Test\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(localization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist\", \"SecondSubstitution.Test1\"], { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getLocalizedString([\"SecondSubstitution.Test2\", \"NotExist\"], { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"MissingKeyString\", { ns: \"Default\" }), \"MissingKeyString\");\n assert.equal(localization.getLocalizedString(\"MissingKeyString\", { ns: \"Test\" }), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.MissingString\", { ns: \"Test\" }), \"SecondTrivial.MissingString\");\n assert.equal(localization.getLocalizedString(\"MissingKeyObject.MissingString\", { ns: \"Test\" }), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Keys Without Namespaces (German)\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstTrivial\", { ns: \"Default\" }), \"First level string (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstTrivial\", { ns: \"Test\" }), \"First level string (german)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Default\" }), \"Second level string 1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Default\" }), \"Second level string 2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Test\" }), \"Second level string 1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.Test2\", { ns: \"Test\" }), \"Second level string 2 (german)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Default\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Default\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM1\" }), \"First level CUSTOM1 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution1\", { ns: \"Test\", str: \"CUSTOM2\" }), \"First level CUSTOM2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"FirstSubstitution2\", { ns: \"Test\", str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (german)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Default\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test1\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (german)\");\n assert.equal(germanLocalization.getLocalizedString(\"SecondSubstitution.Test2\", { ns: \"Test\", varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (german)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyString\", { ns: \"Default\" }), \"MissingKeyString\");\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyString\", { ns: \"Test\" }), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"SecondTrivial.MissingString\", { ns: \"Test\" }), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getLocalizedString(\"MissingKeyObject.MissingString\", { ns: \"Test\" }), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Keys With Namespaces\", () => {\n\n it(\"key with same namespace works\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\", { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"Test:SecondTrivial.Test1\", { ns: \"Test\" }), \"Second level string 1 (test)\");\n });\n\n it(\"key with different namespace overrides given namespace\", () => {\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\", { ns: \"Default\" }), \"First level string (test)\");\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\", { ns: \"Test\" }), \"First level string (default)\");\n });\n\n it(\"key with same namespace works with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Default:FirstTrivial\"], { ns: \"Default\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Test:FirstTrivial\"], { ns: \"Test\" }), \"First level string (test)\");\n });\n\n it(\"key with different namespace overrides given namespace with fallback keys\", () => {\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Test:FirstTrivial\"], { ns: \"Default\" }), \"First level string (test)\");\n assert.equal(localization.getLocalizedString([\"NotExist:FirstTrivial\", \"Default:FirstTrivial\"], { ns: \"Test\" }), \"First level string (default)\");\n });\n\n it(\"missing key does not find a value\", () => {\n assert.equal(germanLocalization.getLocalizedString(\"Default:MissingKeyString\", { ns: \"Default\" }), \"MissingKeyString\");\n assert.equal(germanLocalization.getLocalizedString([\"Missing1\", \"MissingKeyObject.MissingString\"], { ns: \"Test\" }), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"Nonexisting\" }), \"FirstTrivial\");\n assert.equal(localization.getLocalizedString(\"MissingKeyString\", { ns: \"Nonexisting\" }), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"Nonexisting\" }), \"SecondTrivial.Test1\");\n assert.equal(localization.getLocalizedString(\"Missing.String\", { ns: \"Nonexisting\" }), \"Missing.String\");\n });\n\n it(\"empty string namespace falls back to default namespace\", () => {\n assert.equal(localization.getLocalizedString(\"FirstTrivial\", { ns: \"\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"SecondTrivial.Test1\", { ns: \"\" }), \"Second level string 1 (default)\");\n });\n\n it(\"fallback key fails\", () => {\n assert.equal(localization.getLocalizedString([\"FirstTrivial\", \"NotExist\"], { ns: \"Nonexisting\" }), \"NotExist\");\n assert.equal(localization.getLocalizedString([\"NotExist\", \"Missing.String\"], { ns: \"Nonexisting\" }), \"Missing.String\");\n });\n\n it(\"use key with valid namespace instead\", () => {\n assert.equal(localization.getLocalizedString(\"Default:FirstTrivial\", { ns: \"Nonexisting\" }), \"First level string (default)\");\n assert.equal(localization.getLocalizedString(\"Test:FirstTrivial\", { ns: \"Nonexisting\" }), \"First level string (test)\");\n });\n\n it(\"providing key with invalid namespace fails\", () => {\n assert.equal(localization.getLocalizedString(\"Nonexisting2:FirstTrivial\", { ns: \"Nonexisting1\" }), \"FirstTrivial\");\n });\n });\n\n // Test a few options to make sure they get passed through correctly\n describe(\"With Options\", () => {\n\n it(\"returnDetails throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { ns: \"Default\", returnDetails: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { ns: \"Default\", returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnDetails and returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getLocalizedString(\"X\", { ns: \"Default\", returnDetails: true, returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"default value\", () => {\n assert.equal(localization.getLocalizedString(\"Missing\", { ns: \"Default\", defaultValue: \"default\" }), \"default\");\n });\n\n it(\"override fallback language\", () => {\n // Doesn't fallback to English\n assert.equal(germanLocalization.getLocalizedString(\"OnlyEnglish\", { ns: \"Default\", fallbackLng: \"de\" }), \"OnlyEnglish\");\n });\n });\n });\n\n describe(\"#getEnglishString\", () => {\n\n before(async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\", \"Test\"]);\n\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([\"Default\", \"Test\"]);\n });\n\n describe(\"Given Namespace\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"FirstTrivial\"), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"FirstTrivial\", \"NotExist\"]), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"NotExist\", \"FirstTrivial\"]), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondTrivial.Test1\"), \"Second level string 1 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondTrivial.Test2\"), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(localization.getEnglishString(\"Test\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(localization.getEnglishString(\"Default\", [\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(localization.getEnglishString(\"Test\", [\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"MissingKeyString\"), \"MissingKeyString\");\n assert.equal(localization.getEnglishString(\"Test\", \"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(localization.getEnglishString(\"Test\", \"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(localization.getEnglishString(\"Test\", \"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Given Namespace with German default language returns English strings\", () => {\n\n it(\"first level with no substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstTrivial\"), \"First level string (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"first level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"FirstTrivial\", \"NotExist\"]), \"First level string (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"NotExist\", \"FirstTrivial\"]), \"First level string (test)\");\n });\n\n it(\"second level with no substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondTrivial.Test2\"), \"Second level string 2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondTrivial.Test1\"), \"Second level string 1 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondTrivial.Test2\"), \"Second level string 2 (test)\");\n });\n\n it(\"second level with no substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"NotExist\", \"SecondTrivial.Test1\"]), \"Second level string 1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"SecondTrivial.Test2\", \"NotExist\"]), \"Second level string 2 (test)\");\n });\n\n it(\"first level with substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM1\" }), \"First level CUSTOM1 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstSubstitution1\", { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"FirstSubstitution2\", { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"first level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"NotExist\", \"FirstSubstitution1\"], { str: \"CUSTOM1\" }), \"First level CUSTOM1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"FirstSubstitution1\", \"NotExist\"], { str: \"CUSTOM2\" }), \"First level CUSTOM2 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"NotExist\", \"FirstSubstitution2\"], { str1: \"CUSTOM1\", str2: \"CUSTOM2\" }), \"First level CUSTOM1 and CUSTOM2 (test)\");\n });\n\n it(\"second level with substitution\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondSubstitution.Test1\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (test)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondSubstitution.Test2\", { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"second level with substitution with fallback keys\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", [\"NotExist\", \"SecondSubstitution.Test1\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Substitute Variable1 and Variable2 (default)\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", [\"SecondSubstitution.Test2\", \"NotExist\"], { varA: \"Variable1\", varB: \"Variable2\" }), \"Reverse substitute Variable2 and Variable1 (test)\");\n });\n\n it(\"first level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"MissingKeyString\"), \"MissingKeyString\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level missing key doesn't find a value\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"SecondTrivial.MissingString\"), \"SecondTrivial.MissingString\");\n assert.equal(germanLocalization.getEnglishString(\"Test\", \"MissingKeyObject.MissingString\"), \"MissingKeyObject.MissingString\");\n });\n });\n\n describe(\"Nonexisting Namespace\", () => {\n\n it(\"first level fails\", () => {\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"FirstTrivial\"), \"FirstTrivial\");\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"MissingKeyString\"), \"MissingKeyString\");\n });\n\n it(\"second level fails\", () => {\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"SecondTrivial.Test1\"), \"SecondTrivial.Test1\");\n assert.equal(localization.getEnglishString(\"Nonexisting\", \"Missing.String\"), \"Missing.String\");\n });\n\n it(\"empty string namespace is treated as default namespace\", () => {\n assert.equal(localization.getEnglishString(\"\", \"FirstTrivial\"), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"\", \"SecondTrivial.Test1\"), \"Second level string 1 (default)\");\n });\n });\n\n // Test a few options to make sure they get passed through correctly\n describe(\"With Options\", () => {\n\n it(\"returnDetails throws error\", () => {\n assert.throws(() => {\n localization.getEnglishString(\"Default\", \"X\", { returnDetails: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getEnglishString(\"Default\", \"X\", { returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"returnDetails and returnObjects throws error\", () => {\n assert.throws(() => {\n localization.getEnglishString(\"Default\", \"X\", { returnDetails: true, returnObjects: true });\n }, \"Translation key must map to a string, but the given options will result in an object\");\n });\n\n it(\"default value\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"Missing\", { defaultValue: \"default\" }), \"default\");\n });\n\n it(\"english takes priority over fallback language\", () => {\n assert.equal(germanLocalization.getEnglishString(\"Default\", \"OnlyEnglish\", { fallbackLng: \"de\" }), \"Hello\");\n });\n\n // White box test\n it(\"given namespace overrides namespace translation option\", () => {\n assert.equal(localization.getEnglishString(\"Default\", \"FirstTrivial\", { ns: \"Test\" }), \"First level string (default)\");\n assert.equal(localization.getEnglishString(\"Default\", \"FirstSubstitution1\", { str: \"CUSTOM1\", ns: \"Test\" }), \"First level CUSTOM1 (default)\");\n });\n });\n\n });\n\n // Returned promises never have anything of substance, being only empty or resolving to null...\n // describe(\"#getNamespacePromise\", () => {\n // });\n\n describe(\"#getLanguageList\", () => {\n let languages: readonly string[];\n\n it(\"english language list includes en and en-US\", async () => {\n localization = new ITwinLocalization();\n await localization.initialize([]);\n\n languages = localization.getLanguageList();\n assert.isTrue(languages.includes(\"en-US\"));\n assert.isTrue(languages.includes(\"en\"));\n });\n\n it(\"when non-english language is set as default, that language and english are included in langauge list\", async () => {\n germanLocalization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await germanLocalization.initialize([]);\n\n languages = germanLocalization.getLanguageList();\n assert.isTrue(languages.includes(\"en\"));\n assert.isTrue(languages.includes(\"de\"));\n });\n });\n\n describe(\"#changeLanguage\", () => {\n\n it(\"change from english to another language\", async () => {\n localization = new ITwinLocalization();\n await localization.initialize([\"Default\"]);\n\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\"); // english\n await localization.changeLanguage(\"de\");\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\"); // german\n });\n\n it(\"change from another language to english\", async () => {\n localization = new ITwinLocalization({ initOptions: { lng: \"de\" } });\n await localization.initialize([\"Default\"]);\n\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default german)\"); // german\n await localization.changeLanguage(\"en\");\n assert.equal(localization.getLocalizedString(\"FirstTrivial\"), \"First level string (default)\"); // english\n });\n });\n\n describe(\"#registerNamespace\", () => {\n let itwinLocalization: ITwinLocalization;\n\n beforeEach(async () => {\n itwinLocalization = new ITwinLocalization();\n });\n\n it(\"can read from namespace after it is registered\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"Test\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"zero initial, register one\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n });\n\n it(\"zero initial, register two\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n await itwinLocalization.registerNamespace(\"test2\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test2\"));\n });\n\n it(\"one initial, register one\", async () => {\n await itwinLocalization.initialize([\"initial1\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n });\n\n it(\"one initial, register two\", async () => {\n await itwinLocalization.initialize([\"initial1\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n await itwinLocalization.registerNamespace(\"test2\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test2\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n });\n\n it(\"two initial, register one\", async () => {\n await itwinLocalization.initialize([\"initial1\", \"initial2\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial2\"));\n });\n\n it(\"two initial, register two\", async () => {\n await itwinLocalization.initialize([\"initial1\", \"initial2\"]);\n\n await itwinLocalization.registerNamespace(\"test1\");\n await itwinLocalization.registerNamespace(\"test2\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"test1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial1\"));\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"initial2\"));\n });\n\n it(\"register duplicate namespaces\", async () => {\n await itwinLocalization.initialize([]);\n\n await itwinLocalization.registerNamespace(\"Test\");\n await itwinLocalization.registerNamespace(\"Test\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n\n it(\"register duplicate namespace of initial namespace doesn't break anything\", async () => {\n await itwinLocalization.initialize([\"Test\"]);\n\n await itwinLocalization.registerNamespace(\"Test\");\n\n assert.isTrue(itwinLocalization.i18next.hasLoadedNamespace(\"Test\"));\n assert.equal(itwinLocalization.getLocalizedString(\"Test:FirstTrivial\"), \"First level string (test)\");\n });\n });\n\n // unregisterNamespace() isn't used and basically does nothing\n // describe(\"#unregisterNamespace\", () => {\n // });\n\n});\n"]}
1
+ {"version":3,"file":"ITwinLocalization.test.js","sourceRoot":"","sources":["../../../src/test/ITwinLocalization.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-i18n",
3
- "version": "5.1.1",
3
+ "version": "5.1.3-experimental.1",
4
4
  "description": "iTwin.js localization code",
5
5
  "main": "lib/cjs/core-i18n.js",
6
6
  "module": "lib/esm/core-i18n.js",
@@ -21,7 +21,7 @@
21
21
  "url": "http://www.bentley.com"
22
22
  },
23
23
  "peerDependencies": {
24
- "@itwin/core-bentley": "5.1.1"
24
+ "@itwin/core-bentley": "5.1.3-experimental.1"
25
25
  },
26
26
  "//devDependencies": [
27
27
  "NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install",
@@ -44,10 +44,10 @@
44
44
  "typescript": "~5.6.2",
45
45
  "webpack": "^5.97.1",
46
46
  "webpack-cli": "^5.0.1",
47
- "@itwin/build-tools": "5.1.1",
48
- "@itwin/core-bentley": "5.1.1",
49
- "@itwin/certa": "5.1.1",
50
- "@itwin/core-common": "5.1.1"
47
+ "@itwin/build-tools": "5.1.3-experimental.1",
48
+ "@itwin/core-bentley": "5.1.3-experimental.1",
49
+ "@itwin/certa": "5.1.3-experimental.1",
50
+ "@itwin/core-common": "5.1.3-experimental.1"
51
51
  },
52
52
  "//dependencies": [
53
53
  "NOTE: these dependencies are specific to core-i18n",