@sejhey/svelte-i18n
Version:
The SejHey i18n SDK for Svelte
29 lines (28 loc) • 1.05 kB
JavaScript
import { GetSejHeyCoreHelper } from '@sejhey/core-web';
import { getSejHeyContext } from './Context.js';
import { writable } from 'svelte/store';
const fallback = (key, params, defaultValue) => '';
export function useTranslate() {
const context = getSejHeyContext();
const helper = GetSejHeyCoreHelper(context.i18n);
// Create writable stores for reactive values
const t = writable(helper.getT() || fallback);
const currentLanguage = writable(helper.getLanguage() || '');
const changeLanguage = writable((lang) => {
helper.setLanguage(lang);
});
// Subscribe to provider rerender trigger
context.rerender.subscribe(() => {
t.set(helper.getT() || fallback);
currentLanguage.set(helper.getLanguage() || '');
});
return {
t,
currentLanguage: currentLanguage,
availableLanguages: helper.getLanguages(),
changeLanguage: changeLanguage,
onLanguageChanged: (callback) => {
helper.subscribeLanguageChanged(callback);
}
};
}