Intl support

The Intl object is the namespace for the ECMAScript Internationalization
API, which provides language sensitive string comparison, number
formatting, and date and time formatting.  It is not yet support in all
modern browsers and is not in lib.d.ts.
This commit is contained in:
Jeffery Grajkowski
2013-07-18 10:59:31 -07:00
parent e1c6346884
commit 4bb981d94c
3 changed files with 193 additions and 0 deletions
+1
View File
@@ -83,6 +83,7 @@ List of Definitions
* [i18next](http://i18next.com/) (by [Maarten Docter](https://github.com/mdocter))
* [iCheck](http://damirfoy.com/iCheck/) (by [Dániel Tar](https://github.com/qcz))
* [Impress.js](https://github.com/bartaz/impress.js) (by [Boris Yankov](https://github.com/borisyankov))
* [Intl](http://www.ecma-international.org/ecma-402/1.0/) (by [Jeffery Grajkowski](http://github.com/pushplay))
* [iScroll](http://cubiq.org/iscroll-4) (by [Boris Yankov](https://github.com/borisyankov))
* [jake](https://github.com/mde/jake) (by [Kon](http://phyzkit.net/))
* [Jasmine](http://pivotal.github.com/jasmine/) (by [Boris Yankov](https://github.com/borisyankov))
+90
View File
@@ -0,0 +1,90 @@
/// <reference path="intl.d.ts" />
// Collator
alert(Intl.Collator.supportedLocalesOf(["ban", "id-u-co-pinyin", "de-ID"], { localeMatcher: "lookup" }).join(", "));
// → "id-u-co-pinyin, de-ID"
// in German, ä sorts with a
alert(new Intl.Collator("de").compare("ä", "z").toString());
// → a negative value
// in Swedish, ä sorts after z
alert(new Intl.Collator("sv").compare("ä", "z").toString());
// → a positive value
// in German, ä has a as the base letter
alert(new Intl.Collator("de", { sensitivity: "base" }).compare("ä", "a").toString());
// → 0
// in Swedish, ä and a are separate base letters
alert(new Intl.Collator("sv", { sensitivity: "base" }).compare("ä", "a").toString());
// → a positive value
var a = ["Offenbach", "Österreich", "Odenwald"];
var collator = new Intl.Collator("de-u-co-phonebk");
a.sort(collator.compare);
alert(a.join(", "));
// → "Odenwald, Österreich, Offenbach"
// DateTimeFormat
alert(Intl.DateTimeFormat.supportedLocalesOf(["ban", "id-u-co-pinyin", "de-ID"], { localeMatcher: "lookup" }).join(", "));
// → "id-u-co-pinyin, de-ID"
// toLocaleString without arguments depends on the implementation,
// the default locale, and the default time zone
alert(new Intl.DateTimeFormat().format(new Date(Date.UTC(2012, 11, 20, 3, 0, 0))));
// → "12/19/2012" if run in en-US locale with time zone America/Los_Angeles
alert(new Intl.DateTimeFormat("sr-RS", { weekday: "long", year: "numeric", month: "long", day: "numeric" }).format(new Date()));
// → "недеља, 7. април 2013."
alert([new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)].map(new Intl.DateTimeFormat("pt-BR", { year: "numeric", month: "long" }).format).join("; "));
// → "setembro de 2012; dezembro de 2012; abril de 2012"
// NumberFormat
alert(Intl.NumberFormat.supportedLocalesOf(["ban", "id-u-co-pinyin", "de-ID"], { localeMatcher: "lookup" }).join(", "));
// → "id-u-co-pinyin, de-ID"
alert(new Intl.NumberFormat("ru-RU", { style: "currency", currency: "RUB" }).format(654321.987));
// → "654 321,99 руб."
alert([123456.789, 987654.321, 456789.123].map(new Intl.NumberFormat("es-ES").format).join("; "));
// → "123.456,789; 987.654,321; 456.789,123"
// German uses comma as decimal separator and period for thousands
alert(new Intl.NumberFormat("de-DE").format(123456.789));
// → 123.456,789
// Arabic in most Arabic speaking countries uses real Arabic digits
alert(new Intl.NumberFormat("ar-EG").format(123456.789));
// → ١٢٣٤٥٦٫٧٨٩
// India uses thousands/lakh/crore separators
alert(new Intl.NumberFormat("en-IN").format(123456.789));
// → 1,23,456.789
// the nu extension key requests a numbering system, e.g. Chinese decimal
alert(new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(123456.789));
// → 一二三,四五六.七八九
// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
alert(new Intl.NumberFormat(["ban", "id"]).format(123456.789));
// → 123.456,789
// request a currency format
alert(new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format(123456.789));
// → 123.456,79 €
// the Japanese yen doesn't use a minor unit
alert(new Intl.NumberFormat("ja-JP", { style: "currency", currency: "JPY" }).format(123456.789))
// → ¥123,457
// limit to three significant digits
alert(new Intl.NumberFormat("en-IN", { maximumSignificantDigits: 3 }).format(123456.789));
// → 1,23,000
+102
View File
@@ -0,0 +1,102 @@
// Type definitions for Intl
// Project: http://www.ecma-international.org/ecma-402/1.0/
// Definitions by: Jeffery Grajkowski <http://github.com/pushplay>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module Intl {
export interface SupportedLocalesOfOptions {
localeMatcher?: string;
}
export interface CollatorOptions {
localeMatcher?: string;
usage?: string;
sensitivity?: string;
ignorePunctuation?: boolean;
numeric?: boolean;
caseFirst?: string;
}
export class Collator {
constructor(locales?: string, options?: CollatorOptions);
constructor(locales?: string[], options?: CollatorOptions);
static supportedLocalesOf(locales: string, options?: SupportedLocalesOfOptions): string[];
static supportedLocalesOf(locales: string[], options?: SupportedLocalesOfOptions): string[];
compare(string1: string, string2: string): number;
resolvedOptions(): {
locale: string;
usage: string;
sensitivity: string;
ignorePunctuation: boolean;
collation: string;
numeric: boolean;
caseFirst: string;
};
}
export interface DateTimeFormatOptions {
localeMatcher?: string;
timeZone?: string;
hour12?: boolean;
formatMatcher?: boolean;
}
export class DateTimeFormat {
constructor(locales?: string, options?: DateTimeFormatOptions);
constructor(locales?: string[], options?: DateTimeFormatOptions);
static supportedLocalesOf(locales: string, options?: SupportedLocalesOfOptions): string[];
static supportedLocalesOf(locales: string[], options?: SupportedLocalesOfOptions): string[];
format(date: Date): string;
resolvedOptions(): {
locale: string;
calendar: string;
numberingSystem: string;
timeZone: string;
hour12?: boolean;
weekday?: string;
era?: string;
year?: string;
month?: string;
day?: string;
hour?: string;
minute?: string;
second?: string;
timeZoneName?: string;
};
}
export interface NumberFormatOptions {
localeMatcher?: string;
style?: string;
currency?: string;
currencyDisplay?: string;
useGrouping?: boolean;
minimumIntegerDigits?: number;
minimumFractionDigits?: number;
maximumFractionDigits?: number;
minimumSignificantDigits?: number;
maximumSignificantDigits?: number;
}
export class NumberFormat {
constructor(locales?: string, options?: NumberFormatOptions);
constructor(locales?: string[], options?: NumberFormatOptions);
static supportedLocalesOf(locales: string, options?: SupportedLocalesOfOptions): string[];
static supportedLocalesOf(locales: string[], options?: SupportedLocalesOfOptions): string[];
format(n: number): string;
resolvedOptions(): {
locale: string;
numberingSystem: string;
style: string;
useGrouping: boolean;
currency?: string;
currencyDisplay?: string;
minimumIntegerDigits?: number;
minimumFractionDigits?: number;
maximumFractionDigits?: number;
minimumSignificantDigits?: number;
maximumSignificantDigits?: number;
}
}
}