/elm-intl

Bindings to JavaScript Internationalization API

Primary LanguageElmBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

elm-intl Build Status

This library contains bindings to the Intl ECMAScript Internationalization API. Including Collator, DateTimeFormat, NumberFormat and PluralRules.

For environments that do not include the Internationalization API, you will need to load a polyfill. Node.js < 4 and Safari < 10 are known to need the polyfill. Some more recent browsers and environments support part of Intl but lack support for PluralRules - if you need this (and not the rest) you can use just the intl-pluralrules polyfill.

Usage

First get a Locale to use:

import Intl.Locale exposing (Locale, fromLanguageTag, en)
import Maybe exposing (withDefault)

appLocale : Locale
appLocale =
  fromLanguageTag "pt-BR"
  |> withDefault en

You may then use it to create a Collator, DateTimeFormat, or NumberFormat:

import Intl.Collator as Collator
import List exposing (sortWith)

localeCompare : String -> String -> Order
localeCompare =
  Collator.fromLocale appLocale
  |> Collator.compare

localeSort : List String -> List String
localeSort =
  sortWith localeCompare
import Intl.DateTimeFormat as DateTimeFormat

formatDate : Date -> String
formatDate =
  DateTimeFormat.fromLocale appLocale
  |> DateTimeFormat.format
import Intl.NumberFormat as NumberFormat

formatNumber : number -> String
formatNumber =
  NumberFormat.fromLocale appLocale
  |> NumberFormat.format

All of the Intl objects can be configured with more detailed options using fromOptions. See the full docs for more details.