How to select language translations

Hi,

I’m trying to understand how to use language translations. I can see how to add a language, and add translations for individual buttons and whatnot. However, I don’t see how to actually get the module to use them.

Specifically, I wanted to update the Espana 1936 module, which is currently only Spanish. I thought it would be nice to add an English version. So edited the module, added some English translations to everything I could see - buttons, etc, but I’m not seeing a way to actually see them.

My Vassal preferences are definitely set to English, and I tried it in Play mode as well.

What’s the trick? Do I need to add a custom menu of some sort?

Vassal 3.5.8 on Mac (Catalina), BTW.

Thanks,

Dan

I believe you set your OS language setting to the language, and then restart VASSAL and it will use that language.

@Cattlesquat I already have my preferred language set to English via the Settings gui. My locale settings via the terminal are as follows:

>locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

And yet the Espana 1936 module always shows Spanish even after adding English.

Some possible clues. I noticed that if I don’t explicitly set the country for English then there’s some sort of error when you try to start it up:

2021-11-10 23:09:51,480 [96269-AWT-EventQueue-0] ERROR VASSAL.tools.ProblemDialog - 
java.io.FileNotFoundException: 'Module_en.properties' not found in /Users/dberger/Downloads/Vassal/Modules/the_late_unpleasantness.vmod
	at VASSAL.tools.DataArchive.getInputStream(DataArchive.java:237)
	at VASSAL.i18n.Translation.getBundle(Translation.java:200)
	at VASSAL.i18n.Localization.translate(Localization.java:143)
	at VASSAL.launch.Player.launch(Player.java:90)
	at VASSAL.launch.Launcher$1.run(Launcher.java:86)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

But, even if I select a country, e.g. United States, I still see these warnings in the log:

2021-11-10 23:10:43,467 [96275-AWT-EventQueue-0] INFO  VASSAL.build.GameModule - The Late Unpleasantness version 1.0
2021-11-10 23:10:43,488 [96275-AWT-EventQueue-0] WARN  VASSAL.i18n.BundleHelper - No Translation: Wizard.Next_mnemonic
2021-11-10 23:10:43,488 [96275-AWT-EventQueue-0] WARN  VASSAL.i18n.BundleHelper - No Translation: Wizard.Prev_mnemonic
2021-11-10 23:10:43,488 [96275-AWT-EventQueue-0] WARN  VASSAL.i18n.BundleHelper - No Translation: Wizard.Finish_mnemonic
2021-11-10 23:10:43,488 [96275-AWT-EventQueue-0] WARN  VASSAL.i18n.BundleHelper - No Translation: Wizard.Cancel_mnemonic

Relevant? Not sure.

I dug a bit on that warning:

>zipgrep "Next_mnemonic" wizard-0.998.1.jar      
org/netbeans/api/wizard/Bundle.properties:Next_mnemonic=N
org/netbeans/api/wizard/Bundle_de_DE.properties:Next_mnemonic=W
org/netbeans/api/wizard/Bundle_fr.properties:Next_mnemonic=S
org/netbeans/api/wizard/Bundle_it.properties:Next_mnemonic=v
org/netbeans/api/wizard/Bundle_nl.properties:Next_mnemonic=g
org/netbeans/api/wizard/Bundle_pt.properties:Next_mnemonic=P
org/netbeans/api/wizard/displayer/NavButtonManager.class:Binary file (standard input) matches

I don’t really know what that file does, though it’s curious that there’s no English or Spanish there. Relevant? Again, I don’t know.

Dan

Hi,

Those errors you see aren’t really relevant.

First thing is that translations are never active when you are editing the module. A module is only ever translated when you ‘Open’ it to play it, not when you ‘Edit’ it.

Otherwise doing as you describe should work, it works for me. I edited the Espana module, added an English translation, translated the Retire button and saved the module. When I then play the module, I now see Retire instead of Retirarse.

Regards.

Ok, I started from scratch this morning and…now it works?

The only thing I did differently was click the little arrow between the original text and the translation. Could that have triggered something? Otherwise, I’m at a loss as to why it didn’t work before.

Sorry for the noise, folks.

Dan

Hello!
In my case the problem appears with the translated images of the buttons. At the beginning all the buttons appear correctly translated but, once I click on any of them, all the buttons change to the original buttons in Spanish…
I have reported this issue a long time ago but so far nobody has found a solution
Thank you in advance.
Héctor

@hector.caraballo Yes, I’m now noticing the same thing, though it seems to depend on which window. So far, it’s only happening on the game piece window. The other windows seem to be ok.

I’ll keep tinkering with it, and see how it goes.

As of version 3.6.10 that particular issue seems to have gone away for me.

1 Like

Yeah! That’s right! :slight_smile:
This bug it’s finally solved.