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

1 participant