Skip to content

Conversation

@Aotumuri
Copy link
Member

Description:

mls for v28
Version identifier within MLS: v4.11

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 December 25, 2025 03:21
@CLAassistant
Copy link

CLAassistant commented Dec 25, 2025

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ iiamlewis
❌ Aotumuri
You have signed the CLA already but the status is still pending? Let us recheck it.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 25, 2025

Walkthrough

Localization updates across 8 language files adding new translation sections for stats modal, performance overlay, map entries, lobby/team management, and spawn mechanics, with numerous text rewording and key removals in specific languages.

Changes

Cohort / File(s) Summary
Localization—Translation Sections
resources/lang/bg.json, resources/lang/fa.json, resources/lang/fr.json, resources/lang/ja.json, resources/lang/nl.json, resources/lang/ru.json, resources/lang/uk.json, resources/lang/zh-CN.json
Added new public translation sections: stats_modal (title, clan_stats, loading, error, no_stats, clan, games, win_score, loss_score, win_loss_ratio) and performance_overlay (reset, copy_json_title, copy_clipboard, copied, failed_copy, fps, avg_60s, frame, tick_exec, tick_delay, layers_header) across all language variants
Localization—Map Entries
resources/lang/bg.json, resources/lang/fa.json, resources/lang/fr.json, resources/lang/ja.json, resources/lang/nl.json, resources/lang/ru.json, resources/lang/uk.json, resources/lang/zh-CN.json
Expanded map section with new regional entries: fourislands, gulfofstlawrence, lisbon; adjusted baikalnukewars formatting with trailing comma
Localization—Lobby & Host Modal
resources/lang/bg.json, resources/lang/fa.json, resources/lang/fr.json, resources/lang/ja.json, resources/lang/nl.json, resources/lang/ru.json, resources/lang/uk.json, resources/lang/zh-CN.json
Enhanced public_lobby and host_modal with team/player management keys: nation_players, nation_player, players_per_team, assigned_teams, empty_teams, empty_team, remove_player, random_spawn; updated team display labels (Duos/Trios/Quads)
Localization—Error & Spawn Handling
resources/lang/bg.json, resources/lang/fa.json, resources/lang/fr.json, resources/lang/ja.json, resources/lang/nl.json, resources/lang/ru.json, resources/lang/uk.json, resources/lang/zh-CN.json
Added error_modal.spawn_failed with title and description; added heads_up_message.random_spawn; added territory_patterns.show_only_owned
Localization—Game Mechanics & UI
resources/lang/bg.json, resources/lang/fa.json, resources/lang/fr.json, resources/lang/ja.json, resources/lang/nl.json, resources/lang/ru.json, resources/lang/uk.json, resources/lang/zh-CN.json
Added single_modal.random_spawn; added events_display.retaliate and alliance-related entries; rewording of existing keys (compact_map, join_discord); removed legacy keys (how_to_play, advertise in most languages; min_keep_pct, toggle_attack_bar_mode, warning_attackbar from send_troops_modal)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • mls 4.0 #1336: Modifies the same localization files with identical translation key additions (stats_modal, performance_overlay, random_spawn, new map entries, host/public_lobby team keys, error_modal.spawn_failed).
  • mls (v4.10) #2581: Updates localization JSONs adding overlapping UI keys (maps, stats_modal, performance_overlay, public_lobby/host_modal keys, random_spawn).
  • mls (v4.9) #2487: Modifies the same language resource files (e.g., resources/lang/bg.json) with translation key additions for new modal sections, map entries, and lobby management.

Suggested labels

Translation

Suggested reviewers

  • scottanderson
  • Duwibi
  • evanpelle

Poem

🌍 Eight tongues now speak of stats and spawn,
Where new maps bloom and lobbies dawn,
Bulgarian, Persian, French align,
Performance metrics brightly shine!
🗺️ Translations dance, the game grows wide!

Pre-merge checks

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'mls (v4.11)' is vague and does not clearly communicate what was changed. MLS and version numbers lack context about the actual changes. Use a more descriptive title that explains the main change, such as 'Add translation updates for stats modal and performance overlay' or 'Localize new UI features for v4.11 release'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The description relates to the changeset but lacks detail about what was actually modified. It indicates translations were updated and tests were added, which aligns with the language file changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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.

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: 3

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a810e0a and 2312481.

📒 Files selected for processing (8)
  • resources/lang/bg.json
  • resources/lang/fa.json
  • resources/lang/fr.json
  • resources/lang/ja.json
  • resources/lang/nl.json
  • resources/lang/ru.json
  • resources/lang/uk.json
  • resources/lang/zh-CN.json
🧰 Additional context used
🧠 Learnings (10)
📓 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: 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.
📚 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/fr.json
  • resources/lang/nl.json
  • resources/lang/uk.json
  • resources/lang/ru.json
  • resources/lang/ja.json
  • resources/lang/zh-CN.json
  • resources/lang/fa.json
  • resources/lang/bg.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/fr.json
  • resources/lang/nl.json
  • resources/lang/uk.json
  • resources/lang/ru.json
  • resources/lang/ja.json
  • resources/lang/zh-CN.json
  • resources/lang/fa.json
  • resources/lang/bg.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/fr.json
  • resources/lang/nl.json
  • resources/lang/ru.json
  • resources/lang/ja.json
  • resources/lang/zh-CN.json
  • resources/lang/fa.json
  • resources/lang/bg.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/fr.json
  • resources/lang/ru.json
  • resources/lang/zh-CN.json
  • resources/lang/fa.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/fr.json
  • resources/lang/zh-CN.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/fr.json
  • resources/lang/zh-CN.json
  • resources/lang/fa.json
📚 Learning: 2025-10-27T08:59:47.620Z
Learnt from: TheGiraffe3
Repo: openfrontio/OpenFrontIO PR: 2306
File: src/core/game/Game.ts:141-141
Timestamp: 2025-10-27T08:59:47.620Z
Learning: In OpenFrontIO, gamemode-specific map variants that have altered geography from their real-world counterparts should be categorized as "fantasy" rather than "regional", even if based on real locations. Example: BaikalNukeWars is in "fantasy" because it has different islands than real Baikal.

Applied to files:

  • resources/lang/ru.json
📚 Learning: 2025-07-12T06:35:10.457Z
Learnt from: Aotumuri
Repo: openfrontio/OpenFrontIO PR: 1357
File: resources/lang/ja.json:0-0
Timestamp: 2025-07-12T06:35:10.457Z
Learning: In OpenFrontIO project, "giantworldmap" is the correct localization key name for the giant world map, used consistently across all language files and TypeScript code. Do not suggest renaming this key.

Applied to files:

  • resources/lang/zh-CN.json
📚 Learning: 2025-05-30T18:11:56.014Z
Learnt from: VariableVince
Repo: openfrontio/OpenFrontIO PR: 959
File: resources/maps/GatewayToTheAtlantic.json:124-124
Timestamp: 2025-05-30T18:11:56.014Z
Learning: In OpenFrontIO, flag names in map JSON files can use spaces (like "Amazigh flag") and don't need to follow slug format. Flag assets are stored with matching filenames including spaces (e.g., "Amazigh flag.svg"). Nation names and flag names are not translated/localized in the translation files.

Applied to files:

  • resources/lang/fa.json
🔇 Additional comments (21)
resources/lang/zh-CN.json (1)

1-808: LGTM! Translation updates follow project workflow.

This is an authorized translation PR updating the Chinese Simplified locale with new entries for stats modal, performance overlay, map names, lobby management, spawn mechanics, and various UI text updates. The JSON structure is valid and changes align with the MLS update pattern.

Based on learnings, this type of translation update should only be done in dedicated "mls" PRs by Aotumuri, which this PR satisfies.

resources/lang/uk.json (1)

1-808: LGTM! Translation updates follow proper MLS workflow.

This Ukrainian translation file follows the project's established workflow for localization updates. The additions include new sections for stats modal, performance overlay, tournament/Discord integration, and spawn mechanics, along with improved apostrophe formatting throughout (using proper Ukrainian soft sign: ʼ). JSON structure is valid with no syntax errors.

Based on learnings, this correctly follows the pattern where dedicated MLS PRs by Aotumori update non-English locale files, while community translators handle the actual translation content.

resources/lang/ru.json (1)

1-808: Translation update looks good!

This is an appropriate mls (multilingual string) PR by the authorized translator. The Russian translation file has been updated with:

  • New stats_modal section for clan statistics display
  • New performance_overlay section with detailed performance metrics
  • Additional map names (Four Islands, Gulf of St. Lawrence, Lisbon)
  • Expanded lobby/host modal fields for team management and nation players
  • New spawn mechanics messaging (random spawn options)
  • Updated event messages and error handling

The JSON structure is syntactically valid and all additions align with the localization updates described in the PR objectives.

Based on learnings, this is the correct workflow for updating non-English locale files in OpenFrontIO.

resources/lang/fa.json (1)

1-808: LGTM! Translation update is well-structured.

The Persian translation file has been properly updated with new sections (stats_modal, performance_overlay, spawn_failed error handling) and expanded entries for maps, lobby/team management, and community features. The JSON structure is valid and all new keys are properly formatted.

Based on learnings, this is a legitimate translation PR by the authorized maintainer.

resources/lang/bg.json (1)

1-808: LGTM! Translation update is technically sound.

The JSON structure is valid, all variable placeholders are correctly preserved (e.g., {email}, {name}, {username}, {num}), and new sections (stats_modal, performance_overlay, spawn_failed) follow the established pattern. This is the expected translation PR format for updating Bulgarian localization.

Based on learnings, this is the dedicated "mls" PR by Aotumuri that appropriately updates non-English locale files.

resources/lang/fr.json (3)

164-175: New stats_modal section looks good.

The new clan statistics translations are well-structured and follow French conventions.


690-702: Performance overlay translations look good.

The new performance overlay keys are properly translated and follow the existing file structure.


662-664: > Likely an incorrect or invalid review comment.

resources/lang/ja.json (12)

24-24: LGTM!

The simplified "Discord" label is more concise and consistent with typical button text.


136-146: LGTM!

New random_spawn key added and compact_map terminology updated consistently.


164-175: LGTM!

New stats_modal section is well-structured with appropriate Japanese translations for clan statistics UI.


210-213: LGTM!

New map entries added with accurate Japanese translations for geographic locations.


238-243: LGTM!

Team display formatting updated with proper placeholder syntax for dynamic team/player counts.


273-286: LGTM!

Host modal expanded with new team management and player configuration keys. Terminology is consistent across the file.


535-543: LGTM!

Post-game modal expanded with community engagement and promotional content translations.


582-604: LGTM!

Event display strings expanded with alliance renewal, unit deletion, and betrayal debuff notifications.


684-687: LGTM!

New spawn_failed error with nested title/description structure provides clear feedback for auto-spawn failures.


690-702: LGTM!

New performance_overlay section provides comprehensive translations for the performance metrics UI. Technical terms (FPS, Tick, JSON) are appropriately retained in English.


704-706: LGTM!

Spawn-related heads-up messages provide clear user guidance for both manual and random spawn modes.


711-711: LGTM!

New territory pattern filter option for showing only owned territories.

resources/lang/nl.json (1)

1-808: LGTM! Proper MLS update for Dutch translations.

This is a legitimate multilingual string (MLS) PR updating the Dutch locale file nl.json. The JSON structure is valid, formatting is consistent, and all new sections are properly integrated. This aligns with the project's translation workflow where dedicated MLS PRs handle locale file updates.

@iiamlewis iiamlewis added the Translation Addition or modification of a language to the translations. label Dec 25, 2025
@iiamlewis iiamlewis moved this to Final Review in OpenFront Release Management Dec 25, 2025
@iiamlewis iiamlewis added this to the v29 milestone Dec 25, 2025
@Aotumuri
Copy link
Member Author

@iiamlewis

Description:

mls for v28 Version identifier within MLS: v4.11

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

this is for v28

@iiamlewis iiamlewis enabled auto-merge December 26, 2025 10:30
@iiamlewis iiamlewis merged commit 977e922 into openfrontio:v28 Dec 26, 2025
7 checks passed
@github-project-automation github-project-automation bot moved this from Final Review to Complete in OpenFront Release Management Dec 26, 2025
Copy link
Contributor

@VectorSophie VectorSophie left a comment

Choose a reason for hiding this comment

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

ok ig

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

Status: Complete

Development

Successfully merging this pull request may close these issues.

5 participants