Skip to content

Add Uzbek on the Mac - #306

Merged
vinzdg merged 1 commit into
vinzdg:mainfrom
SunnatilloDev:add-uzbek
Sep 22, 2026
Merged

vinzdg merged 1 commit into
vinzdg:mainfrom
SunnatilloDev:add-uzbek

Conversation

@SunnatilloDev

Copy link
Copy Markdown
Contributor

Summary

Adds Uzbek as its own language on the Mac. Uzbek is written in Latin script and filed under uz, which is what CLDR resolves a plain Uzbek system language to, so Follow System on an Uzbek Mac serves it with no extra mapping.

The catalog has an Uzbek string for every UI key. The release-note history is left in English on purpose: those keys are nearly half the catalog, and a missing translation falls back to the source, so the list reads mixed rather than broken — the state #252 left Japanese in before #290. Happy to follow up with them.

Windows is untouched; i18n.rs is a separate system.

Changes

  • Sources/Localizable.xcstrings — Uzbek for 590 UI keys. No other locale's values are modified.
  • Sources/Settings/AppLanguage.swift — uzbek = "uz", titled O'zbekcha in its own language, like the other rows.
  • project.yml / Sources/Info.plist — uz in CFBundleLocalizations; the plist is the generated output of make gen, not hand-edited.
  • Tests — Uzbek added to AppLanguageTests, CatalogCoverageTests, CatalogFormatTests and LocalizationTests, plus the offered-language list in testEveryOfferedLanguageResolves.

Two things worth a reviewer's attention:

The threshold alert is renumbered. Uzbek names the limit before the percentage, so %lld%% of its %@ limit used. is %2$@ limitining %1$lld%% ishlatilgan. — numbered, since #237 was the unnumbered version of this exact string. CatalogFormatTests covers it.

Two picker options are shortened rather than translated literally. The control is already labelled Ko'rsatish, so a literal "Always show" / "Show on hover" repeats the verb and overflows the segmented control in Uzbek. They are Doimo and Kursorda; the sentence that names that option follows suit.

Test Plan

  • Run test suite (make test-ci) — 1717 tests, 0 failures
  • Tested on macOS (version: 26, Xcode 27)
  • UI / Notch interactions verified — Appearance, Notifications and the visibility picker walked in Uzbek by a native speaker; register, terminology and control widths corrected from that pass

Screenshots / Screen Recordings

Screenshot 2026-09-22 at 8 19 11 AM Screenshot 2026-09-22 at 8 18 53 AM Screenshot 2026-09-22 at 8 18 02 AM

Uzbek (Latin, `uz`) joins the language picker as O'zbekcha, with a
translation for every UI key in the catalog. The release-note history
stays in English for now: those keys are nearly half the catalog, and a
missing translation falls back to the source, so the list reads mixed
rather than broken — the state vinzdg#252 left Japanese in before vinzdg#290.

One string is reordered rather than translated in place. Uzbek names the
limit before the percentage, so "%lld%% of its %@ limit used." becomes
"%2$@ limitining %1$lld%% ishlatilgan." — numbered, because vinzdg#237 was the
unnumbered version of exactly this string.

Two picker options are shortened rather than translated literally. The
control is already labelled Ko'rsatish, so "Always show" and "Show on
hover" carry the verb twice in Uzbek and overflowed the segmented
control; they are Doimo and Kursorda, and the sentence naming that
option follows it.

Windows is untouched — i18n.rs is a separate system.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vinzdg
vinzdg merged commit 1c8e00f into vinzdg:main Sep 22, 2026
@vinzdg

vinzdg commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Merged as 1c8e00f. Thanks @SunnatilloDev — 590 keys, Latin script (the right default), registered in every place that matters including CFBundleLocalizations, and leaving the release-note history English is exactly what CONTRIBUTING allows.

Two things folded into the merge commit rather than sitting beside it:

  • Orthography. Uzbek Latin writes oʻ and gʻ with U+02BB and the glottal stop with U+02BC; the PR used the ASCII ' for both, which reads as a typewriter mark. Normalised 233 values and the language's own name (Oʻzbekcha) in the picker, and updated the three test expectations that asserted the old forms.
  • The catalog conflict with Add Korean on the Mac and on Windows #305 (Korean, merged just before) was resolved structurally rather than by hand — the post-Korean catalog kept its order and your 590 values were grafted onto it — so neither language's entries moved.

One I left for you if you want it: Follow System → Tizimga ergashish reads literally, closer to "chase the system". Tizim boʻyicha is the more natural phrasing. Small, and entirely your call as the native speaker — I didn't want to overrule a translation choice on grounds of taste.

1,734 tests green.

abhishekthakur7 pushed a commit to abhishekthakur7/codenotch that referenced this pull request Sep 28, 2026
The catalog conflict with vinzdg#305 was resolved structurally rather than by hand:
the post-Korean catalog kept its order and the 590 uz values were grafted onto
it, so neither language's entries moved.

Two things of mine are in this commit rather than beside it:

- Uzbek orthography. Uzbek Latin writes oʻ and gʻ with U+02BB and the glottal
  stop with U+02BC; an ASCII apostrophe is neither and reads as a typewriter
  mark. Normalised 233 values and the language's own name in the picker.
- Four full-screen fold tests now use the pointer check this file already
  provides. handleActiveSpaceOrAppChange deliberately refuses to fold out from
  under the cursor, so those tests assert nothing when the notch has landed
  beneath it — which depends on what earlier tests left in Preferences, not on
  the test. They passed alone and failed in the full suite once 12 tests were
  added ahead of them.

Thanks @SunnatilloDev.
abhishekthakur7 pushed a commit to abhishekthakur7/codenotch that referenced this pull request Sep 28, 2026
The catalog conflict with vinzdg#305 was resolved structurally rather than by hand:
the post-Korean catalog kept its order and the 590 uz values were grafted onto
it, so neither language's entries moved.

Two things of mine are in this commit rather than beside it:

- Uzbek orthography. Uzbek Latin writes oʻ and gʻ with U+02BB and the glottal
  stop with U+02BC; an ASCII apostrophe is neither and reads as a typewriter
  mark. Normalised 233 values and the language's own name in the picker.
- Four full-screen fold tests now use the pointer check this file already
  provides. handleActiveSpaceOrAppChange deliberately refuses to fold out from
  under the cursor, so those tests assert nothing when the notch has landed
  beneath it — which depends on what earlier tests left in Preferences, not on
  the test. They passed alone and failed in the full suite once 12 tests were
  added ahead of them.

Thanks @SunnatilloDev.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants