From 529bfb434116d10794a98dc9cb545fbb09a88775 Mon Sep 17 00:00:00 2001 From: Michael Wu Date: Sun, 20 Sep 2026 05:28:27 +0900 Subject: [PATCH] test(app): require Arabic provider usage plurals --- packages/app/src/i18n/resources.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/app/src/i18n/resources.test.ts b/packages/app/src/i18n/resources.test.ts index 055383077b..be680095c6 100644 --- a/packages/app/src/i18n/resources.test.ts +++ b/packages/app/src/i18n/resources.test.ts @@ -21,6 +21,15 @@ function flattenKeys(value: unknown, prefix = ""): string[] { } const pluralSuffixPattern = /_(zero|one|two|few|many|other)$/; +const arabicPluralSuffixes = ["zero", "one", "two", "few", "many", "other"] as const; +const arabicProviderUsagePluralKeys = [ + "providerUsage.duration.days", + "providerUsage.duration.hours", + "providerUsage.duration.minutes", + "providerUsage.timing.daysAgo", + "providerUsage.timing.hoursAgo", + "providerUsage.timing.minutesAgo", +] as const; function canonicalKeys(value: unknown): string[] { const keys = flattenKeys(value); @@ -131,6 +140,15 @@ describe("translation resources", () => { expect(canonicalKeys(zhCN)).toEqual(englishKeys); }); + it("includes every Arabic form for provider-usage durations", () => { + const arabicStrings = flattenStrings(ar); + for (const key of arabicProviderUsagePluralKeys) { + for (const suffix of arabicPluralSuffixes) { + expect(arabicStrings[`${key}_${suffix}`]).toBeTypeOf("string"); + } + } + }); + it("keeps non-English supported languages translated beyond fallback labels", () => { const totalStrings = Object.keys(flattenStrings(en)).length; const maxFallbackStrings = Math.floor(totalStrings * 0.25);