Fix post time localization on Android (#6742)

* Fix post time localization on native

* Fix timezone

* Revent time.ts

* Add time.android.ts

* Add missing 'an' and 'ast'

* Revent PostThreadItem.tsx

* Resolve duplicate versions in lockfile

* Move to time.native.ts

* Follow #7055 to upgrade intl-datetimeformat version

* Remove time.native.ts
This commit is contained in:
Frudrax Cheng
2024-12-16 22:25:59 +08:00
committed by GitHub
parent 1ac307bc42
commit b1b6affb71
3 changed files with 39 additions and 0 deletions
+1
View File
@@ -63,6 +63,7 @@
"@expo/webpack-config": "^19.0.0", "@expo/webpack-config": "^19.0.0",
"@floating-ui/dom": "^1.6.3", "@floating-ui/dom": "^1.6.3",
"@floating-ui/react-dom": "^2.0.8", "@floating-ui/react-dom": "^2.0.8",
"@formatjs/intl-datetimeformat": "^6.17.1",
"@formatjs/intl-locale": "^4.2.8", "@formatjs/intl-locale": "^4.2.8",
"@formatjs/intl-numberformat": "^8.15.1", "@formatjs/intl-numberformat": "^8.15.1",
"@formatjs/intl-pluralrules": "^5.4.1", "@formatjs/intl-pluralrules": "^5.4.1",
+29
View File
@@ -1,8 +1,10 @@
// Don't remove -force from these because detection is VERY slow on low-end Android. // Don't remove -force from these because detection is VERY slow on low-end Android.
// https://github.com/formatjs/formatjs/issues/4463#issuecomment-2176070577 // https://github.com/formatjs/formatjs/issues/4463#issuecomment-2176070577
import '@formatjs/intl-locale/polyfill-force' import '@formatjs/intl-locale/polyfill-force'
import '@formatjs/intl-datetimeformat/polyfill-force'
import '@formatjs/intl-pluralrules/polyfill-force' import '@formatjs/intl-pluralrules/polyfill-force'
import '@formatjs/intl-numberformat/polyfill-force' import '@formatjs/intl-numberformat/polyfill-force'
import '@formatjs/intl-datetimeformat/locale-data/en'
import '@formatjs/intl-pluralrules/locale-data/en' import '@formatjs/intl-pluralrules/locale-data/en'
import '@formatjs/intl-numberformat/locale-data/en' import '@formatjs/intl-numberformat/locale-data/en'
@@ -49,6 +51,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.an: { case AppLanguage.an: {
i18n.loadAndActivate({locale, messages: messagesAn}) i18n.loadAndActivate({locale, messages: messagesAn})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/es'),
import('@formatjs/intl-pluralrules/locale-data/an'), import('@formatjs/intl-pluralrules/locale-data/an'),
import('@formatjs/intl-numberformat/locale-data/es'), import('@formatjs/intl-numberformat/locale-data/es'),
]) ])
@@ -57,6 +60,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.ast: { case AppLanguage.ast: {
i18n.loadAndActivate({locale, messages: messagesAst}) i18n.loadAndActivate({locale, messages: messagesAst})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/ast'),
import('@formatjs/intl-pluralrules/locale-data/ast'), import('@formatjs/intl-pluralrules/locale-data/ast'),
import('@formatjs/intl-numberformat/locale-data/ast'), import('@formatjs/intl-numberformat/locale-data/ast'),
]) ])
@@ -65,6 +69,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.ca: { case AppLanguage.ca: {
i18n.loadAndActivate({locale, messages: messagesCa}) i18n.loadAndActivate({locale, messages: messagesCa})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/ca'),
import('@formatjs/intl-pluralrules/locale-data/ca'), import('@formatjs/intl-pluralrules/locale-data/ca'),
import('@formatjs/intl-numberformat/locale-data/ca'), import('@formatjs/intl-numberformat/locale-data/ca'),
]) ])
@@ -73,6 +78,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.de: { case AppLanguage.de: {
i18n.loadAndActivate({locale, messages: messagesDe}) i18n.loadAndActivate({locale, messages: messagesDe})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/de'),
import('@formatjs/intl-pluralrules/locale-data/de'), import('@formatjs/intl-pluralrules/locale-data/de'),
import('@formatjs/intl-numberformat/locale-data/de'), import('@formatjs/intl-numberformat/locale-data/de'),
]) ])
@@ -81,6 +87,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.en_GB: { case AppLanguage.en_GB: {
i18n.loadAndActivate({locale, messages: messagesEn_GB}) i18n.loadAndActivate({locale, messages: messagesEn_GB})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/en-GB'),
import('@formatjs/intl-pluralrules/locale-data/en'), import('@formatjs/intl-pluralrules/locale-data/en'),
import('@formatjs/intl-numberformat/locale-data/en-GB'), import('@formatjs/intl-numberformat/locale-data/en-GB'),
]) ])
@@ -89,6 +96,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.es: { case AppLanguage.es: {
i18n.loadAndActivate({locale, messages: messagesEs}) i18n.loadAndActivate({locale, messages: messagesEs})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/es'),
import('@formatjs/intl-pluralrules/locale-data/es'), import('@formatjs/intl-pluralrules/locale-data/es'),
import('@formatjs/intl-numberformat/locale-data/es'), import('@formatjs/intl-numberformat/locale-data/es'),
]) ])
@@ -97,6 +105,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.fi: { case AppLanguage.fi: {
i18n.loadAndActivate({locale, messages: messagesFi}) i18n.loadAndActivate({locale, messages: messagesFi})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/fi'),
import('@formatjs/intl-pluralrules/locale-data/fi'), import('@formatjs/intl-pluralrules/locale-data/fi'),
import('@formatjs/intl-numberformat/locale-data/fi'), import('@formatjs/intl-numberformat/locale-data/fi'),
]) ])
@@ -105,6 +114,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.fr: { case AppLanguage.fr: {
i18n.loadAndActivate({locale, messages: messagesFr}) i18n.loadAndActivate({locale, messages: messagesFr})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/fr'),
import('@formatjs/intl-pluralrules/locale-data/fr'), import('@formatjs/intl-pluralrules/locale-data/fr'),
import('@formatjs/intl-numberformat/locale-data/fr'), import('@formatjs/intl-numberformat/locale-data/fr'),
]) ])
@@ -113,6 +123,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.ga: { case AppLanguage.ga: {
i18n.loadAndActivate({locale, messages: messagesGa}) i18n.loadAndActivate({locale, messages: messagesGa})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/ga'),
import('@formatjs/intl-pluralrules/locale-data/ga'), import('@formatjs/intl-pluralrules/locale-data/ga'),
import('@formatjs/intl-numberformat/locale-data/ga'), import('@formatjs/intl-numberformat/locale-data/ga'),
]) ])
@@ -121,6 +132,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.gl: { case AppLanguage.gl: {
i18n.loadAndActivate({locale, messages: messagesGl}) i18n.loadAndActivate({locale, messages: messagesGl})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/gl'),
import('@formatjs/intl-pluralrules/locale-data/gl'), import('@formatjs/intl-pluralrules/locale-data/gl'),
import('@formatjs/intl-numberformat/locale-data/gl'), import('@formatjs/intl-numberformat/locale-data/gl'),
]) ])
@@ -129,6 +141,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.hi: { case AppLanguage.hi: {
i18n.loadAndActivate({locale, messages: messagesHi}) i18n.loadAndActivate({locale, messages: messagesHi})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/hi'),
import('@formatjs/intl-pluralrules/locale-data/hi'), import('@formatjs/intl-pluralrules/locale-data/hi'),
import('@formatjs/intl-numberformat/locale-data/hi'), import('@formatjs/intl-numberformat/locale-data/hi'),
]) ])
@@ -137,6 +150,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.hu: { case AppLanguage.hu: {
i18n.loadAndActivate({locale, messages: messagesHu}) i18n.loadAndActivate({locale, messages: messagesHu})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/hu'),
import('@formatjs/intl-pluralrules/locale-data/hu'), import('@formatjs/intl-pluralrules/locale-data/hu'),
import('@formatjs/intl-numberformat/locale-data/hu'), import('@formatjs/intl-numberformat/locale-data/hu'),
]) ])
@@ -145,6 +159,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.id: { case AppLanguage.id: {
i18n.loadAndActivate({locale, messages: messagesId}) i18n.loadAndActivate({locale, messages: messagesId})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/id'),
import('@formatjs/intl-pluralrules/locale-data/id'), import('@formatjs/intl-pluralrules/locale-data/id'),
import('@formatjs/intl-numberformat/locale-data/id'), import('@formatjs/intl-numberformat/locale-data/id'),
]) ])
@@ -153,6 +168,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.it: { case AppLanguage.it: {
i18n.loadAndActivate({locale, messages: messagesIt}) i18n.loadAndActivate({locale, messages: messagesIt})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/it'),
import('@formatjs/intl-pluralrules/locale-data/it'), import('@formatjs/intl-pluralrules/locale-data/it'),
import('@formatjs/intl-numberformat/locale-data/it'), import('@formatjs/intl-numberformat/locale-data/it'),
]) ])
@@ -161,6 +177,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.ja: { case AppLanguage.ja: {
i18n.loadAndActivate({locale, messages: messagesJa}) i18n.loadAndActivate({locale, messages: messagesJa})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/ja'),
import('@formatjs/intl-pluralrules/locale-data/ja'), import('@formatjs/intl-pluralrules/locale-data/ja'),
import('@formatjs/intl-numberformat/locale-data/ja'), import('@formatjs/intl-numberformat/locale-data/ja'),
]) ])
@@ -169,6 +186,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.ko: { case AppLanguage.ko: {
i18n.loadAndActivate({locale, messages: messagesKo}) i18n.loadAndActivate({locale, messages: messagesKo})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/ko'),
import('@formatjs/intl-pluralrules/locale-data/ko'), import('@formatjs/intl-pluralrules/locale-data/ko'),
import('@formatjs/intl-numberformat/locale-data/ko'), import('@formatjs/intl-numberformat/locale-data/ko'),
]) ])
@@ -177,6 +195,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.nl: { case AppLanguage.nl: {
i18n.loadAndActivate({locale, messages: messagesNl}) i18n.loadAndActivate({locale, messages: messagesNl})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/nl'),
import('@formatjs/intl-pluralrules/locale-data/nl'), import('@formatjs/intl-pluralrules/locale-data/nl'),
import('@formatjs/intl-numberformat/locale-data/nl'), import('@formatjs/intl-numberformat/locale-data/nl'),
]) ])
@@ -185,6 +204,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.pl: { case AppLanguage.pl: {
i18n.loadAndActivate({locale, messages: messagesPl}) i18n.loadAndActivate({locale, messages: messagesPl})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/pl'),
import('@formatjs/intl-pluralrules/locale-data/pl'), import('@formatjs/intl-pluralrules/locale-data/pl'),
import('@formatjs/intl-numberformat/locale-data/pl'), import('@formatjs/intl-numberformat/locale-data/pl'),
]) ])
@@ -193,6 +213,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.pt_BR: { case AppLanguage.pt_BR: {
i18n.loadAndActivate({locale, messages: messagesPt_BR}) i18n.loadAndActivate({locale, messages: messagesPt_BR})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/pt'),
import('@formatjs/intl-pluralrules/locale-data/pt'), import('@formatjs/intl-pluralrules/locale-data/pt'),
import('@formatjs/intl-numberformat/locale-data/pt'), import('@formatjs/intl-numberformat/locale-data/pt'),
]) ])
@@ -201,6 +222,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.ru: { case AppLanguage.ru: {
i18n.loadAndActivate({locale, messages: messagesRu}) i18n.loadAndActivate({locale, messages: messagesRu})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/ru'),
import('@formatjs/intl-pluralrules/locale-data/ru'), import('@formatjs/intl-pluralrules/locale-data/ru'),
import('@formatjs/intl-numberformat/locale-data/ru'), import('@formatjs/intl-numberformat/locale-data/ru'),
]) ])
@@ -209,6 +231,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.th: { case AppLanguage.th: {
i18n.loadAndActivate({locale, messages: messagesTh}) i18n.loadAndActivate({locale, messages: messagesTh})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/th'),
import('@formatjs/intl-pluralrules/locale-data/th'), import('@formatjs/intl-pluralrules/locale-data/th'),
import('@formatjs/intl-numberformat/locale-data/th'), import('@formatjs/intl-numberformat/locale-data/th'),
]) ])
@@ -217,6 +240,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.tr: { case AppLanguage.tr: {
i18n.loadAndActivate({locale, messages: messagesTr}) i18n.loadAndActivate({locale, messages: messagesTr})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/tr'),
import('@formatjs/intl-pluralrules/locale-data/tr'), import('@formatjs/intl-pluralrules/locale-data/tr'),
import('@formatjs/intl-numberformat/locale-data/tr'), import('@formatjs/intl-numberformat/locale-data/tr'),
]) ])
@@ -225,6 +249,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.uk: { case AppLanguage.uk: {
i18n.loadAndActivate({locale, messages: messagesUk}) i18n.loadAndActivate({locale, messages: messagesUk})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/uk'),
import('@formatjs/intl-pluralrules/locale-data/uk'), import('@formatjs/intl-pluralrules/locale-data/uk'),
import('@formatjs/intl-numberformat/locale-data/uk'), import('@formatjs/intl-numberformat/locale-data/uk'),
]) ])
@@ -233,6 +258,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.vi: { case AppLanguage.vi: {
i18n.loadAndActivate({locale, messages: messagesVi}) i18n.loadAndActivate({locale, messages: messagesVi})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/vi'),
import('@formatjs/intl-pluralrules/locale-data/vi'), import('@formatjs/intl-pluralrules/locale-data/vi'),
import('@formatjs/intl-numberformat/locale-data/vi'), import('@formatjs/intl-numberformat/locale-data/vi'),
]) ])
@@ -241,6 +267,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.zh_CN: { case AppLanguage.zh_CN: {
i18n.loadAndActivate({locale, messages: messagesZh_CN}) i18n.loadAndActivate({locale, messages: messagesZh_CN})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/zh-Hans'),
import('@formatjs/intl-pluralrules/locale-data/zh'), import('@formatjs/intl-pluralrules/locale-data/zh'),
import('@formatjs/intl-numberformat/locale-data/zh'), import('@formatjs/intl-numberformat/locale-data/zh'),
]) ])
@@ -249,6 +276,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.zh_HK: { case AppLanguage.zh_HK: {
i18n.loadAndActivate({locale, messages: messagesZh_HK}) i18n.loadAndActivate({locale, messages: messagesZh_HK})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/yue'),
import('@formatjs/intl-pluralrules/locale-data/zh'), import('@formatjs/intl-pluralrules/locale-data/zh'),
import('@formatjs/intl-numberformat/locale-data/zh'), import('@formatjs/intl-numberformat/locale-data/zh'),
]) ])
@@ -257,6 +285,7 @@ export async function dynamicActivate(locale: AppLanguage) {
case AppLanguage.zh_TW: { case AppLanguage.zh_TW: {
i18n.loadAndActivate({locale, messages: messagesZh_TW}) i18n.loadAndActivate({locale, messages: messagesZh_TW})
await Promise.all([ await Promise.all([
import('@formatjs/intl-datetimeformat/locale-data/zh-Hant'),
import('@formatjs/intl-pluralrules/locale-data/zh'), import('@formatjs/intl-pluralrules/locale-data/zh'),
import('@formatjs/intl-numberformat/locale-data/zh'), import('@formatjs/intl-numberformat/locale-data/zh'),
]) ])
+9
View File
@@ -4274,6 +4274,15 @@
dependencies: dependencies:
tslib "2" tslib "2"
"@formatjs/intl-datetimeformat@^6.17.1":
version "6.17.1"
resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.17.1.tgz#d5e800891f9d79c8f1af1999f51db51f1384eca1"
integrity sha512-a18NqRo6R73xpREuMZo8FqjO+LnYFDHoeoviTh5de4ebI46wqLSDgbAIKoceuWblTQt8bvCpJIwvKgLItea88Q==
dependencies:
"@formatjs/ecma402-abstract" "2.3.1"
"@formatjs/intl-localematcher" "0.5.9"
tslib "2"
"@formatjs/intl-enumerator@1.8.7": "@formatjs/intl-enumerator@1.8.7":
version "1.8.7" version "1.8.7"
resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.8.7.tgz#3f004753333f80cc468ae34046bd8416772a0412" resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.8.7.tgz#3f004753333f80cc468ae34046bd8416772a0412"