Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/t2ym/i18n-format

Text Formatter with CLDR Plural rules and Gender support for I18N
https://github.com/t2ym/i18n-format

cldr-plural-rules gender i18n plural-categories polymer textformatter

Last synced: 18 days ago
JSON representation

Text Formatter with CLDR Plural rules and Gender support for I18N

Awesome Lists containing this project

README

        

[![Build Status](https://travis-ci.org/t2ym/i18n-format.svg?branch=master)](https://travis-ci.org/t2ym/i18n-format)
[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-format/badge.svg?branch=master&build=39)](https://coveralls.io/github/t2ym/i18n-format?branch=master)
[![npm version](https://badge.fury.io/js/i18n-format.svg)](https://badge.fury.io/js/i18n-format)
[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-format)

## ``

Text formatter with [Unicode CLDR plural rules](http://cldr.unicode.org/index/cldr-spec/plural-rules) and choices (like gender) support.

[Demo](https://t2ym.github.io/i18n-format/components/i18n-format/demo/) and [API Docs](https://www.webcomponents.org/element/t2ym/i18n-format/elements/i18n-format)

### Install

```
npm install i18n-format
```

### Import

```javascript
import "i18n-format/i18n-format.js";
```

### Usage

#### Simple Template Format

```html



{1} element is effective for UI localization with {2}.
i18n-format
parameters


```

This renders as follows:

```html

i18n-format element is effective for UI localization with parameters.


```

#### Compound Template Format

An appropriate template in `json-data` is selected by plural categories, gender, etc.

```html



{
"0": "You ({3}) gave no gifts.",
"1": {
"male": "You ({3}) gave him ({4}) {5}.",
"female": "You ({3}) gave her ({4}) {5}.",
"other": "You ({3}) gave them ({4}) {5}."
},
"one": {
"male": "You ({3}) gave him ({4}) and one other person {5}.",
"female": "You ({3}) gave her ({4}) and one other person {5}.",
"other": "You ({3}) gave them ({4}) and one other person {5}."
},
"other": "You ({3}) gave them ({4}) and {1} other people gifts."
}
{{recipients.length}}
{{recipients.0.gender}}
{{sender.name}}
{{recipients.0.name}}
a gift


```

With these values for the parameters, the template path `.one.female` is selected from ``.

| Parameters | Values |
|:--------------------|:---------|
| lang | 'en' |
| recipients.length | 2 |
| recipients.0.gender | 'female' |
| sender.name | 'James' |
| recipients.0.name | 'Alice' |

So this example renders as follows:

```html

You (James) gave her (Alice) and one other person a gift.


```

[``](https://www.webcomponents.org/element/t2ym/i18n-number) specifies plural categories for
[CLDR plural rules](http://cldr.unicode.org/index/cldr-spec/plural-rules).

### Demo

#### Prerequisite for Building and Serving Demo

```sh
npm install -g polymer-cli
```

#### On-the-fly Build

```sh
# Serve at http://localhost:8080/components/i18n-format/demo/
polymer serve --npm --module-resolution=node -p 8080
```

#### Static Builds

- Build

```sh
polymer build
```

- Targets

| target | browser | minify | bundled |
|:-----:|:-------:|:------:|:-------:|
|build/esm-unbundled|es6,modules|no|no|
|build/esm-bundled |es6,modules|yes|yes|
|build/es6-bundled |es6 |yes|yes|
|build/es5-bundled |es5 |yes|yes|

- Serve

```sh
# Serve at http://localhost:8080/
cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}
python -m SimpleHTTPServer 8080 # or any HTTP(S) server
```

### License

[BSD-2-Clause](https://github.com/t2ym/i18n-format/blob/master/LICENSE.md)