Skip to content
This repository was archived by the owner on Mar 31, 2023. It is now read-only.

opendevtools/rescript-intl

Repository files navigation

DEPRECATED: Use bindings from rescript-core instead.

rescript-intl

npm (scoped)

rescript-intl helps you with date, number and currency formatting in ReScript. Everything is built on top of Intl which comes built-in with browsers >= IE11 as well as Node.

Get started

npm install @opendevtools/rescript-intl

Add rescript-intl in bsconfig.json

{
  "dependencies": ["@opendevtools/rescript-intl"]
}

Examples

DateTime

let today = Intl.DateTime.make(~locale=Some("sv"), ());
// today: string = "2020-03-18"

with custom date

let date = Js.Date.makeWithYMD(~year=2020., ~month=11., ~date=12., ());

let futureDate = Intl.DateTime.make(~date, ~locale=Some("sv"), ());
// futureDate: string = "2020-12-12"

with date as string

let futureDate = Intl.DateTime.makeFromString(~date="2020-11-12", ~locale=Some("sv"), ());
// futureDate: string = "2020-11-12"

and with some options

let today =
  Intl.DateTime.make(
    ~locale=Some("sv"),
    ~options=
      Options.make(
        ~year=Some(#numeric),
        ~weekday=Some(#long),
        ~day=Some(#"2-digit"),
        ~era=Some(#narrow),
        ~month=Some(#long),
        (),
      ),
    (),
  );
// today: string = "onsdag 18 mars 2020 e.Kr".

NumberFormat

Currency

let krona =
  Intl.NumberFormat.Currency.make(
    ~value=1000.,
    ~currency="SEK",
    ~locale=Some("sv"),
    (),
  );
// krona: string = "1 000,00 kr"

Decimal

let parsedNumber =
  Intl.NumberFormat.Decimal.make(~value=1000., ~locale=Some("sv"), ());
// parsedNumber: string = "1 000,00"

Percent

let percent =
  Intl.NumberFormat.Percent.make(~value=0.3456., ~locale=Some("sv"), ());
// percent: string = "34,56 %"

ListFormat

// And based lists (default, #type = #conjunction) in Swedish
let data =
  Intl.ListFormat.make(["Cat", "Tiger", "Lion"], ~locale=Some("sv"), ());
// data: string = "Cat, Tiger och Lion"

// Or based lists
let data =
  Intl.ListFormat.make(["Cat", "Tiger", "Lion"],
  ~options=Options.make(~type_=Some(#disjunction), ()), ());
// data: string = "Cat, Tiger, or Lion"

// Unit based lists
let data =
  Intl.ListFormat.make(["Cat", "Tiger", "Lion"],
  ~options=Options.make(~type_=Some(#unit), ()), ());
// data: string = "Cat, Tiger, Lion"

let data =
  Intl.ListFormat.make(["Cat", "Tiger", "Lion"],
  ~options=Options.make(~type_=Some(#unit), ~style=Some(#narrow), ()), ());
// data: string = "Cat Tiger Lion"

Short, #short, and narrow, #narrow, styles are only available for #unit type. If you pass in any other type than #unit with those styles, the library takes care of it and changes the type to #unit.

Node

Node 13 added full ICU support and there should be no issues with wrong formatting. If you need to run a Node version before 13 it only has support for en-US locale by default. If your code is failing with wrong formatting you'll need to install full locale support using:

npm install -g full-icu

The installer will print out what you need to set the environment variable NODE_ICU_DATA to in order to get full support.

About

ReScript wrapper on top of JavaScript's Intl

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy