2024年2月26日 星期一

檢查 DisplayNames 的輸入碼是否有效

 檢查 DisplayNames 的輸入碼是否有效

前言

  在使用 DisplayNames.of() 時,如果輸入無效時不會有任何的錯誤拋擲,只是回傳輸入碼而已,可以用錯誤拋擲攔截嗎?答案是可以的,在此把學習的過程作的紀錄。


內容

  範例如下

console.log(
  new Intl.DisplayNames("zh-tw", { type: "region", fallback: "code" }).of("TW"),
);//台灣
console.log(
  new Intl.DisplayNames("zh-tw", { type: "region", fallback: "code" }).of("DLC"),
);//RangeError: invalid_argument


檢查的方法是在 Intl.DisplayNames() 時加入 fallback 屬性,並輸入 code ,接著在喚起 DisplayNames.of() 時,如果輸入碼無效時就會拋擲錯誤,範例先輸入有效的輸入碼,結果與平常無異,接著輸入無效的輸入碼 DLC ,結果就會拋擲錯誤。


參考資料

[ developer.mozilla.org ] Intl.DisplayNames.prototype.of()

2024年2月19日 星期一

取得 DisplayNames 的成員

 取得 DisplayNames 的成員

前言

  DisplayNames  是透過 Intl.DisplayNames() ,透過回傳的 Object 來使用,不過該物件不提供公開的成員來取得當初初始化的參數,如 type...等 ,查詢後發現是可以的,但不能直接取得,在此把學習的過程做個紀錄。


內容

  要取得 DisplayNames 的成員可以透過 DisplayNames.resolvedOptions() 所回傳的物件來取得,範例如下

const displayNames = new Intl.DisplayNames(
  ["zh-tw"], 
  { type: "region" }
);
//
const usedOptions = displayNames.resolvedOptions();
console.log(usedOptions.locale); // "zh-TW"
console.log(usedOptions.type); // "region"


透過 DisplayNames.resolvedOptions() 的回傳物件就可以取得當初的初始化成員,如 locale 或 type ,感學這設計很不直覺,感覺應該設計成  Intl.DisplayNames() 會傳的物件裡面會提供 getter 才對。


參考資料

[ developer.mozilla.org ] Intl.DisplayNames.prototype.resolvedOptions()

2024年2月12日 星期一

取得貨幣名稱的方法

 取得貨幣名稱的方法

前言

  這次來學習如何取得貨幣名稱,在此把學習的過程做個紀錄。


內容

  範例如下

let currencyNames = new Intl.DisplayNames(
  ["zh-tw"], 
  { type: "currency" }
);
console.log( currencyNames.of("USD") ); // "美元"
console.log( currencyNames.of("TWD") ); // "新台幣"
console.log( currencyNames.of("CNY") ); // "人民幣"


取得字體名稱是透過 [ developer.mozilla.org ] Intl.DisplayNames 來取得,要記得把屬性 type 改成 currency ,接著就可以跟往常一樣透過 of() 來取得 ,貨幣的參數可以透過 [ zh.wikipedia.org ] ISO 4217 來查詢,範例的人民幣是使用 CNY 而非RMB ,字碼用沒有分大小寫,盛至可以大小寫混著用,只要字碼正確即可。


參考資料

[ developer.mozilla.org ] Intl.DisplayNames

[ zh.wikipedia.org ] ISO 4217

2024年2月5日 星期一

取得字體名稱的方法

 取得字體名稱的方法

前言

  這次來學習如何取得字體名稱,在此把學習的過程做個紀錄。


內容

  範例如下

const scriptNames = new Intl.DisplayNames("zh-tw", {
  type: "script",

});
console.log( scriptNames.of("Kana") );//片假名 
console.log( scriptNames.of("Hira") );//平假名 
console.log( scriptNames.of("Hans") );//簡體 
console.log( scriptNames.of("Hant") );//繁體 


取得字體名稱是透過 [ developer.mozilla.org ] Intl.DisplayNames 來取得,要記得把屬性 type 改成 script ,接著就可以跟往常一樣透過 of() 來取得,字體的參數可以透過 [ zh.wikipedia.org ] ISO 15924 來查詢,要注意的是參數的開頭都是大寫!不能用小寫,不然結果會是錯的。


參考資料

[ developer.mozilla.org ] Intl.DisplayNames

[ zh.wikipedia.org ] ISO 15924