import type { MessageDescriptor } from '@lingui/core'; import { msg } from '@lingui/core/macro'; import { SUPPORTED_LANGUAGE_CODES, type SupportedLanguageCodes } from './locales'; export * from './locales'; export type I18nLocaleData = { /** * The supported language extracted from the locale. */ lang: SupportedLanguageCodes; /** * The preferred locales. */ locales: string[]; }; type SupportedLanguage = { short: string; full: MessageDescriptor; }; export const SUPPORTED_LANGUAGES: Record = { de: { short: 'de', full: msg`German`, }, en: { short: 'en', full: msg`English`, }, fr: { short: 'fr', full: msg`French`, }, es: { short: 'es', full: msg`Spanish`, }, it: { short: 'it', full: msg`Italian`, }, nl: { short: 'nl', full: msg`Dutch`, }, pl: { short: 'pl', full: msg`Polish`, }, 'pt-BR': { short: 'pt-BR', full: msg`Portuguese (Brazil)`, }, ja: { short: 'ja', full: msg`Japanese`, }, ko: { short: 'ko', full: msg`Korean`, }, zh: { short: 'zh', full: msg`Chinese`, }, } satisfies Record; export const isValidLanguageCode = (code: unknown): code is SupportedLanguageCodes => SUPPORTED_LANGUAGE_CODES.includes(code as SupportedLanguageCodes);