I18N with built-in pluralize and format funcionality for many languages

Usage no npm install needed!

<script type="module">
  import ezI18n from 'https://cdn.skypack.dev/ez-i18n';




  • Requires only one external module
  • Contains built-in formatter support (For strings and objects)
  • Plural support for 30 languages!
  • Very fast
  • Translations stored in .yml files

Basic example

  • Create a folder for translations (E.g 'i18n')
  • Create a file with all strings in it, E.g file en.yml
hello: Hello, {who}!
msgCount: You have {count} %message&{count}%

        - message
        - messages
  • Then init module in your app:
const ez_i18n = require('ez-i18n');
const translator = new ez_i18n({
 * Syntax for that command is 
 *   ez_i18n(<options>);
 * Options object contain these keys:
 * langDir <STRING> - directory, where translations are stored
 * encoding <STRING> - encoding for translation files (Optional, defaults to UTF-8)
 * warns <BOOL> - show a warnings for missing translations? (Optional, defaults to false)
 * debug <BOOL> - show a debug info. Dont use it. (Optional, defaults to false)
 * returns <FUNCTION>
  • Create a translator for a specified language:
const _ = translator('en');
 * Syntax for that command is 
 * translator(<lang>)
 * lang <STRING> - language to use, e.g 'en'
 * returns <FUNCTION>
  • And use it:
console.log(_('hello', {who: 'world'}));
// Hello, world!
console.log(_('msgCount', {count: 1}));
// You have 1 message
console.log(_('msgCount', {count: 2}));
// You have 2 messages

Format string

Syntax is %{string} or %{num}
If num used, then function uses params passed to function:
  E.g: _('str','test1','test2','test3')
    %{1} will be 'test1'
    %{2} will be 'test2'
    %{3} will be 'test3'

Othervise strings from object will be used:
  E.g: _('str',{test1:'test2',test3:'test4',test5:'test6'})
    %{test1} will be 'test2'
    %{test3} will be 'test4'
    %{test5} will be 'test6'


Syntax is #{string,count}


Syntax is ${string}

Test results

      ✓ should start correctly
      ✓ should return translator function
      ✓ should return correct string for every language
      ✓ should return correct templated string for all arguments
      ✓ should return correct templated string for data object
      ✓ should correctly pluralize a string for all languages
      ✓ can work for yml structures

  7 passing (8ms)