Skip to content

Comments

Added Simplified Chinese (zh-Hans) and Updated some wordings in zh and zh-Hant#25030

Merged
cathysarisky merged 19 commits intoTryGhost:mainfrom
tommywong-theinitium:main
Oct 14, 2025
Merged

Added Simplified Chinese (zh-Hans) and Updated some wordings in zh and zh-Hant#25030
cathysarisky merged 19 commits intoTryGhost:mainfrom
tommywong-theinitium:main

Conversation

@tommywong-theinitium
Copy link
Contributor

@tommywong-theinitium tommywong-theinitium commented Oct 1, 2025

I think this is complete. Please review & tell me if there's any issue. Thanks!


Note

Adds full Simplified Chinese (zh-Hans) locales and improves/completes existing zh and zh-Hant translations across comments, ghost, portal, search, and signup-form.

  • i18n:
    • New locale: zh-Hans
      • Adds comments.json, ghost.json, portal.json, search.json, signup-form.json with complete Simplified Chinese translations.
    • Traditional Chinese updates: zh-Hant
      • Fills missing keys and refines wording in comments.json, ghost.json, portal.json, signup-form.json (e.g., add translations for "Best", "Newest/Oldest", verification flows; standardize terminology and punctuation).
    • Simplified Chinese updates: zh
      • Completes missing strings and improves terminology in comments.json, ghost.json, portal.json (e.g., newsletter → 新闻信, validation/error messages, sign-in code texts).

Written by Cursor Bugbot for commit 6a2d182. This will update automatically on new commits. Configure here.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 1, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Updated Traditional Chinese (zh-Hant) and Simplified Chinese (zh) locale JSON files: ghost.json, portal.json, comments.json, and signup-form.json. Changes fill many previously empty translations, normalize spacing around numeric placeholders (e.g., "{amount}"), standardize terminology (notably "電子郵件"), and revise phrasing for comments, portal, signup, notification, verification, and subscription strings. No keys were added or removed and no runtime logic or control flow changed; edits are confined to translation values and wording within existing keys.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The PR title clearly states the primary changes—adding the Simplified Chinese locale and refining existing zh and zh-Hant translations—accurately reflecting the modifications in the changeset.
Description Check ✅ Passed The pull request description includes a concise summary and detailed list of locale changes, matching the changeset by outlining addition of zh-Hans and updates to zh and zh-Hant translations across multiple files.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added community [triage] Community features and bugs affects:i18n labels Oct 1, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

🧹 Nitpick comments (2)
ghost/i18n/locales/zh-Hant/ghost.json (1)

67-68: Use full-width colons for Chinese labels.

For Chinese punctuation, “時間:”/“地點:” should use “:” to read naturally. Please update both.

-    "When:": "時間:",
-    "Where:": "地點:",
+    "When:": "時間:",
+    "Where:": "地點:",
ghost/i18n/locales/zh/ghost.json (1)

67-68: Switch to full-width colons in these labels.

For Chinese copy we normally use “:”. Updating “时间:/地点:” keeps the typography consistent.

-    "When:": "时间:",
-    "Where:": "地点:",
+    "When:": "时间:",
+    "Where:": "地点:",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9290c6b and 9eaeff3.

📒 Files selected for processing (11)
  • ghost/i18n/locales/zh-Hans/comments.json (1 hunks)
  • ghost/i18n/locales/zh-Hans/ghost.json (1 hunks)
  • ghost/i18n/locales/zh-Hans/portal.json (1 hunks)
  • ghost/i18n/locales/zh-Hans/search.json (1 hunks)
  • ghost/i18n/locales/zh-Hans/signup-form.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/comments.json (3 hunks)
  • ghost/i18n/locales/zh-Hant/ghost.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/portal.json (6 hunks)
  • ghost/i18n/locales/zh-Hant/signup-form.json (1 hunks)
  • ghost/i18n/locales/zh/ghost.json (1 hunks)
  • ghost/i18n/locales/zh/portal.json (7 hunks)
🧰 Additional context used
🧠 Learnings (7)
📓 Common learnings
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh/ghost.json
  • ghost/i18n/locales/zh-Hant/ghost.json
  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh-Hans/ghost.json
  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-01-29T15:27:29.391Z
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.

Applied to files:

  • ghost/i18n/locales/zh/ghost.json
  • ghost/i18n/locales/zh-Hant/ghost.json
📚 Learning: 2025-05-20T21:08:21.026Z
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.

Applied to files:

  • ghost/i18n/locales/zh/ghost.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh-Hant/ghost.json
  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-07-29T04:57:10.163Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:11-11
Timestamp: 2025-07-29T04:57:10.163Z
Learning: In Ghost's Traditional Chinese localization, the "Add your expertise" label appears as a link in comments when expertise is not yet provided, specifically to request additional professional background information from commenters. The translation should reflect this context of inviting additional information rather than just adding new information.

Applied to files:

  • ghost/i18n/locales/zh-Hant/comments.json
📚 Learning: 2025-07-29T05:08:05.874Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:45-46
Timestamp: 2025-07-29T05:08:05.874Z
Learning: For Traditional Chinese localization in Ghost's comments.json, "Oldest" should be translated as "最早" (not "最初") when used in comment sorting selectors, as "最早" better conveys the temporal sorting context.

Applied to files:

  • ghost/i18n/locales/zh-Hant/comments.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Cursor Bugbot
  • GitHub Check: Cursor Bugbot

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (1)
ghost/i18n/locales/zh-Hant/ghost.json (1)

75-75: Restore the full-width colon at the end of the sentence.
繁體中文句末提示應以「:」結尾,避免半形冒號造成視覺不一致。

-"You're one tap away from subscribing to {siteTitle} — please confirm your email address with this link:": "您離訂閱{siteTitle}只差一步 — 請透過此連結確認您的電子郵件地址:",
+"You're one tap away from subscribing to {siteTitle} — please confirm your email address with this link:": "您離訂閱{siteTitle}只差一步 — 請透過此連結確認您的電子郵件地址:",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9eaeff3 and 36244c9.

📒 Files selected for processing (5)
  • ghost/i18n/locales/zh-Hans/ghost.json (1 hunks)
  • ghost/i18n/locales/zh-Hans/portal.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/ghost.json (1 hunks)
  • ghost/i18n/locales/zh/ghost.json (1 hunks)
  • ghost/i18n/locales/zh/portal.json (7 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • ghost/i18n/locales/zh/ghost.json
  • ghost/i18n/locales/zh-Hans/ghost.json
  • ghost/i18n/locales/zh-Hans/portal.json
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh-Hant/ghost.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh-Hant/ghost.json
📚 Learning: 2025-01-29T15:27:29.391Z
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.

Applied to files:

  • ghost/i18n/locales/zh-Hant/ghost.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cursor Bugbot

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 36244c9 and 9f3f2bc.

📒 Files selected for processing (4)
  • ghost/i18n/locales/zh-Hans/portal.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/ghost.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/portal.json (6 hunks)
  • ghost/i18n/locales/zh/portal.json (7 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh-Hant/ghost.json
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cursor Bugbot

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9f3f2bc and af2ecb5.

📒 Files selected for processing (4)
  • ghost/i18n/locales/zh-Hans/ghost.json (1 hunks)
  • ghost/i18n/locales/zh-Hans/portal.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/portal.json (6 hunks)
  • ghost/i18n/locales/zh/portal.json (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • ghost/i18n/locales/zh-Hans/ghost.json
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cursor Bugbot

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ghost/i18n/locales/zh-Hant/portal.json (1)

152-152: “Spam complaints” should reflect “complaints”.

“垃圾郵件” alone misses “complaints”。

- "Spam complaints": "垃圾郵件",
+ "Spam complaints": "垃圾郵件檢舉",
♻️ Duplicate comments (1)
ghost/i18n/locales/zh/portal.json (1)

176-176: Polish invite‑only and add missing punctuation.

Make sentence complete and polite.

- "This site is invite-only, contact the owner for access.": "此网站仅限邀请,联系网站所有者以获取访问权限",
+ "This site is invite-only, contact the owner for access.": "此网站仅限邀请,请联系网站所有者以获取访问权限。",
- "To continue to stay up to date, subscribe to {publication} below.": "如需持续获取最新资讯,请在下方订阅{publication}",
+ "To continue to stay up to date, subscribe to {publication} below.": "如需持续获取最新资讯,请在下方订阅{publication}。",

Also applies to: 181-181

🧹 Nitpick comments (13)
ghost/i18n/locales/zh-Hant/portal.json (6)

14-14: Standardize “inbox” term to 收件匣.

Currently mixes 收件箱/收件匣/收件夾。Prefer zh‑Hant “收件匣”。

- "A login link has been sent ...": "登入連結已經發送到您的收件箱..."
+ "A login link has been sent ...": "登入連結已經發送到您的收件匣..."
- "Check your inbox to verify email update": "請檢查您的收件箱確認更新電子郵件",
+ "Check your inbox to verify email update": "請檢查您的收件匣以確認電子郵件更新",
- "Make sure emails ...": "...移至收件匣」。",
+ "Make sure emails ...": "...移至收件匣」。",
- "Once resubscribed, ...": "...請檢查您的垃圾郵件匣。...",
+ "Once resubscribed, ...": "...請檢查您的垃圾郵件匣。...",
- "Verification link sent, check your inbox": "驗證連結已寄出,請確認你的信箱",
+ "Verification link sent, check your inbox": "驗證連結已寄出,請確認您的收件匣",
- "your inbox": "您的收件箱",
+ "your inbox": "您的收件匣",

Also applies to: 35-35, 109-109, 124-124, 198-198, 219-219


70-71: Use polite form consistently (“您/您的”).

Mixed “你/您的” lowers tone. Unify to 您/您的.

- "Enter your email address": "輸入你的電子郵件",
+ "Enter your email address": "輸入您的電子郵件",
- "Please contact {supportAddress} to adjust your complimentary subscription.": "請聯絡 {supportAddress} 來調整你的免費的訂閱。",
+ "Please contact {supportAddress} to adjust your complimentary subscription.": "請聯絡 {supportAddress} 以調整您的免費訂閱。",
- "You're currently not receiving emails": "您目前不會收到電子郵件。",
+ "You're currently not receiving emails": "您目前無法收到電子郵件。",
- "You're not receiving emails": "您當前不會收到電子郵件。",
+ "You're not receiving emails": "您目前無法收到電子郵件。",

Also applies to: 130-130, 212-213


90-90: Prefer zh‑Hant terms 聯絡/存取權限.

Use zh‑Hant style; avoid Mainland “聯繫/訪問”。

- "Get in touch for help": "聯繫我們,獲取幫助",
+ "Get in touch for help": "聯絡我們以取得協助",
- "We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該電子郵箱地址。請聯繫網站擁有者。",
+ "We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該電子郵件地址。請聯絡網站擁有者。",
- "This site is invite-only, contact the owner for access.": "此網站僅限邀請,聯繫網站所有者以獲取訪問權限。",
+ "This site is invite-only, contact the owner for access.": "此網站僅限邀請,請聯絡網站擁有者以取得存取權限。",

Also applies to: 201-201, 176-176


95-95: Polish wording for mail terms (地址/用戶端).

Use “電子郵件地址/用戶端”;remove redundant “中”。

- "...您的電子郵箱地址將自動停止接收該電子報..."
+ "...您的電子郵件地址將自動停止接收該電子報..."
- "在您的電子郵件系統中將 {senderEmail} 加入您的聯絡人列表中。"
+ "在您的電子郵件用戶端將 {senderEmail} 加入聯絡人列表。"

Also applies to: 103-103


112-112: Adopt preferred phrasing for domain restrictions.

Use the house style for email‑domain restrictions.

- "Memberships from this email domain are currently restricted.": "來自此電子郵件網域的會員資格目前受到限制。",
+ "Memberships from this email domain are currently restricted.": "目前不接受此 email 網域的會員申請。",
- "Signups from this email domain are currently restricted.": "來自此電子郵件網域的註冊目前受到限制。",
+ "Signups from this email domain are currently restricted.": "目前不接受此 email 網域的新會員註冊。",

Based on learnings

Also applies to: 148-148


18-18: CTA and terminology tweaks (minor).

Prefer “新增/備註” in zh‑Hant; current is Mainland‑leaning.

- "Add a personal note": "添加個人留言",
+ "Add a personal note": "新增個人備註",
- "Code": "驗證碼",
+ "Code": "驗證碼",

Also applies to: 42-42

ghost/i18n/locales/zh/portal.json (7)

85-85: Unify “订阅” vs “会籍”.

Use “订阅” throughout to match product terminology.

- "Failed to update subscription, please try again": "更新会籍失败,请重试",
+ "Failed to update subscription, please try again": "更新订阅失败,请重试",
- "If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,当前会籍在{periodEnd}前依旧有效。",
+ "If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,您在{periodEnd}前仍可访问内容。",
- "Your subscription will expire on {expiryDate}": "您的会籍将在{expiryDate}到期",
+ "Your subscription will expire on {expiryDate}": "您的订阅将于{expiryDate}到期",
- "Your subscription will renew on {renewalDate}": "您的会籍将在{renewalDate}续费",
+ "Your subscription will renew on {renewalDate}": "您的订阅将于{renewalDate}续订",
- "Your subscription will start on {subscriptionStart}": "您的会籍将于{subscriptionStart}开始",
+ "Your subscription will start on {subscriptionStart}": "您的订阅将于{subscriptionStart}开始",

Also applies to: 97-97, 221-223


35-35: Use “确认” (not 验证) for email update check.

More natural here.

- "Check your inbox to verify email update": "请检查您的收件箱以验证电子邮件更新",
+ "Check your inbox to verify email update": "请检查您的收件箱以确认电子邮件更新",

100-100: Tighten sentence structure.

Make it natural Chinese.

- "If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果没有收到订阅了的新闻信,请检查以下事项。",
+ "If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果您没有收到已订阅的新闻信,请检查以下事项。",

102-102: Mail delivery terminology and punctuation.

Use “退信/永久失败”,and finish sentences with “。”

- "In the event a permanent failure is received when attempting to send a newsletter, emails will be disabled on the account.": "当尝试发送新闻信时遇到永久错误,向该账户的发送邮件的功能将被禁用。",
+ "In the event a permanent failure is received when attempting to send a newsletter, emails will be disabled on the account.": "若发送新闻信发生永久失败,该账户的邮件将被禁用。",
- "Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce)": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误 (bounce)",
+ "Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "您的账户可能因两种原因被禁用新闻信:先前邮件被标记为垃圾邮件,或发送邮件出现永久失败(退信)。",
- "Permanent failure (bounce)": "永久错误 (bounce)",
+ "Permanent failure (bounce)": "永久失败(退信)",
- "When an inbox fails to accept an email ...": "收件箱无法接收邮件时称为“反弹”。大多数时候这是临时的。但是某些情况下,无效或者不存在的邮件地址反弹的邮件会被认定为永久错误。",
+ "When an inbox fails to accept an email ...": "收件箱无法接收邮件时通常称为退信。多数情况下这是暂时的;但若地址无效或不存在,退信会被视为永久失败。",

Also applies to: 119-119, 125-125, 206-206


112-112: Clarify domain‑restricted message (memberships vs signups).

Make it explicit it’s about member signups.

- "Memberships from this email domain are currently restricted.": "来自此电子邮件域名的注册目前受到限制。",
+ "Memberships from this email domain are currently restricted.": "来自此邮箱域名的会员注册目前受限。",

132-132: Terminology: 必填项; 重新启用.

More standard Mainland phrasing.

- "Please fill in required fields": "请填写必须项目",
+ "Please fill in required fields": "请填写必填项",
- "Re-enable emails": "重启电子邮件",
+ "Re-enable emails": "重新启用电子邮件",

Also applies to: 134-134


170-170: Unify “账户/帐户”。

Use “账户” consistently.

- "...在<button>帐户设置区域</button>中更新它。",
+ "...在<button>账户设置区域</button>中更新它。",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between af2ecb5 and 1a428f1.

📒 Files selected for processing (3)
  • ghost/i18n/locales/zh-Hans/portal.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/portal.json (6 hunks)
  • ghost/i18n/locales/zh/portal.json (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • ghost/i18n/locales/zh-Hans/portal.json
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-07-29T05:28:28.664Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:143-144
Timestamp: 2025-07-29T05:28:28.664Z
Learning: In Ghost's Traditional Chinese localization, when translating signup/registration restriction messages, it's important to consider the specific context (e.g., member signup vs. general signup) to choose the most appropriate terminology. For member signup contexts, "新會員註冊" (new member registration) is more contextually accurate than just "註冊" (registration).

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-07-29T04:57:10.163Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:11-11
Timestamp: 2025-07-29T04:57:10.163Z
Learning: In Ghost's Traditional Chinese localization, the "Add your expertise" label appears as a link in comments when expertise is not yet provided, specifically to request additional professional background information from commenters. The translation should reflect this context of inviting additional information rather than just adding new information.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cursor Bugbot

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1a428f1 and b1e3758.

📒 Files selected for processing (3)
  • ghost/i18n/locales/zh-Hans/comments.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/comments.json (3 hunks)
  • ghost/i18n/locales/zh/comments.json (3 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • ghost/i18n/locales/zh-Hans/comments.json
  • ghost/i18n/locales/zh-Hant/comments.json
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh/comments.json
📚 Learning: 2025-07-29T05:08:05.874Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:45-46
Timestamp: 2025-07-29T05:08:05.874Z
Learning: For Traditional Chinese localization in Ghost's comments.json, "Oldest" should be translated as "最早" (not "最初") when used in comment sorting selectors, as "最早" better conveys the temporal sorting context.

Applied to files:

  • ghost/i18n/locales/zh/comments.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cursor Bugbot

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
ghost/i18n/locales/zh/portal.json (2)

119-119: Add the missing period at the end of the sentence.

The translation ends without terminal punctuation, leaving the sentence hanging. Please append the full-width “。” after “永久错误 (bounce)” to keep the copy grammatical.

Apply this diff:

-    "Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce)": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误 (bounce)",
+    "Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce)": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误 (bounce)。",

176-176: Restore the polite marker and closing punctuation.

We previously standardised this string as “此网站仅限邀请,请联系网站所有者以获取访问权限。” Losing the “请” and final “。” makes the instruction abrupt and grammatically unfinished. Please revert to the full sentence.

Apply this diff:

-    "This site is invite-only, contact the owner for access.": "此网站仅限邀请,联系网站所有者以获取访问权限",
+    "This site is invite-only, contact the owner for access.": "此网站仅限邀请,请联系网站所有者以获取访问权限。",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b1e3758 and 6a2d182.

📒 Files selected for processing (3)
  • ghost/i18n/locales/zh-Hans/comments.json (1 hunks)
  • ghost/i18n/locales/zh/comments.json (3 hunks)
  • ghost/i18n/locales/zh/portal.json (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • ghost/i18n/locales/zh/comments.json
  • ghost/i18n/locales/zh-Hans/comments.json
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T04:57:10.163Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:11-11
Timestamp: 2025-07-29T04:57:10.163Z
Learning: In Ghost's Traditional Chinese localization, the "Add your expertise" label appears as a link in comments when expertise is not yet provided, specifically to request additional professional background information from commenters. The translation should reflect this context of inviting additional information rather than just adding new information.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cursor Bugbot

@tommywong-theinitium tommywong-theinitium changed the title Added Smplified Chinese (zh-Hans) and Updated some wordings in zh and zh-Hant Added Simplified Chinese (zh-Hans) and Updated some wordings in zh and zh-Hant Oct 2, 2025
@cathysarisky
Copy link
Member

Hi @tommywong-theinitium , @ninghuilulu, @imgarylai, @heybran

I see that we have now this PR plus the one opened by Lulu (#24868 ). I know that Tommy and Lulu work together, so is this one intended to replace the other one? If so, then we'd want @imgarylai 's work reviewing on this PR, not the original, right? (And thank you, Gary!)

A couple big picture questions:
1 - Is zh-Hans different from zh? I thought that the zh locale was simplified Chinese? (We can have a conversation about whether we should maintain it as zh or move it to zh-Hans and set zh-Hans as a fallback for zh, but it doesn't make sense to make a duplicate, unless these are actually different.)
2 - Adding a new locale always requires adding an entry in the locales file also. Otherwise it won't be recognized.
3 - It's always helpful, especially when someone submits multiple languages, to have the PR include a statement about the language fluency of the submitter (and in this case, anyone who helped, since I think this is a group effort).

cursor[bot]

This comment was marked as outdated.

Copy link

@Miyaya Miyaya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello, I'm Miya. I'm a native mandarin speaker from Taiwan and we use traditional chinese. Hope the review can help 💟 😸
(if the way I left comment is not ideal, please inform me since I'm new to contribute to open resource project, thank you so much!)

@@ -42,12 +42,12 @@
"Member discussion": "會員討論",
"Name": "稱呼",
"Neurosurgeon": "神經外科醫生",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

line 37 can be "王小明" for a fictional name

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good eye, @Miyaya! Our general goal is for Jamie Larson to be a recognizable name in each language, so @tommywong-theinitium , if you wanted to add a name (i.e. Miyaya's suggestion) to your PR, that'd be great. I note that it also appears in zh. Thanks!

@cathysarisky
Copy link
Member

Thanks @Miyaya for reviewing! Much appreciated!
@tommywong-theinitium , please see my previous comment. As far as I understand it, our current zh is zh-Hans. Please correct my understanding, if needed. We would not merge a new set of strings based on preferring a different language code, but could set a falllback language code if that helps address the problem.

@tommywong-theinitium
Copy link
Contributor Author

@cathysarisky our site is using lang="zh-Hans", does the ghost's portal is able to load the zh locale if zh-Hans data is not added?

@cathysarisky
Copy link
Member

@tommywong-theinitium , your site currently is set to zh-Hant, but your theme switches between display the html lang as either zh-Hant or zh-Hans based on routing. Your theme triggers loading the portal as either zh or zh-Hant, depending on the page the user is on. If that's not the behavior you're seeing, let's get it fixed in the theme (and we can discuss the theme over on Slack).

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
ghost/i18n/locales/zh-Hant/portal.json (1)

52-52: Translate “session” as「工作階段」(duplicate of earlier feedback)
Use「工作階段」not「連線」 for “session”. Confirmed by reviewer Miyaya.

-"Could not create stripe checkout session": "無法建立 Stripe 結帳的連線",
+"Could not create stripe checkout session": "無法建立 Stripe 結帳工作階段",
-"Unable to initiate checkout session": "無法建立結帳的連線",
+"Unable to initiate checkout session": "無法啟動結帳工作階段",

Also applies to: 191-191

🧹 Nitpick comments (18)
ghost/i18n/locales/zh-Hant/portal.json (8)

2-2: Use “可省” instead of Mainland “立省” for zh‑Hant

“立省” is Mainland usage; zh‑Hant prefers “可省”.

-    "(save {highestYearlyDiscount}%)": "(立省 {highestYearlyDiscount}%)",
+    "(save {highestYearlyDiscount}%)": "(可省 {highestYearlyDiscount}%)",

14-14: Prefer「收件匣」in zh‑Hant

Switch 收件箱 → 收件匣 to match zh‑Hant usage.

-"A login link has been sent to your inbox. If it doesn't arrive in 3 minutes, be sure to check your spam folder.": "登入連結已經發送到您的收件箱。如果在 3 分鐘內未收到,請務必檢查您的垃圾郵件。",
+"A login link has been sent to your inbox. If it doesn't arrive in 3 minutes, be sure to check your spam folder.": "登入連結已寄出至您的收件匣。若 3 分鐘內未收到,請務必檢查垃圾郵件匣。",

18-18: Use zh‑Hant phrasing “新增…備註” (avoid “添加…留言”)

Align with TW tone and UI terminology.

-"Add a personal note": "添加個人留言",
+"Add a personal note": "新增個人備註",

124-124: Use full‑width exclamation mark in zh‑Hant

Chinese punctuation should use「!」.

-"Now check your email!": "立即檢查您的電子郵件!",
+"Now check your email!": "立即檢查您的電子郵件!",

140-141: Polish email CTA copy and provider sentence

More natural zh‑Hant, less literal “可信任”.

-"Send an email and say hi!": "發送電子郵件打招呼!",
-"Send an email to {senderEmail} and say hello. This can also help signal to your mail provider that emails to and from this address should be trusted.": "向 {senderEmail} 發送電子郵件並問好。這也有助於讓您的電子郵件供應商了解這個地址的郵件是可信任的。",
+"Send an email and say hi!": "寄封電子郵件打招呼!",
+"Send an email to {senderEmail} and say hello. This can also help signal to your mail provider that emails to and from this address should be trusted.": "寄信到 {senderEmail} 打聲招呼。這也可讓您的郵件服務供應商辨識此寄件地址為可信任來源。",

113-114: Adopt preferred phrasing for domain restrictions

Per prior zh‑Hant guidance, use「目前不接受此 email 網域的會員申請」; aligns tone and flow. The second line already matches intended meaning.

Based on learnings

-"Memberships from this email domain are currently restricted.": "來自此電子郵件網域的會員資格目前受到限制。",
+"Memberships from this email domain are currently restricted.": "目前不接受此 email 網域的會員申請。",

171-171: Use an em dash for zh‑Hant typography

Replace ASCII hyphen with em dash「—」.

-"The email address we have for you is {memberEmail} — if that's not correct, you can update it in your <button>account settings area</button>.": "您的電子郵件地址是 {memberEmail} - 如果該郵箱不正確,您可以在<button>帳戶設置區域</button>中更新它。",
+"The email address we have for you is {memberEmail} — if that's not correct, you can update it in your <button>account settings area</button>.": "您的電子郵件地址是 {memberEmail} — 若不正確,您可在<button>帳號設定</button>中更新。",

177-177: Polish invite‑only message for zh‑Hant tone

Use「請」「聯絡」「擁有者」「存取權限」。

-"This site is invite-only, contact the owner for access.": "此網站僅限邀請,聯繫網站所有者以獲取訪問權限。",
+"This site is invite-only, contact the owner for access.": "此網站僅限邀請,請聯絡網站擁有者以取得存取權限。",
ghost/i18n/locales/zh/portal.json (4)

113-113: Differentiate “Memberships” vs “Signups” phrasing

Use “会员申请/注册” precisely; current copy uses “注册” for both.

-"Memberships from this email domain are currently restricted.": "来自此电子邮件域名的注册目前受到限制。",
+"Memberships from this email domain are currently restricted.": "来自此电子邮件域名的会员申请目前受限。",
@@
-"Signups from this email domain are currently restricted.": "来自此电子邮件域名的注册目前受到限制。",
+"Signups from this email domain are currently restricted.": "来自此电子邮件域名的新会员注册目前受限。",

Based on learnings

Also applies to: 149-149


98-98: Prefer “订阅” over “会籍” for consistency with product terminology

Unify to 订阅 to match other keys and UI wording.

-"If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,当前会籍在{periodEnd}前依旧有效。",
+"If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,您仍可在 {periodEnd} 之前访问内容。",
@@
-"Your subscription will expire on {expiryDate}": "您的会籍将在{expiryDate}到期",
-"Your subscription will renew on {renewalDate}": "您的会籍将在{renewalDate}续费",
-"Your subscription will start on {subscriptionStart}": "您的会籍将于{subscriptionStart}开始"
+"Your subscription will expire on {expiryDate}": "您的订阅将于{expiryDate}到期",
+"Your subscription will renew on {renewalDate}": "您的订阅将于{renewalDate}续订",
+"Your subscription will start on {subscriptionStart}": "您的订阅将于{subscriptionStart}开始"

Also applies to: 222-224


135-135: Use “重新启用” (not “重启”) for re-enable

More accurate for toggling email delivery.

-"Re-enable emails": "重启电子邮件",
+"Re-enable emails": "重新启用电子邮件",

103-103: Polish permanent failure sentence

Clarify subject and avoid awkward “向该账户的发送邮件的功能”.

-"In the event a permanent failure is received when attempting to send a newsletter, emails will be disabled on the account.": "当尝试发送新闻信时遇到永久错误,向该账户的发送邮件的功能将被禁用。",
+"In the event a permanent failure is received when attempting to send a newsletter, emails will be disabled on the account.": "当尝试发送新闻信时遇到永久性失败时,将为该账户禁用电子邮件。",
ghost/i18n/locales/zh-Hant/ghost.json (6)

33-33: Use polite “您” consistently (not “你”)

Align tone with the rest of zh‑Hant file.

-"New reply to your comment on {siteTitle}": "對你在{siteTitle}上的評論的新回覆",
+"New reply to your comment on {siteTitle}": "對您在{siteTitle}上的留言的新回覆",
@@
-"You are receiving this because you are a <strong>%%{status}%% subscriber</strong> to {site}.": "你會收到此封電子報因為你是{site}的<strong>%%{status}%% 訂閱者</strong>。",
+"You are receiving this because you are a <strong>%%{status}%% subscriber</strong> to {site}.": "您會收到這封電子報,因為您是 {site} 的<strong>%%{status}%% 訂閱者</strong>。",
@@
-"You just tried to access your account from a new device.": "您剛嘗試從一個新裝置存取您的帳戶。",
+"You just tried to access your account from a new device.": "您剛嘗試從新裝置存取您的帳戶。",

Also applies to: 69-69, 72-72


44-44: Tighten placeholder spacing

Remove spaces around placeholders to match prior zh‑Hant conventions.

Based on learnings

-"Sign in to {siteTitle} with code {otc}": "請使用驗證碼 {otc} 登入 {siteTitle}",
+"Sign in to {siteTitle} with code {otc}": "請使用驗證碼{otc}登入{siteTitle}",
@@
-"Your verification code for {siteTitle}": "您在 {siteTitle} 的驗證碼"
+"Your verification code for {siteTitle}": "您在{siteTitle}的驗證碼"

Also applies to: 82-82


55-55: Remove extra spaces around placeholders in Chinese

Use contiguous placeholders for better typography.

-"This message was sent from {siteDomain} to {email}.": "此訊息由 {siteDomain} 寄送至 {email}。",
+"This message was sent from {siteDomain} to {email}.": "此訊息由{siteDomain}寄送至{email}。",

63-63: More natural “View in browser”

Use “在瀏覽器中開啟”.

-"View in browser": "用瀏覽器打開",
+"View in browser": "在瀏覽器中開啟",

32-32: Use “留言” consistently (not “評論”)

Earlier keys use「留言」; keep consistent.

-"New comment on {postTitle}": "{postTitle} 有新評論",
+"New comment on {postTitle}": "{postTitle} 有新留言",

75-75: Use full‑width colon in zh‑Hant

Replace ASCII “:” with “:”.

-"You're one tap away from subscribing to {siteTitle} — please confirm your email address with this link:": "您離訂閱{siteTitle}只差一步 — 請透過此連結確認您的電子郵件地址:",
+"You're one tap away from subscribing to {siteTitle} — please confirm your email address with this link:": "您離訂閱{siteTitle}只差一步 — 請透過此連結確認您的電子郵件地址:",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 80cce28 and 0358605.

📒 Files selected for processing (4)
  • ghost/i18n/locales/zh-Hant/ghost.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/portal.json (5 hunks)
  • ghost/i18n/locales/zh/ghost.json (1 hunks)
  • ghost/i18n/locales/zh/portal.json (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • ghost/i18n/locales/zh/ghost.json
🧰 Additional context used
🧠 Learnings (6)
📓 Common learnings
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh-Hant/ghost.json
📚 Learning: 2025-07-29T04:57:10.163Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:11-11
Timestamp: 2025-07-29T04:57:10.163Z
Learning: In Ghost's Traditional Chinese localization, the "Add your expertise" label appears as a link in comments when expertise is not yet provided, specifically to request additional professional background information from commenters. The translation should reflect this context of inviting additional information rather than just adding new information.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh-Hant/ghost.json
📚 Learning: 2025-07-29T05:28:28.664Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:143-144
Timestamp: 2025-07-29T05:28:28.664Z
Learning: In Ghost's Traditional Chinese localization, when translating signup/registration restriction messages, it's important to consider the specific context (e.g., member signup vs. general signup) to choose the most appropriate terminology. For member signup contexts, "新會員註冊" (new member registration) is more contextually accurate than just "註冊" (registration).

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh-Hant/ghost.json
📚 Learning: 2025-10-01T20:13:20.920Z
Learnt from: tommywong-theinitium
PR: TryGhost/Ghost#25030
File: ghost/i18n/locales/zh/ghost.json:28-31
Timestamp: 2025-10-01T20:13:20.920Z
Learning: In Ghost's localization files, "More like this" and "Less like this" are labels for thumbs-up/thumbs-down feedback buttons at the bottom of email newsletters, not features to show similar content. Therefore, translations should reflect the "like/dislike" feedback action rather than "show more/less similar content".

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
🔇 Additional comments (3)
ghost/i18n/locales/zh/portal.json (2)

177-177: Complete sentence and add polite particle

Add “请” and terminal “。”.
[suggest_minor_issue]

-"This site is invite-only, contact the owner for access.": "此网站仅限邀请,联系网站所有者以获取访问权限",
+"This site is invite-only, contact the owner for access.": "此网站仅限邀请,请联系网站所有者以获取访问权限。",

109-109: Thumbs intent acknowledged; ensure cross‑locale consistency

These map to thumbs down/up (“不喜欢/喜欢”), which aligns with the email footer UI. Consider aligning zh‑Hant equivalents for consistency across locales.

Also applies to: 117-117

ghost/i18n/locales/zh-Hant/portal.json (1)

21-21: Register zh-Hans in the locales registry and confirm fallback behavior
I didn’t find any zh-Hans entries in the i18n locale registry—please add zh-Hans and verify that zh and zh-Hans fall back to each other per product requirements.

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
ghost/i18n/locales/zh-Hant/portal.json (1)

52-52: Fix mistranslated “checkout session”
“連線” describes a network connection, but the source strings refer to the Stripe checkout session. This was already called out earlier and the agreed correction was “結帳工作階段”. Please update both occurrences to match that wording.

-"Could not create stripe checkout session": "無法建立 Stripe 結帳的連線",
+"Could not create stripe checkout session": "無法建立 Stripe 結帳工作階段",-"Unable to initiate checkout session": "無法建立結帳的連線",
+"Unable to initiate checkout session": "無法啟動結帳工作階段",

Also applies to: 191-191

🧹 Nitpick comments (1)
ghost/i18n/locales/zh/portal.json (1)

171-171: Keep the character form consistent.

这里用了“帐户”,但本文件其余处都使用“账户”。请统一为“账户设置区域”以维持一致的简体字形。

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0358605 and 9e4fd54.

📒 Files selected for processing (4)
  • ghost/i18n/locales/zh-Hant/ghost.json (1 hunks)
  • ghost/i18n/locales/zh-Hant/portal.json (5 hunks)
  • ghost/i18n/locales/zh-Hant/signup-form.json (1 hunks)
  • ghost/i18n/locales/zh/portal.json (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • ghost/i18n/locales/zh-Hant/ghost.json
  • ghost/i18n/locales/zh-Hant/signup-form.json
🧰 Additional context used
🧠 Learnings (6)
📓 Common learnings
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
📚 Learning: 2025-01-29T15:27:29.391Z
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-07-29T04:57:10.163Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:11-11
Timestamp: 2025-07-29T04:57:10.163Z
Learning: In Ghost's Traditional Chinese localization, the "Add your expertise" label appears as a link in comments when expertise is not yet provided, specifically to request additional professional background information from commenters. The translation should reflect this context of inviting additional information rather than just adding new information.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-10-01T20:13:20.920Z
Learnt from: tommywong-theinitium
PR: TryGhost/Ghost#25030
File: ghost/i18n/locales/zh/ghost.json:28-31
Timestamp: 2025-10-01T20:13:20.920Z
Learning: In Ghost's localization files, "More like this" and "Less like this" are labels for thumbs-up/thumbs-down feedback buttons at the bottom of email newsletters, not features to show similar content. Therefore, translations should reflect the "like/dislike" feedback action rather than "show more/less similar content".

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json

cursor[bot]

This comment was marked as outdated.

Copy link
Member

@cathysarisky cathysarisky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 My AI helper 🤖 left you a few comments. I always believe the human over the AI, so feel free to disregard them after you take a careful look!

Leave me a comment when you're satisfied with everything, please. :)

🤖 AI: Overall, the translations are accurate and reflect a friendly tone. I noticed a few small punctuation and phrasing spots where matching the original punctuation or choosing slightly more natural Chinese might help. Thank you for your careful work! 謝謝您!


Drafted with my new i18n tooling - feedback welcome

"Sign in verification": "",
"Someone just replied to your comment": "",
"Someone just replied to your comment on {postTitle}.": "",
"Sign in to {siteTitle} with code {otc}": "請使用驗證碼{otc}登入{siteTitle}",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI: Consider adding a space around the variable for readability: “驗證碼 {otc}” instead of “驗證碼{otc}”.

"You can also copy & paste this URL into your browser:": "您也可以將此網址複製並貼上到您的瀏覽器中:",
"You can unsubscribe from these notifications at {profileUrl}.": "",
"You just tried to access your account from a new device.": "",
"You can unsubscribe from these notifications at {profileUrl}.": "您可於 {profileUrl} 取消訂閱這些通知。",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI: Similar here: please use a fullwidth colon “:” for “Where:”.

"Already a member?": "已经是会员?",
"Anonymous": "匿名",
"Are you sure?": "",
"Are you sure?": "确认?",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI: “確定?” is concise but might read more naturally as “您確定嗎?”. Could you consider expanding it?

@@ -42,12 +42,12 @@
"Member discussion": "會員討論",
"Name": "稱呼",
"Neurosurgeon": "神經外科醫生",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good eye, @Miyaya! Our general goal is for Jamie Larson to be a recognizable name in each language, so @tommywong-theinitium , if you wanted to add a name (i.e. Miyaya's suggestion) to your PR, that'd be great. I note that it also appears in zh. Thanks!

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ghost/i18n/locales/zh-Hant/portal.json (1)

193-194: Fix unsubscribe status phrasing.

“未訂閱” means “not subscribed”, not “unsubscribed”. Use completed action/state:

-"Unsubscribed": "未訂閱",
-"Unsubscribed from all emails.": "未訂閱任何電子報。",
+"Unsubscribed": "已取消訂閱",
+"Unsubscribed from all emails.": "已取消所有電子報訂閱。",
🧹 Nitpick comments (3)
ghost/i18n/locales/zh/portal.json (1)

170-170: Polish: simplify “帐户设置区域”.

To match “Account settings” (Line 17) and Mainland usage, consider:

-"您的电子邮件地址是 {memberEmail} - 如果该邮箱不正确,您可以在<button>帐户设置区域</button>中更新它。",
+"您的电子邮件地址是 {memberEmail} — 如不正确,您可以在<button>账户设置</button>中更新。",
ghost/i18n/locales/zh-Hant/portal.json (2)

198-199: Tone/consistency: use 您、收件匣、電子郵件.

Unify formal tone and term usage:

-"Verification link sent, check your inbox": "驗證連結已寄出,請確認你的信箱",
-"Verify your email address is correct": "確認你的 email 地址無誤",
+"Verification link sent, check your inbox": "驗證連結已寄出,請檢查您的收件匣",
+"Verify your email address is correct": "請確認您的電子郵件地址無誤",

70-70: Add “地址” and formal pronoun.

-"Enter your email address": "輸入你的電子郵件",
+"Enter your email address": "輸入您的電子郵件地址",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f99f041 and cc542fe.

📒 Files selected for processing (2)
  • ghost/i18n/locales/zh-Hant/portal.json (5 hunks)
  • ghost/i18n/locales/zh/portal.json (6 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
ghost/i18n/locales/*/@(portal|comments|signup-form|search).json

📄 CodeRabbit inference engine (AGENTS.md)

Public UI translations must use separate namespaces (portal.json, comments.json, signup-form.json, search.json) per locale

Files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
ghost/i18n/locales/*/*.json

📄 CodeRabbit inference engine (AGENTS.md)

All translations must be centralized under ghost/i18n/locales/{locale}/{namespace}.json

Files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
ghost/i18n/locales/*/@(ghost|portal|signup-form|comments|search).json

📄 CodeRabbit inference engine (AGENTS.md)

Only the documented namespaces (ghost, portal, signup-form, comments, search) should be used for i18n files

Files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
🧠 Learnings (6)
📓 Common learnings
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: CR
PR: TryGhost/Ghost#0
File: AGENTS.md:0-0
Timestamp: 2025-10-09T17:25:12.439Z
Learning: Applies to ghost/i18n/locales/*/@(portal|comments|signup-form|search).json : Public UI translations must use separate namespaces (portal.json, comments.json, signup-form.json, search.json) per locale
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: CR
PR: TryGhost/Ghost#0
File: AGENTS.md:0-0
Timestamp: 2025-10-09T17:25:12.439Z
Learning: Applies to ghost/i18n/locales/en/ghost.json : Admin UI translations must be added to ghost/i18n/locales/en/ghost.json
Learnt from: CR
PR: TryGhost/Ghost#0
File: AGENTS.md:0-0
Timestamp: 2025-10-09T17:25:12.439Z
Learning: Applies to ghost/i18n/locales/*/@(ghost|portal|signup-form|comments|search).json : Only the documented namespaces (ghost, portal, signup-form, comments, search) should be used for i18n files
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-07-29T04:57:10.163Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:11-11
Timestamp: 2025-07-29T04:57:10.163Z
Learning: In Ghost's Traditional Chinese localization, the "Add your expertise" label appears as a link in comments when expertise is not yet provided, specifically to request additional professional background information from commenters. The translation should reflect this context of inviting additional information rather than just adding new information.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-07-29T05:28:28.664Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:143-144
Timestamp: 2025-07-29T05:28:28.664Z
Learning: In Ghost's Traditional Chinese localization, when translating signup/registration restriction messages, it's important to consider the specific context (e.g., member signup vs. general signup) to choose the most appropriate terminology. For member signup contexts, "新會員註冊" (new member registration) is more contextually accurate than just "註冊" (registration).

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-10-01T20:13:20.920Z
Learnt from: tommywong-theinitium
PR: TryGhost/Ghost#25030
File: ghost/i18n/locales/zh/ghost.json:28-31
Timestamp: 2025-10-01T20:13:20.920Z
Learning: In Ghost's localization files, "More like this" and "Less like this" are labels for thumbs-up/thumbs-down feedback buttons at the bottom of email newsletters, not features to show similar content. Therefore, translations should reflect the "like/dislike" feedback action rather than "show more/less similar content".

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cursor Bugbot
🔇 Additional comments (1)
ghost/i18n/locales/zh/portal.json (1)

21-21: Good fix: placeholder restored.

Reinserting {submittedEmailOrInbox} preserves runtime substitution and avoids breakage.

If you want, I can run a quick scan across locales to ensure this placeholder is consistently preserved. Based on learnings

"Continue": "繼續",
"Continue subscription": "繼續訂閱",
"Could not create stripe checkout session": "無法建立 Stripe 結帳",
"Could not create stripe checkout session": "無法建立 Stripe 結帳的連線",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Translate “session” as 工作階段 (not 連線).

Use accurate term and align with earlier feedback:

-"Could not create stripe checkout session": "無法建立 Stripe 結帳的連線",
+"Could not create stripe checkout session": "無法建立 Stripe 結帳工作階段",
...
-"Unable to initiate checkout session": "無法建立結帳的連線",
+"Unable to initiate checkout session": "無法啟動結帳工作階段",

Also applies to: 190-190

🤖 Prompt for AI Agents
In ghost/i18n/locales/zh-Hant/portal.json around lines 52 and 190, the Chinese
translation for "Could not create stripe checkout session" incorrectly uses "連線"
for "session"; replace "連線" with the correct term "工作階段" so the string reads
"無法建立 Stripe 結帳的工作階段" (and update the same change at line 190).

"Jamie Larson": "Jamie Larson",
"jamie@example.com": "jamie@example.com",
"Less like this": "不感興趣",
"Less like this": "減少相似內容",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Align feedback buttons with like/dislike semantics.

These are thumbs feedback on newsletters, not “more/less similar content”. Suggest:

-"Less like this": "減少相似內容",
+"Less like this": "不感興趣",
-"More like this": "更多類似內容",
+"More like this": "感興趣",

Based on learnings

Also applies to: 116-116

🤖 Prompt for AI Agents
In ghost/i18n/locales/zh-Hant/portal.json around lines 108 and 116, the
translations use phrasing like "減少相似內容" which misrepresents thumbs feedback
semantics; replace those entries with strings that reflect "Based on learnings"
(e.g., a concise Chinese traditional translation such as "根據學習結果" or another
approved localized variant). Update both line 108 and line 116 to the chosen
phrasing so the button labels align with like/dislike newsletter feedback.
Ensure punctuation and JSON string quoting remain valid.

"Price": "價格",
"Re-enable emails": "重新啟用 email",
"Re-enable emails": "重新啟用電子郵件",
"Recommendations": "所有推薦",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

“Recommendations” shouldn’t add “所有”.

Use neutral section label:

-"Recommendations": "所有推薦",
+"Recommendations": "推薦",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Recommendations": "所有推薦",
"Recommendations": "推薦",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh-Hant/portal.json around line 135, the translation for
"Recommendations" was rendered as "所有推薦" (adds "all") which makes it a
non-neutral label; change the value to a neutral section label such as "推薦" (or
"推薦事項"/"推薦內容" if you prefer more context) so the key reads simply
"Recommendations": "推薦".

"Verifying...": "驗證中...",
"View plans": "查詢訂閱方案",
"We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該 email 地址。請聯繫網站擁有者。",
"We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該電子郵箱地址。請聯繫網站擁有者。",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use “電子郵件地址” (not 電子郵箱地址).

-"We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該電子郵箱地址。請聯繫網站擁有者。",
+"We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該電子郵件地址。請聯繫網站擁有者。",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該電子郵箱地址。請聯繫網站擁有者。",
"We couldn't unsubscribe you as the email address was not found. Please contact the site owner.": "我們無法取消您的訂閱,因為找不到該電子郵件地址。請聯繫網站擁有者。",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh-Hant/portal.json around line 202, the translation uses
"電子郵箱地址" which is incorrect for Traditional Chinese; replace that phrase with
"電子郵件地址" so the string becomes "我們無法取消您的訂閱,因為找不到該電子郵件地址。請聯繫網站擁有者。".

"Failed to update account details": "更新账户信息失败",
"Failed to update billing information, please try again": "更新账单信息失败,请重试",
"Failed to update newsletter settings": "更新新闻信设置失败",
"Failed to update subscription, please try again": "更新会籍失败,请重试",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use “订阅” consistently; replace “会籍”.

“更新会籍失败” diverges from the rest of the file using “订阅”. Suggest:

-"Failed to update subscription, please try again": "更新会籍失败,请重试",
+"Failed to update subscription, please try again": "更新订阅失败,请重试",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Failed to update subscription, please try again": "更新会籍失败,请重试",
"Failed to update subscription, please try again": "更新订阅失败,请重试",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh/portal.json around line 85, the translation uses “会籍”
which is inconsistent with the rest of the file; change the value from
"更新会籍失败,请重试" to use “订阅” (e.g. "更新订阅失败,请重试") so terminology matches other
entries.

Comment on lines +120 to +121
"No member exists with this e-mail address.": "没有会员使用此电子邮箱地址。",
"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮箱地址。请先注册。",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Unify “电子邮件地址” vs “电子邮箱地址”.

Elsewhere you use “电子邮件地址” (Line 104). Standardize these two lines:

-"No member exists with this e-mail address.": "没有会员使用此电子邮箱地址。",
-"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮箱地址。请先注册。",
+"No member exists with this e-mail address.": "没有会员使用此电子邮件地址。",
+"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮件地址。请先注册。",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"No member exists with this e-mail address.": "没有会员使用此电子邮箱地址",
"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮箱地址。请先注册。",
"No member exists with this e-mail address.": "没有会员使用此电子邮件地址",
"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮件地址。请先注册。",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh/portal.json around lines 120 to 121, the translations
use “电子邮箱地址” while elsewhere (line 104) the project standard is “电子邮件地址”; update
both strings to replace “电子邮箱地址” with “电子邮件地址” so they match the existing
terminology, preserving the rest of each translation and punctuation.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ghost/i18n/locales/zh/portal.json (1)

1-224: Register zh-Hans in SUPPORTED_LOCALES and configure Chinese fallback
In ghost/i18n/lib/i18n.js, add 'zh-Hans' to the SUPPORTED_LOCALES array and pass a fallbackLng config to i18nextInstance.init—e.g.

fallbackLng: {
  'zh-Hans': ['zh'],  
  'zh':     ['zh-Hans'],  
  default:  ['en']
}

so Simplified (zh-Hans) and generic Chinese (zh) correctly fallback to each other before English.

♻️ Duplicate comments (5)
ghost/i18n/locales/zh-Hant/portal.json (3)

52-52: Stripe “session” should be translated as 工作階段

The source refers to a checkout session, not a network connection. Prior review already asked for “工作階段”, but both occurrences here still read “連線”, which is misleading.

Please update both keys to「無法建立 Stripe 結帳工作階段」and「無法啟動結帳工作階段」(or equivalent consistent phrasing). Based on learnings

Also applies to: 190-190


108-108: Newsletter feedback buttons should map to like/dislike actions

These buttons are thumbs-up/down grading, not “more/less similar content”. We have a project learning that they should read along the lines of「感興趣」/「不感興趣」. Please adjust both labels accordingly.
Based on learnings

Also applies to: 116-116


135-135: Drop the extra “所有” in “Recommendations”

The English label is a neutral section heading. Adding “所有” changes the meaning. Recommend reverting to simply「推薦」。

ghost/i18n/locales/zh/portal.json (2)

176-176: Complete the invite-only sentence and add politeness marker.

Add “请” and terminal punctuation for a complete, natural sentence.

-    "This site is invite-only, contact the owner for access.": "此网站仅限邀请,联系网站所有者以获取访问权限",
+    "This site is invite-only, contact the owner for access.": "此网站仅限邀请,请联系网站所有者以获取访问权限。",

85-85: Use “订阅” instead of “会籍”.

Aligns with the rest of the file and Ghost terminology.

-    "Failed to update subscription, please try again": "更新会籍失败,请重试",
+    "Failed to update subscription, please try again": "更新订阅失败,请重试",

Based on learnings

🧹 Nitpick comments (3)
ghost/i18n/locales/zh/comments.json (1)

14-14: Polish the confirmation prompt.

“确认?” feels abrupt in Simplified Chinese. “您确定吗?” (or at least “确定吗?”) reads more naturally to native speakers.

ghost/i18n/locales/zh/portal.json (2)

212-213: Differentiate the two status messages.

Reflect “currently” only in Line 212; make Line 213 generic to avoid duplication.

     "You're currently not receiving emails": "您当前不会收到电子邮件。",
-    "You're not receiving emails": "您当前不会收到电子邮件。",
+    "You're not receiving emails": "您不会收到电子邮件。",

45-45: Optional: Clarify “Complimentary” as “赠送”.

“赠送” better matches comped subscriptions in billing contexts.

-    "Complimentary": "免费",
+    "Complimentary": "赠送",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cc542fe and af59300.

📒 Files selected for processing (5)
  • ghost/i18n/locales/zh-Hant/comments.json (2 hunks)
  • ghost/i18n/locales/zh-Hant/portal.json (5 hunks)
  • ghost/i18n/locales/zh/comments.json (3 hunks)
  • ghost/i18n/locales/zh/ghost.json (1 hunks)
  • ghost/i18n/locales/zh/portal.json (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • ghost/i18n/locales/zh/ghost.json
  • ghost/i18n/locales/zh-Hant/comments.json
🧰 Additional context used
📓 Path-based instructions (3)
ghost/i18n/locales/*/@(portal|comments|signup-form|search).json

📄 CodeRabbit inference engine (AGENTS.md)

Public UI translations must use separate namespaces (portal.json, comments.json, signup-form.json, search.json) per locale

Files:

  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh/comments.json
ghost/i18n/locales/*/*.json

📄 CodeRabbit inference engine (AGENTS.md)

All translations must be centralized under ghost/i18n/locales/{locale}/{namespace}.json

Files:

  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh/comments.json
ghost/i18n/locales/*/@(ghost|portal|signup-form|comments|search).json

📄 CodeRabbit inference engine (AGENTS.md)

Only the documented namespaces (ghost, portal, signup-form, comments, search) should be used for i18n files

Files:

  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh/comments.json
🧠 Learnings (7)
📓 Common learnings
Learnt from: CR
PR: TryGhost/Ghost#0
File: AGENTS.md:0-0
Timestamp: 2025-10-09T17:25:12.439Z
Learning: Applies to ghost/i18n/locales/*/@(portal|comments|signup-form|search).json : Public UI translations must use separate namespaces (portal.json, comments.json, signup-form.json, search.json) per locale
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: CR
PR: TryGhost/Ghost#0
File: AGENTS.md:0-0
Timestamp: 2025-10-09T17:25:12.439Z
Learning: Applies to ghost/i18n/locales/*/@(ghost|portal|signup-form|comments|search).json : Only the documented namespaces (ghost, portal, signup-form, comments, search) should be used for i18n files
📚 Learning: 2025-07-29T05:18:41.313Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/ghost.json:25-26
Timestamp: 2025-07-29T05:18:41.313Z
Learning: In Ghost's Traditional Chinese localization, when source English text is modified (such as removing words like "safely"), the corresponding Chinese translations should be updated to match. For example, if "safely" is removed from English security-related messages, the corresponding "放心" should also be removed from the Chinese translation to maintain translation accuracy.

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh/portal.json
  • ghost/i18n/locales/zh/comments.json
📚 Learning: 2025-07-29T05:24:43.780Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:107-108
Timestamp: 2025-07-29T05:24:43.780Z
Learning: In Ghost's Traditional Chinese localization for portal.json, when translating membership restriction messages, "目前不接受此 email 網域的會員申請" is preferred over "此 email 網域的註冊目前不接受會員登記" as it provides better sentence flow and uses more natural phrasing while maintaining the same meaning.

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:28:28.664Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/portal.json:143-144
Timestamp: 2025-07-29T05:28:28.664Z
Learning: In Ghost's Traditional Chinese localization, when translating signup/registration restriction messages, it's important to consider the specific context (e.g., member signup vs. general signup) to choose the most appropriate terminology. For member signup contexts, "新會員註冊" (new member registration) is more contextually accurate than just "註冊" (registration).

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-10-01T20:13:20.920Z
Learnt from: tommywong-theinitium
PR: TryGhost/Ghost#25030
File: ghost/i18n/locales/zh/ghost.json:28-31
Timestamp: 2025-10-01T20:13:20.920Z
Learning: In Ghost's localization files, "More like this" and "Less like this" are labels for thumbs-up/thumbs-down feedback buttons at the bottom of email newsletters, not features to show similar content. Therefore, translations should reflect the "like/dislike" feedback action rather than "show more/less similar content".

Applied to files:

  • ghost/i18n/locales/zh-Hant/portal.json
📚 Learning: 2025-07-29T04:57:10.163Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:11-11
Timestamp: 2025-07-29T04:57:10.163Z
Learning: In Ghost's Traditional Chinese localization, the "Add your expertise" label appears as a link in comments when expertise is not yet provided, specifically to request additional professional background information from commenters. The translation should reflect this context of inviting additional information rather than just adding new information.

Applied to files:

  • ghost/i18n/locales/zh/portal.json
📚 Learning: 2025-07-29T05:08:05.874Z
Learnt from: kasnol
PR: TryGhost/Ghost#24523
File: ghost/i18n/locales/zh-Hant/comments.json:45-46
Timestamp: 2025-07-29T05:08:05.874Z
Learning: For Traditional Chinese localization in Ghost's comments.json, "Oldest" should be translated as "最早" (not "最初") when used in comment sorting selectors, as "最早" better conveys the temporal sorting context.

Applied to files:

  • ghost/i18n/locales/zh/comments.json
🔇 Additional comments (1)
ghost/i18n/locales/zh/portal.json (1)

21-21: Good fix: placeholder preserved in email notice.

Reinserting {submittedEmailOrInbox} is correct and preserves runtime substitution.

As per coding guidelines

"If a newsletter is flagged as spam, emails are automatically disabled for that address to make sure you no longer receive any unwanted messages.": "如果有電子報被標記為垃圾郵件,您的 email 地址將自動停止接收該電子報,以確保您不再收到任何不需要的訊息。",
"Help! I'm not receiving emails": "求助!我沒有收到電子郵件",
"Here are a few other sites you may enjoy.": "以下是您或許也有興趣的其他網站。",
"If a newsletter is flagged as spam, emails are automatically disabled for that address to make sure you no longer receive any unwanted messages.": "如果有電子報被標記為垃圾郵件,您的電子郵箱地址將自動停止接收該電子報,以確保您不再收到任何不需要的訊息。",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use “電子郵件地址” for Traditional Chinese

“電子郵箱地址” is Mainland usage and inconsistent with the rest of zh-Hant. Please replace with「電子郵件地址」in both strings.

Also applies to: 202-202

🤖 Prompt for AI Agents
In ghost/i18n/locales/zh-Hant/portal.json around line 95 (and also line 202),
replace the Mainland term “電子郵箱地址” with the Traditional Chinese preferred term
“電子郵件地址” so the translation is consistent with zh-Hant conventions; update both
affected strings to use 「電子郵件地址」 and verify there are no other occurrences of
“電子郵箱地址” in this file.

Comment on lines +10 to +11
"Add reply": "回复",
"Add your expertise": "添加您的专业背景",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Differentiate “Add reply” from “Reply”.

Both Line 10 (“Add reply”) and Line 52 (“Reply”) now read “回复”, erasing the distinction the UI needs between initiating a reply and submitting one. Users will see duplicate labels, which is confusing. Please reintroduce the “Add” nuance, e.g. “添加回复”.

🤖 Prompt for AI Agents
In ghost/i18n/locales/zh/comments.json around lines 10 to 11, the translation
for "Add reply" currently duplicates "Reply" ("回复") and erases the UI
distinction; change the value for "Add reply" to "添加回复" (keeping the existing
"Reply": "回复" entry unchanged) so the UI shows distinct labels for initiating
vs. submitting a reply, and validate the JSON after editing.

Comment on lines +63 to +65
"Email newsletter settings updated": "新闻信设定已更新",
"Email preferences": "电子邮件偏好设置",
"Email preferences updated.": "",
"Email preferences updated.": "电子邮件偏好已更新",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Unify “设置” terminology for Simplified Chinese.

Use “设置” consistently (not “设定”) and match the noun phrase in Line 64.

-    "Email newsletter settings updated": "新闻信设定已更新",
+    "Email newsletter settings updated": "新闻信设置已更新",
@@
-    "Email preferences updated.": "电子邮件偏好已更新",
+    "Email preferences updated.": "电子邮件偏好设置已更新",

Based on learnings

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Email newsletter settings updated": "新闻信设定已更新",
"Email preferences": "电子邮件偏好设置",
"Email preferences updated.": "",
"Email preferences updated.": "电子邮件偏好已更新",
"Email newsletter settings updated": "新闻信设置已更新",
"Email preferences": "电子邮件偏好设置",
"Email preferences updated.": "电子邮件偏好设置已更新",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh/portal.json around lines 63 to 65, the translation for
"Email newsletter settings updated" uses "设定" instead of the preferred "设置",
causing inconsistency with the noun phrase used on line 64; update the value to
use "设置" (e.g., change "新闻信设定已更新" to "新闻信设置已更新") so terminology matches the
adjacent "电子邮件偏好设置".

"If a newsletter is flagged as spam, emails are automatically disabled for that address to make sure you no longer receive any unwanted messages.": "如果某份新闻信被标记为垃圾邮件,系统将自动禁用该地址的邮件接收功能,确保您不再收到任何不需要的消息。",
"If the spam complaint was accidental, or you would like to begin receiving emails again, you can resubscribe to emails by clicking the button on the previous screen.": "如果误标记为垃圾邮件,或者您希望再次开启邮件接收,您可以通过点击上一页的按钮重新订阅。",
"If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,当前订阅在{periodEnd}依旧有效。",
"If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,您仍可在 {periodEnd} 之前访问内容。",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove extra space before placeholder.

Chinese sentences don’t need a space before {periodEnd}.

-    "If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,您仍可在 {periodEnd} 之前访问内容。",
+    "If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,您仍可在{periodEnd}之前访问内容。",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,您仍可在 {periodEnd} 之前访问内容。",
"If you cancel your subscription now, you will continue to have access until {periodEnd}.": "如果现在取消订阅,您仍可在{periodEnd}之前访问内容。",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh/portal.json around line 97, the translated string
contains an extra space before the {periodEnd} placeholder; remove the space so
the placeholder directly follows the preceding character, resulting in
"如果现在取消订阅,您仍可在{periodEnd}之前访问内容。".

"If you have a corporate or government email account, reach out to your IT department and ask them to allow emails to be received from {senderEmail}": "如果您使用公司或者政府邮件账户,请联系相应IT部门以允许从{senderEmail}接收邮件。",
"If you would like to start receiving emails again, the best next steps are to check your email address on file for any issues and then click resubscribe on the previous screen.": "如果您希望重新开始接收邮件,接下来最好先检查存档的电子邮件地址,然后在之前的页面点击重新订阅。",
"If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果没有收到订阅快报,请检查以下事项。",
"If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果没有收到订阅了的新闻信,请检查以下事项。",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Polish phrasing: “订阅的” instead of “订阅了的”.

More natural Simplified Chinese.

-    "If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果没有收到订阅了的新闻信,请检查以下事项。",
+    "If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果没有收到订阅的新闻信,请检查以下事项。",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果没有收到订阅了的新闻信,请检查以下事项。",
"If you're not receiving the email newsletter you've subscribed to, here are a few things to check.": "如果没有收到订阅的新闻信,请检查以下事项。",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh/portal.json around line 100, the translated string uses
the awkward phrasing “订阅了的”; replace it with the more natural “订阅的” so the value
becomes: "如果没有收到订阅的新闻信,请检查以下事项。". Ensure spacing and punctuation match the
existing JSON style and that the change preserves valid JSON quoting and comma
placement.

Comment on lines +119 to +121
"Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误 (bounce)",
"No member exists with this e-mail address.": "没有会员使用此电子邮箱地址。",
"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮箱地址。请先注册。",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Standardize “电子邮件地址” and add missing period.

  • Finish the sentence in Line 119 with “。”.
  • Use “电子邮件地址” consistently (Line 104 sets the precedent).
-    "Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误 (bounce)",
+    "Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误(bounce)。",
@@
-    "No member exists with this e-mail address.": "没有会员使用此电子邮箱地址。",
+    "No member exists with this e-mail address.": "没有会员使用此电子邮件地址。",
-    "No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮箱地址。请先注册。",
+    "No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮件地址。请先注册。",

Based on learnings

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误 (bounce)",
"No member exists with this e-mail address.": "没有会员使用此电子邮箱地址",
"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮箱地址。请先注册。",
"Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "您账户的新闻信被禁用的可能原因有两个:先前的电子邮件被标记为垃圾邮件,或者发送邮件遇到永久错误bounce)。",
"No member exists with this e-mail address.": "没有会员使用此电子邮件地址",
"No member exists with this e-mail address. Please sign up first.": "没有会员使用此电子邮件地址。请先注册。",
🤖 Prompt for AI Agents
In ghost/i18n/locales/zh/portal.json around lines 119 to 121, finish the
sentence on line 119 by adding a closing Chinese period “。” to the translation
for the newsletters note, and replace the term “电子邮箱地址” with the standardized
“电子邮件地址” in lines 120 and 121 so they match the precedent set at line 104;
ensure the rest of the punctuation remains correct after the replacements.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

affects:i18n community [triage] Community features and bugs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants