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

Source

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

Properties

backendOptions

protected readonly backendOptions: Options<object>

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

Since

1.0.0

Source

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


fetchLanguage()

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

The method to be overridden by the developer.

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';
};

Parameters

ParameterType
contextInternationalizationContext

Returns

Awaitable<null | string>

Source

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


languages

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

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

Since

1.0.0

Source

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


languagesDirectory

readonly languagesDirectory: string

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

Since

1.2.0

Source

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


languagesLoaded

languagesLoaded: boolean = false

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

Since

1.0.0

Source

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


namespaces

namespaces: Set<string>

A Set of initially loaded namespaces.

Since

1.2.0

Source

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


options

readonly options: InternationalizationOptions

The options InternationalizationHandler was initialized with in the client.

Since

1.0.0

Source

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

Methods

format()

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 parameterValue
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.

Since

2.0.0

See

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

Source

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

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 parameterValue
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.

Since

2.0.0

See

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

Source

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

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 parameterValue
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.

Since

2.0.0

See

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

Source

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


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

Source

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


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

Source

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


reloadResources()

reloadResources(): Promise<void>

Returns

Promise<void>

Source

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


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

Source

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


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

Source

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