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>
/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.
.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.