Two places the app still spoke English in every language - #126
Merged
suskozaver merged 1 commit intoSep 16, 2026
Merged
Conversation
Both were found by reading the app rather than by grepping it, which
is the point of the note added to 06-traps.md: the file-level check
for a component that never imports useLang cannot see either of these,
because both sit in files that use it everywhere else.
The add button on the water shelf was built as `Add ${count} bottles`
in JSX, so a Slovenian install offered "Add 4 bottles". It is now a
plural family, which it has to be: one steklenicka, two steklenicki,
three steklenicke, five steklenick, and a number glued to a noun is an
English habit that no Slavic language forgives. The neighbouring
stock_add_bottle moves from "steklenico" to "stekleničko" so the two
buttons in one panel use one word for one thing.
The rescue notice built its sentence from RECORD_LABEL in
calc/rescue.ts, an English noun and its plural per collection. That is
the rule this project wrote down after describePhase: a module under
src/lib/calc may return an id, a number or a date, and if it is about
to return a sentence, the sentence belongs to whoever renders it. So
describeLoss and RECORD_LABEL are gone, lostCount returns the number,
and the screen holds a Record<RecordKey, PluralBase> from collection
to plural family. Typed as a total record, so adding a collection to
RECORD_KEYS fails to compile until it has a name, rather than printing
a count with no noun on the one screen that only appears after a data
loss.
Five of the eleven collections already had a family. Six are new, in
four languages. The Polish forms want a native reader, as the rest of
the Polish does.
|
Someone is attempting to deploy a commit to the Arun's projects Team on Vercel. A member of the Team first needs to authorize it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both were found by reading the app rather than by grepping it, which is the point of the note added to
06-traps.md. The file-level check for a component that never importsuseLangcannot see either of these: both sit in files that use it everywhere else.The add button on the water shelf
Built as
Add {count > 1 ? \${count} bottles` : "bottle"}` in JSX, so a Slovenian install offered "Add 4 bottles".Now a plural family, which it has to be. One steklenička, two steklenički, three stekleničke, five stekleničk: a number glued to a fixed noun is an English habit no Slavic language forgives. Checked against
Intl.PluralRulesfor each form in each language rather than assumed.The neighbouring
stock_add_bottlemoves from "steklenico" to "stekleničko", so the two buttons in one panel use one word for one thing.The rescue notice
It built its sentence from
RECORD_LABELincalc/rescue.ts: an English noun and its plural for each collection, joined into "3 bottles of water, 2 vials". Untranslatable, on the one screen that only ever appears after a data loss.That is the rule this project already wrote down after
describePhase: a module undersrc/lib/calcmay return an id, a number or a date, and if it is about to return a sentence, the sentence belongs to whoever renders it.So
describeLossandRECORD_LABELare gone.lostCountreturns the number, and the screen holds aRecord<RecordKey, PluralBase>from collection to plural family. Typed as a total record on purpose: adding a collection toRECORD_KEYSnow fails to compile until it has a name, rather than printing a count with no noun at the worst possible moment.Five of the eleven collections already had a family. Six are new, in four languages.
Checks
npx tsc --noEmit,npx next lint,npm testandTZ=America/New_York npm test: 63 files, 1643 tests, no warnings. The plural forms were also printed for 1, 2, 3 and 5 in each language and read before shipping.The Polish forms want a native reader, as the rest of the Polish does.