Docs: Add Ukrainian to supported languages & Improved consistency with MacOS guidelines#7
Conversation
domzilla
left a comment
There was a problem hiding this comment.
Translation Quality
The Ukrainian translation improvements look solid and align well with Apple's macOS localization guidelines:
| Key | Old | New | Verdict |
|---|---|---|---|
| "Quit" | Вихід | Завершити | ✅ Matches Apple's macOS standard |
| "Activate for" | Активувати на | Увімкнути на | ✅ More natural macOS terminology |
| "Welcome to Caffeine" | Ласкаво просимо в | Вітаємо в | ✅ More concise |
| Instruction text | verbose | simplified | ✅ Clearer and shorter |
| Sleep deactivation | Вимикати при ручному переході... | Вимикати, коли пристрій переходить у сон вручну | ✅ More natural sentence structure |
CHANGELOG entry is correctly placed under [Unreleased] > Changed. Nice work overall!
Merge Conflicts
The PR currently has merge conflicts because master has moved forward since your fork:
- The resources directory was renamed from
Ressources/toResources/on master — youruk.lproj/Localizable.stringschanges target the old path. - AGENTS.md has been restructured — the version in your fork no longer matches master.
Please rebase onto current master to resolve these.
Terminology Inconsistency
Your updated instruction string now uses "смузі меню" for "menu bar", but the unchanged "Right-click" string still uses "рядку меню" for the same concept. Could you update that line as well so the terminology is consistent throughout?
- Use "смузі меню" consistently for "menu bar" (was "рядку меню" in one place) - Use "Увімкнути" consistently for "Activate" (was "Активувати" in one place)
domzilla
left a comment
There was a problem hiding this comment.
All feedback addressed — translations are consistent and conflicts resolved. Looks great, thanks for the contribution!
domzilla#5 PreferencesView no longer writes CAAllowLidClose to UserDefaults twice. CaffeineViewModel.setAllowLidClose now only forwards the new flag to SleepPreventionManager; persistence is owned by PreferencesView's @AppStorage binding. domzilla#6 SleepPreventionManager now releases its assertion IDs immediately when the user session resigns active, and re-engages immediately on become- active rather than waiting up to 10 s for the next timer tick. The old early-return in refreshAssertions left the manager's stored IDs in a stale state after the kernel timed them out at 30 s. Three new tests cover resign-releases, become-reengages, and become-while-inactive does nothing. domzilla#7 CA_TEST_AUTOACTIVATE no longer writes to standard UserDefaults. The activate(...) function takes a new allowLidCloseOverride parameter so the test hook can drive a known state without mutating persistent preferences. The intentional early-return is documented in comments. domzilla#8 LocalizationTests no longer relies on a single representative key ("Quit") to prove zh-Hant differs from zh-Hans. Asserts that at least half of all 31 user-facing values are non-identical across the two locales. domzilla#9 About-dialog credits now point at github.com/bubbleee030/Caffeine instead of github.caffeine-app.net, in line with the README rewrite. Added a 2026 @bubbleee030 line to the copyright credits. Updated the source string in MenuBarController and the localized value in all 14 .lproj/Localizable.strings files; LocalizationTests reflects the new key. No remaining caffeine-app.net references in the repo.
Summary
Changes