Repository navigation
i18n: add Dutch localization to the Apple apps - #2866
Open
Lukasjoosten wants to merge 1 commit into
Open
Lukasjoosten wants to merge 1 commit into
Lukasjoosten wants to merge 1 commit into
Conversation
Adds Dutch as a complete, selectable language on macOS, iOS and watchOS, as the Apple counterpart of the Android Dutch localization, following the shape of the Italian one (ryanbr#2454). Every translatable key in the four catalogs gains an `nl` unit: Strand (4126), StrandDesign (57), NOOPWatch (69) and NOOPWatchComplications (30). Keys that carry plural variations in any locale get Dutch `one`/`other` forms (79). About 1,400 strings reuse the reviewed Android Dutch wherever the English source is identical, with Android placeholders mapped to the Apple shapes; the rest were translated against the same glossary. `AppLanguage` gains the case and the autonym "Nederlands", with a test mirroring the Italian one. Verified mechanically: - every translatable key has a translated `nl` unit; the placeholder multiset of every form matches the key, `%%` counts match, and newline counts match the English (three tempo strings whose English value alone carries a leading "\n\n" follow the key and the other locales instead) - the catalogs were appended rather than re-serialised: removing the inserted text reproduces the original bytes. 411 single-line Strand entries are necessarily edited in place; everything else is pure line additions - the echo baselines were recomputed with the audit's own predicate: 27 for Strand and 2 for NOOPWatchComplications, each a brand, a metric abbreviation, a proper name kept as on Android, or wording that is already correct Dutch - the extra-locale allowances for `nl` start at 0 in all four catalogs The translations were machine-assisted against a fixed glossary and reviewed by a native Dutch speaker. Refs ryanbr#2864 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Refs #2864
Adds Dutch (
nl) to the Apple apps (macOS, iOS, watchOS), as the counterpart of the Android Dutch localization in #2865. It follows the shape of the Italian localization (#2454).What changes
nlunit inStrand(4126),StrandDesign(57),NOOPWatch(69) andNOOPWatchComplications(30). Keys with plural variations in any locale get Dutchone/otherforms (79 keys).%1$s→%@,%1$d→%lld, positional only where Dutch reorders arguments).AppLanguage: gainscase dutch = "nl"afteritalian, with the autonym "Nederlands", and a test mirroring the Italian one.i18n_extra_locale_baseline.txtgetsnl 0for all four catalogs, so Dutch fails CI on any new English-only string.i18n_echo_baseline.txtgetsStrand … nl 27andNOOPWatchComplications … nl 2.Verification
nlunit.%%counts match.\n\nthat no other locale has, so the Dutch follows the key and the other locales.oneandother, and all four catalogs parse as JSON.Strandsit on a single line, so they are necessarily edited in place (insertion only). Everything else is pure line additions.i18n_audit.py --ci upstream/main: clean fornl. Locally on Windows the only FAIL/STALE pairs are the known\vs/path artifact forruandzh-Hant.unittest discover -s Tools: 338 tests, with the same 4test_check_source_referencesfailures as a cleanupstream/maincopy on the same Windows machine.AppLanguage.swiftandAppLanguageTests.swiftare validated only byapp-build.ymlon this PR.Translation
The translations were machine-assisted against a fixed glossary and reviewed by a native Dutch speaker (the PR author). The glossary is the one approved for the Android half: informal "je", sentence case, NOOP's own Charge/Effort/Rest → Lading/Inspanning/Rust, kept distinct from the WHOOP terms Recovery/Strain → Herstel/Belasting.
Noticed while translating (not changed here)
yr%@,year%@), so non-English locales get a stray suffix.MarkerEditorViewparses values withDouble(_:), which rejects a decimal comma, so the Dutch hint keeps "bijv. 3.1". This affects every comma-decimal locale.🤖 Generated with Claude Code