LangFile.nsh 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /*
  2. LangFile.nsh
  3. Header file to create language files that can be
  4. included with a single command.
  5. Copyright 2008-2017 Joost Verburg, Anders Kjersem
  6. * Either LANGFILE_INCLUDE or LANGFILE_INCLUDE_WITHDEFAULT
  7. can be called from the script to include a language file.
  8. - LANGFILE_INCLUDE takes the language file name as parameter.
  9. - LANGFILE_INCLUDE_WITHDEFAULT takes as additional second
  10. parameter, the default language file to load missing strings from.
  11. * Language strings in the language file have the format:
  12. ${LangFileString} LANGSTRING_NAME "Text"
  13. * There are two types of language header files:
  14. - NSIS multi-lang support; these must start with the LANGFILE macro and
  15. provide strings for features like MUI and MultiUser. If you are adding
  16. support for a new language to NSIS you should make a copy of English.nsh
  17. and translate this .nsh along with the .nlf.
  18. - Custom installer strings; these must start with the LANGFILE_EXT macro and
  19. contain translated versions of
  20. custom strings used in a particular installer.
  21. This is useful if you want to put the translations for each language in
  22. their own separate file.
  23. * Example:
  24. ; Setup.nsi
  25. !include "MUI.nsh"
  26. !insertmacro MUI_PAGE_INSTFILES
  27. !insertmacro MUI_LANGUAGE "Danish"
  28. !insertmacro LANGFILE_INCLUDE "DanishExtra.nsh"
  29. !insertmacro MUI_LANGUAGE "Swedish"
  30. !insertmacro LANGFILE_INCLUDE "SwedishExtra.nsh"
  31. Section
  32. MessageBox MB_OK "$(myCustomString)"
  33. SectionEnd
  34. ; SwedishExtra.nsh
  35. !insertmacro LANGFILE_EXT Swedish
  36. ${LangFileString} myCustomString "Bork bork"
  37. */
  38. !ifndef LANGFILE_INCLUDED
  39. !define LANGFILE_INCLUDED
  40. !macro LANGFILE_INCLUDE FILENAME
  41. ;Called from script: include a language file
  42. !ifdef LangFileString
  43. !undef LangFileString
  44. !endif
  45. !define LangFileString "!insertmacro LANGFILE_SETSTRING"
  46. !define LANGFILE_SETNAMES
  47. !include "${FILENAME}"
  48. !undef LANGFILE_SETNAMES
  49. ;Create language strings
  50. !define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING"
  51. !include "${FILENAME}"
  52. !macroend
  53. !macro LANGFILE_INCLUDE_WITHDEFAULT FILENAME FILENAME_DEFAULT
  54. ;Called from script: include a language file
  55. ;Obtains missing strings from a default file
  56. !ifdef LangFileString
  57. !undef LangFileString
  58. !endif
  59. !define LangFileString "!insertmacro LANGFILE_SETSTRING"
  60. !define LANGFILE_SETNAMES
  61. !include "${FILENAME}"
  62. !undef LANGFILE_SETNAMES
  63. ;Include default language for missing strings
  64. !define LANGFILE_PRIV_INCLUDEISFALLBACK "${FILENAME_DEFAULT}"
  65. !include "${FILENAME_DEFAULT}"
  66. !undef LANGFILE_PRIV_INCLUDEISFALLBACK
  67. ;Create language strings
  68. !define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING"
  69. !include "${FILENAME_DEFAULT}"
  70. !macroend
  71. !macro LANGFILE NLFID ENGNAME NATIVENAME NATIVEASCIINAME
  72. ;Start of standard NSIS language file
  73. ; NLFID: Must match the name of the .nlf file
  74. ; ENGNAME: English name of language, "=" if it is the same as NLFID
  75. ; NATIVENAME: Native name of language. (In Unicode)
  76. ; NATIVEASCIINAME: Native name of language using only ASCII, "=" if it is the same as NATIVENAME
  77. ; Example: LANGFILE "Swedish" = "Svenska" =
  78. ; For more examples, see French.nsh, Greek.nsh and PortugueseBR.nsh
  79. !ifdef LANGFILE_SETNAMES
  80. !ifdef LANGFILE_IDNAME
  81. !undef LANGFILE_IDNAME
  82. !endif
  83. !define LANGFILE_IDNAME "${NLFID}"
  84. ; ModernUI or the .nsi can change LANGFILE_LANGDLL_FMT if desired
  85. !ifndef LANGFILE_LANGDLL_FMT
  86. !ifndef NSIS_UNICODE
  87. !define LANGFILE_LANGDLL_FMT "%ENGNAME% / %NATIVEASCIINAME%"
  88. !endif
  89. !define /ifndef LANGFILE_LANGDLL_FMT "%NATIVENAME%"
  90. !endif
  91. !ifndef "LANGFILE_${NLFID}_NAME"
  92. !if "${ENGNAME}" == "="
  93. !define /redef ENGNAME "${NLFID}"
  94. !endif
  95. !if "${NATIVEASCIINAME}" == "="
  96. !define /redef NATIVEASCIINAME "${NATIVENAME}"
  97. !endif
  98. !define "LANGFILE_${NLFID}_ENGLISHNAME" "${ENGNAME}"
  99. !ifdef NSIS_UNICODE
  100. !define "LANGFILE_${NLFID}_NAME" "${NATIVENAME}"
  101. !else
  102. !define "LANGFILE_${NLFID}_NAME" "${NATIVEASCIINAME}"
  103. !endif
  104. !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_LANGDLL_FMT}" %NATIVEASCIINAME% "${NATIVEASCIINAME}"
  105. !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %NATIVENAME% "${NATIVENAME}"
  106. !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %ENGNAME% "${ENGNAME}"
  107. !endif
  108. !endif
  109. !macroend
  110. !macro LANGFILE_EXT IDNAME
  111. ;Start of installer language file
  112. !ifdef LANGFILE_SETNAMES
  113. !ifdef LANGFILE_IDNAME
  114. !undef LANGFILE_IDNAME
  115. !endif
  116. !define LANGFILE_IDNAME "${IDNAME}"
  117. !endif
  118. !macroend
  119. !macro LANGFILE_SETSTRING NAME VALUE
  120. ;Set define with translated string
  121. !ifndef ${NAME}
  122. !define "${NAME}" "${VALUE}"
  123. !ifdef LANGFILE_PRIV_INCLUDEISFALLBACK
  124. !warning 'LangString "${NAME}" for language ${LANGFILE_IDNAME} is missing, using fallback from "${LANGFILE_PRIV_INCLUDEISFALLBACK}"'
  125. !endif
  126. !endif
  127. !macroend
  128. !macro LANGFILE_LANGSTRING NAME DUMMY
  129. ;Create a language string from a define and undefine
  130. LangString "${NAME}" "${LANG_${LANGFILE_IDNAME}}" "${${NAME}}"
  131. !undef "${NAME}"
  132. !macroend
  133. !endif