From b2a06ec5ebc86c0241e635782ae5a032ab5aad0a Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 02 Jul 2026 02:43:51 +0800
Subject: [PATCH] Prepare TagLauncher 8.3.2 App Store candidate
---
src/Scripts/pro_localization_qa.sh | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/src/Scripts/pro_localization_qa.sh b/src/Scripts/pro_localization_qa.sh
index dba4f4c..b1a953c 100755
--- a/src/Scripts/pro_localization_qa.sh
+++ b/src/Scripts/pro_localization_qa.sh
@@ -22,6 +22,8 @@
REQUIRED_PLACEHOLDERS = {
"pro.notes.remaining": {"%limit%", "%remaining%"},
"pro.theme.status.previewCountdown": {"%time%"},
+ "pro.customContainers.quotaShort": {"%used%", "%limit%"},
+ "pro.customContainers.quotaPrompt": {"%used%", "%limit%", "%remaining%"},
}
REQUIRED_NON_PRO_KEYS = [
"settings.proStatus.freeUser",
@@ -36,6 +38,10 @@
"settings.proStatus.unsupportedFeature",
"settings.proStatus.unavailableFeature",
"settings.proStatus.previewFiveMinutes",
+ "settings.proStatus.maxSixTags",
+ "settings.proStatus.unlimitedTags",
+ "settings.proStatus.previewOnly",
+ "settings.proStatus.supported",
"settings.proFeature.appNotes",
"settings.proFeature.dataBackup",
"settings.proBenefit.general",
@@ -122,6 +128,14 @@
fail("en.json Pro comparison unlimited notes status must include the leading checkmark")
if english.get("settings.proStatus.unlockedFeature") != "✅ Unlocked":
fail("en.json Pro comparison unlocked status must be '✅ Unlocked'")
+if english.get("settings.proStatus.supported") != "✅ Supported":
+ fail("en.json Pro comparison supported status must be '✅ Supported'")
+if english.get("settings.proStatus.unlimitedTags") != "✅ No limit":
+ fail("en.json Pro comparison unlimited tag status must be '✅ No limit'")
+if english.get("pro.customContainers.quotaShort") != "Free users can use 6 custom tags (containers): %used% / %limit% used":
+ fail("en.json custom container quota line must use the approved free-user wording")
+if english.get("settings.proStatus.proUser") != "You are currently a valued Pro user":
+ fail("en.json settings.proStatus.proUser must not duplicate the crown icon in text")
zh_hans = load_json(localization_dir / "zh-Hans.json")
if zh_hans.get("settings.proStatus.lockedFeature") != "✅支持":
@@ -130,6 +144,14 @@
fail("zh-Hans.json Pro comparison unlimited notes status must be '✅无限备注'")
if zh_hans.get("settings.proStatus.unlockedFeature") != "✅已解锁":
fail("zh-Hans.json Pro comparison unlocked status must be '✅已解锁'")
+if zh_hans.get("settings.proStatus.supported") != "✅支持":
+ fail("zh-Hans.json Pro comparison supported status must be '✅支持'")
+if zh_hans.get("settings.proStatus.unlimitedTags") != "✅没有限制":
+ fail("zh-Hans.json Pro comparison unlimited tag status must be '✅没有限制'")
+if zh_hans.get("pro.customContainers.quotaShort") != "免费用户可以使用6个自定义标签(容器):已使用 %used% / %limit%":
+ fail("zh-Hans.json custom container quota line must use the approved free-user wording")
+if zh_hans.get("settings.proStatus.proUser") != "您当前是尊贵的 Pro 用户":
+ fail("zh-Hans.json settings.proStatus.proUser must be the approved centered Pro identity sentence")
ko = load_json(localization_dir / "ko.json")
if ko.get("quickSearch.hotkeys") != "키보드 단축키":
@@ -197,6 +219,11 @@
if copied_english:
fail(f"{code}.json copies English Pro copy: {', '.join(copied_english)}")
+ if "👑" in data.get("settings.proStatus.proUser", ""):
+ fail(f"{code}.json settings.proStatus.proUser must not duplicate the crown icon")
+ if not data.get("settings.proStatus.unlimitedTags", "").startswith("✅"):
+ fail(f"{code}.json settings.proStatus.unlimitedTags must include the leading checkmark")
+
print(
"PASS Pro localization QA: "
f"{len(language_codes)} languages, {len(pro_keys) + len(REQUIRED_NON_PRO_KEYS) + len(REQUIRED_VISIBLE_SETTINGS_KEYS)} Pro/settings keys, "
--
Gitblit v1.9.3