diff --git a/server/app/api/util/ApiLang.php b/server/app/api/util/ApiLang.php index 74740f7..54f5ebb 100644 --- a/server/app/api/util/ApiLang.php +++ b/server/app/api/util/ApiLang.php @@ -62,6 +62,17 @@ class ApiLang return (string) $map[$key]; } + // 兼容旧版:历史代码直接抛中文 message,lang=en 时从 legacy_en.php 映射到英文 + if ($lang === self::LANG_EN) { + $legacy = self::loadLegacyEnMessages(); + if (isset($legacy[$message])) { + return (string) $legacy[$message]; + } + if ($key !== null && isset($legacy[$key])) { + return (string) $legacy[$key]; + } + } + return $message; } @@ -108,6 +119,22 @@ class ApiLang return 'MSG_' . strtoupper(sprintf('%08X', crc32($trim))); } + /** + * 加载中文原文 => 英文 的兼容映射(仅 lang=en 使用) + * @return array + */ + private static function loadLegacyEnMessages(): array + { + $path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'lang' . DIRECTORY_SEPARATOR . 'legacy_en.php'; + if (is_file($path)) { + $data = require $path; + if (is_array($data)) { + return $data; + } + } + return []; + } + /** * 带占位符的翻译,如 translateParams('当前玩家余额%s小于%s无法继续游戏', [$coin, $minCoin]) * 先翻译再替换(en 文案使用 %s 占位)