Chinaunix首页 | 论坛 | 博客
  • 博客访问: 82317
  • 博文数量: 15
  • 博客积分: 502
  • 博客等级: 下士
  • 技术积分: 158
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-28 01:18
文章分类

全部博文(15)

文章存档

2012年(1)

2010年(2)

2008年(1)

2006年(6)

2005年(5)

我的朋友

分类: WINDOWS

2012-10-28 16:21:42

    公司的安装/卸载程序要求支持多语言,于是就想搞清楚NSIS到底是怎么支持多语言的。在参考安装目录中的示例脚本时,觉得它太过啰嗦,于是自己写了一个,以便简略地说明它是如何处理多语言的。


点击(此处)折叠或打开

  1. OutFile Install.exe

  2. XPStyle on
  3. ShowInstDetails show
  4. ShowUninstDetails show

  5. RequestExecutionLevel user

  6. Page instfiles

  7. LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
  8. LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf"

  9. LangString Message ${LANG_ENGLISH} "English message"
  10. LangString Message ${LANG_SIMPCHINESE} "中文消息"

  11. ; 安装
  12. Function .onInit
  13.     Push ${LANG_ENGLISH}
  14.     ;Push ${LANG_SIMPCHINESE}
  15.     Pop $LANGUAGE
  16. FunctionEnd
  17. Section "Install"
  18.     MessageBox MB_OK $(Message)
  19.     WriteUninstaller "$EXEDIR\Uninstall.exe"
  20. SectionEnd

  21. ; 卸载
  22. Function un.onInit
  23.     Push ${LANG_ENGLISH}
  24.     ;Push ${LANG_SIMPCHINESE}
  25.     Pop $LANGUAGE
  26. FunctionEnd
  27. Section "Uninstall"
  28.     MessageBox MB_OK $(Message)
  29.     ;Push ${LANG_SIMPCHINESE}
  30.     ;Pop $LANGUAGE
  31.     ;MessageBox MB_OK $(Message)
  32. SectionEnd


简要说明如下:
    LoadLanguageFile用于装载语言文件,语言文件中定义了NSIS自己使用的全局变量,如SimpChinese.nsh里面的定义:${LangFileString} MUI_TEXT_LICENSE_TITLE "许可证协议"

    LangString用于指定用户变量对应的、语言相关的字符串,也就是一个变量可以对应多个字符串,显示时究竟用哪一个根据当前语言来,也就是根据$LANGUAGE来。类似C++里面的map或C#里面的字典:Display(SomeMsg[Language]);

    $LANGUAGE是NSIS自身的全局变量,设置它就等于设置了安装/卸载界面上显示的语言,以及用户变量对应的语言。请在(un).onInit函数里面指定该值,在节中指定无效。注意在(un).onInit函数里面弹消息框的话是不能按语言来显示文本的,因为此时还没执行LangString,也就是NSIS的多语言机制还没起作用。

阅读(7154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~