SirWindfield Posted January 14, 2018 Share 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 Link to comment Share on other sites More sharing options...
Abastro Posted January 14, 2018 Share 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. Link to comment Share on other sites More sharing options...
SirWindfield Posted January 14, 2018 Author Share 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 Link to comment Share on other sites More sharing options...
SirWindfield Posted January 14, 2018 Author Share 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 Link to comment Share on other sites More sharing options...
Draco18s Posted January 14, 2018 Share 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. Link to comment Share on other sites More sharing options...
Abastro Posted January 14, 2018 Share 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. Link to comment Share on other sites More sharing options...
Recommended Posts
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.