locales/index.ts

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>
  );
}

添加新语言步骤

  1. 创建语言文件(如 de.ts):

```ts import type { LocaleData } from "./types";

const de: LocaleData = { // 实现所有必需字段 temperatureExamples: { ... }, principles: [ ... ], // ... };

export default de; ```

  1. 导入并注册

```ts import de from "./de";

const locales: Record = { // ... 现有语言 de, // 添加新语言 }; ```

  1. 在应用中启用

- 在 prompts.config.ts 的 i18n 配置中添加新语言 - 创建 messages/{locale}.json 翻译文件

数据内容

完整的 LocaleData 包含以下数据域:

字段类型描述
temperatureExamplesTemperatureExamplesData温度参数示例
tokenPredictionTokenPredictionData令牌预测演示数据
embeddingWordsEmbeddingWord[]嵌入向量示例词汇
capabilitiesCapability[]LLM 能力列表
sampleConversationConversationMessage[]示例对话
strategiesSummarizationStrategy[]摘要策略
contextBlocksContextBlock[]上下文块
scenariosChainScenario[]链式场景
stepsChainStep[]链式步骤
tokenizerTokenizerData分词器数据
builderFieldsBuilderField[]构建器字段
chainTypesChainType[]链式类型
bookPartsBookPart[]书籍部分信息
principlesPrinciple[]提示工程原则
jailbreakExamplesJailbreakExample[]越狱示例
imagePromptOptionsRecord<string, string[]>图像提示选项
imageCategoryLabelsRecord<string, string>图像分类标签
videoPromptOptionsRecord<string, string[]>视频提示选项
videoCategoryLabelsRecord<string, string>视频分类标签
validationDemoValidationDemoData验证演示数据
fallbackDemoFallbackDemoData降级演示数据
contentPipelineDemoContentPipelineDemoData内容管道数据
exercisesExercisesData练习数据
frameworksFrameworksData框架数据(CRISPE/BREAK/RTF)

详见 types.ts 了解每个类型的详细定义。

← 返回目录