여러 설치 프로그램을 만들려면 nsis를 사용하고 있습니다. 설치 프로그램에 EULA, 맞춤 양식 (즉, 설치할 항목)이 포함되어 있습니다. 하나의 nsis 스크립트가 있고 언어 파일을 통해 다른 요소의 텍스트를 제어 할 수 있기를 원합니다. 요소는 EULA 텍스트, 다음 버튼 (영어의 '다음', 스페인어의 'Proximo') 및 설치 중에 표시되는 기타 텍스트 일 수 있습니다. 이 다국어 설치 프로그램을 구현하는 올바른 방법은 무엇입니까?NSIS에서 모든 설치 요소의 언어 제어
1
A
답변
0
NSIS는이를 지원합니다.
MultiLanguage라는이 기능의 예제는 설치 언어에 별도의 언어를로드하고 지역화 된 문자열을 사용하는 방법을 보여줍니다.
당신은 현대 UI \하세요 MultiLanguage.nsi \ NSIS \ 예에서 찾을 수 있습니다
1
기본을 (내가 SO 규칙 위반 될 수 있음을, 내가 여기에 전체 스크립트를 붙여 넣을 수 있습니다 확실하지 않다) 여러 언어를 사용하는 방법의 예 :
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}"
http://nsis.sourceforge.net/Examples/languages.nsi에는 유용한 예제가 있습니다. – icc97