diff options
Diffstat (limited to 'toolkit/components/mozintl/mozIMozIntl.idl')
-rw-r--r-- | toolkit/components/mozintl/mozIMozIntl.idl | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/toolkit/components/mozintl/mozIMozIntl.idl b/toolkit/components/mozintl/mozIMozIntl.idl new file mode 100644 index 0000000000..24830c76c6 --- /dev/null +++ b/toolkit/components/mozintl/mozIMozIntl.idl @@ -0,0 +1,103 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public +* License, v. 2.0. If a copy of the MPL was not distributed with this +* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +/** + * This is a set of APIs that are of general usefulness for user interface + * internationalization. + * + * They're all in various stages of the standardization process through + * ECMA402, so they are exposed to privileged content only but are written + * in the way to allow for easy migration to standard Intl object once + * the appropriate stage of the ECMA402 is achieved. + * + * The exact structure of the code is a little bit complex because of that: + * + * 1) The core is in SpiderMonkey together with other Intl APIs + * + * This allows us to write the code once, stick to the spec language + * of the proposal, reuse our ICU bindings in Spidermonkey and use + * the code to inform us on refining the spec proposal for the given API itself. + * + * 2) The MozIntlHelper API exposes the SpiderMonkey APIs + * + * This helper API allows attaching the new APIs on any regular object. + * + * 3) The MozIntl API provides the access to those APIs + * + * This API exposes the actual functionality and wraps around the MozIntlHelper + * lazily retrieving and setting the accessors. + * On top of that, the API also binds additional functionality like using + * current application locale by default, and fetching OS regional preferences + * for date time format. + */ +[scriptable, uuid(7f63279a-1a29-4ae6-9e7a-dc9684a23530)] +interface mozIMozIntl : nsISupports +{ + jsval getCalendarInfo([optional] in jsval locales); + + /** + * Helper for IntlUtils.webidl, will be removed once Intl.DisplayNames + * supports date-time types in non-privileged code. + */ + jsval getDisplayNamesDeprecated([optional] in jsval locales, [optional] in jsval options); + + + /** + * Returns a list of locale codes for a given type. + * At the moment only type="region" is supported. + * + * Example: + * let codes = getAvailableLocaleDisplayNames("region"); + * codes === ["ar", "ae", "af", ...] + */ + jsval getAvailableLocaleDisplayNames(in jsval type); + + /** + * Returns a list of language names formatted for display. + * + * Example: + * let langs = getLanguageDisplayNames(["pl"], ["fr", "de", "en"]); + * langs === ["Francuski", "Niemiecki", "Angielski"] + */ + jsval getLanguageDisplayNames(in jsval locales, in jsval langCodes); + + /** + * Returns a list of region names formatted for display. + * + * Example: + * let regs = getRegionDisplayNames(["pl"], ["US", "CA", "MX"]); + * regs === ["Stany Zjednoczone", "Kanada", "Meksyk"] + */ + jsval getRegionDisplayNames(in jsval locales, in jsval regionCodes); + + /** + * Returns a list of locale names formatted for display. + * + * Example: + * let locs = getLocaleDisplayNames(["pl"], ["sr-RU", "es-MX", "fr-CA"]); + * locs === ["Serbski (Rosja)", "HiszpaĆski (Meksyk)", "Francuski (Kanada)"] + */ + jsval getLocaleDisplayNames(in jsval locales, in jsval localeCodes, [optional] in jsval options); + + /** + * Returns the assumed script directionality for known Firefox locales. This is + * somewhat crude, but should work until Bug 1750781 lands. + * + * TODO (Bug 1750781) - Callers should use Intl.LocaleInfo once it is standardized (see + * Bug 1693576), rather than maintaining a hardcoded list of RTL locales. + */ + jsval getScriptDirection(in jsval locale); + + readonly attribute jsval Collator; + readonly attribute jsval DateTimeFormat; + readonly attribute jsval DisplayNames; + readonly attribute jsval ListFormat; + readonly attribute jsval Locale; + readonly attribute jsval NumberFormat; + readonly attribute jsval PluralRules; + readonly attribute jsval RelativeTimeFormat; +}; |