NSIS:在.onInit(MUI2)中为MessageBox使用选定的语言

问题描述 投票:3回答:1

我尝试在.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始终显示相同的语言字符串。

nsis
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应该显示正确的本地化消息。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.