@mashroom/mashroom-i18n v2.8.1
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 the message for given key and language
     */
    getMessageIfExists(key: string, language: string): string | null;
    /**
     * 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;
}7 months ago
7 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago