Surfaced by a pilot test (Claude Code Opus 4.7 against examples/after/, 2026-05-24). Full feedback: dialect-feed.md.
Problem
The convention tells the agent to include both an exact-match =1 and the CLDR one category in every plural. For most target locales we ship (en/es/de/ja/vi/ar), CLDR one matches only n=1. After =1 matches, one is dead code, and flutter gen-l10n correctly warns:
[app_de.arb:checkoutNights] ICU Syntax Warning: The plural part specified below is overridden by a later plural part.
{nights, plural, =1{1 Nacht} one{{nights} Nacht} other{...}}
Harmless at runtime, but every adopter sees these on first sync.
Options
- (A) Refine the convention: "If your locale's
one covers values beyond 1 (Russian, Polish), include both. If one matches only n=1, prefer =1 and skip one." Most teachable.
- (B) Add
dialect check / dialect lint-plurals detection of the overlap + --fix to remove redundant one.
- (C) Document the warning is intentional belt-and-braces.
The original reporter votes (A) with (B) as enforcement.
Acceptance
dialect.yaml's plural section explicitly distinguishes CLDR-one-only-equals-1 locales from CLDR-one-broader locales.
dialect check flags redundant =1+one pairs in locales where one matches only 1.
Surfaced by a pilot test (Claude Code Opus 4.7 against
examples/after/, 2026-05-24). Full feedback:dialect-feed.md.Problem
The convention tells the agent to include both an exact-match
=1and the CLDRonecategory in every plural. For most target locales we ship (en/es/de/ja/vi/ar), CLDRonematches only n=1. After=1matches,oneis dead code, andflutter gen-l10ncorrectly warns:Harmless at runtime, but every adopter sees these on first sync.
Options
onecovers values beyond 1 (Russian, Polish), include both. Ifonematches only n=1, prefer=1and skipone." Most teachable.dialect check/dialect lint-pluralsdetection of the overlap +--fixto remove redundantone.The original reporter votes (A) with (B) as enforcement.
Acceptance
dialect.yaml's plural section explicitly distinguishes CLDR-one-only-equals-1 locales from CLDR-one-broader locales.dialect checkflags redundant=1+onepairs in locales whereonematches only 1.