mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-03-17 05:36:14 +00:00
* Added localization build * Commit types * Added locProject.json * Localized file check-in by OneLocBuild Task: Build definition ID 13114: Build ID 2425084 (#2392) * Fixed package.json * Fix compilation error * Localized file check-in by OneLocBuild Task: Build definition ID 13114: Build ID 2431677 (#2396) * Localized file check-in by OneLocBuild Task: Build definition ID 13114: Build ID 2432830 (#2397) * Localized file check-in by OneLocBuild Task: Build definition ID 13114: Build ID 2431872 * Localized file check-in by OneLocBuild Task: Build definition ID 13114: Build ID 2432783 * Localized file check-in by OneLocBuild Task: Build definition ID 13114: Build ID 2432830 * Localized file check-in by OneLocBuild Task: Build definition ID 13114: Build ID 2434398 (#2400) --------- Co-authored-by: olprod <olprod@microsoft.com>
25 lines
929 B
TypeScript
25 lines
929 B
TypeScript
import i18n from "../i18n";
|
|
import type enResources from "./en/Resources.json";
|
|
|
|
/**
|
|
* Derives a union of all dot-notation key paths from a nested JSON object type.
|
|
* e.g. { buttons: { save: "Save" } } → "buttons.save"
|
|
*/
|
|
type NestedKeyOf<T, P extends string = ""> = {
|
|
[K in keyof T & string]: T[K] extends Record<string, unknown>
|
|
? NestedKeyOf<T[K], P extends "" ? K : `${P}.${K}`>
|
|
: P extends ""
|
|
? K
|
|
: `${P}.${K}`;
|
|
}[keyof T & string];
|
|
|
|
/** All valid translation keys derived from en/Resources.json */
|
|
export type ResourceKey = NestedKeyOf<typeof enResources>;
|
|
|
|
/**
|
|
* Type-safe translation function bound to the "Resources" namespace.
|
|
* Use this everywhere—class components, functional components, and non-React code.
|
|
*/
|
|
export const t = (key: ResourceKey, options?: Record<string, unknown>): string =>
|
|
(i18n.t as (key: string, options?: unknown) => string)(key, { ns: "Resources", ...options });
|