@itwin/geo-tools-react
Version:
React Geospatial Tools
54 lines (45 loc) • 2.07 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import type { LocalizationOptions } from "@itwin/core-i18n";
import { BentleyError, BentleyStatus } from "@itwin/core-bentley";
import type { Localization } from "@itwin/core-common";
import { IModelApp } from "@itwin/core-frontend";
/**
* Entry point for static initialization required by various components used in the package.
* @public
*/
export class GeoTools {
private static _i18n?: Localization;
/**
* Called by IModelApp to initialize GeoTools
* @param i18n - The internationalization service created by the IModelApp.
*/
public static async initialize(i18n?: Localization): Promise<void> {
GeoTools._i18n = i18n ?? IModelApp.localization;
return GeoTools._i18n.registerNamespace(GeoTools.i18nNamespace);
}
/** Unregisters the GeoTools internationalization service namespace */
public static terminate() {
if (GeoTools._i18n) GeoTools._i18n.unregisterNamespace(GeoTools.i18nNamespace);
GeoTools._i18n = undefined;
}
/** The internationalization service created by the IModelApp. */
public static get i18n(): Localization {
if (!GeoTools._i18n) throw new BentleyError(BentleyStatus.ERROR, "GeoTools not initialized");
return GeoTools._i18n;
}
/** The internationalization service namespace. */
public static get i18nNamespace(): string {
return "GeoTools";
}
public static get packageName(): string {
return "geo-tools-react";
}
/** Calls i18n.translateWithNamespace with the "GeoTools" namespace. Do NOT include the namespace in the key.
*/
public static translate(key: string | string[], options?: LocalizationOptions): string {
return GeoTools.i18n.getLocalizedString(`${GeoTools.i18nNamespace}:${key}`, options);
}
}