781 of 796 strings. The fifteen left are product names, bare URLs and example addresses. Generated by AI, unreviewed, marked Beta, with the report link doing the job a native speaker would.
Decisions
Register is u, following Sie and vous. This is the one of the three most likely to be overturned, and the file says so: Dutch leans informal further and faster than German or French, and je is what most consumer software now uses. It's written down as a single consistent choice precisely so changing it is a find-and-replace rather than an argument.
"Postvak IN" rather than "Inbox" — what Outlook and Thunderbird call it in Dutch.
"Label" stays English, as in German. That's the same rule that made French use "Libellé": use what the reader will meet elsewhere, rather than always translating or never. No Dutch client translates it; Gmail translated it in French.
The separator, again
The folder-context U+0004 needed inserting by script — and in the opposite way to French. There it arrived as a raw control byte and had to be escaped; here it didn't arrive at all. Both are the same underlying awkwardness: U+0004 doesn't survive being written into a file by hand.
The catalogue checker caught it both times by reporting the keys as stale, which is exactly the silent failure it exists for — a translation that looks right, is never looked up, and renders English for ever.
Checks
459 tests, typecheck, build clean. npm run i18n:check reports nl at 98% with no stale keys. Code-split into its own 45 kB chunk.
Still Beta. First things I'd want a Dutch speaker to check: the u/je decision above all, and "Gesprek" vs "Conversatie" for conversation.
**781 of 796 strings.** The fifteen left are product names, bare URLs and example addresses. Generated by AI, unreviewed, marked **Beta**, with the report link doing the job a native speaker would.
## Decisions
**Register is `u`**, following `Sie` and `vous`. This is the one of the three most likely to be overturned, and the file says so: Dutch leans informal further and faster than German or French, and `je` is what most consumer software now uses. It's written down as a single consistent choice precisely so changing it is a find-and-replace rather than an argument.
**"Postvak IN" rather than "Inbox"** — what Outlook and Thunderbird call it in Dutch.
**"Label" stays English**, as in German. That's the same rule that made French use "Libellé": *use what the reader will meet elsewhere*, rather than always translating or never. No Dutch client translates it; Gmail translated it in French.
## The separator, again
The folder-context U+0004 needed inserting by script — and in the *opposite* way to French. There it arrived as a raw control byte and had to be escaped; here it didn't arrive at all. Both are the same underlying awkwardness: U+0004 doesn't survive being written into a file by hand.
The catalogue checker caught it both times by reporting the keys as stale, which is exactly the silent failure it exists for — a translation that looks right, is never looked up, and renders English for ever.
## Checks
459 tests, typecheck, build clean. `npm run i18n:check` reports nl at 98% with no stale keys. Code-split into its own 45 kB chunk.
Still Beta. First things I'd want a Dutch speaker to check: the `u`/`je` decision above all, and "Gesprek" vs "Conversatie" for conversation.
**Merged** 2026-08-31 as coffey-labs/ihasmail@d75618401a7e
<sub>Rebuilt from: git history, session transcript.</sub>
This repo is archived. You cannot comment on issues.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
781 of 796 strings. The fifteen left are product names, bare URLs and example addresses. Generated by AI, unreviewed, marked Beta, with the report link doing the job a native speaker would.
Decisions
Register is
u, followingSieandvous. This is the one of the three most likely to be overturned, and the file says so: Dutch leans informal further and faster than German or French, andjeis what most consumer software now uses. It's written down as a single consistent choice precisely so changing it is a find-and-replace rather than an argument."Postvak IN" rather than "Inbox" — what Outlook and Thunderbird call it in Dutch.
"Label" stays English, as in German. That's the same rule that made French use "Libellé": use what the reader will meet elsewhere, rather than always translating or never. No Dutch client translates it; Gmail translated it in French.
The separator, again
The folder-context U+0004 needed inserting by script — and in the opposite way to French. There it arrived as a raw control byte and had to be escaped; here it didn't arrive at all. Both are the same underlying awkwardness: U+0004 doesn't survive being written into a file by hand.
The catalogue checker caught it both times by reporting the keys as stale, which is exactly the silent failure it exists for — a translation that looks right, is never looked up, and renders English for ever.
Checks
459 tests, typecheck, build clean.
npm run i18n:checkreports nl at 98% with no stale keys. Code-split into its own 45 kB chunk.Still Beta. First things I'd want a Dutch speaker to check: the
u/jedecision above all, and "Gesprek" vs "Conversatie" for conversation.Merged 2026-08-31 as coffey-labs/ihasmail@d75618401a
Rebuilt from: git history, session transcript.