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, TFunctionNonStrict<"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): TFunctionNonStrict<"translation", undefined>

Retrieve a raw TFunction from the passed locale.

Parameters

ParameterTypeDescription
localestringThe language to be used.

Returns

TFunctionNonStrict<"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