Skip to content

Commit 5b23b0a

Browse files
authored
Fix downloading all languages (#528)
1 parent bfd03b5 commit 5b23b0a

File tree

2 files changed

+8
-41
lines changed

2 files changed

+8
-41
lines changed

frontend/src/entry.client.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {hydrate} from "@tanstack/react-query";
55
import {router} from "./router";
66
import {App} from "./App";
77
import {queryClient} from "./utilites/queryClient";
8-
import {getClientLocale} from "./locales.ts";
8+
import {dynamicActivateLocale, getClientLocale, getSupportedLocale} from "./locales.ts";
99

1010
declare global {
1111
interface Window {
@@ -18,6 +18,7 @@ if (window.__REHYDRATED_STATE__) {
1818
}
1919

2020
async function initClientApp() {
21+
dynamicActivateLocale(getSupportedLocale(getClientLocale()));
2122
// Determine if any of the initial routes are lazy
2223
const lazyMatches = matchRoutes(router, window.location)?.filter(
2324
(m) => m.route.lazy

frontend/src/locales.ts

Lines changed: 6 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,9 @@
1-
// @ts-ignore
2-
import {messages as en} from "./locales/en.po";
3-
// @ts-ignore
4-
import {messages as de} from "./locales/de.po";
5-
// @ts-ignore
6-
import {messages as fr} from "./locales/fr.po";
7-
// @ts-ignore
8-
import {messages as nl} from "./locales/nl.po";
9-
// @ts-ignore
10-
import {messages as pt} from "./locales/pt.po";
11-
// @ts-ignore
12-
import {messages as es} from "./locales/es.po";
13-
// @ts-ignore
14-
import {messages as zhCn} from "./locales/zh-cn.po";
15-
// @ts-ignore
16-
import {messages as zhHk} from "./locales/zh-hk.po";
17-
// @ts-ignore
18-
import {messages as ptBr} from "./locales/pt-br.po";
19-
// @ts-ignore
20-
import {messages as vi} from "./locales/vi.po";
211
import {i18n} from "@lingui/core";
222
import {t} from "@lingui/macro";
233

244
export type SupportedLocales = "en" | "de" | "fr" | "nl" | "pt" | "es" | "zh-cn" | "pt-br" | "vi" |"zh-hk";
255

26-
export const localeMessages: Record<string, any> = {
27-
en: en,
28-
de: de,
29-
fr: fr,
30-
nl: nl,
31-
pt: pt,
32-
es: es,
33-
"zh-cn": zhCn,
34-
"zh-hk": zhHk,
35-
"pt-br": ptBr,
36-
vi: vi,
37-
};
6+
export const availableLocales = ["en", "de", "fr", "nl", "pt", "es", "zh-cn", "zh-hk", "pt-br", "vi",];
387

398
export const localeToFlagEmojiMap: Record<SupportedLocales, string> = {
409
en: '🇬🇧',
@@ -85,24 +54,21 @@ export const getClientLocale = () => {
8554
};
8655

8756
export async function dynamicActivateLocale(locale: string) {
88-
try {
89-
const messages = localeMessages[locale] || localeMessages["en"];
90-
i18n.load(locale, messages);
57+
locale = availableLocales.includes(locale) ? locale : "en";
58+
const module = (await import(`./locales/${locale}.po`));
59+
i18n.load(locale, module.messages);
9160
i18n.activate(locale);
92-
} catch (error) {
93-
i18n.activate("en");
94-
}
9561
}
9662

9763
export const getSupportedLocale = (userLocale: string) => {
9864
const normalizedLocale = userLocale.toLowerCase();
9965

100-
if (localeMessages[normalizedLocale]) {
66+
if (availableLocales.includes(normalizedLocale)) {
10167
return normalizedLocale;
10268
}
10369

10470
const mainLanguage = normalizedLocale.split('-')[0];
105-
const mainLocale = Object.keys(localeMessages).find(locale => locale.startsWith(mainLanguage));
71+
const mainLocale = availableLocales.find(locale => locale.startsWith(mainLanguage));
10672
if (mainLocale) {
10773
return mainLocale;
10874
}

0 commit comments

Comments
 (0)