@mashroom/mashroom-i18n
v2.7.1
Published
Mashroom internationalization service
Downloads
43
Readme
Mashroom I18N
Plugin for Mashroom Server, a Microfrontend Integration Platform.
This plugin adds a service for internationalization. It determines the language from the HTTP headers and supports translation of messages.
Usage
If node_modules/@mashroom is configured as plugin path just add @mashroom/mashroom-i18n as dependency.
After that you can use the service like this:
import type {MashroomI18NService} from '@mashroom/mashroom-i18n/type-definitions';
export default (req: Request, res: Response) => {
const i18nService: MashroomI18NService = req.pluginContext.services.i18n.service;
const currentLang = i18nService.getLanguage(req);
const message = i18nService.getMessage('username', 'de');
// message will be 'Benutzernamen'
// ...
}
You can override the default config in your Mashroom config file like this:
{
"plugins": {
"Mashroom Internationalization Services": {
"availableLanguages": ["en", "de", "fr"],
"defaultLanguage": "en",
"messages": "./messages"
}
}
}
- availableLanguages: A list of available languages (Default: ["en"])
- defaultLanguage: The default language if it can not be determined from the request (Default: en)
- messages: The folder with custom i18n messages (Default: ./messages). There are default messages in the messages folder of this package.
The lookup for message files works like this:
- <messages_folder>/messages.<lang>.json
- <built_in_messages_folder>/messages.<lang>.json
- <messages_folder>/messages.json
- <built_in_messages_folder>/messages.json
And a messages file (e.g. messages.de.json) looks like this:
{
"message_key": "Die Nachricht"
}
Services
MashroomI18NService
The exposed service is accessible through pluginContext.services.i18n.service
Interface:
export interface MashroomI18NService {
/**
* Get the currently set language (for current session)
*/
getLanguage(req: Request): string;
/**
* Set session language
*/
setLanguage(language: string, req: Request): void;
/**
* Get the message for given key and language
*/
getMessage(key: string, language: string): string;
/**
* Get plain string in the current users language from a I18NString
*/
translate(req: Request, str: I18NString): string;
/**
* Get available languages
*/
readonly availableLanguages: Readonly<Array<string>>;
/**
* Get the default languages
*/
readonly defaultLanguage: string;
}