TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | Apache 2 |
ReleasedLast Release | Nov 2016 |
Maintained by Holly Schinsky, Shazron Abdullah.
title: Globalization
Android | iOS | Windows 8.1 Store | Windows 8.1 Phone | Windows 10 Store | Travis CI |
---|---|---|---|---|---|
This plugin obtains information and performs operations specific to the user's locale, language, and timezone. Note the difference between locale and language: locale controls how numbers, dates, and times are displayed for a region, while language determines what language text appears as, independently of locale settings. Often developers use locale to set both settings, but there is no reason a user couldn't set her language to "English" but locale to "French", so that text is displayed in English but dates, times, etc., are displayed as they are in France. Unfortunately, most mobile platforms currently do not make a distinction between these settings.
This plugin defines global navigator.globalization
object.
Although in the global scope, it is not available until after the deviceready
event.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(navigator.globalization);
}
Report issues with this plugin on the Apache Cordova issue tracker
cordova plugin add cordova-plugin-globalization
Get the BCP 47 language tag for the client's current language.
navigator.globalization.getPreferredLanguage(successCallback, errorCallback);
Returns the BCP-47 compliant language identifier tag to the successCallback
with a properties
object as a parameter. That object should have a value
property with a String
value.
If there is an error getting the language, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.UNKNOWN_ERROR
.
When the browser is set to the en-US
language, this should display a
popup dialog with the text language: en-US
:
navigator.globalization.getPreferredLanguage(
function (language) {alert('language: ' + language.value + '\n');},
function () {alert('Error getting language\n');}
);
Returns the BCP 47 compliant tag for the client's current locale setting.
navigator.globalization.getLocaleName(successCallback, errorCallback);
Returns the BCP 47 compliant locale identifier string to the successCallback
with a properties
object as a parameter. That object should have a value
property with a String
value. The locale tag will consist of a two-letter lower
case language code, two-letter upper case country code, and (unspecified) variant
code, separated by a hyphen.
If there is an error getting the locale, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.UNKNOWN_ERROR
.
When the browser is set to the en-US
locale, this displays a popup
dialog with the text locale: en-US
.
navigator.globalization.getLocaleName(
function (locale) {alert('locale: ' + locale.value + '\n');},
function () {alert('Error getting locale\n');}
);
navigator.globalization.getPreferredLanguage()
.Returns a date formatted as a string according to the client's locale and timezone.
navigator.globalization.dateToString(date, successCallback, errorCallback, options);
Returns the formatted date String
via a value
property accessible
from the object passed as a parameter to the successCallback
.
The inbound date
parameter should be of type Date
.
If there is an error formatting the date, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.FORMATTING_ERROR
.
The options
parameter is optional, and its default values are:
{formatLength:'short', selector:'date and time'}
The options.formatLength
can be short
, medium
, long
, or full
.
The options.selector
can be date
, time
or date and time
.
If the browser is set to the en_US
locale, this displays a popup
dialog with text similar to date: 9/25/2012 4:21PM
using the default
options:
navigator.globalization.dateToString(
new Date(),
function (date) { alert('date: ' + date.value + '\n'); },
function () { alert('Error getting dateString\n'); },
{ formatLength: 'short', selector: 'date and time' }
);
formatLength
options are a subset of Unicode
UTS #35. The default option
short
depends on a user selected date format within
Settings -> System -> Date & time -> Choose date format
,
which provide a year
pattern only with 4 digits, not 2 digits.
This means that it is not completely aligned with
ICU.The formatLength
option supports only short
and full
values.
The pattern for 'date and time' selector is always a full datetime format.
The returned value may be not completely aligned with ICU depending on a user locale.
The formatLength
option supports only short
and full
values.
The pattern for 'date and time' selector is always a full datetime format.
The returned value may be not completely aligned with ICU depending on a user locale.
Only 79 locales are supported because moment.js is used in this method.
The returned value may be not completely aligned with ICU depending on a user locale.
time
selector supports full
and short
formatLength only.
formatLength
is not distinguishing long
and full
long
or full
version)Returns a pattern string to format and parse currency values according to the client's user preferences and ISO 4217 currency code.
navigator.globalization.getCurrencyPattern(currencyCode, successCallback, errorCallback);
Returns the pattern to the successCallback
with a properties
object
as a parameter. That object should contain the following properties:
pattern: The currency pattern to format and parse currency values. The patterns follow Unicode Technical Standard #35. (String)
code: The ISO 4217 currency code for the pattern. (String)
fraction: The number of fractional digits to use when parsing and formatting currency. (Number)
rounding: The rounding increment to use when parsing and formatting. (Number)
decimal: The decimal symbol to use for parsing and formatting. (String)
grouping: The grouping symbol to use for parsing and formatting. (String)
The inbound currencyCode
parameter should be a String
of one of
the ISO 4217 currency codes, for example 'USD'.
If there is an error obtaining the pattern, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.FORMATTING_ERROR
.
When the browser is set to the en_US
locale and the selected
currency is United States Dollars, this example displays a popup
dialog with text similar to the results that follow:
navigator.globalization.getCurrencyPattern(
'USD',
function (pattern) {
alert('pattern: ' + pattern.pattern + '\n' +
'code: ' + pattern.code + '\n' +
'fraction: ' + pattern.fraction + '\n' +
'rounding: ' + pattern.rounding + '\n' +
'decimal: ' + pattern.decimal + '\n' +
'grouping: ' + pattern.grouping);
},
function () { alert('Error getting pattern\n'); }
);
Expected result:
pattern: $#,##0.##;($#,##0.##)
code: USD
fraction: 2
rounding: 0
decimal: .
grouping: ,
Returns an array of the names of the months or days of the week, depending on the client's user preferences and calendar.
navigator.globalization.getDateNames(successCallback, errorCallback, options);
Returns the array of names to the successCallback
with a
properties
object as a parameter. That object contains a value
property with an Array
of String
values. The array features names
starting from either the first month in the year or the first day of
the week, depending on the option selected.
If there is an error obtaining the names, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.UNKNOWN_ERROR
.
The options
parameter is optional, and its default values are:
{type:'wide', item:'months'}
The value of options.type
can be narrow
or wide
.
The value of options.item
can be months
or days
.
When the browser is set to the en_US
locale, this example displays
a series of twelve popup dialogs, one per month, with text similar to
month: January
:
navigator.globalization.getDateNames(
function (names) {
for (var i = 0; i < names.value.length; i++) {
alert('month: ' + names.value[i] + '\n');
}
},
function () { alert('Error getting names\n'); },
{ type: 'wide', item: 'months' }
);
options.type
supports a genitive
value, important for some languages.Returns a pattern string to format and parse dates according to the client's user preferences.
navigator.globalization.getDatePattern(successCallback, errorCallback, options);
Returns the pattern to the successCallback
. The object passed in as
a parameter contains the following properties:
pattern: The date and time pattern to format and parse dates. The patterns follow Unicode Technical Standard #35. (String)
timezone: The abbreviated name of the time zone on the client. (String)
utc_offset: The current difference in seconds between the client's time zone and coordinated universal time. (Number)
dst_offset: The current daylight saving time offset in seconds between the client's non-daylight saving's time zone and the client's daylight saving's time zone. (Number)
If there is an error obtaining the pattern, the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.PATTERN_ERROR
.
The options
parameter is optional, and defaults to the following values:
{formatLength:'short', selector:'date and time'}
The options.formatLength
can be short
, medium
, long
, or
full
. The options.selector
can be date
, time
or date and
time
.
When the browser is set to the en_US
locale, this example displays
a popup dialog with text such as pattern: M/d/yyyy h:mm a
:
function checkDatePattern() {
navigator.globalization.getDatePattern(
function (date) { alert('pattern: ' + date.pattern + '\n'); },
function () { alert('Error getting pattern\n'); },
{ formatLength: 'short', selector: 'date and time' }
);
}
The formatLength
supports only short
and full
values.
The pattern
for date and time
pattern returns only full datetime format.
The timezone
returns the full time zone name.
The dst_offset
property is not supported, and always returns zero.
The pattern may be not completely aligned with ICU depending on a user locale.
The formatLength
supports only short
and full
values.
The pattern
for date and time
pattern returns only full datetime format.
The timezone
returns the full time zone name.
The dst_offset
property is not supported, and always returns zero.
The pattern may be not completely aligned with ICU depending on a user locale.
The 'pattern' property is not supported and returns empty string.
Only Chrome returns 'timezone' property. Its format is "Part of the world/{City}". Other browsers return empty string.
Returns the first day of the week according to the client's user preferences and calendar.
navigator.globalization.getFirstDayOfWeek(successCallback, errorCallback);
The days of the week are numbered starting from 1, where 1 is assumed
to be Sunday. Returns the day to the successCallback
with a
properties
object as a parameter. That object should have a value
property with a Number
value.
If there is an error obtaining the pattern, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.UNKNOWN_ERROR
.
When the browser is set to the en_US
locale, this displays a
popup dialog with text similar to day: 1
.
navigator.globalization.getFirstDayOfWeek(
function (day) {alert('day: ' + day.value + '\n');},
function () {alert('Error getting day\n');}
);
Returns a pattern string to format and parse numbers according to the client's user preferences.
navigator.globalization.getNumberPattern(successCallback, errorCallback, options);
Returns the pattern to the successCallback
with a properties
object
as a parameter. That object contains the following properties:
pattern: The number pattern to format and parse numbers. The patterns follow Unicode Technical Standard #35. (String)
symbol: The symbol to use when formatting and parsing, such as a percent or currency symbol. (String)
fraction: The number of fractional digits to use when parsing and formatting numbers. (Number)
rounding: The rounding increment to use when parsing and formatting. (Number)
positive: The symbol to use for positive numbers when parsing and formatting. (String)
negative: The symbol to use for negative numbers when parsing and formatting. (String)
decimal: The decimal symbol to use for parsing and formatting. (String)
grouping: The grouping symbol to use for parsing and formatting. (String)
If there is an error obtaining the pattern, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.PATTERN_ERROR
.
The options
parameter is optional, and default values are:
{type:'decimal'}
The options.type
can be decimal
, percent
, or currency
.
When the browser is set to the en_US
locale, this should display a
popup dialog with text similar to the results that follow:
navigator.globalization.getNumberPattern(
function (pattern) {alert('pattern: ' + pattern.pattern + '\n' +
'symbol: ' + pattern.symbol + '\n' +
'fraction: ' + pattern.fraction + '\n' +
'rounding: ' + pattern.rounding + '\n' +
'positive: ' + pattern.positive + '\n' +
'negative: ' + pattern.negative + '\n' +
'decimal: ' + pattern.decimal + '\n' +
'grouping: ' + pattern.grouping);},
function () {alert('Error getting pattern\n');},
{type:'decimal'}
);
Results:
pattern: #,##0.###
symbol: .
fraction: 0
rounding: 0
positive:
negative: -
decimal: .
grouping: ,
The pattern
property is not supported, and returns an empty string.
The fraction
property is not supported, and returns zero.
pattern
property is not supported, and returns an empty string.pattern
.Indicates whether daylight savings time is in effect for a given date using the client's time zone and calendar.
navigator.globalization.isDayLightSavingsTime(date, successCallback, errorCallback);
Indicates whether or not daylight savings time is in effect to the
successCallback
with a properties
object as a parameter. That object
should have a dst
property with a Boolean
value. A true
value
indicates that daylight savings time is in effect for the given date,
and false
indicates that it is not.
The inbound parameter date
should be of type Date
.
If there is an error reading the date, then the errorCallback
executes. The error's expected code is GlobalizationError.UNKNOWN_ERROR
.
During the summer, and if the browser is set to a DST-enabled
timezone, this should display a popup dialog with text similar to
dst: true
:
navigator.globalization.isDayLightSavingsTime(
new Date(),
function (date) {alert('dst: ' + date.dst + '\n');},
function () {alert('Error getting names\n');}
);
Returns a number formatted as a string according to the client's user preferences.
navigator.globalization.numberToString(number, successCallback, errorCallback, options);
Returns the formatted number string to the successCallback
with a
properties
object as a parameter. That object should have a value
property with a String
value.
If there is an error formatting the number, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.FORMATTING_ERROR
.
The options
parameter is optional, and its default values are:
{type:'decimal'}
The options.type
can be decimal
, percent
, or currency
.
When the browser is set to the en_US
locale, this displays a popup
dialog with text similar to number: 3.142
:
navigator.globalization.numberToString(
3.1415926,
function (number) {alert('number: ' + number.value + '\n');},
function () {alert('Error getting number\n');},
{type:'decimal'}
);
Windows 8.0 does not support number rounding, therefore values will not be rounded automatically.
On Windows 8.1 and Windows Phone 8.1 fractional part is being truncated instead of rounded in case of percent
number type therefore fractional digits count is set to 0.
percent
numbers are not grouped as they can't be parsed in stringToNumber if grouped.
currency
type is not supported.Parses a date formatted as a string, according to the client's user preferences and calendar using the time zone of the client, and returns the corresponding date object.
navigator.globalization.stringToDate(dateString, successCallback, errorCallback, options);
Returns the date to the success callback with a properties
object as
a parameter. That object should have the following properties:
year: The four digit year. (Number)
month: The month from (0-11). (Number)
day: The day from (1-31). (Number)
hour: The hour from (0-23). (Number)
minute: The minute from (0-59). (Number)
second: The second from (0-59). (Number)
millisecond: The milliseconds (from 0-999), not available on all platforms. (Number)
The inbound dateString
parameter should be of type String
.
The options
parameter is optional, and defaults to the following
values:
{formatLength:'short', selector:'date and time'}
The options.formatLength
can be short
, medium
, long
, or
full
. The options.selector
can be date
, time
or date and
time
.
If there is an error parsing the date string, then the errorCallback
executes with a GlobalizationError
object as a parameter. The
error's expected code is GlobalizationError.PARSING_ERROR
.
When the browser is set to the en_US
locale, this displays a
popup dialog with text similar to month:8 day:25 year:2012
. Note
that the month integer is one less than the string, as the month
integer represents an array index.
navigator.globalization.stringToDate(
'9/25/2012',
function (date) {alert('month:' + date.month +
' day:' + date.day +
' year:' + date.year + '\n');},
function () {alert('Error getting date\n');},
{selector: 'date'}
);
The formatLength
option supports only short
and full
values.
The pattern for 'date and time' selector is always a full datetime format.
The inbound dateString
parameter should be formed in compliance with a pattern returned by getDatePattern.
This pattern may be not completely aligned with ICU depending on a user locale.
The formatLength
option supports only short
and full
values.
The pattern for 'date and time' selector is always a full datetime format.
The inbound dateString
parameter should be formed in compliance with a pattern returned by getDatePattern.
This pattern may be not completely aligned with ICU depending on a user locale.
Only 79 locales are supported because moment.js is used in this method.
Inbound string should be aligned with dateToString
output format and may not completely aligned with ICU depending on a user locale.
time
selector supports full
and short
formatLength only.
Parses a number formatted as a string according to the client's user preferences and returns the corresponding number.
navigator.globalization.stringToNumber(string, successCallback, errorCallback, options);
Returns the number to the successCallback
with a properties
object
as a parameter. That object should have a value
property with a
Number
value.
If there is an error parsing the number string, then the
errorCallback
executes with a GlobalizationError
object as a
parameter. The error's expected code is
GlobalizationError.PARSING_ERROR
.
The options
parameter is optional, and defaults to the following
values:
{type:'decimal'}
The options.type
can be decimal
, percent
, or currency
.
When the browser is set to the en_US
locale, this should display a
popup dialog with text similar to number: 1234.56
:
navigator.globalization.stringToNumber(
'1234.56',
function (number) {alert('number: ' + number.value + '\n');},
function () {alert('Error getting number\n');},
{type:'decimal'}
);
percent
type the returned value is not divided by 100.The string must strictly conform to the locale format. For example, percent symbol should be separated by space for 'en-US' locale if the type parameter is 'percent'.
percent
numbers must not be grouped to be parsed correctly.
An object representing a error from the Globalization API.
GlobalizationError.UNKNOWN_ERROR
: 0GlobalizationError.FORMATTING_ERROR
: 1GlobalizationError.PARSING_ERROR
: 2GlobalizationError.PATTERN_ERROR
: 3This object is created and populated by Cordova, and returned to a callback in the case of an error.
When the following error callback executes, it displays a
popup dialog with the text similar to code: 3
and message:
function errorCallback(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
};