3

.onInit メソッドでローカライズされたメッセージ ボックスを取得しようとしましたが、次のコードで失敗しました。

!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "German"

LangString Message ${LANG_ENGLISH} "This is a message."
LangString Message ${LANG_GERMAN} "Dies ist eine Nachricht"

Function .onInit
  !insertmacro MUI_LANGDLL_DISPLAY
  MessageBox MB_OK "$(Message)"
FunctionEnd

MessageBox には、常に同じ言語文字列が表示されます。

4

1 に答える 1

3

問題は、言語が.onInit メソッドの後に処理されることです。

これを回避するには、カスタム コードを .onInit メソッドから .onGUIInit メソッドに配置します。

MUI2 では、これは次のように行われます。

!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit

!include "MUI2.nsh"

!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "German"

LangString Message ${LANG_ENGLISH} "This is a message."
LangString Message ${LANG_GERMAN} "Dies ist eine Nachricht"

Function .onInit
  !insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

Function myGuiInit
  MessageBox MB_OK "$(Message)"
FunctionEnd

これで、MessageBox に正しくローカライズされたメッセージが表示されるはずです。

于 2013-01-13T16:54:08.497 に答える