Skip to content

Commit d1f7238

Browse files
committed
feat: locale map
1 parent 6d6446e commit d1f7238

2 files changed

Lines changed: 84 additions & 6 deletions

File tree

frontend/antd/config-provider/config-provider.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,20 @@ import dayjs from 'dayjs';
1111
import { produce } from 'immer';
1212
import { getLocaleFromNavigator } from 'svelte-i18n';
1313

14-
import { getDefaultLocale, locales } from './locales';
14+
import { getDefaultLocale, locales, simpleLocaleMap } from './locales';
1515

1616
function formatLocale(locale: string | null) {
1717
if (!locale) {
1818
return 'en_US';
1919
}
20-
20+
let lang = 'en_US';
2121
const parts = locale.replace('-', '_').split('_');
22-
23-
if (parts.length === 2) {
24-
return `${parts[0].toLowerCase()}_${parts[1].toUpperCase()}`;
22+
if (parts.length === 1) {
23+
lang = simpleLocaleMap[parts[0].toLowerCase()] || 'en_US';
24+
} else if (parts.length === 2) {
25+
lang = `${parts[0].toLowerCase()}_${parts[1].toUpperCase()}`;
2526
}
26-
return 'en_US';
27+
return lang;
2728
}
2829

2930
const combinePropsAndSlots = (

frontend/antd/config-provider/locales.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,83 @@ export const getDefaultLocale = () => {
99
return en_US;
1010
};
1111

12+
export const simpleLocaleMap = {
13+
ar: 'ar_EG',
14+
az: 'az_AZ',
15+
bg: 'bg_BG',
16+
bn: 'bn_BD',
17+
be: 'by_BY', // Belarusian (Belarus)
18+
ca: 'ca_ES',
19+
cs: 'cs_CZ',
20+
da: 'da_DK',
21+
de: 'de_DE',
22+
el: 'el_GR',
23+
en_gb: 'en_GB',
24+
en: 'en_US',
25+
es: 'es_ES',
26+
et: 'et_EE',
27+
eu: 'eu_ES', // Basque
28+
fa: 'fa_IR',
29+
fi: 'fi_FI',
30+
fr_be: 'fr_BE',
31+
fr_ca: 'fr_CA',
32+
fr_fr: 'fr_FR',
33+
fr: 'fr_FR',
34+
ga: 'ga_IE', // Irish
35+
gl: 'gl_ES', // Galician
36+
he: 'he_IL',
37+
hi: 'hi_IN',
38+
hr: 'hr_HR',
39+
hu: 'hu_HU',
40+
am: 'hy_AM', // Armenian
41+
id: 'id_ID',
42+
is: 'is_IS',
43+
it: 'it_IT',
44+
ja: 'ja_JP',
45+
ka: 'ka_GE', // Georgian
46+
kk: 'kk_KZ', // Kazakh
47+
km: 'km_KH', // Khmer
48+
kmr: 'kmr_IQ', // Kurdish (Northern)
49+
kn: 'kn_IN', // Kannada
50+
ko: 'ko_KR',
51+
ku: 'ku_IQ', // Kurdish (Central)
52+
lt: 'lt_LT',
53+
lv: 'lv_LV',
54+
mk: 'mk_MK', // Macedonian
55+
ml: 'ml_IN', // Malayalam
56+
mn: 'mn_MN', // Mongolian
57+
ms: 'ms_MY',
58+
my: 'my_MM', // Burmese
59+
nb: 'nb_NO', // Norwegian Bokmål
60+
ne: 'ne_NP', // Nepali
61+
nl_be: 'nl_BE', // Dutch (Belgium)
62+
nl_nl: 'nl_NL', // Dutch (Netherlands)
63+
nl: 'nl_NL', // Dutch (Netherlands)
64+
pl: 'pl_PL',
65+
pt_br: 'pt_BR', // Portuguese (Brazil)
66+
pt_pt: 'pt_PT', // Portuguese (Portugal)
67+
pt: 'pt_PT',
68+
ro: 'ro_RO',
69+
ru: 'ru_RU',
70+
si: 'si_LK', // Sinhala
71+
sk: 'sk_SK',
72+
sl: 'sl_SI',
73+
sr: 'sr_RS', // Serbian
74+
sv: 'sv_SE',
75+
ta: 'ta_IN', // Tamil
76+
th: 'th_TH',
77+
tk: 'tk_TK', // Turkmen
78+
tr: 'tr_TR',
79+
uk: 'uk_UA', // Ukrainian
80+
ur: 'ur_PK', // Urdu
81+
uz: 'uz_UZ', // Uzbek
82+
vi: 'vi_VN',
83+
zh: 'zh_CN', // Chinese (Simplified),
84+
zh_cn: 'zh_CN', // Chinese (Simplified)
85+
zh_hk: 'zh_HK', // Chinese (Hong Kong)
86+
zh_tw: 'zh_TW', // Chinese (Taiwan)
87+
};
88+
1289
export const locales: Record<
1390
string,
1491
() => Promise<{ antd: Locale; dayjs: string }>

0 commit comments

Comments
 (0)