diff --git a/README.md b/README.md index 7c660b3..976c28f 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ The rest of the shortener: - **Labels from the page title.** A link created without a label gets the destination page's title fetched in the background, with private and internal hosts refused. - **QR codes** as SVG for any slug, from the admin UI, the API, the SDKs and MCP. Scans are tracked separately from link clicks. - **Edge redirects.** Slug lookups are cached in Workers KV in front of D1, and click recording runs after the redirect is sent. -- **Admin dashboard** in English, Indonesian and Swedish, with three themes, per-link and per-bundle analytics, API key management and settings. +- **Admin dashboard** in four languages (see [`src/i18n/`](src/i18n/) for the set), with three themes, per-link and per-bundle analytics, API key management and settings. - **Browser extension** for Chrome and Firefox that shortens the current tab against your own deployment. Source and store status in [browser-extensions/README.md](browser-extensions/README.md). - **One-click deploy** with automatic provisioning of the database and KV namespace, and migrations that the Worker applies on its first request. diff --git a/src/__tests__/handler/admin-assets.test.ts b/src/__tests__/handler/admin-assets.test.ts index a18b25e..104b644 100644 --- a/src/__tests__/handler/admin-assets.test.ts +++ b/src/__tests__/handler/admin-assets.test.ts @@ -10,6 +10,7 @@ import { SELF } from "cloudflare:test"; import { applyMigrations, resetData } from "../setup"; import { adminStyles } from "../../styles"; import id from "../../i18n/id"; +import zh from "../../i18n/zh"; function req(path: string, headers: Record = {}): Request { return new Request(`https://shrtnr.test${path}`, { headers }); @@ -22,7 +23,7 @@ async function pageHtml(path: string, headers?: Record): Promise } const STYLESHEET = //; -const SCRIPT = /