## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

This is commit pack
This PR refactors and improves the language selection experience:
• Centralizes all language-related logic in LangSelector.ts &
LanguageModal.ts
	•	Redesigns the language selection UI for better UX across devices
	•	Adds new translations and supports more languages
Changes .w.
• Language selection is now handled entirely inside LangSelector.ts &
LanguageModal.ts
	•	Prevents background scrolling when open
	•	Highlights the current language at the top
	•	Always shows English second
	•	Shows browser language third (if different from current)
	•	All other languages are sorted alphabetically by English name
	•	Debug option is shown at the end when pressing D
	•	The language list is scrollable when it exceeds screen height
	
Supported Languages
["en", "ja", "fr", "bg", "nl", "ru", "ua", "de"]

Added Translation Keys
```
"lang": {
  "en": "English",
  "native": "English",
  "svg": "xx"
},
"map": {
  "map": "Map"
},
"game_starting_modal": {
  "title": "Game is Starting...",
  "desc": "Preparing for the lobby to start. Please wait."
},
"difficulty": {
  "difficulty": "Difficulty"
}
```

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

Translation collaborator
- Nikola123 (He was a very big help from setting up the translation site
to adding the json. Thank you so much!)
I don't have permission from my collaborators to display their names
here, so I'll put the discord link here

https://discord.com/channels/1284581928254701718/1352553113612980224/1352553113612980224
- tryout33

Collaborators from other servers.
- CCC Group (This is not Culture Convenience Club. Think of it like a
server where developers of various games are playing.)
- People who fixed the UI and found bugs.
meow02952 (discord id) <- This person also gave me a code suggestion.
Thanks!
moon_spear (discord id)
ww_what_ww (discord id)
Azuna (he doesn't have discord account)
- People who corrected translations, etc.
_kyoyume_ (discord id)
_ultrasuper_ (discord id)
grueg (he doesn't have discord account)

# If I forgot to include your name, or if you’d like your name to be
added, please let me know via Gmail or Discord.

---------

Co-authored-by: Duwibi <86431918+Duwibi@users.noreply.github.com>
This commit is contained in:
Aotumuri
2025-04-02 20:37:36 -07:00
committed by GitHub
co-authored by Duwibi
parent f09801fe3e
commit 607e5b5ff0
23 changed files with 1574 additions and 459 deletions
+37 -24
View File
@@ -2,10 +2,10 @@
"main": {
"join_discord": "Word lid van de Discord!",
"create_lobby": "Lobby aanmaken",
"join_lobby": "Toetreden lobby",
"single_player": "Enkele speler",
"join_lobby": "Lobby toetreden",
"single_player": "Eén Speler",
"instructions": "Instructies",
"how_to_play": "Hoe te spelen",
"how_to_play": "Hoe spelen?",
"wiki": "Wiki"
},
"help_modal": {
@@ -21,8 +21,8 @@
"action_ratio_change": "Aanvalsverhouding verlagen/verhogen",
"action_reset_gfx": "Grafische instellingen herstellen",
"ui_section": "Spel-UI",
"ui_leaderboard": "Leaderboard (leidersbord)",
"ui_leaderboard_desc": "Toont de top spelers van het spel en hun namen, % bezette land en goud.",
"ui_leaderboard": "Leidersbord",
"ui_leaderboard_desc": "Toont de topspelers van het spel en hun namen, % bezette land en goud.",
"ui_control": "Controlepaneel",
"ui_control_desc": "Het controlepaneel bevat de volgende elementen:",
"ui_pop": "Pop - Jouw totale bevolking, jouw maximale bevolking en de snelheid waarmee je ze verwerft.",
@@ -31,7 +31,7 @@
"ui_attack_ratio": "Aanvalsverhouding - Het aantal troepen dat wordt gebruikt bij een aanval. Je kunt de aanvalsverhouding aanpassen met de schuifbalk.",
"ui_options": "Opties",
"ui_options_desc": "De volgende elementen zijn hierin te vinden:",
"option_pause": "Spel pauzeren/hervatten - Alleen beschikbaar in enkele-speler modus.",
"option_pause": "Spel pauzeren/hervatten - Alleen beschikbaar in het speltype voor één speler.",
"option_timer": "Timer - Tijd verstreken sinds het begin van het spel.",
"option_exit": "Afsluitknop.",
"option_settings": "Instellingen - Open het instellingenmenu. Daarin kun je de Alternatieve weergave, Donkere modus, Emoji's en actie bij linkermuisknop in- of uitschakelen.",
@@ -67,28 +67,26 @@
"build_sam": "Luchtdoelraket (SAM)-lanceerder",
"build_sam_desc": "Heeft 75% kans om vijandelijke raketten binnen een straal van 100 pixels te onderscheppen. De SAM heeft een afkoeltijd van 7,5 seconden en kan geen MIRV's onderscheppen.",
"build_atom": "Atoombom",
"build_atom_desc": "Kleine explosieve bom die gebied, gebouwen, schepen en boten vernietigt. Spawnt vanuit de dichtstbijzijnde Raketsilo en landt in het gebied waar je klikte om het te bouwen.",
"build_atom_desc": "Kleine explosieve bom die gebied, gebouwen, schepen en boten vernietigt. Komt vanuit de dichtstbijzijnde Raketsilo en landt op de plek waar je hebt geklikt om het te bouwen.",
"build_hydrogen": "Waterstofbom",
"build_hydrogen_desc": "Grote explosieve bom. Spawnt vanuit de dichtstbijzijnde Raketsilo en landt in het gebied waar je klikte om het te bouwen.",
"build_hydrogen_desc": "Grote explosieve bom. Komt vanuit de dichtstbijzijnde Raketsilo en landt op de plek waar je hebt geklikt om het te bouwen.",
"build_mirv": "MIRV",
"build_mirv_desc": "De krachtigste bom in het spel. Splitst zich op in kleinere bommen die een enorm gebied dekken. Schaadt alleen de speler waarop je klikte om de bom te bouwen. Spawnt vanuit de dichtstbijzijnde Raketsilo en landt in het gebied waar je klikte om het te bouwen.",
"build_mirv_desc": "De krachtigste bom in het spel. Splitst zich op in kleinere bommen die een enorm gebied dekken. Schaadt alleen de speler waarop je klikte om de bom te bouwen. Komt vanuit de dichtstbijzijnde Raketsilo en landt in al het gebied dat de speler had toen je de bom bouwde, en nog steeds heeft.",
"player_icons": "Spelersiconen",
"icon_desc": "Voorbeelden van enkele iconen die je in het spel zult tegenkomen en wat ze betekenen:",
"icon_crown": "Kroon - Dit is de nummer 1 speler op de leaderboard",
"icon_crown": "Kroon - Dit is de nummer 1 speler op de leaderboard.",
"icon_traitor": "Gekruiste zwaarden - Verrader. Deze speler heeft een bondgenoot aangevallen.",
"icon_ally": "Handdruk - Bondgenoot. Deze speler is je bondgenoot.",
"info_enemy_panel": "Infopaneel vijand"
},
"single_modal": {
"title": "Enkele speler",
"map": "Kaart",
"difficulty": "Moeilijkheidsgraad",
"title": "Eén speler",
"allow_alliances": "Bondgenootschappen toestaan",
"options_title": "Opties",
"bots": "Bots:",
"bots_disabled": "Uitgeschakeld",
"disable_nations": "Naties uitschakelen",
"instant_build": "Bouw wachttijd afschaffen",
"instant_build": "Bouwwachttijd uitschakelen",
"infinite_gold": "Oneindig goud",
"infinite_troops": "Oneindige troepen",
"disable_nukes": "Kernwapens uitschakelen",
@@ -110,21 +108,22 @@
"australia": "Australië",
"random": "Willekeurig",
"iceland": "IJsland",
"pangaea": "Pangea"
"pangaea": "Pangea",
"map": "Kaart"
},
"private_lobby": {
"title": "Toedreden privé-lobby",
"title": "Privélobby toetreden",
"enter_id": "Voer Lobby-ID in",
"player": "Speler",
"players": "Spelers",
"join_lobby": "Toedreden lobby",
"join_lobby": "Lobby toetreden",
"checking": "Lobby controleren...",
"not_found": "Lobby niet gevonden. Controleer het ID en probeer het opnieuw.",
"error": "Er is een fout opgetreden. Probeer het opnieuw.",
"joined_waiting": "Succesvol toegetreden! Wachten tot het spel begint..."
},
"public_lobby": {
"join": "Volgende spel toetreden",
"join": "Deelnemen aan volgende Spel",
"waiting": "spelers wachten"
},
"username": {
@@ -135,26 +134,40 @@
"invalid_chars": "Gebruikersnaam mag alleen letters, cijfers, spaties, underscores en [vierkante haakjes] bevatten."
},
"host_modal": {
"title": "Privé lobby",
"map": "Kaart",
"difficulty": "Moeilijkheidsgraad",
"title": "Privélobby",
"options_title": "Opties",
"bots": "Bots:",
"bots_disabled": "Uitgeschakeld",
"disable_nations": "Naties uitschakelen",
"instant_build": "Bouw wachttijd afschaffen",
"instant_build": "Bouwwachttijd uitschakelen",
"infinite_gold": "Oneindig goud",
"infinite_troops": "Oneindige troepen",
"disable_nukes": "Kernwapens uitschakelen",
"player": "Speler",
"players": "Spelers",
"waiting": "Wachten op spelers...",
"start": "Start Spel"
"start": "Start Spel",
"mode": "Modus"
},
"difficulty": {
"Relaxed": "Ontspannen",
"Balanced": "Gebalanceerd",
"Intense": "Intens",
"Impossible": "Onmogelijk"
"Impossible": "Onmogelijk",
"difficulty": "Moeilijkheidsgraad"
},
"game_starting_modal": {
"title": "Spel gaat starten...",
"desc": "Voorbereiden op het starten van de lobby. Even geduld."
},
"lang": {
"en": "Dutch",
"native": "Nederlands",
"svg": "nl",
"lang_code": "nl"
},
"game_mode": {
"ffa": "Iedereen tegen iedereen (FFA)",
"teams": "Teams"
}
}