我尝试在.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始终显示相同的语言字符串。
一种解决方法是将自定义代码从.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应该显示正确的本地化消息。