Localization.nsh 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. /*
  2. NSIS Modern User Interface
  3. Localization
  4. */
  5. ;--------------------------------
  6. ;Variables
  7. !macro MUI_LANGDLL_VARIABLES
  8. !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME
  9. !ifndef MUI_LANGDLL_REGISTRY_VARIABLES
  10. !define MUI_LANGDLL_REGISTRY_VARIABLES
  11. ;/GLOBAL because the macros are included in a function
  12. Var /GLOBAL mui.LangDLL.RegistryLanguage
  13. !endif
  14. !endif
  15. !macroend
  16. ;--------------------------------
  17. ;Include langauge files
  18. !macro MUI_LANGUAGEEX LangDir NLFID
  19. !verbose push ${MUI_VERBOSE}
  20. !ifndef MUI_PAGE_UNINSTALLER_PREFIX
  21. !warning "MUI_LANGUAGE[EX] should be inserted after the MUI_[UN]PAGE_* macros"
  22. !endif
  23. !insertmacro MUI_INSERT
  24. ;Include a language
  25. LoadLanguageFile "${LangDir}\${NLFID}.nlf"
  26. ;Include MUI language file
  27. !insertmacro LANGFILE_INCLUDE_WITHDEFAULT \
  28. "${LangDir}\${NLFID}.nsh" "${NSISDIR}\Contrib\Language files\English.nsh"
  29. ;Add language to list of languages for selection dialog
  30. !define /ifndef MUI_LANGDLL_LANGUAGES ""
  31. !define /redef MUI_LANGDLL_LANGUAGES \
  32. `"${LANGFILE_${NLFID}_LANGDLL}" "${LANG_${NLFID}}" ${MUI_LANGDLL_LANGUAGES}`
  33. !define /ifndef MUI_LANGDLL_LANGUAGES_CP ""
  34. !define /redef MUI_LANGDLL_LANGUAGES_CP \
  35. `"${LANGFILE_${NLFID}_LANGDLL}" "${LANG_${NLFID}}" "${LANG_${NLFID}_CP}" ${MUI_LANGDLL_LANGUAGES_CP}`
  36. !verbose pop
  37. !macroend
  38. !macro MUI_LANGUAGE NLFID
  39. !verbose push ${MUI_VERBOSE}
  40. !insertmacro MUI_LANGUAGEEX "${NSISDIR}\Contrib\Language files" "${NLFID}"
  41. !verbose pop
  42. !macroend
  43. ;--------------------------------
  44. ;Language selection
  45. !macro MUI_LANGDLL_DISPLAY
  46. !verbose push
  47. !verbose ${MUI_VERBOSE}
  48. !ifndef MUI_LANGDLL_LANGUAGES
  49. !warning "MUI_LANGDLL_DISPLAY should only be used after inserting the MUI_LANGUAGE macro(s)"
  50. !endif
  51. !insertmacro MUI_LANGDLL_VARIABLES
  52. !insertmacro MUI_DEFAULT MUI_LANGDLL_WINDOWTITLE "Installer Language"
  53. !insertmacro MUI_DEFAULT MUI_LANGDLL_INFO "Please select a language."
  54. !ifdef MUI_LANGDLL_REGISTRY_VARIABLES
  55. ReadRegStr $mui.LangDLL.RegistryLanguage "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}"
  56. ${if} $mui.LangDLL.RegistryLanguage != ""
  57. ;Set default langauge to registry language
  58. StrCpy $LANGUAGE $mui.LangDLL.RegistryLanguage
  59. ${endif}
  60. !endif
  61. !ifdef NSIS_CONFIG_SILENT_SUPPORT
  62. ${unless} ${Silent}
  63. !endif
  64. !ifndef MUI_LANGDLL_ALWAYSSHOW
  65. !ifdef MUI_LANGDLL_REGISTRY_VARIABLES
  66. ${if} $mui.LangDLL.RegistryLanguage == ""
  67. !endif
  68. !endif
  69. ;Show langauge selection dialog
  70. !ifdef MUI_LANGDLL_ALLLANGUAGES
  71. LangDLL::LangDialog "${MUI_LANGDLL_WINDOWTITLE}" "${MUI_LANGDLL_INFO}" A ${MUI_LANGDLL_LANGUAGES} ""
  72. !else
  73. LangDLL::LangDialog "${MUI_LANGDLL_WINDOWTITLE}" "${MUI_LANGDLL_INFO}" AC ${MUI_LANGDLL_LANGUAGES_CP} ""
  74. !endif
  75. Pop $LANGUAGE
  76. ${if} $LANGUAGE == "cancel"
  77. Abort
  78. ${endif}
  79. !ifndef MUI_LANGDLL_ALWAYSSHOW
  80. !ifdef MUI_LANGDLL_REGISTRY_VARIABLES
  81. ${endif}
  82. !endif
  83. !endif
  84. !ifdef NSIS_CONFIG_SILENT_SUPPORT
  85. ${endif}
  86. !endif
  87. !verbose pop
  88. !macroend
  89. !macro MUI_LANGDLL_SAVELANGUAGE
  90. ;Save language in registry
  91. !ifndef MUI_PAGE_UNINSTALLER
  92. IfAbort mui.langdllsavelanguage_abort
  93. !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME
  94. WriteRegStr "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}" $LANGUAGE
  95. !endif
  96. mui.langdllsavelanguage_abort:
  97. !endif
  98. !macroend
  99. !macro MUI_UNGETLANGUAGE
  100. ;Get language from registry in uninstaller
  101. !verbose push
  102. !verbose ${MUI_VERBOSE}
  103. !insertmacro MUI_LANGDLL_VARIABLES
  104. !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME
  105. ReadRegStr $mui.LangDLL.RegistryLanguage "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}"
  106. ${if} $mui.LangDLL.RegistryLanguage = ""
  107. !endif
  108. !insertmacro MUI_LANGDLL_DISPLAY
  109. !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME
  110. ${else}
  111. StrCpy $LANGUAGE $mui.LangDLL.RegistryLanguage
  112. ${endif}
  113. !endif
  114. !verbose pop
  115. !macroend
  116. ;--------------------------------
  117. ;Rerserve LangDLL file
  118. !macro MUI_RESERVEFILE_LANGDLL
  119. !verbose push
  120. !verbose ${MUI_VERBOSE}
  121. ReserveFile /plugin LangDLL.dll
  122. !verbose pop
  123. !macroend