npm

@aurium/i18n
TypeScript icon, indicating that this package has built-in type declarations

0.4.1 • Public • Published

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.

Readme

Keywords

Package Sidebar

Install

npm i @aurium/i18n

Weekly Downloads

226

Version

0.4.1

License

MIT

Unpacked Size

28.2 kB

Total Files

10

Last publish

Collaborators

  • aurium