about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrudrax Cheng <i@cynosura.one>2024-12-16 22:25:59 +0800
committerGitHub <noreply@github.com>2024-12-16 14:25:59 +0000
commitb1b6affb715326402674f6d6457dbe45288cbb2a (patch)
tree06fd11b176c1ea2d0bf6f90d0aace437a14b972a
parent1ac307bc42bdf370c2011e7e7f2c76baea3441d2 (diff)
downloadvoidsky-b1b6affb715326402674f6d6457dbe45288cbb2a.tar.zst
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
-rw-r--r--package.json1
-rw-r--r--src/locale/i18n.ts29
-rw-r--r--yarn.lock9
3 files changed, 39 insertions, 0 deletions
diff --git a/package.json b/package.json
index 23e2bb324..cd73a8d21 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,7 @@
     "@expo/webpack-config": "^19.0.0",
     "@floating-ui/dom": "^1.6.3",
     "@floating-ui/react-dom": "^2.0.8",
+    "@formatjs/intl-datetimeformat": "^6.17.1",
     "@formatjs/intl-locale": "^4.2.8",
     "@formatjs/intl-numberformat": "^8.15.1",
     "@formatjs/intl-pluralrules": "^5.4.1",
diff --git a/src/locale/i18n.ts b/src/locale/i18n.ts
index 00652a355..5620ab320 100644
--- a/src/locale/i18n.ts
+++ b/src/locale/i18n.ts
@@ -1,8 +1,10 @@
 // Don't remove -force from these because detection is VERY slow on low-end Android.
 // https://github.com/formatjs/formatjs/issues/4463#issuecomment-2176070577
 import '@formatjs/intl-locale/polyfill-force'
+import '@formatjs/intl-datetimeformat/polyfill-force'
 import '@formatjs/intl-pluralrules/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-numberformat/locale-data/en'
 
@@ -49,6 +51,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.an: {
       i18n.loadAndActivate({locale, messages: messagesAn})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/es'),
         import('@formatjs/intl-pluralrules/locale-data/an'),
         import('@formatjs/intl-numberformat/locale-data/es'),
       ])
@@ -57,6 +60,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.ast: {
       i18n.loadAndActivate({locale, messages: messagesAst})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/ast'),
         import('@formatjs/intl-pluralrules/locale-data/ast'),
         import('@formatjs/intl-numberformat/locale-data/ast'),
       ])
@@ -65,6 +69,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.ca: {
       i18n.loadAndActivate({locale, messages: messagesCa})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/ca'),
         import('@formatjs/intl-pluralrules/locale-data/ca'),
         import('@formatjs/intl-numberformat/locale-data/ca'),
       ])
@@ -73,6 +78,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.de: {
       i18n.loadAndActivate({locale, messages: messagesDe})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/de'),
         import('@formatjs/intl-pluralrules/locale-data/de'),
         import('@formatjs/intl-numberformat/locale-data/de'),
       ])
@@ -81,6 +87,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.en_GB: {
       i18n.loadAndActivate({locale, messages: messagesEn_GB})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/en-GB'),
         import('@formatjs/intl-pluralrules/locale-data/en'),
         import('@formatjs/intl-numberformat/locale-data/en-GB'),
       ])
@@ -89,6 +96,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.es: {
       i18n.loadAndActivate({locale, messages: messagesEs})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/es'),
         import('@formatjs/intl-pluralrules/locale-data/es'),
         import('@formatjs/intl-numberformat/locale-data/es'),
       ])
@@ -97,6 +105,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.fi: {
       i18n.loadAndActivate({locale, messages: messagesFi})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/fi'),
         import('@formatjs/intl-pluralrules/locale-data/fi'),
         import('@formatjs/intl-numberformat/locale-data/fi'),
       ])
@@ -105,6 +114,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.fr: {
       i18n.loadAndActivate({locale, messages: messagesFr})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/fr'),
         import('@formatjs/intl-pluralrules/locale-data/fr'),
         import('@formatjs/intl-numberformat/locale-data/fr'),
       ])
@@ -113,6 +123,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.ga: {
       i18n.loadAndActivate({locale, messages: messagesGa})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/ga'),
         import('@formatjs/intl-pluralrules/locale-data/ga'),
         import('@formatjs/intl-numberformat/locale-data/ga'),
       ])
@@ -121,6 +132,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.gl: {
       i18n.loadAndActivate({locale, messages: messagesGl})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/gl'),
         import('@formatjs/intl-pluralrules/locale-data/gl'),
         import('@formatjs/intl-numberformat/locale-data/gl'),
       ])
@@ -129,6 +141,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.hi: {
       i18n.loadAndActivate({locale, messages: messagesHi})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/hi'),
         import('@formatjs/intl-pluralrules/locale-data/hi'),
         import('@formatjs/intl-numberformat/locale-data/hi'),
       ])
@@ -137,6 +150,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.hu: {
       i18n.loadAndActivate({locale, messages: messagesHu})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/hu'),
         import('@formatjs/intl-pluralrules/locale-data/hu'),
         import('@formatjs/intl-numberformat/locale-data/hu'),
       ])
@@ -145,6 +159,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.id: {
       i18n.loadAndActivate({locale, messages: messagesId})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/id'),
         import('@formatjs/intl-pluralrules/locale-data/id'),
         import('@formatjs/intl-numberformat/locale-data/id'),
       ])
@@ -153,6 +168,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.it: {
       i18n.loadAndActivate({locale, messages: messagesIt})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/it'),
         import('@formatjs/intl-pluralrules/locale-data/it'),
         import('@formatjs/intl-numberformat/locale-data/it'),
       ])
@@ -161,6 +177,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.ja: {
       i18n.loadAndActivate({locale, messages: messagesJa})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/ja'),
         import('@formatjs/intl-pluralrules/locale-data/ja'),
         import('@formatjs/intl-numberformat/locale-data/ja'),
       ])
@@ -169,6 +186,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.ko: {
       i18n.loadAndActivate({locale, messages: messagesKo})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/ko'),
         import('@formatjs/intl-pluralrules/locale-data/ko'),
         import('@formatjs/intl-numberformat/locale-data/ko'),
       ])
@@ -177,6 +195,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.nl: {
       i18n.loadAndActivate({locale, messages: messagesNl})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/nl'),
         import('@formatjs/intl-pluralrules/locale-data/nl'),
         import('@formatjs/intl-numberformat/locale-data/nl'),
       ])
@@ -185,6 +204,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.pl: {
       i18n.loadAndActivate({locale, messages: messagesPl})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/pl'),
         import('@formatjs/intl-pluralrules/locale-data/pl'),
         import('@formatjs/intl-numberformat/locale-data/pl'),
       ])
@@ -193,6 +213,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.pt_BR: {
       i18n.loadAndActivate({locale, messages: messagesPt_BR})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/pt'),
         import('@formatjs/intl-pluralrules/locale-data/pt'),
         import('@formatjs/intl-numberformat/locale-data/pt'),
       ])
@@ -201,6 +222,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.ru: {
       i18n.loadAndActivate({locale, messages: messagesRu})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/ru'),
         import('@formatjs/intl-pluralrules/locale-data/ru'),
         import('@formatjs/intl-numberformat/locale-data/ru'),
       ])
@@ -209,6 +231,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.th: {
       i18n.loadAndActivate({locale, messages: messagesTh})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/th'),
         import('@formatjs/intl-pluralrules/locale-data/th'),
         import('@formatjs/intl-numberformat/locale-data/th'),
       ])
@@ -217,6 +240,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.tr: {
       i18n.loadAndActivate({locale, messages: messagesTr})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/tr'),
         import('@formatjs/intl-pluralrules/locale-data/tr'),
         import('@formatjs/intl-numberformat/locale-data/tr'),
       ])
@@ -225,6 +249,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.uk: {
       i18n.loadAndActivate({locale, messages: messagesUk})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/uk'),
         import('@formatjs/intl-pluralrules/locale-data/uk'),
         import('@formatjs/intl-numberformat/locale-data/uk'),
       ])
@@ -233,6 +258,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.vi: {
       i18n.loadAndActivate({locale, messages: messagesVi})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/vi'),
         import('@formatjs/intl-pluralrules/locale-data/vi'),
         import('@formatjs/intl-numberformat/locale-data/vi'),
       ])
@@ -241,6 +267,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.zh_CN: {
       i18n.loadAndActivate({locale, messages: messagesZh_CN})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/zh-Hans'),
         import('@formatjs/intl-pluralrules/locale-data/zh'),
         import('@formatjs/intl-numberformat/locale-data/zh'),
       ])
@@ -249,6 +276,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.zh_HK: {
       i18n.loadAndActivate({locale, messages: messagesZh_HK})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/yue'),
         import('@formatjs/intl-pluralrules/locale-data/zh'),
         import('@formatjs/intl-numberformat/locale-data/zh'),
       ])
@@ -257,6 +285,7 @@ export async function dynamicActivate(locale: AppLanguage) {
     case AppLanguage.zh_TW: {
       i18n.loadAndActivate({locale, messages: messagesZh_TW})
       await Promise.all([
+        import('@formatjs/intl-datetimeformat/locale-data/zh-Hant'),
         import('@formatjs/intl-pluralrules/locale-data/zh'),
         import('@formatjs/intl-numberformat/locale-data/zh'),
       ])
diff --git a/yarn.lock b/yarn.lock
index 9e2259e0d..8dc5745e3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4274,6 +4274,15 @@
   dependencies:
     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":
   version "1.8.7"
   resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.8.7.tgz#3f004753333f80cc468ae34046bd8416772a0412"