Domovská » Kódování » Definitivní způsob, jak formátovat data pro mezinárodní stránky

    Definitivní způsob, jak formátovat data pro mezinárodní stránky

    Formáty data se liší podle regionu a jazyka, takže je vždy užitečné, pokud můžeme najít způsob, jak zobrazit data uživatelům, která jsou specifická pro jejich jazyk a region..

    V prosinci 2012 vydala agentura ECMA specifikace rozhraní API pro internacionalizaci jazyka JavaScript. Internacionalizační API nám pomáhá zobrazovat určitá data podle jazykové a jazykové specifikace. Může být zvyklý identifikovat měny, časové zóny a více.

    V tomto příspěvku se podíváme do formátování data pomocí tohoto API.

    Znát národní prostředí uživatele

    Chcete-li zobrazit datum podle preferovaného národního prostředí uživatele, musíme nejprve zjistit, jaké je preferované národní prostředí. V současné době je spolehlivý způsob, jak vědět, že je požádat uživatele; umožnit uživatelům vybrat preferované nastavení jazyka a oblasti na webové stránce.

    Pokud to však není možnost, můžete interpretovat Přijmout-jazyk nebo číst navigator.language(pro Chrome a Firefox) nebo navigator.browserLanguage(pro IE) hodnoty.

    Vezměte prosím na vědomí, že ne všechny tyto možnosti vrátí preferovaný jazyk uživatelského rozhraní prohlížeče.

     var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // vrátí tagy jazyka jako 'en-GB' 

    Zkontrolujte rozhraní API pro internacionalizaci

    Chcete-li vědět, zda prohlížeč podporuje rozhraní API pro internacionalizaci nebo ne, můžeme zkontrolovat přítomnost globálního objektu Intl.

     if (window.hasOwnPropertyâ €‹("Intl") && typeof Intl === "object") // Internacionalizační API je přítomno, použijte nás 

    Intl objekt

    Intl je globální objekt pro použití API pro internacionalizaci. To má tři vlastnosti, které jsou konstruktory pro tři objekty jmenovitě Collator, NumberFormat, a DateTimeFormat.

    Objekt, který budeme používat, je DateTimeFormat které nám pomohou formátovat datum podle různých jazyků.

    DateTimeFormat objekt

    DateTimeFormat konstruktor vezme dva volitelné argumenty;

    • národního prostředí - řetězec nebo pole řetězců, které představují například jazykové značky; “de” pro německý jazyk, “en-GB” pro angličtinu používanou ve Spojeném království. Pokud jazyková značka není uvedena, bude výchozím národním prostředím runtime.
    • možností - objekt, jehož vlastnosti se používají k přizpůsobení formátovače. Má následující vlastnosti:
    Vlastnictví Popis Možné hodnoty
    den Den v měsíci “2místné”, “numerické”
    éra Era datum spadá do, Ex: BC “úzký”, “krátký”, “dlouho”
    formatMatcher Algoritmus používaný pro přizpůsobení formátu “základní”, “nejlépe padnou”[Výchozí]
    hodina Představuje hodiny v čase “2místné”, “numerické”
    hodina12 Označuje 12hodinový formát (skutečný) nebo 24hodinovém formátu (Nepravdivé) skutečný, Nepravdivé
    localeMatcher Algoritmus používaný pro lokální přizpůsobení “vzhlédnout”, “nejlépe padnou”[Výchozí]
    minuta Minuty v čase “2místné”, “numerické”
    Měsíc Měsíc za rok “2místné”, “numerické”, “úzký”, “krátký”, “dlouho”
    druhý Sekundy v čase “2místné”, “numerické”
    časové pásmo Použít časové pásmo “UTC”, výchozí je časové pásmo runtime
    timeZoneName Časové pásmo data “krátký”, “dlouho”
    všední den Den v týdnu “úzký”, “krátký”, “dlouho”
    rok Rok data “2místné”, “numerické”

    Příklad:

     var formatter = new Intl.DateTimeFormat ('en-GB'); / * vrátí formátovač, který může formátovat datum ve formátu anglické datum * / 
     var options = weekday: 'short'; var formatter = new Intl.DateTimeFormat ('en-GB', možnosti); / * vrátí formátovač, který může formátovat datum ve formátu anglického anglického data * spolu se dnem v týdnu v krátkém zápisu jako „Thu“ pro čtvrtek * / 

    formát funkce

    Instanci DateTimeFormat objektu má volán vlastnost accessor (getter) formát který vrací funkci, která formátuje a datum založeno na národního prostředí a možností nalezené v DateTimeFormat instance.

    Funkce trvá a datum objekt nebo undefined jako volitelný argument a vrátí hodnotu a řetězec v požadovaném formátu data.

    Poznámka: Pokud je to argument undefined nebo není poskytnuta, pak vrátí hodnotu Date.now () v požadovaném formátu data.

    Zde je syntaxe:

     new Intl.DateTimeFormat (). format () // vrátí aktuální datum ve formátu runtime data 

    A teď nám dovolte kódovat jednoduché formátování dat.

    Změníme jazyk a uvidíme výstup.

    Nyní je čas podívat se na možnosti.

    toLocaleDateString metoda

    Namísto použití formátovače, jak je uvedeno ve výše uvedených příkladech, můžete také použít Date.prototype.toLocaleString stejným způsobem národního prostředí a možností jsou podobné, ale doporučuje se použít DateTimeFormat objekt při práci s příliš mnoha daty ve vaší aplikaci.

     var mydate = new Datum ('2015/04/22'); var options = weekday: "short", rok: "numeric", month: "long", day: "numeric"; console.log (mydate.toLocaleDateString ('en-GB', možnosti)); // vrací "St, 22. dubna 2015" 

    Otestujte, zda národního prostředí jsou podporovány

    Chcete-li zkontrolovat podporované národního prostředí, můžeme použít metodu supportedLocalesOf z DateTimeFormat objekt. Vrátí pole všech podporujících národního prostředí nebo prázdného pole, pokud není podporováno žádné národní prostředí.

    Pro testování přidejme místní prostředí “bla” v seznamu míst, která mají být zkontrolována.

     console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // vrátí Array ["zh", "fa-pes"] 

    Podpora prohlížeče

    Na konci dubna 2015 podporují hlavní prohlížeče rozhraní API pro internacionalizaci.

    Reference

    • ECMA International: Specifikace API pro internacionalizaci ECMAScript
    • IANA: Jazyk Subtag Registry
    • Norbertův roh: Internacionalizační API ECMAScript