2018年11月21日 星期三

[Day2]NgLocalization & NgLocaleLocalization

Common Module封裝了很多Directive, Pipe,還有一個很特殊的Providers:
{
provide: NgLocalization,
useClass: NgLocaleLocalization
}
官方文件的說明非常少,簡單來說就是應用在
1.各國語系的複數型態的規則訂定及表達
2.各種單位的複數型態的規則訂定及表達

abstract class NgLocalization

這是一個抽象類別,裡面只包含一個抽象方法
 abstract getPluralCategory(value: any, locale?: string): string
而且唯一擴充這個抽象類別的類別就是 NgLocaleLocalization

class NgLocaleLocalization extends NgLocalization

往深層的code track後發現一份規格 - CLDR(Common Locale Data Repository),由萬國碼(unicode)聯盟訂定的規範
http://cldr.unicode.org/index/cldr-spec/plural-rules
這份規格在描述各種語言
1.名詞的複數如何表達
2.單位的複數如何表達(e.g."hour" vs "hours")

語言複數規則的詳細列表
http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html

不過目前從source code觀察,似乎angular團隊在這個領域還沒有積極的發展,在angular5的時候很多相關的API都被列為deprecated。

github:https://github.com/ShawnTseng/angular-api-research/commit/2fc5c38129a732bf2ed709b1a66d31e3905e6c30

這些API跟多國語系(i18n)相關性較高,明天先讀I18N的章節( https://angular.io/guide/i18n ) 



沒有留言:

張貼留言