设为首页 收藏本站

NSIS中文论坛

查看: 111|回复: 1

[求助] nsis 如何判断用户选择的语言?

[复制链接]

该用户从未签到

0

主题

1

帖子

12

积分

积分
12
发表于 2019-2-21 21:33:04 | 显示全部楼层 |阅读模式
本帖最后由 万丽 于 2019-2-21 21:41 编辑

  1. ; 安装程序初始定义常量
  2. !define PRODUCT_NAME "KKCap"
  3. !define PRODUCT_VERSION "20190120a"
  4. !define PRODUCT_PUBLISHER "KKCap, Inc."
  5. !define PRODUCT_WEB_SITE "https://www.kkcap.net"

  6. # COMPRESS #

  7. SetCompress Auto
  8. SetCompressor /SOLID /FINAL lzma
  9. SetCompress force
  10. SetCompressorDictSize 32
  11. SetDatablockOptimize on
  12. SetDateSave on


  13. XPStyle on  #开启XP风格
  14. InstallColors /windows  #颜色跟随系统
  15. ReserveFile "${NSISDIR}\Plugins\LangDLL.dll"

  16. Name "${PRODUCT_NAME}"
  17. OutFile "KKCap_Setup.exe"  #输出安装包的文件名
  18. LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
  19. LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf"
  20. InstallDir "$PROGRAMFILES\KKCap"  ;默认安装路径
  21. Icon "kkcap\kkcap.ico"  #安装包图标
  22. ShowInstDetails show  #显示安装详情
  23. DirText "安装程序将安装 $(^Name) 在下列文件夹。$\r$\n$\r$\n要安装在不同文件夹,单击“浏览”并选择其他文件夹。"

  24. ;选择安装语言
  25. Function .onInit
  26.   Push ""
  27.   Push ${LANG_ENGLISH}
  28.   Push "English"
  29.   Push ${LANG_SIMPCHINESE}
  30.   Push "SimpChinese"

  31.   Push A ; A 表示自动计算语言数, 为了能够正常运作,开始的空串压入堆栈(Push "")必须保留
  32.   LangDLL::LangDialog "Installer Language" "Please select the language of the installer"
  33.   Pop $LANGUAGE
  34.   StrCmp $LANGUAGE "cancel" 0 +2
  35.     Abort ; 如果点击“cancel”按钮就关闭安装程序
  36. FunctionEnd


  37. Section "MainSection" SEC01
  38.   SetOutPath "$INSTDIR"
  39.   SetOverwrite ifnewer
  40.   File /r "kkcap\*.*"
  41.   CreateShortCut "$DESKTOP\KKCap.lnk" "$INSTDIR\KKCap.exe"  #添加到桌面图标

  42. SectionEnd

  43. #创建开始菜单
  44. Section -AdditionalIcons
  45.   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  46.   CreateDirectory "$SMPROGRAMS\KKCap"
  47.   CreateShortCut "$SMPROGRAMS\KKCap\KKCap.lnk" "$INSTDIR\KKCap.exe"
  48.   CreateShortCut "$SMPROGRAMS\KKCap\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  49. SectionEnd

复制代码



请问如何判断用户选择的语言呢?

#根据不同的语言,释放不同的语言文件

  1.   ${If} ${LANG_ENGLISH} = $Language
  2.   Rename "$INSTDIR\en.ini" "$INSTDIR\KKCap.ini" #将en.ini 更名为 KKCap.ini 并删除 cn.ini
  3.   Delete "$INSTDIR\cn.ini"
  4.         ${Else}
  5.         Rename "$INSTDIR\cn.ini" "$INSTDIR\KKCap.ini" #将en.ini 更名为 KKCap.ini 并删除 cn.ini
  6.   Delete "$INSTDIR\en.ini"
  7.         ${EndIf}
  8.   CreateShortCut "$DESKTOP\KKCap.lnk" "$INSTDIR\KKCap.exe"
复制代码
这段判断所选语言的代码貌似对 经典界面的 脚本无效唉。。

选择英文的话,这些文字如何变英文呢:
  1. DirText "安装程序将安装 $(^Name) 在下列文件夹。$\r$\n$\r$\n要安装在不同文件夹,单击“浏览”并选择其他文件夹。"
复制代码





回复

使用道具 举报

该用户从未签到

1

主题

147

帖子

754

积分

积分
754

NSIS元老

发表于 7 天前 | 显示全部楼层
目测编译的时候会提示 ${LANG_ENGLISH} 和 ${LANG_SIMPCHINESE} 没定义吧?也不知道无视一堆警告编译出来的包能用吗?所有的逻辑都正确执行吗?$LANGUAGE 的值打看了没有,和 ${LANG_ENGLISH} 比较这个逻辑有没有执行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|联系我们|NSIS中文论坛    

GMT+8, 2019-3-21 17:49 , Processed in 0.023328 second(s), 14 queries , MemCache On.

Powered by Discuz!X3.3

Copyright © 2015-2018 NSIS中文论坛

快速回复 返回顶部 返回列表