Translation
Defining Translations
t 函数在 intlayer 中允许您声明多种语言的内容。该函数确保类型安全,如果任何翻译缺失,将引发错误,这在 TypeScript 环境中特别有用。
Using TypeScript
这是如何在 TypeScript 文件中声明翻译内容的一个示例:
typescript
import { t, type DeclarationContent } from "intlayer";
interface Content {
welcomeMessage: string; // 欢迎信息
}
export default {
key: "multi_lang", // 多语言键
content: {
welcomeMessage: t({
en: "Welcome to our application", // 欢迎来到我们的应用程序
fr: "Bienvenue dans notre application", // 欢迎来到我们的应用程序
es: "Bienvenido a nuestra aplicación", // 欢迎来到我们的应用程序
}),
},
} satisfies DeclarationContent<Content>;
Using ECMAScript Modules
如果您使用 ECMAScript 模块,声明看起来像这样:
javascript
import { t } from "intlayer";
export default {
key: "multi_lang", // 多语言键
content: {
welcomeMessage: t({
en: "Welcome to our application", // 欢迎来到我们的应用程序
fr: "Bienvenue dans notre application", // 欢迎来到我们的应用程序
es: "Bienvenido a nuestra aplicación", // 欢迎来到我们的应用程序
}),
},
};
Using CommonJS Modules
在 CommonJS 设置中,您可以像这样声明翻译:
javascript
const { t } = require("intlayer");
module.exports = {
key: "multi_lang", // 多语言键
content: {
welcomeMessage: t({
en: "Welcome to our application", // 欢迎来到我们的应用程序
fr: "Bienvenue dans notre application", // 欢迎来到我们的应用程序
es: "Bienvenido a nuestra aplicación", // 欢迎来到我们的应用程序
}),
},
};
Using JSON
对于基于 JSON 的声明,您可以如下定义翻译:
json
{
"key": "multi_lang", // 多语言键
"content": {
"welcomeMessage": {
"nodeType": "translation",
"translation": {
"en": "Welcome to our application", // 欢迎来到我们的应用程序
"fr": "Bienvenue dans notre application", // 欢迎来到我们的应用程序
"es": "Bienvenido a nuestra aplicación" // 欢迎来到我们的应用程序
}
}
}
}
Configuration for Locales
为了确保适当的翻译处理,您可以在 intlayer.config.ts 中配置接受的地区语言。这一配置允许您定义您的应用程序支持的语言:
typescript
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], // 支持的语言
},
};
export default config;
Using Translations in React Components
使用 react-intlayer,您可以在 React 组件中使用翻译。以下是一个示例:
jsx
import { useIntlayer } from "react-intlayer";
const MyComponent = () => {
const content = useIntlayer("multi_lang"); // 获取多语言内容
return (
<div>
<p>{content.welcomeMessage}</p> // 显示欢迎信息
</div>
);
};
export default MyComponent;
该组件根据您应用程序中设置的当前语言获取相应的翻译。
Custom Content Objects
intlayer 支持自定义内容对象进行翻译,允许您定义更复杂的结构,同时确保类型安全。以下是一个带有自定义对象的示例:
typescript
import { t, type DeclarationContent } from "intlayer";
interface ICustomContent {
title: string; // 标题
content: string; // 内容
}
const customContent = {
key: "custom_content", // 自定义内容键
content: {
profileText: t<ICustomContent>({
en: {
title: "Page Title", // 页面标题
content: "Page Content", // 页面内容
},
fr: {
title: "Titre de la Page", // 页面标题
content: "Contenu de la Page", // 页面内容
},
es: {
title: "Título de la Página", // 页面标题
content: "Contenido de la Página", // 页面内容
},
}),
},
} satisfies DeclarationContent;
export default customContent;
如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。
文档的 GitHub 链接