locales/index.ts
概述
书籍元素组件的本地化数据集中管理中心。提供多语言支持的基础设施,包括语言数据加载、回退处理和字段访问。
架构设计
locales/
├── index.ts # 入口与数据聚合
├── types.ts # 类型定义
├── en.ts # 英语数据
├── zh.ts # 中文数据
├── ... # 其他语言
└── (共17种语言)
核心功能
1. 语言数据注册
所有支持的语言都在 locales 对象中注册:
const locales: Record<string, LocaleData> = {
en, // 英语(默认回退)
tr, // 土耳其语
az, // 阿塞拜疆语
fr, // 法语
de, // 德语
es, // 西班牙语
it, // 意大利语
pt, // 葡萄牙语
ja, // 日语
zh, // 中文
ko, // 韩语
ar, // 阿拉伯语
nl, // 荷兰语
ru, // 俄语
el, // 希腊语
fa, // 波斯语
he, // 希伯来语
};
2. 获取语言数据
getLocaleData(locale: string): LocaleData
获取指定语言的完整数据对象,如果语言不存在则回退到英语。
import { getLocaleData } from "./locales";
const data = getLocaleData("zh");
// 返回中文数据,如果 zh.ts 不存在则返回 en.ts
getLocaleField<K extends keyof LocaleData>(locale: string, field: K): LocaleData[K]
获取特定字段的数据,用于按需加载。
import { getLocaleField } from "./locales";
// 只获取原则数据
const principles = getLocaleField("zh", "principles");
// 只获取框架数据
const frameworks = getLocaleField("zh", "frameworks");
3. 类型重导出
从 types.ts 重导出所有类型定义:
export * from "./types";
4. 直接访问
支持直接导入特定语言数据(不推荐,除非有特殊需求):
import { zh, en } from "./locales";
// 或
import { locales } from "./locales";
const zhData = locales.zh;
使用场景
在组件中使用
"use client";
import { useLocale } from "next-intl";
import { getLocaleField } from "./locales";
export function SomeComponent() {
const locale = useLocale();
// 获取当前语言的框架数据
const frameworks = getLocaleField(locale, "frameworks");
return (
<div>
<h1>{frameworks.crispe.name}</h1>
</div>
);
}
添加新语言步骤
- 创建语言文件(如
de.ts):
```ts import type { LocaleData } from "./types";
const de: LocaleData = { // 实现所有必需字段 temperatureExamples: { ... }, principles: [ ... ], // ... };
export default de; ```
- 导入并注册:
```ts import de from "./de";
const locales: Record = { // ... 现有语言 de, // 添加新语言 }; ```
- 在应用中启用:
- 在 prompts.config.ts 的 i18n 配置中添加新语言
- 创建 messages/{locale}.json 翻译文件
数据内容
完整的 LocaleData 包含以下数据域:
| 字段 | 类型 | 描述 |
|---|---|---|
temperatureExamples | TemperatureExamplesData | 温度参数示例 |
tokenPrediction | TokenPredictionData | 令牌预测演示数据 |
embeddingWords | EmbeddingWord[] | 嵌入向量示例词汇 |
capabilities | Capability[] | LLM 能力列表 |
sampleConversation | ConversationMessage[] | 示例对话 |
strategies | SummarizationStrategy[] | 摘要策略 |
contextBlocks | ContextBlock[] | 上下文块 |
scenarios | ChainScenario[] | 链式场景 |
steps | ChainStep[] | 链式步骤 |
tokenizer | TokenizerData | 分词器数据 |
builderFields | BuilderField[] | 构建器字段 |
chainTypes | ChainType[] | 链式类型 |
bookParts | BookPart[] | 书籍部分信息 |
principles | Principle[] | 提示工程原则 |
jailbreakExamples | JailbreakExample[] | 越狱示例 |
imagePromptOptions | Record<string, string[]> | 图像提示选项 |
imageCategoryLabels | Record<string, string> | 图像分类标签 |
videoPromptOptions | Record<string, string[]> | 视频提示选项 |
videoCategoryLabels | Record<string, string> | 视频分类标签 |
validationDemo | ValidationDemoData | 验证演示数据 |
fallbackDemo | FallbackDemoData | 降级演示数据 |
contentPipelineDemo | ContentPipelineDemoData | 内容管道数据 |
exercises | ExercisesData | 练习数据 |
frameworks | FrameworksData | 框架数据(CRISPE/BREAK/RTF) |
详见 types.ts 了解每个类型的详细定义。