Skip to content

fix(i18n): restore {templateName}/{templateType} in cs template toasts - #9848

Merged
vihar merged 1 commit into
makeplane:previewfrom
owgreen-dev:fix/i18n-cs-template-placeholders
Sep 17, 2026
Merged

vihar merged 1 commit into
makeplane:previewfrom
owgreen-dev:fix/i18n-cs-template-placeholders

Conversation

@owgreen-dev

@owgreen-dev owgreen-dev commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Three Czech template toast messages lost their interpolation variables in translation, so the toast can't say which template was created, changed or deleted.

key (packages/i18n/src/locales/cs/template.json) en cs before cs after
templates.toasts.create.success.message {templateName}, the {templateType} template, is now available… {templateName} byla úspěšně vytvořena… (no {templateType}) {templateName} ({templateType}) byla úspěšně vytvořena…
templates.toasts.update.success.message {templateName}, the {templateType} template, was changed. {templateName} byla úspěšně aktualizována… {templateName} ({templateType}) byla úspěšně aktualizována…
templates.toasts.delete.success.message {templateName}, the {templateType} template, has now been deleted… Šablona byla úspěšně smazána! (both dropped) Šablona {templateName} ({templateType}) byla úspěšně smazána!

Existing Czech wording kept; only the variables are restored (3 lines). Native speakers, feel free to rephrase — the point is just that both values render again.

Found with an open-source i18n placeholder checker I maintain (shipi18n); each string was checked by hand against en/template.json. Note the repo's i18n-sync-check CI verifies key parity but not placeholder parity, which is how these slipped through. Full scan for this repo: https://shipi18n.com/oss#plane

Summary by CodeRabbit

  • Bug Fixes
    • Updated Czech notifications for template creation, updates, and deletion to include the template name and type for clearer feedback.

@coldtea-pr-lens

coldtea-pr-lens Bot commented Sep 17, 2026 •

Copy link
Copy Markdown

◈ PR Lens

🟢 +0 new · 🟠 ~1 changed · 🔴 -0 removed · 0 flows · 1 file · commit 5c74502


Architecture

Architecture diagram for makeplane/plane at 5c74502

1 component touched across 1 lane.

Open the interactive canvas


Data flow

No data-flow sequence changed in this PR.


View

  • Architecture lens
  • Data flow lens
  • Expand every detail

Tip

The diagrams are links. Click one to open it on the canvas, then press W or click play to walk through the change.

🪧 More tips
  • Run npx skills add coldteadotai/pr-lens, then tell your coding agent: "Diagram the change you just made with PR Lens and attach it to the pull request."
  • Run npx @coldtea/pr-lens-cli analyze --base origin/main on a branch, then npx @coldtea/pr-lens-cli render .pr-lens/graph.json. Same lenses, your own model key, before the pull request exists.
  • Untick Architecture lens or Data flow lens under View to hide a diagram, or tick Expand every detail to open every section. The comment redraws in a few seconds.
  • Click the link under each diagram to open it on a canvas you can zoom, pan and step through.
  • Open a diagram on the canvas, then press W or click play to walk through the change one step at a time.
  • The CLI's render reads .github/pr-lens.yml and applies your renames, exclusions and lane pins at draw time.
  • Set github.laiyagushi.comment.collapsed: true in .github/pr-lens.yml to fold the comment behind one View architecture and data flow row. Drawing still runs on every push.
  • Add .github/workflows/pr-lens.yml with coldteadotai/pr-lens/packages/action@v0 and your model provider's key as its api-key to run PR Lens from your own CI. Any /chat/completions endpoint works.
  • Push a commit and the comment redraws for the new head. A slow older run never overwrites a newer one.
  • Switch GitHub to dark mode and the diagrams follow. The moving dots are this pull request's data in motion.

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

❤️ Share

@CLAassistant

CLAassistant commented Sep 17, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@coderabbitai

coderabbitai Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: fb2fb6cb-47aa-404e-87a3-e30b576bed3d

📥 Commits

Reviewing files that changed from the base of the PR and between d8dc816 and 5c74502.

📒 Files selected for processing (1)
  • packages/i18n/src/locales/cs/template.json

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The Czech template success messages now show the template name and type for create, update, and delete actions.

Changes

Czech template toast messages

Layer / File(s) Summary
Template toast interpolation
packages/i18n/src/locales/cs/template.json
Create and update messages now include {templateType} after {templateName}. The delete message now includes {templateName} and {templateType}.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 5c745

The Czech messages match the English interpolation contract, and the template namespace is loaded correctly.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: restoring the template name and type placeholders in Czech template toast messages.
Description check ✅ Passed The description explains the issue, lists all three affected translation keys, shows the before and after values, and describes the verification performed. It does not use the repository template head…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@vihar
vihar merged commit 174243b into makeplane:preview Sep 17, 2026
3 checks passed
@owgreen-dev

Copy link
Copy Markdown
Contributor Author

Thanks for the quick merge on this.

One thing I noticed while working out how those three slipped in: packages/i18n/scripts/sync-check.ts already covers key parity, cross-namespace collisions and path conflicts — but it never compares the {placeholders} inside the values, which is exactly the class this PR fixed (key parity was perfect for cs; the tokens inside were translated).

If you want that covered, it's one extra step in the workflow you already have — no API key, no account, runs offline:

# .github/workflows/i18n-sync-check.yml — after the existing check:sync step
      - name: i18n placeholder check
        run: >-
          npx @shipi18n/cli@2 check packages/i18n/src/locales -s en
          --severity 'untranslated=off,missing-key=off,orphan-key=off,empty-value=warning'

I ran exactly that against preview this morning: exit 0, zero errors across all 20 locales, so it goes green from day one and only fails on newly-introduced placeholder breakage. The severity flags are what keep it honest on your tree — untranslated is meaningless for ka-ge, and empty-value would otherwise flag ja/ko sso.…verify_domain.instructions.step_2.part_1, which is empty on purpose since both languages move the verb into part_3.

It does leave two warnings worth a look, if only for the next translation sync: ru workflows.toasts.enable_disable.{success,error}.title both carry {action}, while the English titles are plain Success / Error — looks like the message string got copied into title.

Happy to open the workflow change as a PR if it's useful, and equally happy if not.

Full scan for this repo: https://shipi18n.com/oss#plane

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants