fkei / i18nlet

🌐 Internationalization library. (NodeJS, Browser)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🌐 i18nlet

GitHub license Github All Releases GitHub last commit Travis CI

NPM

It is a simple internationalization library. (NodeJS, Browser)



🎡 Features


Named formatting

const messages = {
  en: {
    hello: 'Hello {{name}}',
  },`
});
i18nlet.loads(messages);
var message = i18nlet.i('hello', { name: 'fkei' });
console.log(message);
// -- console panel
> 'Hello fkei'

Named Reference formatting

const message = {
  en: {
    'emoji.happy': ':)',
    hello: 'Hello {{name}} {{emoji.happy}}',
  },`
});

var message = i18nlet.i('hello', { name: 'fkei' });
console.log(message);
// -- console panel
> 'Hello fkei :)'

Hooking of reading langage messages

const i18nlet = new I18nlet().init({
  hook: {
    load: function (langage, terms) {
      // local memory or http request .......
    },
    loads: function (data) {
      // local memory or http request .......
    }
  }
});


πŸ“– Documentation

πŸš€ Install


brower: script tag

Direct Download / CDN

<script src="https://unpkg.com/i18nlet/dist/iife.i18nlet.js"></script>

other release files

NPM

npm install --save i18nlet

bower

bower install i18nlet

Custom Build

You will have to clone directly from GitHub and build i18nlet yourself if you want to use the latest dev build.

git clone https://github.com/fkei/i18nlet.git
npm install
npm run release

---

ε‡ΊεŠ›γƒ•γ‚‘γ‚€γƒ«
β”œβ”€β”€ dist
      β”œβ”€β”€ amd.riot-i18nlet.js
      β”œβ”€β”€ amd.riot-i18nlet.js.map
      β”œβ”€β”€ amd.riot-i18nlet.min.js
      β”œβ”€β”€ cjs.riot-i18nlet.js
      β”œβ”€β”€ es.riot-i18nlet.js
      β”œβ”€β”€ iife.riot-i18nlet.js
      β”œβ”€β”€ iife.riot-i18nlet.js.map
      └── iife.riot-i18nlet.min.js

🏁 Getting started

HTML/JavaScript

<script src="https://unpkg.com/i18nlet/dist/iife.i18nlet.js"></script>

<script>
  var i18nlet = new I18nlet().init();
  i18nlet.loads({
`    ja: {
      'emoji.happy': ':)',
      hello: 'こんにけは {{name}} {{emoji.happy}}',
    },
    en: {
      'emoji.happy': ':)',
      hello: 'Hello {{name}} {{emoji.happy}}',
    },`
  });

  var message = i18nlet.i('hello', { name: 'fkei' });
  console.log(message); // console panel > 'Hello fkei :)'

  var message1 = i18nlet.i('hello', { name: 'fkei' });
  console.log(message1); // console panel > 'こんにけは fkei :)'

</script>


API


Initialize

NodeJS

const I18nlet = require('i18nlet');
const i18nlet = new I18nlet().init(/* settings */);

I18nlet init

  • Arguments : (Object: settings)
    • settings.currentLangage
      • Type: string
      • Description: Default language
      • Default: en
      • Required: false
    • settings.debug
      • Type: boolean
      • Description: debug mode
      • Default: false
      • Required: false
    • settings.variableKeyPrefix
      • Type: string
      • Description: Prefix to use in Named formatting
      • Default: {{
      • Required: false
    • settings.variableKeySuffix
      • Type: string
      • Description: Suffix to use in Named formatting
      • Default: }}
      • Required: false
    • settings.noConvertVariable
      • Type: string
      • Description: Default character string when Named formatting failed
      • Default: null // Display definition as it is
      • Required: false
    • settings.reference
      • Type: boolean
      • Description: Use Named Reference formatting by default
      • Default: true
      • Required: false
    • settings.defaultText
      • Type: string
      • Description: String to be returned in undefined case
      • Default: '' // empty string
      • Required: false
    • settings.getMessageFunctionName
      • Type: string
      • Description: Specify the function name to get the message
      • Default: i // ex. i18n.i('hello');
      • Required: false
    • settings.output
      • Type: function
      • Description: Log output function
      • Default: console.log. see source code: _output(...)
      • Required: false
    • settings.hook.load
      • Type: function
      • Description: Function hooking language messages
      • Default: see source code: defaultLoad(...)
      • Required: false
    • settings.hook.loads
      • Type: function
      • Description: Function hooking language's messages
      • Default: see source code: defaultLoads(...)
      • Required: false

I18nlet properties

  • VERSION
    • Type: String
    • Description: i18n version
  • store
    • Type: Object
    • Description: Message list store by language.
    • Format: {en: {hello: 'Hello!'}, ja: 'hello': 'こんにけは' ....}
  • regexpStr
    • Type: String
    • Description: Regular expression(string) to find Named formatting dynamic variable
    • Scope: private
  • regexp
    • Type: RegExp
    • Description: Regular expression(RegExp) to find Named formatting dynamic variable
    • Scope: private
  • logger.debug
    • Type: function
    • Description: debug log output
  • logger.error
    • Type: function
    • Description: error log output
  • settings
    • See : I18nlet.init(settigns)
  • logger.output
    • See : I18nlet.init(settigns)
  • hook.load
    • See : I18nlet.init(settigns)
  • hook.loads
    • See : I18nlet.init(settigns)

I18nlet methods

  • load
    • Description: Read language messages
    • Scope: public
  • loads
    • Description: Read multiple language messages
    • Scope: public
  • changeLangage
    • Description: Change default language
    • Scope: public
  • currentLangage
    • Description: Get default language
    • Scope: public

πŸ“œ Releases


Detailed changes for each release are documented in the releases.



Develop


eslint

npm run lint

test (build, mocha and karma)

npm test

build

# build
npm run build

# build and uglify
npm run release

debug

# mocha
npm run mocha-dev

# karma
npm run karma-dev


©️ License


MIT

About

🌐 Internationalization library. (NodeJS, Browser)

License:MIT License


Languages

Language:JavaScript 100.0%