Jump to content

Recommended Posts

Posted

I'm trying to add localized texts to a gui. I'm using I18n.format(String string, Object... params) in order to localize the texts.

 

When I do any alternations to the texts (like replacing regular expressions with actual strings or splitting lines using string.split(regEx)), the texts have a prefix "Format error: " on them.

 

My gui drawScreen code:

@Override
public void drawScreen(int par1, int par2, float par3) {
GlStateManager.color(1F, 1F, 1F, 1F);
mc.renderEngine.bindTexture(texture);
drawTexturedModalRect(left, top, 0, 0, guiWidth, guiHeight);
if (world.isRemote) {
	String xPos = I18n.format("guiText.ijc:xPos").replace("%xPos", "" + pos.getX());
	String yPos = I18n.format("guiText.ijc:yPos").replace("%yPos", "" + pos.getY());
	String zPos = I18n.format("guiText.ijc:zPos").replace("%zPos", "" + pos.getZ());

	fontRendererObj.drawString(xPos, left + 16, top + 32, 4210752);
	fontRendererObj.drawString(yPos, left + 16, top + 48, 4210752);
	fontRendererObj.drawString(zPos, left + 16, top + 64, 4210752);
        }
}

 

My en_US.lang file:

guiText.ijc:xPos=x: %xPos
guiText.ijc:yPos=y: %yPos
guiText.ijc:zPos=z: %zPos

 

A visual example of the problem:

http://pasteboard.co/27h0Krag.png - The "Format error: " at the beginning of each line that I translate...

 

I hope I'm not doing something silly...

Posted

I18n.format

returns the translated text prefixed with "Format error:" when

String.format

throws an

IllegalFormatException

. You can set a breakpoint in the

catch

block of

Locale#formatMessage

(called by

I18n.format

) to see what this exception is.

 

I suspect it's because you're using a percent sign followed by a letter (and then some other letters) as your own formatting placeholders, but

String.format

is trying to replace these itself and throwing an exception because they're not valid placeholders or there's no format arguments.

 

Do one of the following to fix this:

  • Use valid formatting placeholders (e.g.
    %d

    ), pass the format arguments to

    I18n.format

    and remove the

    String#replace

    calls.

  • Escape the percent sign with another percent sign (
    %%

    ) to prevent

    String.format

    from treating it as a formatting placeholder.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

I just replaced the placeholder % with wrapping the word with * and it works... I might look into doing one of the offers to fix the general problem if it appears again, but for now it works. Thanks a lot!

Posted

I'm localizing the coords because I'm putting it in a gui with text and I want the gui to be fully modifiable to other languages, so even if the coords stay the same, there are other places using coordinates and they do have text that is interchangable between languages, so I just want to make it fully modifiable.

 

Thanks for the Integer tip, I actually didn't know that... ;)

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Oh I forgot to update the title. I figured out the issue and I'm rather embarrassed to say that it was a file path issue. The game already knew I was accessing the achievements so I wasn't suppose to include advancements in the file path. Minecraft file paths have always confused me a little bit... ResourceLocation advancementId = new ResourceLocation( TheDeadRise.MODID,"adventure/spawntrigger");
    • Can someone help my with this? My forge server won't open and I'm not that good with this stuff. It gave me this error message:   C:\Users\apbeu\Desktop\Forge server>java -Xmx4G -Xms1G -jar server.jar nogui 2024-12-11 18:21:01,054 main WARN Advanced terminal features are not available in this environment [18:21:01] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmlserver, --fml.forgeVersion, 36.2.34, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, nogui] [18:21:01] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.1.3+8.1.3+main-8.1.x.c94d18ec starting: java version 21.0.4 by Oracle Corporation Exception in thread "main" java.lang.IllegalAccessError: class cpw.mods.modlauncher.SecureJarHandler (in unnamed module @0x402e37bc) cannot access class sun.security.util.ManifestEntryVerifier (in module java.base) because module java.base does not export sun.security.util to unnamed module @0x402e37bc         at cpw.mods.modlauncher.SecureJarHandler.lambda$static$1(SecureJarHandler.java:45)         at cpw.mods.modlauncher.api.LamdbaExceptionUtils.uncheck(LamdbaExceptionUtils.java:95)         at cpw.mods.modlauncher.SecureJarHandler.<clinit>(SecureJarHandler.java:45)         at cpw.mods.modlauncher.Launcher.lambda$new$6(Launcher.java:55)         at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)         at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:52)         at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:47)         at cpw.mods.modlauncher.Environment.computePropertyIfAbsent(Environment.java:62)         at cpw.mods.modlauncher.Launcher.<init>(Launcher.java:55)         at cpw.mods.modlauncher.Launcher.main(Launcher.java:66)         at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:63)         at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:60)         at net.minecraftforge.server.ServerMain.main(ServerMain.java:57) C:\Users\apbeu\Desktop\Forge server>pause
    • Here is the url for the crash report if anyone can help me, please. https://mclo.gs/KGn5LWy  
    • Every single time I try and open my modpack it crashes before the game fully opens and I don't know what is wrong. I open the crash logs but I don't understand what any of it means. What do I do?
    • Hey, sorry I haven't said anything in a while. I was banned on here for sending you straight up crash logs and they banned me for spam... but I learned that these forums are for forge only and I was working with neoforge... but thank you for all the help.
  • Topics

×
×
  • Create New...

Important Information

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