Skip to main content

Class: InternationalizationHandler

A generalized class for handling i18next JSON files and their discovery.

Since​

1.0.0

Constructors​

new InternationalizationHandler()​

new InternationalizationHandler(options?: InternationalizationOptions): InternationalizationHandler

Parameters​

ParameterTypeDescription
options?InternationalizationOptionsThe options that i18next, @skyra/i18next-backend, and InternationalizationHandler should use.

Returns​

InternationalizationHandler

Since​

1.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:70

Properties​

backendOptions​

protected readonly backendOptions: Options<object>

The backend options for @skyra/i18next-backend used by i18next.

Since​

1.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:63


fetchLanguage()​

fetchLanguage: (context: InternationalizationContext) => Awaitable<null | string>

The method to be overridden by the developer.

Parameters​

ParameterType
contextInternationalizationContext

Returns​

Awaitable<null | string>

A string for the desired language or null for no match.

Note​

In the event that fetchLanguage is not defined or returns null / undefined, the defaulting from fetchLanguage will be used.

Since​

2.0.0

See​

fetchLanguage

Examples​

// Always use the same language (no per-guild configuration):
container.i18n.fetchLanguage = () => 'en-US';
// Retrieving the language from an SQL database:
container.i18n.fetchLanguage = async (context) => {
const guild = await driver.getOne('SELECT language FROM public.guild WHERE id = $1', [context.guild.id]);
return guild?.language ?? 'en-US';
};
// Retrieving the language from an ORM:
container.i18n.fetchLanguage = async (context) => {
const guild = await driver.getRepository(GuildEntity).findOne({ id: context.guild.id });
return guild?.language ?? 'en-US';
};
// Retrieving the language on a per channel basis, e.g. per user or guild channel (ORM example but same principles apply):
container.i18n.fetchLanguage = async (context) => {
const channel = await driver.getRepository(ChannelEntity).findOne({ id: context.channel.id });
return channel?.language ?? 'en-US';
};

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:132


languages​

readonly languages: Map<string, TFunction<"translation", undefined>>

A Map of i18next language functions keyed by their language code.

Since​

1.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:44


languagesDirectory​

readonly languagesDirectory: string

The director passed to @skyra/i18next-backend. Also used in InternationalizationHandler.walkLanguageDirectory.

Since​

1.2.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:57


languagesLoaded​

languagesLoaded: boolean = false

Describes whether InternationalizationHandler.init has been run and languages are loaded in InternationalizationHandler.languages.

Since​

1.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:32


namespaces​

namespaces: Set<string>

A Set of initially loaded namespaces.

Since​

1.2.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:38


options​

readonly options: InternationalizationOptions

The options InternationalizationHandler was initialized with in the client.

Since​

1.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:50

Methods​

format()​

Localizes a content given one or more keys and i18next options.

Since​

2.0.0

Param​

The language to be used.

Remark​

This function also has additional parameters for key, defaultValue, and options, however TSDoc does not let us document those while matching proper implementation. See the overloads for this method for the documentation on those parameters.

See​

https://www.i18next.com/overview/api#t

format(locale, key, options)​

format<Key, TOpt, Ns, Ret, ActualOptions>(locale: string, key: Key | Key[], options?: ActualOptions): TFunctionReturnOptionalDetails<Ret, TOpt>

Localizes a content given one or more keys and i18next options.

Type Parameters​
Type ParameterDefault type
Key extends string-
TOpt extends TOptionsTOptions
Ns extends Namespace"translation"
Ret extends string | $SpecialObjectTOpt["returnObjects"] extends true ? $SpecialObject : string
ActualOptions extends TOptionsBase & $DictionaryTOpt & InterpolationMap<Ret>
Parameters​
ParameterTypeDescription
localestringThe language to be used.
keyKey | Key[]The key or keys to retrieve the content from.
options?ActualOptionsThe interpolation options.
Returns​

TFunctionReturnOptionalDetails<Ret, TOpt>

The localized content.

The localized content.

Since​

2.0.0

Param​

The language to be used.

Remark​

This function also has additional parameters for key, defaultValue, and options, however TSDoc does not let us document those while matching proper implementation. See the overloads for this method for the documentation on those parameters.

See​

https://www.i18next.com/overview/api#t

Since​

2.0.0

See​

https://www.i18next.com/overview/api#t

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:199

format(locale, key, options)​

format<Key, TOpt, Ns, Ret, ActualOptions>(locale: string, key: string | string[], options: TOpt & $Dictionary & object): TFunctionReturnOptionalDetails<Ret, TOpt>

Localizes a content given one or more keys and i18next options.

Type Parameters​
Type ParameterDefault type
Key extends string-
TOpt extends TOptionsTOptions
Ns extends Namespace"translation"
Ret extends string | $SpecialObjectTOpt["returnObjects"] extends true ? $SpecialObject : string
ActualOptions extends TOptionsBase & $DictionaryTOpt & InterpolationMap<Ret>
Parameters​
ParameterTypeDescription
localestringThe language to be used.
keystring | string[]The key or keys to retrieve the content from.
optionsTOpt & $Dictionary & objectThe interpolation options as well as a defaultValue for the key and any key/value pairs.
Returns​

TFunctionReturnOptionalDetails<Ret, TOpt>

The localized content.

The localized content.

Since​

2.0.0

Param​

The language to be used.

Remark​

This function also has additional parameters for key, defaultValue, and options, however TSDoc does not let us document those while matching proper implementation. See the overloads for this method for the documentation on those parameters.

See​

https://www.i18next.com/overview/api#t

Since​

2.0.0

See​

https://www.i18next.com/overview/api#t

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:216

format(locale, key, defaultValue, options)​

format<Key, TOpt, Ns, Ret, ActualOptions>(locale: string, key: string | string[], defaultValue: undefined | string, options?: TOpt & $Dictionary): TFunctionReturnOptionalDetails<Ret, TOpt>

Localizes a content given one or more keys and i18next options.

Type Parameters​
Type ParameterDefault type
Key extends string-
TOpt extends TOptionsTOptions
Ns extends Namespace"translation"
Ret extends string | $SpecialObjectTOpt["returnObjects"] extends true ? $SpecialObject : string
ActualOptions extends TOptionsBase & $DictionaryTOpt & InterpolationMap<Ret>
Parameters​
ParameterTypeDescription
localestringThe language to be used.
keystring | string[]The key or keys to retrieve the content from.
defaultValueundefined | stringThe default value to use if the key is not found.
options?TOpt & $DictionaryThe interpolation options.
Returns​

TFunctionReturnOptionalDetails<Ret, TOpt>

The localized content.

The localized content.

Since​

2.0.0

Param​

The language to be used.

Remark​

This function also has additional parameters for key, defaultValue, and options, however TSDoc does not let us document those while matching proper implementation. See the overloads for this method for the documentation on those parameters.

See​

https://www.i18next.com/overview/api#t

Since​

2.0.0

See​

https://www.i18next.com/overview/api#t

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:234


getT()​

getT(locale: string): TFunction<"translation", undefined>

Retrieve a raw TFunction from the passed locale.

Parameters​

ParameterTypeDescription
localestringThe language to be used.

Returns​

TFunction<"translation", undefined>

Since​

1.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:182


init()​

init(): Promise<void>

Initializes the handler by loading in the namespaces, passing the data to i18next, and filling in the InternationalizationHandler#languages.

Returns​

Promise<void>

Since​

1.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:138


reloadResources()​

reloadResources(): Promise<void>

Returns​

Promise<void>

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:315


walkLocaleDirectory()​

private walkLocaleDirectory(directory: string, ns: string): AsyncGenerator<string, any, unknown>

Parameters​

ParameterTypeDescription
directorystringThe directory that should be walked.
nsstringThe current namespace.

Returns​

AsyncGenerator<string, any, unknown>

Description​

Skips any files that don't end with .json.

Since​

3.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:338


walkRootDirectory()​

walkRootDirectory(directory: PathLike): Promise<object>

Parameters​

ParameterTypeDescription
directoryPathLikeThe directory that should be walked.

Returns​

Promise<object>

languages​

languages: string[]

namespaces​

namespaces: string[]

Since​

3.0.0

Defined in​

projects/plugins/packages/i18next/src/lib/InternationalizationHandler.ts:295