From 1546d4af2ed1219a41ef4170bf188f2ab91442e6 Mon Sep 17 00:00:00 2001
From: Apple
Date: Wed, 31 Jul 2019 06:16:41 +0000
Subject: [PATCH] ICU-62135.0.1.tar.gz
---
.../data/brkitr/dictionaries/cjdict.txt | 1 +
icuSources/data/coll/ja.txt | 3 +-
icuSources/data/lang/en.txt | 3 +-
icuSources/data/locales/ar.txt | 1 +
icuSources/data/locales/ast.txt | 3 +
icuSources/data/locales/br.txt | 3 +
icuSources/data/locales/bs_Cyrl.txt | 1 +
icuSources/data/locales/cs.txt | 3 +
icuSources/data/locales/de.txt | 1 +
icuSources/data/locales/el.txt | 241 +++
icuSources/data/locales/en.txt | 78 +-
icuSources/data/locales/fa.txt | 243 ++++
icuSources/data/locales/he.txt | 1 +
icuSources/data/locales/hi.txt | 3 +-
icuSources/data/locales/hr.txt | 1 +
icuSources/data/locales/id.txt | 1 +
icuSources/data/locales/ja.txt | 152 +-
icuSources/data/locales/ko.txt | 1 +
icuSources/data/locales/lo.txt | 1 +
icuSources/data/locales/lt.txt | 1 +
icuSources/data/locales/nb.txt | 3 +
icuSources/data/locales/nl.txt | 3 +
icuSources/data/locales/root.txt | 80 +-
icuSources/data/locales/ru.txt | 1 +
icuSources/data/locales/sr.txt | 1 +
icuSources/data/locales/sr_Latn.txt | 1 +
icuSources/data/locales/sv.txt | 1 +
icuSources/data/locales/th.txt | 1 +
icuSources/data/locales/uk.txt | 243 ++++
icuSources/data/locales/yue.txt | 1 +
icuSources/data/locales/yue_Hans.txt | 1 +
icuSources/data/locales/zh.txt | 3 +
icuSources/data/locales/zh_Hant.txt | 3 +
icuSources/data/misc/keyTypeData.txt | 1 +
icuSources/data/misc/numberingSystems.txt | 5 +
icuSources/data/misc/supplementalData.txt | 1287 ++++++++++-------
icuSources/data/rbnf/ja.txt | 7 +-
icuSources/data/region/ja.txt | 2 +-
icuSources/i18n/Makefile.in | 2 +-
icuSources/i18n/dtitvfmt.cpp | 3 +
icuSources/i18n/dtitvinf.cpp | 4 +-
icuSources/i18n/erarules.cpp | 311 ++++
icuSources/i18n/erarules.h | 98 ++
icuSources/i18n/i18n.vcxproj | 2 +
icuSources/i18n/i18n.vcxproj.filters | 6 +
icuSources/i18n/i18n_uwp.vcxproj | 2 +
icuSources/i18n/japancal.cpp | 483 ++-----
icuSources/i18n/japancal.h | 23 +-
icuSources/i18n/smpdtfmt.cpp | 52 +-
icuSources/i18n/ucln_in.h | 1 +
icuSources/i18n/unicode/calendar.h | 26 +-
icuSources/i18n/unicode/smpdtfmt.h | 1 +
icuSources/i18n/unicode/ucal.h | 15 +-
icuSources/i18n/unicode/udat.h | 21 +
icuSources/test/cintltst/ccaltst.c | 58 +
icuSources/test/cintltst/cdattst.c | 40 +
icuSources/test/intltest/Makefile.in | 2 +-
icuSources/test/intltest/dtifmtts.cpp | 640 ++++----
icuSources/test/intltest/dtptngts.cpp | 4 +-
icuSources/test/intltest/erarulestest.cpp | 130 ++
icuSources/test/intltest/erarulestest.h | 23 +
icuSources/test/intltest/incaltst.cpp | 97 +-
icuSources/test/intltest/incaltst.h | 1 +
icuSources/test/intltest/intltest.vcxproj | 2 +
.../test/intltest/intltest.vcxproj.filters | 8 +-
icuSources/test/intltest/itformat.cpp | 2 +
icuSources/test/testdata/rbbitst.txt | 10 +
icuSources/test/testdata/structLocale.txt | 560 ++++++-
68 files changed, 3781 insertions(+), 1232 deletions(-)
create mode 100644 icuSources/i18n/erarules.cpp
create mode 100644 icuSources/i18n/erarules.h
create mode 100644 icuSources/test/intltest/erarulestest.cpp
create mode 100644 icuSources/test/intltest/erarulestest.h
diff --git a/icuSources/data/brkitr/dictionaries/cjdict.txt b/icuSources/data/brkitr/dictionaries/cjdict.txt
index 34216976..b30a8637 100644
--- a/icuSources/data/brkitr/dictionaries/cjdict.txt
+++ b/icuSources/data/brkitr/dictionaries/cjdict.txt
@@ -55994,6 +55994,7 @@
令åºæè¡ 164
令å 142
令å 245
+令å 61
ä»¤å£ 136
令å 127
令太é 245
diff --git a/icuSources/data/coll/ja.txt b/icuSources/data/coll/ja.txt
index de42a2e6..69458d22 100644
--- a/icuSources/data/coll/ja.txt
+++ b/icuSources/data/coll/ja.txt
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
ja{
- Version{"2.1.19.14"}
+ Version{"2.1.19.15"}
collations{
private-kana{
Sequence{
@@ -416,6 +416,7 @@ ja{
}
standard{
Sequence{
+ "&ã½<*ã¾ã½ã¼ã»ã¿"
"[import ja-u-co-private-kana]"
"&[last regular]<*äºåå¨é¿åææ¨å§¶é¢èµèç©æªæ¡æ¸¥æè¦è¦é¯µæ¢å§æ¡æ±å®å§è»é£´çµ¢ç¶¾é®æç²è¢·å®åºµæææ¡ééæ以ä¼ä½ä¾åå²å¤·å§å¨å°æææ
°ææ¤
çºçç°ç§»ç¶ç·¯èèè¡£è¬ééºå»äºäº¥åè²é磯ä¸å£±æº¢é¸ç¨²è¨èé°¯å
å°å½å¡å 姻å¼é£²æ·«è¤èé¢é°é é»åå³å®çç¾½è¿é¨å¯éµçªºä¸ç¢è¼æ¸¦ååæ¬è鰻姥å©æµ¦çéåäºéé²èé¤å¡å¶å¬°å½±æ æ³æ 永泳洩ççç©é ´è±è¡è© é液ç«çé§
æ¦è¬è¶é²æ¦åååå °å¥å®´å»¶æ¨æ©æ´æ²¿æ¼ççç
çç¿ç¸è¶èèé éé´å¡©æ¼æ±ç¥å¹å¤®å¥¥å¾å¿æ¼æºæ¨ªæ¬§æ®´çç¿è¥é´¬é´é»å²¡æ²è»åå±æ¶è桶ç¡ä¹ä¿ºå¸æ©æ¸©ç©é³ä¸åä»®ä½ä¼½ä¾¡ä½³å å¯åå¤å«å®¶å¯¡ç§æææ¶ææ²³ç«çç¦ç¦¾ç¨¼ç®è±èèè·è¯èè¦èª²å©è²¨è¿¦ééèä¿å³¨æçç»è¥è½è¾è³é
é¤é§ä»ä¼è§£åå¡å£å»»å¿«æªææ¢ææææ¹éæ¦æ¢°æµ·ç°çççµµè¥è¹ééè²å±å¾å¤å³å®³å´æ
¨æ¦æ¶¯ç¢èè¡è©²é§éª¸æµ¬é¦¨èå£æ¿èéåååå»æ¡æ¹æ ¼æ ¸æ®»ç²ç¢ºç©«è¦è§èµ«è¼éé£éé©å¦å²³æ¥½é¡é¡æç¬ æ¨«æ©¿æ¢¶é°æ½å²åæ°æ¬æ´»æ¸æ»èè¤è½ä¸é°¹å¶æ¤æ¨ºéæ ªå
ç«è²ééåé´¨æ ¢è
è±ç²¥åè
ç¦ä¹¾ä¾å å¯ååå§å·»åå ªå§¦å®å®å¯å¹²å¹¹æ£ææ
£æ¾ææ¢ææ¡æ£ºæ¬¾ææ±æ¼¢æ¾æ½
ç°çç£ç竿管簡緩缶翰èè¦è観è«è²«ééééé¢é¥é館è丸å«å²¸å·ç©çç¼å²©ç¿«è´éé é¡é¡ä¼ä¼å±åå¨åºå¥å¬å¯å²å¸å¹¾å¿æ®æºææ¢ææ£æ£æ©å¸°æ¯
æ°æ±½ç¿ç¥å£ç¨ç´å¾½è¦è¨è²´èµ·è»è¼é£¢é¨é¬¼äºå½åå¦å®æ¯ææ¬æ¬ºç çç¥ç¾©è»èª¼è°æ¬èé ååå«æ¡æ©è©°ç §æµé»å´å®¢èèéä¸ä¹
ä»ä¼åå¸å®®å¼æ¥ææ½æ±æ±²æ³£ç¸ç究窮ç¬ç´ç³¾çµ¦æ§çå»å±
å·¨ææ ææ¸ è許è·é¸æ¼ç¦¦é亨享京ä¾ä¾ åå
競å
±å¶åå¡å¿å«å¬å¢å³¡å¼·å½æ¯æææææ©æ³ççç¯è¸è
èèé·é¡é¿é¥é©ä»°åå°ææ¥å±æ²æ¥µçæ¡ç²å
å¤åå·¾é¦æ¤æ¬£æ¬½ç´ç¦ç¦½çç·è¹èè¡¿è¥è¬¹è¿éåéä¹å¶å¥åºççç©è¦èº¯é§é§é§å
·æèå°ç©ºå¶å¯éé
串æ«é§å±å±æçªæ²é´è½¡çªªçéç²æ ç¹°æ¡é¬å²åè«è¨ç¾¤è»é¡å¦è¢ç¥ä¿å¾åå
ååçªåå¥å½¢å¾æµæ
¶æ
§æ©æ²æºæ¬æ¯æ¡æ¸ç¦ç¨½ç³»çµç¶ç¹ç½«èèèè¨è©£è¦è»½é é¶è¸è¿é¯¨åæææ¿éæ¡åæ¬ æ±ºæ½ç©´çµè¡è¨£æ件å¹å¦å¥å
¼å¸å£å§åå
å«å»ºæ²æ¸æ³æ²æ¤æ¨©ç½ç¬ç®ç 硯絹çè©è¦è¬è³¢è»é£éµéºé¡é¨é¹¸å
åå³å¹»å¼¦æ¸æºçç¾çµè·è¨è«ºéä¹åå¤å¼åºå§å¤å·±åº«å¼§æ¸æ
æ¯æ¹çç³è¢´è¡è¡è°èèªè·¨é·é顧é¼äºäºä¼ååå¾å¨¯å¾å¾¡æ梧æªçç¢èªèª¤è·éä¹é¯äº¤ä½¼ä¾¯ååå
å
¬åå¹å¾åå£ååååå¢å¥½ååå®å·¥å·§å··å¹¸åºåºåº·å¼ææ
æææ§æ»æææ´ææ ¡æ¢æ§æ±æ´ªæµ©æ¸¯æºç²çç¡¬ç¨¿ç³ ç´
ç´çµç¶±èèè¯è±è
èèªèè¡è¡¡è¬è²¢è³¼éé
µé±ç ¿é¼é¤éé
é¦é«é´»åå«å·åå£æ·æ¿ 豪è½éº¹å
å»åå½ç©é
·éµ é»çæ¼è
°ç忽æ骨çè¾¼æ¤é ä»å°å¤å¢¾å©æ¨ææææ ¹æ¢±æ··çç´ºè®éäºä½åå嵯左差æ»æ²ç³ç è©éè£å座æ«åµå¬åæåå¡å¦»å®°å½©ææ¡æ ½æ³æ¸ç½éçç ç ¦ç¥æç´°èè£è¼éå¤å¨æ罪財å´åéªå ºæ¦è´å²å´å¼ç¢é·ºä½ååæ¾æ¨ææµçªçç´¢é¯æ¡é®ç¬¹ååå·å¯æ¶æ®æ¦æ殺è©éçé¯æé鮫ç¿æä¸ååå±±æ¨ææ£æ¡ç¦çç£ç®çºèè®è³é
¸é¤æ¬æ«æ®ä»ä»ä¼ºä½¿åºå¸å²å£å士å§å§å§¿åå±å¸å¸«å¿æææ¯åæ¯æ½æ¨ææ¢æ»æ°ç
ç¥ç§ç³¸ç´ç´«è¢èè³è¦è©è©©è©¦èªè«®è³è³é飼æ¯äºä¼¼ä¾å
å寺æ
ææ次æ»æ²»ç¾ç½çç£ç¤ºèè³èªèè¾æ±é¹¿å¼è鴫竺軸å®é«ä¸å±å·å¤±å«å®¤æ湿æ¼ç¾è³ªå®èç¯ å²æ´è屡èç¸èåå°æ¨èµ¦æç
®ç¤¾ç´è
è¬è»é®èéªååºå°ºæç¼çµé
éé«è¥å¯å¼±æ¹ä¸»åå®ææ±æ®ç©ç 種è
«è¶£é
é¦åååªå¯¿æ樹綬éååå¨å®å°±å·ä¿®ææ¾æ´²ç§ç§çµç¹ç¿èèèè¡è¥²è®è¹´è¼¯é±é
é
¬ééä»ä½å
åå¾æææ±æ¸ç£ç¸¦ééåå¤å®¿æ·ç¥ç¸®ç²å¡¾çåºè¡è¿°ä¿å³»æ¥ç¬ç«£è駿å循æ¬æ¥¯æ®æ·³æºæ½¤ç¾ç´å·¡éµéé å¦åææææ¸åº¶ç·ç½²æ¸è¯è·è«¸å©å女åºå¾æé¤é¤å·ååå åå¬å¨åå±å奨妾娼宵å°å°å°å°åºåºå» å½°æ¿ææææ·ææææ¶æ¾æ¢¢æ¨æ¨µæ²¼æ¶æ¸æ¹ç¼ç¦ç
§ççç¡ç¤ç¥¥ç§°ç« ç¬ç²§ç´¹èèèèè¡è£³è¨è¨¼è©è©³è±¡è³é¤é¦é¾éééä¸ä¸ä¸ä¹åå°åå ´å£å¬¢å¸¸æ
æ¾æ¡ææµç¶ç³ç©£è¸è²é¸é å±å´é£¾ææ¤æ®çç¹è·è²è§¦é£è辱尻伸信侵åå¨ å¯å¯©å¿æ
æ¯æ°æ森æ¦æµ¸æ·±ç³ç¹çç¥ç§¦ç´³è£è¯èªè¦ªè¨ºèº«è¾é²éé人ä»å塵壬å°çå°½è
è¨è¿
é£é笥è«é é
¢å³å¨éå¹å帥æ¨æ°´çç¡ç²ç¿ è¡°éé
éééçé«å´åµ©æ°æ¢è¶¨éæ®ææ¤è
é é裾æ¾æºå¯¸ä¸ç¬çæ¯åå¶å¢å§å¾æ§ææ¿æ´ææ´æ£²æ æ£æ¸
ç²ççç²¾èå£°è£½è¥¿èª èªè«ééééæç¨èé»å¸æææ¥ææç³ç©ç±ç¸¾è責赤跡è¹ç¢©åææ¥ææè¨çªç¯èª¬éªçµ¶èèä»å
åå 宣å°å°å·æ¦ææ°æ æ ´æ³æµ
æ´ææ½ç
ç
½æç©¿ç®ç·ç¹ç¾¨è
ºèè¹è¦è©®è³è·µé¸é·éééé®®åå漸ç¶å
¨ç¦
ç¹è³ç³åå¡å²¨æªæ¾æ½æ¥çççç¤ç¥ç§ç²ç´ çµè訴é»é¡é¼ å§åµåå¢ååªå£®å¥ç½å®å±¤åæ£æ³æææ¿æ»ææ©æ¹å·£æ§æ§½æ¼ç¥äºç©ç¸çªç³ç·ç¶è¡èèè¬è¼è»è£
èµ°ééééé¨åå¢æèèµè´é ä¿å´åå³æ¯ææ測足éä¿å±è³æç¶åè¢å
¶æåå«å°ææéä»å¤å¤ªæ±°è©å¾å 妥æ°ææèµæ¥éé§é¨¨ä½å 対è岱帯å¾
æ æ
æ´æ¿æ³°æ»èè
¿èè¢è²¸éé®éé»é¯ä»£å°å¤§ç¬¬éé¡é·¹æ»ç§ååå®
æææ沢濯ç¢è¨é¸æ¿è«¾è¸å§è¸åªå©ä½é辰奪è±å·½ç«ªè¾¿æ£è°·ç¸é±æ¨½èª°ä¸¹ååå¦æ
æ¢æ¦ææ·¡æ¹çç端箪綻è½èèèªéå£å£å¼¾æææªæ®µç·è«å¤ç¥å°å¼æ¥æºæ± ç´ç¨ç½®è´èé
馳ç¯ç竹çèé秩çªè¶å«¡çä¸ä»²å®å¿ æ½æ¼æ±æ³¨è«è¡·è¨»é
é³é§æ¨ç¦çªè§è貯ä¸å
åå寵å¸å¸³åºå¼å¼µå½«å¾´æ²ææ¢ææ½®ççºçºè´è¹è
¸è¶èª¿è«è¶
è·³éé·é é³¥å
æç´ææ²çè³é®é³æ´¥å¢æ¤æ§è¿½éçéå¡æ æ´æ§»ä½æ¼¬æè¾»è¦ç¶´é椿潰åªå£·å¬¬ç´¬çªåé£é¶´äºä½ååµåè²åå ¤å®å¸åºåºå»·å¼ææµæºæ梯æ±ç¢ç¦ç¨ç· èè¨è«¦è¹éé¸ééé¼æ³¥ææ¢æµæ»´çç¬é©é溺å²å¾¹æ¤è½è¿éå
¸å¡«å¤©å±åºæ·»çºç貼転é¡ç¹ä¼æ®¿æ¾±ç°é»å
åå µå¡å¦¬å± å¾ææ渡ç»èè³éé½éç ¥ç ºåªåº¦å奴æåå
å¬åååå¡å¡å¥å®å³¶å¶æ¼æææ±æ¡æ¢¼æ£çæ·æ¹¯æ¶ç¯çå½ç祷çççç³çµ±å°è£è©è¤è¨è¬è±è¸éééé¶é 騰éåååå å°æ§ææ´ç³ç«¥è´èéé
å³ é´å¿å¾å¾³æ¶ç¹ç£ç¦¿ç¯¤æ¯ç¬èªæ æ©¡å¸çªæ¤´å±é³¶è«å¯
é
çå¸å±¯ææ¦æ²è±éé åæéå¥é£å
ä¹åªèè¬çæºé楢馴ç¸ç·åæ¥ è»é£æ±äºå°¼å¼è¿©åè³èè¹å»¿æ¥ä¹³å
¥å¦å°¿é®ä»»å¦å¿èªæ¿¡ç¦°ç¥¢å¯§è±ç«ç±å¹´å¿µæ»æçç²ä¹å»¼ä¹åå¢æ©æ¿ç´è½è³è¿è¾²è¦è¤å·´ææè¦æ·æ³¢æ´¾ç¶ç ´å©ç½µè馬俳å»ææææ¯ççèèºè¼©é
åå¹åªæ¢
楳ç
¤ç½è²·å£²è³ éªéè¿ç§¤ç§è©ä¼¯å¥åæææ³ç½ç®ç²è¶èè¿«ææ¼ çç¸è«é§éº¦å½ç®±ç¡²ç®¸èç櫨幡èçç å
«é¢æºçºé髪ä¼ç½°æçé¥é³©åºå¡è¤é¼ä¼´å¤åååå¸æ¬ææ¿æ°¾æ±çç¯ççç¹è¬è©è²©ç¯éç
©é 飯æ½æ©çªç¤ç£èè®åªåå¦å¦åºå½¼æ²ææ¹æ«ææ¯æ³ç²ç®ç¢ç§ç·ç½·è¥è¢«èª¹è²»é¿éé£æ¨ç°¸å尾微ææ¯çµçç¾é¼»æç¨å¹çé«å½¦èè±èå¼¼å¿
ç¢çé¼æ¡§å§«åªç´ç¾è¬¬ä¿µå½ªæ¨æ°·æ¼ç¢ç¥¨è¡¨è©è±¹å»æç
ç§èé¨é²èèé°å彬ææµç貧è³é »æç¶ä¸ä»å 夫婦å¯å¨å¸åºææ¶æ·æ§æ®æµ®ç¶ç¬¦è
èèèè² è³¦èµ´ééä¾®æ«æ¦èè¡èªé¨å°æ¥é¢¨èºèä¼å¯å¾©å¹
æç¦è
¹è¤è¦æ·µå¼æ沸ä»ç©é®åå»å´å¢³æ¤æ®ç奮ç²ç³ç´é°æèä¸ä½µå
µå¡å¹£å¹³å¼æ並è½ééç±³é å»å£ç碧å¥ç¥èç®åå¤çç¯ç·¨è¾ºè¿é便å娩å¼éä¿èéªåææ©ç«è£è¼ç©åå¢æ
ææ®æ¯ç°¿è©å£ä¿¸å
åå ±å¥å®å³°å³¯å´©åºæ±æ§æ¾æ¹ææ³æ³¡ç¹ç ²ç¸«èè³èè¬èè¤è¨ªè±é¦é飽鳳鵬ä¹äº¡ååå妨帽å¿å¿æ¿æ´æææ£åç´¡èªè¨è¬è²è²¿é¾é²å é ¬ååå墨æ²æ´ç§ç¦ç©é¦å没æ®å å¹å¥æ¬ç¿»å¡çæ©ç£¨é麻å妹æ§ææ¯å©æ§å¹èæ鮪æ¾é±æ¡äº¦ä¿£åæ¹æ«æ²«è¿ä¾ç¹éº¿ä¸æ
¢æºæ¼«èå³æªé
å·³ç®å²¬å¯èæ¹èç¨èå¦ç²æ°ç å夢ç¡ççé§éµ¡æ¤å©¿å¨å¥åå½æçè¿·é鳴姪çæ»
å
æ£ç¶¿ç·¬é¢éººæ¸æ¨¡èå¦åæ¯çç²ç¶²èèå²æ¨é»ç®æ¢å¿é¤
å°¤æ»ç±¾è²°åæ¶ç´éåä¹å¶å¤çºè¶éå¼¥ç¢åå½¹ç´è¬è¨³èºéæ³è®éæææ²¹çè«è¼¸å¯ä½åªåå宥幽æ ææææ湧æ¶ç¶ç·ç±ç¥è£èªéééµéèå¤äºä½ä¸èªè¼¿é åå¹¼å¦å®¹åº¸ææºæææ¥æ§æ´æº¶çç¨çª¯ç¾èèèè¦è¬¡è¸é¥é½é¤æ
¾æ欲æ²æµ´ç¿ç¿¼æ·ç¾
èºè£¸æ¥è±é ¼é·æ´çµ¡è½é
ªä¹±åµåµæ¬æ¿«èè覧å©åå±¥æ梨ççç¢è£è£¡éé¢é¸å¾çç«èæ ç¥åæµæºççç¡«ç²éç«é¾ä¾¶æ
®æ
èäºäº®å両å寮ææ¢æ¶¼çççç¨ç³§è¯è«é¼ééµé åç·å«åææ·çç³è¨è¼ªé£é±éºç å¡æ¶ç´¯é¡ä»¤ä¼¶ä¾å·å±å¶ºæç²ç¤¼èé´é·é¶ééºé½¢æ¦æ´åå£çè£å»æææ¼£ç
簾練è¯è®é£é¬åé¯æ«çè³è·¯é²å´å©å»å¼æ楼æ¦æµªæ¼ç¢ç¼ç¯èè¾èéå
éºç¦èé²è«åå話æªè³èææ é·²äºäºé°è©«èè¨æ¤æ¹¾ç¢è
å¼ä¸ä¸ä¸ªä¸±ä¸¶ä¸¼ä¸¿ä¹ä¹ä¹äºäº
豫äºèå¼äºäºäºäº 亢亰亳亶ä»ä»ä»ä»ä»ä»ä»ä»ä»ä»·ä¼ä½ä¼°ä½ä½ä½ä½ä½¶ä¾ä¾ä¾ä½»ä½©ä½°ä¾ä½¯ä¾ä¾åä¿ä¿ä¿ä¿ä¿ä¿ä¿ä¿ä¿¤ä¿¥åå¨ååªå¥å
ä¼ä¿¶å¡å©å¬ä¿¾ä¿¯ååååæåååååå¬å¸ååå
å´å²ååå³åååå¥åå£å®å¹åµåååååååå¡åºå·å¼å»å¿å
å
å
å
å
¢ç«¸å
©å
ªå
®ååååååååååå¤å¦å¢å©åªå«å³å±å²å°åµå½å
ååå èå©åå°åµå¾ååååå§åªå®å³å¹åååååååªå´å©å³å¿å½åååå±åå辨辧å¬åå¼åµååååå£å¦é£å å³åµå¸å¹ååç¸åååååå£å¯å±å³å¸ååå
ä¸ååååå©å®å¤å»å·ååå å¦å¥å®å°å¶åç°éåæ¼ç®å®å¨ååºåå½åå¬åå¼å®å¶å©ååååµååå±å·å°åå»åå¶ååååå¢å¸å¥å¬ååå¨å«åå¤å¾å¼åå¥å¦ååå½å®ååºå¢å¹åå£åå®åå
ååå¸å³åååå¯ååå»å¾ååå®å¼åå©åå¨åå
åååå¤ååå·åå¾å½åå¹ååçå´å¶å²å¸å«å¤å¯å¬åªåååå ååå¥å®å¶å´åå¼ååååååååå®å¹åå¿ååååååååååå¦å·å¸åå»ååå©ååå¡å¿ååå å³å¤åªå°åååååå åå£å å å å¡²å ¡å¡¢å¡å¡°æ¯å¡å ½å¡¹å¢
墹å¢å¢«å¢ºå£å¢»å¢¸å¢®å£
å£å£å£å£å£å£¥å£å£¤å£å£¯å£ºå£¹å£»å£¼å£½å¤å¤å¤å¤æ¢¦å¤¥å¤¬å¤å¤²å¤¸å¤¾ç«å¥å¥å¥å¥å¥å¥¢å¥ 奧奬奩奸å¦å¦ä½ä¾«å¦£å¦²å§å§¨å§å¦å§å§å¨¥å¨å¨å¨å¨å¨å©å©¬å©å¨µå¨¶å©¢å©ªåªåª¼åª¾å«å«åª½å«£å«å«¦å«©å«å«ºå«»å¬å¬å¬å¬²å«å¬ªå¬¶å¬¾åå
åååååå¥å©å°å³åµå¸æåºå®å®å®¦å®¸å¯å¯å¯å¯å¯å¯¤å¯¦å¯¢å¯å¯¥å¯«å¯°å¯¶å¯³å°
å°å°å°å°å° 尢尨尸尹å±å±å±å±å±å±å±å±¬å±®ä¹¢å±¶å±¹å²å²å²å¦å²«å²»å²¶å²¼å²·å³
å²¾å³å³å³©å³½å³ºå³å¶å³ªå´å´å´åµå´å´å´å´å´¢å´å´å´åµåµåµåµåµ¬åµ³åµ¶å¶å¶å¶å¶¢å¶å¶¬å¶®å¶½å¶å¶·å¶¼å·å·å·å·å·å·å·«å·²å·µå¸å¸å¸å¸å¸å¸¶å¸·å¹å¹å¹å¹å¹å¹å¹å¹¢å¹¤å¹å¹µå¹¶å¹ºéº¼å¹¿åº å»å»å»å»å»å»å»£å»å»å»å»¢å»¡å»¨å»©å»¬å»±å»³å»°å»´å»¸å»¾å¼å¼å½å½å¼å¼å¼å¼©å¼å¼¸å½å½å½å½å¼¯å½å½å½å½å½¡å½å½³å½·å¾å¾å½¿å¾å¾å¾å¾å¾å¾å¾å¾ 徨å¾å¾¼å¿å¿»å¿¤å¿¸å¿±å¿æ³å¿¿æ¡æ æææ©ææ±æææ«æ¦ææºæææªæ·æææææ£ææ¤ææ¬æ«ææææ§ææææææææ§ææ¡æ¸æ ææ´å¿°æ½ææµææ
æææ¶æ·ææ´æºææ¡æ»æ±æææ
æ¾æ¨æ§æ
æ¿æ¼æ¬æ´æ½æ
æ
æ
³æ
·æ
æ
æ
æ
«æ
´æ
¯æ
¥æ
±æ
æ
æ
æ
µææææ¬æææææ«æ®ææææ·ææææºæç½¹ææ¦æ£æ¶æºæ´æ¿æ½æ¼æ¾æææææææææ¡æªæ®æ°æ²æ³ææææ£ææ æ¨æ¼æææ¾æææææææææ»ææ¿ææææææææææææ®æ±æ§æææ¯æµææ¾æææææææ«æ¶æ£ææææµæ«æ©æ¾æ©æææ£æææ¶æææ´æææ¦æ¶æææ¨ææ§æ¯æ¶ææªæææ¥æ©ææ¼æææ
ææ»æææ±æ§èæ æ¡æ¬æ£æ¯æ¬æ¶æ´æ²æºææ½æææ
æ¤æ£æ«æ´æµæ·æ¶æ¸çææææææææ²æ¸ææè®æææ«æ·æææææææææ æ¡æ±æ²æææ»æ³æµæ¶æ´ææææææææ¤æ§æ¨ææ¢æ°æææææææææ¹ææ¾æ¼ææ¸æææ æ¿æ¦æ©æ°æµæ·ææææ¦æ§é¸æ®æ¿æ¶ææ¸æ·æææ ææ£æ¤ææ°æ©æ¼æªæææ¦æ¡æ
æ·æ¯æ´æ¬æ³æ©æ¸æ¤æææ¢æ®æ¹æææ§æªæ æ¡æ ©æ¡æ¡æ ²æ¡æ¢³æ «æ¡æ¡£æ¡·æ¡¿æ¢æ¢æ¢æ¢æ¢æ¢æ¢æª®æ¢¹æ¡´æ¢µæ¢ 梺æ¤æ¢æ¡¾æ¤æ£æ¤æ£æ¤¢æ¤¦æ£¡æ¤æ£æ£æ£§æ£æ¤¶æ¤æ¤æ£æ££æ¤¥æ£¹æ£ 棯椨椪æ¤æ¤£æ¤¡æ£æ¥¹æ¥·æ¥æ¥¸æ¥«æ¥æ¥¾æ¥®æ¤¹æ¥´æ¤½æ¥æ¤°æ¥¡æ¥æ¥æ¦æ¥ªæ¦²æ¦®æ§æ¦¿æ§æ§æ¦¾æ§å¯¨æ§æ§æ¦»æ§æ¦§æ¨®æ¦æ¦ æ¦æ¦æ¦´æ§æ§¨æ¨æ¨æ§¿æ¬æ§¹æ§²æ§§æ¨
榱æ¨æ§æ¨æ§«æ¨æ¨æ«æ¨£æ¨æ©æ¨æ©²æ¨¶æ©¸æ©æ©¢æ©æ©¦æ©æ¨¸æ¨¢æªæªæª æªæª¢æª£æªè檻æ«æ«æª¸æª³æª¬æ«æ«æ«æªªæ«æ«ªæ«»æ¬
è櫺æ¬æ¬é¬±æ¬æ¬¸æ¬·ç欹飮æææææææææ¡æ¸æ¹æ¿æ®æ®æ®æ®æ®æ®æ®æ®¤æ®ªæ®«æ®¯æ®²æ®±æ®³æ®·æ®¼æ¯æ¯æ¯æ¯æ¯¬æ¯«æ¯³æ¯¯éº¾æ°æ°æ°æ°æ°¤æ°£æ±æ±æ±¢æ±ªæ²æ²æ²æ²æ²æ±¾æ±¨æ±³æ²æ²æ³æ³±æ³æ²½æ³æ³
æ³æ²®æ²±æ²¾æ²ºæ³æ³¯æ³æ³ªæ´è¡æ´¶æ´«æ´½æ´¸æ´æ´µæ´³æ´æ´æµ£æ¶æµ¤æµæµ¹æµæ¶æ¶æ¿¤æ¶
æ·¹æ¸æ¸æ¶µæ·æ·¦æ¶¸æ·æ·¬æ·æ·æ·¨æ·æ·
æ·ºæ·æ·¤æ·æ·ªæ·®æ¸æ¹®æ¸®æ¸æ¹²æ¹æ¸¾æ¸£æ¹«æ¸«æ¹¶æ¹æ¸æ¹æ¸ºæ¹æ¸¤æ»¿æ¸æ¸¸æºæºªæºæ»æº·æ»æº½æº¯æ»æº²æ»æ»æºæº¥æ»æºæ½æ¼ç滬滸滾漿滲漱滯漲æ»æ¼¾æ¼æ»·æ¾æ½ºæ½¸æ¾æ¾æ½¯æ½æ¿³æ½æ¾æ½¼æ½æ¾æ¾æ¿æ½¦æ¾³æ¾£æ¾¡æ¾¤æ¾¹æ¿æ¾ªæ¿æ¿æ¿¬æ¿æ¿æ¿±æ¿®æ¿çç濺ççç濾ççæ½´çççç°ç¾ç²çç£ççç¯ç±ç¬ç¸ç³ç®çççççç½ççç
¥ç
çç
¦ç
¢ç
ç
ç
¬çç»ççç¨ç¬çç¹ç¾ççççç ç¬ç§çµç¼ç¹ç¿çççç¨çç¬ç°ç²ç»ç¼ç¿ççççç´ç¾çççççç¢ç§ç¹ç²çççççç¢ç ç¡ç¹ç·åçççççç´ç¯ç©ç¥ç¾ççé»ççªç¨ç°ç¸çµç»çºçç³çç»çç¥ç®çç¢ç
ç¯ç¥ç¸ç²çºçç¿ççççç©ç°ç£çªç¶ç¾ççç§çççç±ç ç£ç§ç©ç®ç²ç°ç±ç¸ç·ççç
ççççççç¦ç¬ç¼çççççççç©ç¤ç§ç«çç¸ç¶ççç´ççççççç¥ç£çç³ççµç½ç¸ç¼ç±ççççç£çç¾ç¿ç¼çç°çºç²ç³ççççç§ç ç¡ç¢ç¤ç´ç°ç»çççççç¡ç¢ç¨ç©çªç§ç¬ç°ç²ç¶ç¸ç¼çççççççççç°ç´ç¸ç¹çºçççççç¡ç¥ç§çªè¯ç»çççç©ç¤çç¥ç¦çç·ç¸ççç¨ç«çç¥ç¿ç¾ç¹çççç çç°ç¶ç¹ç¿ç¼ç½ç»çççççç£ç®ç¼ç ç 礦ç 礪ç¡
ç¢ç¡´ç¢ç¡¼ç¢ç¢ç¢£ç¢µç¢ªç¢¯ç£ç£ç£ç£ç¢¾ç¢¼ç£
ç£ç£¬ç£§ç£ç£½ç£´ç¤ç¤ç¤ç¤ç¤¬ç¤«ç¥ç¥ ç¥ç¥ç¥ç¥ç¥ç¥ºç¥¿ç¦ç¦ç¦§é½ç¦ªç¦®ç¦³ç¦¹ç¦ºç§ç§ç§§ç§¬ç§¡ç§£ç¨ç¨ç¨ç¨ç¨ ç¨ç¦ç¨±ç¨»ç¨¾ç¨·ç©ç©ç©ç©¡ç©¢ç©©é¾ç©°ç©¹ç©½çªçªçªçªçªçª©ç«çª°çª¶ç«
ç«çª¿éç«ç«ç«ç«ç«ç«ç«ç«ç«ç«¡ç«¢ç«¦ç«ç«°ç¬ç¬ç¬ç¬ç¬³ç¬ç¬ç¬ç¬µç¬¨ç¬¶ççºç¬çç¬çç
çµç¥ç´ç§ç°ç±ç¬ç®ç®ç®ç®ç®ç®ç®ç®ç®ç®çç®ç¯ç¯ç¯ç¯ç®´ç¯ç¯ç¯©ç°ç°ç¯¦ç¯¥ç± ç°ç°ç°ç¯³ç¯·ç°ç°ç¯¶ç°£ç°§ç°ªç°ç°·ç°«ç°½ç±ç±ç±ç±ç±ç±ç±ç±ç±¤ç±ç±¥ç±¬ç±µç²ç²ç²¤ç²ç²¢ç²«ç²¡ç²¨ç²³ç²²ç²±ç²®ç²¹ç²½ç³ç³
ç³ç³ç³ç³ç³¢é¬»ç³¯ç³²ç³´ç³¶ç³ºç´ç´ç´ç´ç´çµ
çµç´®ç´²ç´¿ç´µçµçµ³çµçµçµ²çµ¨çµ®çµçµ£ç¶ç¶çµç¶çµ½ç¶ç¶ºç¶®ç¶£ç¶µç·ç¶½ç¶«ç¸½ç¶¢ç¶¯ç·ç¶¸ç¶ç¶°ç·ç·ç·¤ç·ç·»ç·²ç·¡ç¸
ç¸ç¸£ç¸¡ç¸ç¸±ç¸ç¸ç¸ç¸¢ç¹ç¹¦ç¸»ç¸µç¸¹ç¹ç¸·ç¸²ç¸ºç¹§ç¹ç¹ç¹ç¹ç¹ç¹¹ç¹ªç¹©ç¹¼ç¹»çºç·ç¹½è¾®ç¹¿çºçºçºçºçºçºçºçºçºçºçºç¼¸ç¼ºç½
ç½ç½ç½ç½ç½ç½ç½ç½ç½ç½ 罨罩罧罸ç¾ç¾ç¾ç¾ç¾ç¾ç¾ç¾ç¾ç¾ç¾£ç¾¯ç¾²ç¾¹ç¾®ç¾¶ç¾¸è±ç¿
ç¿ç¿ç¿ç¿ç¿¡ç¿¦ç¿©ç¿³ç¿¹é£èèèèèèèè¡è¨è¿è»èèèèèèè¢è¨è³è²è°è¶è¹è½è¿èèè
èèèèåè¬èè¥èèèèèèè¯è±èè©è£è¯è
éè
è¾è
è
è¼è
±è
®è
¥è
¦è
´èèèèèè èè¤è£è
èè©è°èµè¾è¸è½èèèºèèèèèèèèè è§èºè»è¾èèè
èèèèèè©è«è¸è³èèèèèèè¤è¢è¨èªè«è®è±è·è¸è¾èèè«èè»è¬è¡è£èèè´è³èºèèè»è¹èèèèèèµè´èè²è±èè¹èè
è¯è«èèè
èèªèè¢èè£èèèè¼èµè³èµè èè¨è´èè«èè½èèèèè·èè è²èè¢è è½è¸èè»èèªè¼èèè·è«èè®èè©èè¬è¯è¹èµèè¢è¹è¿èèèè»èèèèèè¡è¡è¿è´èèè¬èèèè¼èè£èèèèèèèè¤èèèè¨èèèèªèèè·è¾èèèºèè¹èèèè¥èè¹èèèè¾èºèè¢èè°è¿èä¹èèè§è±èè£è©èªèèè¶è¯èèè°èè £è«èèè©è¬èèè¯èèèèèè»èèèè¹èè´è¿è·è»è¥è©èè èè¸èèè´èè¨è®èèè£èªè
è¢èèè¯èè½èèéè«èè³èèè»è¯è²è è è è¾è¶è·è èè è è è ¢è ¡è ±è ¶è ¹è §è »è¡è¡è¡è¡è¡è¡¢è¡«è¢è¡¾è¢è¡µè¡½è¢µè¡²è¢è¢è¢è¢®è¢è¢¢è¢è¢¤è¢°è¢¿è¢±è£è£è£è£è£è£è£¹è¤è£¼è£´è£¨è£²è¤è¤è¤è¤è¥è¤è¤¥è¤ªè¤«è¥è¥è¤»è¤¶è¤¸è¥è¤è¥ è¥è¥¦è¥¤è¥è¥ªè¥¯è¥´è¥·è¥¾è¦è¦è¦è¦è¦è¦¡è¦©è¦¦è¦¬è¦¯è¦²è¦ºè¦½è¦¿è§è§è§è§è§§è§´è§¸è¨è¨è¨è¨è¨è¨è¨¥è¨¶è©è©è©è©è©è©¼è©è©¬è©¢èª
èªèªèª¨èª¡èªèª¥èª¦èªèª£è«è«è«è«è««è«³è«§è«¤è«±è¬è« 諢諷è«è«è¬è¬è¬è«¡è¬è¬è¬è¬ 謳é«è¬¦è¬«è¬¾è¬¨èèèèèèèèè«èè¬è¯è´è½è®è®è®è®è®è®è®è®è°ºè±è°¿è±è±è±è±è±è±¢è±¬è±¸è±ºè²è²è²
è²è²è²è²è±¼è²æè²è²ªè²½è²²è²³è²®è²¶è³è³è³¤è³£è³è³½è³ºè³»è´è´
è´è´è´è´è´é½è´è³è´è´èµ§èµèµ±èµ³è¶è¶è·è¶¾è¶ºè·è·è·è·è·è·è·ªè·«è·è·£è·¼è¸è¸è·¿è¸è¸è¸è¸è¹è¸µè¸°è¸´è¹è¹è¹è¹è¹è¹è¹è¹¤è¹ 踪蹣è¹è¹¶è¹²è¹¼èºèºèº
èºèºèºèºèºèºèºèºªèº¡èº¬èº°è»èº±èº¾è»
è»è»è»è»£è»¼è»»è»«è»¾è¼è¼
è¼è¼è¼è¼è¼è¼è¼è¼è¼¦è¼³è¼»è¼¹è½
è½è¼¾è½è½è½è½è½è½è½¢è½£è½¤è¾è¾è¾£è¾è¾¯è¾·è¿è¿¥è¿¢è¿ªè¿¯éè¿´é
迹迺ééé¡ééééé§é¶éµé¹è¿¸ééééééé¾éééé¨é¯é¶é¨é²éé½éééééé¨é¯é±éµé¢é¤æééééé²é°é
é
é
é
£é
¥é
©é
³é
²éééé¢é«é¯éªéµé´éºéééééééé¡éé¼éµé¶éé¿éé¬ééééé
éé¤ééé¿ééééééééé¹é·é©ééºéé®éé¢éé£éºéµé»éé é¼é®éé°é¬ééé¹ééé¨é¥éééééé¤ééééééé¶é«éµé¡éºééééé é¢ééªé©é°éµé·é½éé¼é¾éé¿éééééééé é¨é§éé¼é»é¹é¾é濶éééééééé¡é¥é¢é¡é¨é®é¯ééééé·ééééé¦é²é¬éééééªé§é±é²é°é´é¶é¸é¹ééééè¥éééé¹éééééééééé¤éªé°é¹é½é¾ééééééé é¤é¦é¨åé«é±é¹é
é¼ééºéééééé¨é¦é£é³é´ééééééé½é²ç«é¶éµé é é ¸é ¤é ¡é ·é ½é¡é¡é¡é¡«é¡¯é¡°é¡±é¡´é¡³é¢ªé¢¯é¢±é¢¶é£é£é£é£©é£«é¤é¤é¤é¤é¤é¤¡é¤é¤é¤¤é¤ 餬餮餽餾é¥é¥é¥
é¥é¥é¥é¥é¥é¥é¦é¦é¦¥é¦é¦®é¦¼é§é§é§é§é§é§é§®é§±é§²é§»é§¸é¨é¨é¨
駢é¨é¨«é¨·é©
é©é©é©é¨¾é©é©é©é©é©é©¢é©¥é©¤é©©é©«é©ªéªéª°éª¼é«é«é«é«é«é«é«é«¢é«£é«¦é«¯é««é«®é«´é«±é«·é«»é¬é¬é¬é¬é¬¢é¬£é¬¥é¬§é¬¨é¬©é¬ªé¬®é¬¯é¬²éééééééé´é®é®é®é®é®é®é® 鮨鮴é¯é¯é®¹é¯é¯é¯é¯é¯£é¯¢é¯¤é¯é¯¡é°ºé¯²é¯±é¯°é°é°é°é°é°é°é°é°é°é°é°®é°é°¥é°¤é°¡é°°é±é°²é±é°¾é±é± 鱧鱶鱸鳧鳬鳰é´é´é³«é´é´é´ªé´¦é¶¯é´£é´éµé´é´éµé´¿é´¾éµéµéµéµéµ¤éµéµéµéµ²é¶é¶é¶«éµ¯éµºé¶é¶¤é¶©é¶²é·é·é¶»é¶¸é¶ºé·é·é·é·é·é·¸é·¦é·é·¯é·½é¸é¸é¸é¹µé¹¹é¹½éºéºéºéºéºéºéºéºéº¥éº©éº¸éºªéºé¡é»é»é»é»é»é»é»é»é» 黥黨黯黴黶黷黹黻黼黽é¼é¼ç·é¼é¼¡é¼¬é¼¾é½é½é½é½£é½é½ 齡齦齧齬齪齷齲齶é¾é¾é¾ å ¯æ§éç¤åç"
}
diff --git a/icuSources/data/lang/en.txt b/icuSources/data/lang/en.txt
index ebf366ab..20f738a2 100644
--- a/icuSources/data/lang/en.txt
+++ b/icuSources/data/lang/en.txt
@@ -1106,6 +1106,7 @@ en{
java{"Javanese Digits"}
jpan{"Japanese Numerals"}
jpanfin{"Japanese Financial Numerals"}
+ jpanyear{"Japanese Calendar Gannen Year Numerals"}
kali{"Kayah Li Digits"}
khmr{"Khmer Digits"}
knda{"Kannada Digits"}
@@ -1236,7 +1237,7 @@ en{
VALENCIA{"Valencian"}
WADEGILE{"Wade-Giles Romanization"}
}
- Version{"2.1.41.97"}
+ Version{"2.1.41.98"}
characterLabelPattern{
all{"{0} â all"}
category-list{"{0}: {1}"}
diff --git a/icuSources/data/locales/ar.txt b/icuSources/data/locales/ar.txt
index 376113d5..4a0848ee 100644
--- a/icuSources/data/locales/ar.txt
+++ b/icuSources/data/locales/ar.txt
@@ -1711,6 +1711,7 @@ ar{
"تÙØ´Ù",
"Ø´ÙÙا",
"ÙÙسÙ",
+ "رÙÙا",
}
}
}
diff --git a/icuSources/data/locales/ast.txt b/icuSources/data/locales/ast.txt
index c2f8950a..fa381ed4 100644
--- a/icuSources/data/locales/ast.txt
+++ b/icuSources/data/locales/ast.txt
@@ -2304,6 +2304,7 @@ ast{
"TaishÅ",
"e. ShÅwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika",
@@ -2542,6 +2543,7 @@ ast{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645â650)",
@@ -2780,6 +2782,7 @@ ast{
"TaishÅ",
"era ShÅwa",
"Heisei",
+ "Reiwa",
}
}
intervalFormats{
diff --git a/icuSources/data/locales/br.txt b/icuSources/data/locales/br.txt
index 41100c2d..1203f5f3 100644
--- a/icuSources/data/locales/br.txt
+++ b/icuSources/data/locales/br.txt
@@ -4105,6 +4105,7 @@ br{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645â650)",
@@ -4343,6 +4344,7 @@ br{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645â650)",
@@ -4581,6 +4583,7 @@ br{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
intervalFormats{
diff --git a/icuSources/data/locales/bs_Cyrl.txt b/icuSources/data/locales/bs_Cyrl.txt
index dca25e65..857ec811 100644
--- a/icuSources/data/locales/bs_Cyrl.txt
+++ b/icuSources/data/locales/bs_Cyrl.txt
@@ -1035,6 +1035,7 @@ bs_Cyrl{
"ТаиÑо",
"Шова",
"ХаиÑеи",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/cs.txt b/icuSources/data/locales/cs.txt
index d4a5ea5c..6fe80a2e 100644
--- a/icuSources/data/locales/cs.txt
+++ b/icuSources/data/locales/cs.txt
@@ -3551,6 +3551,7 @@ cs{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645â650)",
@@ -3789,6 +3790,7 @@ cs{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645â650)",
@@ -4027,6 +4029,7 @@ cs{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
intervalFormats{
diff --git a/icuSources/data/locales/de.txt b/icuSources/data/locales/de.txt
index 79041925..ec63cce3 100644
--- a/icuSources/data/locales/de.txt
+++ b/icuSources/data/locales/de.txt
@@ -1657,6 +1657,7 @@ de{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/el.txt b/icuSources/data/locales/el.txt
index b8f73de1..f18aa9b1 100644
--- a/icuSources/data/locales/el.txt
+++ b/icuSources/data/locales/el.txt
@@ -1411,6 +1411,247 @@ el{
yMd{"dd/MM/y GGGGG"}
yQQQ{"y GGGGG QQQ"}
}
+ eras{
+ abbreviated{
+ "Taika (645â650)",
+ "Hakuchi (650â671)",
+ "HakuhÅ (672â686)",
+ "ShuchÅ (686â701)",
+ "TaihÅ (701â704)",
+ "Keiun (704â708)",
+ "WadÅ (708â715)",
+ "Reiki (715â717)",
+ "YÅrÅ (717â724)",
+ "Jinki (724â729)",
+ "TenpyÅ (729â749)",
+ "TenpyÅ-kampÅ (749â749)",
+ "TenpyÅ-shÅhÅ (749â757)",
+ "TenpyÅ-hÅji (757â765)",
+ "TenpyÅ-jingo (765â767)",
+ "Jingo-keiun (767â770)",
+ "HÅki (770â780)",
+ "Ten-Å (781â782)",
+ "Enryaku (782â806)",
+ "DaidÅ (806â810)",
+ "KÅnin (810â824)",
+ "TenchÅ (824â834)",
+ "JÅwa (834â848)",
+ "KajÅ (848â851)",
+ "Ninju (851â854)",
+ "SaikÅ (854â857)",
+ "Ten-an (857â859)",
+ "JÅgan (859â877)",
+ "GangyÅ (877â885)",
+ "Ninna (885â889)",
+ "KanpyÅ (889â898)",
+ "ShÅtai (898â901)",
+ "Engi (901â923)",
+ "EnchÅ (923â931)",
+ "JÅhei (931â938)",
+ "TengyÅ (938â947)",
+ "Tenryaku (947â957)",
+ "Tentoku (957â961)",
+ "Åwa (961â964)",
+ "KÅhÅ (964â968)",
+ "Anna (968â970)",
+ "Tenroku (970â973)",
+ "Tenâen (973â976)",
+ "JÅgen (976â978)",
+ "Tengen (978â983)",
+ "Eikan (983â985)",
+ "Kanna (985â987)",
+ "Eien (987â989)",
+ "Eiso (989â990)",
+ "ShÅryaku (990â995)",
+ "ChÅtoku (995â999)",
+ "ChÅhÅ (999â1004)",
+ "KankÅ (1004â1012)",
+ "ChÅwa (1012â1017)",
+ "Kannin (1017â1021)",
+ "Jian (1021â1024)",
+ "Manju (1024â1028)",
+ "ChÅgen (1028â1037)",
+ "ChÅryaku (1037â1040)",
+ "ChÅkyÅ« (1040â1044)",
+ "Kantoku (1044â1046)",
+ "EishÅ (1046â1053)",
+ "Tengi (1053â1058)",
+ "KÅhei (1058â1065)",
+ "Jiryaku (1065â1069)",
+ "EnkyÅ« (1069â1074)",
+ "ShÅho (1074â1077)",
+ "ShÅryaku (1077â1081)",
+ "EihÅ (1081â1084)",
+ "Åtoku (1084â1087)",
+ "Kanji (1087â1094)",
+ "KahÅ (1094â1096)",
+ "EichÅ (1096â1097)",
+ "JÅtoku (1097â1099)",
+ "KÅwa (1099â1104)",
+ "ChÅji (1104â1106)",
+ "KashÅ (1106â1108)",
+ "Tennin (1108â1110)",
+ "Ten-ei (1110â1113)",
+ "EikyÅ« (1113â1118)",
+ "Genâei (1118â1120)",
+ "HÅan (1120â1124)",
+ "Tenji (1124â1126)",
+ "Daiji (1126â1131)",
+ "TenshÅ (1131â1132)",
+ "ChÅshÅ (1132â1135)",
+ "HÅen (1135â1141)",
+ "Eiji (1141â1142)",
+ "KÅji (1142â1144)",
+ "TenâyÅ (1144â1145)",
+ "KyÅ«an (1145â1151)",
+ "Ninpei (1151â1154)",
+ "KyÅ«ju (1154â1156)",
+ "HÅgen (1156â1159)",
+ "Heiji (1159â1160)",
+ "Eiryaku (1160â1161)",
+ "Åho (1161â1163)",
+ "ChÅkan (1163â1165)",
+ "Eiman (1165â1166)",
+ "Ninâan (1166â1169)",
+ "KaÅ (1169â1171)",
+ "ShÅan (1171â1175)",
+ "Angen (1175â1177)",
+ "JishÅ (1177â1181)",
+ "YÅwa (1181â1182)",
+ "Juei (1182â1184)",
+ "Genryaku (1184â1185)",
+ "Bunji (1185â1190)",
+ "KenkyÅ« (1190â1199)",
+ "ShÅji (1199â1201)",
+ "Kennin (1201â1204)",
+ "GenkyÅ« (1204â1206)",
+ "Kenâei (1206â1207)",
+ "JÅgen (1207â1211)",
+ "Kenryaku (1211â1213)",
+ "KenpÅ (1213â1219)",
+ "JÅkyÅ« (1219â1222)",
+ "JÅÅ (1222â1224)",
+ "Gennin (1224â1225)",
+ "Karoku (1225â1227)",
+ "Antei (1227â1229)",
+ "Kanki (1229â1232)",
+ "JÅei (1232â1233)",
+ "Tenpuku (1233â1234)",
+ "Bunryaku (1234â1235)",
+ "Katei (1235â1238)",
+ "Ryakunin (1238â1239)",
+ "EnâÅ (1239â1240)",
+ "Ninji (1240â1243)",
+ "Kangen (1243â1247)",
+ "HÅji (1247â1249)",
+ "KenchÅ (1249â1256)",
+ "KÅgen (1256â1257)",
+ "ShÅka (1257â1259)",
+ "ShÅgen (1259â1260)",
+ "BunâÅ (1260â1261)",
+ "KÅchÅ (1261â1264)",
+ "Bunâei (1264â1275)",
+ "Kenji (1275â1278)",
+ "KÅan (1278â1288)",
+ "ShÅÅ (1288â1293)",
+ "Einin (1293â1299)",
+ "ShÅan (1299â1302)",
+ "Kengen (1302â1303)",
+ "Kagen (1303â1306)",
+ "Tokuji (1306â1308)",
+ "EnkyÅ (1308â1311)",
+ "ÅchÅ (1311â1312)",
+ "ShÅwa (1312â1317)",
+ "BunpÅ (1317â1319)",
+ "GenÅ (1319â1321)",
+ "GenkÅ (1321â1324)",
+ "ShÅchÅ« (1324â1326)",
+ "Karyaku (1326â1329)",
+ "Gentoku (1329â1331)",
+ "GenkÅ (1331â1334)",
+ "Kenmu (1334â1336)",
+ "Engen (1336â1340)",
+ "KÅkoku (1340â1346)",
+ "ShÅhei (1346â1370)",
+ "Kentoku (1370â1372)",
+ "BunchÅ« (1372â1375)",
+ "Tenju (1375â1379)",
+ "KÅryaku (1379â1381)",
+ "KÅwa (1381â1384)",
+ "GenchÅ« (1384â1392)",
+ "Meitoku (1384â1387)",
+ "Kakei (1387â1389)",
+ "KÅÅ (1389â1390)",
+ "Meitoku (1390â1394)",
+ "Åei (1394â1428)",
+ "ShÅchÅ (1428â1429)",
+ "EikyÅ (1429â1441)",
+ "Kakitsu (1441â1444)",
+ "Bunâan (1444â1449)",
+ "HÅtoku (1449â1452)",
+ "KyÅtoku (1452â1455)",
+ "KÅshÅ (1455â1457)",
+ "ChÅroku (1457â1460)",
+ "KanshÅ (1460â1466)",
+ "BunshÅ (1466â1467)",
+ "Ånin (1467â1469)",
+ "Bunmei (1469â1487)",
+ "ChÅkyÅ (1487â1489)",
+ "Entoku (1489â1492)",
+ "MeiÅ (1492â1501)",
+ "Bunki (1501â1504)",
+ "EishÅ (1504â1521)",
+ "Taiei (1521â1528)",
+ "KyÅroku (1528â1532)",
+ "Tenbun (1532â1555)",
+ "KÅji (1555â1558)",
+ "Eiroku (1558â1570)",
+ "Genki (1570â1573)",
+ "TenshÅ (1573â1592)",
+ "Bunroku (1592â1596)",
+ "KeichÅ (1596â1615)",
+ "Genna (1615â1624)",
+ "Kanâei (1624â1644)",
+ "ShÅho (1644â1648)",
+ "Keian (1648â1652)",
+ "JÅÅ (1652â1655)",
+ "Meireki (1655â1658)",
+ "Manji (1658â1661)",
+ "Kanbun (1661â1673)",
+ "EnpÅ (1673â1681)",
+ "Tenna (1681â1684)",
+ "JÅkyÅ (1684â1688)",
+ "Genroku (1688â1704)",
+ "HÅei (1704â1711)",
+ "ShÅtoku (1711â1716)",
+ "KyÅhÅ (1716â1736)",
+ "Genbun (1736â1741)",
+ "KanpÅ (1741â1744)",
+ "EnkyÅ (1744â1748)",
+ "Kanâen (1748â1751)",
+ "HÅreki (1751â1764)",
+ "Meiwa (1764â1772)",
+ "Anâei (1772â1781)",
+ "Tenmei (1781â1789)",
+ "Kansei (1789â1801)",
+ "KyÅwa (1801â1804)",
+ "Bunka (1804â1818)",
+ "Bunsei (1818â1830)",
+ "TenpÅ (1830â1844)",
+ "KÅka (1844â1848)",
+ "Kaei (1848â1854)",
+ "Ansei (1854â1860)",
+ "Manâen (1860â1861)",
+ "BunkyÅ« (1861â1864)",
+ "Genji (1864â1865)",
+ "KeiÅ (1865â1868)",
+ "Meiji",
+ "TaishÅ",
+ "ShÅwa",
+ "ΧεÏÏÎι",
+ "ΡÎιβα",
+ }
+ }
}
persian{
eras{
diff --git a/icuSources/data/locales/en.txt b/icuSources/data/locales/en.txt
index d787a379..407f71ac 100644
--- a/icuSources/data/locales/en.txt
+++ b/icuSources/data/locales/en.txt
@@ -205,7 +205,7 @@ en{
}
}
}
- Version{"2.1.41.97"}
+ Version{"2.1.41.98"}
calendar{
buddhist{
eras{
@@ -499,6 +499,44 @@ en{
yyyyQQQQ{"QQQQ y G"}
}
intervalFormats{
+ Gy{
+ G{"y Gââây G"}
+ y{"yââây G"}
+ }
+ GyM{
+ G{"M/y GGGGGâââM/y GGGGG"}
+ M{"M/yâââM/y GGGGG"}
+ y{"M/yâââM/y GGGGG"}
+ }
+ GyMEd{
+ G{"E, M/d/y GGGGGâââE, M/d/y GGGGG"}
+ M{"E, M/d/yâââE, M/d/y GGGGG"}
+ d{"E, M/d/yâââE, M/d/y GGGGG"}
+ y{"E, M/d/yâââE, M/d/y GGGGG"}
+ }
+ GyMMM{
+ G{"MMM y GâââMMM y G"}
+ M{"MMMâââMMM y G"}
+ y{"MMM yâââMMM y G"}
+ }
+ GyMMMEd{
+ G{"E, MMM d, y GâââE, MMM d, y G"}
+ M{"E, MMM dâââE, MMM d, y G"}
+ d{"E, MMM dâââE, MMM d, y G"}
+ y{"E, MMM d, yâââE, MMM d, y G"}
+ }
+ GyMMMd{
+ G{"MMM d, y GâââMMM d, y G"}
+ M{"MMM dâââMMM d, y G"}
+ d{"MMM dâââd, y G"}
+ y{"MMM d, yâââMMM d, y G"}
+ }
+ GyMd{
+ G{"M/d/y GGGGGâââM/d/y GGGGG"}
+ M{"M/d/yâââM/d/y GGGGG"}
+ d{"M/d/yâââM/d/y GGGGG"}
+ y{"M/d/yâââM/d/y GGGGG"}
+ }
H{
H{"HHâââHH"}
}
@@ -812,6 +850,44 @@ en{
}
}
intervalFormats{
+ Gy{
+ G{"y Gââây G"}
+ y{"yââây G"}
+ }
+ GyM{
+ G{"M/y GGGGGâââM/y GGGGG"}
+ M{"M/yâââM/y GGGGG"}
+ y{"M/yâââM/y GGGGG"}
+ }
+ GyMEd{
+ G{"E, M/d/y GGGGGâââE, M/d/y GGGGG"}
+ M{"E, M/d/yâââE, M/d/y GGGGG"}
+ d{"E, M/d/yâââE, M/d/y GGGGG"}
+ y{"E, M/d/yâââE, M/d/y GGGGG"}
+ }
+ GyMMM{
+ G{"MMM y GâââMMM y G"}
+ M{"MMMâââMMM y G"}
+ y{"MMM yâââMMM y G"}
+ }
+ GyMMMEd{
+ G{"E, MMM d, y GâââE, MMM d, y G"}
+ M{"E, MMM dâââE, MMM d, y G"}
+ d{"E, MMM dâââE, MMM d, y G"}
+ y{"E, MMM d, yâââE, MMM d, y G"}
+ }
+ GyMMMd{
+ G{"MMM d, y GâââMMM d, y G"}
+ M{"MMM dâââMMM d, y G"}
+ d{"MMM dâââd, y G"}
+ y{"MMM d, yâââMMM d, y G"}
+ }
+ GyMd{
+ G{"M/d/y GGGGGâââM/d/y GGGGG"}
+ M{"M/d/yâââM/d/y GGGGG"}
+ d{"M/d/yâââM/d/y GGGGG"}
+ y{"M/d/yâââM/d/y GGGGG"}
+ }
H{
H{"HHâââHH"}
}
diff --git a/icuSources/data/locales/fa.txt b/icuSources/data/locales/fa.txt
index 3b1587b1..14c45255 100644
--- a/icuSources/data/locales/fa.txt
+++ b/icuSources/data/locales/fa.txt
@@ -1450,6 +1450,249 @@ fa{
}
}
}
+ japanese{
+ eras{
+ abbreviated{
+ "Taika (645â650)",
+ "Hakuchi (650â671)",
+ "HakuhÅ (672â686)",
+ "ShuchÅ (686â701)",
+ "TaihÅ (701â704)",
+ "Keiun (704â708)",
+ "WadÅ (708â715)",
+ "Reiki (715â717)",
+ "YÅrÅ (717â724)",
+ "Jinki (724â729)",
+ "TenpyÅ (729â749)",
+ "TenpyÅ-kampÅ (749â749)",
+ "TenpyÅ-shÅhÅ (749â757)",
+ "TenpyÅ-hÅji (757â765)",
+ "TenpyÅ-jingo (765â767)",
+ "Jingo-keiun (767â770)",
+ "HÅki (770â780)",
+ "Ten-Å (781â782)",
+ "Enryaku (782â806)",
+ "DaidÅ (806â810)",
+ "KÅnin (810â824)",
+ "TenchÅ (824â834)",
+ "JÅwa (834â848)",
+ "KajÅ (848â851)",
+ "Ninju (851â854)",
+ "SaikÅ (854â857)",
+ "Ten-an (857â859)",
+ "JÅgan (859â877)",
+ "GangyÅ (877â885)",
+ "Ninna (885â889)",
+ "KanpyÅ (889â898)",
+ "ShÅtai (898â901)",
+ "Engi (901â923)",
+ "EnchÅ (923â931)",
+ "JÅhei (931â938)",
+ "TengyÅ (938â947)",
+ "Tenryaku (947â957)",
+ "Tentoku (957â961)",
+ "Åwa (961â964)",
+ "KÅhÅ (964â968)",
+ "Anna (968â970)",
+ "Tenroku (970â973)",
+ "Tenâen (973â976)",
+ "JÅgen (976â978)",
+ "Tengen (978â983)",
+ "Eikan (983â985)",
+ "Kanna (985â987)",
+ "Eien (987â989)",
+ "Eiso (989â990)",
+ "ShÅryaku (990â995)",
+ "ChÅtoku (995â999)",
+ "ChÅhÅ (999â1004)",
+ "KankÅ (1004â1012)",
+ "ChÅwa (1012â1017)",
+ "Kannin (1017â1021)",
+ "Jian (1021â1024)",
+ "Manju (1024â1028)",
+ "ChÅgen (1028â1037)",
+ "ChÅryaku (1037â1040)",
+ "ChÅkyÅ« (1040â1044)",
+ "Kantoku (1044â1046)",
+ "EishÅ (1046â1053)",
+ "Tengi (1053â1058)",
+ "KÅhei (1058â1065)",
+ "Jiryaku (1065â1069)",
+ "EnkyÅ« (1069â1074)",
+ "ShÅho (1074â1077)",
+ "ShÅryaku (1077â1081)",
+ "EihÅ (1081â1084)",
+ "Åtoku (1084â1087)",
+ "Kanji (1087â1094)",
+ "KahÅ (1094â1096)",
+ "EichÅ (1096â1097)",
+ "JÅtoku (1097â1099)",
+ "KÅwa (1099â1104)",
+ "ChÅji (1104â1106)",
+ "KashÅ (1106â1108)",
+ "Tennin (1108â1110)",
+ "Ten-ei (1110â1113)",
+ "EikyÅ« (1113â1118)",
+ "Genâei (1118â1120)",
+ "HÅan (1120â1124)",
+ "Tenji (1124â1126)",
+ "Daiji (1126â1131)",
+ "TenshÅ (1131â1132)",
+ "ChÅshÅ (1132â1135)",
+ "HÅen (1135â1141)",
+ "Eiji (1141â1142)",
+ "KÅji (1142â1144)",
+ "TenâyÅ (1144â1145)",
+ "KyÅ«an (1145â1151)",
+ "Ninpei (1151â1154)",
+ "KyÅ«ju (1154â1156)",
+ "HÅgen (1156â1159)",
+ "Heiji (1159â1160)",
+ "Eiryaku (1160â1161)",
+ "Åho (1161â1163)",
+ "ChÅkan (1163â1165)",
+ "Eiman (1165â1166)",
+ "Ninâan (1166â1169)",
+ "KaÅ (1169â1171)",
+ "ShÅan (1171â1175)",
+ "Angen (1175â1177)",
+ "JishÅ (1177â1181)",
+ "YÅwa (1181â1182)",
+ "Juei (1182â1184)",
+ "Genryaku (1184â1185)",
+ "Bunji (1185â1190)",
+ "KenkyÅ« (1190â1199)",
+ "ShÅji (1199â1201)",
+ "Kennin (1201â1204)",
+ "GenkyÅ« (1204â1206)",
+ "Kenâei (1206â1207)",
+ "JÅgen (1207â1211)",
+ "Kenryaku (1211â1213)",
+ "KenpÅ (1213â1219)",
+ "JÅkyÅ« (1219â1222)",
+ "JÅÅ (1222â1224)",
+ "Gennin (1224â1225)",
+ "Karoku (1225â1227)",
+ "Antei (1227â1229)",
+ "Kanki (1229â1232)",
+ "JÅei (1232â1233)",
+ "Tenpuku (1233â1234)",
+ "Bunryaku (1234â1235)",
+ "Katei (1235â1238)",
+ "Ryakunin (1238â1239)",
+ "EnâÅ (1239â1240)",
+ "Ninji (1240â1243)",
+ "Kangen (1243â1247)",
+ "HÅji (1247â1249)",
+ "KenchÅ (1249â1256)",
+ "KÅgen (1256â1257)",
+ "ShÅka (1257â1259)",
+ "ShÅgen (1259â1260)",
+ "BunâÅ (1260â1261)",
+ "KÅchÅ (1261â1264)",
+ "Bunâei (1264â1275)",
+ "Kenji (1275â1278)",
+ "KÅan (1278â1288)",
+ "ShÅÅ (1288â1293)",
+ "Einin (1293â1299)",
+ "ShÅan (1299â1302)",
+ "Kengen (1302â1303)",
+ "Kagen (1303â1306)",
+ "Tokuji (1306â1308)",
+ "EnkyÅ (1308â1311)",
+ "ÅchÅ (1311â1312)",
+ "ShÅwa (1312â1317)",
+ "BunpÅ (1317â1319)",
+ "GenÅ (1319â1321)",
+ "GenkÅ (1321â1324)",
+ "ShÅchÅ« (1324â1326)",
+ "Karyaku (1326â1329)",
+ "Gentoku (1329â1331)",
+ "GenkÅ (1331â1334)",
+ "Kenmu (1334â1336)",
+ "Engen (1336â1340)",
+ "KÅkoku (1340â1346)",
+ "ShÅhei (1346â1370)",
+ "Kentoku (1370â1372)",
+ "BunchÅ« (1372â1375)",
+ "Tenju (1375â1379)",
+ "KÅryaku (1379â1381)",
+ "KÅwa (1381â1384)",
+ "GenchÅ« (1384â1392)",
+ "Meitoku (1384â1387)",
+ "Kakei (1387â1389)",
+ "KÅÅ (1389â1390)",
+ "Meitoku (1390â1394)",
+ "Åei (1394â1428)",
+ "ShÅchÅ (1428â1429)",
+ "EikyÅ (1429â1441)",
+ "Kakitsu (1441â1444)",
+ "Bunâan (1444â1449)",
+ "HÅtoku (1449â1452)",
+ "KyÅtoku (1452â1455)",
+ "KÅshÅ (1455â1457)",
+ "ChÅroku (1457â1460)",
+ "KanshÅ (1460â1466)",
+ "BunshÅ (1466â1467)",
+ "Ånin (1467â1469)",
+ "Bunmei (1469â1487)",
+ "ChÅkyÅ (1487â1489)",
+ "Entoku (1489â1492)",
+ "MeiÅ (1492â1501)",
+ "Bunki (1501â1504)",
+ "EishÅ (1504â1521)",
+ "Taiei (1521â1528)",
+ "KyÅroku (1528â1532)",
+ "Tenbun (1532â1555)",
+ "KÅji (1555â1558)",
+ "Eiroku (1558â1570)",
+ "Genki (1570â1573)",
+ "TenshÅ (1573â1592)",
+ "Bunroku (1592â1596)",
+ "KeichÅ (1596â1615)",
+ "Genna (1615â1624)",
+ "Kanâei (1624â1644)",
+ "ShÅho (1644â1648)",
+ "Keian (1648â1652)",
+ "JÅÅ (1652â1655)",
+ "Meireki (1655â1658)",
+ "Manji (1658â1661)",
+ "Kanbun (1661â1673)",
+ "EnpÅ (1673â1681)",
+ "Tenna (1681â1684)",
+ "JÅkyÅ (1684â1688)",
+ "Genroku (1688â1704)",
+ "HÅei (1704â1711)",
+ "ShÅtoku (1711â1716)",
+ "KyÅhÅ (1716â1736)",
+ "Genbun (1736â1741)",
+ "KanpÅ (1741â1744)",
+ "EnkyÅ (1744â1748)",
+ "Kanâen (1748â1751)",
+ "HÅreki (1751â1764)",
+ "Meiwa (1764â1772)",
+ "Anâei (1772â1781)",
+ "Tenmei (1781â1789)",
+ "Kansei (1789â1801)",
+ "KyÅwa (1801â1804)",
+ "Bunka (1804â1818)",
+ "Bunsei (1818â1830)",
+ "TenpÅ (1830â1844)",
+ "KÅka (1844â1848)",
+ "Kaei (1848â1854)",
+ "Ansei (1854â1860)",
+ "Manâen (1860â1861)",
+ "BunkyÅ« (1861â1864)",
+ "Genji (1864â1865)",
+ "KeiÅ (1865â1868)",
+ "Meiji",
+ "TaishÅ",
+ "ShÅwa",
+ "ÙÛسÙâاÛ",
+ "رÛÙا",
+ }
+ }
+ }
persian{
DateTimePatterns{
"H:mm:ss (zzzz)",
diff --git a/icuSources/data/locales/he.txt b/icuSources/data/locales/he.txt
index a431a70f..2f1cb087 100644
--- a/icuSources/data/locales/he.txt
+++ b/icuSources/data/locales/he.txt
@@ -1837,6 +1837,7 @@ he{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/hi.txt b/icuSources/data/locales/hi.txt
index fbb0a0ab..54f922b8 100644
--- a/icuSources/data/locales/hi.txt
+++ b/icuSources/data/locales/hi.txt
@@ -1260,7 +1260,8 @@ hi{
"मà¥à¤à¥",
"ताà¤à¤¶à¥",
"शà¥à¤µà¤¾",
- "हà¥à¤à¤¸à¥à¤",
+ "हà¥à¤à¤¸à¥à¤",
+ "रà¥à¤à¤µà¤¾",
}
}
}
diff --git a/icuSources/data/locales/hr.txt b/icuSources/data/locales/hr.txt
index 5608a853..af61fa4d 100644
--- a/icuSources/data/locales/hr.txt
+++ b/icuSources/data/locales/hr.txt
@@ -1604,6 +1604,7 @@ hr{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/id.txt b/icuSources/data/locales/id.txt
index 704d31b0..7c686dfb 100644
--- a/icuSources/data/locales/id.txt
+++ b/icuSources/data/locales/id.txt
@@ -2189,6 +2189,7 @@ id{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/ja.txt b/icuSources/data/locales/ja.txt
index 6853f175..8143ae33 100644
--- a/icuSources/data/locales/ja.txt
+++ b/icuSources/data/locales/ja.txt
@@ -233,7 +233,7 @@ ja{
native{"latn"}
traditional{"jpan"}
}
- Version{"2.1.41.97"}
+ Version{"2.1.41.98"}
calendar{
buddhist{
DateTimePatterns{
@@ -1168,8 +1168,8 @@ ja{
"H:mm",
"Gyå¹´Mædæ¥(EEEE)",
"Gyå¹´Mædæ¥",
- "Gy/MM/dd",
- "Gy/MM/dd",
+ "GGGGGy/MM/dd",
+ "GGGGGy/MM/dd",
"{1} {0}",
"{1} {0}",
"{1} {0}",
@@ -1213,19 +1213,74 @@ ja{
ms{"mm:ss"}
y{"Gyå¹´"}
yyyy{"Gyå¹´"}
- yyyyM{"Gy/M"}
- yyyyMEEEEd{"Gy/M/d(EEEE)"}
- yyyyMEd{"Gy/M/d(E)"}
+ yyyyM{"GGGGGy/M"}
+ yyyyMEEEEd{"GGGGGy/M/d(EEEE)"}
+ yyyyMEd{"GGGGGy/M/d(E)"}
yyyyMMM{"Gyå¹´Mæ"}
yyyyMMMEEEEd{"Gyå¹´Mædæ¥(EEEE)"}
yyyyMMMEd{"Gyå¹´Mædæ¥(E)"}
yyyyMMMM{"Gyå¹´Mæ"}
yyyyMMMd{"Gyå¹´Mædæ¥"}
- yyyyMd{"Gy/M/d"}
+ yyyyMd{"GGGGGy/M/d"}
yyyyQQQ{"Gy/QQQ"}
yyyyQQQQ{"Gyå¹´QQQQ"}
}
intervalFormats{
+ GGGGGyM{
+ G{"GGGGGy/MMï½GGGGGy/MM"}
+ M{"GGGGGy/MMï½y/MM"}
+ y{"GGGGGy/MMï½y/MM"}
+ }
+ GGGGGyMEd{
+ G{"GGGGGy/MM/dd(E)ï½GGGGGy/MM/dd(E)"}
+ M{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ d{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ y{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ }
+ GGGGGyMd{
+ G{"GGGGGy/MM/ddï½GGGGGy/MM/dd"}
+ M{"GGGGGy/MM/ddï½y/MM/dd"}
+ d{"GGGGGy/MM/ddï½y/MM/dd"}
+ y{"GGGGGy/MM/ddï½y/MM/dd"}
+ }
+ Gy{
+ G{"Gyå¹´ï½Gyå¹´"}
+ y{"Gyå¹´ï½yå¹´"}
+ }
+ GyM{
+ G{"GGGGGy/MMï½GGGGGy/MM"}
+ M{"GGGGGy/MMï½y/MM"}
+ y{"GGGGGy/MMï½y/MM"}
+ }
+ GyMEd{
+ G{"GGGGGy/MM/dd(E)ï½GGGGGy/MM/dd(E)"}
+ M{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ d{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ y{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ }
+ GyMMM{
+ G{"Gyå¹´Mæï½Gyå¹´Mæ"}
+ M{"Gyå¹´Mæï½Mæ"}
+ y{"Gyå¹´Mæï½yå¹´Mæ"}
+ }
+ GyMMMEd{
+ G{"Gyå¹´Mædæ¥(E)ï½Gyå¹´Mædæ¥(E)"}
+ M{"Gyå¹´Mædæ¥(E)ï½Mædæ¥(E)"}
+ d{"Gyå¹´Mædæ¥(E)ï½dæ¥(E)"}
+ y{"Gyå¹´Mædæ¥(E)ï½yå¹´Mædæ¥(E)"}
+ }
+ GyMMMd{
+ G{"Gyå¹´Mædæ¥ï½Gyå¹´Mædæ¥"}
+ M{"Gyå¹´Mædæ¥ï½Mædæ¥"}
+ d{"Gyå¹´Mædæ¥ï½dæ¥"}
+ y{"Gyå¹´Mædæ¥ï½yå¹´Mædæ¥"}
+ }
+ GyMd{
+ G{"GGGGGy/MM/ddï½GGGGGy/MM/dd"}
+ M{"GGGGGy/MM/ddï½y/MM/dd"}
+ d{"GGGGGy/MM/ddï½y/MM/dd"}
+ y{"GGGGGy/MM/ddï½y/MM/dd"}
+ }
H{
H{"Hæï½Hæ"}
}
@@ -1291,13 +1346,13 @@ ja{
y{"Gyå¹´ï½yå¹´"}
}
yM{
- M{"Gy/MMï½y/MM"}
- y{"Gy/MMï½y/MM"}
+ M{"GGGGGy/MMï½y/MM"}
+ y{"GGGGGy/MMï½y/MM"}
}
yMEd{
- M{"Gy/MM/dd(E)ï½y/MM/dd(E)"}
- d{"Gy/MM/dd(E)ï½y/MM/dd(E)"}
- y{"Gy/MM/dd(E)ï½y/MM/dd(E)"}
+ M{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ d{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
+ y{"GGGGGy/MM/dd(E)ï½y/MM/dd(E)"}
}
yMMM{
M{"Gyå¹´Mæï½Mæ"}
@@ -1318,9 +1373,9 @@ ja{
y{"Gyå¹´Mædæ¥ï½yå¹´Mædæ¥"}
}
yMd{
- M{"Gy/MM/ddï½y/MM/dd"}
- d{"Gy/MM/ddï½y/MM/dd"}
- y{"Gy/MM/ddï½y/MM/dd"}
+ M{"GGGGGy/MM/ddï½y/MM/dd"}
+ d{"GGGGGy/MM/ddï½y/MM/dd"}
+ y{"GGGGGy/MM/ddï½y/MM/dd"}
}
}
}
@@ -1585,6 +1640,44 @@ ja{
}
}
intervalFormats{
+ Gy{
+ G{"Gyå¹´ï½Gyå¹´"}
+ y{"Gyå¹´ï½yå¹´"}
+ }
+ GyM{
+ G{"Gy/MMï½Gy/MM"}
+ M{"Gy/MMï½y/MM"}
+ y{"Gy/MMï½y/MM"}
+ }
+ GyMEd{
+ G{"Gy/MM/dd(E)ï½Gy/MM/dd(E)"}
+ M{"Gy/MM/dd(E)ï½y/MM/dd(E)"}
+ d{"Gy/MM/dd(E)ï½y/MM/dd(E)"}
+ y{"Gy/MM/dd(E)ï½y/MM/dd(E)"}
+ }
+ GyMMM{
+ G{"Gyå¹´Mæï½Gyå¹´Mæ"}
+ M{"Gyå¹´Mæï½Mæ"}
+ y{"Gyå¹´Mæï½yå¹´Mæ"}
+ }
+ GyMMMEd{
+ G{"Gyå¹´Mædæ¥(E)ï½Gyå¹´Mædæ¥(E)"}
+ M{"Gyå¹´Mædæ¥(E)ï½Mædæ¥(E)"}
+ d{"Gyå¹´Mædæ¥(E)ï½dæ¥(E)"}
+ y{"Gyå¹´Mædæ¥(E)ï½yå¹´Mædæ¥(E)"}
+ }
+ GyMMMd{
+ G{"Gyå¹´Mædæ¥ï½Gyå¹´Mædæ¥"}
+ M{"Gyå¹´Mædæ¥ï½Mædæ¥"}
+ d{"Gyå¹´Mædæ¥ï½dæ¥"}
+ y{"Gyå¹´Mædæ¥ï½yå¹´Mædæ¥"}
+ }
+ GyMd{
+ G{"Gy/MM/ddï½Gy/MM/dd"}
+ M{"Gy/MM/ddï½y/MM/dd"}
+ d{"Gy/MM/ddï½y/MM/dd"}
+ y{"Gy/MM/ddï½y/MM/dd"}
+ }
H{
H{"Hæï½Hæ"}
}
@@ -2172,10 +2265,16 @@ ja{
"H:mm:ss z",
"H:mm:ss",
"H:mm",
- "Gyå¹´Mædæ¥ EEEE",
- "Gyå¹´Mædæ¥",
- "GGGGGyy/MM/dd",
- "GGGGGyy/MM/dd",
+ {
+ "Gyå¹´Mædæ¥ EEEE",
+ "y=jpanyear",
+ }
+ {
+ "Gyå¹´Mædæ¥",
+ "y=jpanyear",
+ }
+ "GGGGGy/MM/dd",
+ "GGGGGy/MM/dd",
"{1} {0}",
"{1} {0}",
"{1} {0}",
@@ -2190,6 +2289,9 @@ ja{
Ed{"dæ¥(E)"}
Ehm{"E aK:mm"}
Ehms{"E aK:mm:ss"}
+ GGGGGyM{"GGGGGy/MM"}
+ GGGGGyMEd{"GGGGGy/MM/dd(E)"}
+ GGGGGyMd{"GGGGGy/MM/dd"}
Gy{"Gyå¹´"}
GyMMM{"Gyå¹´Mæ"}
GyMMMEEEEd{"Gyå¹´Mædæ¥ EEEE"}
@@ -2214,16 +2316,16 @@ ja{
ms{"mm:ss"}
y{"Gyå¹´"}
yyyy{"Gyå¹´"}
- yyyyM{"GGGGGyy/M"}
- yyyyMEEEEd{"GGGGGyy/M/dEEEE"}
- yyyyMEd{"GGGGGyy/M/d(E)"}
- yyyyMM{"GGGGGyy/MM"}
+ yyyyM{"GGGGGy/M"}
+ yyyyMEEEEd{"GGGGGy/M/dEEEE"}
+ yyyyMEd{"GGGGGy/M/d(E)"}
+ yyyyMM{"GGGGGy/MM"}
yyyyMMM{"Gyå¹´Mæ"}
yyyyMMMEEEEd{"Gyå¹´Mædæ¥ EEEE"}
yyyyMMMEd{"Gyå¹´Mædæ¥(E)"}
yyyyMMMM{"Gyå¹´Mæ"}
yyyyMMMd{"Gyå¹´Mædæ¥"}
- yyyyMd{"GGGGGyy/M/d"}
+ yyyyMd{"GGGGGy/M/d"}
yyyyQQQ{"Gy/QQQ"}
yyyyQQQQ{"Gyå¹´QQQQ"}
}
@@ -2465,6 +2567,7 @@ ja{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
narrow{
"大å",
@@ -2703,6 +2806,7 @@ ja{
"T",
"S",
"H",
+ "R",
}
}
}
diff --git a/icuSources/data/locales/ko.txt b/icuSources/data/locales/ko.txt
index babff138..0035ba53 100644
--- a/icuSources/data/locales/ko.txt
+++ b/icuSources/data/locales/ko.txt
@@ -1909,6 +1909,7 @@ ko{
"ë¤ì´ì¼",
"ì¼ì",
"í¤ì´ì¸ì´",
+ "ë ì´ì",
}
}
}
diff --git a/icuSources/data/locales/lo.txt b/icuSources/data/locales/lo.txt
index 6f40fbee..f3b1732d 100644
--- a/icuSources/data/locales/lo.txt
+++ b/icuSources/data/locales/lo.txt
@@ -1845,6 +1845,7 @@ lo{
"à»àºà»àº",
"à»àºàº§àº²",
"ຮີàºàºµ",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/lt.txt b/icuSources/data/locales/lt.txt
index 457dc018..2a3e57c1 100644
--- a/icuSources/data/locales/lt.txt
+++ b/icuSources/data/locales/lt.txt
@@ -2466,6 +2466,7 @@ lt{
"Taišo",
"Å ova",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/nb.txt b/icuSources/data/locales/nb.txt
index 121d8ae9..04e3d21a 100644
--- a/icuSources/data/locales/nb.txt
+++ b/icuSources/data/locales/nb.txt
@@ -5364,6 +5364,7 @@ nb{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645â650)",
@@ -5602,6 +5603,7 @@ nb{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645â650)",
@@ -5840,6 +5842,7 @@ nb{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
intervalFormats{
diff --git a/icuSources/data/locales/nl.txt b/icuSources/data/locales/nl.txt
index ab20bdc4..bd0478a7 100644
--- a/icuSources/data/locales/nl.txt
+++ b/icuSources/data/locales/nl.txt
@@ -4853,6 +4853,7 @@ nl{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645â650)",
@@ -5091,6 +5092,7 @@ nl{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645â650)",
@@ -5329,6 +5331,7 @@ nl{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/root.txt b/icuSources/data/locales/root.txt
index 343bd4cd..5f1d859f 100644
--- a/icuSources/data/locales/root.txt
+++ b/icuSources/data/locales/root.txt
@@ -172,7 +172,7 @@ root{
minimumGroupingDigits{"1"}
native{"latn"}
}
- Version{"2.1.41.58"}
+ Version{"2.1.41.59"}
calendar{
buddhist{
AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"}
@@ -807,6 +807,44 @@ root{
wide:alias{"/LOCALE/calendar/generic/eras/abbreviated"}
}
intervalFormats{
+ Gy{
+ G{"G y â G y"}
+ y{"G yây"}
+ }
+ GyM{
+ G{"GGGGG y-MM â GGGGG y-MM"}
+ M{"GGGGG y-MM â y-MM"}
+ y{"GGGGG y-MM â y-MM"}
+ }
+ GyMEd{
+ G{"GGGGG y-MM-dd, E â GGGGG y-MM-dd, E"}
+ M{"GGGGG y-MM-dd, E â y-MM-dd, E"}
+ d{"GGGGG y-MM-dd, E â y-MM-dd, E"}
+ y{"GGGGG y-MM-dd, E â y-MM-dd, E"}
+ }
+ GyMMM{
+ G{"G y MMM â G y MMM"}
+ M{"G y MMMâMMM"}
+ y{"G y MMM â y MMM"}
+ }
+ GyMMMEd{
+ G{"G y MMM d, E â G y MMM d, E"}
+ M{"G y MMM d, E â MMM d, E"}
+ d{"G y MMM d, E â MMM d, E"}
+ y{"G y MMM d, E â y MMM d, E"}
+ }
+ GyMMMd{
+ G{"G y MMM d â G y MMM d"}
+ M{"G y MMM d â MMM d"}
+ d{"G y MMM dâd"}
+ y{"G y MMM d â y MMM d"}
+ }
+ GyMd{
+ G{"GGGGG y-MM-dd â GGGGG y-MM-dd"}
+ M{"GGGGG y-MM-dd â y-MM-dd"}
+ d{"GGGGG y-MM-dd â y-MM-dd"}
+ y{"GGGGG y-MM-dd â y-MM-dd"}
+ }
H{
H{"HHâHH"}
}
@@ -1067,6 +1105,44 @@ root{
wide:alias{"/LOCALE/calendar/gregorian/eras/abbreviated"}
}
intervalFormats{
+ Gy{
+ G{"G y â G y"}
+ y{"G yây"}
+ }
+ GyM{
+ G{"GGGGG y-MM â GGGGG y-MM"}
+ M{"GGGGG y-MM â y-MM"}
+ y{"GGGGG y-MM â y-MM"}
+ }
+ GyMEd{
+ G{"GGGGG y-MM-dd, E â GGGGG y-MM-dd, E"}
+ M{"GGGGG y-MM-dd, E â y-MM-dd, E"}
+ d{"GGGGG y-MM-dd, E â y-MM-dd, E"}
+ y{"GGGGG y-MM-dd, E â y-MM-dd, E"}
+ }
+ GyMMM{
+ G{"G y MMM â G y MMM"}
+ M{"G y MMMâMMM"}
+ y{"G y MMM â y MMM"}
+ }
+ GyMMMEd{
+ G{"G y MMM d, E â G y MMM d, E"}
+ M{"G y MMM d, E â MMM d, E"}
+ d{"G y MMM d, E â MMM d, E"}
+ y{"G y MMM d, E â y MMM d, E"}
+ }
+ GyMMMd{
+ G{"G y MMM d â G y MMM d"}
+ M{"G y MMM d â MMM d"}
+ d{"G y MMM dâd"}
+ y{"G y MMM d â y MMM d"}
+ }
+ GyMd{
+ G{"GGGGG y-MM-dd â GGGGG y-MM-dd"}
+ M{"GGGGG y-MM-dd â y-MM-dd"}
+ d{"GGGGG y-MM-dd â y-MM-dd"}
+ y{"GGGGG y-MM-dd â y-MM-dd"}
+ }
H{
H{"HHâHH"}
}
@@ -1713,6 +1789,7 @@ root{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645â650)",
@@ -1951,6 +2028,7 @@ root{
"T",
"S",
"H",
+ "R",
}
wide:alias{"/LOCALE/calendar/japanese/eras/abbreviated"}
}
diff --git a/icuSources/data/locales/ru.txt b/icuSources/data/locales/ru.txt
index 2be4bcc0..a1005f07 100644
--- a/icuSources/data/locales/ru.txt
+++ b/icuSources/data/locales/ru.txt
@@ -1837,6 +1837,7 @@ ru{
"ÐпоÑ
а ТайÑÑо",
"СÑова",
"ÐпоÑ
а Ð¥ÑйÑÑй",
+ "Ð Ñйва",
}
}
}
diff --git a/icuSources/data/locales/sr.txt b/icuSources/data/locales/sr.txt
index faef61c4..a78f7bc5 100644
--- a/icuSources/data/locales/sr.txt
+++ b/icuSources/data/locales/sr.txt
@@ -1252,6 +1252,7 @@ sr{
"ТаиÑо",
"Шова",
"ХаиÑеи",
+ "Реива",
}
}
}
diff --git a/icuSources/data/locales/sr_Latn.txt b/icuSources/data/locales/sr_Latn.txt
index 57ceb03c..5d352389 100644
--- a/icuSources/data/locales/sr_Latn.txt
+++ b/icuSources/data/locales/sr_Latn.txt
@@ -1257,6 +1257,7 @@ sr_Latn{
"Taišo",
"Å ova",
"Haisei",
+ "Reiva",
}
}
}
diff --git a/icuSources/data/locales/sv.txt b/icuSources/data/locales/sv.txt
index 327eea3c..91e80912 100644
--- a/icuSources/data/locales/sv.txt
+++ b/icuSources/data/locales/sv.txt
@@ -1658,6 +1658,7 @@ sv{
"TaishÅ",
"ShÅwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/icuSources/data/locales/th.txt b/icuSources/data/locales/th.txt
index e55aaf7c..5dc8b3c2 100644
--- a/icuSources/data/locales/th.txt
+++ b/icuSources/data/locales/th.txt
@@ -2297,6 +2297,7 @@ th{
"à¸à¸°à¸à¸´à¹à¸",
"à¹à¸à¸§à¸°",
"à¹à¸®à¹à¸",
+ "à¹à¸£à¸§à¸°",
}
}
}
diff --git a/icuSources/data/locales/uk.txt b/icuSources/data/locales/uk.txt
index 6470cfad..2bea5a87 100644
--- a/icuSources/data/locales/uk.txt
+++ b/icuSources/data/locales/uk.txt
@@ -1416,6 +1416,249 @@ uk{
}
}
}
+ japanese{
+ eras{
+ abbreviated{
+ "Taika (645â650)",
+ "Hakuchi (650â671)",
+ "HakuhÅ (672â686)",
+ "ShuchÅ (686â701)",
+ "TaihÅ (701â704)",
+ "Keiun (704â708)",
+ "WadÅ (708â715)",
+ "Reiki (715â717)",
+ "YÅrÅ (717â724)",
+ "Jinki (724â729)",
+ "TenpyÅ (729â749)",
+ "TenpyÅ-kampÅ (749â749)",
+ "TenpyÅ-shÅhÅ (749â757)",
+ "TenpyÅ-hÅji (757â765)",
+ "TenpyÅ-jingo (765â767)",
+ "Jingo-keiun (767â770)",
+ "HÅki (770â780)",
+ "Ten-Å (781â782)",
+ "Enryaku (782â806)",
+ "DaidÅ (806â810)",
+ "KÅnin (810â824)",
+ "TenchÅ (824â834)",
+ "JÅwa (834â848)",
+ "KajÅ (848â851)",
+ "Ninju (851â854)",
+ "SaikÅ (854â857)",
+ "Ten-an (857â859)",
+ "JÅgan (859â877)",
+ "GangyÅ (877â885)",
+ "Ninna (885â889)",
+ "KanpyÅ (889â898)",
+ "ShÅtai (898â901)",
+ "Engi (901â923)",
+ "EnchÅ (923â931)",
+ "JÅhei (931â938)",
+ "TengyÅ (938â947)",
+ "Tenryaku (947â957)",
+ "Tentoku (957â961)",
+ "Åwa (961â964)",
+ "KÅhÅ (964â968)",
+ "Anna (968â970)",
+ "Tenroku (970â973)",
+ "Tenâen (973â976)",
+ "JÅgen (976â978)",
+ "Tengen (978â983)",
+ "Eikan (983â985)",
+ "Kanna (985â987)",
+ "Eien (987â989)",
+ "Eiso (989â990)",
+ "ShÅryaku (990â995)",
+ "ChÅtoku (995â999)",
+ "ChÅhÅ (999â1004)",
+ "KankÅ (1004â1012)",
+ "ChÅwa (1012â1017)",
+ "Kannin (1017â1021)",
+ "Jian (1021â1024)",
+ "Manju (1024â1028)",
+ "ChÅgen (1028â1037)",
+ "ChÅryaku (1037â1040)",
+ "ChÅkyÅ« (1040â1044)",
+ "Kantoku (1044â1046)",
+ "EishÅ (1046â1053)",
+ "Tengi (1053â1058)",
+ "KÅhei (1058â1065)",
+ "Jiryaku (1065â1069)",
+ "EnkyÅ« (1069â1074)",
+ "ShÅho (1074â1077)",
+ "ShÅryaku (1077â1081)",
+ "EihÅ (1081â1084)",
+ "Åtoku (1084â1087)",
+ "Kanji (1087â1094)",
+ "KahÅ (1094â1096)",
+ "EichÅ (1096â1097)",
+ "JÅtoku (1097â1099)",
+ "KÅwa (1099â1104)",
+ "ChÅji (1104â1106)",
+ "KashÅ (1106â1108)",
+ "Tennin (1108â1110)",
+ "Ten-ei (1110â1113)",
+ "EikyÅ« (1113â1118)",
+ "Genâei (1118â1120)",
+ "HÅan (1120â1124)",
+ "Tenji (1124â1126)",
+ "Daiji (1126â1131)",
+ "TenshÅ (1131â1132)",
+ "ChÅshÅ (1132â1135)",
+ "HÅen (1135â1141)",
+ "Eiji (1141â1142)",
+ "KÅji (1142â1144)",
+ "TenâyÅ (1144â1145)",
+ "KyÅ«an (1145â1151)",
+ "Ninpei (1151â1154)",
+ "KyÅ«ju (1154â1156)",
+ "HÅgen (1156â1159)",
+ "Heiji (1159â1160)",
+ "Eiryaku (1160â1161)",
+ "Åho (1161â1163)",
+ "ChÅkan (1163â1165)",
+ "Eiman (1165â1166)",
+ "Ninâan (1166â1169)",
+ "KaÅ (1169â1171)",
+ "ShÅan (1171â1175)",
+ "Angen (1175â1177)",
+ "JishÅ (1177â1181)",
+ "YÅwa (1181â1182)",
+ "Juei (1182â1184)",
+ "Genryaku (1184â1185)",
+ "Bunji (1185â1190)",
+ "KenkyÅ« (1190â1199)",
+ "ShÅji (1199â1201)",
+ "Kennin (1201â1204)",
+ "GenkyÅ« (1204â1206)",
+ "Kenâei (1206â1207)",
+ "JÅgen (1207â1211)",
+ "Kenryaku (1211â1213)",
+ "KenpÅ (1213â1219)",
+ "JÅkyÅ« (1219â1222)",
+ "JÅÅ (1222â1224)",
+ "Gennin (1224â1225)",
+ "Karoku (1225â1227)",
+ "Antei (1227â1229)",
+ "Kanki (1229â1232)",
+ "JÅei (1232â1233)",
+ "Tenpuku (1233â1234)",
+ "Bunryaku (1234â1235)",
+ "Katei (1235â1238)",
+ "Ryakunin (1238â1239)",
+ "EnâÅ (1239â1240)",
+ "Ninji (1240â1243)",
+ "Kangen (1243â1247)",
+ "HÅji (1247â1249)",
+ "KenchÅ (1249â1256)",
+ "KÅgen (1256â1257)",
+ "ShÅka (1257â1259)",
+ "ShÅgen (1259â1260)",
+ "BunâÅ (1260â1261)",
+ "KÅchÅ (1261â1264)",
+ "Bunâei (1264â1275)",
+ "Kenji (1275â1278)",
+ "KÅan (1278â1288)",
+ "ShÅÅ (1288â1293)",
+ "Einin (1293â1299)",
+ "ShÅan (1299â1302)",
+ "Kengen (1302â1303)",
+ "Kagen (1303â1306)",
+ "Tokuji (1306â1308)",
+ "EnkyÅ (1308â1311)",
+ "ÅchÅ (1311â1312)",
+ "ShÅwa (1312â1317)",
+ "BunpÅ (1317â1319)",
+ "GenÅ (1319â1321)",
+ "GenkÅ (1321â1324)",
+ "ShÅchÅ« (1324â1326)",
+ "Karyaku (1326â1329)",
+ "Gentoku (1329â1331)",
+ "GenkÅ (1331â1334)",
+ "Kenmu (1334â1336)",
+ "Engen (1336â1340)",
+ "KÅkoku (1340â1346)",
+ "ShÅhei (1346â1370)",
+ "Kentoku (1370â1372)",
+ "BunchÅ« (1372â1375)",
+ "Tenju (1375â1379)",
+ "KÅryaku (1379â1381)",
+ "KÅwa (1381â1384)",
+ "GenchÅ« (1384â1392)",
+ "Meitoku (1384â1387)",
+ "Kakei (1387â1389)",
+ "KÅÅ (1389â1390)",
+ "Meitoku (1390â1394)",
+ "Åei (1394â1428)",
+ "ShÅchÅ (1428â1429)",
+ "EikyÅ (1429â1441)",
+ "Kakitsu (1441â1444)",
+ "Bunâan (1444â1449)",
+ "HÅtoku (1449â1452)",
+ "KyÅtoku (1452â1455)",
+ "KÅshÅ (1455â1457)",
+ "ChÅroku (1457â1460)",
+ "KanshÅ (1460â1466)",
+ "BunshÅ (1466â1467)",
+ "Ånin (1467â1469)",
+ "Bunmei (1469â1487)",
+ "ChÅkyÅ (1487â1489)",
+ "Entoku (1489â1492)",
+ "MeiÅ (1492â1501)",
+ "Bunki (1501â1504)",
+ "EishÅ (1504â1521)",
+ "Taiei (1521â1528)",
+ "KyÅroku (1528â1532)",
+ "Tenbun (1532â1555)",
+ "KÅji (1555â1558)",
+ "Eiroku (1558â1570)",
+ "Genki (1570â1573)",
+ "TenshÅ (1573â1592)",
+ "Bunroku (1592â1596)",
+ "KeichÅ (1596â1615)",
+ "Genna (1615â1624)",
+ "Kanâei (1624â1644)",
+ "ShÅho (1644â1648)",
+ "Keian (1648â1652)",
+ "JÅÅ (1652â1655)",
+ "Meireki (1655â1658)",
+ "Manji (1658â1661)",
+ "Kanbun (1661â1673)",
+ "EnpÅ (1673â1681)",
+ "Tenna (1681â1684)",
+ "JÅkyÅ (1684â1688)",
+ "Genroku (1688â1704)",
+ "HÅei (1704â1711)",
+ "ShÅtoku (1711â1716)",
+ "KyÅhÅ (1716â1736)",
+ "Genbun (1736â1741)",
+ "KanpÅ (1741â1744)",
+ "EnkyÅ (1744â1748)",
+ "Kanâen (1748â1751)",
+ "HÅreki (1751â1764)",
+ "Meiwa (1764â1772)",
+ "Anâei (1772â1781)",
+ "Tenmei (1781â1789)",
+ "Kansei (1789â1801)",
+ "KyÅwa (1801â1804)",
+ "Bunka (1804â1818)",
+ "Bunsei (1818â1830)",
+ "TenpÅ (1830â1844)",
+ "KÅka (1844â1848)",
+ "Kaei (1848â1854)",
+ "Ansei (1854â1860)",
+ "Manâen (1860â1861)",
+ "BunkyÅ« (1861â1864)",
+ "Genji (1864â1865)",
+ "KeiÅ (1865â1868)",
+ "Meiji",
+ "TaishÅ",
+ "ShÅwa",
+ "ХейÑей",
+ "Рейва",
+ }
+ }
+ }
persian{
monthNames{
format{
diff --git a/icuSources/data/locales/yue.txt b/icuSources/data/locales/yue.txt
index 363e89ef..4713c2d5 100644
--- a/icuSources/data/locales/yue.txt
+++ b/icuSources/data/locales/yue.txt
@@ -2411,6 +2411,7 @@ yue{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
}
}
diff --git a/icuSources/data/locales/yue_Hans.txt b/icuSources/data/locales/yue_Hans.txt
index b002eca9..fc510f55 100644
--- a/icuSources/data/locales/yue_Hans.txt
+++ b/icuSources/data/locales/yue_Hans.txt
@@ -2409,6 +2409,7 @@ yue_Hans{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
}
}
diff --git a/icuSources/data/locales/zh.txt b/icuSources/data/locales/zh.txt
index f1e5dceb..59eb9083 100644
--- a/icuSources/data/locales/zh.txt
+++ b/icuSources/data/locales/zh.txt
@@ -3451,6 +3451,7 @@ zh{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
narrow{
"大å(645â650)",
@@ -3689,6 +3690,7 @@ zh{
"T",
"S",
"H",
+ "R",
}
wide{
"大å (645â650)",
@@ -3927,6 +3929,7 @@ zh{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
}
}
diff --git a/icuSources/data/locales/zh_Hant.txt b/icuSources/data/locales/zh_Hant.txt
index e7cd9bfb..aac91979 100644
--- a/icuSources/data/locales/zh_Hant.txt
+++ b/icuSources/data/locales/zh_Hant.txt
@@ -5765,6 +5765,7 @@ zh_Hant{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
narrow{
"大å",
@@ -6003,6 +6004,7 @@ zh_Hant{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
wide{
"大å",
@@ -6241,6 +6243,7 @@ zh_Hant{
"大æ£",
"æå",
"å¹³æ",
+ "令å",
}
}
intervalFormats{
diff --git a/icuSources/data/misc/keyTypeData.txt b/icuSources/data/misc/keyTypeData.txt
index af9cd881..54c89dca 100644
--- a/icuSources/data/misc/keyTypeData.txt
+++ b/icuSources/data/misc/keyTypeData.txt
@@ -628,6 +628,7 @@ keyTypeData:table(nofallback){
java{""}
jpan{""}
jpanfin{""}
+ jpanyear{""}
kali{""}
khmr{""}
knda{""}
diff --git a/icuSources/data/misc/numberingSystems.txt b/icuSources/data/misc/numberingSystems.txt
index b1d6db00..18b7317a 100644
--- a/icuSources/data/misc/numberingSystems.txt
+++ b/icuSources/data/misc/numberingSystems.txt
@@ -172,6 +172,11 @@ numberingSystems:table(nofallback){
desc{"ja/SpelloutRules/%spellout-cardinal-financial"}
radix:int{10}
}
+ jpanyear{
+ algorithmic:int{1}
+ desc{"ja/SpelloutRules/%spellout-numbering-year-latn"}
+ radix:int{10}
+ }
kali{
algorithmic:int{0}
desc{"ê¤ê¤ê¤ê¤ê¤ê¤
ê¤ê¤ê¤ê¤"}
diff --git a/icuSources/data/misc/supplementalData.txt b/icuSources/data/misc/supplementalData.txt
index 5fc791b0..5b569d3e 100644
--- a/icuSources/data/misc/supplementalData.txt
+++ b/icuSources/data/misc/supplementalData.txt
@@ -6,8 +6,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -18457,
- 643382272,
+ -542,
+ 1,
+ 1,
}
}
}
@@ -17,8 +18,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -33843,
- 1352598528,
+ -2636,
+ 1,
+ 1,
}
}
}
@@ -28,14 +30,16 @@ supplementalData:table(nofallback){
eras{
0{
end:intvector{
- -12383,
- 368826367,
+ 284,
+ 8,
+ 28,
}
}
1{
start:intvector{
- -12383,
- 368826368,
+ 284,
+ 8,
+ 29,
}
}
}
@@ -45,8 +49,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -31610,
- -93940736,
+ -2332,
+ 1,
+ 1,
}
}
}
@@ -56,14 +61,16 @@ supplementalData:table(nofallback){
eras{
0{
end:intvector{
- -14411,
- 664902655,
+ 8,
+ 8,
+ 28,
}
}
1{
start:intvector{
- -14411,
- 664902656,
+ 8,
+ 8,
+ 29,
}
}
}
@@ -73,8 +80,9 @@ supplementalData:table(nofallback){
eras{
0{
end:intvector{
- -54823,
- -2125298689,
+ -5492,
+ 8,
+ 29,
}
}
}
@@ -83,14 +91,16 @@ supplementalData:table(nofallback){
eras{
0{
end:intvector{
- -14468,
- -477728769,
+ 0,
+ 12,
+ 31,
}
}
1{
start:intvector{
- -14468,
- -477728768,
+ 1,
+ 1,
+ 1,
}
}
}
@@ -100,8 +110,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -42096,
- 1167292416,
+ -3760,
+ 10,
+ 7,
}
}
}
@@ -111,8 +122,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -13895,
- -44389376,
+ 79,
+ 1,
+ 1,
}
}
}
@@ -121,8 +133,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -9901,
- -1497369600,
+ 622,
+ 7,
+ 15,
}
}
}
@@ -132,8 +145,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -9901,
- -1410969600,
+ 622,
+ 7,
+ 16,
}
}
}
@@ -143,8 +157,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -9901,
- -1497369600,
+ 622,
+ 7,
+ 15,
}
}
}
@@ -154,8 +169,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -9901,
- -1497369600,
+ 622,
+ 7,
+ 15,
}
}
}
@@ -165,8 +181,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -9901,
- -1497369600,
+ 622,
+ 7,
+ 15,
}
}
}
@@ -176,1418 +193,1661 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -9732,
- 548124672,
+ 645,
+ 6,
+ 19,
}
}
1{
start:intvector{
- -9698,
- 1572036608,
+ 650,
+ 2,
+ 15,
}
}
10{
start:intvector{
- -9114,
- 1157535744,
+ 729,
+ 8,
+ 5,
}
}
100{
start:intvector{
- -5884,
- -819397632,
+ 1169,
+ 4,
+ 8,
}
}
101{
start:intvector{
- -5869,
- -1048707072,
+ 1171,
+ 4,
+ 21,
}
}
102{
start:intvector{
- -5837,
- 504906752,
+ 1175,
+ 7,
+ 28,
}
}
103{
start:intvector{
- -5823,
- -156402688,
+ 1177,
+ 8,
+ 4,
}
}
104{
start:intvector{
- -5794,
- -294454272,
+ 1181,
+ 7,
+ 14,
}
}
105{
start:intvector{
- -5787,
- 1324541952,
+ 1182,
+ 5,
+ 27,
}
}
106{
start:intvector{
- -5773,
- 810999808,
+ 1184,
+ 4,
+ 16,
}
}
107{
start:intvector{
- -5764,
- -234673152,
+ 1185,
+ 8,
+ 14,
}
}
108{
start:intvector{
- -5729,
- 702838784,
+ 1190,
+ 4,
+ 11,
}
}
109{
start:intvector{
- -5663,
- -1680770048,
+ 1199,
+ 4,
+ 27,
}
}
11{
start:intvector{
- -8970,
- -223922176,
+ 749,
+ 4,
+ 14,
}
}
110{
start:intvector{
- -5650,
- -664144896,
+ 1201,
+ 2,
+ 13,
}
}
111{
start:intvector{
- -5627,
- 59374592,
+ 1204,
+ 2,
+ 20,
}
}
112{
start:intvector{
- -5611,
- 200697856,
+ 1206,
+ 4,
+ 27,
}
}
113{
start:intvector{
- -5600,
- 130457600,
+ 1207,
+ 10,
+ 25,
}
}
114{
start:intvector{
- -5576,
- -885324800,
+ 1211,
+ 3,
+ 9,
}
}
115{
start:intvector{
- -5556,
- -125470720,
+ 1213,
+ 12,
+ 6,
}
}
116{
start:intvector{
- -5516,
- 1110004736,
+ 1219,
+ 4,
+ 12,
}
}
117{
start:intvector{
- -5494,
- 1401524224,
+ 1222,
+ 4,
+ 13,
}
}
118{
start:intvector{
- -5475,
- 2049945600,
+ 1224,
+ 11,
+ 20,
}
}
119{
start:intvector{
- -5472,
- -2083523584,
+ 1225,
+ 4,
+ 20,
}
}
12{
start:intvector{
- -8968,
- -1988256768,
+ 749,
+ 7,
+ 2,
}
}
120{
start:intvector{
- -5453,
- -398302208,
+ 1227,
+ 12,
+ 10,
}
}
121{
start:intvector{
- -5444,
- -86607872,
+ 1229,
+ 3,
+ 5,
}
}
122{
start:intvector{
- -5421,
- -1757255680,
+ 1232,
+ 4,
+ 2,
}
}
123{
start:intvector{
- -5413,
- 837173248,
+ 1233,
+ 4,
+ 15,
}
}
124{
start:intvector{
- -5402,
- -1540834304,
+ 1234,
+ 11,
+ 5,
}
}
125{
start:intvector{
- -5395,
- 164561920,
+ 1235,
+ 9,
+ 19,
}
}
126{
start:intvector{
- -5372,
- 1690714112,
+ 1238,
+ 11,
+ 23,
}
}
127{
start:intvector{
- -5371,
- -332820480,
+ 1239,
+ 2,
+ 7,
}
}
128{
start:intvector{
- -5360,
- 2077506560,
+ 1240,
+ 7,
+ 16,
}
}
129{
start:intvector{
- -5341,
- -1309839360,
+ 1243,
+ 2,
+ 26,
}
}
13{
start:intvector{
- -8908,
- 1130272768,
+ 757,
+ 8,
+ 18,
}
}
130{
start:intvector{
- -5311,
- 539309056,
+ 1247,
+ 2,
+ 28,
}
}
131{
start:intvector{
- -5296,
- 828399616,
+ 1249,
+ 3,
+ 18,
}
}
132{
start:intvector{
- -5241,
- -1398568960,
+ 1256,
+ 10,
+ 5,
}
}
133{
start:intvector{
- -5238,
- -459470848,
+ 1257,
+ 3,
+ 14,
}
}
134{
start:intvector{
- -5223,
- -775180288,
+ 1259,
+ 3,
+ 26,
}
}
135{
start:intvector{
- -5215,
- -1957318656,
+ 1260,
+ 4,
+ 13,
}
}
136{
start:intvector{
- -5209,
- -683922432,
+ 1261,
+ 2,
+ 20,
}
}
137{
start:intvector{
- -5186,
- 125997056,
+ 1264,
+ 2,
+ 28,
}
}
138{
start:intvector{
- -5105,
- -67721216,
+ 1275,
+ 4,
+ 25,
}
}
139{
start:intvector{
- -5084,
- -319634432,
+ 1278,
+ 2,
+ 29,
}
}
14{
start:intvector{
- -8854,
- -1899328512,
+ 765,
+ 1,
+ 7,
}
}
140{
start:intvector{
- -5009,
- -1811781632,
+ 1288,
+ 4,
+ 28,
}
}
141{
start:intvector{
- -4969,
- 1324493824,
+ 1293,
+ 8,
+ 5,
}
}
142{
start:intvector{
- -4928,
- 1400434688,
+ 1299,
+ 4,
+ 25,
}
}
143{
start:intvector{
- -4902,
- -1725282304,
+ 1302,
+ 11,
+ 21,
}
}
144{
start:intvector{
- -4897,
- -995318784,
+ 1303,
+ 8,
+ 5,
}
}
145{
start:intvector{
- -4872,
- 1938266112,
+ 1306,
+ 12,
+ 14,
}
}
146{
start:intvector{
- -4859,
- -735276032,
+ 1308,
+ 10,
+ 9,
}
}
147{
start:intvector{
- -4840,
- -1901254656,
+ 1311,
+ 4,
+ 28,
}
}
148{
start:intvector{
- -4833,
- 581741568,
+ 1312,
+ 3,
+ 20,
}
}
149{
start:intvector{
- -4798,
- -158681088,
+ 1317,
+ 2,
+ 3,
}
}
15{
start:intvector{
- -8835,
- -1337307136,
+ 767,
+ 8,
+ 16,
}
}
150{
start:intvector{
- -4781,
- 1451442176,
+ 1319,
+ 4,
+ 28,
}
}
151{
start:intvector{
- -4768,
- -1049299968,
+ 1321,
+ 2,
+ 23,
}
}
152{
start:intvector{
- -4740,
- -1644384256,
+ 1324,
+ 12,
+ 9,
}
}
153{
start:intvector{
- -4730,
- -1134857216,
+ 1326,
+ 4,
+ 26,
}
}
154{
start:intvector{
- -4705,
- 1280327680,
+ 1329,
+ 8,
+ 29,
}
}
155{
start:intvector{
- -4691,
- -1800181760,
+ 1331,
+ 8,
+ 9,
}
}
156{
start:intvector{
- -4673,
- -1003993088,
+ 1334,
+ 1,
+ 29,
}
}
157{
start:intvector{
- -4657,
- 321897472,
+ 1336,
+ 2,
+ 29,
}
}
158{
start:intvector{
- -4627,
- -1494088704,
+ 1340,
+ 4,
+ 28,
}
}
159{
start:intvector{
- -4578,
- 1003481088,
+ 1346,
+ 12,
+ 8,
}
}
16{
start:intvector{
- -8812,
- -1452754944,
+ 770,
+ 10,
+ 1,
}
}
160{
start:intvector{
- -4405,
- -775228416,
+ 1370,
+ 7,
+ 24,
}
}
161{
start:intvector{
- -4392,
- 993964032,
+ 1372,
+ 4,
+ 1,
}
}
162{
start:intvector{
- -4369,
- 1656116224,
+ 1375,
+ 5,
+ 27,
}
}
163{
start:intvector{
- -4341,
- 1925031936,
+ 1379,
+ 3,
+ 22,
}
}
164{
start:intvector{
- -4327,
- 1497889792,
+ 1381,
+ 2,
+ 10,
}
}
165{
start:intvector{
- -4304,
- -234125312,
+ 1384,
+ 4,
+ 28,
}
}
166{
start:intvector{
- -4305,
- -1209558016,
+ 1387,
+ 8,
+ 22,
}
}
167{
start:intvector{
- -4279,
- 1403459584,
+ 1387,
+ 8,
+ 23,
}
}
168{
start:intvector{
- -4268,
- 469219328,
+ 1389,
+ 2,
+ 9,
}
}
169{
start:intvector{
- -4260,
- 1533480960,
+ 1390,
+ 3,
+ 26,
}
}
17{
start:intvector{
- -8737,
- -7302144,
+ 781,
+ 1,
+ 1,
}
}
170{
start:intvector{
- -4229,
- -948672512,
+ 1394,
+ 7,
+ 5,
}
}
171{
start:intvector{
- -3980,
- 939438080,
+ 1428,
+ 4,
+ 27,
}
}
172{
start:intvector{
- -3970,
- 844165120,
+ 1429,
+ 9,
+ 5,
}
}
173{
start:intvector{
- -3886,
- 1478112256,
+ 1441,
+ 2,
+ 17,
}
}
174{
start:intvector{
- -3864,
- 560031744,
+ 1444,
+ 2,
+ 5,
}
}
175{
start:intvector{
- -3824,
- 1561339904,
+ 1449,
+ 7,
+ 28,
}
}
176{
start:intvector{
- -3802,
- 1507259392,
+ 1452,
+ 7,
+ 25,
}
}
177{
start:intvector{
- -3780,
- 1625978880,
+ 1455,
+ 7,
+ 25,
}
}
178{
start:intvector{
- -3764,
- 1680902144,
+ 1457,
+ 9,
+ 28,
}
}
179{
start:intvector{
- -3740,
- 553687040,
+ 1460,
+ 12,
+ 21,
}
}
18{
start:intvector{
- -8725,
- -138909696,
+ 782,
+ 8,
+ 19,
}
}
180{
start:intvector{
- -3702,
- 1072929792,
+ 1466,
+ 2,
+ 28,
}
}
181{
start:intvector{
- -3695,
- -1491608576,
+ 1467,
+ 3,
+ 3,
}
}
182{
start:intvector{
- -3679,
- 2080681984,
+ 1469,
+ 4,
+ 28,
}
}
183{
start:intvector{
- -3545,
- -1797502976,
+ 1487,
+ 7,
+ 29,
}
}
184{
start:intvector{
- -3530,
- -1076412416,
+ 1489,
+ 8,
+ 21,
}
}
185{
start:intvector{
- -3508,
- 572474368,
+ 1492,
+ 7,
+ 19,
}
}
186{
start:intvector{
- -3445,
- 1890334720,
+ 1501,
+ 2,
+ 29,
}
}
187{
start:intvector{
- -3423,
- 2095454208,
+ 1504,
+ 2,
+ 30,
}
}
188{
start:intvector{
- -3295,
- -377726976,
+ 1521,
+ 8,
+ 23,
}
}
189{
start:intvector{
- -3243,
- 1244540928,
+ 1528,
+ 8,
+ 20,
}
}
19{
start:intvector{
- -8550,
- 1883980800,
+ 806,
+ 5,
+ 18,
}
}
190{
start:intvector{
- -3214,
- 1020089344,
+ 1532,
+ 7,
+ 29,
}
}
191{
start:intvector{
- -3044,
- -228918272,
+ 1555,
+ 10,
+ 23,
}
}
192{
start:intvector{
- -3026,
- 974237696,
+ 1558,
+ 2,
+ 28,
}
}
193{
start:intvector{
- -2937,
- 2078948352,
+ 1570,
+ 4,
+ 23,
}
}
194{
start:intvector{
- -2913,
- 1988533248,
+ 1573,
+ 7,
+ 28,
}
}
195{
start:intvector{
- -2771,
- -1948590080,
+ 1592,
+ 12,
+ 8,
}
}
196{
start:intvector{
- -2742,
- 393925632,
+ 1596,
+ 10,
+ 27,
}
}
197{
start:intvector{
- -2605,
- -1940361216,
+ 1615,
+ 7,
+ 13,
}
}
198{
start:intvector{
- -2542,
- -17700864,
+ 1624,
+ 2,
+ 30,
}
}
199{
start:intvector{
- -2389,
- -939697152,
+ 1644,
+ 12,
+ 16,
}
}
2{
start:intvector{
- -9537,
- 418301952,
+ 672,
+ 1,
+ 1,
}
}
20{
start:intvector{
- -8518,
- 1389027328,
+ 810,
+ 9,
+ 19,
}
}
200{
start:intvector{
- -2365,
- 154455040,
+ 1648,
+ 2,
+ 15,
}
}
201{
start:intvector{
- -2332,
- -981633024,
+ 1652,
+ 9,
+ 18,
}
}
202{
start:intvector{
- -2313,
- -1629211648,
+ 1655,
+ 4,
+ 13,
}
}
203{
start:intvector{
- -2289,
- -1287626752,
+ 1658,
+ 7,
+ 23,
}
}
204{
start:intvector{
- -2269,
- -182172672,
+ 1661,
+ 4,
+ 25,
}
}
205{
start:intvector{
- -2177,
- 540603392,
+ 1673,
+ 9,
+ 21,
}
}
206{
start:intvector{
- -2118,
- 289532928,
+ 1681,
+ 9,
+ 29,
}
}
207{
start:intvector{
- -2101,
- -1419878400,
+ 1684,
+ 2,
+ 21,
}
}
208{
start:intvector{
- -2067,
- -2037566464,
+ 1688,
+ 9,
+ 30,
}
}
209{
start:intvector{
- -1953,
- 99929088,
+ 1704,
+ 3,
+ 13,
}
}
21{
start:intvector{
- -8420,
- 40632320,
+ 824,
+ 1,
+ 5,
}
}
210{
start:intvector{
- -1901,
- 1315229696,
+ 1711,
+ 4,
+ 25,
}
}
211{
start:intvector{
- -1863,
- 970472448,
+ 1716,
+ 6,
+ 22,
}
}
212{
start:intvector{
- -1717,
- 305247232,
+ 1736,
+ 4,
+ 28,
}
}
213{
start:intvector{
- -1682,
- -1731175424,
+ 1741,
+ 2,
+ 27,
}
}
214{
start:intvector{
- -1660,
- -2130855936,
+ 1744,
+ 2,
+ 21,
}
}
215{
start:intvector{
- -1628,
- -1070609408,
+ 1748,
+ 7,
+ 12,
}
}
216{
start:intvector{
- -1604,
- -297024512,
+ 1751,
+ 10,
+ 27,
}
}
217{
start:intvector{
- -1511,
- -2116183040,
+ 1764,
+ 6,
+ 2,
}
}
218{
start:intvector{
- -1449,
- -1514555392,
+ 1772,
+ 11,
+ 16,
}
}
219{
start:intvector{
- -1387,
- 790039552,
+ 1781,
+ 4,
+ 2,
}
}
22{
start:intvector{
- -8347,
- 1954419712,
+ 834,
+ 1,
+ 3,
}
}
220{
start:intvector{
- -1330,
- -1646063616,
+ 1789,
+ 1,
+ 25,
}
}
221{
start:intvector{
- -1242,
- -47985664,
+ 1801,
+ 2,
+ 5,
}
}
222{
start:intvector{
- -1219,
- 589133824,
+ 1804,
+ 2,
+ 11,
}
}
223{
start:intvector{
- -1115,
- 1810135040,
+ 1818,
+ 4,
+ 22,
}
}
224{
start:intvector{
- -1022,
- 1114176512,
+ 1830,
+ 12,
+ 10,
}
}
225{
start:intvector{
- -920,
- -109054976,
+ 1844,
+ 12,
+ 2,
}
}
226{
start:intvector{
- -896,
- -977070080,
+ 1848,
+ 2,
+ 28,
}
}
227{
start:intvector{
- -846,
- 1459132416,
+ 1854,
+ 11,
+ 27,
}
}
228{
start:intvector{
- -807,
- 1398607872,
+ 1860,
+ 3,
+ 18,
}
}
229{
start:intvector{
- -800,
- 537036800,
+ 1861,
+ 2,
+ 19,
}
}
23{
start:intvector{
- -8241,
- -1847080960,
+ 848,
+ 6,
+ 13,
}
}
230{
start:intvector{
- -778,
- 742156288,
+ 1864,
+ 2,
+ 20,
}
}
231{
start:intvector{
- -770,
- 1979217920,
+ 1865,
+ 4,
+ 7,
}
}
232{
start:intvector{
- -745,
- -1689931776,
+ 1868,
+ 9,
+ 8,
}
}
233{
start:intvector{
- -422,
- 322598912,
+ 1912,
+ 7,
+ 30,
}
}
234{
start:intvector{
- -317,
- -393534464,
+ 1926,
+ 12,
+ 25,
}
}
235{
start:intvector{
- 139,
- -1074621440,
+ 1989,
+ 1,
+ 8,
+ }
+ }
+ 236{
+ start:intvector{
+ 2019,
+ 5,
+ 1,
}
}
24{
start:intvector{
- -8220,
- -1407794176,
+ 851,
+ 4,
+ 28,
}
}
25{
start:intvector{
- -8193,
- 279856128,
+ 854,
+ 11,
+ 30,
}
}
26{
start:intvector{
- -8177,
- 1889979392,
+ 857,
+ 2,
+ 21,
}
}
27{
start:intvector{
- -8161,
- 821702656,
+ 859,
+ 4,
+ 15,
}
}
28{
start:intvector{
- -8029,
- 2052419584,
+ 877,
+ 4,
+ 16,
}
}
29{
start:intvector{
- -7971,
- 739516416,
+ 885,
+ 2,
+ 21,
}
}
3{
start:intvector{
- -9431,
- -13598720,
+ 686,
+ 7,
+ 20,
}
}
30{
start:intvector{
- -7941,
- -558069760,
+ 889,
+ 4,
+ 27,
}
}
31{
start:intvector{
- -7875,
- -115511296,
+ 898,
+ 4,
+ 26,
}
}
32{
start:intvector{
- -7851,
- -1588326400,
+ 901,
+ 7,
+ 15,
}
}
33{
start:intvector{
- -7691,
- 1527873536,
+ 923,
+ 4,
+ 11,
}
}
34{
start:intvector{
- -7632,
- 1881603072,
+ 931,
+ 4,
+ 26,
}
}
35{
start:intvector{
- -7580,
- 1714503680,
+ 938,
+ 5,
+ 22,
}
}
36{
start:intvector{
- -7515,
- -348537856,
+ 947,
+ 4,
+ 22,
}
}
37{
start:intvector{
- -7437,
- 801380352,
+ 957,
+ 10,
+ 27,
}
}
38{
start:intvector{
- -7413,
- 2093365248,
+ 961,
+ 2,
+ 16,
}
}
39{
start:intvector{
- -7388,
- 1855182848,
+ 964,
+ 7,
+ 10,
}
}
4{
start:intvector{
- -9323,
- -938866688,
+ 701,
+ 3,
+ 21,
}
}
40{
start:intvector{
- -7358,
- -2120803328,
+ 968,
+ 8,
+ 13,
}
}
41{
start:intvector{
- -7346,
- 1524156416,
+ 970,
+ 3,
+ 25,
}
}
42{
start:intvector{
- -7319,
- -712527872,
+ 973,
+ 12,
+ 20,
}
}
43{
start:intvector{
- -7300,
- -1446506496,
+ 976,
+ 7,
+ 13,
}
}
44{
start:intvector{
- -7282,
- 620649472,
+ 978,
+ 11,
+ 29,
}
}
45{
start:intvector{
- -7250,
- 1248896000,
+ 983,
+ 4,
+ 15,
}
}
46{
start:intvector{
- -7235,
- 1019586560,
+ 985,
+ 4,
+ 27,
}
}
47{
start:intvector{
- -7221,
- 2061244416,
+ 987,
+ 4,
+ 5,
}
}
48{
start:intvector{
- -7204,
- -1289766912,
+ 989,
+ 8,
+ 8,
}
}
49{
start:intvector{
- -7195,
- -546072576,
+ 990,
+ 11,
+ 7,
}
}
5{
start:intvector{
- -9300,
- -708714496,
+ 704,
+ 5,
+ 10,
}
}
50{
start:intvector{
- -7163,
- 1785141248,
+ 995,
+ 2,
+ 22,
}
}
51{
start:intvector{
- -7134,
- 5489664,
+ 999,
+ 1,
+ 13,
}
}
52{
start:intvector{
- -7094,
- -1992169472,
+ 1004,
+ 7,
+ 20,
}
}
53{
start:intvector{
- -7032,
- 2126825472,
+ 1012,
+ 12,
+ 25,
}
}
54{
start:intvector{
- -7000,
- 1199872000,
+ 1017,
+ 4,
+ 23,
}
}
55{
start:intvector{
- -6972,
- 259187712,
+ 1021,
+ 2,
+ 2,
}
}
56{
start:intvector{
- -6947,
- 1489805312,
+ 1024,
+ 7,
+ 13,
}
}
57{
start:intvector{
- -6918,
- -92013568,
+ 1028,
+ 7,
+ 25,
}
}
58{
start:intvector{
- -6853,
- 818879488,
+ 1037,
+ 4,
+ 21,
}
}
59{
start:intvector{
- -6827,
- 1383329792,
+ 1040,
+ 11,
+ 10,
}
}
6{
start:intvector{
- -9273,
- -810431488,
+ 708,
+ 1,
+ 11,
}
}
60{
start:intvector{
- -6798,
- -25689088,
+ 1044,
+ 11,
+ 24,
}
}
61{
start:intvector{
- -6787,
- 743037952,
+ 1046,
+ 4,
+ 14,
}
}
62{
start:intvector{
- -6738,
- -1115726848,
+ 1053,
+ 1,
+ 11,
}
}
63{
start:intvector{
- -6696,
- 429014016,
+ 1058,
+ 8,
+ 29,
}
}
64{
start:intvector{
- -6646,
- -22318080,
+ 1065,
+ 8,
+ 2,
}
}
65{
start:intvector{
- -6618,
- 653564928,
+ 1069,
+ 4,
+ 13,
}
}
66{
start:intvector{
- -6579,
- -1973926912,
+ 1074,
+ 8,
+ 23,
}
}
67{
start:intvector{
- -6555,
- 1366625280,
+ 1077,
+ 11,
+ 17,
}
}
68{
start:intvector{
- -6531,
- 325810176,
+ 1081,
+ 2,
+ 10,
}
}
69{
start:intvector{
- -6509,
- 185329664,
+ 1084,
+ 2,
+ 7,
}
}
7{
start:intvector{
- -9217,
- -186200064,
+ 715,
+ 9,
+ 2,
}
}
70{
start:intvector{
- -6486,
- 1193081856,
+ 1087,
+ 4,
+ 7,
}
}
71{
start:intvector{
- -6430,
- -922454016,
+ 1094,
+ 12,
+ 15,
}
}
72{
start:intvector{
- -6415,
- -2015763456,
+ 1096,
+ 12,
+ 17,
}
}
73{
start:intvector{
- -6408,
- 1504032768,
+ 1097,
+ 11,
+ 21,
}
}
74{
start:intvector{
- -6395,
- 1397457920,
+ 1099,
+ 8,
+ 28,
}
}
75{
start:intvector{
- -6362,
- 236337152,
+ 1104,
+ 2,
+ 10,
}
}
76{
start:intvector{
- -6347,
- -313539584,
+ 1106,
+ 4,
+ 9,
}
}
77{
start:intvector{
- -6330,
- -147183616,
+ 1108,
+ 8,
+ 3,
}
}
78{
start:intvector{
- -6315,
- 980874240,
+ 1110,
+ 7,
+ 13,
}
}
79{
start:intvector{
- -6293,
- 1185993728,
+ 1113,
+ 7,
+ 13,
}
}
8{
start:intvector{
- -9200,
- 819123200,
+ 717,
+ 11,
+ 17,
}
}
80{
start:intvector{
- -6259,
- -97861632,
+ 1118,
+ 4,
+ 3,
}
}
81{
start:intvector{
- -6244,
- -759171072,
+ 1120,
+ 4,
+ 10,
}
}
82{
start:intvector{
- -6214,
- 312377344,
+ 1124,
+ 4,
+ 3,
}
}
83{
start:intvector{
- -6201,
- 1415402496,
+ 1126,
+ 1,
+ 22,
}
}
84{
start:intvector{
- -6164,
- 872812544,
+ 1131,
+ 1,
+ 29,
}
}
85{
start:intvector{
- -6153,
- 2012172288,
+ 1132,
+ 8,
+ 11,
}
}
86{
start:intvector{
- -6133,
- 1562426368,
+ 1135,
+ 4,
+ 27,
}
}
87{
start:intvector{
- -6088,
- -223669248,
+ 1141,
+ 7,
+ 10,
}
}
88{
start:intvector{
- -6082,
- -764673024,
+ 1142,
+ 4,
+ 28,
}
}
89{
start:intvector{
- -6068,
- 943152128,
+ 1144,
+ 2,
+ 23,
}
}
9{
start:intvector{
- -9155,
- -621372416,
+ 724,
+ 2,
+ 4,
}
}
90{
start:intvector{
- -6058,
- -1805488128,
+ 1145,
+ 7,
+ 22,
}
}
91{
start:intvector{
- -6017,
- 405420032,
+ 1151,
+ 1,
+ 26,
}
}
92{
start:intvector{
- -5990,
- -1399264256,
+ 1154,
+ 10,
+ 28,
}
}
93{
start:intvector{
- -5979,
- -1383104512,
+ 1156,
+ 4,
+ 27,
}
}
94{
start:intvector{
- -5957,
- -1869185024,
+ 1159,
+ 4,
+ 20,
}
}
95{
start:intvector{
- -5952,
- -448021504,
+ 1160,
+ 1,
+ 10,
}
}
96{
start:intvector{
- -5939,
- 111570944,
+ 1161,
+ 9,
+ 4,
}
}
97{
start:intvector{
- -5928,
- -2093636608,
+ 1163,
+ 3,
+ 29,
}
}
98{
start:intvector{
- -5912,
- -1779513344,
+ 1165,
+ 6,
+ 5,
}
}
99{
start:intvector{
- -5903,
- -1727019008,
+ 1166,
+ 8,
+ 27,
}
}
}
@@ -1597,8 +1857,9 @@ supplementalData:table(nofallback){
eras{
0{
start:intvector{
- -9905,
- -1165500416,
+ 622,
+ 1,
+ 1,
}
}
}
@@ -1608,14 +1869,16 @@ supplementalData:table(nofallback){
eras{
0{
end:intvector{
- -427,
- -727931905,
+ 1911,
+ 12,
+ 31,
}
}
1{
start:intvector{
- -427,
- -727931904,
+ 1912,
+ 1,
+ 1,
}
}
}
diff --git a/icuSources/data/rbnf/ja.txt b/icuSources/data/rbnf/ja.txt
index db01443a..0ddc6f12 100644
--- a/icuSources/data/rbnf/ja.txt
+++ b/icuSources/data/rbnf/ja.txt
@@ -8,6 +8,11 @@ ja{
"0: \u7B2C=#,##0=;",
}
SpelloutRules{
+ "%spellout-numbering-year-latn:",
+ "x.x: =0.0=;",
+ "0: =0=;",
+ "1: \u5143;",
+ "2: =0=;",
"%spellout-numbering-year:",
"x.x: =0.0=;",
"0: =%spellout-numbering=;",
@@ -73,5 +78,5 @@ ja{
"0: \u7B2C=%spellout-numbering=;",
}
}
- Version{"2.1.27.22"}
+ Version{"2.1.27.23"}
}
diff --git a/icuSources/data/region/ja.txt b/icuSources/data/region/ja.txt
index a3871e7a..244e14ae 100644
--- a/icuSources/data/region/ja.txt
+++ b/icuSources/data/region/ja.txt
@@ -81,7 +81,7 @@ ja{
CK{"ã¯ãã¯è«¸å³¶"}
CL{"ããª"}
CM{"ã«ã¡ã«ã¼ã³"}
- CN{"ä¸å½å¤§é¸"}
+ CN{"ä¸å½æ¬å"}
CO{"ã³ãã³ãã¢"}
CP{"ã¯ãªããã¼ãã³å³¶"}
CR{"ã³ã¹ã¿ãªã«"}
diff --git a/icuSources/i18n/Makefile.in b/icuSources/i18n/Makefile.in
index 7bdf99ad..cd33045a 100644
--- a/icuSources/i18n/Makefile.in
+++ b/icuSources/i18n/Makefile.in
@@ -115,7 +115,7 @@ double-conversion-fast-dtoa.o double-conversion-strtod.o \
numparse_stringsegment.o numparse_parsednumber.o numparse_impl.o \
numparse_symbols.o numparse_decimal.o numparse_scientific.o numparse_currency.o \
numparse_affixes.o numparse_compositions.o numparse_validators.o \
-
+erarules.o
## Header files to install
HEADERS = $(srcdir)/unicode/*.h
diff --git a/icuSources/i18n/dtitvfmt.cpp b/icuSources/i18n/dtitvfmt.cpp
index ab882cab..1a3cc986 100644
--- a/icuSources/i18n/dtitvfmt.cpp
+++ b/icuSources/i18n/dtitvfmt.cpp
@@ -1080,7 +1080,10 @@ DateIntervalFormat::setSeparateDateTimePtn(
}
setIntervalPattern(UCAL_YEAR, skeleton, bestSkeleton, differenceInfo,
&extendedSkeleton, &extendedBestSkeleton);
+ setIntervalPattern(UCAL_ERA, skeleton, bestSkeleton, differenceInfo,
+ &extendedSkeleton, &extendedBestSkeleton);
} else {
+ // what about seconds handling?
setIntervalPattern(UCAL_MINUTE, skeleton, bestSkeleton, differenceInfo);
setIntervalPattern(UCAL_HOUR, skeleton, bestSkeleton, differenceInfo);
setIntervalPattern(UCAL_AM_PM, skeleton, bestSkeleton, differenceInfo);
diff --git a/icuSources/i18n/dtitvinf.cpp b/icuSources/i18n/dtitvinf.cpp
index c863a683..d00668be 100644
--- a/icuSources/i18n/dtitvinf.cpp
+++ b/icuSources/i18n/dtitvinf.cpp
@@ -326,7 +326,9 @@ struct DateIntervalInfo::DateIntervalSink : public ResourceSink {
char c0;
if ((c0 = patternLetter[0]) != 0 && patternLetter[1] == 0) {
// Check that the pattern letter is accepted
- if (c0 == 'y') {
+ if (c0 == 'G') {
+ return UCAL_ERA;
+ } else if (c0 == 'y') {
return UCAL_YEAR;
} else if (c0 == 'M') {
return UCAL_MONTH;
diff --git a/icuSources/i18n/erarules.cpp b/icuSources/i18n/erarules.cpp
new file mode 100644
index 00000000..474ebba1
--- /dev/null
+++ b/icuSources/i18n/erarules.cpp
@@ -0,0 +1,311 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include
+#include "unicode/ucal.h"
+#include "unicode/ures.h"
+#include "unicode/ustring.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "erarules.h"
+#include "gregoimp.h"
+#include "uassert.h"
+
+U_NAMESPACE_BEGIN
+
+static const int32_t MAX_ENCODED_START_YEAR = 32767;
+static const int32_t MIN_ENCODED_START_YEAR = -32768;
+static const int32_t MIN_ENCODED_START = -2147483391; // encodeDate(MIN_ENCODED_START_YEAR, 1, 1, ...);
+
+static const int32_t YEAR_MASK = 0xFFFF0000;
+static const int32_t MONTH_MASK = 0x0000FF00;
+static const int32_t DAY_MASK = 0x000000FF;
+
+static const int32_t MAX_INT32 = 0x7FFFFFFF;
+static const int32_t MIN_INT32 = 0xFFFFFFFF;
+
+static const UChar VAL_FALSE[] = {0x66, 0x61, 0x6c, 0x73, 0x65}; // "false"
+static const UChar VAL_FALSE_LEN = 5;
+
+static UBool isSet(int startDate) {
+ return startDate != 0;
+}
+
+static UBool isValidRuleStartDate(int32_t year, int32_t month, int32_t day) {
+ return year >= MIN_ENCODED_START_YEAR && year <= MAX_ENCODED_START_YEAR
+ && month >= 1 && month <= 12 && day >=1 && day <= 31;
+}
+
+/**
+ * Encode year/month/date to a single integer.
+ * year is high 16 bits (-32768 to 32767), month is
+ * next 8 bits and day of month is last 8 bits.
+ *
+ * @param year year
+ * @param month month (1-base)
+ * @param day day of month
+ * @return an encoded date.
+ */
+static int32_t encodeDate(int32_t year, int32_t month, int32_t day) {
+ return year << 16 | month << 8 | day;
+}
+
+static void decodeDate(int32_t encodedDate, int32_t (&fields)[3]) {
+ if (encodedDate == MIN_ENCODED_START) {
+ fields[0] = MIN_INT32;
+ fields[1] = 1;
+ fields[2] = 1;
+ } else {
+ fields[0] = (encodedDate & YEAR_MASK) >> 16;
+ fields[1] = (encodedDate & MONTH_MASK) >> 8;
+ fields[2] = encodedDate & DAY_MASK;
+ }
+}
+
+/**
+ * Compare an encoded date with another date specified by year/month/day.
+ * @param encoded An encoded date
+ * @param year Year of another date
+ * @param month Month of another date
+ * @param day Day of another date
+ * @return -1 when encoded date is earlier, 0 when two dates are same,
+ * and 1 when encoded date is later.
+ */
+static int32_t compareEncodedDateWithYMD(int encoded, int year, int month, int day) {
+ if (year < MIN_ENCODED_START_YEAR) {
+ if (encoded == MIN_ENCODED_START) {
+ if (year > MIN_INT32 || month > 1 || day > 1) {
+ return -1;
+ }
+ return 0;
+ } else {
+ return 1;
+ }
+ } else if (year > MAX_ENCODED_START_YEAR) {
+ return -1;
+ } else {
+ int tmp = encodeDate(year, month, day);
+ if (encoded < tmp) {
+ return -1;
+ } else if (encoded == tmp) {
+ return 0;
+ } else {
+ return 1;
+ }
+ }
+}
+
+EraRules::EraRules(LocalMemory& eraStartDates, int32_t numEras)
+ : numEras(numEras) {
+ startDates = std::move(eraStartDates);
+ initCurrentEra();
+}
+
+EraRules::~EraRules() {
+}
+
+EraRules* EraRules::createInstance(const char *calType, UBool includeTentativeEra, UErrorCode& status) {
+ if(U_FAILURE(status)) {
+ return nullptr;
+ }
+ LocalUResourceBundlePointer rb(ures_openDirect(nullptr, "supplementalData", &status));
+ ures_getByKey(rb.getAlias(), "calendarData", rb.getAlias(), &status);
+ ures_getByKey(rb.getAlias(), calType, rb.getAlias(), &status);
+ ures_getByKey(rb.getAlias(), "eras", rb.getAlias(), &status);
+
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ int32_t numEras = ures_getSize(rb.getAlias());
+ int32_t firstTentativeIdx = MAX_INT32;
+
+ LocalMemory startDates(static_cast(uprv_malloc(numEras * sizeof(int32_t))));
+ if (startDates.isNull()) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ uprv_memset(startDates.getAlias(), 0 , numEras * sizeof(int32_t));
+
+ while (ures_hasNext(rb.getAlias())) {
+ LocalUResourceBundlePointer eraRuleRes(ures_getNextResource(rb.getAlias(), nullptr, &status));
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ const char *eraIdxStr = ures_getKey(eraRuleRes.getAlias());
+ char *endp;
+ int32_t eraIdx = (int32_t)strtol(eraIdxStr, &endp, 10);
+ if ((size_t)(endp - eraIdxStr) != uprv_strlen(eraIdxStr)) {
+ status = U_INVALID_FORMAT_ERROR;
+ return nullptr;
+ }
+ if (eraIdx < 0 || eraIdx >= numEras) {
+ status = U_INVALID_FORMAT_ERROR;
+ return nullptr;
+ }
+ if (isSet(startDates[eraIdx])) {
+ // start date of the index was already set
+ status = U_INVALID_FORMAT_ERROR;
+ return nullptr;
+ }
+
+ UBool hasName = TRUE;
+ UBool hasEnd = TRUE;
+ int32_t len;
+ while (ures_hasNext(eraRuleRes.getAlias())) {
+ LocalUResourceBundlePointer res(ures_getNextResource(eraRuleRes.getAlias(), nullptr, &status));
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ const char *key = ures_getKey(res.getAlias());
+ if (uprv_strcmp(key, "start") == 0) {
+ const int32_t *fields = ures_getIntVector(res.getAlias(), &len, &status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ if (len != 3 || !isValidRuleStartDate(fields[0], fields[1], fields[2])) {
+ status = U_INVALID_FORMAT_ERROR;
+ return nullptr;
+ }
+ startDates[eraIdx] = encodeDate(fields[0], fields[1], fields[2]);
+ } else if (uprv_strcmp(key, "named") == 0) {
+ const UChar *val = ures_getString(res.getAlias(), &len, &status);
+ if (u_strncmp(val, VAL_FALSE, VAL_FALSE_LEN) == 0) {
+ hasName = FALSE;
+ }
+ } else if (uprv_strcmp(key, "end") == 0) {
+ hasEnd = TRUE;
+ }
+ }
+
+ if (isSet(startDates[eraIdx])) {
+ if (hasEnd) {
+ // This implementation assumes either start or end is available, not both.
+ // For now, just ignore the end rule.
+ }
+ } else {
+ if (hasEnd) {
+ if (eraIdx != 0) {
+ // This implementation does not support end only rule for eras other than
+ // the first one.
+ status = U_INVALID_FORMAT_ERROR;
+ return nullptr;
+ }
+ U_ASSERT(eraIdx == 0);
+ startDates[eraIdx] = MIN_ENCODED_START;
+ } else {
+ status = U_INVALID_FORMAT_ERROR;
+ return nullptr;
+ }
+ }
+
+ if (hasName) {
+ if (eraIdx >= firstTentativeIdx) {
+ status = U_INVALID_FORMAT_ERROR;
+ return nullptr;
+ }
+ } else {
+ if (eraIdx < firstTentativeIdx) {
+ firstTentativeIdx = eraIdx;
+ }
+ }
+ }
+
+ EraRules *result;
+ if (firstTentativeIdx < MAX_INT32 && !includeTentativeEra) {
+ result = new EraRules(startDates, firstTentativeIdx);
+ } else {
+ result = new EraRules(startDates, numEras);
+ }
+
+ if (result == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return result;
+}
+
+void EraRules::getStartDate(int32_t eraIdx, int32_t (&fields)[3], UErrorCode& status) const {
+ if(U_FAILURE(status)) {
+ return;
+ }
+ if (eraIdx < 0 || eraIdx >= numEras) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ decodeDate(startDates[eraIdx], fields);
+}
+
+int32_t EraRules::getStartYear(int32_t eraIdx, UErrorCode& status) const {
+ int year = MAX_INT32/2; // bogus value (/2 so don't overflow elsewhere )
+ if(U_FAILURE(status)) {
+ return year;
+ }
+ if (eraIdx < 0 || eraIdx >= numEras) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return year;
+ }
+ int fields[3];
+ decodeDate(startDates[eraIdx], fields);
+ year = fields[0];
+
+ return year;
+}
+
+int32_t EraRules::getEraIndex(int32_t year, int32_t month, int32_t day, UErrorCode& status) const {
+ if(U_FAILURE(status)) {
+ return -1;
+ }
+
+ if (month < 1 || month > 12 || day < 1 || day > 31) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return -1;
+ }
+ int32_t high = numEras; // last index + 1
+ int32_t low;
+
+ // Short circuit for recent years. Most modern computations will
+ // occur in the last few eras.
+ if (compareEncodedDateWithYMD(startDates[getCurrentEraIndex()], year, month, day) <= 0) {
+ low = getCurrentEraIndex();
+ } else {
+ low = 0;
+ }
+
+ // Do binary search
+ while (low < high - 1) {
+ int i = (low + high) / 2;
+ if (compareEncodedDateWithYMD(startDates[i], year, month, day) <= 0) {
+ low = i;
+ } else {
+ high = i;
+ }
+ }
+ return low;
+}
+
+void EraRules::initCurrentEra() {
+ UDate now = ucal_getNow();
+ int year, month0, dom, dow, doy, mid;
+ Grego::timeToFields(now, year, month0, dom, dow, doy, mid);
+ int currentEncodedDate = encodeDate(year, month0 + 1 /* changes to 1-base */, dom);
+ int eraIdx = numEras - 1;
+ while (eraIdx > 0) {
+ if (currentEncodedDate >= startDates[eraIdx]) {
+ break;
+ }
+ eraIdx--;
+ }
+ // Note: current era could be before the first era.
+ // In this case, this implementation returns the first era index (0).
+ currentEra = eraIdx;}
+
+U_NAMESPACE_END
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+
diff --git a/icuSources/i18n/erarules.h b/icuSources/i18n/erarules.h
new file mode 100644
index 00000000..620f27cb
--- /dev/null
+++ b/icuSources/i18n/erarules.h
@@ -0,0 +1,98 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef ERARULES_H_
+#define ERARULES_H_
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/localpointer.h"
+#include "unicode/uobject.h"
+#include "cmemory.h"
+
+U_NAMESPACE_BEGIN
+
+// Export an explicit template instantiation of LocalMemory used as a data member of EraRules.
+// When building DLLs for Windows this is required even though no direct access leaks out of the i18n library.
+// See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(_MSC_VER)
+// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=
+#pragma warning(push)
+#pragma warning(disable: 4661)
+#endif
+template class U_I18N_API LocalPointerBase;
+template class U_I18N_API LocalMemory;
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+#endif
+
+class U_I18N_API EraRules : public UMemory {
+public:
+ ~EraRules();
+
+ static EraRules* createInstance(const char *calType, UBool includeTentativeEra, UErrorCode& status);
+
+ /**
+ * Gets number of effective eras
+ * @return number of effective eras
+ */
+ inline int32_t getNumberOfEras() const {
+ return numEras;
+ }
+
+ /**
+ * Gets start date of an era
+ * @param eraIdx Era index
+ * @param fields Receives date fields. The result includes values of year, month,
+ * day of month in this order. When an era has no start date, the result
+ * will be January 1st in year whose value is minimum integer.
+ * @param status Receives status.
+ */
+ void getStartDate(int32_t eraIdx, int32_t (&fields)[3], UErrorCode& status) const;
+
+ /**
+ * Gets start year of an era
+ * @param eraIdx Era index
+ * @param status Receives status.
+ * @return The first year of an era. When a era has no start date, minimum int32
+ * value is returned.
+ */
+ int32_t getStartYear(int32_t eraIdx, UErrorCode& status) const;
+
+ /**
+ * Returns era index for the specified year/month/day.
+ * @param year Year
+ * @param month Month (1-base)
+ * @param day Day of month
+ * @param status Receives status
+ * @return era index (or 0, when the specified date is before the first era)
+ */
+ int32_t getEraIndex(int32_t year, int32_t month, int32_t day, UErrorCode& status) const;
+
+ /**
+ * Gets the current era index. This is calculated only once for an instance of
+ * EraRules.
+ *
+ * @return era index of current era (or 0, when current date is before the first era)
+ */
+ inline int32_t getCurrentEraIndex() const {
+ return currentEra;
+ }
+
+private:
+ EraRules(LocalMemory& eraStartDates, int32_t numEra);
+
+ void initCurrentEra();
+
+ LocalMemory startDates;
+ int32_t numEras;
+ int32_t currentEra;
+};
+
+U_NAMESPACE_END
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif /* ERARULES_H_ */
diff --git a/icuSources/i18n/i18n.vcxproj b/icuSources/i18n/i18n.vcxproj
index 0af58a63..fdc65a6e 100644
--- a/icuSources/i18n/i18n.vcxproj
+++ b/icuSources/i18n/i18n.vcxproj
@@ -160,6 +160,7 @@
+
@@ -408,6 +409,7 @@
+
diff --git a/icuSources/i18n/i18n.vcxproj.filters b/icuSources/i18n/i18n.vcxproj.filters
index 494c8e16..9146cdfa 100644
--- a/icuSources/i18n/i18n.vcxproj.filters
+++ b/icuSources/i18n/i18n.vcxproj.filters
@@ -621,6 +621,9 @@
formatting
+
+ formatting
+
@@ -1178,6 +1181,9 @@
collation
+
+ formatting
+
diff --git a/icuSources/i18n/i18n_uwp.vcxproj b/icuSources/i18n/i18n_uwp.vcxproj
index 6379486d..adb92b51 100644
--- a/icuSources/i18n/i18n_uwp.vcxproj
+++ b/icuSources/i18n/i18n_uwp.vcxproj
@@ -267,6 +267,7 @@
+
@@ -513,6 +514,7 @@
+
diff --git a/icuSources/i18n/japancal.cpp b/icuSources/i18n/japancal.cpp
index 17b4e076..0fead593 100644
--- a/icuSources/i18n/japancal.cpp
+++ b/icuSources/i18n/japancal.cpp
@@ -16,286 +16,105 @@
#include "unicode/utypes.h"
#if !UCONFIG_NO_FORMATTING
-
+#if U_PLATFORM_HAS_WINUWP_API == 0
+#include // getenv() is not available in UWP env
+#else
+#ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif
+# define VC_EXTRALEAN
+# define NOUSER
+# define NOSERVICE
+# define NOIME
+# define NOMCX
+#include
+#endif
#include "cmemory.h"
+#include "erarules.h"
#include "japancal.h"
#include "unicode/gregocal.h"
#include "umutex.h"
#include "uassert.h"
-
-//#define U_DEBUG_JCAL
-
-#ifdef U_DEBUG_JCAL
-#include
-#endif
+#include "ucln_in.h"
+#include "cstring.h"
+
+static icu::EraRules * gJapaneseEraRules = nullptr;
+static icu::UInitOnce gJapaneseEraRulesInitOnce = U_INITONCE_INITIALIZER;
+static int32_t gCurrentEra = 0;
+
+U_CDECL_BEGIN
+static UBool japanese_calendar_cleanup(void) {
+ if (gJapaneseEraRules) {
+ delete gJapaneseEraRules;
+ gJapaneseEraRules = nullptr;
+ }
+ gCurrentEra = 0;
+ gJapaneseEraRulesInitOnce.reset();
+ return TRUE;
+}
+U_CDECL_END
U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(JapaneseCalendar)
-// Gregorian date of each emperor's ascension
-// Years are AD, months are 1-based.
-static const struct {
- int16_t year;
- int8_t month;
- int8_t day;
-} kEraInfo[] = {
- // Year Month Day
- { 645, 6, 19 }, // Taika 0
- { 650, 2, 15 }, // Hakuchi 1
- { 672, 1, 1 }, // Hakuho 2
- { 686, 7, 20 }, // Shucho 3
- { 701, 3, 21 }, // Taiho 4
- { 704, 5, 10 }, // Keiun 5
- { 708, 1, 11 }, // Wado 6
- { 715, 9, 2 }, // Reiki 7
- { 717, 11, 17 }, // Yoro 8
- { 724, 2, 4 }, // Jinki 9
- { 729, 8, 5 }, // Tempyo 10
- { 749, 4, 14 }, // Tempyo-kampo 11
- { 749, 7, 2 }, // Tempyo-shoho 12
- { 757, 8, 18 }, // Tempyo-hoji 13
- { 765, 1, 7 }, // Tempho-jingo 14
- { 767, 8, 16 }, // Jingo-keiun 15
- { 770, 10, 1 }, // Hoki 16
- { 781, 1, 1 }, // Ten-o 17
- { 782, 8, 19 }, // Enryaku 18
- { 806, 5, 18 }, // Daido 19
- { 810, 9, 19 }, // Konin 20
- { 824, 1, 5 }, // Tencho
- { 834, 1, 3 }, // Showa
- { 848, 6, 13 }, // Kajo
- { 851, 4, 28 }, // Ninju
- { 854, 11, 30 }, // Saiko
- { 857, 2, 21 }, // Tennan
- { 859, 4, 15 }, // Jogan
- { 877, 4, 16 }, // Genkei
- { 885, 2, 21 }, // Ninna
- { 889, 4, 27 }, // Kampyo 30
- { 898, 4, 26 }, // Shotai
- { 901, 7, 15 }, // Engi
- { 923, 4, 11 }, // Encho
- { 931, 4, 26 }, // Shohei
- { 938, 5, 22 }, // Tengyo
- { 947, 4, 22 }, // Tenryaku
- { 957, 10, 27 }, // Tentoku
- { 961, 2, 16 }, // Owa
- { 964, 7, 10 }, // Koho
- { 968, 8, 13 }, // Anna 40
- { 970, 3, 25 }, // Tenroku
- { 973, 12, 20 }, // Ten-en
- { 976, 7, 13 }, // Jogen
- { 978, 11, 29 }, // Tengen
- { 983, 4, 15 }, // Eikan
- { 985, 4, 27 }, // Kanna
- { 987, 4, 5 }, // Ei-en
- { 989, 8, 8 }, // Eiso
- { 990, 11, 7 }, // Shoryaku
- { 995, 2, 22 }, // Chotoku 50
- { 999, 1, 13 }, // Choho
- { 1004, 7, 20 }, // Kanko
- { 1012, 12, 25 }, // Chowa
- { 1017, 4, 23 }, // Kannin
- { 1021, 2, 2 }, // Jian
- { 1024, 7, 13 }, // Manju
- { 1028, 7, 25 }, // Chogen
- { 1037, 4, 21 }, // Choryaku
- { 1040, 11, 10 }, // Chokyu
- { 1044, 11, 24 }, // Kantoku 60
- { 1046, 4, 14 }, // Eisho
- { 1053, 1, 11 }, // Tengi
- { 1058, 8, 29 }, // Kohei
- { 1065, 8, 2 }, // Jiryaku
- { 1069, 4, 13 }, // Enkyu
- { 1074, 8, 23 }, // Shoho
- { 1077, 11, 17 }, // Shoryaku
- { 1081, 2, 10 }, // Eiho
- { 1084, 2, 7 }, // Otoku
- { 1087, 4, 7 }, // Kanji 70
- { 1094, 12, 15 }, // Kaho
- { 1096, 12, 17 }, // Eicho
- { 1097, 11, 21 }, // Shotoku
- { 1099, 8, 28 }, // Kowa
- { 1104, 2, 10 }, // Choji
- { 1106, 4, 9 }, // Kasho
- { 1108, 8, 3 }, // Tennin
- { 1110, 7, 13 }, // Ten-ei
- { 1113, 7, 13 }, // Eikyu
- { 1118, 4, 3 }, // Gen-ei 80
- { 1120, 4, 10 }, // Hoan
- { 1124, 4, 3 }, // Tenji
- { 1126, 1, 22 }, // Daiji
- { 1131, 1, 29 }, // Tensho
- { 1132, 8, 11 }, // Chosho
- { 1135, 4, 27 }, // Hoen
- { 1141, 7, 10 }, // Eiji
- { 1142, 4, 28 }, // Koji
- { 1144, 2, 23 }, // Tenyo
- { 1145, 7, 22 }, // Kyuan 90
- { 1151, 1, 26 }, // Ninpei
- { 1154, 10, 28 }, // Kyuju
- { 1156, 4, 27 }, // Hogen
- { 1159, 4, 20 }, // Heiji
- { 1160, 1, 10 }, // Eiryaku
- { 1161, 9, 4 }, // Oho
- { 1163, 3, 29 }, // Chokan
- { 1165, 6, 5 }, // Eiman
- { 1166, 8, 27 }, // Nin-an
- { 1169, 4, 8 }, // Kao 100
- { 1171, 4, 21 }, // Shoan
- { 1175, 7, 28 }, // Angen
- { 1177, 8, 4 }, // Jisho
- { 1181, 7, 14 }, // Yowa
- { 1182, 5, 27 }, // Juei
- { 1184, 4, 16 }, // Genryuku
- { 1185, 8, 14 }, // Bunji
- { 1190, 4, 11 }, // Kenkyu
- { 1199, 4, 27 }, // Shoji
- { 1201, 2, 13 }, // Kennin 110
- { 1204, 2, 20 }, // Genkyu
- { 1206, 4, 27 }, // Ken-ei
- { 1207, 10, 25 }, // Shogen
- { 1211, 3, 9 }, // Kenryaku
- { 1213, 12, 6 }, // Kenpo
- { 1219, 4, 12 }, // Shokyu
- { 1222, 4, 13 }, // Joo
- { 1224, 11, 20 }, // Gennin
- { 1225, 4, 20 }, // Karoku
- { 1227, 12, 10 }, // Antei 120
- { 1229, 3, 5 }, // Kanki
- { 1232, 4, 2 }, // Joei
- { 1233, 4, 15 }, // Tempuku
- { 1234, 11, 5 }, // Bunryaku
- { 1235, 9, 19 }, // Katei
- { 1238, 11, 23 }, // Ryakunin
- { 1239, 2, 7 }, // En-o
- { 1240, 7, 16 }, // Ninji
- { 1243, 2, 26 }, // Kangen
- { 1247, 2, 28 }, // Hoji 130
- { 1249, 3, 18 }, // Kencho
- { 1256, 10, 5 }, // Kogen
- { 1257, 3, 14 }, // Shoka
- { 1259, 3, 26 }, // Shogen
- { 1260, 4, 13 }, // Bun-o
- { 1261, 2, 20 }, // Kocho
- { 1264, 2, 28 }, // Bun-ei
- { 1275, 4, 25 }, // Kenji
- { 1278, 2, 29 }, // Koan
- { 1288, 4, 28 }, // Shoo 140
- { 1293, 8, 55 }, // Einin
- { 1299, 4, 25 }, // Shoan
- { 1302, 11, 21 }, // Kengen
- { 1303, 8, 5 }, // Kagen
- { 1306, 12, 14 }, // Tokuji
- { 1308, 10, 9 }, // Enkei
- { 1311, 4, 28 }, // Ocho
- { 1312, 3, 20 }, // Showa
- { 1317, 2, 3 }, // Bunpo
- { 1319, 4, 28 }, // Geno 150
- { 1321, 2, 23 }, // Genkyo
- { 1324, 12, 9 }, // Shochu
- { 1326, 4, 26 }, // Kareki
- { 1329, 8, 29 }, // Gentoku
- { 1331, 8, 9 }, // Genko
- { 1334, 1, 29 }, // Kemmu
- { 1336, 2, 29 }, // Engen
- { 1340, 4, 28 }, // Kokoku
- { 1346, 12, 8 }, // Shohei
- { 1370, 7, 24 }, // Kentoku 160
- { 1372, 4, 1 }, // Bunch\u0169
- { 1375, 5, 27 }, // Tenju
- { 1379, 3, 22 }, // Koryaku
- { 1381, 2, 10 }, // Kowa
- { 1384, 4, 28 }, // Gench\u0169
- { 1384, 2, 27 }, // Meitoku
- { 1387, 8, 23 }, // Kakei
- { 1389, 2, 9 }, // Koo
- { 1390, 3, 26 }, // Meitoku
- { 1394, 7, 5 }, // Oei 170
- { 1428, 4, 27 }, // Shocho
- { 1429, 9, 5 }, // Eikyo
- { 1441, 2, 17 }, // Kakitsu
- { 1444, 2, 5 }, // Bun-an
- { 1449, 7, 28 }, // Hotoku
- { 1452, 7, 25 }, // Kyotoku
- { 1455, 7, 25 }, // Kosho
- { 1457, 9, 28 }, // Choroku
- { 1460, 12, 21 }, // Kansho
- { 1466, 2, 28 }, // Bunsho 180
- { 1467, 3, 3 }, // Onin
- { 1469, 4, 28 }, // Bunmei
- { 1487, 7, 29 }, // Chokyo
- { 1489, 8, 21 }, // Entoku
- { 1492, 7, 19 }, // Meio
- { 1501, 2, 29 }, // Bunki
- { 1504, 2, 30 }, // Eisho
- { 1521, 8, 23 }, // Taiei
- { 1528, 8, 20 }, // Kyoroku
- { 1532, 7, 29 }, // Tenmon 190
- { 1555, 10, 23 }, // Koji
- { 1558, 2, 28 }, // Eiroku
- { 1570, 4, 23 }, // Genki
- { 1573, 7, 28 }, // Tensho
- { 1592, 12, 8 }, // Bunroku
- { 1596, 10, 27 }, // Keicho
- { 1615, 7, 13 }, // Genwa
- { 1624, 2, 30 }, // Kan-ei
- { 1644, 12, 16 }, // Shoho
- { 1648, 2, 15 }, // Keian 200
- { 1652, 9, 18 }, // Shoo
- { 1655, 4, 13 }, // Meiryaku
- { 1658, 7, 23 }, // Manji
- { 1661, 4, 25 }, // Kanbun
- { 1673, 9, 21 }, // Enpo
- { 1681, 9, 29 }, // Tenwa
- { 1684, 2, 21 }, // Jokyo
- { 1688, 9, 30 }, // Genroku
- { 1704, 3, 13 }, // Hoei
- { 1711, 4, 25 }, // Shotoku 210
- { 1716, 6, 22 }, // Kyoho
- { 1736, 4, 28 }, // Genbun
- { 1741, 2, 27 }, // Kanpo
- { 1744, 2, 21 }, // Enkyo
- { 1748, 7, 12 }, // Kan-en
- { 1751, 10, 27 }, // Horyaku
- { 1764, 6, 2 }, // Meiwa
- { 1772, 11, 16 }, // An-ei
- { 1781, 4, 2 }, // Tenmei
- { 1789, 1, 25 }, // Kansei 220
- { 1801, 2, 5 }, // Kyowa
- { 1804, 2, 11 }, // Bunka
- { 1818, 4, 22 }, // Bunsei
- { 1830, 12, 10 }, // Tenpo
- { 1844, 12, 2 }, // Koka
- { 1848, 2, 28 }, // Kaei
- { 1854, 11, 27 }, // Ansei
- { 1860, 3, 18 }, // Man-en
- { 1861, 2, 19 }, // Bunkyu
- { 1864, 2, 20 }, // Genji 230
- { 1865, 4, 7 }, // Keio 231
- { 1868, 9, 8 }, // Meiji 232
- { 1912, 7, 30 }, // Taisho 233
- { 1926, 12, 25 }, // Showa 234
- { 1989, 1, 8 } // Heisei 235
-};
-
-#define kEraCount UPRV_LENGTHOF(kEraInfo)
-
-/**
- * The current era, for reference.
- */
-static const int32_t kCurrentEra = (kEraCount-1); // int32_t to match the calendar field type
-
static const int32_t kGregorianEpoch = 1970; // used as the default value of EXTENDED_YEAR
+static const char* TENTATIVE_ERA_VAR_NAME = "ICU_ENABLE_TENTATIVE_ERA";
+
+
+// Export the following for use by test code.
+UBool JapaneseCalendar::enableTentativeEra() {
+ // Although start date of next Japanese era is planned ahead, a name of
+ // new era might not be available. This implementation allows tester to
+ // check a new era without era names by settings below (in priority order).
+ // By default, such tentative era is disabled.
+
+ // 1. Environment variable ICU_ENABLE_TENTATIVE_ERA=true or false
+
+ UBool includeTentativeEra = FALSE;
+
+#if U_PLATFORM_HAS_WINUWP_API == 1
+ // UWP doesn't allow access to getenv(), but we can call GetEnvironmentVariableW to do the same thing.
+ UChar varName[26] = {};
+ u_charsToUChars(TENTATIVE_ERA_VAR_NAME, varName, static_cast(uprv_strlen(TENTATIVE_ERA_VAR_NAME)));
+ WCHAR varValue[5] = {};
+ DWORD ret = GetEnvironmentVariableW(reinterpret_cast(varName), varValue, UPRV_LENGTHOF(varValue));
+ if ((ret == 4) && (_wcsicmp(varValue, L"true") == 0)) {
+ includeTentativeEra = TRUE;
+ }
+#else
+ char *envVarVal = getenv(TENTATIVE_ERA_VAR_NAME);
+ if (envVarVal != NULL && uprv_stricmp(envVarVal, "true") == 0) {
+ includeTentativeEra = TRUE;
+ }
+#endif
+ return includeTentativeEra;
+}
+
+
+// Initialize global Japanese era data
+static void U_CALLCONV initializeEras(UErrorCode &status) {
+ gJapaneseEraRules = EraRules::createInstance("japanese", JapaneseCalendar::enableTentativeEra(), status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ gCurrentEra = gJapaneseEraRules->getCurrentEraIndex();
+}
+
+static void init(UErrorCode &status) {
+ umtx_initOnce(gJapaneseEraRulesInitOnce, &initializeEras, status);
+ ucln_i18n_registerCleanup(UCLN_I18N_JAPANESE_CALENDAR, japanese_calendar_cleanup);
+}
/* Some platforms don't like to export constants, like old Palm OS and some z/OS configurations. */
uint32_t JapaneseCalendar::getCurrentEra() {
- return kCurrentEra;
+ return gCurrentEra;
}
JapaneseCalendar::JapaneseCalendar(const Locale& aLocale, UErrorCode& success)
: GregorianCalendar(aLocale, success)
{
+ init(success);
setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
}
@@ -306,6 +125,9 @@ JapaneseCalendar::~JapaneseCalendar()
JapaneseCalendar::JapaneseCalendar(const JapaneseCalendar& source)
: GregorianCalendar(source)
{
+ UErrorCode status = U_ZERO_ERROR;
+ init(status);
+ U_ASSERT(U_SUCCESS(status));
}
JapaneseCalendar& JapaneseCalendar::operator= ( const JapaneseCalendar& right)
@@ -332,10 +154,14 @@ int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear)
int32_t month = 0;
// Find out if we are at the edge of an era
-
- if(eyear == kEraInfo[era].year) {
+ int32_t eraStart[3] = { 0,0,0 };
+ UErrorCode status = U_ZERO_ERROR;
+ gJapaneseEraRules->getStartDate(era, eraStart, status);
+ U_ASSERT(U_SUCCESS(status));
+ if(eyear == eraStart[0]) {
// Yes, we're in the first year of this era.
- return kEraInfo[era].month-1;
+ return eraStart[1] // month
+ -1; // return 0-based month
}
return month;
@@ -346,9 +172,13 @@ int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month)
int32_t era = internalGetEra();
int32_t day = 1;
- if(eyear == kEraInfo[era].year) {
- if(month == (kEraInfo[era].month-1)) {
- return kEraInfo[era].day;
+ int32_t eraStart[3] = { 0,0,0 };
+ UErrorCode status = U_ZERO_ERROR;
+ gJapaneseEraRules->getStartDate(era, eraStart, status);
+ U_ASSERT(U_SUCCESS(status));
+ if(eyear == eraStart[0]) {
+ if(month == eraStart[1] - 1) {
+ return eraStart[2];
}
}
@@ -358,7 +188,7 @@ int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month)
int32_t JapaneseCalendar::internalGetEra() const
{
- return internalGet(UCAL_ERA, kCurrentEra);
+ return internalGet(UCAL_ERA, gCurrentEra);
}
int32_t JapaneseCalendar::handleGetExtendedYear()
@@ -369,12 +199,18 @@ int32_t JapaneseCalendar::handleGetExtendedYear()
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR &&
newerField(UCAL_EXTENDED_YEAR, UCAL_ERA) == UCAL_EXTENDED_YEAR) {
- year = internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
- } else {
- // Subtract one because year starts at 1
- year = internalGet(UCAL_YEAR) + kEraInfo[internalGetEra()].year - 1;
- }
- return year;
+ year = internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
+ } else {
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t eraStartYear = gJapaneseEraRules->getStartYear(internalGet(UCAL_ERA, gCurrentEra), status);
+ U_ASSERT(U_SUCCESS(status));
+
+ // extended year is a gregorian year, where 1 = 1AD, 0 = 1BC, -1 = 2BC, etc
+ year = internalGet(UCAL_YEAR, 1) // pin to minimum of year 1 (first year)
+ + eraStartYear // add gregorian starting year
+ - 1; // Subtract one because year starts at 1
+ }
+ return year;
}
@@ -383,79 +219,10 @@ void JapaneseCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status
//Calendar::timeToFields(theTime, quick, status);
GregorianCalendar::handleComputeFields(julianDay, status);
int32_t year = internalGet(UCAL_EXTENDED_YEAR); // Gregorian year
+ int32_t eraIdx = gJapaneseEraRules->getEraIndex(year, internalGet(UCAL_MONTH) + 1, internalGet(UCAL_DAY_OF_MONTH), status);
- int32_t low = 0;
-
- // Short circuit for recent years. Most modern computations will
- // occur in the current era and won't require the binary search.
- // Note that if the year is == the current era year, then we use
- // the binary search to handle the month/dom comparison.
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, "== %d \n", year);
-#endif
-
- if (year > kEraInfo[kCurrentEra].year) {
- low = kCurrentEra;
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, " low=%d (special)\n", low);
-#endif
- } else {
- // Binary search
- int32_t high = kEraCount;
-
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, " high=%d\n", high);
-#endif
- while (low < high - 1) {
- int32_t i = (low + high) / 2;
- int32_t diff = year - kEraInfo[i].year;
-
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, " d=%d low=%d, high=%d. Considering %d:M%d D%d Y%d. { we are ?:M%d D%d Y%d }\n",
- diff,low, high, i, kEraInfo[i].month-1, kEraInfo[i].day, kEraInfo[i].year, internalGet(UCAL_MONTH), internalGet(UCAL_DATE),year);
-#endif
-
- // If years are the same, then compare the months, and if those
- // are the same, compare days of month. In the ERAS array
- // months are 1-based for easier maintenance.
- if (diff == 0) {
- diff = internalGet(UCAL_MONTH) - (kEraInfo[i].month - 1);
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, "diff now %d (M) = %d - %d - 1\n", diff, internalGet(UCAL_MONTH), kEraInfo[i].month);
-#endif
- if (diff == 0) {
- diff = internalGet(UCAL_DATE) - kEraInfo[i].day;
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, "diff now %d (D)\n", diff);
-#endif
- }
- }
- if (diff >= 0) {
- low = i;
- } else {
- high = i;
- }
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, ". low=%d, high=%d, i=%d, diff=%d.. %d\n", low, high, i, diff, year);
-#endif
-
- }
- }
-
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, " low[era]=%d,.. %d\n", low, year);
-#endif
- // Now we've found the last era that starts before this date, so
- // adjust the year to count from the start of that era. Note that
- // all dates before the first era will fall into the first era by
- // the algorithm.
-
- internalSet(UCAL_ERA, low);
- internalSet(UCAL_YEAR, year - kEraInfo[low].year + 1);
-#ifdef U_DEBUG_JCAL
- fprintf(stderr, " Set ERA=%d, year=%d\n", low, year-kEraInfo[low].year+1);
-#endif
-
+ internalSet(UCAL_ERA, eraIdx);
+ internalSet(UCAL_YEAR, year - gJapaneseEraRules->getStartYear(eraIdx, status) + 1);
}
/*
@@ -483,7 +250,7 @@ int32_t JapaneseCalendar::handleGetLimit(UCalendarDateFields field, ELimitType l
if (limitType == UCAL_LIMIT_MINIMUM || limitType == UCAL_LIMIT_GREATEST_MINIMUM) {
return 0;
}
- return kCurrentEra;
+ return gJapaneseEraRules->getNumberOfEras() - 1; // max known era, not gCurrentEra
case UCAL_YEAR:
{
switch (limitType) {
@@ -494,7 +261,12 @@ int32_t JapaneseCalendar::handleGetLimit(UCalendarDateFields field, ELimitType l
return 1;
case UCAL_LIMIT_COUNT: //added to avoid warning
case UCAL_LIMIT_MAXIMUM:
- return GregorianCalendar::handleGetLimit(UCAL_YEAR, UCAL_LIMIT_MAXIMUM) - kEraInfo[kCurrentEra].year;
+ {
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t eraStartYear = gJapaneseEraRules->getStartYear(gCurrentEra, status);
+ U_ASSERT(U_SUCCESS(status));
+ return GregorianCalendar::handleGetLimit(UCAL_YEAR, UCAL_LIMIT_MAXIMUM) - eraStartYear;
+ }
default:
return 1; // Error condition, invalid limitType
}
@@ -510,15 +282,18 @@ int32_t JapaneseCalendar::getActualMaximum(UCalendarDateFields field, UErrorCode
if (U_FAILURE(status)) {
return 0; // error case... any value
}
- if (era == kCurrentEra) {
+ if (era == gJapaneseEraRules->getNumberOfEras() - 1) { //
// TODO: Investigate what value should be used here - revisit after 4.0.
return handleGetLimit(UCAL_YEAR, UCAL_LIMIT_MAXIMUM);
} else {
- int32_t nextEraYear = kEraInfo[era + 1].year;
- int32_t nextEraMonth = kEraInfo[era + 1].month;
- int32_t nextEraDate = kEraInfo[era + 1].day;
-
- int32_t maxYear = nextEraYear - kEraInfo[era].year + 1; // 1-base
+ int32_t nextEraStart[3] = { 0,0,0 };
+ gJapaneseEraRules->getStartDate(era + 1, nextEraStart, status);
+ int32_t nextEraYear = nextEraStart[0];
+ int32_t nextEraMonth = nextEraStart[1]; // 1-base
+ int32_t nextEraDate = nextEraStart[2];
+
+ int32_t eraStartYear = gJapaneseEraRules->getStartYear(era, status);
+ int32_t maxYear = nextEraYear - eraStartYear + 1; // 1-base
if (nextEraMonth == 1 && nextEraDate == 1) {
// Subtract 1, because the next era starts at Jan 1
maxYear--;
diff --git a/icuSources/i18n/japancal.h b/icuSources/i18n/japancal.h
index f05b2ac9..25409d49 100644
--- a/icuSources/i18n/japancal.h
+++ b/icuSources/i18n/japancal.h
@@ -49,17 +49,32 @@ U_NAMESPACE_BEGIN
* July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei). Constants
* for these eras, suitable for use in the UCAL_ERA
field, are provided
* in this class. Note that the number used for each era is more or
- * less arbitrary. Currently, the era starting in 1053 AD is era #0; however this
- * may change in the future as we add more historical data. Use the predefined
- * constants rather than using actual, absolute numbers.
+ * less arbitrary. Currently, the era starting in 645 AD is era #0; however this
+ * may change in the future. Use the predefined constants rather than using actual,
+ * absolute numbers.
*
+ * Since ICU4C 63, start date of each era is imported from CLDR. CLDR era data
+ * may contain tentative era in near future with placeholder names. By default,
+ * such era data is not enabled. ICU4C users who want to test the behavior of
+ * the future era can enable this one of following settings (in the priority
+ * order):
+ *
+ * - Environment variable
ICU_ENABLE_TENTATIVE_ERA=true
.
+ *
* @internal
*/
class JapaneseCalendar : public GregorianCalendar {
public:
/**
- * Useful constants for JapaneseCalendar.
+ * Check environment variable.
+ * @internal
+ */
+ U_I18N_API static UBool U_EXPORT2 enableTentativeEra(void);
+
+ /**
+ * Useful constants for JapaneseCalendar.
+ * Exported for use by test code.
* @internal
*/
U_I18N_API static uint32_t U_EXPORT2 getCurrentEra(void); // the current era
diff --git a/icuSources/i18n/smpdtfmt.cpp b/icuSources/i18n/smpdtfmt.cpp
index f278efd9..9feee023 100644
--- a/icuSources/i18n/smpdtfmt.cpp
+++ b/icuSources/i18n/smpdtfmt.cpp
@@ -953,6 +953,8 @@ SimpleDateFormat::initialize(const Locale& locale,
{
if (U_FAILURE(status)) return;
+ parsePattern(); // Need this before initNumberFormatters(), to set fHasHanYearChar
+
// If the locale has @[....]numbers=hanidays we want to *delete* that (so it
// it is not used for every field) and then set fDateOverride to "d=hanidays"
// (as with std formats for zh@calendar=chinese) to use hanidays for d field.
@@ -967,6 +969,14 @@ SimpleDateFormat::initialize(const Locale& locale,
fDateOverride.setTo(hanidaysOverride,-1);
}
}
+ // Simple-minded hack to force Gannen year numbering for ja@calendar=japanese
+ // if format is non-numeric (includes å¹´) and fDateOverride is not already specified.
+ // Now this does get updated if applyPattern subsequently changes the pattern type.
+ if (fDateOverride.isBogus() && fHasHanYearChar &&
+ fCalendar != nullptr && uprv_strcmp(fCalendar->getType(),"japanese") == 0 &&
+ uprv_strcmp(fLocale.getLanguage(),"ja") == 0) {
+ fDateOverride.setTo(u"y=jpanyear", -1);
+ }
// We don't need to check that the row count is >= 1, since all 2d arrays have at
// least one row
@@ -983,8 +993,6 @@ SimpleDateFormat::initialize(const Locale& locale,
{
status = U_MISSING_RESOURCE_ERROR;
}
-
- parsePattern();
}
/* Initialize the fields we use to disambiguate ambiguous years. Separate
@@ -3923,6 +3931,42 @@ SimpleDateFormat::applyPattern(const UnicodeString& pattern)
{
fPattern = pattern;
parsePattern();
+
+ // Hack to update use of Gannen year numbering for ja@calendar=japanese -
+ // use only if format is non-numeric (includes å¹´) and no other fDateOverride.
+ if (fCalendar != nullptr && uprv_strcmp(fCalendar->getType(),"japanese") == 0 &&
+ uprv_strcmp(fLocale.getLanguage(),"ja") == 0) {
+ if (fDateOverride==UnicodeString(u"y=jpanyear") && !fHasHanYearChar) {
+ // Gannen numbering is set but new pattern should not use it, unset
+ // use procedure from adoptNumberFormat to clear overrides
+ if (fSharedNumberFormatters) {
+ freeSharedNumberFormatters(fSharedNumberFormatters);
+ fSharedNumberFormatters = NULL;
+ }
+ fDateOverride.setToBogus(); // record status
+ } else if (fDateOverride.isBogus() && fHasHanYearChar) {
+ // No current override (=> no Gannen numbering) but new pattern needs it;
+ // use procedures from initNUmberFormatters / adoptNumberFormat
+ umtx_lock(&LOCK);
+ if (fSharedNumberFormatters == NULL) {
+ fSharedNumberFormatters = allocSharedNumberFormatters();
+ }
+ umtx_unlock(&LOCK);
+ if (fSharedNumberFormatters != NULL) {
+ Locale ovrLoc(fLocale.getLanguage(),fLocale.getCountry(),fLocale.getVariant(),"numbers=jpanyear");
+ UErrorCode status = U_ZERO_ERROR;
+ const SharedNumberFormat *snf = createSharedNumberFormat(ovrLoc, status);
+ if (U_SUCCESS(status)) {
+ // Now that we have an appropriate number formatter, fill in the
+ // appropriate slot in the number formatters table.
+ UDateFormatField patternCharIndex = DateFormatSymbols::getPatternCharIndex(u'y');
+ SharedObject::copyPtr(snf, fSharedNumberFormatters[patternCharIndex]);
+ snf->deleteIfZeroRefCount();
+ fDateOverride.setTo(u"y=jpanyear", -1); // record status
+ }
+ }
+ }
+ }
}
//----------------------------------------------------------------------
@@ -4257,6 +4301,7 @@ SimpleDateFormat::tzFormat() const {
void SimpleDateFormat::parsePattern() {
fHasMinute = FALSE;
fHasSecond = FALSE;
+ fHasHanYearChar = FALSE;
int len = fPattern.length();
UBool inQuote = FALSE;
@@ -4265,6 +4310,9 @@ void SimpleDateFormat::parsePattern() {
if (ch == QUOTE) {
inQuote = !inQuote;
}
+ if (ch == 0x5E74) { // don't care whether this is inside quotes
+ fHasHanYearChar = TRUE;
+ }
if (!inQuote) {
if (ch == 0x6D) { // 0x6D == 'm'
fHasMinute = TRUE;
diff --git a/icuSources/i18n/ucln_in.h b/icuSources/i18n/ucln_in.h
index 318eafc1..c17cd8e5 100644
--- a/icuSources/i18n/ucln_in.h
+++ b/icuSources/i18n/ucln_in.h
@@ -32,6 +32,7 @@ typedef enum ECleanupI18NType {
UCLN_I18N_SPOOFDATA,
UCLN_I18N_TRANSLITERATOR,
UCLN_I18N_REGEX,
+ UCLN_I18N_JAPANESE_CALENDAR,
UCLN_I18N_ISLAMIC_CALENDAR,
UCLN_I18N_CHINESE_CALENDAR,
UCLN_I18N_HEBREW_CALENDAR,
diff --git a/icuSources/i18n/unicode/calendar.h b/icuSources/i18n/unicode/calendar.h
index e6689219..098a824f 100644
--- a/icuSources/i18n/unicode/calendar.h
+++ b/icuSources/i18n/unicode/calendar.h
@@ -193,10 +193,22 @@ class BasicTimeZone;
* Long.MIN_VALUE
to Long.MAX_VALUE
.
* The new Calendar
protocol specifies the
* maximum range of supportable dates as those having Julian day numbers
- * of -0x7F000000
to +0x7F000000
. This
- * corresponds to years from ~5,800,000 BCE to ~5,800,000 CE. Programmers
- * should use the protected constants in Calendar
to
- * specify an extremely early or extremely late date.
+ * of `-0x7F000000` to `+0x7F000000`. This corresponds to years from ~5,800,000 BCE
+ * to ~5,800,000 CE. Programmers should use the protected constants in `Calendar` to
+ * specify an extremely early or extremely late date.
+ *
+ *
+ * The Japanese calendar uses a combination of era name and year number.
+ * When an emperor of Japan abdicates and a new emperor ascends the throne,
+ * a new era is declared and year number is reset to 1. Even if the date of
+ * abdication is scheduled ahead of time, the new era name might not be
+ * announced until just before the date. In such case, ICU4C may include
+ * a start date of future era without actual era name, but not enabled
+ * by default. ICU4C users who want to test the behavior of the future era
+ * can enable the tentative era by:
+ *
+ * - Environment variable
ICU_ENABLE_TENTATIVE_ERA=true
.
+ *
*
* @stable ICU 2.0
*/
@@ -904,7 +916,7 @@ public:
/**
* Sets the behavior for handling wall time repeating multiple times
* at negative time zone offset transitions. For example, 1:30 AM on
- * November 6, 2011 in US Eastern time (Ameirca/New_York) occurs twice;
+ * November 6, 2011 in US Eastern time (America/New_York) occurs twice;
* 1:30 AM EDT, then 1:30 AM EST one hour later. When UCAL_WALLTIME_FIRST
* is used, the wall time 1:30AM in this example will be interpreted as 1:30 AM EDT
* (first occurrence). When UCAL_WALLTIME_LAST
is used, it will be
@@ -2181,7 +2193,7 @@ private:
TimeZone* fZone;
/**
- * Option for rpeated wall time
+ * Option for repeated wall time
* @see #setRepeatedWallTimeOption
*/
UCalendarWallTimeOption fRepeatedWallTime;
@@ -2466,7 +2478,7 @@ private:
BasicTimeZone* getBasicTimeZone() const;
/**
- * Find the previous zone transtion near the given time.
+ * Find the previous zone transition near the given time.
* @param base The base time, inclusive
* @param transitionTime Receives the result time
* @param status The error status
diff --git a/icuSources/i18n/unicode/smpdtfmt.h b/icuSources/i18n/unicode/smpdtfmt.h
index 2d659c2d..d03cf661 100644
--- a/icuSources/i18n/unicode/smpdtfmt.h
+++ b/icuSources/i18n/unicode/smpdtfmt.h
@@ -1597,6 +1597,7 @@ private:
UBool fHasMinute;
UBool fHasSecond;
+ UBool fHasHanYearChar; // pattern contains the Han year character \u5E74
/**
* Sets fHasMinutes and fHasSeconds.
diff --git a/icuSources/i18n/unicode/ucal.h b/icuSources/i18n/unicode/ucal.h
index cb89a74b..16c0bdf1 100644
--- a/icuSources/i18n/unicode/ucal.h
+++ b/icuSources/i18n/unicode/ucal.h
@@ -105,7 +105,7 @@
*
* Note: for some non-Gregorian calendars, different
* fields may be necessary for complete disambiguation. For example, a full
- * specification of the historial Arabic astronomical calendar requires year,
+ * specification of the historical Arabic astronomical calendar requires year,
* month, day-of-month and day-of-week in some cases.
*
*
@@ -139,6 +139,19 @@
* For example, subtracting 5 days from the date September 12, 1996
* results in September 7, 1996
.
*
+ *
+ * The Japanese calendar uses a combination of era name and year number.
+ * When an emperor of Japan abdicates and a new emperor ascends the throne,
+ * a new era is declared and year number is reset to 1. Even if the date of
+ * abdication is scheduled ahead of time, the new era name might not be
+ * announced until just before the date. In such case, ICU4C may include
+ * a start date of future era without actual era name, but not enabled
+ * by default. ICU4C users who want to test the behavior of the future era
+ * can enable the tentative era by:
+ *
+ * - Environment variable
ICU_ENABLE_TENTATIVE_ERA=true
.
+ *
+ *
* @stable ICU 2.0
*/
diff --git a/icuSources/i18n/unicode/udat.h b/icuSources/i18n/unicode/udat.h
index d97f2cf2..9368ee78 100644
--- a/icuSources/i18n/unicode/udat.h
+++ b/icuSources/i18n/unicode/udat.h
@@ -482,6 +482,27 @@ typedef enum UDateFormatStyle {
#define UDAT_HOUR_TZ "jz"
#endif /* U_HIDE_DEPRECATED_API */
+#ifndef U_HIDE_INTERNAL_API
+/**
+ * Constant for Unicode string name of new (in 2019) Japanese calendar era,
+ * root/English abbreviated version (ASCII-range characters).
+ * @internal
+ */
+#define JP_ERA_2019_ROOT "Reiwa"
+/**
+ * Constant for Unicode string name of new (in 2019) Japanese calendar era,
+ * Japanese abbreviated version (Han, or fullwidth Latin for testing).
+ * @internal
+ */
+#define JP_ERA_2019_JA "\\u4EE4\\u548C"
+/**
+ * Constant for Unicode string name of new (in 2019) Japanese calendar era,
+ * root and Japanese narrow version (ASCII-range characters).
+ * @internal
+ */
+#define JP_ERA_2019_NARROW "R"
+#endif // U_HIDE_INTERNAL_API
+
/**
* FieldPosition and UFieldPosition selectors for format fields
* defined by DateFormat and UDateFormat.
diff --git a/icuSources/test/cintltst/ccaltst.c b/icuSources/test/cintltst/ccaltst.c
index 31bd63ab..abebc091 100644
--- a/icuSources/test/cintltst/ccaltst.c
+++ b/icuSources/test/cintltst/ccaltst.c
@@ -43,6 +43,7 @@ void TestGetTimeZoneIDByWindowsID(void);
void TestClear(void);
void TestPersianCalOverflow(void);
void TestGetDayPeriods(); /* Apple-specific */
+void TestJCalHeiseiNextEra(); /* Apple-specific */
void addCalTest(TestNode** root);
@@ -68,6 +69,7 @@ void addCalTest(TestNode** root)
addTest(root, &TestClear, "tsformat/ccaltst/TestClear");
addTest(root, &TestPersianCalOverflow, "tsformat/ccaltst/TestPersianCalOverflow");
addTest(root, &TestGetDayPeriods, "tsformat/ccaltst/TestGetDayPeriods"); /* Apple-specific */
+ addTest(root, &TestJCalHeiseiNextEra, "tsformat/ccaltst/TestJCalHeiseiNextEra"); /* Apple-specific */
}
/* "GMT" */
@@ -2579,4 +2581,60 @@ void TestGetDayPeriods() {
}
}
+void TestJCalHeiseiNextEra() {
+ UErrorCode status = U_ZERO_ERROR;
+ UCalendar *jCal = ucal_open(NULL, 0, "ja_JP@calendar=japanese", UCAL_DEFAULT, &status);
+ if ( U_FAILURE(status) ) {
+ log_data_err("FAIL: ucal_open for ja_JP@calendar=japanese, status %s\n", u_errorName(status));
+ } else {
+ ucal_clear(jCal); // This sets to 1970, in Showa
+ int32_t sEra = ucal_get(jCal, UCAL_ERA, &status); // Don't assume Showa is 234
+ if ( U_FAILURE(status) ) {
+ log_data_err("FAIL: ucal_get ERA for Showa, status %s\n", u_errorName(status));
+ } else {
+ int32_t iEra, eYear;
+ int32_t startYears[] = { 1926, 1989, 2019, 0 };
+ for (iEra = 1; iEra < 4; iEra++) {
+ status = U_ZERO_ERROR;
+ ucal_clear(jCal);
+ ucal_set(jCal, UCAL_ERA, sEra+iEra);
+ eYear = ucal_get(jCal, UCAL_EXTENDED_YEAR, &status);
+ if ( U_FAILURE(status) ) {
+ log_err("FAIL: set %d, ucal_get EXTENDED_YEAR, status %s\n", iEra, u_errorName(status));
+ } else if (startYears[iEra] == 0) {
+ // invalid era, start should be in the far future with non-negative millis
+ if (eYear < 10000) {
+ log_err("ERROR: set %d, invalid era should have faraway start year, but get %d\n", iEra, eYear);
+ }
+ UDate date = ucal_getMillis(jCal, &status);
+ if ( U_FAILURE(status) ) {
+ log_err("FAIL: set %d, ucal_getMillis, status %s\n", iEra, u_errorName(status));
+ } else if (date < 0) {
+ log_err("ERROR: set %d, ucal_getMillis should be positive, but get %.1f\n", iEra, date);
+ }
+ } else if (eYear != startYears[iEra]) {
+ log_err("ERROR: set %d, expected start year %d but get %d\n", iEra, startYears[iEra], eYear);
+ } else {
+ ucal_add(jCal, UCAL_ERA, 1, &status);
+ if ( U_FAILURE(status) ) {
+ log_err("FAIL: set %d, ucal_add ERA 1, status %s\n", iEra, u_errorName(status));
+ } else {
+ eYear = ucal_get(jCal, UCAL_EXTENDED_YEAR, &status);
+ if ( U_FAILURE(status) ) {
+ log_err("FAIL: set %d then add ERA 1, ucal_get EXTENDED_YEAR, status %s\n", iEra, u_errorName(status));
+ } else {
+ // If this is the last valid era, we expect adding an era to pin to the current era
+ int32_t nextEraStart = (startYears[iEra+1] == 0)? startYears[iEra]: startYears[iEra+1];
+ if (eYear != nextEraStart) {
+ log_err("ERROR: set %d then add ERA 1, expected start year %d but get %d\n", iEra, nextEraStart, eYear);
+ }
+ }
+ }
+ }
+ }
+ }
+ ucal_close(jCal);
+ }
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icuSources/test/cintltst/cdattst.c b/icuSources/test/cintltst/cdattst.c
index ca4ae88d..c2a89205 100644
--- a/icuSources/test/cintltst/cdattst.c
+++ b/icuSources/test/cintltst/cdattst.c
@@ -45,6 +45,7 @@ static void TestContext(void);
static void TestCalendarDateParse(void);
static void TestParseErrorReturnValue(void);
static void TestFormatForFields(void);
+static void TestForceGannenNumbering(void);
static void TestStandardPatterns(void);
static void TestApplyPatnOverridesTimeSep(void);
static void Test12HrFormats(void);
@@ -71,6 +72,7 @@ void addDateForTest(TestNode** root)
TESTCASE(TestOverrideNumberFormat);
TESTCASE(TestParseErrorReturnValue);
TESTCASE(TestFormatForFields);
+ TESTCASE(TestForceGannenNumbering);
TESTCASE(TestStandardPatterns);
TESTCASE(TestApplyPatnOverridesTimeSep);
TESTCASE(Test12HrFormats);
@@ -1937,6 +1939,44 @@ static void TestFormatForFields(void) {
}
}
+static void TestForceGannenNumbering(void) {
+ UErrorCode status;
+ const char* locID = "ja_JP@calendar=japanese";
+ UDate refDate = 600336000000.0; // 1989 Jan 9 Monday = Heisei 1
+ const UChar* testSkeleton = u"yMMMd";
+
+ // Test Gannen year forcing
+ status = U_ZERO_ERROR;
+ UDateTimePatternGenerator* dtpgen = udatpg_open(locID, &status);
+ if (U_FAILURE(status)) {
+ log_data_err("Fail in udatpg_open locale %s: %s", locID, u_errorName(status));
+ } else {
+ UChar pattern[kUbufMax];
+ int32_t patlen = udatpg_getBestPattern(dtpgen, testSkeleton, -1, pattern, kUbufMax, &status);
+ if (U_FAILURE(status)) {
+ log_data_err("Fail in udatpg_getBestPattern locale %s: %s", locID, u_errorName(status));
+ } else {
+ UDateFormat *testFmt = udat_open(UDAT_PATTERN, UDAT_PATTERN, locID, NULL, 0, pattern, patlen, &status);
+ if (U_FAILURE(status)) {
+ log_data_err("Fail in udat_open locale %s: %s", locID, u_errorName(status));
+ } else {
+ UChar testString[kUbufMax];
+ int32_t testStrLen = udat_format(testFmt, refDate, testString, kUbufMax, NULL, &status);
+ if (U_FAILURE(status)) {
+ log_err("Fail in udat_format locale %s: %s", locID, u_errorName(status));
+ } else if (testStrLen < 3 || testString[2] != 0x5143) {
+ char bbuf[kBbufMax];
+ UErrorCode convStatus = U_ZERO_ERROR;
+ u_strToUTF8(bbuf, kBbufMax, NULL, testString, testStrLen, &convStatus);
+ log_err("Formatting year 1 as Gannen, (conv status %s) got %s but expected 3rd char to be 0x5143", u_errorName(convStatus), bbuf);
+ }
+ udat_close(testFmt);
+ }
+ }
+ udatpg_close(dtpgen);
+ }
+}
+
/* defined above
static const UChar zoneGMT[] = { 0x47,0x4D,0x54,0 }; // "GMT"
static const UDate date2015Feb25 = 1424841000000.0; // Wednesday, February 25, 2015 at 5:10:00 AM GMT
diff --git a/icuSources/test/intltest/Makefile.in b/icuSources/test/intltest/Makefile.in
index c2b38c68..4d3e1743 100644
--- a/icuSources/test/intltest/Makefile.in
+++ b/icuSources/test/intltest/Makefile.in
@@ -66,7 +66,7 @@ numbertest_affixutils.o numbertest_api.o numbertest_decimalquantity.o \
numbertest_modifiers.o numbertest_patternmodifier.o numbertest_patternstring.o \
numbertest_stringbuilder.o numbertest_stringsegment.o \
numbertest_parse.o numbertest_doubleconversion.o numbertest_skeletons.o \
-static_unisets_test.o numfmtdatadriventest.o
+static_unisets_test.o numfmtdatadriventest.o erarulestest.o
DEPS = $(OBJECTS:.o=.d)
diff --git a/icuSources/test/intltest/dtifmtts.cpp b/icuSources/test/intltest/dtifmtts.cpp
index 3d86aaa6..bf46098f 100644
--- a/icuSources/test/intltest/dtifmtts.cpp
+++ b/icuSources/test/intltest/dtifmtts.cpp
@@ -25,6 +25,7 @@
#include "cstr.h"
#include "cstring.h"
#include "simplethread.h"
+#include "japancal.h"
#include "unicode/gregocal.h"
#include "unicode/dtintrv.h"
#include "unicode/dtitvinf.h"
@@ -405,640 +406,666 @@ void DateIntervalFormatTest::testAPI() {
void DateIntervalFormatTest::testFormat() {
// first item is date pattern
// followed by a group of locale/from_data/to_data/skeleton/interval_data
+ // Note that from_data/to_data are specified using era names from root, for the calendar specified by locale.
const char* DATA[] = {
- "yyyy MM dd HH:mm:ss",
+ "GGGGG y MM dd HH:mm:ss", // pattern for from_data/to_data
// test root
- "root", "2007 11 10 10:10:10", "2007 12 10 10:10:10", "yM", "2007-11 \\u2013 2007-12",
+ "root", "CE 2007 11 10 10:10:10", "CE 2007 12 10 10:10:10", "yM", "2007-11 \\u2013 2007-12",
// test 'H' and 'h', using availableFormat in fallback
- "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "Hms", "10:10:10\\u2009\\u2013\\u200915:10:10",
- "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "hms", "10:10:10 AM\\u2009\\u2013\\u20093:10:10 PM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 10 15:10:10", "Hms", "10:10:10\\u2009\\u2013\\u200915:10:10",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 10 15:10:10", "hms", "10:10:10 AM\\u2009\\u2013\\u20093:10:10 PM",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMM", "October 2007\\u2009\\u2013\\u2009October 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Oct 2007\\u2009\\u2013\\u2009Oct 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "MMMM", "October 2007\\u2009\\u2013\\u2009October 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "MMM", "Oct 2007\\u2009\\u2013\\u2009Oct 2008",
// test skeleton with both date and time
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMyhm", "Nov 10, 2007, 10:10 AM\\u2009\\u2013\\u2009Nov 20, 2007, 10:10 AM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMyhm", "Nov 10, 2007, 10:10 AM\\u2009\\u2013\\u2009Nov 20, 2007, 10:10 AM",
- "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "dMMMyhm", "Nov 10, 2007, 10:10\\u2009\\u2013\\u200911:10 AM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 10 11:10:10", "dMMMyhm", "Nov 10, 2007, 10:10\\u2009\\u2013\\u200911:10 AM",
- "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "hms", "10:10:10 AM\\u2009\\u2013\\u200911:10:10 AM",
- "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "Hms", "10:10:10\\u2009\\u2013\\u200911:10:10",
- "en", "2007 11 10 20:10:10", "2007 11 10 21:10:10", "Hms", "20:10:10\\u2009\\u2013\\u200921:10:10",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 10 11:10:10", "hms", "10:10:10 AM\\u2009\\u2013\\u200911:10:10 AM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 10 11:10:10", "Hms", "10:10:10\\u2009\\u2013\\u200911:10:10",
+ "en", "CE 2007 11 10 20:10:10", "CE 2007 11 10 21:10:10", "Hms", "20:10:10\\u2009\\u2013\\u200921:10:10",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10, 2007\\u2009\\u2013\\u2009Friday, October 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10, 2007\\u2009\\u2013\\u2009Friday, October 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMy", "October 10, 2007\\u2009\\u2013\\u2009October 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMMMMy", "October 10, 2007\\u2009\\u2013\\u2009October 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMM", "October 10, 2007\\u2009\\u2013\\u2009October 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMMMM", "October 10, 2007\\u2009\\u2013\\u2009October 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMMy", "October 2007\\u2009\\u2013\\u2009October 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "MMMMy", "October 2007\\u2009\\u2013\\u2009October 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10, 2007\\u2009\\u2013\\u2009Friday, October 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10, 2007\\u2009\\u2013\\u2009Friday, October 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMMy", "Wed, Oct 10, 2007\\u2009\\u2013\\u2009Fri, Oct 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EdMMMy", "Wed, Oct 10, 2007\\u2009\\u2013\\u2009Fri, Oct 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMy", "Oct 10, 2007\\u2009\\u2013\\u2009Oct 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMMMy", "Oct 10, 2007\\u2009\\u2013\\u2009Oct 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "Oct 10, 2007\\u2009\\u2013\\u2009Oct 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMMM", "Oct 10, 2007\\u2009\\u2013\\u2009Oct 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Oct 2007\\u2009\\u2013\\u2009Oct 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "MMMy", "Oct 2007\\u2009\\u2013\\u2009Oct 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMM", "Wed, Oct 10, 2007\\u2009\\u2013\\u2009Fri, Oct 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EdMMM", "Wed, Oct 10, 2007\\u2009\\u2013\\u2009Fri, Oct 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EdMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10/10/2007\\u2009\\u2013\\u200910/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMy", "10/10/2007\\u2009\\u2013\\u200910/10/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10/10/2007\\u2009\\u2013\\u200910/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dM", "10/10/2007\\u2009\\u2013\\u200910/10/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10/2007\\u2009\\u2013\\u200910/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "My", "10/2007\\u2009\\u2013\\u200910/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EdM", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10/10/2007\\u2009\\u2013\\u200910/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "d", "10/10/2007\\u2009\\u2013\\u200910/10/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Ed", "10 Wed\\u2009\\u2013\\u200910 Fri",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "Ed", "10 Wed\\u2009\\u2013\\u200910 Fri",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007\\u2009\\u2013\\u20092008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "y", "2007\\u2009\\u2013\\u20092008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10/2007\\u2009\\u2013\\u200910/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "M", "10/2007\\u2009\\u2013\\u200910/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10/10/2007, 10:10 AM\\u2009\\u2013\\u200910/10/2008, 10:10 AM",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Hm", "10/10/2007, 10:10\\u2009\\u2013\\u200910/10/2008, 10:10",
- "en", "2007 10 10 20:10:10", "2008 10 10 20:10:10", "Hm", "10/10/2007, 20:10\\u2009\\u2013\\u200910/10/2008, 20:10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hm", "10/10/2007, 10:10 AM\\u2009\\u2013\\u200910/10/2008, 10:10 AM",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "Hm", "10/10/2007, 10:10\\u2009\\u2013\\u200910/10/2008, 10:10",
+ "en", "CE 2007 10 10 20:10:10", "CE 2008 10 10 20:10:10", "Hm", "10/10/2007, 20:10\\u2009\\u2013\\u200910/10/2008, 20:10",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmv", "10/10/2007, 10:10 AM PT\\u2009\\u2013\\u200910/10/2008, 10:10 AM PT",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hmv", "10/10/2007, 10:10 AM PT\\u2009\\u2013\\u200910/10/2008, 10:10 AM PT",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200910/10/2008, 10:10 AM PDT",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hmz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200910/10/2008, 10:10 AM PDT",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "h", "10/10/2007, 10 AM\\u2009\\u2013\\u200910/10/2008, 10 AM",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "h", "10/10/2007, 10 AM\\u2009\\u2013\\u200910/10/2008, 10 AM",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hv", "10/10/2007, 10 AM PT\\u2009\\u2013\\u200910/10/2008, 10 AM PT",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hv", "10/10/2007, 10 AM PT\\u2009\\u2013\\u200910/10/2008, 10 AM PT",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hz", "10/10/2007, 10 AM PDT\\u2009\\u2013\\u200910/10/2008, 10 AM PDT",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hz", "10/10/2007, 10 AM PDT\\u2009\\u2013\\u200910/10/2008, 10 AM PDT",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EddMMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EddMMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Fri, 10/10/2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmm", "10/10/2007, 10:10 AM\\u2009\\u2013\\u200910/10/2008, 10:10 AM",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hhmm", "10/10/2007, 10:10 AM\\u2009\\u2013\\u200910/10/2008, 10:10 AM",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmmzz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200910/10/2008, 10:10 AM PDT",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hhmmzz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200910/10/2008, 10:10 AM PDT",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hms", "10/10/2007, 10:10:10 AM\\u2009\\u2013\\u200910/10/2008, 10:10:10 AM",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hms", "10/10/2007, 10:10:10 AM\\u2009\\u2013\\u200910/10/2008, 10:10:10 AM",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMMy", "O 10, 2007\\u2009\\u2013\\u2009O 10, 2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMMMMMy", "O 10, 2007\\u2009\\u2013\\u2009O 10, 2008",
- "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEEdM", "W, 10/10/2007\\u2009\\u2013\\u2009F, 10/10/2008",
+ "en", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEEEEdM", "W, 10/10/2007\\u2009\\u2013\\u2009F, 10/10/2008",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10\\u2009\\u2013\\u2009Saturday, November 10, 2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10\\u2009\\u2013\\u2009Saturday, November 10, 2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "October 10\\u2009\\u2013\\u2009November 10, 2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMMMy", "October 10\\u2009\\u2013\\u2009November 10, 2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMM", "October 10\\u2009\\u2013\\u2009November 10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMMM", "October 10\\u2009\\u2013\\u2009November 10",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "October\\u2009\\u2013\\u2009November 2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMMMy", "October\\u2009\\u2013\\u2009November 2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10\\u2009\\u2013\\u2009Saturday, November 10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10\\u2009\\u2013\\u2009Saturday, November 10",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMMy", "Wed, Oct 10\\u2009\\u2013\\u2009Sat, Nov 10, 2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EdMMMy", "Wed, Oct 10\\u2009\\u2013\\u2009Sat, Nov 10, 2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMy", "Oct 10\\u2009\\u2013\\u2009Nov 10, 2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMMy", "Oct 10\\u2009\\u2013\\u2009Nov 10, 2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "Oct 10\\u2009\\u2013\\u2009Nov 10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMM", "Oct 10\\u2009\\u2013\\u2009Nov 10",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Oct\\u2009\\u2013\\u2009Nov 2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMMy", "Oct\\u2009\\u2013\\u2009Nov 2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMM", "Wed, Oct 10\\u2009\\u2013\\u2009Sat, Nov 10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EdMMM", "Wed, Oct 10\\u2009\\u2013\\u2009Sat, Nov 10",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Sat, 11/10/2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EdMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Sat, 11/10/2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMy", "10/10/2007\\u2009\\u2013\\u200911/10/2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMy", "10/10/2007\\u2009\\u2013\\u200911/10/2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10/2007\\u2009\\u2013\\u200911/2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "My", "10/2007\\u2009\\u2013\\u200911/2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdM", "Wed, 10/10\\u2009\\u2013\\u2009Sat, 11/10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EdM", "Wed, 10/10\\u2009\\u2013\\u2009Sat, 11/10",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10/10\\u2009\\u2013\\u200911/10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "d", "10/10\\u2009\\u2013\\u200911/10",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Ed", "10 Wed\\u2009\\u2013\\u200910 Sat",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "Ed", "10 Wed\\u2009\\u2013\\u200910 Sat",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "y", "2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "M", "10\\u2009\\u2013\\u200911",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "M", "10\\u2009\\u2013\\u200911",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Oct\\u2009\\u2013\\u2009Nov",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMM", "Oct\\u2009\\u2013\\u2009Nov",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMM", "October\\u2009\\u2013\\u2009November",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMMM", "October\\u2009\\u2013\\u2009November",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hm", "10/10/2007, 10:10 AM\\u2009\\u2013\\u200911/10/2007, 10:10 AM",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Hm", "10/10/2007, 10:10\\u2009\\u2013\\u200911/10/2007, 10:10",
- "en", "2007 10 10 20:10:10", "2007 11 10 20:10:10", "Hm", "10/10/2007, 20:10\\u2009\\u2013\\u200911/10/2007, 20:10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hm", "10/10/2007, 10:10 AM\\u2009\\u2013\\u200911/10/2007, 10:10 AM",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "Hm", "10/10/2007, 10:10\\u2009\\u2013\\u200911/10/2007, 10:10",
+ "en", "CE 2007 10 10 20:10:10", "CE 2007 11 10 20:10:10", "Hm", "10/10/2007, 20:10\\u2009\\u2013\\u200911/10/2007, 20:10",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10/10/2007, 10:10 AM PT\\u2009\\u2013\\u200911/10/2007, 10:10 AM PT",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "10/10/2007, 10:10 AM PT\\u2009\\u2013\\u200911/10/2007, 10:10 AM PT",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200911/10/2007, 10:10 AM PST",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200911/10/2007, 10:10 AM PST",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "h", "10/10/2007, 10 AM\\u2009\\u2013\\u200911/10/2007, 10 AM",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "h", "10/10/2007, 10 AM\\u2009\\u2013\\u200911/10/2007, 10 AM",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hv", "10/10/2007, 10 AM PT\\u2009\\u2013\\u200911/10/2007, 10 AM PT",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hv", "10/10/2007, 10 AM PT\\u2009\\u2013\\u200911/10/2007, 10 AM PT",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hz", "10/10/2007, 10 AM PDT\\u2009\\u2013\\u200911/10/2007, 10 AM PST",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hz", "10/10/2007, 10 AM PDT\\u2009\\u2013\\u200911/10/2007, 10 AM PST",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Sat, 11/10/2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Sat, 11/10/2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EddMMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Sat, 11/10/2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EddMMy", "Wed, 10/10/2007\\u2009\\u2013\\u2009Sat, 11/10/2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hhmmzz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200911/10/2007, 10:10 AM PST",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hhmmzz", "10/10/2007, 10:10 AM PDT\\u2009\\u2013\\u200911/10/2007, 10:10 AM PST",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10/10/2007, 10:10:10 AM\\u2009\\u2013\\u200911/10/2007, 10:10:10 AM",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hms", "10/10/2007, 10:10:10 AM\\u2009\\u2013\\u200911/10/2007, 10:10:10 AM",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMMy", "O 10\\u2009\\u2013\\u2009N 10, 2007",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMMMMy", "O 10\\u2009\\u2013\\u2009N 10, 2007",
- "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEEdM", "W, 10/10\\u2009\\u2013\\u2009S, 11/10",
+ "en", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEEdM", "W, 10/10\\u2009\\u2013\\u2009S, 11/10",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "Saturday, November 10\\u2009\\u2013\\u2009Tuesday, November 20, 2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMMy", "Saturday, November 10\\u2009\\u2013\\u2009Tuesday, November 20, 2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMy", "November 10\\u2009\\u2013\\u200920, 2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMMy", "November 10\\u2009\\u2013\\u200920, 2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "November 10\\u2009\\u2013\\u200920",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMM", "November 10\\u2009\\u2013\\u200920",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "Saturday, November 10\\u2009\\u2013\\u2009Tuesday, November 20",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMM", "Saturday, November 10\\u2009\\u2013\\u2009Tuesday, November 20",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMMy", "Sat, Nov 10\\u2009\\u2013\\u2009Tue, Nov 20, 2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdMMMy", "Sat, Nov 10\\u2009\\u2013\\u2009Tue, Nov 20, 2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "Nov 10\\u2009\\u2013\\u200920, 2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMy", "Nov 10\\u2009\\u2013\\u200920, 2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "Nov 10\\u2009\\u2013\\u200920",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMM", "Nov 10\\u2009\\u2013\\u200920",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMMy", "Nov 2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMM", "Sat, Nov 10\\u2009\\u2013\\u2009Tue, Nov 20",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdMMM", "Sat, Nov 10\\u2009\\u2013\\u2009Tue, Nov 20",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sat, 11/10/2007\\u2009\\u2013\\u2009Tue, 11/20/2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdMy", "Sat, 11/10/2007\\u2009\\u2013\\u2009Tue, 11/20/2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "11/10/2007\\u2009\\u2013\\u200911/20/2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMy", "11/10/2007\\u2009\\u2013\\u200911/20/2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11/10\\u2009\\u2013\\u200911/20",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dM", "11/10\\u2009\\u2013\\u200911/20",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11/2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "My", "11/2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "Sat, 11/10\\u2009\\u2013\\u2009Tue, 11/20",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdM", "Sat, 11/10\\u2009\\u2013\\u2009Tue, 11/20",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10\\u2009\\u2013\\u200920",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "d", "10\\u2009\\u2013\\u200920",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Ed", "10 Sat\\u2009\\u2013\\u200920 Tue",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "Ed", "10 Sat\\u2009\\u2013\\u200920 Tue",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "y", "2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "M", "11",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "Nov",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMM", "Nov",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMM", "November",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMMM", "November",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hm", "11/10/2007, 10:10 AM\\u2009\\u2013\\u200911/20/2007, 10:10 AM",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Hm", "11/10/2007, 10:10\\u2009\\u2013\\u200911/20/2007, 10:10",
- "en", "2007 11 10 20:10:10", "2007 11 20 20:10:10", "Hm", "11/10/2007, 20:10\\u2009\\u2013\\u200911/20/2007, 20:10",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hm", "11/10/2007, 10:10 AM\\u2009\\u2013\\u200911/20/2007, 10:10 AM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "Hm", "11/10/2007, 10:10\\u2009\\u2013\\u200911/20/2007, 10:10",
+ "en", "CE 2007 11 10 20:10:10", "CE 2007 11 20 20:10:10", "Hm", "11/10/2007, 20:10\\u2009\\u2013\\u200911/20/2007, 20:10",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "11/10/2007, 10:10 AM PT\\u2009\\u2013\\u200911/20/2007, 10:10 AM PT",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmv", "11/10/2007, 10:10 AM PT\\u2009\\u2013\\u200911/20/2007, 10:10 AM PT",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "11/10/2007, 10:10 AM PST\\u2009\\u2013\\u200911/20/2007, 10:10 AM PST",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "11/10/2007, 10:10 AM PST\\u2009\\u2013\\u200911/20/2007, 10:10 AM PST",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "11/10/2007, 10 AM\\u2009\\u2013\\u200911/20/2007, 10 AM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "11/10/2007, 10 AM\\u2009\\u2013\\u200911/20/2007, 10 AM",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hv", "11/10/2007, 10 AM PT\\u2009\\u2013\\u200911/20/2007, 10 AM PT",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hv", "11/10/2007, 10 AM PT\\u2009\\u2013\\u200911/20/2007, 10 AM PT",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hz", "11/10/2007, 10 AM PST\\u2009\\u2013\\u200911/20/2007, 10 AM PST",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hz", "11/10/2007, 10 AM PST\\u2009\\u2013\\u200911/20/2007, 10 AM PST",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEddMMyyyy", "Sat, 11/10/2007\\u2009\\u2013\\u2009Tue, 11/20/2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEddMMyyyy", "Sat, 11/10/2007\\u2009\\u2013\\u2009Tue, 11/20/2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EddMMy", "Sat, 11/10/2007\\u2009\\u2013\\u2009Tue, 11/20/2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EddMMy", "Sat, 11/10/2007\\u2009\\u2013\\u2009Tue, 11/20/2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmm", "11/10/2007, 10:10 AM\\u2009\\u2013\\u200911/20/2007, 10:10 AM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hhmm", "11/10/2007, 10:10 AM\\u2009\\u2013\\u200911/20/2007, 10:10 AM",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmmzz", "11/10/2007, 10:10 AM PST\\u2009\\u2013\\u200911/20/2007, 10:10 AM PST",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hhmmzz", "11/10/2007, 10:10 AM PST\\u2009\\u2013\\u200911/20/2007, 10:10 AM PST",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hms", "11/10/2007, 10:10:10 AM\\u2009\\u2013\\u200911/20/2007, 10:10:10 AM",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Hms", "11/10/2007, 10:10:10\\u2009\\u2013\\u200911/20/2007, 10:10:10",
- "en", "2007 11 10 20:10:10", "2007 11 20 20:10:10", "Hms", "11/10/2007, 20:10:10\\u2009\\u2013\\u200911/20/2007, 20:10:10",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hms", "11/10/2007, 10:10:10 AM\\u2009\\u2013\\u200911/20/2007, 10:10:10 AM",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "Hms", "11/10/2007, 10:10:10\\u2009\\u2013\\u200911/20/2007, 10:10:10",
+ "en", "CE 2007 11 10 20:10:10", "CE 2007 11 20 20:10:10", "Hms", "11/10/2007, 20:10:10\\u2009\\u2013\\u200911/20/2007, 20:10:10",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMMy", "N 10\\u2009\\u2013\\u200920, 2007",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMMMy", "N 10\\u2009\\u2013\\u200920, 2007",
- "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEEdM", "S, 11/10\\u2009\\u2013\\u2009T, 11/20",
+ "en", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEEdM", "S, 11/10\\u2009\\u2013\\u2009T, 11/20",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "Wednesday, January 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMMy", "Wednesday, January 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMy", "January 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dMMMMy", "January 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMM", "January 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dMMMM", "January 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMMy", "January 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "MMMMy", "January 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMM", "Wednesday, January 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMM", "Wednesday, January 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMMy", "Wed, Jan 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EdMMMy", "Wed, Jan 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMy", "Jan 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dMMMy", "Jan 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "Jan 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dMMM", "Jan 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "MMMy", "Jan 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMM", "Wed, Jan 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EdMMM", "Wed, Jan 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMy", "1/10/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dMy", "1/10/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dM", "1/10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dM", "1/10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "My", "1/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "My", "1/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdM", "Wed, 1/10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EdM", "Wed, 1/10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "d", "10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "d", "10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Ed", "10 Wed",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "Ed", "10 Wed",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "y", "2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "y", "2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "M", "1",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "M", "1",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMM", "Jan",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "MMM", "Jan",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMM", "January",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "MMMM", "January",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "10:00 AM\\u2009\\u2013\\u20092:10 PM",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hm", "10:00\\u2009\\u2013\\u200914:10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hm", "10:00 AM\\u2009\\u2013\\u20092:10 PM",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "Hm", "10:00\\u2009\\u2013\\u200914:10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmv", "10:00 AM\\u2009\\u2013\\u20092:10 PM PT",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmv", "10:00 AM\\u2009\\u2013\\u20092:10 PM PT",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00 AM\\u2009\\u2013\\u20092:10 PM PST",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "10:00 AM\\u2009\\u2013\\u20092:10 PM PST",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 AM\\u2009\\u2013\\u20092 PM",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10\\u2009\\u2013\\u200914",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "h", "10 AM\\u2009\\u2013\\u20092 PM",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "H", "10\\u2009\\u2013\\u200914",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "10 AM\\u2009\\u2013\\u20092 PM PST",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hz", "10 AM\\u2009\\u2013\\u20092 PM PST",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEddMMyyyy", "Wed, 01/10/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEddMMyyyy", "Wed, 01/10/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EddMMy", "Wed, 01/10/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EddMMy", "Wed, 01/10/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmm", "10:00 AM\\u2009\\u2013\\u20092:10 PM",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "HHmm", "10:00\\u2009\\u2013\\u200914:10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hhmm", "10:00 AM\\u2009\\u2013\\u20092:10 PM",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "HHmm", "10:00\\u2009\\u2013\\u200914:10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmmzz", "10:00 AM\\u2009\\u2013\\u20092:10 PM PST",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hhmmzz", "10:00 AM\\u2009\\u2013\\u20092:10 PM PST",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hms", "10:00:10 AM\\u2009\\u2013\\u20092:10:10 PM",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hms", "10:00:10\\u2009\\u2013\\u200914:10:10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hms", "10:00:10 AM\\u2009\\u2013\\u20092:10:10 PM",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "Hms", "10:00:10\\u2009\\u2013\\u200914:10:10",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMMy", "J 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dMMMMMy", "J 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEEdM", "W, 1/10",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMy", "January 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEEdM", "W, 1/10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMMMMy", "January 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMM", "January 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMMMM", "January 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "MMMMy", "January 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "MMMMy", "January 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMMM", "Wednesday, January 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "EEEEdMMMM", "Wednesday, January 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMMy", "Wed, Jan 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "EdMMMy", "Wed, Jan 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMy", "Jan 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMMMy", "Jan 10, 2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMM", "Jan 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMMM", "Jan 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMM", "Wed, Jan 10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "EdMMM", "Wed, Jan 10",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMy", "Wed, 1/10/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "EdMy", "Wed, 1/10/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMy", "1/10/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMy", "1/10/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "My", "1/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "My", "1/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdM", "Wed, 1/10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "EdM", "Wed, 1/10",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "d", "10",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "d", "10",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "y", "2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "y", "2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "M", "1",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "M", "1",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "10:00\\u2009\\u2013\\u200910:20 AM",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Hm", "10:00\\u2009\\u2013\\u200910:20",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hm", "10:00\\u2009\\u2013\\u200910:20 AM",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "Hm", "10:00\\u2009\\u2013\\u200910:20",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00\\u2009\\u2013\\u200910:20 AM PST",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmz", "10:00\\u2009\\u2013\\u200910:20 AM PST",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hv", "10 AM PT",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hv", "10 AM PT",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EddMMy", "Wed, 01/10/2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "EddMMy", "Wed, 01/10/2007",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmm", "10:00\\u2009\\u2013\\u200910:20 AM",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "HHmm", "10:00\\u2009\\u2013\\u200910:20",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hhmm", "10:00\\u2009\\u2013\\u200910:20 AM",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "HHmm", "10:00\\u2009\\u2013\\u200910:20",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmmzz", "10:00\\u2009\\u2013\\u200910:20 AM PST",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hhmmzz", "10:00\\u2009\\u2013\\u200910:20 AM PST",
- "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMMy", "J 10, 2007",
+ "en", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMMMMMy", "J 10, 2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMMy", "Wednesday, January 10, 2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EEEEdMMMMy", "Wednesday, January 10, 2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMMy", "January 10, 2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "dMMMMy", "January 10, 2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMMy", "January 2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "MMMMy", "January 2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMM", "Wednesday, January 10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EEEEdMMMM", "Wednesday, January 10",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMy", "Jan 10, 2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "dMMMy", "Jan 10, 2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMM", "Jan 10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "dMMM", "Jan 10",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMMM", "Wed, Jan 10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EdMMM", "Wed, Jan 10",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMy", "Wed, 1/10/2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EdMy", "Wed, 1/10/2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMy", "1/10/2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "dMy", "1/10/2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "My", "1/2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "My", "1/2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdM", "Wed, 1/10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EdM", "Wed, 1/10",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "d", "10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "d", "10",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "y", "2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "y", "2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "M", "1",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "M", "1",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMM", "January",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "MMMM", "January",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "10:10 AM",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Hm", "10:10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hm", "10:10 AM",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "Hm", "10:10",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 AM PST",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hmz", "10:10 AM PST",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10 AM",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "h", "10 AM",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 AM PT",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hv", "10 AM PT",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEddMMyyyy", "Wed, 01/10/2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EEddMMyyyy", "Wed, 01/10/2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmm", "10:10 AM",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "HHmm", "10:10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hhmm", "10:10 AM",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "HHmm", "10:10",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmmzz", "10:10 AM PST",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hhmmzz", "10:10 AM PST",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMMMy", "J 10, 2007",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "dMMMMMy", "J 10, 2007",
- "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEEdM", "W, 1/10",
+ "en", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EEEEEdM", "W, 1/10",
- "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94",
+ "zh", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94",
- "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5",
+ "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5",
- "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708",
+ "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708",
- "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "2007/10/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10\\u2009\\u2013\\u20092007/11/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
+ "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10\\u2009\\u2013\\u20092007/11/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "11\\u670810\\u65e5\\u81f320\\u65e5",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMM", "11\\u670810\\u65e5\\u81f320\\u65e5",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "2007\\u5E7411\\u6708", // (fixed expected result per ticket:6626:)
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMMMy", "2007\\u5E7411\\u6708", // (fixed expected result per ticket:6626:)
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "11\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMM", "11\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "2007/11/10\\u5468\\u516d\\u81f32007/11/20\\u5468\\u4e8c",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdMy", "2007/11/10\\u5468\\u516d\\u81f32007/11/20\\u5468\\u4e8c",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11/10\\u2009\\u2013\\u200911/20",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dM", "11/10\\u2009\\u2013\\u200911/20",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "2007\\u5E7411\\u6708",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "My", "2007\\u5E7411\\u6708",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "11/10\\u5468\\u516d\\u81f311/20\\u5468\\u4e8c",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdM", "11/10\\u5468\\u516d\\u81f311/20\\u5468\\u4e8c",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007\\u5E74", // (fixed expected result per ticket:6626:)
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "y", "2007\\u5E74", // (fixed expected result per ticket:6626:)
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11\\u6708",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "M", "11\\u6708",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "11\\u6708", // (fixed expected result per ticket:6626: and others)
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMM", "11\\u6708", // (fixed expected result per ticket:6626: and others)
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "2007/11/10 GMT-8 \\u4e0a\\u534810:10\\u2009\\u2013\\u20092007/11/20 GMT-8 \\u4e0a\\u534810:10",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10 GMT-8 \\u4e0a\\u534810:10\\u2009\\u2013\\u20092007/11/20 GMT-8 \\u4e0a\\u534810:10",
- "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "2007/11/10 \\u4e0a\\u534810\\u65f6\\u2009\\u2013\\u20092007/11/20 \\u4e0a\\u534810\\u65f6",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10 \\u4e0a\\u534810\\u65f6\\u2009\\u2013\\u20092007/11/20 \\u4e0a\\u534810\\u65f6",
- "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5 \\u661f\\u671f\\u4e09", // (fixed expected result per ticket:6626:)
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5 \\u661f\\u671f\\u4e09", // (fixed expected result per ticket:6626:)
- "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
- "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "GMT-8\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
- "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
- "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
- "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20",
- "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F310:20",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F310:20",
- "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "GMT-8\\u4e0a\\u534810\\u65f6",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hz", "GMT-8\\u4e0a\\u534810\\u65f6",
- "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "\\u4e0a\\u534810:10",
+ "zh", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hm", "\\u4e0a\\u534810:10",
- "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "\\u4e0a\\u534810\\u65f6",
+ "zh", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "h", "\\u4e0a\\u534810\\u65f6",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt. 2007\\u2009\\u2013\\u2009Freitag, 10. Okt. 2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt. 2007\\u2009\\u2013\\u2009Freitag, 10. Okt. 2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "10. Okt. 2007\\u2009\\u2013\\u200910. Okt. 2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMMM", "10. Okt. 2007\\u2009\\u2013\\u200910. Okt. 2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Okt. 2007\\u2009\\u2013\\u2009Okt. 2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "MMMy", "Okt. 2007\\u2009\\u2013\\u2009Okt. 2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Mi. 10.10.2007\\u2009\\u2013\\u2009Fr. 10.10.2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EdMy", "Mi. 10.10.2007\\u2009\\u2013\\u2009Fr. 10.10.2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10.10.2007\\u2009\\u2013\\u200910.10.2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "dMy", "10.10.2007\\u2009\\u2013\\u200910.10.2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10.2007\\u2009\\u2013\\u200910.2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "My", "10.2007\\u2009\\u2013\\u200910.2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Mi. 10.10.2007\\u2009\\u2013\\u2009Fr. 10.10.2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EdM", "Mi. 10.10.2007\\u2009\\u2013\\u2009Fr. 10.10.2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007\\u20132008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "y", "2007\\u20132008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10.2007\\u2009\\u2013\\u200910.2008",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "M", "10.2007\\u2009\\u2013\\u200910.2008",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10.10.2007, 10:10 AM\\u2009\\u2013\\u200910.10.2008, 10:10 AM",
- "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Hm", "10.10.2007, 10:10\\u2009\\u2013\\u200910.10.2008, 10:10",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hm", "10.10.2007, 10:10 AM\\u2009\\u2013\\u200910.10.2008, 10:10 AM",
+ "de", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "Hm", "10.10.2007, 10:10\\u2009\\u2013\\u200910.10.2008, 10:10",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt.\\u2009\\u2013\\u2009Samstag, 10. Nov. 2007",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt.\\u2009\\u2013\\u2009Samstag, 10. Nov. 2007",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "10. Okt.\\u2009\\u2013\\u200910. Nov.",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMM", "10. Okt.\\u2009\\u2013\\u200910. Nov.",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Okt.\\u2013Nov. 2007",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMMy", "Okt.\\u2013Nov. 2007",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMM", "Mittwoch, 10. Okt.\\u2009\\u2013\\u2009Samstag, 10. Nov.",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEdMMM", "Mittwoch, 10. Okt.\\u2009\\u2013\\u2009Samstag, 10. Nov.",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dM", "10.10.\\u2009\\u2013\\u200910.11.",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dM", "10.10.\\u2009\\u2013\\u200910.11.",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10.2007\\u2009\\u2013\\u200911.2007",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "My", "10.2007\\u2009\\u2013\\u200911.2007",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10.10.\\u2009\\u2013\\u200910.11.",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "d", "10.10.\\u2009\\u2013\\u200910.11.",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "y", "2007",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Okt.\\u2013Nov.",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMM", "Okt.\\u2013Nov.",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10.10.2007, 10:10:10 AM\\u2009\\u2013\\u200910.11.2007, 10:10:10 AM",
- "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Hms", "10.10.2007, 10:10:10\\u2009\\u2013\\u200910.11.2007, 10:10:10",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hms", "10.10.2007, 10:10:10 AM\\u2009\\u2013\\u200910.11.2007, 10:10:10 AM",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "Hms", "10.10.2007, 10:10:10\\u2009\\u2013\\u200910.11.2007, 10:10:10",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10.\\u2009\\u2013\\u2009Dienstag, 20. Nov. 2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10.\\u2009\\u2013\\u2009Dienstag, 20. Nov. 2007",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "10.\\u201320. Nov. 2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMy", "10.\\u201320. Nov. 2007",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov. 2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMMy", "Nov. 2007",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10.\\u2009\\u2013\\u2009Dienstag, 20. Nov.",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10.\\u2009\\u2013\\u2009Dienstag, 20. Nov.",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sa. 10.11.2007\\u2009\\u2013\\u2009Di. 20.11.2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdMy", "Sa. 10.11.2007\\u2009\\u2013\\u2009Di. 20.11.2007",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "10.11.\\u2009\\u2013\\u200920.11.",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dM", "10.11.\\u2009\\u2013\\u200920.11.",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11.2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "My", "11.2007",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10.\\u201320.",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "d", "10.\\u201320.",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "y", "2007",
- "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "10.11.2007, 10:10 AM Los Angeles Zeit\\u2009\\u2013\\u200920.11.2007, 10:10 AM Los Angeles Zeit",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmv", "10.11.2007, 10:10 AM Los Angeles Zeit\\u2009\\u2013\\u200920.11.2007, 10:10 AM Los Angeles Zeit",
- "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMy", "Mittwoch, 10. Jan. 2007",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMy", "Mittwoch, 10. Jan. 2007",
- "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "10. Jan.",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "dMMM", "10. Jan.",
- "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan. 2007",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "MMMy", "Jan. 2007",
- "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMM", "Mittwoch, 10. Jan.",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMM", "Mittwoch, 10. Jan.",
/* Following is an important test, because the 'h' in 'Uhr' is interpreted as a pattern
if not escaped properly. */
- "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 AM\\u2009\\u2013\\u20092 PM",
- "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10\\u201314 Uhr",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "h", "10 AM\\u2009\\u2013\\u20092 PM",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "H", "10\\u201314 Uhr",
- "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMM", "Mittwoch, 10. Jan.",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "EEEEdMMM", "Mittwoch, 10. Jan.",
- "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00\\u201310:20 AM Los Angeles Zeit",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "10:00\\u201310:20 AM Los Angeles Zeit",
- "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00\\u201310:20 AM GMT-8",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmz", "10:00\\u201310:20 AM GMT-8",
- "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10 AM",
- "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "H", "10 Uhr",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "h", "10 AM",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "H", "10 Uhr",
- "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "10 AM GMT-8",
+ "de", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hz", "10 AM GMT-8",
- "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMy", "Mittwoch, 10. Jan. 2007",
+ "de", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "EEEEdMMMy", "Mittwoch, 10. Jan. 2007",
- "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 AM Los Angeles Zeit",
+ "de", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hmv", "10:10 AM Los Angeles Zeit",
- "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 AM GMT-8",
+ "de", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hmz", "10:10 AM GMT-8",
- "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 AM Los Angeles Zeit",
+ "de", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hv", "10 AM Los Angeles Zeit",
- "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hz", "10 AM GMT-8",
+ "de", "CE 2007 01 10 10:10:10", "CE 2007 01 10 10:10:20", "hz", "10 AM GMT-8",
// Thai (default calendar buddhist)
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. 2550 \\u2013 \\u0E27\\u0E31\\u0E19\\u0E28\\u0E38\\u0E01\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. 2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. 2550 \\u2013 \\u0E27\\u0E31\\u0E19\\u0E28\\u0E38\\u0E01\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. 2551",
+
+
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. 2550 \\u2013 10 \\u0E15.\\u0E04. 2551",
+
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "MMMy", "\\u0E15.\\u0E04. 2550 \\u2013 \\u0E15.\\u0E04. 2551",
+
+
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "EdMy", "\\u0E1E. 10/10/2550 \\u2013 \\u0E28. 10/10/2551",
+
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "dMy", "10/10/2550 \\u2013 10/10/2551",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. 2550 \\u2013 10 \\u0E15.\\u0E04. 2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "My", "10/2550 \\u2013 10/2551",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "MMMy", "\\u0E15.\\u0E04. 2550 \\u2013 \\u0E15.\\u0E04. 2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "EdM", "\\u0E1E. 10/10/2550 \\u2013 \\u0E28. 10/10/2551",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EdMy", "\\u0E1E. 10/10/2550 \\u2013 \\u0E28. 10/10/2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "y", "2550\\u20132551",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "dMy", "10/10/2550 \\u2013 10/10/2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2551 10 10 10:10:10", "M", "10/2550 \\u2013 10/2551",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "My", "10/2550 \\u2013 10/2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. \\u2013 \\u0E27\\u0E31\\u0E19\\u0E40\\u0E2A\\u0E32\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48 10 \\u0E1E.\\u0E22. 2550",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EdM", "\\u0E1E. 10/10/2550 \\u2013 \\u0E28. 10/10/2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. \\u2013 10 \\u0E1E.\\u0E22.",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "y", "2550\\u20132551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "MMMy", "\\u0E15.\\u0E04.\\u2013\\u0E1E.\\u0E22. 2550",
- "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "M", "10/2550 \\u2013 10/2551",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "dM", "10/10 \\u2013 10/11",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "My", "10/2550 \\u2013 11/2550",
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. \\u2013 \\u0E27\\u0E31\\u0E19\\u0E40\\u0E2A\\u0E32\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48 10 \\u0E1E.\\u0E22. 2550",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "d", "10/10 \\u2013 10/11",
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. \\u2013 10 \\u0E1E.\\u0E22.",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "y", "\\u0E1E.\\u0E28. 2550",
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "MMMy", "\\u0E15.\\u0E04.\\u2013\\u0E1E.\\u0E22. 2550",
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "dM", "10/10 \\u2013 10/11",
+ "th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "MMM", "\\u0E15.\\u0E04.\\u2013\\u0E1E.\\u0E22.",
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "My", "10/2550 \\u2013 11/2550",
+ // Tests for Japanese calendar with eras, including new era in 2019 (Heisei 31 through April 30, then new era)
+ "en-u-ca-japanese", "H 31 03 15 09:00:00", "H 31 04 15 09:00:00", "GyMMMd", "Mar 15\\u2009\\u2013\\u2009Apr 15, 31 Heisei",
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "d", "10/10 \\u2013 10/11",
+ "en-u-ca-japanese", "H 31 03 15 09:00:00", "H 31 04 15 09:00:00", "GGGGGyMd", "3/15/31\\u2009\\u2013\\u20094/15/31 H",
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "y", "\\u0E1E.\\u0E28. 2550",
+ "en-u-ca-japanese", "S 64 01 05 09:00:00", "H 1 01 15 09:00:00", "GyMMMd", "Jan 5, 64 Sh\\u014Dwa\\u2009\\u2013\\u2009Jan 15, 1 Heisei",
+ "en-u-ca-japanese", "S 64 01 05 09:00:00", "H 1 01 15 09:00:00", "GGGGGyMd", "1/5/64 S\\u2009\\u2013\\u20091/15/1 H",
+
+ "en-u-ca-japanese", "H 31 04 15 09:00:00", JP_ERA_2019_NARROW " 1 05 15 09:00:00", "GyMMMd", "Apr 15, 31 Heisei\\u2009\\u2013\\u2009May 15, 1 " JP_ERA_2019_ROOT,
- "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "MMM", "\\u0E15.\\u0E04.\\u2013\\u0E1E.\\u0E22.",
+ "en-u-ca-japanese", "H 31 04 15 09:00:00", JP_ERA_2019_NARROW " 1 05 15 09:00:00", "GGGGGyMd", "4/15/31 H\\u2009\\u2013\\u20095/15/1 " JP_ERA_2019_NARROW,
+
+
+ "ja-u-ca-japanese", "H 31 03 15 09:00:00", "H 31 04 15 09:00:00", "GyMMMd", "\\u5E73\\u621031\\u5E743\\u670815\\u65E5\\uFF5E4\\u670815\\u65E5",
+
+ "ja-u-ca-japanese", "H 31 03 15 09:00:00", "H 31 04 15 09:00:00", "GGGGGyMd", "H31/03/15\\uFF5E31/04/15",
+
+ "ja-u-ca-japanese", "S 64 01 05 09:00:00", "H 1 01 15 09:00:00", "GyMMMd", "\\u662D\\u548C64\\u5E741\\u67085\\u65E5\\uFF5E\\u5E73\\u6210\\u5143\\u5E741\\u670815\\u65E5",
+
+ "ja-u-ca-japanese", "S 64 01 05 09:00:00", "H 1 01 15 09:00:00", "GGGGGyMd", "S64/01/05\\uFF5EH1/01/15",
+
+ "ja-u-ca-japanese", "H 31 04 15 09:00:00", JP_ERA_2019_NARROW " 1 05 15 09:00:00", "GGGGGyMd", "H31/04/15\\uFF5E" JP_ERA_2019_NARROW "1/05/15",
"ar@calendar=islamic", "1438 10 10 10:10:10", "1438 10 20 10:10:10", "MMMd", "\\u0661\\u0660\\u2013\\u0662\\u0660 \\u0634\\u0648\\u0627\\u0644",
};
@@ -1050,22 +1077,33 @@ void DateIntervalFormatTest::expect(const char** data, int32_t data_length) {
int32_t i = 0;
UErrorCode ec = U_ZERO_ERROR;
UnicodeString str, str2;
- const char* pattern = data[0];
- i++;
+ const char* pattern = data[i++];
while (i defCal(Calendar::createInstance(loc, ec));
+ if (U_FAILURE(ec)) {
+ dataerrln("Calendar::createInstance fails for loc %s with: %s", locName, u_errorName(ec));
+ return;
+ }
+ const char* calType = defCal->getType();
+
+ Locale refLoc("root");
+ if (calType) {
+ refLoc.setKeywordValue("calendar", calType, ec);
+ }
+ SimpleDateFormat ref(pattern, refLoc, ec);
logln( "case %d, locale: %s\n", (i-1)/5, locName);
-
if (U_FAILURE(ec)) {
dataerrln("contruct SimpleDateFormat in expect failed: %s", u_errorName(ec));
return;
}
+
// 'f'
- const char* datestr = data[i++];
- const char* datestr_2 = data[i++];
logln("original date: %s - %s\n", datestr, datestr_2);
UDate date = ref.parse(ctou(datestr), ec);
if (!assertSuccess("parse 1st data in expect", ec)) return;
diff --git a/icuSources/test/intltest/dtptngts.cpp b/icuSources/test/intltest/dtptngts.cpp
index 62015551..43d3fb6d 100644
--- a/icuSources/test/intltest/dtptngts.cpp
+++ b/icuSources/test/intltest/dtptngts.cpp
@@ -202,9 +202,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
UnicodeString("23:58"), // 16: JJmm
// ja@calendar=japanese // 6 ja@calendar=japanese
- CharsToUnicodeString("H11/1"), // 00: yM -> GGGGGy/m
+ UnicodeString("H11/1"), // 00: yM -> GGGGGy/m
CharsToUnicodeString("\\u5E73\\u621011\\u5E741\\u6708"), // 01: yMMM -> Gy\u5E74M\u6708
- CharsToUnicodeString("H11/1/13"), // 02: yMd -> GGGGGy/m/d
+ UnicodeString("H11/1/13"), // 02: yMd -> GGGGGy/m/d
CharsToUnicodeString("\\u5E73\\u621011\\u5E741\\u670813\\u65E5"), // 03: yMMMd -> Gy\u5E74M\u6708d\u65E5
UnicodeString("1/13"), // 04: Md -> M/d
CharsToUnicodeString("1\\u670813\\u65E5"), // 05: MMMd -> M\u6708d\u65E5
diff --git a/icuSources/test/intltest/erarulestest.cpp b/icuSources/test/intltest/erarulestest.cpp
new file mode 100644
index 00000000..b550361b
--- /dev/null
+++ b/icuSources/test/intltest/erarulestest.cpp
@@ -0,0 +1,130 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/calendar.h"
+#include "unicode/localpointer.h"
+#include "unicode/unistr.h"
+#include "erarules.h"
+#include "erarulestest.h"
+
+void EraRulesTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/)
+{
+ if (exec) {
+ logln("TestSuite EraRulesTest");
+ }
+ TESTCASE_AUTO_BEGIN;
+ TESTCASE_AUTO(testAPIs);
+ TESTCASE_AUTO(testJapanese);
+ TESTCASE_AUTO_END;
+}
+
+void EraRulesTest::testAPIs() {
+ const char * calTypes[] = {
+ "gregorian",
+ //"iso8601",
+ "buddhist",
+ "chinese",
+ "coptic",
+ "dangi",
+ "ethiopic",
+ "ethiopic-amete-alem",
+ "hebrew",
+ "indian",
+ "islamic",
+ "islamic-civil",
+ "islamic-rgsa",
+ "islamic-tbla",
+ "islamic-umalqura",
+ "japanese",
+ "persian",
+ "roc",
+ //"unknown",
+ NULL
+ };
+
+ for (int32_t i = 0; calTypes[i] != NULL; i++) {
+ UErrorCode status = U_ZERO_ERROR;
+ const char *calId = calTypes[i];
+
+ LocalPointer rules1(EraRules::createInstance(calId, FALSE, status));
+ if (U_FAILURE(status)) {
+ errln(UnicodeString("Era rules for ") + calId + " is not available.");
+ continue;
+ }
+
+ LocalPointer rules2(EraRules::createInstance(calId, TRUE, status));
+ if (U_FAILURE(status)) {
+ errln(UnicodeString("Era rules for ") + calId + " (including tentative eras) is not available.");
+ continue;
+ }
+
+ int32_t numEras1 = rules1->getNumberOfEras();
+ if (numEras1 <= 0) {
+ errln(UnicodeString("Number of era rules for ") + calId + " is " + numEras1);
+ }
+
+ int32_t numEras2 = rules2->getNumberOfEras();
+ if (numEras2 < numEras1) {
+ errln(UnicodeString("Number of era including tentative eras is fewer than one without tentative eras in calendar: ")
+ + calId);
+ }
+
+ LocalPointer cal(Calendar::createInstance("en", status));
+ if (U_FAILURE(status)) {
+ errln("Failed to create a Calendar instance.");
+ continue;
+ }
+ int32_t currentIdx = rules1->getCurrentEraIndex();
+ int32_t currentYear = cal->get(UCAL_YEAR, status);
+ int32_t idx = rules1->getEraIndex(
+ currentYear, cal->get(UCAL_MONTH, status) + 1,
+ cal->get(UCAL_DATE, status), status);
+ if (U_FAILURE(status)) {
+ errln("Error while getting index of era.");
+ continue;
+ }
+ if (idx != currentIdx) {
+ errln(UnicodeString("Current era index:") + currentIdx + " is different from era index of now:" + idx
+ + " in calendar:" + calId);
+ }
+
+ int32_t eraStartYear = rules1->getStartYear(currentIdx, status);
+ if (U_FAILURE(status)) {
+ errln(UnicodeString("Failed to get the start year of era index: ") + currentIdx + " in calendar: " + calId);
+ }
+ if (currentYear < eraStartYear) {
+ errln(UnicodeString("Current era's start year is after the current year in calendar:") + calId);
+ }
+ }
+}
+
+void EraRulesTest::testJapanese() {
+ const int32_t HEISEI = 235; // ICU4C does not define constants for eras
+
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer rules(EraRules::createInstance("japanese", TRUE, status));
+ if (U_FAILURE(status)) {
+ errln("Failed to get era rules for Japanese calendar.");
+ return;
+ }
+ // Rules should have an era after Heisei
+ int32_t numRules = rules->getNumberOfEras();
+ if (numRules <= HEISEI) {
+ errln("Era after Heisei is not available.");
+ return;
+ }
+ int postHeiseiStartYear = rules->getStartYear(HEISEI + 1, status);
+ if (U_FAILURE(status)) {
+ errln("Failed to get the start year of era after Heisei.");
+ }
+ if (postHeiseiStartYear != 2019) {
+ errln(UnicodeString("Era after Heisei should start in 2019, but got ") + postHeiseiStartYear);
+ }
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
diff --git a/icuSources/test/intltest/erarulestest.h b/icuSources/test/intltest/erarulestest.h
new file mode 100644
index 00000000..28116af1
--- /dev/null
+++ b/icuSources/test/intltest/erarulestest.h
@@ -0,0 +1,23 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef ERARULESTEST_H_
+#define ERARULESTEST_H_
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "intltest.h"
+
+class EraRulesTest : public IntlTest {
+public:
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
+
+private:
+ void testAPIs();
+ void testJapanese();
+};
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif /* ERARULESTEST_H_ */
diff --git a/icuSources/test/intltest/incaltst.cpp b/icuSources/test/intltest/incaltst.cpp
index aeda1640..00491f23 100644
--- a/icuSources/test/intltest/incaltst.cpp
+++ b/icuSources/test/intltest/incaltst.cpp
@@ -12,6 +12,10 @@
#include "string.h"
#include "unicode/locid.h"
#include "japancal.h"
+#include "unicode/localpointer.h"
+#include "unicode/datefmt.h"
+#include "unicode/smpdtfmt.h"
+#include "unicode/dtptngen.h"
#if !UCONFIG_NO_FORMATTING
@@ -74,9 +78,10 @@ void IntlCalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &n
CASE(4,TestBuddhistFormat);
CASE(5,TestJapaneseFormat);
CASE(6,TestJapanese3860);
- CASE(7,TestPersian);
- CASE(8,TestPersianFormat);
- CASE(9,TestTaiwan);
+ CASE(7,TestForceGannenNumbering);
+ CASE(8,TestPersian);
+ CASE(9,TestPersianFormat);
+ CASE(10,TestTaiwan);
default: name = ""; break;
}
}
@@ -599,6 +604,15 @@ void IntlCalendarTest::TestJapaneseFormat() {
status = U_ZERO_ERROR;
simpleTest(loc, expect, expectDate, status);
+ }
+ { // 1989 Jan 9 Monday = Heisei 1; full is Gyå¹´Mædæ¥EEEE => å¹³æå
å¹´1æ9æ¥æææ¥
+ UnicodeString expect = CharsToUnicodeString("\\u5E73\\u6210\\u5143\\u5E741\\u67089\\u65E5 \\u6708\\u66DC\\u65E5");
+ UDate expectDate = 600336000000.0;
+ Locale loc("ja_JP@calendar=japanese");
+
+ status = U_ZERO_ERROR;
+ simpleTest(loc, expect, expectDate, status);
+
}
{ // This Feb 29th falls on a leap year by gregorian year, but not by Japanese year.
UnicodeString expect = CharsToUnicodeString("\\u5EB7\\u6B632\\u5e742\\u670829\\u65e5 \\u65e5\\u66dc\\u65e5");
@@ -629,20 +643,20 @@ void IntlCalendarTest::TestJapanese3860()
// Test parse with missing era (should default to current era, heisei)
// Test parse with incomplete information
logln("Testing parse w/ missing era...");
- SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("y.M.d"), Locale("ja_JP@calendar=japanese"), status);
+ SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("y/M/d"), Locale("ja_JP@calendar=japanese"), status);
CHECK(status, "creating date format instance");
if(!fmt) {
errln("Couldn't create en_US instance");
} else {
UErrorCode s2 = U_ZERO_ERROR;
cal2->clear();
- UnicodeString samplestr("1.1.9");
+ UnicodeString samplestr("1/5/9");
logln(UnicodeString() + "Test Year: " + samplestr);
aDate = fmt->parse(samplestr, s2);
ParsePosition pp=0;
fmt->parse(samplestr, *cal2, pp);
- CHECK(s2, "parsing the 1.1.9 string");
- logln("*cal2 after 119 parse:");
+ CHECK(s2, "parsing the 1/5/9 string");
+ logln("*cal2 after 159 parse:");
str.remove();
fmt2->format(aDate, str);
logln(UnicodeString() + "as Gregorian Calendar: " + str);
@@ -653,7 +667,7 @@ void IntlCalendarTest::TestJapanese3860()
int32_t expectYear = 1;
int32_t expectEra = JapaneseCalendar::getCurrentEra();
if((gotYear!=1) || (gotEra != expectEra)) {
- errln(UnicodeString("parse "+samplestr+" of 'y.m.d' as Japanese Calendar, expected year ") + expectYear +
+ errln(UnicodeString("parse "+samplestr+" of 'y/M/d' as Japanese Calendar, expected year ") + expectYear +
UnicodeString(" and era ") + expectEra +", but got year " + gotYear + " and era " + gotEra + " (Gregorian:" + str +")");
} else {
logln(UnicodeString() + " year: " + gotYear + ", era: " + gotEra);
@@ -691,7 +705,7 @@ void IntlCalendarTest::TestJapanese3860()
int32_t gotYear = cal2->get(UCAL_YEAR, s2);
int32_t gotEra = cal2->get(UCAL_ERA, s2);
int32_t expectYear = 1;
- int32_t expectEra = 235; //JapaneseCalendar::kCurrentEra;
+ int32_t expectEra = JapaneseCalendar::getCurrentEra();
if((gotYear!=1) || (gotEra != expectEra)) {
errln(UnicodeString("parse "+samplestr+" of 'y' as Japanese Calendar, expected year ") + expectYear +
UnicodeString(" and era ") + expectEra +", but got year " + gotYear + " and era " + gotEra + " (Gregorian:" + str +")");
@@ -707,8 +721,71 @@ void IntlCalendarTest::TestJapanese3860()
delete fmt2;
}
+void IntlCalendarTest::TestForceGannenNumbering()
+{
+ UErrorCode status;
+ const char* locID = "ja_JP@calendar=japanese";
+ Locale loc(locID);
+ UDate refDate = 600336000000.0; // 1989 Jan 9 Monday = Heisei 1
+ UnicodeString patText(u"Gyå¹´Mædæ¥",-1);
+ UnicodeString patNumr(u"GGGGGy/MM/dd",-1);
+ UnicodeString skelText(u"yMMMM",-1);
+
+ // Test Gannen year forcing
+ status = U_ZERO_ERROR;
+ LocalPointer testFmt1(new SimpleDateFormat(patText, loc, status));
+ LocalPointer testFmt2(new SimpleDateFormat(patNumr, loc, status));
+ if (U_FAILURE(status)) {
+ dataerrln("Fail in new SimpleDateFormat locale %s: %s", locID, u_errorName(status));
+ } else {
+ UnicodeString testString1, testString2;
+ testString1 = testFmt1->format(refDate, testString1);
+ if (testString1.length() < 3 || testString1.charAt(2) != 0x5143) {
+ errln(UnicodeString("Formatting year 1 in created text style, got " + testString1 + " but expected 3rd char to be 0x5143"));
+ }
+ testString2 = testFmt2->format(refDate, testString2);
+ if (testString2.length() < 2 || testString2.charAt(1) != 0x0031) {
+ errln(UnicodeString("Formatting year 1 in created numeric style, got " + testString2 + " but expected 2nd char to be 1"));
+ }
+ // Now switch the patterns and verify that Gannen use follows the pattern
+ testFmt1->applyPattern(patNumr);
+ testString1.remove();
+ testString1 = testFmt1->format(refDate, testString1);
+ if (testString1.length() < 2 || testString1.charAt(1) != 0x0031) {
+ errln(UnicodeString("Formatting year 1 in applied numeric style, got " + testString1 + " but expected 2nd char to be 1"));
+ }
+ testFmt2->applyPattern(patText);
+ testString2.remove();
+ testString2 = testFmt2->format(refDate, testString2);
+ if (testString2.length() < 3 || testString2.charAt(2) != 0x5143) {
+ errln(UnicodeString("Formatting year 1 in applied text style, got " + testString2 + " but expected 3rd char to be 0x5143"));
+ }
+ }
-
+ // Test disabling of Gannen year forcing
+ status = U_ZERO_ERROR;
+ LocalPointer dtpgen(DateTimePatternGenerator::createInstance(loc, status));
+ if (U_FAILURE(status)) {
+ dataerrln("Fail in DateTimePatternGenerator::createInstance locale %s: %s", locID, u_errorName(status));
+ } else {
+ UnicodeString pattern = dtpgen->getBestPattern(skelText, status);
+ if (U_FAILURE(status)) {
+ dataerrln("Fail in DateTimePatternGenerator::getBestPattern locale %s: %s", locID, u_errorName(status));
+ } else {
+ // Use override string of ""
+ LocalPointer testFmt3(new SimpleDateFormat(pattern, UnicodeString(""), loc, status));
+ if (U_FAILURE(status)) {
+ dataerrln("Fail in new SimpleDateFormat locale %s: %s", locID, u_errorName(status));
+ } else {
+ UnicodeString testString3;
+ testString3 = testFmt3->format(refDate, testString3);
+ if (testString3.length() < 3 || testString3.charAt(2) != 0x0031) {
+ errln(UnicodeString("Formatting year 1 with Gannen disabled, got " + testString3 + " but expected 3rd char to be 1"));
+ }
+ }
+ }
+ }
+}
/**
* Verify the Persian Calendar.
diff --git a/icuSources/test/intltest/incaltst.h b/icuSources/test/intltest/incaltst.h
index 628b6e4c..2d42bcc8 100644
--- a/icuSources/test/intltest/incaltst.h
+++ b/icuSources/test/intltest/incaltst.h
@@ -34,6 +34,7 @@ public:
void TestJapanese(void);
void TestJapaneseFormat(void);
void TestJapanese3860(void);
+ void TestForceGannenNumbering(void);
void TestPersian(void);
void TestPersianFormat(void);
diff --git a/icuSources/test/intltest/intltest.vcxproj b/icuSources/test/intltest/intltest.vcxproj
index 0d7bae44..8fd3414a 100644
--- a/icuSources/test/intltest/intltest.vcxproj
+++ b/icuSources/test/intltest/intltest.vcxproj
@@ -160,6 +160,7 @@
false
+
@@ -365,6 +366,7 @@
+
diff --git a/icuSources/test/intltest/intltest.vcxproj.filters b/icuSources/test/intltest/intltest.vcxproj.filters
index 4fea4428..5eca532d 100644
--- a/icuSources/test/intltest/intltest.vcxproj.filters
+++ b/icuSources/test/intltest/intltest.vcxproj.filters
@@ -72,7 +72,7 @@
break iteration
-
+
spoof detection
@@ -532,6 +532,9 @@
data & memory
+
+ formatting
+
@@ -915,5 +918,8 @@
formatting
+
+ formatting
+
diff --git a/icuSources/test/intltest/itformat.cpp b/icuSources/test/intltest/itformat.cpp
index cea3249a..d450922e 100644
--- a/icuSources/test/intltest/itformat.cpp
+++ b/icuSources/test/intltest/itformat.cpp
@@ -60,6 +60,7 @@
#include "listformattertest.h" // ListFormatterTest
#include "regiontst.h" // RegionTest
#include "numbertest.h" // NumberTest
+#include "erarulestest.h" // EraRulesTest
extern IntlTest *createCompactDecimalFormatTest();
extern IntlTest *createGenderInfoTest();
@@ -215,6 +216,7 @@ void IntlTestFormat::runIndexedTest( int32_t index, UBool exec, const char* &nam
break;
TESTCLASS(50,NumberFormatDataDrivenTest);
TESTCLASS(51,NumberTest);
+ TESTCLASS(52,EraRulesTest);
default: name = ""; break; //needed to end loop
}
if (exec) {
diff --git a/icuSources/test/testdata/rbbitst.txt b/icuSources/test/testdata/rbbitst.txt
index 7d3257b7..175f3f09 100644
--- a/icuSources/test/testdata/rbbitst.txt
+++ b/icuSources/test/testdata/rbbitst.txt
@@ -1142,6 +1142,16 @@ Bangkok)â¢
# â¢brk OK before 3063 â¢no brk before 301C â¢brk OK btw 2026 â¢no brk before FF01â¢
â¢\u3084â¢\u3063â¢\u3071â¢\u308A\u0020â¢\u0031\u301C\u0020â¢\u2026â¢\u2026\u0020â¢u30A2\uFF01\u0020â¢
+####################################################################################
+#
+# Test cjdict for Reiwa (Apple added test)
+#
+####################################################################################
+
+
+
+â¢æ¥æ¬<400>令å<400>æ代<400> â¢
+
####################################################################################
#
# Test Apple early change of lb class for 22EF
diff --git a/icuSources/test/testdata/structLocale.txt b/icuSources/test/testdata/structLocale.txt
index 0e26f5ad..a7aef3e8 100644
--- a/icuSources/test/testdata/structLocale.txt
+++ b/icuSources/test/testdata/structLocale.txt
@@ -20530,6 +20530,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -21446,6 +21484,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -21752,6 +21828,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -22766,6 +22880,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -23077,6 +23229,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -23345,6 +23535,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -23707,6 +23935,61 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ GGGGGyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GGGGGyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GGGGGyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -24160,6 +24443,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -24491,6 +24812,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -24777,6 +25136,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -25055,6 +25452,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -25333,6 +25768,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -25586,10 +26059,10 @@ structLocale:table(nofallback){
"",
"",
"",
- "",
- "",
- "",
- "",
+ "A2",
+ "A2",
+ "A2",
+ "A2",
"",
"A4",
"A4",
@@ -25834,6 +26307,7 @@ structLocale:table(nofallback){
"",
"",
"",
+ "",
}
wide{
"",
@@ -26072,6 +26546,7 @@ structLocale:table(nofallback){
"",
"",
"",
+ "",
}
narrow{
"",
@@ -26310,9 +26785,48 @@ structLocale:table(nofallback){
"",
"",
"",
+ "",
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
@@ -26497,6 +27011,44 @@ structLocale:table(nofallback){
}
}
intervalFormats{
+ Gy{
+ G{""}
+ y{""}
+ }
+ GyM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMM{
+ G{""}
+ M{""}
+ y{""}
+ }
+ GyMMMEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMMMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
+ GyMd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
H{
H{""}
}
--
2.45.2