File: LangFileSpecific.nsh

package info (click to toggle)
warzone2100 4.6.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 660,320 kB
  • sloc: cpp: 676,209; ansic: 391,201; javascript: 78,238; python: 16,632; php: 4,294; sh: 4,094; makefile: 2,629; lisp: 1,492; cs: 489; xml: 404; perl: 224; ruby: 156; java: 89
file content (133 lines) | stat: -rw-r--r-- 3,697 bytes parent folder | download | duplicates (3)
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