2022-10-21 13:14:17 +08:00
|
|
|
import type { LanguageTag } from '@logto/language-kit';
|
2023-03-14 20:26:42 +08:00
|
|
|
import { languages, fallback } from '@logto/language-kit';
|
2022-10-21 13:14:17 +08:00
|
|
|
import type { NormalizeKeyPaths } from '@silverhand/essentials';
|
2022-10-10 09:43:13 +08:00
|
|
|
import { z } from 'zod';
|
2022-01-24 17:26:08 +08:00
|
|
|
|
2022-11-21 11:24:02 +08:00
|
|
|
import de from './locales/de/index.js';
|
|
|
|
import en from './locales/en/index.js';
|
2023-03-29 13:07:39 +08:00
|
|
|
import es from './locales/es/index.js';
|
2022-11-21 11:24:02 +08:00
|
|
|
import fr from './locales/fr/index.js';
|
2023-04-01 01:53:59 +08:00
|
|
|
import it from './locales/it/index.js';
|
2023-03-28 23:38:47 +08:00
|
|
|
import ja from './locales/ja/index.js';
|
2022-11-21 11:24:02 +08:00
|
|
|
import ko from './locales/ko/index.js';
|
2023-04-01 01:59:38 +08:00
|
|
|
import plPL from './locales/pl-pl/index.js';
|
2022-12-08 03:44:11 -03:00
|
|
|
import ptBR from './locales/pt-br/index.js';
|
2022-11-21 11:24:02 +08:00
|
|
|
import ptPT from './locales/pt-pt/index.js';
|
2023-03-30 00:43:53 +08:00
|
|
|
import ru from './locales/ru/index.js';
|
2022-11-21 11:24:02 +08:00
|
|
|
import trTR from './locales/tr-tr/index.js';
|
|
|
|
import zhCN from './locales/zh-cn/index.js';
|
2023-03-30 01:01:59 +08:00
|
|
|
import zhHK from './locales/zh-hk/index.js';
|
|
|
|
import zhTW from './locales/zh-tw/index.js';
|
2023-03-29 01:27:52 +08:00
|
|
|
import type { LocalePhrase } from './types.js';
|
2022-10-10 09:43:13 +08:00
|
|
|
|
2023-03-29 01:27:52 +08:00
|
|
|
export type { LocalePhrase } from './types.js';
|
2022-10-10 09:43:13 +08:00
|
|
|
|
|
|
|
export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
|
|
|
|
|
2022-12-08 03:44:11 -03:00
|
|
|
export const builtInLanguages = [
|
|
|
|
'de',
|
|
|
|
'en',
|
2023-03-29 13:07:39 +08:00
|
|
|
'es',
|
2022-12-08 03:44:11 -03:00
|
|
|
'fr',
|
2023-04-01 01:53:59 +08:00
|
|
|
'it',
|
2023-03-29 13:07:39 +08:00
|
|
|
'ja',
|
2022-12-08 03:44:11 -03:00
|
|
|
'ko',
|
2023-04-01 01:59:38 +08:00
|
|
|
'pl-PL',
|
2022-12-08 03:44:11 -03:00
|
|
|
'pt-BR',
|
2023-03-30 00:43:53 +08:00
|
|
|
'pt-PT',
|
|
|
|
'ru',
|
2022-12-08 03:44:11 -03:00
|
|
|
'tr-TR',
|
|
|
|
'zh-CN',
|
2023-03-30 01:01:59 +08:00
|
|
|
'zh-HK',
|
|
|
|
'zh-TW',
|
2022-12-08 03:44:11 -03:00
|
|
|
] as const;
|
2022-10-10 09:43:13 +08:00
|
|
|
|
|
|
|
export const builtInLanguageOptions = builtInLanguages.map((languageTag) => ({
|
|
|
|
value: languageTag,
|
|
|
|
title: languages[languageTag],
|
|
|
|
}));
|
|
|
|
|
|
|
|
export const builtInLanguageTagGuard = z.enum(builtInLanguages);
|
|
|
|
|
|
|
|
export type BuiltInLanguageTag = z.infer<typeof builtInLanguageTagGuard>;
|
2021-07-28 01:13:51 +08:00
|
|
|
|
2022-07-15 17:03:07 +08:00
|
|
|
export type Errors = typeof en.errors;
|
|
|
|
export type LogtoErrorCode = NormalizeKeyPaths<Errors>;
|
2021-08-14 21:39:37 +08:00
|
|
|
export type LogtoErrorI18nKey = `errors:${LogtoErrorCode}`;
|
2022-10-10 09:43:13 +08:00
|
|
|
|
2022-03-04 12:47:02 +08:00
|
|
|
export type AdminConsoleKey = NormalizeKeyPaths<typeof en.translation.admin_console>;
|
2021-07-28 01:13:51 +08:00
|
|
|
|
2022-10-10 09:43:13 +08:00
|
|
|
export const getDefaultLanguageTag = (languages: string): LanguageTag =>
|
|
|
|
builtInLanguageTagGuard.or(fallback<LanguageTag>('en')).parse(languages);
|
|
|
|
|
|
|
|
export const isBuiltInLanguageTag = (language: string): language is BuiltInLanguageTag =>
|
|
|
|
builtInLanguageTagGuard.safeParse(language).success;
|
|
|
|
|
2023-03-29 01:27:52 +08:00
|
|
|
export type Resource = Record<BuiltInLanguageTag, LocalePhrase>;
|
2022-10-10 09:43:13 +08:00
|
|
|
|
2021-07-28 01:13:51 +08:00
|
|
|
const resource: Resource = {
|
2022-11-03 10:16:44 +01:00
|
|
|
de,
|
2022-08-30 16:53:49 +08:00
|
|
|
en,
|
2023-03-29 13:07:39 +08:00
|
|
|
es,
|
2022-08-30 16:53:49 +08:00
|
|
|
fr,
|
2023-04-01 01:53:59 +08:00
|
|
|
it,
|
2023-03-30 01:01:59 +08:00
|
|
|
ja,
|
2022-10-24 12:26:11 +08:00
|
|
|
ko,
|
2023-04-01 01:59:38 +08:00
|
|
|
'pl-PL': plPL,
|
2022-12-08 03:44:11 -03:00
|
|
|
'pt-BR': ptBR,
|
2023-03-30 00:43:53 +08:00
|
|
|
'pt-PT': ptPT,
|
|
|
|
ru,
|
2022-08-30 16:53:49 +08:00
|
|
|
'tr-TR': trTR,
|
2022-11-03 10:16:44 +01:00
|
|
|
'zh-CN': zhCN,
|
2023-03-30 01:01:59 +08:00
|
|
|
'zh-HK': zhHK,
|
|
|
|
'zh-TW': zhTW,
|
2021-07-28 01:13:51 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
export default resource;
|