Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ember-cli-i18n

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ember-cli-i18n

Simple Internationalization support for ember-cli apps.

  • 0.0.6
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Ember CLI i18n

Build

About

Simple Internationalization support for ember-cli apps.

Note: This release requires Ember 1.10.

Install

npm install ember-cli-i18n --save-dev

Usage

Translate

Configuration

In your app's config/environment.js you'll need to set ENV.APP.defaultLocale to a country code:

var ENV = {
  APP: {
    defaultLocale: 'en'
  }
};

defaultLocale is only the fallback. If you wanted to change the locale of the application you should modify your application's locale:

var set = Ember.set;
var application = container.lookup('application:main');
set(application, 'locale', 'fr');

You can can trigger this after authentication, or if the user modifies a language setting in the app. Of course when this state is removed you should clear locale so that internationalization fallback to defaultLocale.

Locale Files

Generate a new locale file:

ember g locale en

The file will be added to app/locales

app
└── locales
    └── en.js

Then export a single POJO:

export default {
  home: {
    title: 'Welcome'
  }
};
Interpolation

You can add keys for interpolation

export default {
  age: 'You are %@1 years old.',
  name: '%@, %@'
};

The rules for interpolation follow the same from Ember.String.fmt

Pluralization

Pluralization keys follow the format from CLDR. For example, for en it expects only the keys one and other:

export default {
  friend: {
    one: 'only one friend, %@2',
    other: '%@ friends, %@'
  }
};

The first value passed will be considered the count for determining how to pluralize.

t('friend', 0, 'Brian');
// 0 friends, Brian

t('friend', 1, 'Brian');
// only one friend, Brian

t('friend', 10, 'Brian');
// 10 friends, Brian

Hyphenated languages will be split and the first half will be used to determine the pluralization rules. So both en-us and en-gb will follow the en rules.

View the currently supported set of pluralization rules.

Helper

You can access the translations in your app with the t helper:

{{t 'home.title'}}

Computed properties for the path are also supported:

{{t age}}

If the value has interpolation keys you can pass those values:

{{t colors colorOne colorTwo}}
Utility

The t function can be used outside of templates as a utility function:

import Ember from 'ember';

export default Ember.Object.extend({
  foo: function() {
    var t = container.lookup('utils:t');
    return t('foo.bar');
  }
});

t is automatically injected into Controllers, Components, Routes, and Models:

export default DS.Model.extend({
  name: function() {
    return this.t('name', 'John', 'Doe');
  }
});

Note that interpolation values can also be passed as an array if you prefer this style. this.t('name', ['John', 'Doe'])

Overriding the Locale Lookup Handler

By default locales are attempted to be looked as modules in your project. However, you may wish to override how this is done. You can do that by overriding the locale lookup handler. Let's assume you have all of your locales stored in a single POJO.

You'll first need to create a new file: my-app/services/i18n.js

import service from 'ember-cli-i18n/services/i18n';

service.getLocalizedPath = function(locale, path) {
  return Locales[locale][path];    
}

export default service;

The default service object that was imported has three functions that can be overridden and customized:

resolveLocale
  • Paramaters: container, scope
  • Returns: locale code
getLocalizedPath
  • Paramaters: locale, path, container, scope
  • Returns: string or object
applyPluralizationRules
  • Paramaters: result, locale, path, container, values, scope
  • Returns: if result is a string, will skip rules and return result. If result is an Object, will assume pluralization needs to apply and formats result with proper pluralization rules based upon values[0]
fmt
  • Paramaters: result, values
  • Returns: formatted string

This function delegates to Ember.String.fmt by default. You can override

Authors

We are very thankful for the many contributors

Versioning

This library follows Semantic Versioning

Want to help?

Please do! We are always looking to improve this gem. Please see our Contribution Guidelines on how to properly submit issues and pull requests.

DockYard, Inc © 2014

@dockyard

Licensed under the MIT license

Keywords

FAQs

Package last updated on 03 Mar 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc