Skip to content

Conversation

@Aotumuri
Copy link
Member

Description:

mls for v29
Version identifier within MLS: 4.13

Please complete the following:

  • I have added screenshots for all UI updates
  • I process any text displayed to the user through translateText() and I've added it to the en.json file
  • I have added relevant tests to the test directory
  • I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced

Please put your Discord username so you can be contacted if a bug or regression is found:

aotumuri

@Aotumuri Aotumuri requested a review from a team as a code owner January 15, 2026 06:09
@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 15, 2026

Walkthrough

Three language localization files updated with new UI text entries, key renames, and removed deprecated entries across lobbies, modals, maps, game features, and player interface components. Changes span Bulgarian, Japanese, and Dutch translations with consistent structural additions.

Changes

Cohort / File(s) Summary
Localization Updates
resources/lang/bg.json, resources/lang/ja.json, resources/lang/nl.json
Added ~175 new translation keys across common (back, copied, click_to_copy), main menu (game_info, play, news, store, stats, account, help), modals (account_modal, stats_modal, game_info_modal), lobbies (private/public team variants, waiting states), maps (britanniaclassic, newyorkcity, lisbon, etc.), game modes (public_game_modifier), and UI components (matchmaking, player stats, territory patterns). Renamed main menu keys (create_lobby→create, join_lobby→join, single_player→solo) and account modal keys (logged_in_as→connected_as). Removed news.see_all_releases. Updated difficulty, map_categories, and various UI state labels.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • mls (v4.9) #2487 — Overlapping localization additions to Bulgarian (resources/lang/bg.json) with similar section expansions
  • mls (v4.11) #2691 — Shared localization namespace updates with identical public keys across stats_modal, map entries, and team configuration strings
  • mls (v4.6) #2120 — Concurrent Bulgarian localization modifications adding account_modal, map, and donation-related translation entries

Suggested labels

Translation

Suggested reviewers

  • evanpelle
  • Duwibi
  • scottanderson

Poem

🌍 Words flow like water across every shore,
Bulgarian, Dutch, and Japanese pour,
New menus and maps in each tongue now ring,
Lobbies and stats—let a thousand translations sing! 🎭

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'mls (v4.13)' is vague and does not convey meaningful information about the changeset, using only an acronym and version number. Use a more descriptive title that explains what 'mls' represents and the nature of changes (e.g., 'Update localization strings for v4.13' or 'Add Bulgarian, Japanese, and Dutch translations for v4.13').
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The description is related to the changeset as it mentions MLS v4.13 and v29, matching the localization file updates in the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Aotumuri Aotumuri added the Translation Addition or modification of a language to the translations. label Jan 15, 2026
@Aotumuri Aotumuri added this to the v29 milestone Jan 15, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
resources/lang/ja.json (1)

498-499: Translation mismatch: ground_attack labeled as boat attack.

The ground_attack key and its description both reference "ボート攻撃" (boat attack), which appears to be a copy-paste from the boat_attack entry above. The ground attack should have its own distinct translation.

Suggested fix
-    "ground_attack": "ボート攻撃",
-    "ground_attack_desc": "カーソルの位置に合わせた土地にボート攻撃を送ります。",
+    "ground_attack": "地上攻撃",
+    "ground_attack_desc": "カーソルの位置に合わせた土地に地上攻撃を送ります。",
resources/lang/nl.json (1)

100-114: Potential whitespace artifact detected on line 113.

There appears to be a zero-width space or double space between "een" and "vijand" in the ally_donate translation text. This might be a copy-paste artifact that could cause rendering inconsistencies.

Suggested fix
-    "ally_donate": "Doneer een deel van je troepen aan je bondgenoot. Gebruikt wanneer ze weinig troepen hebben en worden aangevallen, of wanneer ze die extra kracht nodig hebben om een ​​vijand te verpletteren.",
+    "ally_donate": "Doneer een deel van je troepen aan je bondgenoot. Gebruikt wanneer ze weinig troepen hebben en worden aangevallen, of wanneer ze die extra kracht nodig hebben om een vijand te verpletteren.",
🧹 Nitpick comments (1)
resources/lang/bg.json (1)

288-288: Optional: Check spelling of "Обкражен".

The standard Bulgarian spelling for "surrounded" is "Обкръжен" (with "ъ"), not "Обкражен" (with "а"). This might be a typo.

Suggested fix
-    "surrounded": "Обкражен",
+    "surrounded": "Обкръжен",
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6719f41 and bc06209.

📒 Files selected for processing (3)
  • resources/lang/bg.json
  • resources/lang/ja.json
  • resources/lang/nl.json
🧰 Additional context used
🧠 Learnings (7)
📓 Common learnings
Learnt from: TheGiraffe3
Repo: openfrontio/OpenFrontIO PR: 884
File: resources/lang/en.json:456-461
Timestamp: 2025-08-16T10:52:08.292Z
Learning: In OpenFrontIO, translation files in resources/lang/*.json (except en.json) should not be updated in regular PRs. Only dedicated translation PRs titled "mls" and made by Aotumori should update non-English locale files. Regular PRs should only update en.json when adding or modifying translation keys.
Learnt from: andrewNiziolek
Repo: openfrontio/OpenFrontIO PR: 1007
File: resources/lang/de.json:115-115
Timestamp: 2025-06-02T14:27:37.609Z
Learning: For OpenFrontIO project: When localization keys are renamed in language JSON files, the maintainers separate technical changes from translation content updates. They wait for community translators to update the actual translation values rather than attempting to translate in the same PR. This allows technical changes to proceed while ensuring accurate translations from native speakers.
Learnt from: scottanderson
Repo: openfrontio/OpenFrontIO PR: 949
File: resources/lang/en.json:8-10
Timestamp: 2025-05-30T03:53:52.231Z
Learning: For the OpenFrontIO project, do not suggest updating translation files in resources/lang/*.json except for en.json. The project has a dedicated translation team that handles all other locale files.
Learnt from: mokizzz
Repo: openfrontio/OpenFrontIO PR: 1940
File: resources/lang/en.json:763-766
Timestamp: 2025-08-27T08:12:19.610Z
Learning: In OpenFrontIO, some country entries in src/client/data/countries.json may have similar names but different codes (e.g., "Empire of Japan" vs "Empire of Japan1"). Each unique code requires its own translation key in resources/lang/en.json after normalization. Always verify against countries.json before suggesting removal of translation keys.
Learnt from: Aotumuri
Repo: openfrontio/OpenFrontIO PR: 1357
File: resources/lang/de.json:523-540
Timestamp: 2025-07-12T08:41:35.101Z
Learning: In OpenFrontIO project localization files, always check the en.json source file before flagging potential spelling errors in other language files, as some keys may intentionally use non-standard spellings that need to be consistent across all translations.
Learnt from: andrewNiziolek
Repo: openfrontio/OpenFrontIO PR: 1007
File: resources/lang/he.json:138-138
Timestamp: 2025-06-02T14:27:23.893Z
Learning: andrewNiziolek's project uses community translation for internationalization. When updating map names or other user-facing text, they update the keys programmatically but wait for community translators to provide accurate translations in each language rather than using machine translations.
Learnt from: TheGiraffe3
Repo: openfrontio/OpenFrontIO PR: 1864
File: resources/maps/arabianpeninsula/manifest.json:13-170
Timestamp: 2025-08-19T11:00:55.422Z
Learning: In OpenFrontIO, nation names in map manifests are displayed directly in the UI without translation. They do not need to be added to resources/lang/en.json or processed through translateText(). This is the established pattern across all existing maps including Europe, World, Asia, Africa, and others.
📚 Learning: 2025-06-02T14:27:37.609Z
Learnt from: andrewNiziolek
Repo: openfrontio/OpenFrontIO PR: 1007
File: resources/lang/de.json:115-115
Timestamp: 2025-06-02T14:27:37.609Z
Learning: For OpenFrontIO project: When localization keys are renamed in language JSON files, the maintainers separate technical changes from translation content updates. They wait for community translators to update the actual translation values rather than attempting to translate in the same PR. This allows technical changes to proceed while ensuring accurate translations from native speakers.

Applied to files:

  • resources/lang/nl.json
  • resources/lang/bg.json
  • resources/lang/ja.json
📚 Learning: 2025-08-16T10:52:08.292Z
Learnt from: TheGiraffe3
Repo: openfrontio/OpenFrontIO PR: 884
File: resources/lang/en.json:456-461
Timestamp: 2025-08-16T10:52:08.292Z
Learning: In OpenFrontIO, translation files in resources/lang/*.json (except en.json) should not be updated in regular PRs. Only dedicated translation PRs titled "mls" and made by Aotumori should update non-English locale files. Regular PRs should only update en.json when adding or modifying translation keys.

Applied to files:

  • resources/lang/nl.json
  • resources/lang/bg.json
  • resources/lang/ja.json
📚 Learning: 2025-08-19T11:00:55.422Z
Learnt from: TheGiraffe3
Repo: openfrontio/OpenFrontIO PR: 1864
File: resources/maps/arabianpeninsula/manifest.json:13-170
Timestamp: 2025-08-19T11:00:55.422Z
Learning: In OpenFrontIO, nation names in map manifests are displayed directly in the UI without translation. They do not need to be added to resources/lang/en.json or processed through translateText(). This is the established pattern across all existing maps including Europe, World, Asia, Africa, and others.

Applied to files:

  • resources/lang/nl.json
  • resources/lang/bg.json
📚 Learning: 2025-05-30T03:53:52.231Z
Learnt from: scottanderson
Repo: openfrontio/OpenFrontIO PR: 949
File: resources/lang/en.json:8-10
Timestamp: 2025-05-30T03:53:52.231Z
Learning: For the OpenFrontIO project, do not suggest updating translation files in resources/lang/*.json except for en.json. The project has a dedicated translation team that handles all other locale files.

Applied to files:

  • resources/lang/nl.json
📚 Learning: 2025-08-27T08:12:19.610Z
Learnt from: mokizzz
Repo: openfrontio/OpenFrontIO PR: 1940
File: resources/lang/en.json:763-766
Timestamp: 2025-08-27T08:12:19.610Z
Learning: In OpenFrontIO, some country entries in src/client/data/countries.json may have similar names but different codes (e.g., "Empire of Japan" vs "Empire of Japan1"). Each unique code requires its own translation key in resources/lang/en.json after normalization. Always verify against countries.json before suggesting removal of translation keys.

Applied to files:

  • resources/lang/nl.json
  • resources/lang/bg.json
  • resources/lang/ja.json
📚 Learning: 2025-07-12T08:41:35.101Z
Learnt from: Aotumuri
Repo: openfrontio/OpenFrontIO PR: 1357
File: resources/lang/de.json:523-540
Timestamp: 2025-07-12T08:41:35.101Z
Learning: In OpenFrontIO project localization files, always check the en.json source file before flagging potential spelling errors in other language files, as some keys may intentionally use non-standard spellings that need to be consistent across all translations.

Applied to files:

  • resources/lang/nl.json
🔇 Additional comments (11)
resources/lang/bg.json (1)

1-934: LGTM! Bulgarian localization updates look good.

This MLS PR adds comprehensive Bulgarian translations for new UI elements including:

  • Game info modal with statistics labels
  • Public lobby team options (Duos, Trios, Quads)
  • Matchmaking button and ranked play strings
  • Account modal restructuring with sign-in flow
  • New map names and categories
  • Various user setting and player panel additions

JSON structure is valid, placeholders are consistent with expected format ({variable}), and translations align with the coordinated localization expansion across other language files. Based on learnings, this is the correct workflow for non-English locale updates.

resources/lang/ja.json (1)

1-934: LGTM! Japanese localization updates are well-structured.

The translation file follows consistent patterns throughout. New keys for account management, game info modal, map categories, team modes, and matchmaking features are properly added. Placeholder formats ({var} for simple interpolation, {{var}} for tooltip contexts) are used consistently with existing conventions.

Based on learnings, this MLS PR by Aotumuri is the appropriate channel for updating non-English locale files.

resources/lang/nl.json (9)

1-24: LGTM - Common section updates look good.

New keys back, none, copied, and click_to_copy are properly added with appropriate Dutch translations. JSON structure is valid.


25-52: LGTM - Main menu key renames and additions are consistent.

The renamed keys (create, join, solo) and new entries (game_info, reddit, play, news, store, options, keys, stats, account, help, menu, pick_pattern) align with the broader UI expansion described in the summary.


178-200: LGTM - Account modal expansion is well-structured.

The new authentication flow keys (connected_as, save_progress_title, save_progress_desc, link_discord, link_via_email_placeholder, link_button, welcome_back, sign_in_desc, or, email_placeholder, get_magic_link, linked_account, recovery_email_sent, not_found, clear_session, failed_to_send_recovery_email, enter_email_address) use consistent placeholder format with {email} and {account_name}.


219-241: LGTM - New game_info_modal section added.

All keys for the game info modal (players, atoms, hydros, mirv, bombs, total_gold, all_gold, trade, conquest_gold, stolen_gold, num_of_conquests, duration, survival_time, war, economy, conquests, pirate, conquered, loading_game_info, no_winner) are properly structured.


242-299: LGTM - Map and category additions are complete.

New map entries (newyorkcity, lisbon, svalmel, manicouagan, lemnos, sierpinski, twolakes, straitofhormuz, surrounded, didier, didierfrance, amazonriver, britanniaclassic) and updated categories (fantasy, special, arcade) align with cross-language consistency goals.


317-337: LGTM - Team variants and matchmaking updates use consistent placeholders.

The team labels (teams_Duos, teams_Trios, teams_Quads) correctly use {team_count} placeholder, and teams_hvn_detailed properly uses {num} for both human and nation counts. The ELO display key uses {elo} placeholder appropriately.


401-415: LGTM - Difficulty labels simplified and public_game_modifier section added.

The difficulty keys are now nation-focused (easy, medium, hard, impossible) with cleaner labels. New public_game_modifier section properly defines random_spawn and compact_map options.


816-821: LGTM - Heads-up message additions for pause states.

New keys singleplayer_game_paused and multiplayer_game_paused provide clear Dutch translations for the game pause indicators, distinguishing between solo and lobby-hosted pauses.


929-934: LGTM - New matchmaking_button section properly structured.

The competitive matchmaking UI keys (play_ranked, description, login_required, must_login) are complete and provide clear messaging for the ranked play feature.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

@evanpelle evanpelle disabled auto-merge January 15, 2026 19:21
@evanpelle evanpelle merged commit 779ba2c into openfrontio:main Jan 15, 2026
9 of 10 checks passed
evanpelle pushed a commit that referenced this pull request Jan 15, 2026
## Description:

mls for v29 
Version identifier within MLS: 4.13

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
@coderabbitai coderabbitai bot mentioned this pull request Jan 28, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Translation Addition or modification of a language to the translations.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants