Dokončen način oblikovanja datumov za mednarodne strani
Oblike datumov se razlikujejo glede na regijo in jezik, zato je vedno koristno, če lahko najdemo način za prikaz datumov za uporabnike, ki so specifični za njihov jezik in regijo..
Decembra 2012 je ECMA izdala specifikacije API-ja za internacionalizacijo za JavaScript. API internacionalizacije nam pomaga prikazati določene podatke glede na jezik in specifikacijo jezika. Lahko se uporablja za identifikacijo valut, časovnih pasov in več.
V tem postu bomo iskali oblikovanje datuma z uporabo tega API-ja.
Spoznajte uporabnikove nastavitve
Če želite prikazati datum kot prednostni jezik po uporabniku, moramo najprej vedeti, kaj je ta želeni jezik. Trenutno zanesljiv način, da veste, da je vprašati uporabnika; uporabnikom omogočite izbiro želenih nastavitev jezika in regije na spletni strani.
Toda, če to ni možnost, lahko interpretirate Sprejmi jezik
zahtevate glavo ali preberete navigator.language
(za Chrome in Firefox) ali navigator.browserLanguage
vrednosti (za IE).
Vedite, da vse te možnosti ne vrnejo želenega jezika uporabniškega vmesnika brskalnika.
var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // vrne jezikovne oznake, kot je »en-GB«
Preverite API za internacionalizacijo
Če želimo vedeti, ali brskalnik podpira internacionalizacijski API ali ne, lahko preverjamo prisotnost globalnega objekta Intl
.
če (window.hasOwnProperty‹("Intl") && typeof Intl === "predmet") // Prisoten je API internacionalizacije, uporabimo to
The Intl predmet
Intl
je globalni objekt za uporabo API-ja za internacionalizacijo. Ima tri lastnosti, ki so konstruktorji za tri objekte in sicer Zbiralnik
, NumberFormat
, in DateTimeFormat
.
Predmet, ki ga bomo uporabljali, je DateTimeFormat
ki nam bodo pomagali pri formatiranju datuma kot po različnih jezikih.
The DateTimeFormat predmet
The DateTimeFormat
konstruktor vzame dva neobvezna argumenta;
lokacij
- niz ali niz nizov, ki na primer predstavljajo jezikovne oznake; “de” za nemški jezik, “en-GB” za angleščino, ki se uporablja v Združenem kraljestvu. Če jezikovna oznaka ni omenjena, bo privzeta jezikovna nastavitev tista, ki je v času izvajanja.opcije
- objekt, katerega lastnosti se uporabljajo za prilagajanje oblikovalnika. Ima naslednje lastnosti:
Lastnina | Opis | Možne vrednosti |
dan | Dan v mesecu | “2-mestno”, “numerično” |
obdobje | Era datum pade v, Ex: BC | “ozek”, “kratek”, “dolga” |
formatMatcher | Algoritem, uporabljen za ujemanje formatov | “osnovno”, “najbolj ustrezajo”[Privzeto] |
uro | Predstavlja Ure v času | “2-mestno”, “numerično” |
ura12 | Označuje 12-urni format (prav ) ali 24-urni format (false ) | prav , false |
localeMatcher | Algoritem, ki se uporablja za ujemanje področnih nastavitev | “Poglej gor”, “najbolj ustrezajo”[Privzeto] |
minute | Minute časa | “2-mestno”, “numerično” |
mesec | Mesec v letu | “2-mestno”, “numerično”, “ozek”, “kratek”, “dolga” |
drugič | Sekunde v času | “2-mestno”, “numerično” |
časovni pas | Časovni pas, ki ga želite uporabiti | “UTC”, privzeto je časovni pas izvajalnega okolja |
timeZoneName | Časovni pas datuma | “kratek”, “dolga” |
dan v tednu | Dan v tednu | “ozek”, “kratek”, “dolga” |
leto | Leto datuma | “2-mestno”, “numerično” |
Primer:
var formatter = novo Intl.DateTimeFormat ('en-GB'); / * vrne oblikovalnik, ki lahko oblikuje datum v angleškem formatu datuma * /
var options = dan v tednu: 'kratek'; var formatter = novo Intl.DateTimeFormat ('en-GB', možnosti); / * vrne oblikovalnik, ki lahko oblikuje datum v angleškem formatu datuma * skupaj z dnevom v kratkem zapisu, kot je "čet" za četrtek * /
The format funkcijo
Primer primera DateTimeFormat
Objekt ima klic lastnika (getter) format
ki vrne funkcijo, ki formatira a Datum
temelji na lokacij
in opcije
najdete v DateTimeFormat
na primer.
Funkcija sprejme a Datum
predmet ali nedoločeno
kot neobvezni argument in vrne a niz
v želeni obliki zapisa datuma.
Opomba: Če je argument tudi nedoločeno
ali ne, potem vrne vrednost Date.now ()
v želeni obliki zapisa datuma.
Tukaj je sintaksa:
new Intl.DateTimeFormat (). format () // vrne trenutni datum v obliki datuma izvajanja
Zdaj pa kodirajte preprosto oblikovanje datuma.
Spremenimo jezik in vidimo rezultate.
Zdaj je čas, da preučimo možnosti.
The doLocaleDateString metodo
Namesto uporabe oblikovalnika, kot je prikazano v zgornjih primerih, lahko uporabite tudi Date.prototype.toLocaleString
na enak način z lokacij
in opcije
argumenti, so podobni, vendar je priporočljivo uporabiti DateTimeFormat
predmet, ko obravnavate preveč datumov v vaši aplikaciji.
var mydate = new Datum ('2015/04/22'); var options = dan v tednu: "kratek", leto: "numeric", mesec: "dolg", dan: "numeric"; console.log (mydate.toLocaleDateString ('en-GB', možnosti)); // se vrne »Sre, 22. april 2015«
Preverite, ali je lokacij so podprte
Preverjanje podpore lokacij
, lahko uporabimo metodo supportedLocalesOf
od DateTimeFormat
predmet. Vrne matriko vseh podpornih krajev ali prazno polje, če ni podprt noben od krajevnih nastavitev.
Za testiranje dodamo navidezni jezik “blah” na seznamu krajev, ki jih želite preveriti.
console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // vrne polje ["zh", "fa-pes"]
Podpora za brskalnik
Konec aprila 2015 glavni brskalniki podpirajo API za internacionalizacijo.
Reference
- ECMA Mednarodni: Specifikacija API-ja ECMAScript Internationalization
- IANA: Register subtaga jezika
- Norbertov kotiček: API za ECMAScript Internationalization