Skip to content

Add Chinese (Simplified & Traditional) localization support - #490

Open
fishegg666 wants to merge 1 commit into
nillerusr:masterfrom
fishegg666:feature/chinese-localization
Open

fishegg666 wants to merge 1 commit into
nillerusr:masterfrom
fishegg666:feature/chinese-localization

Conversation

@fishegg666

Copy link
Copy Markdown

概述

为 Source Engine 添加简体中文和繁体中文本地化支持,主要针对 Android/GDroid 平台。

主要改动

1. 语言选择界面

  • 新增 OptionsSubLanguage 选项页,集成到选项对话框中
  • 支持切换:英语、简体中文、繁体中文、日语、韩语、德语、法语、西班牙语、俄语
  • 切换语言后自动重新加载本地化文件

2. 中文本地化文件

创建以下简体中文文件:

  • gameui_schinese.txt - 游戏界面(主菜单、选项、对话框等)
  • valve_schinese.txt - Valve 通用字符串
  • platform_schinese.txt - 平台通用字符串
  • vgui_schinese.txt - VGUI 通用字符串

创建对应繁体中文文件(*_tchinese.txt)

3. Android 语言检测

  • 自动从系统属性检测设备语言(persist.sys.locale / ro.product.locale)
  • 设置 LANG 环境变量,引擎自动选择对应本地化

4. Android 启动器修复

  • 修复 JNI GetStringUTFChars 内存泄漏(添加 ReleaseStringUTFChars)
  • 使用 __system_property_get 替代 popen(getprop),避免 fork shell 进程
  • 使用 sysinfo() 系统调用替代解析 /proc/meminfo
  • strncpy 添加 null 终止保护

5. 语言设置持久化

  • 为 cl_language 添加 FCVAR_ARCHIVE 标志,语言选择跨会话保存

字体支持

引擎已内置中文字体支持(DroidSansFallback.ttf),当语言设为 schinese/tchinese 时自动使用。

注意

  • 本地化文件需要放置到游戏的 resource/ 目录(如 garrysmod/resource/)
  • 未翻译的字符串会自动回退到英语
  • 目录名、文件名、玩家名称等保持英文不变

- Add language selection page in Options dialog (OptionsSubLanguage)
- Support switching between English, Simplified Chinese, Traditional Chinese,
  Japanese, Korean, German, French, Spanish, Russian
- Auto-reload localization files when language changes
- Create Simplified Chinese localization files:
  gameui_schinese.txt, valve_schinese.txt, platform_schinese.txt, vgui_schinese.txt
- Create Traditional Chinese localization files:
  gameui_tchinese.txt, valve_tchinese.txt, platform_tchinese.txt, vgui_tchinese.txt
- Android: auto-detect system language from system properties
- Android: fix JNI string leaks (release GetStringUTFChars)
- Android: use __system_property_get instead of popen(getprop)
- Android: use sysinfo() for memory detection
- Add FCVAR_ARCHIVE to cl_language so language setting persists
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