Ariver
2026-07-02 0d1218cce36efb2413d727189d0abf5b511373ab
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,12 @@
    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")
@@ -132,6 +144,12 @@
    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")
@@ -203,6 +221,8 @@
    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: "