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: "Save",
cancel: "Cancel",
delete: "Delete",
},
auth: {
login: "Log In",
register: "Create Account",
},
} as const;
基于接口的方法
interface Messages {
welcome: string;
itemCount: (count: number) => string;
}
export const en: Messages = {
welcome: "Welcome to our platform",
itemCount: (count: number) => `You have ${count} items`,
};
模板字面量支持
export const messages = {
greeting: (name: string) => `Hello, ${name}!`,
notification: `You have ${count} new messages`,
path: `/users/${userId}/profile`,
};
类型安全性保留
常量断言
export const locale = {
buttons: {
submit: "Submit Form",
reset: "Reset",
},
} as const;
type LocaleKeys = typeof locale;
类型信息和常量断言保持不变。
函数定义
export const t = {
welcome: (name: string): string => `欢迎, ${name}!`,
pluralize: (count: number): string =>
count === 1 ? "1 个项目" : `${count} 个项目`,
};
函数签名和返回类型得以保留。
高级配置
多个 TypeScript 文件
"typescript": {
"include": [
"src/locales/[locale].ts",
"src/translations/[locale]/*.ts"
]
}
锁定类型定义
"typescript": {
"include": ["src/locales/[locale].ts"],
"lockedKeys": ["__type", "metadata"]
}