feat(05-04): route strings (10 keys en+ms) + @araharah/routing workspace dep (GREEN)
- 10 ShellStrings keys per the binding UI-SPEC copy table (routeRegister, routeDiffFastest/Slower templates, pending card quartet, ctaSearchAgain, ariaRouteAlternatives/Chip templates) — verbatim en + ms - copy gate: COPY1 floor 40 + route-key pins, COPY5 scans web/src/route, COPY7 pins the verbatim pending/CTA/template copy - web depends on @araharah/routing (lockfile settled)
This commit is contained in:
Generated
+1
@@ -3980,6 +3980,7 @@
|
|||||||
"web": {
|
"web": {
|
||||||
"name": "@araharah/web",
|
"name": "@araharah/web",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@araharah/routing": "*",
|
||||||
"@araharah/search": "*",
|
"@araharah/search": "*",
|
||||||
"@araharah/theme": "*",
|
"@araharah/theme": "*",
|
||||||
"maplibre-gl": "^6.15.0"
|
"maplibre-gl": "^6.15.0"
|
||||||
|
|||||||
+2
-1
@@ -13,7 +13,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"maplibre-gl": "^6.15.0",
|
"maplibre-gl": "^6.15.0",
|
||||||
"@araharah/theme": "*",
|
"@araharah/theme": "*",
|
||||||
"@araharah/search": "*"
|
"@araharah/search": "*",
|
||||||
|
"@araharah/routing": "*"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"vite": "^8.3.5",
|
"vite": "^8.3.5",
|
||||||
|
|||||||
+41
-6
@@ -2,12 +2,13 @@
|
|||||||
* strings.ts — the Mini App shell's copy tokens.css (UI-SPEC §Copywriting Contract).
|
* strings.ts — the Mini App shell's copy tokens.css (UI-SPEC §Copywriting Contract).
|
||||||
* -------------------------------------------------------------------------------
|
* -------------------------------------------------------------------------------
|
||||||
* Every user-facing string the shell renders lives here and NOWHERE else —
|
* Every user-facing string the shell renders lives here and NOWHERE else —
|
||||||
* `web/src/ui/*` and `web/src/main.ts` import from this module, and the copy
|
* `web/src/ui/*`, `web/src/route/*` and `web/src/main.ts` import from this
|
||||||
* gate (web/test/copy-gate.test.mjs COPY1..COPY5) keeps it verbatim against
|
* module, and the copy gate (web/test/copy-gate.test.mjs COPY1..COPY7) keeps
|
||||||
* the approved UI-SPEC table in en + ms. Register labels (`BOOT-01 //`,
|
* it verbatim against the approved UI-SPEC table in en + ms. Register labels
|
||||||
* `BOOT-02 //`, `GEO // LOCATION`, `SYS // POSITION`) are instrument
|
* (`BOOT-01 //`, `BOOT-02 //`, `GEO // LOCATION`, `SYS // POSITION`, `ROUTE`,
|
||||||
* vocabulary: identical in both locales by design. Tone is clinical + honest
|
* `ROUTE // ROUTER`) are instrument vocabulary: identical in both locales by
|
||||||
* (D-01): plain statements of what is stored and what is not.
|
* design. Tone is clinical + honest (D-01): plain statements of what is
|
||||||
|
* stored and what is not.
|
||||||
*
|
*
|
||||||
* Locales: English default ("en") + Bahasa Melayu ("ms") — Phase 2 D-05
|
* Locales: English default ("en") + Bahasa Melayu ("ms") — Phase 2 D-05
|
||||||
* precedent, same pickLocale ms-prefix rule as bot/src/i18n/strings.ts.
|
* precedent, same pickLocale ms-prefix rule as bot/src/i18n/strings.ts.
|
||||||
@@ -45,6 +46,18 @@ export interface ShellStrings {
|
|||||||
destinationUnavailableBody: string;
|
destinationUnavailableBody: string;
|
||||||
addToHomeScreen: string;
|
addToHomeScreen: string;
|
||||||
homeScreenAlreadyAdded: string;
|
homeScreenAlreadyAdded: string;
|
||||||
|
routeRegister: string;
|
||||||
|
routeDiffFastest: string;
|
||||||
|
/** Template — {min}/{n} placeholders are replaced in code (instrument formats, not locale strings). */
|
||||||
|
routeDiffSlower: string;
|
||||||
|
routePendingRegister: string;
|
||||||
|
routePendingHeadline: string;
|
||||||
|
routePendingBody: string;
|
||||||
|
routePendingHint: string;
|
||||||
|
ctaSearchAgain: string;
|
||||||
|
ariaRouteAlternatives: string;
|
||||||
|
/** Template — {n}/{min}/{km} placeholders are replaced in code. */
|
||||||
|
ariaRouteChip: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Locale = "en" | "ms";
|
export type Locale = "en" | "ms";
|
||||||
@@ -82,6 +95,17 @@ export const strings: Record<Locale, ShellStrings> = {
|
|||||||
destinationUnavailableBody: "That place is not in this build. Search again from the bot.",
|
destinationUnavailableBody: "That place is not in this build. Search again from the bot.",
|
||||||
addToHomeScreen: "ADD TO HOME SCREEN",
|
addToHomeScreen: "ADD TO HOME SCREEN",
|
||||||
homeScreenAlreadyAdded: "Already on your home screen",
|
homeScreenAlreadyAdded: "Already on your home screen",
|
||||||
|
routeRegister: "ROUTE",
|
||||||
|
routeDiffFastest: "Fastest route",
|
||||||
|
routeDiffSlower: "+{min} MIN VS ROUTE {n}",
|
||||||
|
routePendingRegister: "ROUTE // ROUTER",
|
||||||
|
routePendingHeadline: "Routing not wired up yet",
|
||||||
|
routePendingBody:
|
||||||
|
"Routes currently cover known KL landmarks only. The general router ships later — your coordinates were never sent anywhere.",
|
||||||
|
routePendingHint: "Send /cari in the chat and pick another landmark.",
|
||||||
|
ctaSearchAgain: "SEARCH AGAIN",
|
||||||
|
ariaRouteAlternatives: "Alternative routes",
|
||||||
|
ariaRouteChip: "Route {n}: {min} minutes, {km} kilometres",
|
||||||
},
|
},
|
||||||
ms: {
|
ms: {
|
||||||
bootValidatingRegister: "BOOT-01 // SESSION",
|
bootValidatingRegister: "BOOT-01 // SESSION",
|
||||||
@@ -115,6 +139,17 @@ export const strings: Record<Locale, ShellStrings> = {
|
|||||||
destinationUnavailableBody: "Tempat itu tiada dalam binaan ini. Cari semula dari bot.",
|
destinationUnavailableBody: "Tempat itu tiada dalam binaan ini. Cari semula dari bot.",
|
||||||
addToHomeScreen: "TAMBAH KE SKRIN UTAMA",
|
addToHomeScreen: "TAMBAH KE SKRIN UTAMA",
|
||||||
homeScreenAlreadyAdded: "Sudah di skrin utama anda",
|
homeScreenAlreadyAdded: "Sudah di skrin utama anda",
|
||||||
|
routeRegister: "ROUTE",
|
||||||
|
routeDiffFastest: "Laluan terpantas",
|
||||||
|
routeDiffSlower: "+{min} MIN VS LALUAN {n}",
|
||||||
|
routePendingRegister: "ROUTE // ROUTER",
|
||||||
|
routePendingHeadline: "Penghalaan belum dipasang",
|
||||||
|
routePendingBody:
|
||||||
|
"Laluan buat masa ini meliputi mercu tanda KL yang diketahui sahaja. Penghala am akan datang kemudian — koordinat anda tidak pernah dihantar ke mana-mana.",
|
||||||
|
routePendingHint: "Hantar /cari dalam chat dan pilih mercu tanda lain.",
|
||||||
|
ctaSearchAgain: "CARI SEMULA",
|
||||||
|
ariaRouteAlternatives: "Laluan alternatif",
|
||||||
|
ariaRouteChip: "Laluan {n}: {min} minit, {km} kilometer",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user