@digitaldefiance/i18n-lib 1.0.16 → 1.0.17
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/dist/active-context.d.ts +29 -0
- package/dist/active-context.js +2 -0
- package/dist/context.d.ts +38 -1
- package/dist/context.js +45 -1
- package/dist/currency-code.d.ts +7 -0
- package/dist/currency-code.js +24 -0
- package/dist/currency-format.d.ts +7 -0
- package/dist/currency-format.js +2 -0
- package/dist/currency.d.ts +1 -7
- package/dist/global-active-context.d.ts +22 -0
- package/dist/global-active-context.js +73 -0
- package/dist/i18n-engine.js +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/types.d.ts +10 -5
- package/dist/types.js +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { LanguageContext } from './types';
|
|
2
|
+
import { Timezone } from './timezone';
|
|
3
|
+
import { CurrencyCode } from './currency-code';
|
|
4
|
+
export interface IActiveContext<TLanguage extends string> {
|
|
5
|
+
/**
|
|
6
|
+
* The default language for the user facing application
|
|
7
|
+
*/
|
|
8
|
+
language: TLanguage;
|
|
9
|
+
/**
|
|
10
|
+
* The default language for the admin interface
|
|
11
|
+
*/
|
|
12
|
+
adminLanguage: TLanguage;
|
|
13
|
+
/**
|
|
14
|
+
* The default currency code for the user facing application
|
|
15
|
+
*/
|
|
16
|
+
currencyCode: CurrencyCode;
|
|
17
|
+
/**
|
|
18
|
+
* The default language context for the current context
|
|
19
|
+
*/
|
|
20
|
+
currentContext: LanguageContext;
|
|
21
|
+
/**
|
|
22
|
+
* The default timezone for the user facing application
|
|
23
|
+
*/
|
|
24
|
+
timezone: Timezone;
|
|
25
|
+
/**
|
|
26
|
+
* The default timezone for the admin interface
|
|
27
|
+
*/
|
|
28
|
+
adminTimezone: Timezone;
|
|
29
|
+
}
|
package/dist/context.d.ts
CHANGED
|
@@ -1,6 +1,43 @@
|
|
|
1
|
+
import { CurrencyCode } from './currency-code';
|
|
1
2
|
import { Timezone } from './timezone';
|
|
2
3
|
import { I18nContext, LanguageContext } from './types';
|
|
3
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Creates a new I18n context with default values.
|
|
6
|
+
* @param defaultLanguage - The default language for the context
|
|
7
|
+
* @param defaultContext - The default language context
|
|
8
|
+
* @param defaultCurrencyCode - The default currency code (defaults to USD)
|
|
9
|
+
* @param defaultTimezone - The default timezone (defaults to UTC)
|
|
10
|
+
* @param defaultAdminTimezone - The default admin timezone (defaults to UTC)
|
|
11
|
+
* @returns A new I18nContext instance
|
|
12
|
+
*/
|
|
13
|
+
export declare function createContext<TLanguage extends string, TContext extends string = LanguageContext>(defaultLanguage: TLanguage, defaultContext: TContext, defaultCurrencyCode?: CurrencyCode, defaultTimezone?: Timezone, defaultAdminTimezone?: Timezone): I18nContext<TLanguage, TContext>;
|
|
14
|
+
/**
|
|
15
|
+
* Sets the language for the given I18n context.
|
|
16
|
+
* @param context - The I18n context to modify
|
|
17
|
+
* @param language - The language to set
|
|
18
|
+
*/
|
|
4
19
|
export declare function setLanguage<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, language: TLanguage): void;
|
|
20
|
+
/**
|
|
21
|
+
* Sets the admin language for the given I18n context.
|
|
22
|
+
* @param context - The I18n context to modify
|
|
23
|
+
* @param language - The admin language to set
|
|
24
|
+
*/
|
|
5
25
|
export declare function setAdminLanguage<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, language: TLanguage): void;
|
|
26
|
+
/**
|
|
27
|
+
* Sets the current context for the given I18n context.
|
|
28
|
+
* @param context - The I18n context to modify
|
|
29
|
+
* @param languageContext - The language context to set
|
|
30
|
+
*/
|
|
6
31
|
export declare function setContext<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, languageContext: TContext): void;
|
|
32
|
+
/**
|
|
33
|
+
* Sets the timezone for the given I18n context.
|
|
34
|
+
* @param context - The I18n context to modify
|
|
35
|
+
* @param timezone - The timezone to set
|
|
36
|
+
*/
|
|
37
|
+
export declare function setTimezone<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, timezone: Timezone): void;
|
|
38
|
+
/**
|
|
39
|
+
* Sets the admin timezone for the given I18n context.
|
|
40
|
+
* @param context - The I18n context to modify
|
|
41
|
+
* @param timezone - The admin timezone to set
|
|
42
|
+
*/
|
|
43
|
+
export declare function setAdminTimezone<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, timezone: Timezone): void;
|
package/dist/context.js
CHANGED
|
@@ -4,22 +4,66 @@ exports.createContext = createContext;
|
|
|
4
4
|
exports.setLanguage = setLanguage;
|
|
5
5
|
exports.setAdminLanguage = setAdminLanguage;
|
|
6
6
|
exports.setContext = setContext;
|
|
7
|
+
exports.setTimezone = setTimezone;
|
|
8
|
+
exports.setAdminTimezone = setAdminTimezone;
|
|
9
|
+
const currency_code_1 = require("./currency-code");
|
|
7
10
|
const timezone_1 = require("./timezone");
|
|
8
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new I18n context with default values.
|
|
13
|
+
* @param defaultLanguage - The default language for the context
|
|
14
|
+
* @param defaultContext - The default language context
|
|
15
|
+
* @param defaultCurrencyCode - The default currency code (defaults to USD)
|
|
16
|
+
* @param defaultTimezone - The default timezone (defaults to UTC)
|
|
17
|
+
* @param defaultAdminTimezone - The default admin timezone (defaults to UTC)
|
|
18
|
+
* @returns A new I18nContext instance
|
|
19
|
+
*/
|
|
20
|
+
function createContext(defaultLanguage, defaultContext, defaultCurrencyCode = new currency_code_1.CurrencyCode('USD'), defaultTimezone = new timezone_1.Timezone('UTC'), defaultAdminTimezone = new timezone_1.Timezone('UTC')) {
|
|
9
21
|
return {
|
|
10
22
|
language: defaultLanguage,
|
|
11
23
|
adminLanguage: defaultLanguage,
|
|
24
|
+
currencyCode: defaultCurrencyCode,
|
|
12
25
|
currentContext: defaultContext,
|
|
13
26
|
timezone: defaultTimezone,
|
|
14
27
|
adminTimezone: defaultAdminTimezone,
|
|
15
28
|
};
|
|
16
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Sets the language for the given I18n context.
|
|
32
|
+
* @param context - The I18n context to modify
|
|
33
|
+
* @param language - The language to set
|
|
34
|
+
*/
|
|
17
35
|
function setLanguage(context, language) {
|
|
18
36
|
context.language = language;
|
|
19
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Sets the admin language for the given I18n context.
|
|
40
|
+
* @param context - The I18n context to modify
|
|
41
|
+
* @param language - The admin language to set
|
|
42
|
+
*/
|
|
20
43
|
function setAdminLanguage(context, language) {
|
|
21
44
|
context.adminLanguage = language;
|
|
22
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Sets the current context for the given I18n context.
|
|
48
|
+
* @param context - The I18n context to modify
|
|
49
|
+
* @param languageContext - The language context to set
|
|
50
|
+
*/
|
|
23
51
|
function setContext(context, languageContext) {
|
|
24
52
|
context.currentContext = languageContext;
|
|
25
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Sets the timezone for the given I18n context.
|
|
56
|
+
* @param context - The I18n context to modify
|
|
57
|
+
* @param timezone - The timezone to set
|
|
58
|
+
*/
|
|
59
|
+
function setTimezone(context, timezone) {
|
|
60
|
+
context.timezone = timezone;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Sets the admin timezone for the given I18n context.
|
|
64
|
+
* @param context - The I18n context to modify
|
|
65
|
+
* @param timezone - The admin timezone to set
|
|
66
|
+
*/
|
|
67
|
+
function setAdminTimezone(context, timezone) {
|
|
68
|
+
context.adminTimezone = timezone;
|
|
69
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CurrencyCode = void 0;
|
|
4
|
+
const currency_codes_1 = require("currency-codes");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
class CurrencyCode {
|
|
7
|
+
get value() {
|
|
8
|
+
return this._value;
|
|
9
|
+
}
|
|
10
|
+
set value(value) {
|
|
11
|
+
if (!CurrencyCode.values.includes(value)) {
|
|
12
|
+
throw new Error('Invalid currency code');
|
|
13
|
+
}
|
|
14
|
+
this._value = value;
|
|
15
|
+
}
|
|
16
|
+
static get values() {
|
|
17
|
+
return (0, currency_codes_1.codes)();
|
|
18
|
+
}
|
|
19
|
+
constructor(value = types_1.DefaultCurrencyCode) {
|
|
20
|
+
this._value = types_1.DefaultCurrencyCode;
|
|
21
|
+
this.value = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.CurrencyCode = CurrencyCode;
|
package/dist/currency.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Currency formatting utilities
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
export interface CurrencyFormat {
|
|
6
|
-
symbol: string;
|
|
7
|
-
position: CurrencyPosition;
|
|
8
|
-
groupSeparator: string;
|
|
9
|
-
decimalSeparator: string;
|
|
10
|
-
}
|
|
4
|
+
import { CurrencyFormat } from './currency-format';
|
|
11
5
|
export declare function getCurrencyFormat(locale: string, currencyCode: string): CurrencyFormat;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StringLanguage } from './enumerations/string-language';
|
|
2
|
+
import { IActiveContext } from './interfaces/active-context';
|
|
3
|
+
import { CurrencyCode } from './interfaces/currency-code';
|
|
4
|
+
import { LanguageContext } from './shared-types';
|
|
5
|
+
import { Timezone } from '@digitaldefiance/i18n-lib';
|
|
6
|
+
export declare const GlobalActiveContext: IActiveContext;
|
|
7
|
+
export declare function setUserLanguage(language: StringLanguage): void;
|
|
8
|
+
export declare function setCurrencyCode(code: CurrencyCode): void;
|
|
9
|
+
/**
|
|
10
|
+
* Sets the admin language for console operations
|
|
11
|
+
* @param language The language to set for admin operations
|
|
12
|
+
*/
|
|
13
|
+
export declare function setAdminLanguage(language: StringLanguage): void;
|
|
14
|
+
/**
|
|
15
|
+
* Sets the language context for the current context
|
|
16
|
+
* @param context The language context to set
|
|
17
|
+
*/
|
|
18
|
+
export declare function setLanguageContext(context: LanguageContext): void;
|
|
19
|
+
export declare function setSystemContext(): void;
|
|
20
|
+
export declare function setApiContext(): void;
|
|
21
|
+
export declare function setUserTimezone(tz: Timezone): void;
|
|
22
|
+
export declare function setAdminTimezone(tz: Timezone): void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GlobalActiveContext = void 0;
|
|
4
|
+
exports.setUserLanguage = setUserLanguage;
|
|
5
|
+
exports.setCurrencyCode = setCurrencyCode;
|
|
6
|
+
exports.setAdminLanguage = setAdminLanguage;
|
|
7
|
+
exports.setLanguageContext = setLanguageContext;
|
|
8
|
+
exports.setSystemContext = setSystemContext;
|
|
9
|
+
exports.setApiContext = setApiContext;
|
|
10
|
+
exports.setUserTimezone = setUserTimezone;
|
|
11
|
+
exports.setAdminTimezone = setAdminTimezone;
|
|
12
|
+
const currency_code_1 = require("./interfaces/currency-code");
|
|
13
|
+
const shared_types_1 = require("./shared-types");
|
|
14
|
+
const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
|
|
15
|
+
// Create the base context
|
|
16
|
+
const baseContext = {
|
|
17
|
+
/**
|
|
18
|
+
* The language to use for translations in the user facing ui
|
|
19
|
+
*/
|
|
20
|
+
language: shared_types_1.DefaultLanguage,
|
|
21
|
+
/**
|
|
22
|
+
* The language to use for console/admin logs
|
|
23
|
+
*/
|
|
24
|
+
adminLanguage: shared_types_1.DefaultLanguage,
|
|
25
|
+
currencyCode: new currency_code_1.CurrencyCode(shared_types_1.DefaultCurrencyCode),
|
|
26
|
+
/**
|
|
27
|
+
* The current default context for language translations
|
|
28
|
+
*/
|
|
29
|
+
currentContext: 'user',
|
|
30
|
+
/**
|
|
31
|
+
* The timezone for the user facing UI
|
|
32
|
+
*/
|
|
33
|
+
timezone: new i18n_lib_1.Timezone('UTC'),
|
|
34
|
+
/**
|
|
35
|
+
* The timezone for the admin console
|
|
36
|
+
*/
|
|
37
|
+
adminTimezone: new i18n_lib_1.Timezone('UTC'),
|
|
38
|
+
};
|
|
39
|
+
// Export the context (can be proxied for change detection)
|
|
40
|
+
exports.GlobalActiveContext = baseContext;
|
|
41
|
+
function setUserLanguage(language) {
|
|
42
|
+
exports.GlobalActiveContext.language = language;
|
|
43
|
+
}
|
|
44
|
+
function setCurrencyCode(code) {
|
|
45
|
+
exports.GlobalActiveContext.currencyCode = code;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sets the admin language for console operations
|
|
49
|
+
* @param language The language to set for admin operations
|
|
50
|
+
*/
|
|
51
|
+
function setAdminLanguage(language) {
|
|
52
|
+
exports.GlobalActiveContext.adminLanguage = language;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Sets the language context for the current context
|
|
56
|
+
* @param context The language context to set
|
|
57
|
+
*/
|
|
58
|
+
function setLanguageContext(context) {
|
|
59
|
+
exports.GlobalActiveContext.currentContext = context;
|
|
60
|
+
}
|
|
61
|
+
// Helper functions for new contexts
|
|
62
|
+
function setSystemContext() {
|
|
63
|
+
setLanguageContext('system');
|
|
64
|
+
}
|
|
65
|
+
function setApiContext() {
|
|
66
|
+
setLanguageContext('api');
|
|
67
|
+
}
|
|
68
|
+
function setUserTimezone(tz) {
|
|
69
|
+
exports.GlobalActiveContext.timezone = tz;
|
|
70
|
+
}
|
|
71
|
+
function setAdminTimezone(tz) {
|
|
72
|
+
exports.GlobalActiveContext.adminTimezone = tz;
|
|
73
|
+
}
|
package/dist/i18n-engine.js
CHANGED
|
@@ -15,7 +15,7 @@ class I18nEngine {
|
|
|
15
15
|
constructor(config, key) {
|
|
16
16
|
this.config = config;
|
|
17
17
|
this.enumRegistry = new enum_registry_1.EnumTranslationRegistry();
|
|
18
|
-
this._context = (0, context_1.createContext)(config.defaultLanguage, config.
|
|
18
|
+
this._context = (0, context_1.createContext)(config.defaultLanguage, config.defaultTranslationContext, config.defaultCurrencyCode, config.timezone, config.adminTimezone);
|
|
19
19
|
const instanceKey = key || I18nEngine.DefaultInstanceKey;
|
|
20
20
|
if (I18nEngine._instances.has(instanceKey)) {
|
|
21
21
|
const existing = I18nEngine._instances.get(instanceKey);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
export * from './active-context';
|
|
1
2
|
export * from './context';
|
|
2
3
|
export * from './context-manager';
|
|
3
4
|
export * from './currency';
|
|
5
|
+
export * from './currency-code';
|
|
6
|
+
export * from './currency-format';
|
|
4
7
|
export * from './enum-registry';
|
|
5
8
|
export * from './i18n-engine';
|
|
6
9
|
export * from './template';
|
package/dist/index.js
CHANGED
|
@@ -15,9 +15,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.I18n = void 0;
|
|
18
|
+
__exportStar(require("./active-context"), exports);
|
|
18
19
|
__exportStar(require("./context"), exports);
|
|
19
20
|
__exportStar(require("./context-manager"), exports);
|
|
20
21
|
__exportStar(require("./currency"), exports);
|
|
22
|
+
__exportStar(require("./currency-code"), exports);
|
|
23
|
+
__exportStar(require("./currency-format"), exports);
|
|
21
24
|
__exportStar(require("./enum-registry"), exports);
|
|
22
25
|
__exportStar(require("./i18n-engine"), exports);
|
|
23
26
|
__exportStar(require("./template"), exports);
|
package/dist/types.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
import { CurrencyCode } from './currency-code';
|
|
1
2
|
import { Timezone } from './timezone';
|
|
2
|
-
export type LanguageContext = 'admin' | 'user';
|
|
3
|
+
export type LanguageContext = 'admin' | 'user' | 'system' | 'api';
|
|
4
|
+
export declare const DefaultCurrencyCode: string;
|
|
5
|
+
export type CurrencyPosition = 'prefix' | 'postfix' | 'infix';
|
|
3
6
|
export type CustomLanguageContext<T extends string = LanguageContext> = T;
|
|
4
7
|
export type StringsCollection<TStringKey extends string> = Partial<Record<TStringKey, string>>;
|
|
5
8
|
export type MasterStringsCollection<TStringKey extends string, TLanguage extends string> = Partial<Record<TLanguage, StringsCollection<TStringKey>>>;
|
|
6
9
|
export type LanguageCodeCollection<TLanguage extends string> = Partial<Record<TLanguage, string>>;
|
|
7
10
|
export type EnumTranslationMap<TEnum extends string | number, TLanguage extends string> = Partial<Record<TLanguage, Partial<Record<TEnum, string>>>>;
|
|
8
|
-
export interface I18nConfig<TStringKey extends string, TLanguage extends string, TConstants extends Record<string, any> = Record<string, any>,
|
|
11
|
+
export interface I18nConfig<TStringKey extends string, TLanguage extends string, TConstants extends Record<string, any> = Record<string, any>, TTranslationContext extends string = LanguageContext> {
|
|
9
12
|
stringNames: TStringKey[];
|
|
10
13
|
strings: MasterStringsCollection<TStringKey, TLanguage>;
|
|
11
14
|
defaultLanguage: TLanguage;
|
|
12
|
-
|
|
15
|
+
defaultTranslationContext: TTranslationContext;
|
|
16
|
+
defaultCurrencyCode: CurrencyCode;
|
|
13
17
|
languageCodes: LanguageCodeCollection<TLanguage>;
|
|
14
18
|
languages: TLanguage[];
|
|
15
19
|
constants?: TConstants;
|
|
@@ -18,10 +22,11 @@ export interface I18nConfig<TStringKey extends string, TLanguage extends string,
|
|
|
18
22
|
timezone: Timezone;
|
|
19
23
|
adminTimezone: Timezone;
|
|
20
24
|
}
|
|
21
|
-
export interface I18nContext<TLanguage extends string,
|
|
25
|
+
export interface I18nContext<TLanguage extends string, TTranslationContext extends string = LanguageContext> {
|
|
22
26
|
language: TLanguage;
|
|
23
27
|
adminLanguage: TLanguage;
|
|
24
|
-
|
|
28
|
+
currencyCode: CurrencyCode;
|
|
29
|
+
currentContext: TTranslationContext;
|
|
25
30
|
timezone: Timezone;
|
|
26
31
|
adminTimezone: Timezone;
|
|
27
32
|
}
|
package/dist/types.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultCurrencyCode = void 0;
|
|
3
4
|
exports.createTranslations = createTranslations;
|
|
5
|
+
exports.DefaultCurrencyCode = 'USD';
|
|
4
6
|
/**
|
|
5
7
|
* Helper function to create typed translations for an enumeration
|
|
6
8
|
*/
|