refactor(channels): make built-in channels self-contained (#4908)
* refactor(channels): own setup and instance contracts * refactor(channels): isolate management contracts * refactor(channels): normalize activation contracts * fix(channels): enforce management contracts * refactor(channels): finish setup ownership migration * fix(channels): harden management contracts * fix(channels): enforce lazy loading and runtime ownership * fix(feishu): make multi-instance startup idempotent * fix(webui): render channel setup contracts cleanly * fix(feishu): stop websocket clients cleanly * fix(channels): enforce persistence and activation gates * fix(channels): preserve global feature action scope * fix(channels): apply defaults for single plugins * fix(channels): enforce management contract boundaries * refactor(feishu): remove identity helper indirection * fix(channels): preserve management setup contracts * refactor(channels): generalize instance settings UI * refactor(channels): package channel plugins with web UI metadata * refactor(channels): make built-ins self-contained packages * test(channels): colocate tests with channel packages * fix(dingtalk): use official brand icon * feat(channels): colocate webui translations * docs(channels): clarify plugin ownership * test(exec): remove output wait race * refactor(channels): unify plugin descriptors * fix(channels): enforce descriptor-owned contracts * refactor(channels): finish package-owned plugin setup * refactor(channels): use repository-owned packages only * fix(channels): self-describe dependencies and runtime state * fix(channels): warn about legacy entry points
This commit is contained in:
+16
-11
@@ -1,6 +1,11 @@
|
||||
import i18n from "i18next";
|
||||
import { initReactI18next } from "react-i18next";
|
||||
|
||||
import {
|
||||
channelLocaleNamespaces,
|
||||
channelLocaleResources,
|
||||
} from "@/channel-plugins/locale-registry";
|
||||
|
||||
import {
|
||||
applyDocumentLocale,
|
||||
defaultLocale,
|
||||
@@ -24,16 +29,16 @@ import viCommon from "./locales/vi/common.json";
|
||||
import idCommon from "./locales/id/common.json";
|
||||
|
||||
export const resources = {
|
||||
en: { common: enCommon },
|
||||
"zh-CN": { common: zhCNCommon },
|
||||
"zh-TW": { common: zhTWCommon },
|
||||
fr: { common: frCommon },
|
||||
ja: { common: jaCommon },
|
||||
ko: { common: koCommon },
|
||||
es: { common: esCommon },
|
||||
"pt-BR": { common: ptBRCommon },
|
||||
vi: { common: viCommon },
|
||||
id: { common: idCommon },
|
||||
en: { common: enCommon, ...channelLocaleResources("en") },
|
||||
"zh-CN": { common: zhCNCommon, ...channelLocaleResources("zh-CN") },
|
||||
"zh-TW": { common: zhTWCommon, ...channelLocaleResources("zh-TW") },
|
||||
fr: { common: frCommon, ...channelLocaleResources("fr") },
|
||||
ja: { common: jaCommon, ...channelLocaleResources("ja") },
|
||||
ko: { common: koCommon, ...channelLocaleResources("ko") },
|
||||
es: { common: esCommon, ...channelLocaleResources("es") },
|
||||
"pt-BR": { common: ptBRCommon, ...channelLocaleResources("pt-BR") },
|
||||
vi: { common: viCommon, ...channelLocaleResources("vi") },
|
||||
id: { common: idCommon, ...channelLocaleResources("id") },
|
||||
} as const;
|
||||
|
||||
export function currentLocale(): SupportedLocale {
|
||||
@@ -52,7 +57,7 @@ if (!i18n.isInitialized) {
|
||||
lng: resolveInitialLocale(),
|
||||
fallbackLng: fallbackLocale,
|
||||
defaultNS: "common",
|
||||
ns: ["common"],
|
||||
ns: ["common", ...channelLocaleNamespaces()],
|
||||
interpolation: {
|
||||
escapeValue: false,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user