@aurium/i18n
v0.4.1
Published
Internationalization made simple
Downloads
923
Readme
Internationalization made Simple
The focus of this project is to make the i18n call to look simple, clean and obvious.
Instaling
npm install @aurium/i18n
Usage
var l10nData = {
en: {
some_string: 'Some string.',
has_n_aples: ['There is one apple.', 'There are {num} apples.']
},
pt_br: {
some_string: 'Algum texto.',
has_n_aples: ['Existe uma maçã.', 'Existem {num} maçãs.']
}
}
const i18nBuilder = require('@aurium/i18n')
var i18n = i18nBuilder(l10nData, ['pt-Br', 'es'])
console.log('>> '+ i18n.some_string)
console.log('>> '+ i18n.has_n_aples.plural(5))
Using with Typescript + Vue
/src/i18n/index.ts
import Vue from 'vue'
import i18nBuilder, { i18nProxy, LangData } from '@aurium/i18n'
const l10nData = {
en: require('./l10n.en.js') as LangData,
pt: require('./l10n.pt.js') as LangData
}
const i18n = i18nBuilder(l10nData)
export default i18n
// Allows Vue components to easily access localization results:
Vue.use({
install (_Vue: typeof Vue): void {
Object.defineProperty(_Vue.prototype, 'l10n', {
get: () => i18n
})
}
})
declare module 'vue/types/vue' {
interface Vue {
l10n: i18nProxy;
}
}
/src/main.ts
import Vue from 'vue'
import './i18n'
const app = new Vue({
render: h => h(App)
}).$mount('#app')
/src/components/SomeTest.ts
<template>
<strong>{{l10n.some_string}}</strong>
</template>
<script lang='ts'>
@Component()
export default class SomeTest extends Vue {
...
}
</script>
⚠ You must create localization files (like /src/i18n/l10n.en.js
and /src/i18n/l10n.pt.js
) to get it working. You may like to use the extract-i18n-keys
command to help.
⚠ The localization file format may not fit to your code pattern. If you wont to format this files, you can tell eslint to ignore they. .eslintrc.js
:
module.exports = {
...,
ignorePatterns: ['l10n.*.js'],
rules: { ... },
...
}
Extracting i18n keys from source code
This package provides the extract-i18n-keys
cli, that can find for keys like i18n.some_string
and add this to l10n files. You can run this command to add each new key you just write to the l10n files, without change current ones.
extract-i18n-keys
can write js file modules with occurrences information, or clean json files. You can also change your proxy var name from i18n
to any other and use the -p|--i18n-proxy-name
parameter to inform that.
For more details, read extract-i18n-keys --help
.
Hacking and Contributing
Please, read the contributing page.