Skip to content

Commit a3bd994

Browse files
committed
fix: sync language document attribute
1 parent 629de59 commit a3bd994

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/i18n/store.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { SetOptional } from 'type-fest';
22
import { createStore } from 'zustand/vanilla';
3+
import { subscribeWithSelector } from 'zustand/middleware';
34

45
import libui from '@/i18n/translations/libui.json';
56

@@ -26,15 +27,17 @@ export type TranslationStore = {
2627
translations: Translations;
2728
};
2829

29-
export const translationStore = createStore<TranslationStore>((set) => ({
30-
changeLanguage(language) {
31-
set({ resolvedLanguage: language });
32-
},
33-
fallbackLanguage: 'en',
34-
isInitialized: false,
35-
resolvedLanguage: 'en',
36-
translations: { libui }
37-
}));
30+
export const translationStore = createStore(
31+
subscribeWithSelector<TranslationStore>((set) => ({
32+
changeLanguage(language) {
33+
set({ resolvedLanguage: language });
34+
},
35+
fallbackLanguage: 'en',
36+
isInitialized: false,
37+
resolvedLanguage: 'en',
38+
translations: { libui }
39+
}))
40+
);
3841

3942
export const i18n: I18N = {
4043
init: ({ defaultLanguage, fallbackLanguage, translations }: InitOptions = {}) => {
@@ -43,6 +46,12 @@ export const i18n: I18N = {
4346
console.error('Cannot reinitialize translations store');
4447
return;
4548
}
49+
translationStore.subscribe(
50+
(state) => state.resolvedLanguage,
51+
(resolvedLanguage) => {
52+
document.documentElement.lang = resolvedLanguage;
53+
}
54+
);
4655
translationStore.setState({
4756
fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,
4857
isInitialized: true,

0 commit comments

Comments
 (0)