NSIS腳本學習:建立 MUI 界面使用的自定義語言包文件(nlf & nsh)

NSIS腳本的語言包文件,存放在如下目錄:字體

NSIS安裝目錄\Contrib\Language files

在這個目錄下有不少語言包,通常簡體中文使用的語言包是 SimpChinese.nlf 和 SimpChinese.nsh 兩個文件。ui

在NSIS腳本中,寫入下面這句話,就能夠調用簡體中文語言包了。指針

!insertmacro MUI_LANGUAGE "SimpChinese"

不過,NSIS程序默認的簡體中文語言包有不少問題。這個語言包遣詞很是生硬,難以知足客戶的不少定製化要求。日誌

所以我決定在這個語言包的基礎上,本身新寫一組語言包:CustomizedChinesecode

CustomizedChinese.nlf 代碼以下:進程

# ###################################
# nlf file of CustomizedChinese
# Author: Tsybius2014
# DateTime: 2016/04/06 
# Remark: none
# ###################################
# Header, don't edit
NLF v6
# Language ID
2052
# Font and size - dash (-) means default 字體名稱與大小
宋體
9
# Codepage - dash (-) means ANSI code page ANSI 字碼頁
936
# RTL - anything else than RTL means LTR 由右至左書寫
-
# ^Branding
Nullsoft Install System %s
# ^SetupCaption
$(^Name) 安裝
# ^UninstallCaption
$(^Name) 卸載
# ^LicenseSubCaption
: 受權協議
# ^ComponentsSubCaption
: 安裝選項
# ^DirSubCaption
: 安裝文件夾
# ^InstallingSubCaption
: 正在安裝
# ^CompletedSubCaption
: 已完成
# ^UnComponentsSubCaption
: 卸載選項
# ^UnDirSubCaption
: 卸載文件夾
# ^ConfirmSubCaption
: 確認
# ^UninstallingSubCaption
: 正在卸載
# ^UnCompletedSubCaption
: 完成
# ^BackBtn
< 上一步(&P)
# ^NextBtn
下一步(&N) >
# ^AgreeBtn
我接受(&I)
# ^AcceptBtn
我接受「受權協議」中的條款(&A)
# ^DontAcceptBtn
我不接受「受權協議」中的條款(&N)
# ^InstallBtn
安裝(&I)
# ^UninstallBtn
卸載(&U)
# ^CancelBtn
取消(&C)
# ^CloseBtn
關閉(&L)
# ^BrowseBtn
瀏覽(&B)...
# ^ShowDetailsBtn
顯示細節(&D)
# ^ClickNext
單擊 [下一步(N)] 繼續。
# ^ClickInstall
單擊 [安裝(I)] 開始安裝。
# ^ClickUninstall
單擊 [卸載(U)] 開始卸載。
# ^Name
名稱
# ^Completed
已完成
# ^LicenseText
在安裝 $(^NameDA)以前請檢閱受權協議。若是你接受協議中全部條款,單擊 [我接受(I)] 。
# ^LicenseTextCB
在安裝 $(^NameDA)以前請檢閱受權協議。若是你接受協議中全部條款,單擊下方的勾選框。 $_CLICK
# ^LicenseTextRB
在安裝 $(^NameDA)以前請檢閱受權協議。若是你接受協議中全部條款,選擇下方的第一個選項。 $_CLICK
# ^UnLicenseText
在卸載 $(^NameDA)以前請檢閱受權協議。若是你接受協議中全部條款,單擊 [我接受(I)] 。
# ^UnLicenseTextCB
在卸載 $(^NameDA)以前請檢閱受權協議。若是你接受協議中全部條款,單擊下方的勾選框。 $_CLICK
# ^UnLicenseTextRB
在卸載 $(^NameDA)以前請檢閱受權協議。若是你接受協議中全部條款,選擇下方的第一個選項。 $_CLICK
# ^Custom
自定義
# ^ComponentsText
勾選你想要安裝的組件,並解除勾選你不但願安裝的組件。 $_CLICK
# ^ComponentsSubText1
選定安裝的類型: 
# ^ComponentsSubText2_NoInstTypes
選定安裝的組件: 
# ^ComponentsSubText2
或者,自定義選定想安裝的組件: 
# ^UnComponentsText
勾選你想要卸載的組件,並解除勾選你不但願卸載的組件。 $_CLICK
# ^UnComponentsSubText1
選擇卸載的類型: 
# ^UnComponentsSubText2_NoInstTypes
選擇要卸載的組件: 
# ^UnComponentsSubText2
或是,選擇想要卸載的可選項組件: 
# ^DirText
選擇 $(^NameDA)要安裝的文件夾。要安裝到其餘文件夾,單擊 [瀏覽(B)] 並選擇該文件夾。\r\n\r\n$_CLICK
# ^DirSubText
目標文件夾
# ^DirBrowseText
選擇要安裝 $(^NameDA)的文件夾位置: 
# ^UnDirText
卸載嚮導會將 $(^NameDA)從下面的文件夾中卸載。要卸載不一樣文件夾中的內容,單擊 [瀏覽(B)] 並選擇其餘的文件夾。 $_CLICK
# ^UnDirSubText
""
# ^UnDirBrowseText
選擇要卸載 $(^NameDA)的文件夾位置: 
# ^SpaceAvailable
"可用空間: "
# ^SpaceRequired
"所需空間: "
# ^UninstallingText
這個嚮導將從你的電腦卸載 $(^NameDA)。 $_CLICK
# ^UninstallingSubText
卸載目錄: 
# ^FileError
不能打開要寫入的文件: \r\n\t"$0"\r\n單擊 [Abort] 放棄安裝,\r\n [Retry] 從新嘗試寫入文件,或\r\n [Ignore] 忽略這個文件。
# ^FileError_NoIgnore
不能打開要寫入的文件: \r\n\t"$0"\r\n單擊 [Retry] 從新嘗試寫入文件,或\r\n [Cancel] 取消安裝。
# ^CantWrite
"沒法寫入: "
# ^CopyFailed
"複製失敗 "
# ^CopyTo
"複製到: "
# ^Registering
"正在註冊: "
# ^Unregistering
"正在解除註冊: "
# ^SymbolNotFound
"沒法找到符號: "
# ^CouldNotLoad
"沒法加載: "
# ^CreateFolder
"建立文件夾: " 
# ^CreateShortcut
"建立快捷方式: "
# ^CreatedUninstaller
"建立卸載程序: "
# ^Delete
"刪除文件: "
# ^DeleteOnReboot
"從新啓動後刪除: "
# ^ErrorCreatingShortcut
"正在建立快捷方式時發生錯誤: "
# ^ErrorCreating
"正在建立時發生錯誤: "
# ^ErrorDecompressing
"正在解壓縮數據發生錯誤!已損壞的安裝程序?"
# ^ErrorRegistering
"正在註冊 DLL 時發生錯誤"
# ^ExecShell
"運行外部程序: "
# ^Exec
"運行: "
# ^Extract
"抽取: "
# ^ErrorWriting
"抽取: 沒法寫入文件 "
# ^InvalidOpcode
"安裝損毀: 無效的操做代碼 "
# ^NoOLE
"沒有 OLE 用於: "
# ^OutputFolder
"輸出目錄: "
# ^RemoveFolder
"移除目錄: "
# ^RenameOnReboot
"從新啓動後重命名: "
# ^Rename
"重命名: "
# ^Skipped
"已跳過: "
# ^CopyDetails
"複製細節到剪貼板 "
# ^LogInstall
"日誌安裝進程"
# byte
B
# kilo
K
# mega
M
# giga
G

CustomizedChinese.nsh 代碼以下ip

;Language: 'Chinese (Customized)' (2052)
;Translator: Tsybius2014
;Revision date: 2016/04/06
;Verified by: 

!insertmacro LANGFILE "CustomizedChinese" "Chinese (Customized)"

!ifdef MUI_WELCOMEPAGE
  ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "歡迎使用 $(^NameDA)安裝嚮導"
  ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "本嚮導將指引您完成 $(^NameDA)的安裝。$\r$\n$\r$\n在開始安裝以前,建議關閉其餘全部應用程序。此操做將容許「安裝程序」更新指定的系統文件,而不須要從新啓動您的電腦。$\r$\n$\r$\n若您的電腦已安裝 $(^NameDA)程序,請先行卸載再進行安裝。$\r$\n$\r$\n$_CLICK"
!endif

!ifdef MUI_UNWELCOMEPAGE
  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "歡迎使用 $(^NameDA)卸載嚮導"
  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "本嚮導將指引您完成 $(^NameDA)的卸載。$\r$\n$\r$\n在開始卸載以前,請確認 $(^NameDA)已經關閉。$\r$\n$\r$\n$_CLICK"
!endif

!ifdef MUI_LICENSEPAGE
  ${LangFileString} MUI_TEXT_LICENSE_TITLE "受權協議"
  ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "在安裝 $(^NameDA)以前,請閱讀下面的受權協議。"
  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "若是您接受本協議,單擊 [我接受(I)] 繼續安裝。若是您選定 [取消(C)] ,安裝程序將會關閉。必須接受此協議後才能安裝 $(^NameDA)。"
  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "若是您接受「受權協議」,選中下方的勾選框,選中後才能安裝 $(^NameDA)。$_CLICK"
  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "若是您接受「受權協議」,選擇下方第一個選項。必需要接受協議才能安裝 $(^NameDA)。$_CLICK"
!endif

!ifdef MUI_UNLICENSEPAGE
  ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "受權協議"
  ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "在卸載 $(^NameDA)以前,請閱讀下面的責任條款。"
  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "若是您接受本協議,單擊 [我接受(I)] 繼續卸載。若是您選定 [取消(C)] ,安裝程序將會關閉。必需要接受此協議後才能卸載 $(^NameDA)。"
  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "若是您接受「受權協議」,單擊下方的勾選框。必需要接受協議才能卸載 $(^NameDA)。$_CLICK"
  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "若是您接受「受權協議」,選擇下方第一個選項。必需要接受協議才能卸載 $(^NameDA)。$_CLICK"
!endif

!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
  ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "按 [PgDn] 閱讀「受權協議」的其他部分。"
!endif

!ifdef MUI_COMPONENTSPAGE
  ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "選擇組件"
  ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "選擇您想要安裝 $(^NameDA)的那些功能。"
!endif

!ifdef MUI_UNCOMPONENTSPAGE
  ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "選定組件"
  ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "選定 $(^NameDA)當中您想要卸載的功能。"
!endif

!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
  ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "描述"
  !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "移動您的鼠標指針到組件之上,即可見到它的描述。"
  !else
    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "移動您的鼠標指針到組件之上,即可見到它的描述。"
  !endif
!endif

!ifdef MUI_DIRECTORYPAGE
  ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "選擇安裝位置"
  ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "選擇 $(^NameDA)的安裝文件夾。"
!endif

!ifdef MUI_UNDIRECTORYPAGE
  ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "選定卸載位置"
  ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "選定 $(^NameDA)要卸載的文件夾。"
!endif

!ifdef MUI_INSTFILESPAGE
  ${LangFileString} MUI_TEXT_INSTALLING_TITLE "正在安裝"
  ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "$(^NameDA)正在安裝,請等候..."
  ${LangFileString} MUI_TEXT_FINISH_TITLE "安裝完成"
  ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "安裝成功。"
  ${LangFileString} MUI_TEXT_ABORT_TITLE "安裝己停止"
  ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "安裝失敗。"
!endif

!ifdef MUI_UNINSTFILESPAGE
  ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "正在卸載"
  ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE " $(^NameDA)正在卸載,請等候..."
  ${LangFileString} MUI_UNTEXT_FINISH_TITLE "卸載已完成"
  ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "卸載成功。"
  ${LangFileString} MUI_UNTEXT_ABORT_TITLE "卸載已停止"
  ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "卸載失敗。"
!endif

!ifdef MUI_FINISHPAGE
  ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "正在完成 $(^NameDA)安裝嚮導"
  ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT " $(^NameDA)已安裝在您的電腦。$\r$\n$\r$\n單擊 [完成(F)] 關閉此嚮導。"
  ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "您的系統須要從新啓動,以便完成 $(^NameDA)的安裝。如今要從新啓動嗎?"
!endif

!ifdef MUI_UNFINISHPAGE
  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "正在完成 $(^NameDA)卸載嚮導"
  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT " $(^NameDA)已從您的電腦卸載。$\r$\n$\r$\n單擊 [完成] 關閉這個嚮導。"
  ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "電腦須要從新啓動,以便完成 $(^NameDA)的卸載。如今想要從新啓動嗎?"
!endif

!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
  ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "是,如今從新啓動(&Y)"
  ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "否,我稍後再自行從新啓動(&N)"
  ${LangFileString} MUI_TEXT_FINISH_RUN "運行 $(^NameDA)(&R)"
  ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "顯示「自述文件」(&M)"
  ${LangFileString} MUI_BUTTONTEXT_FINISH "完成(&F)"  
!endif

!ifdef MUI_STARTMENUPAGE
  ${LangFileString} MUI_TEXT_STARTMENU_TITLE "選擇「開始菜單」文件夾"
  ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "選擇「開始菜單」文件夾,用於建立程序的快捷方式。"
  ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "選擇「開始菜單」文件夾,建立程序的快捷方式。如輸入的菜單名稱不存在於「開始菜單」中,嚮導會自動建立新文件夾。"
  ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "不建立快捷方式(&N)"
!endif

!ifdef MUI_UNCONFIRMPAGE
  ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "卸載 $(^NameDA)"
  ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "從您的電腦卸載 $(^NameDA)"
!endif

!ifdef MUI_ABORTWARNING
  ${LangFileString} MUI_TEXT_ABORTWARNING "您肯定要退出 $(^Name)安裝程序嗎?"
!endif

!ifdef MUI_UNABORTWARNING
  ${LangFileString} MUI_UNTEXT_ABORTWARNING "您肯定要退出 $(^Name)卸載嗎?"
!endif

將這兩個文件,放置到下面目錄:it

NSIS安裝目錄\Contrib\Language files

再在NSIS腳本中加入這句話:io

!insertmacro MUI_LANGUAGE "CustomizedChinese"

就能夠應用這個新的語言包了。假定某程序定義了PRODUCT_NAME以下:基礎

!define PRODUCT_NAME "X系統"

使用makensisw.exe打包完畢後,就能夠看到新語言包的效果了!

注意:

一、在nsh腳本中使用$(^NameDA)和$(^Name)替換PRODUCT_NAME時,NSIS程序會在名稱後面自動添加一個空格。

二、一個安裝嚮導並非全部的文字描述都被寫到語言包裏,好比有些自定義的MessageBox的文字描述,就須要在NSIS腳本中自行編寫。

END

相關文章
相關標籤/搜索