Skip to content

Address people the way Apple does in every language - #41

Open
Jeehut wants to merge 3 commits into
mainfrom
wip/apple-address-style
Open

Jeehut wants to merge 3 commits into
mainfrom
wip/apple-address-style

Conversation

@Jeehut

@Jeehut Jeehut commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Overview

The translations now follow Apple's localization style guides for how each language addresses people. Where Apple uses a formal register, so does this package now: French „vous“, Russian «Вы», Bulgarian, Czech, Slovak, Hungarian, Romanian, Greek, Croatian, Ukrainian, Kazakh, Indonesian, Malay and Hindi. European Portuguese uses the third person without a pronoun. Turkish sentences use the plural imperative „-in“, never the stiff „-iniz“. Polish uses a capitalized „Ty/Twój“. Languages where Apple addresses people informally stay as they were: German, Spanish, Italian, Dutch, the Nordic languages, Chinese, Japanese, Korean and Brazilian Portuguese.

Buttons take the form Apple uses for buttons in each language, because the polite form belongs in sentences:

Button form Languages
Infinitive fr, ru, uk, cs, sk, pt-PT, kk, lt
Singular imperative bg, hr, tr
Noun form hu, el
Polite plural imperative ro

Field placeholders and instructions count as sentences.

While going through every message, several translations turned out to be truncated or garbled and were rewritten from the English source: sentence fragments in sk, ru, hr, tr and pt-PT, swapped placeholders in fr-CA, a wrong „Dismiss“ in cs, and missing sentences in a few informal languages.

Impact on apps using this package

No API changes. The package is meant to match the wording Apple's own UI uses, so this corrects it towards what apps already expect; it fits a minor version. Apps that ship these languages will show the corrected text there.

Examples (before → after)

Lang Source Before After
fr You are not connected to the Internet. Please check your connection. Vous n'êtes pas connecté à Internet. Veuillez vérifier votre connexion. Votre appareil n'est pas connecté à Internet. Veuillez vérifier votre connexion.
fr-CA Dismiss Disposer Fermer
ru The server encountered an error (Code: %lld). Сервер столкнулся с ошибкой (Код: %lld). Сервер столкнулся с ошибкой (Код: %lld).
tr A relationship is missing required related objects. Bir ilişki gerekli ilişkili nesneleri eksik. Bir ilişkide gerekli ilişkili nesneler eksik.
pl Failed to save the data. Please try again. Nie udało się zapisać danych. Proszę spróbować ponownie. Nie udało się zapisać danych. Spróbuj ponownie.
bg A file system error occurred: %@ Възникна грешка в файловата система: %@ Възникна грешка във файловата система: %@
ro You do not have permission to read this file. Nu ai permisiunea de a citi acest fișier. Nu aveți permisiunea de a citi acest fișier.
el Failed to save the data. Please try again. Αποτυχία στην αποθήκευση των δεδομένων. Παρακαλώ δοκιμάστε ξανά. Αποτυχία στην αποθήκευση των δεδομένων. Δοκιμάστε ξανά.
hu You do not have permission to read this file. Nincs jogosultságod a fájl olvasásához. Nincs jogosultsága a fájl olvasásához.
cs A file system error occurred: %@ Došlo k chybě souborového systému: %@. Došlo k chybě souborového systému: %@
pt-PT A file system error occurred: %@ Ocorreu um erro no sistema de arquivos: %@ Ocorreu um erro no sistema de ficheiros: %@
uk Map loading is being throttled. Please wait a moment and try again. Завантаження карти обмежено. Будь ласка, почекайте кілька хвилин і спробуйте ще раз. Завантаження карти обмежено. Будь ласка, зачекайте хвилину і спробуйте ще раз.
hr The specified file or directory could not be found. Zadani datoteku ili direktorij nije moguće pronaći. Zadanu datoteku ili direktorij nije moguće pronaći.

Changed values per language: ro 52, hu 50, ru 50, el 42, pt-PT 34, pl 29, cs 26, kk 12, sk 9, tr 7, id 6, hr 4, ms 4, bg 4, fr 3, fr-CA 3, uk 3, hi 3, es-419 2, ja 2, es 2, he 1, pt-BR 1, fi 1, sv 1, zh-HK 1.

How this was verified

  • Every catalog was checked entry by entry and per plural, device and substitution variant. The check covers placeholders (count, type, position), leading and trailing whitespace, and the ellipsis rule. It reports no placeholder or ellipsis issue. The few remaining whitespace notes predate this branch.
  • swift build succeeds.

Apple's own wording for standard texts

Short UI strings (buttons, labels, titles) now use the exact wording Apple's own iOS 27 UI uses for the same English text, looked up per language in Apple's localizations, wherever the context matches. This also fixes several mistranslations. A value only got longer where Apple's wording or a rule demands it.

Lang Key Before After
he Logging.MailComposer.dismissButton בעיה סגירה
pl Logging.MailComposer.dismissButton Anuluj OK
hu Logging.MailComposer.dismissButton Eltávolítás Bezárás
pt-PT Logging.MailComposer.dismissButton Descartar Fechar
it Logging.MailComposer.notAvailableTitle Mail Non Disponibile Mail non è disponibile

Changed values: 69 (ar 2, bg 2, ca 3, cs 1, da 1, de 1, el 1, es 3, fi 2, fr-CA 1, he 4, hi 3, hr 3, hu 2, it 2, ja 2, kk 1, ko 2, ms 1, nb 3, nl 3, pl 2, pt-BR 1, pt-PT 2, ro 2, sk 2, sv 3, th 2, tr 2, uk 2, vi 1, zh-HK 2, zh-Hans 3, zh-Hant 2).

Two housekeeping fixes so the catalog check passes: the translations of serverError now keep the source's trailing space (the text is concatenated with the server's message, so without it the words ran together), and 83 legacy English-sentence keys that are only used as defaultValue and never had translations are marked stale, as Xcode itself does.

Jeehut added 2 commits October 8, 2026 10:22
fr, fr-CA, ru, uk, bg, cs, sk, hu, ro, el, hr, id, ms, kk, hi, tr, pl
and pt-PT now use the register Apple uses for each language: Hungarian
magázás, Czech and Slovak vykání, Russian capitalized Вы, Romanian
plural, Greek plural, Turkish plural imperative, European Portuguese
third person without pronoun and so on. 353 values changed.

Several translations had lost a sentence or their placeholders (for
example pt-PT, sk, hr, tr, ru, he, es, es-419, fi, ja, sv, zh-HK and
pt-BR); they were rewritten from the English source so that every value
carries its placeholders again. Also fixed: a swapped placeholder order
in fr-CA, a doubled apostrophe in fr, and the Czech "Dismiss" button.
Revert the bg dismiss button to the singular imperative (1 string).
@Jeehut Jeehut changed the title Address people and write ellipses the way Apple does Address people the way Apple does in every language Oct 8, 2026
Use Apple's iOS 27 wording for the "Dismiss" button and the "Mail Not
Available" title, including sentence case where the catalog had Title
Case. The dismiss button said "cancel" in pl, sv, nb and zh-Hans and
"problem" in he.

Make the catalog pass the localization check: translations of the
"Code: %lld" message now keep the source's trailing space, the eighty
legacy English-sentence keys that are only used as default values are
marked stale like Xcode would, and the he "canceled" text says "at your
request" instead of "on your recommendation".
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.

1 participant