0.0.2 • Published 8 years ago

catbee-i18n-handlebars v0.0.2

Weekly downloads
6
License
MIT
Repository
github
Last release
8 years ago

catbee-i18n-handlebars

Build Status Code Coverage

Handlebars i18n helpers

  const i18nHelpers = require('catbee-i18n-handlebars');
  i18nHelpers.register(serviceLocator); // expect handlebars in serviceLocator

Four helpers for usage in .hbs .handlebars templates

  • {{ _t "Your name" }} - Simple translate
  • {{ _pt "Translate context" "Your name" }} - Simple translate with context
  • {{ _nt "Apple" "Apples" count }} - Translate with plural form
  • {{ _npt "Translate context" "Apple" "Apples" count }} - Translate with plural form and context

Example

Helpers get translates from @root.l10n and variables (${name}) for replace in string from current this context

template

  {{#each names}}
    <div class="Text">{{ _t "Your name ${name}" }}</div>
  {{/each}}

with context

  // template context
  const ctx = {
    l10n: {
      "": {
        "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"
      },
      "Your name ${var}": [ null, "Vaše jméno ${name}"],
    },
    names: [
      { name: 'Jack' }
      { name: 'Ion' }
      { name: 'Bit' }
    ]
  };

have output:

Vaše jméno Jack
Vaše jméno Ion
Vaše jméno Bit

config

Service get config from serviceLocator and use config.i18n property.

config = { // default config
  i18n: {
    // po2json default glue symbol to concat context and str
    glue: '\u0004',
    // plural form for your application default language
    plural: 'nplurals=1; plural=0;',
    // name of property with po2json object in ctx object
    context: 'l10n'
  }
};

Errors

All errors in i18n helpers will be emitted to catbee eventBus:

  eventBus.emit('error', error);