Jump to content

Recommended Posts

Posted

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

Posted
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 {}'.

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

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

Posted
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?

Posted
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?

Posted

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

The translation system runs the result through String.format

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.

Posted

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?

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.