Summary
Adds 24 European languages to bitchat/Localizable.xcstrings and bitchatShareExtension/Localization/Localizable.xcstrings: be, bg, bs, ca, cs, da, el, et, fi, ga, hr, hu, is, lb, lt, lv, mk, mt, nb, ro, sk, sl, sq, sr. That covers every key in both catalogs (518 + 5), bringing the app to 54 locales.
- Each language carries the CLDR plural categories it needs in the three plural substitutions (e.g.
few/manyfor Czech/Slovak/Lithuanian,zerofor Latvian,two/few/manyfor Irish and Maltese). - The style matches the existing catalogs: lowercase IRC-style text where the English is lowercase, uppercase section headers, and commands, subcommands,
#mesh,cashuA…and placeholders left untouched. - New entries use the state
needs_review, so they stand out in Xcode for native-speaker review. - Existing localizations are unchanged. The catalogs were edited by inserting the new locale blocks rather than re-serializing, and a JSON comparison confirms every pre-existing locale is identical to
main. The large diff is only the inserted blocks.
How the translations were produced
The translations were written with an AI assistant, not by native speakers. They were checked mechanically: every key is present, format specifiers and positional arguments match the English, plural categories are complete, and casing is consistent. Native-speaker review is welcome.
Risk
Low. Only string catalogs change, and no code changes.
Tests
This was prepared on a machine without Xcode, so the app was not built or run on iOS/macOS. What was checked:
- both catalogs parse as valid JSON
- the logic of
LocalizationCoverageTests(every translatable key covers every locale, and the share extension has the same locale set as the app) was replicated in a script: 0 failures - every new plural substitution has
formatSpecifier,argNumand anotherform
Running LocalizationCoverageTests in CI or Xcode would confirm this. knownRegions in the project file was left alone, matching how the existing locales were added.
The companion Android PR, permissionlesstech/bitchat-android#978, adds the same 24 languages.
🤖 Generated with Claude Code
Activity
3💡 Codex Review
https://github.com/permissionlesstech/bitchat/blob/0dfb0a9848fdfd17f2b411f964c74a526f08e9ff/bitchat/Localizable.xcstrings#L73090 Give Irish count branches their actual noun forms
When the UI is Irish and a count is 2–10, the new two/few/many branches all render the same %d duine; Irish counting requires category-specific mutations (for example, 2 dhuine and 7 nduine). This produces visibly ungrammatical counts in the people accessibility label, fingerprint vouch text, and location-channel rows because this same plural block is copied into all three keys.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Codex Review Summary
This comment shows the latest Codex review activity on this pull request.
0dfb0a9ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.