mirror of
https://github.com/xweiba/location-spoofer.git
synced 2026-09-26 08:31:53 +08:00
fix(i18n): 完善国际化并迁移 WLOC 脚本
This commit is contained in:
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
STRINGS="$ROOT/Resources/en.lproj/Localizable.strings"
|
||||
|
||||
fail() {
|
||||
echo "FAIL: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
plutil -lint "$STRINGS" >/dev/null || fail "English localization file is invalid"
|
||||
|
||||
ruby - "$STRINGS" <<'RUBY' || exit 1
|
||||
path = ARGV.fetch(0)
|
||||
entries = File.readlines(path).map do |line|
|
||||
match = line.match(/^"((?:\\.|[^"])*)"\s*=\s*"((?:\\.|[^"])*)";/)
|
||||
[match[1], match[2]] if match
|
||||
end.compact
|
||||
|
||||
duplicates = entries.group_by(&:first).select { |_key, values| values.length > 1 }.keys
|
||||
abort "FAIL: duplicate English localization keys: #{duplicates.join(', ')}" unless duplicates.empty?
|
||||
|
||||
placeholder = /%(?:\d+\$)?(?:@|lld|ld|d|f)/
|
||||
entries.each do |source, target|
|
||||
source_count = source.scan(placeholder).length
|
||||
target_count = target.scan(placeholder).length
|
||||
abort "FAIL: placeholder mismatch for #{source.inspect}" unless source_count == target_count
|
||||
end
|
||||
RUBY
|
||||
|
||||
for key in \
|
||||
'环境信息' \
|
||||
'诊断日志' \
|
||||
'======== 代理验证测试 ========' \
|
||||
'======== 第三方代理连接检测 ========' \
|
||||
'======== 第三方代理运行检测 ========' \
|
||||
'第三方代理测试模式:模块连接成功;已保存坐标=%@' \
|
||||
'成功:{\"success\":true,\"longitude\":113.0,\"latitude\":22.0,\"accuracy\":25}\n失败:{\"success\":false,\"error\":\"错误说明\"}'; do
|
||||
grep -Fq "\"$key\" = " "$STRINGS" || fail "missing critical English localization: $key"
|
||||
done
|
||||
|
||||
grep -q 'localizedCategory' "$ROOT/Shared/RuntimeLog.swift" \
|
||||
|| fail "runtime log categories must be localized when rendered"
|
||||
grep -q 'localizedDetailsText' "$ROOT/App/DiagnosticsView.swift" \
|
||||
|| fail "runtime log details must be localized in the diagnostics UI"
|
||||
grep -q 'String(localized: "诊断日志")' "$ROOT/App/BugReportView.swift" \
|
||||
|| fail "generated bug reports must localize their diagnostic section"
|
||||
grep -q 'log(" " + e.localizedMessage)' "$ROOT/App/SetupCoordinator.swift" \
|
||||
|| fail "bug-report verification logs must render stored messages in the active language"
|
||||
|
||||
if grep -R -n 'raw.githubusercontent.com/Yu9191/wloc' \
|
||||
"$ROOT/App" "$ROOT/Shared" "$ROOT/Resources/ThirdPartyProxyModules" \
|
||||
"$ROOT/ThirdParty/WlocScripts/modules"; then
|
||||
fail "deleted Yu9191/wloc repository must not remain a runtime dependency"
|
||||
fi
|
||||
|
||||
echo "PASS: localization and diagnostic export contract"
|
||||
Reference in New Issue
Block a user