mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-05-09 05:35:30 +02:00
Labels
No labels
A1
automated
automated
bug
bug
Closed due to inactivity
contrib
dependencies
dependencies
duplicate
enhancement
feedback
hold
invalid
Notes
P1S
pull-request
security
security
ThumbsUp
user-report
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/bambuddy#1148
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/maziggy/bambuddy/pull/1025
Author: @Minidoracat
Created: 4/18/2026
Status: ✅ Merged
Merged: 4/19/2026
Merged by: @maziggy
Base:
dev← Head:feature/i18n-zh-tw-and-zh-cn-sync📝 Commits (5)
4d12f10fix(i18n): sync zh-CN to match en structure53fafeffeat(i18n): add zh-TW locale and enforce 3-way parity969e035Merge branch 'dev' into feature/i18n-zh-tw-and-zh-cn-syncb378be8Merge branch 'dev' into feature/i18n-zh-tw-and-zh-cn-syncf17560cMerge branch 'dev' into feature/i18n-zh-tw-and-zh-cn-sync📊 Changes
5 files changed (+5322 additions, -4 deletions)
View changed files
📝
frontend/package.json(+3 -2)➕
frontend/scripts/check-i18n-parity.mjs(+174 -0)📝
frontend/src/i18n/index.ts(+4 -1)📝
frontend/src/i18n/locales/zh-CN.ts(+80 -1)➕
frontend/src/i18n/locales/zh-TW.ts(+5061 -0)📄 Description
Fixes #1017
Summary
frontend/src/i18n/locales/zh-TW.ts— full Traditional Chinese (Taiwan) locale, 4183 leaf keys aligned toen.ts. Uses Taiwan-standard IT terminology (印表機 / 佇列 / 儲存 / 網路 / 檔案 / 韌體 / 守護程式 / API 權杖 / NFC 讀卡機 / IP 位址 / 取消註冊 / 通知提供者).frontend/src/i18n/locales/zh-CN.tswithen.ts— 74 missing keys added (coveringlogin.resetPassword,printers.firmwareModalbadges,settings.spoolbuddydevice management,settings.tabs.spoolbuddy,spoolbuddy.settingssystem config), plus 1 placeholder bug fix:fileManager.uploadFailedhad a stray{{count}}copied from the adjacentzipFilesFailedkey; corrected to'上传失败'matching en's'Upload failed'.zh-TWinfrontend/src/i18n/index.ts— 4 sites:import,resources,supportedLngs,availableLanguages.frontend/scripts/check-i18n-parity.mjs— TypeScript Compiler API-based 3-way parity gate:{{placeholder}}set equality per leaf_plural/_one/_othersuffix presence + reverse_oneguardexport default, parse errors, non-string leaves, unsupported property kinds) rather than silently passing.check:i18nintotest:runinfrontend/package.jsonso thefrontend-testsCI job (ci.yml:227runsnpm run test:run) gates future locale drift without any workflow changes.Commit structure
Two focused commits (can be cherry-picked independently):
fix(i18n): sync zh-CN to match en structure— only toucheszh-CN.tsfeat(i18n): add zh-TW locale and enforce 3-way parity—zh-TW.ts+index.ts+check-i18n-parity.mjs+package.jsonVerification
npx tsc --noEmitnpm run lintnpm run test:runcheck:i18ngreennpm run buildnode scripts/check-i18n-parity.mjs繁體中文 (Chinese (Traditional)); UI renders with Taiwan usageScreenshots
Settings page with
繁體中文 (Chinese (Traditional))selected — shows the new option in the language picker and Taiwan-style terminology across navigation, field labels, and action buttons:Out of scope (follow-up issues recommended)
frontend/src/__tests__/i18n/locales.test.tsto all locales — current test only checks en↔de and uses.sizecomparison instead of set equality (pre-existing bug). Extending would require fixing drift in de/fr/ja/it/pt-BR first, which is beyond issue #1017.ArchivesPage.tsx— noticed during smoke test thatArchivestitle,All Printers/All Materials/All Files/Hide Failed/Export/Select/Upload 3MF(lines ~2966, 3147, 3164, 3179, 3206) are not wrapped int(). Should be tracked as a separate i18n hardcoded-strings issue so they can be wired through all locales.Drift policy
This PR targets
upstream/devat the time of opening. If upstream/dev moves forward during review, I will not rebase this branch — upstream maintainer can merge normally, or I'll open a separate sync PR if conflicts arise. This keeps the diff stable and review-focused.Documentation
No wiki PR required per
CONTRIBUTING.md— adding a UI language is not a new feature, config key, URL, API, or install/upgrade flow change. TheavailableLanguagesarray ini18n/index.tsautomatically drives the existing language picker inSettingsPage.tsx(two<select>consumers at lines 1339 and 3060) — no UI code changes needed.Review history
Locale changes reviewed via three rounds of independent Codex review (APPROVED on round 3 after addressing
backToLoginphrasing and unifying提供者terminology) and multi-agent PR review (code-reviewer / pr-test-analyzer / silent-failure-hunter / comment-analyzer) covering CLAUDE.md compliance, test coverage strategy, silent-failure hardening, and comment accuracy.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.