簡體   English   中英

在NSIS中控制所有安裝程序元素的語言

[英]Control of all installer elements' language in NSIS

我正在使用nsis創建幾個安裝程序。 我的安裝程序包含EULA,自定義表單(即安裝內容)。 我想要一個nsis腳本,並能夠通過語言文件控制不同元素的文本。 元素可以是:EULA文本,按鈕上的下一個(即英語中的“下一個”與西班牙語中的“ Proximo”)以及安裝過程中顯示的任何其他文本。 實施此多語言安裝程序的正確方法是什么?

有關如何使用多種語言的基本示例:

Name "Test"
RequestExecutionLevel user
Outfile "Test.exe"


#Generate some license files on the fly
!tempfile LicFile1
!appendfile "${LicFile1}" "Hello from license 1."
!tempfile LicFile2
!appendfile "${LicFile2}" "Hello from license 2!"

LoadLanguageFile "${NSISDIR}\Contrib\Language files\Danish.nlf"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Swedish.nlf"

LicenseLangString licenseData ${LANG_DANISH} "${LicFile1}"
LicenseLangString licenseData ${LANG_SWEDISH} "${LicFile2}"

LicenseData $(licenseData)
LangString ^CancelBtn ${LANG_DANISH} "!lecnaC" ; Override built-in string from .nlf just for fun
LangString myCustomString ${LANG_DANISH} "Foo"
LangString myCustomString ${LANG_SWEDISH} "Bar"

Page License
Page InstFiles

!include LogicLib.nsh

Function .onInit
Push ""
Push ${LANG_DANISH}
Push "Danish"
Push ${LANG_SWEDISH}
Push "Bork bork"
Push A ; LangDLL: A means auto count languages
LangDLL::LangDialog "Installer Language" "Please select the language of the installer"
Pop $LANGUAGE
${IfThen} $LANGUAGE == "cancel" ${|} Abort  ${|}
FunctionEnd

Section "Dummy"
MessageBox MB_OK "$(myCustomString) and baz"
SectionEnd

!delfile "${LicFile1}"
!delfile "${LicFile2}"

使用MUI和“外部”文件作為自定義字符串的另一個示例:

Name "Test"
RequestExecutionLevel user
Outfile "Test.exe"


#Generate some language and license files for this example
!tempfile LicFile1
!appendfile "${LicFile1}" "Hello from license 1."
!tempfile LicFile2
!appendfile "${LicFile2}" "Hello from license 2!"
!tempfile CustomDanNsh
!appendfile "${CustomDanNsh}" '!insertmacro LANGFILE_EXT Danish$\n'
!appendfile "${CustomDanNsh}" '${LangFileString} myCustomString "red"$\n'
!tempfile CustomSweNsh
!appendfile "${CustomSweNsh}" '!insertmacro LANGFILE_EXT Swedish$\n'
!appendfile "${CustomSweNsh}" '${LangFileString} myCustomString "blue"$\n'

!include "MUI2.nsh"
!define MUI_LANGDLL_ALLLANGUAGES

!insertmacro MUI_PAGE_LICENSE "$(licenseData)"
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_LANGUAGE "Danish"
!insertmacro LANGFILE_INCLUDE "${CustomDanNsh}"
LicenseLangString licenseData 0 "${LicFile1}"
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro LANGFILE_INCLUDE "${CustomSweNsh}"
LicenseLangString licenseData 0 "${LicFile2}"


Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

Section "Dummy"
MessageBox MB_OK "White or yellow on $(myCustomString)"
SectionEnd

!delfile "${CustomDanNsh}"
!delfile "${CustomSweNsh}"
!delfile "${LicFile1}"
!delfile "${LicFile2}"

NSIS為此提供了大力支持。

有一個名為MultiLanguage的功能示例,該示例顯示了如何將單獨的語言加載到安裝程序中並使用本地化的字符串。

您可以在NSIS \\ Examples \\ Modern UI \\ MultiLanguage.nsi中找到它

(我不確定是否可以在此處粘貼整個腳本,這可能違反了SO規則)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM