Localization.nsh 4.5 KB

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