2025-04-28 09:53:53 -04:00
|
|
|
import { langs } from '$lib/constants';
|
2025-04-28 16:56:04 +02:00
|
|
|
import { eventManager } from '$lib/managers/event-manager.svelte';
|
2025-04-28 14:48:33 -04:00
|
|
|
import { lang } from '$lib/stores/preferences.store';
|
2025-04-28 09:53:53 -04:00
|
|
|
|
|
|
|
|
class LanguageManager {
|
2025-04-28 14:48:33 -04:00
|
|
|
constructor() {
|
|
|
|
|
eventManager.on('app.init', () => lang.subscribe((lang) => this.setLanguage(lang)));
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-28 09:53:53 -04:00
|
|
|
rtl = $state(false);
|
|
|
|
|
|
|
|
|
|
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('language.change', item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const languageManager = new LanguageManager();
|