From c36b5b201e31cfed7320e450c73cf97f942b57c2 Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Fri, 3 Jul 2026 18:37:20 +0800 Subject: [PATCH] chore(i18n): update i18n (#15191) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### PR Dependency Tree * **PR #15191** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) ## Summary by CodeRabbit * **New Features** * Updated sign-in, sign-up, and email content to show the correct server name for cloud and self-hosted setups. * Added clearer workspace status messages for syncing, local workspaces, and server-connected workspaces. * Introduced localized text updates for more languages, including new locale coverage. * **Bug Fixes** * Replaced outdated “Cloud” wording throughout the app with more accurate “Sync” and self-hosted terminology. * Improved account deletion, password reset, sharing, and storage prompts for clearer user guidance. * Updated workspace status labels and tooltips to better reflect the current server connection. --- .../__tests__/__snapshots__/mails.spec.ts.md | 4 +- .../__snapshots__/mails.spec.ts.snap | Bin 4815 -> 4802 bytes .../backend/server/src/core/auth/service.ts | 8 ++ .../server/src/core/config/resolver.ts | 2 +- .../server/src/mails/users/sign-in.tsx | 4 +- .../server/src/mails/users/sign-up.tsx | 4 +- packages/backend/server/src/schema.gql | 7 +- packages/common/graphql/src/schema.ts | 7 ++ .../sign-in/sign-in-with-password.tsx | 6 +- .../core/src/components/sign-in/sign-in.tsx | 13 ++- .../workspace-card/index.tsx | 51 ++++++++-- .../dialogs/setting/user-profile/index.tsx | 6 +- .../core/src/modules/cloud/constant.ts | 13 +-- .../frontend/core/src/modules/cloud/index.ts | 4 + .../core/src/modules/cloud/server-name.ts | 7 ++ .../desktop-api/service/desktop-api.ts | 2 +- .../i18n/src/i18n-completenesses.json | 42 ++++---- packages/frontend/i18n/src/i18n.gen.ts | 92 +++++++++--------- packages/frontend/i18n/src/resources/ar.json | 46 --------- packages/frontend/i18n/src/resources/ca.json | 46 --------- packages/frontend/i18n/src/resources/da.json | 3 - packages/frontend/i18n/src/resources/de.json | 46 --------- .../frontend/i18n/src/resources/el-GR.json | 45 --------- packages/frontend/i18n/src/resources/en.json | 89 +++++++++-------- .../frontend/i18n/src/resources/es-AR.json | 3 - packages/frontend/i18n/src/resources/es.json | 45 --------- packages/frontend/i18n/src/resources/fa.json | 45 --------- packages/frontend/i18n/src/resources/fr.json | 46 --------- packages/frontend/i18n/src/resources/it.json | 45 --------- packages/frontend/i18n/src/resources/ja.json | 45 --------- packages/frontend/i18n/src/resources/kk.json | 46 --------- packages/frontend/i18n/src/resources/ko.json | 46 --------- .../frontend/i18n/src/resources/nb-NO.json | 14 --- packages/frontend/i18n/src/resources/pl.json | 46 --------- .../frontend/i18n/src/resources/pt-BR.json | 45 --------- packages/frontend/i18n/src/resources/ru.json | 46 --------- .../frontend/i18n/src/resources/sv-SE.json | 45 --------- packages/frontend/i18n/src/resources/tr.json | 46 --------- packages/frontend/i18n/src/resources/uk.json | 45 --------- packages/frontend/i18n/src/resources/ur.json | 46 --------- .../frontend/i18n/src/resources/zh-Hans.json | 87 ++++++++--------- .../frontend/i18n/src/resources/zh-Hant.json | 85 ++++++++-------- 42 files changed, 306 insertions(+), 1067 deletions(-) create mode 100644 packages/frontend/core/src/modules/cloud/server-name.ts diff --git a/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md b/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md index d67f5b0cd8..b5b26f46c7 100644 --- a/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md +++ b/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md @@ -65,7 +65,7 @@ Generated by [AVA](https://avajs.dev). ␊ ␊ - Sign in to AFFiNE Cloud␊ + Sign in to AFFiNE␊

␊ ␊ ␊ @@ -205,7 +205,7 @@ Generated by [AVA](https://avajs.dev). ␊ ␊ - Sign up to AFFiNE Cloud␊ + Sign up to AFFiNE␊

␊ ␊ ␊ diff --git a/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.snap b/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.snap index 0b48451d26f33c6f230fe0053019b40f6384a76a..bf8f5d8422c7e7cd3dc6fecdbf07a1918c07222b 100644 GIT binary patch literal 4802 zcmV;z5S@wWHtl8+Y8EkE5J$ibkXR9B$=e1*) zu}5~>-jT6ZQJGOyu^kza8xhr2wHLJ9kPsIngai`85(ln(LfrNSXN0(MSRoE8kl?^! z#RWxVWaYEEd)n32_4u=;nX1gHtc-|1{`kHx{`li>x*aC`WA#U$6HPTETJ^<%1xOMe z5Q#{LDN|H&9I3w0>Mwrl^B}+)KY#gOUw-K;FPY<)UU}(PfB7F@-rIQa{{5rp&mN+_ z4jFp((Y+_{-bXdB(fH)n{YK-#(F63o$45_}pjN$!jwI%aYAQHpjmE?GYN*!NI%+o> z!{M+#yj2&n*Ess1F*5gRnJ>GSp3Z!;9_XNUaBXkH^WOBlgKK*lcNn>b5N5Q;_iH}k zn#kHUgoZTG{ry_2+5Bzuwj*Rfz04UEVLv@11ta^lND@W3#^%>+ z2iFkV(;X3v%`5X-#xKmvAbE+ zG}^V-hw+I!&1U?*i$luB?RQO?HqoJ^m~EoRgq;vgeY}Yj=E_q<((Z1EWsh=Ci>SS| z9gULr9ig=d+s$2HFd^G-w6@J(?I81jM?`7#&@?*gN)e*NM~~=x57WXlqDdheNh$Xl zanbi0t~&M_wjq|XL0Y$q4YFNmknQ<4NS`W16~aiHrXgw5jKx5@_Cb^@jk!TT6c2aE!uJeE6-*cV+U%mmIe-%3ahqT8LxgNODe_DVj*N4PBPa><;@> z6VKEbX>&1@INFVCyxodMNC`#*BzqnFR&&$*)mv}xx{7b#jYg`~zuTMxf;=i$A) zQ@vYqs_B{Oe%bx9j5~BRO73Z&?QZ6M{E1fflzZIlDMq^Shsy1wvFs7OU;BQCVSZe` zez2z^%uA=ug$>X9ly*_5M8#!i5Zy2i(AJw==N>bpw=2Bri!#%TQ$_DK|rd0 z%>LlbH|}mVw|3osdktFo!Gpbxiu0cm9?wTb=j*6f?6QS@Fg2&@;rIHPlB9>3~o zbH&-ZJRH7rX#Og@v(>E(FGH9IF~Av8#t<1r)G#-WZZ%Oz`9Kp@pVkj%4TdhFg#ECj zihu~V@*>zE0uc;%~Vy=mu*3nTyKT~g9x?$>_ z?EsXkhqT+(4pQG8yY7SftX=im8sm%cR^Xw)LyHIS&{+gyOy(MZfySrikGy|<8t6)( z_M;rs-T|n+5>Wf82xxZaY`xN$psBfDx6U_xEeeI3d&Vv`GT~gXt`Z&pbzpTGuJjt%+)DG8q>UlS5m2CfX`Sz1gz zof!Ik%zFfgAp#>_bR!00XpeuWORH?0 z!}})r2@~Jz?AAE-GW`+g2cl}Kk%qm}NraU2&+UaOzK)sRui+D{v8=kBYd7l!lA14P zX>FO5R-*F*;%l!>FvbaE_74~>@yyXC>If5qb9Ffkr55>V+tr300&cr2Ytcj)^h(#U2=M!zR02W2ik zHGgHUZfMGoq&#IZ_TY5jF*8rOU0h!M`y3DcyH|k+0}q}8Z}Q|~!}E}-*z`KK&L9z) ztQFeo0KUBZKx=8y_yzcKA1muPD z$9vluyth4jymua?cNWIW_UIL0cuN)aaY24#tUC3Y6=Z(yc7Dmc=4$P{Flr4CGb2`* z`k5p+<@MYs^%?}HEKdJlv{CAVIMS;ltOQ(Q-Ku#zb zCVmZ+&-m2*mCtXzm$pJxtcN3$ul#L}O#b;RKqi4qPJyYP5ax@J7;7@?(PiuUt3KUT$7q|I><_$0WL%30=oW=#k+XBsH>bB)l|;gF-uW}|&Wqy; z7R@`qZ{~tjpGL^GUYAG-u6Yq$bEY}s2|L?Jq6;4SJRaKQH?ew1M(Gd|l~%6L8b=o< zS#6t5Fny*;6Hoo)oTrxHsTapHESjfwV)mv@Q&+Gv5VRM-W5+6{QnY7yJC0RY+dN2g z!BZ-_;I3~qbX?MUF@&(sYFk~L_(%ko(*-<0ga25Fa`Y&=``{$7UeI*=hVgVuH zrj(EwZ6(61)+xGjV!4&M(W(L~%fV+a8h$pZPgkDiot>b&Q;a_IO!e9jw5mIt6&jVq z-%PCyJJ383zN?6GJc}7@ik1Npix9C05sMJ9xO5SVcFp$0+s&_8AXYJ93*Ve1r%H!h zT1Z88{l9W7;opEItPD$tXML;?|oE8|t<;@!)8$b)pU}d1qIx&N@ z<`7cL2I^2KJ5UFp4nQ4%IskRZ9zY$=IjQii>Pdykc7D*8bx2@(EOewRFt+SrcYH8_UeidcOIP(kN zU15Pi7LM~~1-HvCIVxlT?-Ldka!tjHAVbUz%X6%&biY#;)w_lQrUXn0m=Z9hrDICp z6=nnis#G{Nf2#C)KB-F~8)CwT{x`>m{sZ_B@S&+GV+A8<5CtXyGUcg30SQ`u)U?bb zNZP8ZT&oXsr*M4X2{XTsdC#)UiX9_et-A}^G-7GWb(5Ng@`0UT&!$v&l&Ew!ph!TG zfFc1!LO_wyS^$bP6N>a^VK&L)h~iM^n9|o@$}y$?`4wPFz?7yy(~o42aNR~vu+r9y zd<%CXNlwfn5Mxh>38gZ|49sas!PHVSCtysM#+VAxgtpHQDPyQZOweD5IpLa(Q9u~c zaoGCSHtLIkRF$j5PF;Jo)!e%6HCx`TmRo&QM@M;oQ@Ww?Kbt6G1S^6xJ|>8UAqlAA zV%WF%z5Ec2mJ8~htr8tncZH(mS9gs|>k8F4<^y7K(~J!uP=k*0C5=oa7{4uviQ06r z;9Y|CKoT{@5UNaJuTfQRt6Z56M<)6+uFXOpup2O>8=QPdw5GhL(9NFSt-P7L*I7OA zycG|!0mud*8-Q%Etg^v9${6K65Dnr}^A`<%|I+u zV}OhSGDh+#kTF2UKpmy^lQJ0G?;1EpXo%?8IwD4l9i$0aSkSn=}bShBlMX2NXXp!L6fetx-2dU zOC3Fnr-kJ7DU!+J#DS{H_lX(H&z=Ch1XUhXc~Ip`2dMJ71628QQn@>2Ro;@jQwHUX z7Jq}}7~aRg@POf+li?MmHXwFO3#EYA0kONH=)t@YS-PK(Cv0vSg*%0^m2P)xlpAn0 z;A+6tfU6ar3%D9^wV6)46-HGv_vS`cN6Nl>D@V%S{3>i=y$by4vDtNysu+YY>JzRA zIwoV-6JP}pP9)3VbrIJs><;@>6VJMyHWx#QqcibC4uX{FjQPzne0g-+{M8Pwjojf? z{F5AejdJ|~)LuI-Z_|AaOm-O)pmj{f2DP|-dK`BntlJk#XU0!@K{i^2baIPwGQp?z z?UUGLPu=ig)@<=Y5M#$ej5tOKeMnf>dn}ZRnX~F$TB2n9p$bWYgYoA?Q_aYzsrq8T z0>hsJvnxfsNiH(+bu6aaB#iVJ1;R)68&q)|slL$a#}2++|3wbI{QNq=msNl-Npkqf zzR9q)Eesb|xV7!6N~0!9zhnNX`yx!%38y=LkHw&L!>VxZvTpUF%GIPkU3r>!c7pCs zQMmF<^;-3+>JDeADhYR=S{om6>#74+5oIoX8N=7wb}0}$LF_~zc3$nys}F<^I%j-p c{v_m^1}hFp7A%@o5HTzHf5OPB&^}`U0G^{gy8r+H literal 4815 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 diff --git a/packages/backend/server/src/core/auth/service.ts b/packages/backend/server/src/core/auth/service.ts index f9a4532b16..90e18baac0 100644 --- a/packages/backend/server/src/core/auth/service.ts +++ b/packages/backend/server/src/core/auth/service.ts @@ -51,6 +51,13 @@ export class AuthService implements OnApplicationBootstrap { }; } + private getServerName() { + return ( + this.config.server.name ?? + (env.selfhosted ? 'AFFiNE Self-hosted' : 'AFFiNE Cloud') + ); + } + async onApplicationBootstrap() { if (env.dev) { await createDevUsers(this.models); @@ -372,6 +379,7 @@ export class AuthService implements OnApplicationBootstrap { props: { url: link, otp, + serverName: this.getServerName(), }, }); } diff --git a/packages/backend/server/src/core/config/resolver.ts b/packages/backend/server/src/core/config/resolver.ts index c1ad0e876d..d14e559da5 100644 --- a/packages/backend/server/src/core/config/resolver.ts +++ b/packages/backend/server/src/core/config/resolver.ts @@ -75,7 +75,7 @@ export class ServerConfigResolver { name: this.config.server.name ?? (env.selfhosted - ? 'AFFiNE SelfHosted Cloud' + ? 'AFFiNE Self-hosted' : env.namespaces.canary ? 'AFFiNE Canary Cloud' : env.namespaces.beta diff --git a/packages/backend/server/src/mails/users/sign-in.tsx b/packages/backend/server/src/mails/users/sign-in.tsx index 479579638b..501f0c2175 100644 --- a/packages/backend/server/src/mails/users/sign-in.tsx +++ b/packages/backend/server/src/mails/users/sign-in.tsx @@ -11,12 +11,13 @@ import { export type SignInProps = { url: string; otp: string; + serverName?: string; }; export default function SignIn(props: SignInProps) { return (