ember-gettext

i18n gettext.js wrapper for Ember controllers and Handlebars templates

Usage no npm install needed!

<script type="module">
  import emberGettext from 'https://cdn.skypack.dev/ember-gettext';
</script>

README

ember-gettext

i18n gettext.js wrapper for Ember controllers and Handlebars templates

Installation

  1. Retrieve ember-gettext:
bower install ember-gettext --save
  1. Include it in your project:
<script src="./bower_components/gettext.js/dist/gettext.js"></script>
<script src="./bower_components/ember-gettext/lib/ember-gettext.js"></script>

or in your Brocfile if you use ember-cli.

  1. Load your messages

Wherever it suits in your project, load your messages:

Ember.I18n.loadJSON({...});

Your JSON format must be the gettext.js required one

  1. Set the current locale

You could do it from your dom

<html lang="fr">

or from javascript

i18n.setLocate('fr');

Usage

In your controllers

- Singular forms:
Ember.I18n._t("I like apples.");
Ember.I18n._t("I like {{ fruit }}.", {fruit: "bananas"});
- Plural forms:

You must use a count parameter to indicate gettext which plural form to choose

Ember.I18n._n("There is {{ count }} apple", "There are {{ count }} apples", { count: 42 });
Ember.I18n._n("There is {{ count }} apple in the {{ where }}", "There are {{ count }} apples in the {{ where }}", { count: 12, where: "fridge" });

In your templates

- Singular forms:
<p>{{_t "I like apples." }}</p>
<p>{{_t "I like {{ fruit }}." fruit="bananas" }}</p>
- Plural forms:

You must use a count parameter to indicate gettext which plural form to choose

<p>{{_n "There is {{ count }} apple" "There are {{ count }} apples" count=42 }}</p>
<p>{{_n "There is {{ count }} apple in the {{ where }}" "There are {{ count }} apples in the {{ where }}" count=12 where="fridge" }}</p>
- Binded values

You could of course use binded values to be interpreted and automatically re-rendered

<p>{{_t "Hello {{ firstname }} firstnameBinding="user.firstname" }}</p>
<p>{{_n "There is {{ count }} apple in the {{ where }}" "There are {{ count }} apples in the {{ where }}" countBinding="fruits.count" whereBinding="fruits.container" }}</p>

License

MIT