Lingo.dev + .ts (TypeScript)
Lingo.dev CLIはTypeScriptロケールファイルを翻訳する際に、型定義、オブジェクト構造、TypeScript特有の構文を保持します。CLIはTypeScriptの型チェックと推論を維持し、すべてのTypeScript構文と機能をサポートし、デフォルトエクスポートと名前付きエクスポートに対応し、テンプレート文字列と補間を正確に処理し、TypeScriptコンパイルプロセスとシームレスに統合します。
クイックセットアップ
TypeScriptロケールファイル用の設定:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"typescript": {
"include": ["src/locales/[locale].ts"]
}
}
}
注意: [locale]
は設定内でそのまま残しておくべきプレースホルダーであり、CLI実行時に実際のロケールに置き換えられます。
TypeScriptファイルの翻訳
npx lingo.dev@latest i18n
文字列コンテンツを翻訳しながら、TypeScript構文、型アノテーション、モジュールエクスポートを保持します。
TypeScript構造のサポート
オブジェクトエクスポートパターン
export const messages = {
common: {
save: "保存",
cancel: "キャンセル",
delete: "削除",
},
auth: {
login: "ログイン",
register: "アカウント作成",
},
} as const;
インターフェースベースのアプローチ
interface Messages {
welcome: string;
itemCount: (count: number) => string;
}
export const en: Messages = {
welcome: "プラットフォームへようこそ",
itemCount: (count: number) => `${count}個のアイテムがあります`,
};
テンプレートリテラルのサポート
export const messages = {
greeting: (name: string) => `こんにちは、${name}さん!`,
notification: `${count}件の新しいメッセージがあります`,
path: `/users/${userId}/profile`,
};
型安全性の保持
定数アサーション
export const locale = {
buttons: {
submit: "フォームを送信",
reset: "リセット",
},
} as const;
type LocaleKeys = typeof locale;
型情報と定数アサーションはそのまま維持されます。
関数の定義
export const t = {
welcome: (name: string): string => `Welcome, ${name}!`,
pluralize: (count: number): string =>
count === 1 ? "1 item" : `${count} items`,
};
関数のシグネチャと戻り値の型は保持されます。
高度な設定
複数のTypeScriptファイル
"typescript": {
"include": [
"src/locales/[locale].ts",
"src/translations/[locale]/*.ts"
]
}
型定義のロック
"typescript": {
"include": ["src/locales/[locale].ts"],
"lockedKeys": ["__type", "metadata"]
}