菜单

国际化

相关源文件

本文档解释了 GPT4All 如何实现国际化 (i18n) 来支持多种语言。它涵盖了翻译流程、支持的语言以及如何贡献新的翻译或更新现有翻译。

架构概述

GPT4All 使用 Qt 内置的国际化框架来提供多语言用户界面。该系统基于在源代码中用翻译函数标记字符串,并将翻译存储在单独的文件中,这些文件在运行时根据用户的区域设置进行加载。

图示:国际化流程

来源

支持的语言

GPT4All 目前支持以下语言

语言本地化翻译文件
英语en_USgpt4all_en_US.ts
意大利语it_ITgpt4all_it_IT.ts
罗马尼亚语ro_ROgpt4all_ro_RO.ts
中文(简体)zh_CNgpt4all_zh_CN.ts
西班牙语(墨西哥)es_MXgpt4all_es_MX.ts
葡萄牙语(巴西)pt_BRgpt4all_pt_BR.ts
中文(繁体)zh_TWgpt4all_zh_TW.ts

向用户显示的语言由系统的区域设置决定,因为目前 UI 中没有明确的语言选择功能。

图示:GPT4All 中的语言支持

来源

翻译机制

标记待翻译的字符串

在 GPT4All 中,QML 界面中的所有面向用户的字符串都使用 qsTr() 函数进行翻译标记。此函数接受一个字符串作为输入,并根据当前区域设置在运行时返回其翻译后的版本。

来自 main.qml 的示例

来自 ChatView.qml 的示例

来源

翻译文件结构

翻译文件使用基于 XML 的 .ts 格式,其中包含上下文(通常对应于 QML 文件)、消息(待翻译的字符串)及其翻译。

在此结构中

  • <context> 按源上下文(通常是 QML 文件)对消息进行分组
  • <message> 包含原始文本及其翻译
  • <location> 标识字符串在源代码中的位置

来源

国际化的 UI 组件

GPT4All 在应用程序的许多 UI 组件中实现了国际化。

图示:国际化的 UI 组件

来源

添加或更新翻译

要添加新翻译或更新现有翻译

  1. 使用 lupdate 提取可翻译的字符串

    lupdate gpt4all-chat -ts gpt4all-chat/translations/gpt4all_<locale>.ts
    
  2. 使用 Qt Linguist 编辑 .ts 文件提供翻译。

  3. 将翻译编译为二进制 .qm 格式

    lrelease gpt4all-chat/translations/gpt4all_<locale>.ts
    
  4. 将编译后的文件包含在应用程序的资源中。

图示:翻译工作流

来源

翻译最佳实践

翻译 GPT4All 字符串时

  1. 保留格式:在翻译后的字符串中保留 HTML 标签和占位符(例如 %1%2)。

  2. 上下文感知:使用 Qt Linguist 理解每个字符串的上下文。

  3. 遵守 UI 空间限制:某些语言比英语需要更多的空间。UI 应适应不同的文本长度。

  4. 测试翻译:验证翻译是否正确显示并且不会破坏 UI 布局。

  5. 一致性:在整个应用程序中保持一致的术语。

未来改进

GPT4All 国际化系统的潜在增强功能可能包括

  1. 语言选择 UI:添加显式语言选择,而不是仅依赖系统区域设置。

  2. 运行时语言切换:允许在不重新启动应用程序的情况下更改语言。

  3. 翻译完整性指标:用于跟踪翻译覆盖率百分比的工具。

  4. 贡献者指南:为翻译人员提供的具体文档。