@koharakazuya/typescript-i18n
国際化対応 (i18n) するとき TypeScript においてシンプルかつ便利な方法を提供する npm パッケージ。
特徴
- 翻訳データは非プログラマが扱うこともあるので JSON のような単純な形式で定義できる
- 翻訳データの構造、パラメーターについて TypeScript の型推論機能で抜け漏れのチェックや自動補完ができる
- 翻訳データの各項目は使用箇所を追跡できる
インストール
$ npm install @koharakazuya/typescript-i18n
前提として TypeScript 最新バージョン、Compiler Option の strict: true
環境を想定しています。
使い方
サンプル
import {
checkSchemaParams,
i18n,
type Dictionary,
type DictionarySchema,
} from "@koharakazuya/typescript-i18n";
interface MyDictionarySchema extends DictionarySchema {
title: { brand: string; year: number };
message: {
submit: {};
error: { amount: number };
ok: {
alert: {};
};
};
}
const ja = {
title: "{{brand}} from {{year}}",
message: {
submit: "送信しました",
error: "エラーが発生しました: {{amount}}",
ok: { alert: "OK" },
},
} as const satisfies Dictionary<MyDictionarySchema>;
checkSchemaParams<typeof ja, MyDictionarySchema>();
const t = i18n<MyDictionarySchema>(ja);
const s1 = t((x) => x.message.error, { amount: 100 });
const s2 = t((x) => x.message.submit, {});
const s3 = t((x) => x.title, { brand: "Example", year: 2023 });
console.log({ s1, s2, s3 });