/*
 * i18n 공용 타입 — 로케일 키 형상 강제.
 * ko(기본)의 키 트리를 DeepString으로 변환해 en/zh/ja가 동일 키를 모두 갖도록 tsc가 검증한다.
 */
import type { Resource } from './locales/ko';

export type DeepString<T> = {
  [K in keyof T]: T[K] extends string ? string : DeepString<T[K]>;
};

/** 모든 로케일이 구현해야 하는 번역 형상. */
export type Translations = DeepString<Resource>;

export const SUPPORTED_LANGS = ['ko', 'en', 'zh', 'ja'] as const;
export type Lang = (typeof SUPPORTED_LANGS)[number];
export const DEFAULT_LANG: Lang = 'ko';
