Repository navigation
Translations into 22 languages - #42
Merged
Merged
Conversation
- L10n.Language: ar, da, de, en, es, fi, fr, he, it, ja, ko, ms, nb, nl, pl, pt-BR, ru, sv, th, tr, zh-Hans, zh-Hant. The language is matched against the system's preferred languages the way macOS does it (zh-TW -> zh-Hant, pt-PT -> pt-BR, a missing first choice falls through to the next one); English otherwise. CM_LANGUAGE takes any of the codes. - English and Polish unchanged; the other 20 languages in L10nTranslations+<code>.swift, keyed by the English text like the Polish tables. - Info.plist declares CFBundleLocalizations, so macOS picks the same language for its own parts; the SwiftUI scenes are right-to-left for Arabic and Hebrew. - L10nTests check every key in every language: present, not empty, the same %@ placeholders (or a complete %1$@...%n$@ set), %% kept, no stray %, the same line breaks and indented lines, no control, bidi or zero-width characters, no Polish letters outside Polish. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- CM_LANGUAGE goes through the same matching as the preferred languages, so pl-PL, de_DE, zh_Hant, pt and no work too; an unknown value leaves the system setting in charge. - English is chosen only for an English preference: Foundation answers "en" when nothing matches, and that no longer stops the walk through the preferred languages. - New test: no table may repeat the Polish text, and at most 3% of a table may equal the English key (names, units, words spelled alike). - Proofreading de, fr, ja, ar: one term per role (buffer guard vs backup watchdog), button names quoted as their labels, "deleted" -> "gave up uploading" (ja), Apple's term for Full Disk Access (ar), counts as "Files: %@" in Arabic, imperatives in the French setup steps. - ja/ko: all positional placeholders checked; the yes/no answer in "paused by the guard %@" now follows the question. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mbeczynski
added a commit
that referenced
this pull request
Nov 4, 2026
The 58 vm-encrypt strings in the 20 languages added by #42, one table per language (L10nTranslations+Encryption-<code>.swift) merged into the main one, with each language's existing terms (Keychain, Full Disk Access, the machine, the buffer guard). L10nTests pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AU1Mhxpy65J75YYTkmt7NF
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.
The app, CLI output and notifications in the same 22 languages as the RenaCode games: ar, da, de, en, es, fi, fr, he, it, ja, ko, ms, nb, nl, pl, pt-BR, ru, sv, th, tr, zh-Hans, zh-Hant.
How
L10n.trtables (English text as the key) instead of a String Catalog: the.appis assembled bycloudmachine-agent build-appfromswift buildoutput and the CLI under launchd uses the same strings, so a SwiftPM resource bundle with.lprojfolders would be a new failure point in the release. English and Polish are unchanged.L10nTranslations+<code>.swift.[uk, pl]-> pl); English when nothing matches.CM_LANGUAGEgoes through the same matching (de,de_DE,zh-Hant...).Info.plist:CFBundleDevelopmentRegion+CFBundleLocalizations(22). SwiftUI scenes are right-to-left for ar/he.Tests
L10nTestschecks every key in every language: present and not empty; the same%@(or a complete%1$@...%n$@);%%kept and no stray%; the same line breaks and indented lines; no control, bidi or zero-width characters; no Polish letters outside pl; no entry equal to the Polish text; at most 3% equal to English. Plus language detection, Info.plist vs the language list, and tests of the checks themselves.%@changed to%d, a Polish word put into the German table. Each made the test fail with the right message.swift-format lint --strict,swift build,swift test(318) pass locally.Review
Limits
CFBundleLocalizations), notCM_LANGUAGE.min/hin every language, as before in Polish (BackupHealth.formatAge).%@(no plural rules). Translations use wording that works for any number, such as "Files: %@".Release
Merging to main changes
mac-app/Sources/**andmac-app/Resources/**, sorelease.ymlpublishes a new patch version (DMG + cask). This PR also touchesInfo.plist, so the release workflow runs on the PR as well.A branch merged later that adds
L10n.trkeys (for examplefix/rclone-start-timeout-2) must add them to all 22 tables, orL10nTestsfails.🤖 Generated with Claude Code