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:
Generated
+2
-2
@@ -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,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.
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user