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 回答