@simplyhexagonal/i18n
v1.2.2
Published
i18next wrapper for use as an esbuild / ViteJS plugin or as a stand-alone dependency
Downloads
569
Readme
Simply Hexagonal i18n
i18next wrapper for use as an esbuild / ViteJS plugin or as a stand-alone dependency.
Open source notice
This project is open to updates by its users, I ensure that PRs are relevant to the community. In other words, if you find a bug or want a new feature, please help us by becoming one of the contributors ✌️ ! See the contributing section
Like this module? ❤
Please consider:
- Buying me a coffee ☕
- Supporting Simply Hexagonal on Open Collective 🏆
- Starring this repo on Github 🌟
Install
pnpm i -D
# or
yarn add -D
# or
npm install -D
Config
import I18N from '@simplyhexagonal/i18n';
import en from './i18n/en.json';
import es from './i18n/es.json';
// etc..
const i18n = new I18N({
resources: {
...en,
...es,
// etc...
}
});
Usage
With esbuild:
await i18n.changeLanguage('en');
const esbuildConfig: BuildOptions = {
entryPoints: [/* ... */],
outfile: '...',
bundle: true,
minify: isProduction,
plugins: [
i18n.plugins.esbuild,
],
};
build(esbuildConfig);
With Vite:
await i18n.changeLanguage('en');
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
i18n.plugins.vite,
],
});
Stand-alone:
await i18n.initPromise;
await i18n.changeLanguage('en');
const template = fs.readFileSync('./template.html').toString();
const result = i18n.apply(template);
// do something with result
Template usage and configuration
In your templates use the __('key')
notation:
<h1>__('hello')</h1>
If you would like to change the notation, you can set your own custom regular exression to find the i18n keys within your templates:
const i18n = new I18N(
{
resources: {
...en,
...es,
},
},
[
/\{\{([^\{\}]+?)\}\}/g,
],
);
The key is expected to always be the first matching group (i.e. whatever is matched within the first set of parenthesis in your regex).
NOTE: you can define multiple regexes.
Then in your template:
<h1>{{hello}}</h1>
Contributing
Yes, thank you! This plugin is community-driven, most of its features are from different authors.
Please update the docs and tests and add your name to the package.json
file.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
License
Copyright (c) 2021-Present Simply Hexagonal i18n Contributors. Licensed under the Apache License 2.0.