feat: release 1.5.2 - bilingual UI (en/zh) and local start scripts

Ship the merged dictionary layer as 1.5.2. Every user-facing string now
resolves through the en/zh dictionaries instead of hardcoded English, with
a language switcher in the header and local setup/start scripts for the
first-run path.

Docs: docs/changelogs/2026-09-16-bilingual-ui.md
This commit is contained in:
Benjiyaya
2026-09-16 03:41:41 +08:00
parent 035a53333b
commit c6ef5e7204
4 changed files with 39 additions and 3 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "calliope-web",
"version": "1.5.1",
"version": "1.5.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "calliope-web",
"version": "1.5.1",
"version": "1.5.2",
"dependencies": {
"@tanstack/svelte-query": "^5.66.0",
"@types/three": "0.185.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "calliope-web",
"version": "1.5.1",
"version": "1.5.2",
"private": true,
"scripts": {
"dev": "vite dev",
@@ -0,0 +1,35 @@
# Calliope 1.5.2 — bilingual UI (English / 中文) and one-command local start
Every user-facing string used to be hardcoded English, spread across ~60
components — so a Chinese-speaking user saw an English UI no matter how the app
was configured, and there was no single place to change a label. This release
routes the whole interface through a dictionary layer with a language switcher
in the header.
## What changed
- **Full en/zh dictionary** — 1001 keys, mirrored 1:1 between `en.ts` and
`zh.ts`. Both are typed against `Dict` (`typeof en`), so the compiler rejects
a translation that is missing a key.
- **Every component wired through `t()`** — nav rail, canvas, projects, story,
assets, script, queue, the video workspace, Build Scene, settings, agent chat,
toasts, and the error paths. No hardcoded English copy remains in the UI.
- **Language switcher in the header** — English / 中文. The choice is stored in
`localStorage` (`calliope-lang`) and applied on reload; a missing or
unrecognized value falls back to English.
- **Placeholder interpolation** — `t('key', { name: … })` substitutes `{name}`,
with a `count` shorthand that also fills `{n}`, the convention most
count-bearing strings use.
- **Genre / tone / duration options** moved into `formOptions.ts`, mapping the
English values the backend stores onto dictionary keys — so stored project
data keeps working regardless of the display language.
- **Local start/stop scripts** — `setup.bat` (idempotent first-time install),
`start.bat` (two visible windows), `start-bg.bat` (background, output to
`logs/`), and `stop.bat`.
## Upgrade
No migration and no new dependencies. `git pull`, then reload the frontend — an
`npm install` in `calliope-web/` is only needed if you are coming from an older
release. The UI defaults to English; switch to 中文 with the dropdown in the
header.
+1
View File
@@ -2,6 +2,7 @@
Dated notes for GitHub releases. Newest first.
- [2026-09-16 bilingual UI](./2026-09-16-bilingual-ui.md) — en/zh dictionary across every component; header language switcher; local start scripts (1.5.2)
- [2026-09-13 clip shot brief](./2026-09-13-clip-shot-brief.md) — per-clip brief in the Video composer; two-column Video stage (1.5.1)
- [2026-09-10 Build Scene + scene → clips](./2026-09-10-build-scene-clips.md) — 3D blockout composer; vision/doc input; 1 scene : N shot clips; faithful scripts (1.5.0)
- [2026-09-07 chunking + cards](./2026-09-07-chunking-cards.md) — Story/script generate in chunks; ask_user cards appear (1.4.1)