#1787

Add 24 European languages to the string catalogs

OpentranKILLwants to merge intofrom

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/many for Czech/Slovak/Lithuanian, zero for Latvian, two/few/many for 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, argNum and an other form

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
chatgpt-codex-connector[bot]8d ago

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code Review✅ Completed 2026-10-22T14:26:35.373821Z0dfb0a9PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

chatgpt-codex-connector[bot]8d ago

💡 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".