README
i18n Plugin
i18n (localization) plugin for Webpack.
Forked from webpack-contrib/i18n-webpack-plugin.
Installation
npm i -D @skroutz/i18n-webpack-plugin
Or
yarn add @skroutz/i18n-webpack-plugin -D
Usage
This plugin creates bundles with translations baked in. So you can serve the translated bundle to your clients.
plugins: [
...
new I18nPlugin(localization, options)
],
localization
: object, a key-value map of localization stringsoptions.isDefaultLocale
: boolean, is this language the default one
Function reference
For functions that use %{dynamicPart}
, you can extend the String
prototype with a supplant method, like so:
String.prototype.supplant = function(o) {
return this.replace(
/%\{([^{}]*)\}/g,
(a, b) => {
const r = o[b];
return (typeof r === 'string' || typeof r === 'number') ? r : a;
}
);
};
Then, you can use the following functions in your code:
Basic translation method __(msgid)
Marks a string as translatable:
__('Hello World!');
To translate a string with dynamic parts:
__('Hello %{username}. Welcome to %{sitename}.').supplant({
username: User.username,
sitename: App.sitename
});
Pluralized translations n__(*msgid, n)
To return the singular or plural form depending on how many you have:
n__('shop', 'shops', shop_count);
Additionally, to include the counter in the translated text:
n__('%{stars_count} star', '%{stars_count} stars', Shop.rating.stars).supplant({
stars_count: Shop.rating.stars
});
Scoped translations s__(msgid)
To provide context to the translation:
s__('Gender|Female');
s__('Formal|Are you sure?');
s__('VolumetricUnit|kg');