Jump to content
  • Home
  • Files
  • Docs
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • Server sided localized messages
Currently Supported: 1.16.X (Latest) and 1.15.X (LTS)
Sign in to follow this  
Followers 0
SirWindfield

Server sided localized messages

By SirWindfield, January 14, 2018 in Modder Support

  • Reply to this topic
  • Start new topic

Recommended Posts

SirWindfield    0

SirWindfield

SirWindfield    0

  • Tree Puncher
  • SirWindfield
  • Members
  • 0
  • 10 posts
Posted January 14, 2018

I have ported a clientside mod to be server side only. The last thing that does not work is the chat messages that get sent to the client. After googling some time I found out that I18N only works on the client  side. 

Is there some way to load the lang files server side, get the matching locale from the player and then load the key from the matching lang file?

 

Another question that is similar to this one. I tried formatting the text and making it dynamic by including placeholders: "Some string needs {} argument". But that doesn't work. I couldn't find any information on placeholders within the localization framework.

Would someone tell me the right placeholder syntax to make the following call possible? 

new TextComponentTranslation("key", argumentOfTypeString);

 

Thanks for the help,

Wf

  • Quote

Share this post


Link to post
Share on other sites

Abastro    123

Abastro

Abastro    123

  • World Shaper
  • Abastro
  • Forge Modder
  • 123
  • 1075 posts
Posted January 14, 2018
1 hour ago, SirWindfield said:

Is there some way to load the lang files server side

No, the only way you can use will be using server resourcepacks(the one which is only applied when the user allows it). Languages are considered as resources, so you can't modify it with the server-only mod. Also you can't get the server locale.

1 hour ago, SirWindfield said:

Another question that is similar to this one. I tried formatting the text and making it dynamic by including placeholders: "Some string needs {} argument". But that doesn't work. I couldn't find any information on placeholders within the localization framework.

Would someone tell me the right placeholder syntax to make the following call possible? 


new TextComponentTranslation("key", argumentOfTypeString);

 

You need to specify details like {} on lang file.

For the translation component "key", you set something like 'key=the string is {}'.

  • Quote

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Share this post


Link to post
Share on other sites

SirWindfield    0

SirWindfield

SirWindfield    0

  • Tree Puncher
  • SirWindfield
  • Members
  • 0
  • 10 posts
Posted January 14, 2018
28 minutes ago, Abastro said:

No, the only way you can use will be using server resourcepacks(the one which is only applied when the user allows it). Languages are considered as resources, so you can't modify it with the server-only mod. Also you can't get the server locale.

You need to specify details like {} on lang file.

For the translation component "key", you set something like 'key=the string is {}'.

That's what I did. I have written 

key=Some string and some value {}

and then I created a new instance as shown above. I expected that the {} gets replaced by the argumentOfTypeString but that wasn't the case.

I always get this output: "You need the following item to enter {}: {}!"

I can show you the lang file and the code if you want to.

new TextComponentTranslation("chat.message.missing_key", dimensionName, itemName)
chat.message.missing_key=You need the following item to enter {}: {}!

The second one being the lang file and the first one the Java file that sends the player a message using EntityPlayer#sendMessage.

 

Any idea why this is happening?

  • Quote

Share this post


Link to post
Share on other sites

SirWindfield    0

SirWindfield

SirWindfield    0

  • Tree Puncher
  • SirWindfield
  • Members
  • 0
  • 10 posts
Posted January 14, 2018
33 minutes ago, Abastro said:

You need to specify details like {} on lang file.

For the translation component "key", you set something like 'key=the string is {}'.

So there is no way to actually have placeholders within lang files and replace them duriing runtime?

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2406

Draco18s

Draco18s    2406

  • Reality Controller
  • Draco18s
  • Members
  • 2406
  • 15940 posts
Posted January 14, 2018

https://dzone.com/articles/java-string-format-examples

The translation system runs the result through String.format

  • Quote

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Share this post


Link to post
Share on other sites

Abastro    123

Abastro

Abastro    123

  • World Shaper
  • Abastro
  • Forge Modder
  • 123
  • 1075 posts
Posted January 14, 2018

As Draco said, you can use %s for that. (I didn't know whether '{}' works or not - I always use %s)

In my experience, anything beyond %s doesn't work.

 

And as far as I know it's hard to change lang file on the fly(during runtime). You'll need reflection hackery. Why do you need it?

  • Quote

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

    • Insert image from URL
×
  • Desktop
  • Tablet
  • Phone
Sign in to follow this  
Followers 0
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Jack Richard
      [1.15.2] Minecraft Registry Problem When Loading from Jar

      By Jack Richard · Posted 2 hours ago

      Thanks so much for your help! I removed the log4j dependency, I honesty don't remember when I put that there. Once I fixed the jar.finalizedBy line, everything worked! (One small issue where I was relocating all of "com.google" when I just should've relocated "com.google.common," too)   Thanks again!
    • Teedledee
      1.16.4 Failed to synchronize registry data with server LAN

      By Teedledee · Posted 2 hours ago

      Fixed the issue, one config didnt match, downloaded randompatches to solve badly compressed packet afterwards.
    • DaemonUmbra
      [1.15.2] Minecraft Registry Problem When Loading from Jar

      By DaemonUmbra · Posted 2 hours ago

      First of all, why are you shadowing log4j? Minecraft already provides log4j2. Second if build is running shadowjar instead of jar then you might need to tweak the line where it says jar.finalizedBy('reobfJar') to finalize shadowJar instead
    • DaemonUmbra
      "The game crashed whilst rendering overlay"

      By DaemonUmbra · Posted 2 hours ago

      What do you think you should do about this?
    • DaemonUmbra
      IntelliJ doesn't include resources folder while debugging

      By DaemonUmbra · Posted 2 hours ago

      What version of Minecraft are you using?
  • Topics

    • Jack Richard
      2
      [1.15.2] Minecraft Registry Problem When Loading from Jar

      By Jack Richard
      Started 3 hours ago

    • Teedledee
      2
      1.16.4 Failed to synchronize registry data with server LAN

      By Teedledee
      Started January 18

    • GuyWithTVHead
      1
      "The game crashed whilst rendering overlay"

      By GuyWithTVHead
      Started 2 hours ago

    • GermanBucket
      2
      IntelliJ doesn't include resources folder while debugging

      By GermanBucket
      Started 4 hours ago

    • Arthurmeade12
      8
      Error Conecting to My Minecraft Server

      By Arthurmeade12
      Started Saturday at 11:05 PM

  • Who's Online (See full list)

    • DaemonUmbra
    • NullBite
    • Inforno
    • ChampionAsh5357
    • HoldenTheGamer
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • Server sided localized messages
  • Theme

Copyright © 2019 ForgeDevelopment LLC · Ads by Longitude Ads LLC Powered by Invision Community