1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
/*
DERIVED FROM NSIS LangFile.nsh
License: (see NSIS_COPYING.txt)
***************
Modifications:
- Offers LANGFILE_SPECIFIC_INCLUDE and LANGFILE_SPECIFIC_INCLUDE_WITHDEFAULT
which take an EXPLICIT_LANG_IDNAME parameter.
With these, custom installer string .nsh files no longer need the:
!insertmacro LANGFILE_EXT <Language>
line at the top.
***************
Original LangFile.nsh comments (modified):
Header file to create language files that can be
included with a single command.
Copyright 2008-2020 Joost Verburg, Anders Kjersem
* Either LANGFILE_SPECIFIC_INCLUDE or LANGFILE_SPECIFIC_INCLUDE_WITHDEFAULT
can be called from the script to include a language file.
- LANGFILE_SPECIFIC_INCLUDE takes the language name, and the language file name as parameters.
- LANGFILE_SPECIFIC_INCLUDE_WITHDEFAULT takes as additional third
parameter, the default language file to load missing strings from.
* Language strings in the language file have the format:
${LangFileString} LANGSTRING_NAME "Text"
* Example:
; Setup.nsi
!include "MUI.nsh"
!include "LangFileSpecific.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro LANGFILE_SPECIFIC_INCLUDE "English" "EnglishExtra.nsh"
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro LANGFILE_SPECIFIC_INCLUDE "Swedish" "SwedishExtra.nsh"
Section
MessageBox MB_OK "$(myCustomString)"
SectionEnd
; SwedishExtra.nsh
${LangFileString} myCustomString "Bork bork"
*/
!ifndef LANGFILE_SPECIFIC_LANG_INCLUDED
!define LANGFILE_SPECIFIC_LANG_INCLUDED
!macro LANGFILE_SPECIFIC_INCLUDE EXPLICIT_LANG_IDNAME FILENAME
;Called from script: include a language file
!ifdef LangFileString
!undef LangFileString
!endif
!define LangFileString "!insertmacro LANGFILE_SPECIFIC_SETSTRING"
!ifdef LANGFILE_SPECIFIC_IDNAME
!undef LANGFILE_SPECIFIC_IDNAME
!endif
!define LANGFILE_SPECIFIC_IDNAME "${EXPLICIT_LANG_IDNAME}"
!define LANGFILE_SPECIFIC_SETNAMES
!include "${FILENAME}"
!undef LANGFILE_SPECIFIC_SETNAMES
;Create language strings
!define /redef LangFileString "!insertmacro LANGFILE_SPECIFIC_LANGSTRING"
!include "${FILENAME}"
!macroend
!macro LANGFILE_SPECIFIC_INCLUDE_WITHDEFAULT EXPLICIT_LANG_IDNAME FILENAME FILENAME_DEFAULT
;Called from script: include a language file
;Obtains missing strings from a default file
!ifdef LangFileString
!undef LangFileString
!endif
!define LangFileString "!insertmacro LANGFILE_SPECIFIC_SETSTRING"
!ifdef LANGFILE_SPECIFIC_IDNAME
!undef LANGFILE_SPECIFIC_IDNAME
!endif
!define LANGFILE_SPECIFIC_IDNAME "${EXPLICIT_LANG_IDNAME}"
!define LANGFILE_SPECIFIC_SETNAMES
!include "${FILENAME}"
!undef LANGFILE_SPECIFIC_SETNAMES
;Include default language for missing strings
!define LANGFILE_SPECIFIC_PRIV_INCLUDEISFALLBACK "${FILENAME_DEFAULT}"
!include "${FILENAME_DEFAULT}"
!undef LANGFILE_SPECIFIC_PRIV_INCLUDEISFALLBACK
;Create language strings
!define /redef LangFileString "!insertmacro LANGFILE_SPECIFIC_LANGSTRING"
!include "${FILENAME_DEFAULT}"
!macroend
!macro LANGFILE_SPECIFIC_SETSTRING NAME VALUE
;Set define with translated string
!ifndef ${NAME}
!define "${NAME}" "${VALUE}"
!ifdef LANGFILE_SPECIFIC_PRIV_INCLUDEISFALLBACK
!warning 'LangString "${NAME}" for language ${LANGFILE_SPECIFIC_IDNAME} is missing, using fallback from "${LANGFILE_SPECIFIC_PRIV_INCLUDEISFALLBACK}"'
!endif
!endif
!macroend
!macro LANGFILE_SPECIFIC_LANGSTRING NAME DUMMY
;Create a language string from a define and undefine
LangString "${NAME}" "${LANG_${LANGFILE_SPECIFIC_IDNAME}}" "${${NAME}}"
!undef "${NAME}"
!macroend
!endif
|