From f6c2f6fced559ede18cae4c5b641b0373a498b16 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Wed, 9 Aug 2023 14:43:30 +0800 Subject: [PATCH] refactor: add i18n support for converse system message --- server/locales/en-US/translation.json | 1 + server/locales/zh-CN/translation.json | 1 + server/packages/sdk/src/services/lib/i18n/parser.ts | 6 +++++- server/services/core/chat/converse.service.ts | 10 ++++++---- server/services/core/user/dmlist.service.ts | 7 +++---- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/server/locales/en-US/translation.json b/server/locales/en-US/translation.json index d998e3ff..272d8142 100644 --- a/server/locales/en-US/translation.json +++ b/server/locales/en-US/translation.json @@ -47,6 +47,7 @@ "kba207c17": "No permission to view", "kbb1ef795": "Verification failed, OTP has expired", "kbb96754b": "Group OP not allowed to be kicked out", + "kbe05914c": "{{user}} invited {{others}} to join the session", "kc1e668f5": "Not allowed to kick yourself out", "kc4b77045": "{{nickname}} join this group with invite code from {{creator}}", "kcb07c88f": "Personal message subscription created, subscribeId: {{subscribeId}}", diff --git a/server/locales/zh-CN/translation.json b/server/locales/zh-CN/translation.json index 2e0890e4..653c5916 100644 --- a/server/locales/zh-CN/translation.json +++ b/server/locales/zh-CN/translation.json @@ -47,6 +47,7 @@ "kba207c17": "没有查看权限", "kbb1ef795": "校验失败, OTP已过期", "kbb96754b": "不允许踢出群组OP", + "kbe05914c": "{{user}} 邀请 {{others}} 加入会话", "kc1e668f5": "不允许踢出自己", "kc4b77045": "{{nickname}} 通过 {{creator}} 的邀请码加入群组", "kcb07c88f": "个人消息订阅已创建, subscribeId: {{subscribeId}}", diff --git a/server/packages/sdk/src/services/lib/i18n/parser.ts b/server/packages/sdk/src/services/lib/i18n/parser.ts index 2cb94249..bd832d66 100644 --- a/server/packages/sdk/src/services/lib/i18n/parser.ts +++ b/server/packages/sdk/src/services/lib/i18n/parser.ts @@ -1,7 +1,7 @@ import acceptLanguage from 'accept-language'; type AllowedLanguage = 'en-US' | 'zh-CN'; -acceptLanguage.languages(['en-US', 'zh-CN', 'zh', 'zh-TW']); +acceptLanguage.languages(['en', 'en-US', 'zh-CN', 'zh', 'zh-TW']); /** * 解析请求头的 Accept-Language @@ -15,5 +15,9 @@ export function parseLanguageFromHead( return 'zh-CN'; } + if (language === 'en' || language === 'en-US') { + return 'en-US'; + } + return language as AllowedLanguage; } diff --git a/server/services/core/chat/converse.service.ts b/server/services/core/chat/converse.service.ts index 882c16a3..33f8c2d9 100644 --- a/server/services/core/chat/converse.service.ts +++ b/server/services/core/chat/converse.service.ts @@ -53,6 +53,7 @@ class ConverseService extends TcService { async createDMConverse(ctx: TcContext<{ memberIds: string[] }>) { const userId = ctx.meta.userId; const memberIds = ctx.params.memberIds; + const t = ctx.meta.t; const participantList = _.uniq([userId, ...memberIds]); @@ -105,13 +106,14 @@ class ConverseService extends TcService { // 如果创建的是一个多人会话(非双人), 发送系统消息 await Promise.all( _.without(participantList, userId).map>( - (memberId) => ctx.call('user.getUserInfo', { userId: memberId }) + (memberId) => call(ctx).getUserInfo(memberId) ) ).then((infoList) => { return call(ctx).sendSystemMessage( - `${ctx.meta.user.nickname} 邀请 ${infoList - .map((info) => info.nickname) - .join(', ')} 加入会话`, + t('{{user}} 邀请 {{others}} 加入会话', { + user: ctx.meta.user.nickname, + others: infoList.map((info) => info.nickname).join(', '), + }), roomId ); }); diff --git a/server/services/core/user/dmlist.service.ts b/server/services/core/user/dmlist.service.ts index 2e72aed0..10160d03 100644 --- a/server/services/core/user/dmlist.service.ts +++ b/server/services/core/user/dmlist.service.ts @@ -1,12 +1,11 @@ import type { Ref } from '@typegoose/typegoose'; -import { Types } from 'mongoose'; import type { Converse } from '../../../models/chat/converse'; import type { UserDMList, UserDMListDocument, UserDMListModel, } from '../../../models/user/dmlist'; -import { TcService, TcContext, TcDbService } from 'tailchat-server-sdk'; +import { TcService, TcContext, TcDbService, db } from 'tailchat-server-sdk'; interface UserDMListService extends TcService, @@ -41,7 +40,7 @@ class UserDMListService extends TcService { const res = await this.adapter.model.findByIdAndUpdate(record.doc._id, { $addToSet: { - converseIds: new Types.ObjectId(converseId), + converseIds: new db.Types.ObjectId(converseId), }, }); @@ -62,7 +61,7 @@ class UserDMListService extends TcService { }, { $pull: { - converseIds: new Types.ObjectId(converseId), + converseIds: new db.Types.ObjectId(converseId), }, } )