0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-01-27 21:39:16 -05:00
logto/packages/phrases-ui/src/index.ts

78 lines
1.9 KiB
TypeScript
Raw Normal View History

2022-10-21 13:14:17 +08:00
import type { LanguageTag } from '@logto/language-kit';
import { languages, fallback } from '@logto/language-kit';
2022-10-21 13:14:17 +08:00
import type { NormalizeKeyPaths } from '@silverhand/essentials';
import { z } from 'zod';
import de from './locales/de/index.js';
2023-03-28 23:38:47 +08:00
import en from './locales/en/index.js';
2023-03-29 13:07:39 +08:00
import es from './locales/es/index.js';
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';
import ko from './locales/ko/index.js';
import ptBR from './locales/pt-br/index.js';
import ptPT from './locales/pt-pt/index.js';
import ru from './locales/ru/index.js';
import trTR from './locales/tr-tr/index.js';
import zhCN from './locales/zh-cn/index.js';
import zhHK from './locales/zh-hk/index.js';
import zhTW from './locales/zh-tw/index.js';
2022-11-21 11:24:02 +08:00
import type { LocalePhrase } from './types.js';
export type { LocalePhrase } from './types.js';
export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
export const builtInLanguages = [
'de',
'en',
2023-03-29 13:07:39 +08:00
'es',
'fr',
2023-04-01 01:53:59 +08:00
'it',
2023-03-29 13:07:39 +08:00
'ja',
'ko',
'pt-PT',
'pt-BR',
'ru',
'tr-TR',
'zh-CN',
'zh-HK',
'zh-TW',
] as const;
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>;
const resource: Resource = {
de,
en,
2023-03-29 13:07:39 +08:00
es,
fr,
2023-04-01 01:53:59 +08:00
it,
2023-03-29 13:07:39 +08:00
ja,
2022-10-24 12:26:11 +08:00
ko,
'pt-PT': ptPT,
'pt-BR': ptBR,
ru,
'tr-TR': trTR,
'zh-CN': zhCN,
'zh-HK': zhHK,
'zh-TW': zhTW,
};
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;
export default resource;