module_string_locale 表
module_string_locale表提供模块字符串的多语言翻译,按模块、条目和语言代码分组。
表概述
module_string_locale表是module_string的多语言扩展,存储各语言版本的翻译文本。module和id必须对应module_string中已存在的记录,locale为语言代码枚举。
主键为 (module, id, locale),支持8种语言:koKR/frFR/deDE/zhCN/zhTW/esES/esMX/ruRU。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| module | VARCHAR(255) | NOT NULL | 模块目录名(主键,对应module_string.module) |
| id | INT UNSIGNED | NOT NULL | 模块内字符串编号(主键) |
| locale | ENUM | NOT NULL | 语言代码(主键) |
| string | TEXT | NOT NULL | 对应语言的翻译文本 |
重要字段详解
locale (语言枚举)
支持的语言代码:
- koKR - 韩文
- frFR - 法文
- deDE - 德文
- zhCN - 简体中文
- zhTW - 繁体中文
- esES - 西班牙文
- esMX - 墨西哥西班牙文
- ruRU - 俄文
实战案例
为模块字符串添加中文翻译
INSERT INTO module_string_locale (module, id, locale, string)
VALUES ('mod-cfbg', 1, 'zhCN', '欢迎来到跨阵营战场!');
查询某模块字符串的所有翻译
SELECT ms.module, ms.id, ms.string AS default_text,
msl.locale, msl.string AS translated_text
FROM module_string ms
LEFT JOIN module_string_locale msl ON ms.module = msl.module AND ms.id = msl.id
WHERE ms.module = 'mod-cfbg'
ORDER BY ms.id, msl.locale;
常见问题
Q: 翻译未生效?
A: 确认三要素:(1) module_string中存在对应记录;(2) locale语言代码完全匹配;(3) 客户端语言设置与该locale对应。使用.reload module_string_locale热加载。
Q: 是否需要为所有语言提供翻译?
A: 不需要。如果某语言没有翻译记录,系统回退使用module_string.string(默认英文文本)。