Number.prototype.toLocaleString()

To tłumaczenie jest niepełne. Pomóż przetłumaczyć ten artykuł z języka angielskiego

Metoda toLocaleString() zwraca łańcuch znaków przedstawiający dany numer w formacie wybranej lokalizacji.

Nowe argumenty - lokalizacje i opcje - pozwalają na wybranie lokalizacji w jakiej ma zostać przedstawiona liczba. Starsza implementacja, która nie posiadała tych argumentów, zwracała łańcuch znaków zależny od implementacji danego środowiska.

Składnia

numObj.toLocaleString([lokalizacje [, opcje]])

Parametry

W sekcji kompatybilności możesz sprawdzić, które przeglądarki obsługują argumenty lokalizacji i opcji . W sekcji Przykład: Sprawdzanie obsługi argumentów lokalizacji i opcji rozpisane są sposoby na przetestowanie obsługiwanych przez przeglądarkę argumentów tej metody.

Info: ECMAScript Internationalization API, zaimplementowane w Firefoxie 29, dodaje obsługę parametrylokalizacje do metodyNumber.toLocaleString(). Jeśli argument nie zostanie podany (undefined) metoda przyjmię lokalizację systemu operacyjnego. Poprzednie wersje Firefoxa zwracały liczby z lokalizacji Western Arabic. Zmiana zostala zgłoszona jako regresja rzutująca na wsteczną kompatybilność metody, i wkrótce zostanie naprawiona. (błąd 999003)

Zwracana wartość

Łańcuch znaków przedstawiający liczbę w danym formacie.

Przykłady

Przykłady użycia metody toLocaleString

Podstawowy sposób użycia, bez podanych argumentów, zwróci nam łańcuch znaków w domyślnej lokalizacji i z domyślnymi opcjami.

var liczba = 3500;

console.log(liczba.toLocaleString()); // Wyświetli "3 500", jeśli twoją lokalizacją jest „pl-PL”

Sprawdzanie dostępności argumentów lokalizacji i opcji

Nie wszystkie przeglądarki obsługuję argumenty lokalizacji i opcji. Aby to sprawdzić w wersji języka ES5.1 i późniejszych możemy użyć wyjątku RangeError, który zostanie rzucony gdy niepoprawna nazwa lokalizacji zostanie użyta:

function toLocaleStringSupportsLocales() {
  var liczba = 0;
  try {
    liczba.toLocaleString('i');
  } catch (e) {
    return e.name === 'RangeError';
  }
  return false;
}

W wersjach przed ES5.1 nie było obowiązku wyrzucania wyjątku Range Error jeśli metoda toLocaleString została wywołana z argumentami.

Sprawdzenie działające na wszystkich wersjach języka przed 5.1 polega na użyciu funkcjonalności niezbędnych do działania tych argumentów bezpośrednio na Number.prototype.toLocaleString:

function toLocaleStringSupportsOptions() {
  return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function');
}

Sprawdzamy tutaj czy istnieje globalny obiekt Intl, czy nie jest nullem, a także czy posiada właściwość NumberFormat, która jest funkcją.

Przykłady użycia lokalizacji

Przykład ten pokazuje kilka różnych lokalizacji. Aby uzyskać foramt języka interfejsu użytkownika upewnij się, że podajesz tę lokalizację (i dla pewności kilka innych jako fallbacki) przy pomocy aargumentu localizacji:

var liczba = 123456.789;

// Język niemiecki oddziela części dziesiętne przecinkiem, a tysiące kropką
console.log(liczba.toLocaleString('de-DE'));
// → 123.456,789

// W większości krajów arabskich używa cyfr Eastern Arabic
console.log(liczba.toLocaleString('ar-EG'));
// → ١٢٣٤٥٦٫٧٨٩

// Indyjski używa separatorów tysięcy/lakh/crore
console.log(liczba.toLocaleString('en-IN'));
// → 1,23,456.789

// Klucz rozszerzeń „nu” pyta o system numeryczny, np. Chiński system dziesiętny
console.log(liczba.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
// → 一二三,四五六.七八九

// jeśli masz zamiar użyć lokalizacji, która może nie być obsługiwana
// jak np. Balinese, zawsze dodaj drugi lokalizację, tutaj Indonezyjską
console.log(liczba.toLocaleString(['ban', 'id']));
// → 123.456,789

Przykłady użycia opcji

Rezultaty metodytoLocaleString  mogą być dostosowywane przy pomocy argumentu opcje:

var liczba = 123456.789;

// format walutowy
console.log(liczba.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// → 123.456,79 €

// Japoński yen
console.log(liczba.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
// → ¥123,457

// ogranicz wyświetlanie do 3 miejsc znaczących
console.log(liczba.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
// → 1,23,000

// Użyj domyślnego języka hosta z opcjami formatowania liczby
var num = 30000.65;
console.log(num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}));
// → "30,000.65" w języku angielskim lub
// → "30.000,65" w języku niemieckiem lub
// → "30 000,65" w języku francuskim

Wydajność

Jeśli zamierzasz formatować wiele liczb, lepiej użyć obiektu NumberFormat i formatować przy pomocy metody NumberFormat.format.

Specyfikacje

Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Standard Pierwsza definicja. Zaimplementowane w JavaScript 1.5.
ECMAScript 5.1 (ECMA-262)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript (ECMA-262)
The definition of 'Number.prototype.toLocaleString' in that specification.
Living Standard  
ECMAScript Internationalization API 1.0 (ECMA-402)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript Internationalization API 2.0 (ECMA-402)
The definition of 'Number.prototype.toLocaleString' in that specification.
Standard  
ECMAScript Internationalization API (ECMA-402)
The definition of 'Number.prototype.toLocaleString' in that specification.
Living Standard  

Kompatybilność

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toLocaleStringChrome Full support 1Edge Full support 12
Notes
Full support 12
Notes
Notes Before Edge 18, numbers are rounded to 15 decimal digits. For example, (1000000000000005).toLocaleString('en-US') returns "1,000,000,000,000,010".
Firefox Full support 1IE Full support 5
Notes
Full support 5
Notes
Notes In Internet Explorer 11, numbers are rounded to 15 decimal digits. For example, (1000000000000005).toLocaleString('en-US') returns "1,000,000,000,000,010".
Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100
localesChrome Full support 24Edge Full support 12Firefox Full support 29IE Full support 11Opera Full support 15Safari Full support 10WebView Android Full support 4.4Chrome Android Full support 26Firefox Android Full support 56Opera Android Full support 14Safari iOS Full support 10Samsung Internet Android Full support 1.5nodejs Full support 13.0.0
Full support 13.0.0
Partial support 0.12
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. When other locales are specified, the function silently falls back to en-US. To make full ICU (locale) data available for versions prior to 13, see Node.js documentation on the --with-intl option and how to provide the data.
optionsChrome Full support 24Edge Full support 12Firefox Full support 29IE Full support 11Opera Full support 15Safari Full support 10WebView Android Full support 4.4Chrome Android Full support 26Firefox Android Full support 56Opera Android Full support 14Safari iOS Full support 10Samsung Internet Android Full support 1.5nodejs Full support 0.12

Legend

Full support  
Full support
See implementation notes.
See implementation notes.

Zobacz także