NSIS脚本的语言包文件,存放在以下目录:
NSIS安装目录\Contrib\Language files
在这个目录下有很多语言包,一般简体中文使用的语言包是 SimpChinese.nlf 和 SimpChinese.nsh 两个文件。
在NSIS脚本中,写入下面这句话,就可以调用简体中文语言包了。
!insertmacro MUI_LANGUAGE "SimpChinese"
不过,NSIS程序默认的简体中文语言包有很多问题。这个语言包遣词非常生硬,难以满足客户的很多定制化要求。
因此我决定在这个语言包的基础上,自己新写一组语言包:CustomizedChinese
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 代码如下
;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
将这两个文件,放置到下面目录:
NSIS安装目录\Contrib\Language files
再在NSIS脚本中加入这句话:
!insertmacro MUI_LANGUAGE "CustomizedChinese"
就可以应用这个新的语言包了。假定某程序定义了PRODUCT_NAME如下:
!define PRODUCT_NAME "X系统"
使用makensisw.exe打包完毕后,就可以看到新语言包的效果了!
注意:
1、在nsh脚本中使用$(^NameDA)和$(^Name)替换PRODUCT_NAME时,NSIS程序会在名称后面自动添加一个空格。
2、一个安装向导并不是所有的文字描述都被写到语言包里,比如有些自定义的MessageBox的文字描述,就需要在NSIS脚本中自行编写。
END