stock/docs/I18N.md
ZhangPeng 9aecdd036c Initial commit: OpenClaw Trading - AI多智能体量化交易系统
- 添加项目核心代码和配置
- 添加前端界面 (Next.js)
- 添加单元测试
- 更新 .gitignore 排除缓存和依赖
2026-02-27 03:47:40 +08:00

8.6 KiB
Raw Blame History

OpenClaw 国际化 (I18N) 文档

概述

OpenClaw 仪表板支持多语言国际化,当前已实现:

  • 中文 (zh) - 默认语言
  • 英文 (en) - 备选语言

已汉化文件清单

后端文件

文件路径 汉化内容
src/openclaw/dashboard/app.py API 响应消息、警报标题、WebSocket 消息类型
src/openclaw/dashboard/models.py 字段描述docstrings

前端文件

文件路径 汉化内容
src/openclaw/dashboard/templates/index.html 页面标题、导航、指标标签、图表标题、表格列头、状态文本
src/openclaw/dashboard/templates/config.html 页面标题、导航、配置项标签、按钮文本、状态消息
src/openclaw/dashboard/static/config.js 加载/保存状态消息、控制台日志、成功/错误提示

国际化工具

文件路径 说明
src/openclaw/dashboard/i18n.py 国际化支持类,提供双语翻译字典

使用国际化工具

基础用法

from openclaw.dashboard.i18n import I18n, t

# 创建实例(默认中文)
i18n = I18n()

# 获取翻译
title = i18n.t("status.agent_bankrupt")  # "代理破产"

# 切换语言
i18n.set_language("en")
title = i18n.t("status.agent_bankrupt")  # "Agent Bankrupt"

字符串插值

# 支持变量替换
msg = i18n.t("alert.bankruptcy_msg", agent_id="bull_001")
# 中文: "代理 bull_001 已破产!"
# 英文: "Agent bull_001 has gone bankrupt!"

使用全局快捷函数

from openclaw.dashboard.i18n import t, set_language

# 使用默认实例
text = t("metrics.system_equity")  # "系统权益"

# 切换全局语言
set_language("en")
text = t("metrics.system_equity")  # "System Equity"

翻译键值参考

状态消息 (status)

键值 中文 英文
status.agent_bankrupt 代理破产 Agent Bankrupt
status.large_loss_detected 检测到重大损失 Large Loss Detected
status.config_saved 配置已保存 Configuration Saved
status.loading_config 正在加载配置... Loading Configuration...
status.confirm 已确认 Confirmed
status.not_found 未找到 Not Found
status.realtime 实时 Realtime
status.disconnected 已断开 Disconnected

导航 (nav)

键值 中文 英文
nav.dashboard 仪表盘 Dashboard
nav.config 配置 Configuration
nav.overview 总览 Overview

指标 (metrics)

键值 中文 英文
metrics.system_equity 系统权益 System Equity
metrics.total_pnl 总盈亏 Total P&L
metrics.active_agents 活跃 Agent Active Agents
metrics.total_trades 总交易数 Total Trades
metrics.avg_win_rate 平均胜率 Avg Win Rate

代理状态 (agent)

键值 中文 英文
agent.status 状态 Status
agent.balance 余额 Balance
agent.win_rate 胜率 Win Rate
agent.trades 交易数 Trades
agent.thriving 🚀 繁荣 🚀 Thriving
agent.stable 💪 稳定 💪 Stable
agent.struggling ⚠️ 困难 ⚠️ Struggling
agent.critical 🔴 危急 🔴 Critical
agent.bankrupt 💀 破产 💀 Bankrupt

交易 (trade)

键值 中文 英文
trade.recent_trades 最近交易 Recent Trades
trade.time 时间 Time
trade.symbol 交易对 Symbol
trade.side 方向 Side
trade.buy 买入 BUY
trade.sell 卖出 SELL
trade.pnl 盈亏 P&L

警报 (alert)

键值 中文 英文
alert.title 警报 Alert
alert.critical 严重 Critical
alert.error 错误 Error
alert.warning 警告 Warning
alert.info 信息 Info
alert.bankruptcy_title 代理破产 Agent Bankrupt
alert.bankruptcy_msg 代理 {agent_id} 已破产! Agent {agent_id} has gone bankrupt!
alert.large_loss_title 检测到重大损失 Large Loss Detected
alert.large_loss_msg 代理 {agent_id} 遭受重大损失: ${pnl:.2f} Agent {agent_id} suffered large loss: ${pnl:.2f}

配置 (config)

键值 中文 英文
config.title 配置管理 Configuration Management
config.save 保存配置 Save Configuration
config.reset 重置 Reset
config.saving 保存中... Saving...
config.initial_capital 初始资金 Initial Capital
config.cost_structure 成本结构 Cost Structure
config.thresholds 生存阈值 Survival Thresholds
config.simulation 模拟设置 Simulation Settings
config.llm_providers LLM 提供商 LLM Providers

WebSocket 消息 (ws)

键值 中文 英文
ws.status_update 状态更新 Status Update
ws.initial_state 初始状态 Initial State
ws.agent_update 代理更新 Agent Update
ws.trade_update 交易更新 Trade Update
ws.alert 警报 Alert

添加新语言

要添加新语言(如日语),请按以下步骤操作:

1. 更新 Language 枚举

# 在 i18n.py 中的 Language 类添加
class Language(str, Enum):
    CHINESE = "zh"
    ENGLISH = "en"
    JAPANESE = "jp"  # 新增

2. 添加翻译字典

# 在 _translations 字典中添加
"jp": {
    "status": {
        "agent_bankrupt": "エージェント破産",
        "config_saved": "設定を保存しました",
        # ... 更多翻译
    },
    # ... 其他分类
}

3. 更新 get_available_languages 方法

def get_available_languages(self) -> Dict[str, str]:
    return {
        "zh": "中文",
        "en": "English",
        "jp": "日本語",  # 新增
    }

4. 添加语言切换功能(前端)

如需前端语言切换,可添加 API 端点:

@app.post("/api/language/{lang}")
async def set_language_endpoint(lang: str) -> Dict[str, str]:
    """切换仪表板语言。"""
    try:
        i18n.set_language(lang)
        return {"status": "success", "message": f"Language set to {lang}"}
    except ValueError as e:
        return {"status": "error", "message": str(e)}

扩展现有翻译

添加新的翻译键值:

from openclaw.dashboard.i18n import I18n

i18n = I18n()

# 添加中文翻译
i18n.add_translation("zh", "new.category.key", "新的值")

# 添加英文翻译
i18n.add_translation("en", "new.category.key", "New Value")

# 使用新键值
text = i18n.t("new.category.key")

最佳实践

  1. 键名规范

    • 使用小写字母和下划线
    • 采用 分类.子分类.键名 的层级结构
    • 例如:status.agent_bankrupt, trade.recent_trades
  2. 变量插值

    • 使用 {variable} 语法
    • 确保所有语言版本包含相同的变量名
    • 示例:"agent {agent_id} 已破产", "Agent {agent_id} has gone bankrupt"
  3. 语言回退

    • 如果当前语言缺少翻译,自动回退到中文
    • 确保中文翻译完整作为基准
  4. 前端集成

    • 前端可直接通过 API 获取翻译
    • 考虑将语言偏好存储在本地存储或用户配置中

集成示例

FastAPI 集成

from fastapi import FastAPI
from openclaw.dashboard.i18n import I18n

app = FastAPI()
i18n = I18n()

@app.get("/api/translations")
async def get_translations(lang: str = "zh"):
    """获取指定语言的完整翻译字典。"""
    i18n.set_language(lang)
    return i18n.get_all_translations()

@app.get("/api/translate/{key}")
async def translate(key: str, lang: str = "zh"):
    """翻译单个键值。"""
    i18n.set_language(lang)
    return {"key": key, "translation": i18n.t(key)}

WebSocket 消息汉化

# app.py 中使用示例
from openclaw.dashboard.i18n import t

# 使用国际化消息
alert = AlertMessage(
    alert_type=AlertType.BANKRUPTCY,
    level=AlertLevel.CRITICAL,
    title=t("alert.bankruptcy_title"),
    message=t("alert.bankruptcy_msg", agent_id=agent.agent_id),
)

更新日志

2024-02-25

  • 创建 i18n.py 国际化工具类
  • 完成 index.html 汉化
  • 完成 config.html 汉化
  • 完成 config.js 汉化
  • 完成 app.py API 消息汉化
  • 创建本文档

待办事项

  • 添加前端语言切换 UI
  • 添加更多语言支持(日语、韩语等)
  • 将翻译持久化到配置文件
  • 支持用户个性化语言设置