2022-09-28 18:16:23 +08:00
|
|
|
import { fallback } from '@logto/core-kit';
|
2022-10-21 13:14:17 +08:00
|
|
|
import type { LanguageTag } from '@logto/language-kit';
|
|
|
|
import { languages } from '@logto/language-kit';
|
|
|
|
import type { NormalizeKeyPaths } from '@silverhand/essentials';
|
2022-09-28 18:16:23 +08:00
|
|
|
import { z } from 'zod';
|
2022-06-27 11:55:28 +08:00
|
|
|
|
2022-11-03 10:16:44 +01:00
|
|
|
import de from './locales/de';
|
2022-06-27 11:55:28 +08:00
|
|
|
import en from './locales/en';
|
2022-08-14 14:36:10 +02:00
|
|
|
import fr from './locales/fr';
|
2022-10-24 12:26:11 +08:00
|
|
|
import ko from './locales/ko';
|
2022-09-02 00:23:54 +01:00
|
|
|
import ptPT from './locales/pt-pt';
|
2022-07-30 16:48:45 +03:00
|
|
|
import trTR from './locales/tr-tr';
|
2022-06-27 11:55:28 +08:00
|
|
|
import zhCN from './locales/zh-cn';
|
2022-10-21 13:14:17 +08:00
|
|
|
import type { LocalePhrase } from './types';
|
2022-06-27 11:55:28 +08:00
|
|
|
|
2022-09-27 15:36:03 +08:00
|
|
|
export type { LocalePhrase } from './types';
|
|
|
|
|
|
|
|
export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
|
2022-06-27 11:55:28 +08:00
|
|
|
|
2022-11-03 10:16:44 +01:00
|
|
|
export const builtInLanguages = ['de', 'en', 'fr', 'ko', 'pt-PT', 'tr-TR', 'zh-CN'] as const;
|
2022-09-28 18:16:23 +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>;
|
|
|
|
|
|
|
|
export type Resource = Record<BuiltInLanguageTag, LocalePhrase>;
|
|
|
|
|
2022-06-27 11:55:28 +08:00
|
|
|
const resource: Resource = {
|
2022-11-03 10:16:44 +01:00
|
|
|
de,
|
2022-08-30 16:53:49 +08:00
|
|
|
en,
|
|
|
|
fr,
|
2022-10-24 12:26:11 +08:00
|
|
|
ko,
|
2022-11-03 10:16:44 +01:00
|
|
|
'pt-PT': ptPT,
|
2022-08-30 16:53:49 +08:00
|
|
|
'tr-TR': trTR,
|
2022-11-03 10:16:44 +01:00
|
|
|
'zh-CN': zhCN,
|
2022-06-27 11:55:28 +08:00
|
|
|
};
|
|
|
|
|
2022-09-28 18:16:23 +08:00
|
|
|
export const getDefaultLanguageTag = (language: string): LanguageTag =>
|
|
|
|
builtInLanguageTagGuard.or(fallback<LanguageTag>('en')).parse(language);
|
|
|
|
|
|
|
|
export const isBuiltInLanguageTag = (language: string): language is BuiltInLanguageTag =>
|
|
|
|
builtInLanguageTagGuard.safeParse(language).success;
|
|
|
|
|
2022-06-27 11:55:28 +08:00
|
|
|
export default resource;
|