core&ui: trigger i18n update event

This commit is contained in:
undefined committed 2024-10-17 11:03:39 +08:00
1 parent 0ff088a677
commit ad0b4bd63e
3 files changed
+9 -2

No files matched your search

+2 -2
View File
@@ -313,7 +313,7 @@ function executeMiddlewareStack(context: any, middlewares: { name: string, func:
return dispatch(0);
}
interface WebServiceConfig {
export interface WebServiceConfig {
keys: string[];
proxy: boolean;
cors?: string;
@@ -697,7 +697,7 @@ declare module 'cordis' {
}
}
export async function apply(ctx: Context, config) {
export async function apply(ctx: Context, config: WebServiceConfig) {
ctx.provide('server', undefined, true);
ctx.server = new WebService(ctx, config);
}
+6
View File
@@ -7,6 +7,11 @@ declare module '../context' {
i18n: I18nService;
}
}
declare module '../service/bus' {
interface EventMap {
'app/i18n/update': (lang: string) => void;
}
}
declare global {
interface String {
translate: (...languages: string[]) => string;
@@ -22,6 +27,7 @@ class I18nService extends Service {
this.ctx.effect(() => {
translations[lang] ||= [];
translations[lang].unshift(content);
this.ctx.emit('app/i18n/update', lang);
return () => {
translations[lang] = translations[lang].filter((i) => i !== content);
};
@@ -145,5 +145,6 @@ export async function apply(ctx: Context) {
ctx.on('system/setting', () => triggerHotUpdate());
ctx.on('app/watch/change', triggerHotUpdate);
ctx.on('app/watch/unlink', triggerHotUpdate);
ctx.on('app/i18n/update', debouncedBuildUI);
debouncedBuildUI();
}