Dismiss Notice
Wynncraft, the Minecraft MMORPG. Play it now on your Minecraft client at (IP): play.wynncraft.com. No mods required! Click here for more info...
Dismiss Notice
Have some great ideas for Wynncraft? Join the official CT (content team) and help us make quests, builds, cinematics and much more!

Game Mechanics Text-Component-Based Client-Sided Localization

Discussion in 'General Suggestions' started by TheLMiffy1111, Dec 16, 2024 at 2:54 AM.

?

Do you support?

  1. Yes

    3 vote(s)
    100.0%
  2. No

    0 vote(s)
    0.0%
  1. TheLMiffy1111

    TheLMiffy1111 Previous Leader Of A Revived Wynn Community CHAMPION

    Messages:
    582
    Likes Received:
    789
    Trophy Points:
    91
    Guild:
    Minecraft:
    This is an alternative way at tackling the localization problem, allowing the problem to be solved much easier.

    Currently, client-side mods that operate on game text such as Voices of Wynn and WynnLang must match on text directly. This has problems though:
    1. Much of the game's content is one-time only, which causes the translations of these contents to be practically unverifiable.
    2. Every patch may contain changes to the game's text, which, even if insignificant, will cause the client translations to fail.
    These problems cause any attempt at making a localization mod for the game extremely infeasible, and so people have to rely on largely inaccurate machine translations to play the game.

    To solve this problem, instead of directly sending text to clients, the game can instead make full use of Minecraft's text component system and send translatable text components instead, and use the resource pack or fallback for text. With this method, the client can use the resource pack to change game text to whatever they want. (I'm sure this isn't a thing yet since Voices of Wynn still matches text directly)

    Since translation fallback was added in 1.19.4 and WynnCraft is now using 1.20.4, it is now completely possible to not reveal secret information until someone encounters it and it is sent to the client. For non-secret information though, it is probably better to either completely use the resource pack instead, or release an official English-only translation resource pack, for ease of translation and avoiding the verifiability problem.

    Some examples and proposals:
    Original, section 1 of King's Recruit:
    [1/2] Caravan Driver: Agh!
    [2/2] Tasim: Hey, <playername>! You alright in there? Looks like we hit something.

    Proposed text component form (colors not applied):
    Code:
    [
      {
        "text": "[1/2]"
      },
      {
        "text": " "
      },
      {
        "translate": "npc.caravan_driver",
        "fallback": "Caravan Driver"
      },
      {
        "text": ": "
      },
      {
        "translate": "quest.kings_recruit.1.1",
        "fallback": "Agh!"
      }
    ]
    Code:
    [
      {
        "text": "[2/2]"
      },
      {
        "text": " "
      },
      {
        "translate": "npc.tasim",
        "fallback": "Tasim"
      },
      {
        "text": ": "
      },
      {
        "translate": "quest.kings_recruit.1.2",
        "fallback": "Hey, %1$s! You alright in there? Looks like we hit something.",
        "with": [
          {
            "text": "<playername>"
          }
        ]
      }
    ]
    Original, Iron String:
    Iron String
    Many said making a bow out of iron would be slow and wasteful, but the weight of the iron arrow can pierce even stone.

    Proposed text component form (colors not applied):
    Code:
    item_name: {
      "translate": "item.bow.iron_string",
      "fallback": "Iron String"
    },
    lore: [..., {
      "translate": "item.bow.iron_string.lore",
      "fallback": "Many said making a bow out of iron would be slow and wasteful, but the weight of the iron arrow can pierce even stone."
    }]
     
    Last edited: Dec 16, 2024 at 2:40 PM
    Elytry and Tzelofachad like this.
  2. culpitisn'taword

    culpitisn'taword Skilled Adventurer

    Messages:
    445
    Likes Received:
    299
    Trophy Points:
    39
    Interesting suggestion. I don't have the programming knowledge to know if it's feasible. Suppose you'll have to wait for CT to chime in (it's the Devs who'd know whether this is possible, and there's only 2 of them, neither active on Forums - they're probably overworked anyway).