| | |
| | | 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", |
| | |
| | | "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", |
| | |
| | | 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") |
| | | |
| | |
| | | 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") |
| | | |
| | |
| | | |
| | | 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: " |