Phase 002: rebrand to hermes-ui and consolidate i18n to zh/en
Removes the ekko / hermes-web-ui branding from the whole tree and drops eight locale files, so the project presents one name and one language pair. Data compatibility is deliberate, not accidental: DB filenames, the JWT audience, and skill manifest ownership all still recognise their pre-rename values so existing deployments under ~/.hermes-web-ui keep working without a re-login or a re-injection. scripts/harness-check.mjs now scans for the legacy strings and fails the build on any new occurrence, with an explicit allow-list (and reasons) for the compatibility paths that must keep them.
This commit is contained in:
@@ -4,33 +4,21 @@ import type { SupportedLocale } from './messages'
|
||||
|
||||
const saved = localStorage.getItem('hermes_locale')
|
||||
|
||||
function normalize(tag: string): SupportedLocale {
|
||||
return tag.toLowerCase().startsWith('zh') ? 'zh' : 'en'
|
||||
}
|
||||
|
||||
function resolveLocale(saved: string | null): SupportedLocale {
|
||||
if (saved && (supportedLocales as readonly string[]).includes(saved)) {
|
||||
return saved as SupportedLocale
|
||||
}
|
||||
|
||||
function normalize(tag: string): SupportedLocale | null {
|
||||
const lower = tag.toLowerCase()
|
||||
if (lower.startsWith('zh')) {
|
||||
const isTraditional =
|
||||
lower.includes('hant') ||
|
||||
lower.includes('-tw') ||
|
||||
lower.includes('-hk') ||
|
||||
lower.includes('-mo')
|
||||
return isTraditional ? 'zh-TW' : 'zh'
|
||||
}
|
||||
const short = tag.slice(0, 2)
|
||||
if ((supportedLocales as readonly string[]).includes(tag)) return tag as SupportedLocale
|
||||
if ((supportedLocales as readonly string[]).includes(short)) return short as SupportedLocale
|
||||
return null
|
||||
}
|
||||
// A locale stored before the zh/en-only consolidation (for example 'zh-TW'
|
||||
// or 'ja') is no longer supported; remap it instead of dropping to English.
|
||||
if (saved) return normalize(saved)
|
||||
|
||||
for (const lang of navigator.languages) {
|
||||
const resolved = normalize(lang)
|
||||
if (resolved) return resolved
|
||||
}
|
||||
|
||||
return 'en'
|
||||
const preferred = navigator.languages[0]
|
||||
return preferred ? normalize(preferred) : 'en'
|
||||
}
|
||||
|
||||
function setHtmlLang(locale: SupportedLocale) {
|
||||
|
||||
Reference in New Issue
Block a user