import en from "./en.json";

// 再帰的にプロパティ名リテラル型の結合を行う
// Pを列挙 => key-remapping(P)でPを元に(P.Pの子要素).(左の子要素)...という新しいプロパティ名を再帰的に作成する
type Key<T> = keyof {
  [P in keyof T as T[P] extends string
    ? P
    : Key<T[P]> extends string
    ? `${P extends string ? P : never}.${Key<T[P]>}`
    : never]: T[P];
};

// IDの特定はen.jsonを基準とする
export type TranslationID = Key<typeof en>;

// ユーザーの入力補助用の関数
export const getTranslationID = (id: TranslationID) => id;
