Archive: LangDLL & Japanese non-Unicode settings


LangDLL & Japanese non-Unicode settings
Go to Regional Options, Advanced settings and choose Japanese as the language for non-Unicode applications
(you might need to install east-asian files first)

Then run an NSIS installer with LangDLL that includes English,French,German,Italian,Dutch

The LangDLL dialog will only allow English selection ! The same installer under a "latin"-configured Windows works properly.

I guess it's due to the "ç" in "Français" that maybe cannot be expressed under the Japanese ANSI codepage and it prevents to dialog combo-box from loading correctly

Is there any way to fix this ?
(I might take a look at LangDLL sources to clear this out)


Additional info:
The problem appear between releases NSIS 2.25 & NSIS 2.26

Same NSI produce an installer that works correctly with NSIS 2.25, and incorrectly with NSIS 2.26

This new bug must be related to bug fix #1564986


This also happens when you set this non-Unicode settings to Greek (and this don't require to install east-asian files so it's easier to reproduce)

That's a big problem if any non-latin computer user can only choose English as the installation language !

Is the bug scheduled for fix in NSIS bug tracker ?


It's not a bug, it's a feature. If you look closely at the changes done in 2.26, you'll find:

Modern UI: block unsupported languages in the language selection dialog (RFE #1564986)
And if you look at 2.28's, you'll find:
Modern UI: added MUI_LANGDLL_ALLLANGUAGES that forces the language selection dialog to display all languages (patch #1724876)

Alright.. I guess the words "unsupported languages" meant "languages that the installer will fail to display correctly due to missing characters in the user ACP"

Can we be sure that English will be available for all codepage/user config ?

(I still think it strange to filter this combo-box based on the "non-unicode" setting, because then on a PC with Windows French but Greek/Japanese settings for "non-unicode" app, Installer won't display the French language choice - except if I add MUI_LANGDLL_ALLLANGUAGES)


Yes, English is always available.

Languages are filtered according to their codepage. If their codepage doesn't match, they can't be displayed properly. There's no reason to show French when Japanese is selected in non-Unicode because it would display garbage.


We have the same problem with several languages too (Hungarian, Slovak, Greek, Bulgarian, Macedonian, Russian, Chines and so on)

On an Englisch windows f.e. we can not select hungarian, even if the code page is installed. But it shold be to work.

Is it a way to display all languages in the combo, where we have an installed code page, and not only what can display on the default code page?
Maybe it can be good to displayy them in a unicode code combo, and after seection switch the installer code_page to this.
Thanks for help.

The MUI_LANGDLL_ALLLANGUAGES is also not usable because of the numbers.


You can't switch the installer's codepage, it's the operation system's codepage and replacing it requires a reboot.

I don't understand your comment regarding MUI_LANGDLL_ALLLANGUAGES.


if the ALl macro defined, in the language combo box I see:
1026,1028, 1032, 1036, 1040, 1045, 1046, 1049, 1050, 1050, 1050, 1053, ...., Catalá, Cesky, Deutch, English, Espanol, ..., Magyar, ...

If it is not defined I can't see the numbers, but I also can't see f.e.'Magyar'= Hungaryan, but I have installed codepage for it.

The solution for us will be somting between the two now existing:
To see in the list all languages, where we have installed codepages, but dont show the numbers (where we have no codepages installed).


The installer must work in the following languages:
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Bulgarian"
!insertmacro MUI_LANGUAGE "Catalan"
!insertmacro MUI_LANGUAGE "Croatian"
!insertmacro MUI_LANGUAGE "Czech"
!insertmacro MUI_LANGUAGE "Danish"
!insertmacro MUI_LANGUAGE "Dutch"
!insertmacro MUI_LANGUAGE "Estonian"
!insertmacro MUI_LANGUAGE "Finnish"
!insertmacro MUI_LANGUAGE "French"
!insertmacro MUI_LANGUAGE "German"
!insertmacro MUI_LANGUAGE "Greek"
!insertmacro MUI_LANGUAGE "Hungarian"
!insertmacro MUI_LANGUAGE "Italian"
!insertmacro MUI_LANGUAGE "Latvian"
!insertmacro MUI_LANGUAGE "Lithuanian"
!insertmacro MUI_LANGUAGE "Norwegian"
!insertmacro MUI_LANGUAGE "Polish"
!insertmacro MUI_LANGUAGE "Portuguese"
!insertmacro MUI_LANGUAGE "PortugueseBR"
!insertmacro MUI_LANGUAGE "Romanian"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "Serbian"
!insertmacro MUI_LANGUAGE "SimpChinese"
!insertmacro MUI_LANGUAGE "Slovak"
!insertmacro MUI_LANGUAGE "Slovenian"
!insertmacro MUI_LANGUAGE "Spanish"
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro MUI_LANGUAGE "Thai"
!insertmacro MUI_LANGUAGE "TradChinese"
!insertmacro MUI_LANGUAGE "Turkish"


Are you sure you've defined MUI_LANGDLL_ALLLANGUAGES prior to inserting the language macros?


Thanks!
It works now.

Maybe it will be good to add some comment in the maunual that it must be befor the langages.


I have removed the limitation instead of updating the documentation. It was simpler. Please test:

http://nsis.svn.sourceforge.net/view...0UI/System.nsh


Well, kichik is right in that you wouldn't want to show everything if your codepage doesn't support it even if you "already installed the language on your windows." The problem is that the current codepage will still show junk. So I'm not sure why you would want to use MUI_LANGDLL_ALLLANGUAGES unless you want it for testing purposes? Even that's dubious.

If you truly want a multi-lingual installer that looks right on any codepage, you have to use the Unicode installer. If you do, you can mix and match whatever you want like this:

http://www.scratchpaper.com/Unicode-NSIS-Propaganda.gif