fix: #1859 dayjs locale translation (#1868)

This commit is contained in:
Manuel
2024-02-03 16:38:56 +01:00
committed by GitHub
parent a6ea9ac333
commit 824f4b8acc
2 changed files with 35 additions and 4 deletions

View File

@@ -58,8 +58,8 @@ function App(
const analyticsEnabled = pageProps.analyticsEnabled ?? true; const analyticsEnabled = pageProps.analyticsEnabled ?? true;
// TODO: make mapping from our locales to moment locales // TODO: make mapping from our locales to moment locales
const language = getLanguageByCode(pageProps.session?.user?.language ?? 'en'); const language = getLanguageByCode(pageProps.session?.user?.language ?? 'en');
if (language.locale !== 'cr') require(`dayjs/locale/${language.locale}.js`); if (language.dayJsLocale) require(`dayjs/locale/${language.dayJsLocale}.js`);
dayjs.locale(language.locale); dayjs.locale(language.dayJsLocale);
const [primaryColor, setPrimaryColor] = useState<MantineTheme['primaryColor']>( const [primaryColor, setPrimaryColor] = useState<MantineTheme['primaryColor']>(
props.pageProps.primaryColor ?? 'red' props.pageProps.primaryColor ?? 'red'

View File

@@ -8,6 +8,11 @@ export type Language = {
*/ */
country: string; country: string;
locale: string; locale: string;
/**
*
*/
dayJsLocale?: string;
}; };
export const languages = [ export const languages = [
@@ -17,13 +22,14 @@ export const languages = [
translatedName: 'English', translatedName: 'English',
country: 'GB', country: 'GB',
locale: 'en-gb', locale: 'en-gb',
dayJsLocale: 'en'
}, },
{ {
shortName: 'cr', shortName: 'cr',
originalName: 'Crowdin', originalName: 'Crowdin',
translatedName: '(Live translation)', translatedName: '(Live translation)',
locale: 'cr', locale: 'cr',
country: 'CROWDIN', country: 'CROWDIN'
}, },
{ {
shortName: 'fr', shortName: 'fr',
@@ -31,6 +37,7 @@ export const languages = [
translatedName: 'French', translatedName: 'French',
country: 'FR', country: 'FR',
locale: 'fr', locale: 'fr',
dayJsLocale: 'fr'
}, },
{ {
shortName: 'cn', shortName: 'cn',
@@ -38,6 +45,7 @@ export const languages = [
translatedName: 'Chinese (Simplified)', translatedName: 'Chinese (Simplified)',
country: 'CN', country: 'CN',
locale: 'zh-cn', locale: 'zh-cn',
dayJsLocale: 'zh'
}, },
{ {
shortName: 'cs', shortName: 'cs',
@@ -45,6 +53,7 @@ export const languages = [
translatedName: 'Czech', translatedName: 'Czech',
country: 'CZ', country: 'CZ',
locale: 'cs', locale: 'cs',
dayJsLocale: 'cs'
}, },
{ {
shortName: 'da', shortName: 'da',
@@ -52,6 +61,7 @@ export const languages = [
translatedName: 'Danish', translatedName: 'Danish',
country: 'DK', country: 'DK',
locale: 'da', locale: 'da',
dayJsLocale: 'da'
}, },
{ {
shortName: 'de', shortName: 'de',
@@ -59,6 +69,7 @@ export const languages = [
translatedName: 'German', translatedName: 'German',
country: 'DE', country: 'DE',
locale: 'de', locale: 'de',
dayJsLocale: 'de'
}, },
{ {
shortName: 'el', shortName: 'el',
@@ -66,6 +77,7 @@ export const languages = [
translatedName: 'Greek', translatedName: 'Greek',
country: 'GR', country: 'GR',
locale: 'el', locale: 'el',
dayJsLocale: 'el'
}, },
{ {
shortName: 'es', shortName: 'es',
@@ -73,6 +85,7 @@ export const languages = [
translatedName: 'Spanish', translatedName: 'Spanish',
country: 'ES', country: 'ES',
locale: 'es', locale: 'es',
dayJsLocale: 'es'
}, },
{ {
shortName: 'he', shortName: 'he',
@@ -80,6 +93,7 @@ export const languages = [
translatedName: 'Hebrew', translatedName: 'Hebrew',
country: 'IL', country: 'IL',
locale: 'he', locale: 'he',
dayJsLocale: 'he'
}, },
{ {
shortName: 'hr', shortName: 'hr',
@@ -87,6 +101,7 @@ export const languages = [
translatedName: 'Croatian', translatedName: 'Croatian',
country: 'HR', country: 'HR',
locale: 'hr', locale: 'hr',
dayJsLocale: 'hr'
}, },
{ {
shortName: 'hu', shortName: 'hu',
@@ -94,6 +109,7 @@ export const languages = [
translatedName: 'Hungarian', translatedName: 'Hungarian',
country: 'HU', country: 'HU',
locale: 'hu', locale: 'hu',
dayJsLocale: 'hu'
}, },
{ {
shortName: 'it', shortName: 'it',
@@ -101,6 +117,7 @@ export const languages = [
translatedName: 'Italian', translatedName: 'Italian',
country: 'IT', country: 'IT',
locale: 'it', locale: 'it',
dayJsLocale: 'it'
}, },
{ {
shortName: 'ja', shortName: 'ja',
@@ -108,6 +125,7 @@ export const languages = [
translatedName: 'Japanese', translatedName: 'Japanese',
country: 'JP', country: 'JP',
locale: 'ja', locale: 'ja',
dayJsLocale: 'ja'
}, },
{ {
shortName: 'ko', shortName: 'ko',
@@ -115,6 +133,7 @@ export const languages = [
translatedName: 'Korean', translatedName: 'Korean',
country: 'KR', country: 'KR',
locale: 'ko', locale: 'ko',
dayJsLocale: 'ko'
}, },
{ {
shortName: 'lv', shortName: 'lv',
@@ -122,6 +141,7 @@ export const languages = [
translatedName: 'Latvian', translatedName: 'Latvian',
country: 'LV', country: 'LV',
locale: 'lv', locale: 'lv',
dayJsLocale: 'lv'
}, },
{ {
shortName: 'nl', shortName: 'nl',
@@ -129,6 +149,7 @@ export const languages = [
translatedName: 'Dutch', translatedName: 'Dutch',
country: 'NL', country: 'NL',
locale: 'nl', locale: 'nl',
dayJsLocale: 'nl'
}, },
{ {
shortName: 'no', shortName: 'no',
@@ -136,6 +157,7 @@ export const languages = [
translatedName: 'Norwegian', translatedName: 'Norwegian',
country: 'NO', country: 'NO',
locale: 'no', locale: 'no',
dayJsLocale: 'nb'
}, },
{ {
shortName: 'pl', shortName: 'pl',
@@ -143,6 +165,7 @@ export const languages = [
translatedName: 'Polish', translatedName: 'Polish',
country: 'PL', country: 'PL',
locale: 'pl', locale: 'pl',
dayJsLocale: 'pl'
}, },
{ {
shortName: 'pt', shortName: 'pt',
@@ -157,6 +180,7 @@ export const languages = [
translatedName: 'Russian', translatedName: 'Russian',
country: 'RU', country: 'RU',
locale: 'ru', locale: 'ru',
dayJsLocale: 'ru'
}, },
{ {
shortName: 'sk', shortName: 'sk',
@@ -164,6 +188,7 @@ export const languages = [
translatedName: 'Slovak', translatedName: 'Slovak',
country: 'SK', country: 'SK',
locale: 'sk', locale: 'sk',
dayJsLocale: 'sk'
}, },
{ {
shortName: 'sl', shortName: 'sl',
@@ -171,6 +196,7 @@ export const languages = [
translatedName: 'Slovenian', translatedName: 'Slovenian',
country: 'SI', country: 'SI',
locale: 'sl', locale: 'sl',
dayJsLocale: 'sl'
}, },
{ {
shortName: 'sv', shortName: 'sv',
@@ -178,6 +204,7 @@ export const languages = [
translatedName: 'Swedish', translatedName: 'Swedish',
country: 'SE', country: 'SE',
locale: 'sv', locale: 'sv',
dayJsLocale: 'sv'
}, },
{ {
shortName: 'tr', shortName: 'tr',
@@ -185,6 +212,7 @@ export const languages = [
translatedName: 'Turkish', translatedName: 'Turkish',
country: 'TR', country: 'TR',
locale: 'tr', locale: 'tr',
dayJsLocale: 'tr'
}, },
{ {
shortName: 'tw', shortName: 'tw',
@@ -192,6 +220,7 @@ export const languages = [
translatedName: 'Chinese (Traditional)', translatedName: 'Chinese (Traditional)',
country: 'TW', country: 'TW',
locale: 'zh-tw', locale: 'zh-tw',
dayJsLocale: 'zh-cn'
}, },
{ {
shortName: 'uk', shortName: 'uk',
@@ -199,6 +228,7 @@ export const languages = [
translatedName: 'Ukrainian', translatedName: 'Ukrainian',
country: 'UA', country: 'UA',
locale: 'uk', locale: 'uk',
dayJsLocale: 'uk'
}, },
{ {
shortName: 'vi', shortName: 'vi',
@@ -206,9 +236,10 @@ export const languages = [
translatedName: 'Vietnamese', translatedName: 'Vietnamese',
country: 'VN', country: 'VN',
locale: 'vi', locale: 'vi',
dayJsLocale: 'vi'
}, },
] as const satisfies Readonly<Language[]>; ] as const satisfies Readonly<Language[]>;
export const getLanguageByCode = (code: string | null) => export const getLanguageByCode = (code: string | null): Language =>
languages.find((language) => language.shortName === code) ?? languages.find((language) => language.shortName === code) ??
languages.find((x) => x.locale === 'en-gb')!; languages.find((x) => x.locale === 'en-gb')!;