From a94d5eb6aeb3622bbd9a429f2f1c6b135833d96e Mon Sep 17 00:00:00 2001 From: Yash Rajpal <58601732+yash-rajpal@users.noreply.github.com> Date: Wed, 20 Aug 2025 03:17:57 +0530 Subject: [PATCH] fix: moment js not loading some locales (#36651) --- .changeset/rare-fans-shake.md | 5 +++++ apps/meteor/server/lib/getMomentLocale.ts | 20 ++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 .changeset/rare-fans-shake.md diff --git a/.changeset/rare-fans-shake.md b/.changeset/rare-fans-shake.md new file mode 100644 index 00000000000..c6ef66f265e --- /dev/null +++ b/.changeset/rare-fans-shake.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes some locale loading issues for date-time formatting functionality. diff --git a/apps/meteor/server/lib/getMomentLocale.ts b/apps/meteor/server/lib/getMomentLocale.ts index a55f2d601f5..2f1a8168dd5 100644 --- a/apps/meteor/server/lib/getMomentLocale.ts +++ b/apps/meteor/server/lib/getMomentLocale.ts @@ -1,15 +1,23 @@ import { Meteor } from 'meteor/meteor'; +const mapLocaleToMomentLocale: Record = { + ug: 'ug-cn', + zh: 'zh-cn', +}; + export async function getMomentLocale(locale: string): Promise { const localeLower = locale.toLowerCase(); - - try { - return Assets.getTextAsync(`moment-locales/${localeLower}.js`); - } catch (error) { + const localesPaths = [ + `moment-locales/${localeLower}.js`, + `moment-locales/${String(localeLower.split('-').shift())}.js`, + `moment-locales/${mapLocaleToMomentLocale[localeLower]}.js`, + ]; + for await (const localePath of localesPaths) { try { - return Assets.getTextAsync(`moment-locales/${String(localeLower.split('-').shift())}.js`); + return await Assets.getTextAsync(localePath); } catch (error) { - throw new Meteor.Error('moment-locale-not-found', `Moment locale not found: ${locale}`); + continue; } } + throw new Meteor.Error('moment-locale-not-found', `Moment locale not found: ${locale}`); }