mirror of
https://github.com/immich-app/immich
synced 2026-08-29 13:15:45 +00:00
36 lines
803 B
TypeScript
36 lines
803 B
TypeScript
import { eventManager } from '$lib/managers/event-manager.svelte';
|
|
import { lang } from '$lib/stores/preferences.store';
|
|
import { langs } from '$lib/utils/i18n';
|
|
|
|
class LanguageManager {
|
|
constructor() {
|
|
eventManager.on({
|
|
AppInit: () => this.init(),
|
|
});
|
|
}
|
|
|
|
initialized = $state(false);
|
|
rtl = $state(false);
|
|
|
|
init() {
|
|
if (!this.initialized) {
|
|
this.initialized = true;
|
|
lang.subscribe((lang) => this.setLanguage(lang));
|
|
}
|
|
}
|
|
|
|
setLanguage(code: string) {
|
|
const item = langs.find((item) => item.code === code);
|
|
if (!item) {
|
|
return;
|
|
}
|
|
|
|
this.rtl = item.rtl ?? false;
|
|
|
|
document.body.setAttribute('dir', item.rtl ? 'rtl' : 'ltr');
|
|
|
|
eventManager.emit('LanguageChange', item);
|
|
}
|
|
}
|
|
|
|
export const languageManager = new LanguageManager();
|