makeplane / makeplane/plane

[WEB] zh-CN greeting spliced from fragments + more hardcoded UI strings (i18n batch 3)

Open
#9,797 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
59.6k
Forks
5.8k
Avg merge
1d 22h
Merged PRs (30d)
49

Description

Description

Third pass of zh-CN i18n completions, follow-up to #9781 / #9782.

1. Greeting splicing bug

apps/web/core/components/home/user-greetings.tsx and apps/web/core/components/user/user-greetings.tsx render {t("good")} {t(greeting)}. This works for English ("Good afternoon") but concatenates nonsense in Chinese: zh-CN values are 「早上」+「下午」, producing 「早上 下午, 」.

Fix: replace the fragment keys good/morning/afternoon/evening with whole-phrase keys good_morning/good_afternoon/good_evening (en: "Good morning" etc.; zh-CN: 「早上好」「下午好」「晚上好」; zh-TW: 「早安」「午安」「晚安」; other locales mirror English per the sync-check contract). Both components now make a single t() call. The old keys have no other references and are removed.

2. More hardcoded English strings routed through i18n

User-facing leftovers found by static scan, high-traffic surfaces only:

  • Module link modal (title, labels, placeholders, buttons, toasts — via existing common.* shared keys, mirroring the issue-detail link modal)
  • Cycles "Transfer work items" modal: title, search placeholder, empty state, loading state, success/error toasts (new cycle.transfer_issues_modal.*)
  • Delete/leave project confirmation modals: title, description, instructions (ICU {name}/{value}), placeholders, buttons, toasts (new project.modals.*). The typed confirmation literals (delete my project, Leave Project) intentionally stay English — they are compared against code constants.
  • Project state create/update form: placeholders, cancel button, required validation
  • Inbox issue properties: assignee / due date dropdown placeholders (new inbox_issue.properties.*)
  • Pages list search input (new page.page_list.search_placeholder)
  • Search boxes in cycles/modules/views headers, views filter panel, bulk-delete issues modal, inbox duplicate picker (reuse common.search.label)
Type of Change
  • Bug fix (non-breaking change which fixes an issue)
Environment
  • Plane version: preview (post v1.4.2)
  • Browser: any (locale-dependent)
Checklist
  • I have searched existing issues to avoid duplicates (follow-up to #9781)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with apps/web/core/components/home/user-greetings.tsx and apps/web/core/components/user/user-greetings.tsx, then search the web surfaces listed in the issue for the remaining hardcoded strings and old greeting keys. Check the locale entries against the stated English, zh-CN, and zh-TW wording and the sync-check contract; done means the listed UI text is routed through i18n and the obsolete keys have no references.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend, internationalization, localization
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.