Files
dafuweng-saiadmin6.x/server/scripts/gen_api_msg_keys.php

51 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
/**
* 将 “中文=>英文” 的历史映射(可临时放在 $legacy 变量里)转换为英文 key 映射:
* - resource/translations/api/en.php: key=MSG_XXXXXXXX, value=英文
* - resource/translations/api/zh.php: key=MSG_XXXXXXXX, value=中文
*
* 同时保留 resource/translations/api/{zh,en}.php 中已存在的显式英文错误码。
*/
$root = dirname(__DIR__);
$enPath = $root . '/resource/translations/api/en.php';
$zhPath = $root . '/resource/translations/api/zh.php';
$legacy = [];
$en = is_file($enPath) ? (require $enPath) : [];
$zh = is_file($zhPath) ? (require $zhPath) : [];
foreach ($legacy as $cn => $enVal) {
if (!is_string($cn) || $cn === '' || !is_string($enVal)) {
continue;
}
$key = 'MSG_' . strtoupper(sprintf('%08X', crc32($cn)));
if (!isset($en[$key])) {
$en[$key] = $enVal;
}
if (!isset($zh[$key])) {
$zh[$key] = $cn;
}
}
$dump = static function (array $arr): string {
ksort($arr);
$out = "<?php\ndeclare(strict_types=1);\n\nreturn [\n";
foreach ($arr as $k => $v) {
$k = str_replace("'", "\\'", (string) $k);
$v = str_replace("'", "\\'", (string) $v);
$out .= " '{$k}' => '{$v}',\n";
}
$out .= "];\n";
return $out;
};
file_put_contents($enPath, $dump($en));
file_put_contents($zhPath, $dump($zh));
echo "done\n";