2014-01-20 2 views
1

여러 설치 프로그램을 만들려면 nsis를 사용하고 있습니다. 설치 프로그램에 EULA, 맞춤 양식 (즉, 설치할 항목)이 포함되어 있습니다. 하나의 nsis 스크립트가 있고 언어 파일을 통해 다른 요소의 텍스트를 제어 할 수 있기를 원합니다. 요소는 EULA 텍스트, 다음 버튼 (영어의 '다음', 스페인어의 'Proximo') 및 설치 중에 표시되는 기타 텍스트 일 ​​수 있습니다. 이 다국어 설치 프로그램을 구현하는 올바른 방법은 무엇입니까?NSIS에서 모든 설치 요소의 언어 제어

+0

http://nsis.sourceforge.net/Examples/languages.nsi에는 유용한 예제가 있습니다. – icc97

답변

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}"