Skip to content

feat(i18n): 添加中文(简体)本地化支持及 Token 用量统计#255

Open
xiaoguomeiyitian wants to merge 5 commits into
JohnnyZ93:mainfrom
xiaoguomeiyitian:main
Open

feat(i18n): 添加中文(简体)本地化支持及 Token 用量统计#255
xiaoguomeiyitian wants to merge 5 commits into
JohnnyZ93:mainfrom
xiaoguomeiyitian:main

Conversation

@xiaoguomeiyitian
Copy link
Copy Markdown

@xiaoguomeiyitian xiaoguomeiyitian commented May 16, 2026

feat(i18n): 添加中文(简体)本地化支持及 Token 用量统计

🇨🇳 中文说明

本 PR 引入两项主要功能:

  1. 完整的中文(简体)本地化 - 全面的 i18n 支持,使扩展完全支持中文用户
  2. Token 用量统计 - 按供应商监控每日和累计 Token 消耗,提供可视化统计

✨ 新增内容

🌐 国际化 (i18n) 支持

新增文件:

  • src/i18n.ts - TypeScript 国际化工具模块
  • package.nls.json - VS Code 英文翻译文件
  • package.nls.zh-cn.json - VS Code 中文翻译文件

新增功能:

  • 150+ 条中英文翻译字符串
  • WebView 自动语言检测机制
  • 所有用户可见消息的双语支持
  • 标准 VS Code NLS 集成

📊 Token 用量统计系统

新增文件:

  • src/tokenUsage/tokenUsageTypes.ts - 数据结构定义
  • src/tokenUsage/tokenUsageTracker.ts - 核心追踪逻辑
  • src/tokenUsage/tokenUsageView.ts - 统计面板 WebView

新增命令:

  • oaicopilot.showTokenUsage - 显示 Token 用量统计面板
  • oaicopilot.resetTokenUsage - 重置所有统计数据
  • oaicopilot.exportTokenUsage - 导出 Token 用量数据

新增配置项:

  • oaicopilot.tokenUsageEnabled - 启用/禁用 Token 用量统计(默认:false 关闭)

🔧 核心功能

1. 国际化 (i18n)

TypeScript 端

  • I18N.xxx() 方法返回本地化文本
  • t() 函数支持双语参数
  • isZh() 判断是否为中文环境
  • 基于 vscode.env.language 自动选择语言

WebView 端

  • HTML lang 属性使用 %LOCALE% 占位符(由 VS Code NLS 注入)
  • 所有 UI 元素添加 data-i18n 属性
  • configView.js 包含完整翻译表,自动检测语言并翻译
  • 支持 14 种提交语言选项的本地化

VS Code 贡献点

  • package.json 使用 %displayName%%description%%command.*% 占位符
  • 标准 NLS 机制,与 VS Code 语言设置同步

2. Token 用量统计

预聚合存储设计

  • 不存储单条请求记录,仅存储聚合数据
  • 按供应商分组,保留每日 + 总计统计
  • 存储大小仅与(供应商数 × 保留天数)成正比,与请求次数无关
  • 自动清理过期数据(保留最近 30 天每日明细)

统计指标

  • Prompt Tokens - 输入 token 数
  • Completion Tokens - 输出 token 数
  • Total Tokens - 总 token 数
  • Request Count - 请求次数

数据结构

interface TokenUsageStorage {
  version: number;              // 数据版本,用于迁移
  providers: {                  // 按供应商分组
    [provider: string]: {
      daily: {                   // 每日统计
        "YYYY-MM-DD": {
          promptTokens: number;
          completionTokens: number;
          totalTokens: number;
          requestCount: number;
        };
      };
      total: {                   // 累计统计
        promptTokens: number;
        completionTokens: number;
        totalTokens: number;
        requestCount: number;
      };
    };
  };
  lastCleanup: number;          // 上次清理时间戳
}

- Add src/i18n.ts with t(), I18N, isZh() APIs for TypeScript-side localization
- Add package.nls.json and package.nls.zh-cn.json for VS Code extension NLS
- Localize all hardcoded English strings in extension.ts, provider.ts, provideModel.ts, configView.ts, commitMessageGenerator.ts
- Add data-i18n attribute markers to configView.html for WebView localization
- Add complete i18n translation table (150+ entries) in configView.js with auto language detection
- All UI text now displays in Chinese when VS Code language is set to zh-cn
Your Name added 2 commits May 19, 2026 12:51
- 将HTML lang属性改为动态变量%LOCALE%
- 为commitLanguage选项添加data-i18n属性支持国际化
- 新增tokenUsageEnabled配置项用于跟踪token消耗
- 优化多个字段描述文本以提高清晰度
@xiaoguomeiyitian
Copy link
Copy Markdown
Author

xiaoguomeiyitian commented May 22, 2026

今天改进了一下中文翻译和增加 Token 用量统计,默认关闭,希望大佬早日合并,感谢
image
image
image
image
image

@xiaoguomeiyitian xiaoguomeiyitian changed the title feat(i18n): add Chinese (Simplified) localization support / 添加中文(简体)本地化支持 feat(i18n): 添加中文(简体)本地化支持及 Token 用量统计 May 22, 2026
@xiaoguomeiyitian xiaoguomeiyitian marked this pull request as draft May 22, 2026 15:19
@xiaoguomeiyitian xiaoguomeiyitian marked this pull request as ready for review May 22, 2026 15:19
Your Name added 2 commits May 26, 2026 11:57
- 优化 `valBothMaxTokens` 错误提示,明确建议使用 `max_completion_tokens`
- 将 `tokenUsageContext` 文本从 "Token 使用量" 调整为 "上下文窗口"
- 重命名 `commitGenerationFailed` 为 `commitGenFailed` 以保持命名一致
- 新增多项错误提示与配置项,包括 Git 扩展未找到、无可用仓库、SCM 仓库未找到、无变更、未配置提交模型等
- 补充默认提交提示词、图片处理相关错误提示及 Git 环境检测提示
- Anthropic API: 移除 `includeReasoningInRequest` 配置依赖,当消息历史包含思考内容时,自动在请求中包含 `thinking` 块,以满足 DeepSeek 等推理模型的要求
- OpenAI API (Chat & Responses): 移除配置检查,始终收集并传递 `reasoning_content` 或 `LanguageModelThinkingPart`,确保推理模型获得完整上下文
- Gemini API: 新增对 `LanguageModelThinkingPart` 的解析与传递,在请求中正确包含历史思考内容
- tokenUsageView: 按 promptTokens 降序排序提供商统计,优化图表尺寸 (950x300) 及 SVG 宽度设置
- i18n: 删除未使用的 `providerIdRequired2` 翻译键
- extension: 为 `generateGitCommitMessage` 命令添加 `await` 以确保异步操作完成
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant