Statistiques
| Révision :

root / tmp / org.txm.setups / nsis / Include / LangFile.nsh @ 3144

Historique | Voir | Annoter | Télécharger (5,37 ko)

1
/*
2

    
3
LangFile.nsh
4

    
5
Header file to create language files that can be
6
included with a single command.
7

    
8
Copyright 2008-2020 Joost Verburg, Anders Kjersem
9

    
10
* Either LANGFILE_INCLUDE or LANGFILE_INCLUDE_WITHDEFAULT
11
  can be called from the script to include a language file.
12

    
13
  - LANGFILE_INCLUDE takes the language file name as parameter.
14
  - LANGFILE_INCLUDE_WITHDEFAULT takes as additional second
15
    parameter, the default language file to load missing strings from.
16

    
17
* Language strings in the language file have the format:
18
  ${LangFileString} LANGSTRING_NAME "Text"
19

    
20
* There are two types of language header files:
21

    
22
  - NSIS multi-lang support; these must start with the LANGFILE macro and 
23
    provide strings for features like MUI and MultiUser. If you are adding 
24
    support for a new language to NSIS you should make a copy of English.nsh 
25
    and translate this .nsh along with the .nlf.
26
  - Custom installer strings; these must start with the LANGFILE_EXT macro and 
27
    contain translated versions of 
28
    custom strings used in a particular installer.
29
    This is useful if you want to put the translations for each language in 
30
    their own separate file.
31

    
32
* Example:
33

    
34
  ; Setup.nsi
35
  !include "MUI.nsh"
36
  !insertmacro MUI_PAGE_INSTFILES
37
  !insertmacro MUI_LANGUAGE "Danish"
38
  !insertmacro LANGFILE_INCLUDE "DanishExtra.nsh"
39
  !insertmacro MUI_LANGUAGE "Swedish"
40
  !insertmacro LANGFILE_INCLUDE "SwedishExtra.nsh"
41
  Section
42
  MessageBox MB_OK "$(myCustomString)"
43
  SectionEnd
44

    
45
  ; SwedishExtra.nsh
46
  !insertmacro LANGFILE_EXT Swedish
47
  ${LangFileString} myCustomString "Bork bork"
48

    
49
*/
50

    
51
!ifndef LANGFILE_INCLUDED
52
!define LANGFILE_INCLUDED
53

    
54
!macro LANGFILE_INCLUDE FILENAME
55

    
56
  ;Called from script: include a language file
57

    
58
  !ifdef LangFileString
59
    !undef LangFileString
60
  !endif
61

    
62
  !define LangFileString "!insertmacro LANGFILE_SETSTRING"
63

    
64
  !define LANGFILE_SETNAMES
65
  !include "${FILENAME}"
66
  !undef LANGFILE_SETNAMES
67

    
68
  ;Create language strings
69
  !define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING"
70
  !include "${FILENAME}"
71

    
72
!macroend
73

    
74
!macro LANGFILE_INCLUDE_WITHDEFAULT FILENAME FILENAME_DEFAULT
75

    
76
  ;Called from script: include a language file
77
  ;Obtains missing strings from a default file
78

    
79
  !ifdef LangFileString
80
    !undef LangFileString
81
  !endif
82

    
83
  !define LangFileString "!insertmacro LANGFILE_SETSTRING"
84

    
85
  !define LANGFILE_SETNAMES
86
  !include "${FILENAME}"
87
  !undef LANGFILE_SETNAMES
88

    
89
  ;Include default language for missing strings
90
  !define LANGFILE_PRIV_INCLUDEISFALLBACK "${FILENAME_DEFAULT}"
91
  !include "${FILENAME_DEFAULT}"
92
  !undef LANGFILE_PRIV_INCLUDEISFALLBACK
93

    
94
  ;Create language strings
95
  !define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING"
96
  !include "${FILENAME_DEFAULT}"
97

    
98
!macroend
99

    
100
!macro LANGFILE NLFID ENGNAME NATIVENAME NATIVEASCIINAME
101

    
102
  ;Start of standard NSIS language file
103

    
104
  ; NLFID: Must match the name of the .nlf file
105
  ; ENGNAME: English name of language, "=" if it is the same as NLFID
106
  ; NATIVENAME: Native name of language. (In Unicode)
107
  ; NATIVEASCIINAME: Native name of language using only ASCII, "=" if it is the same as NATIVENAME
108

    
109
  ; Example: LANGFILE "Swedish" = "Svenska" = (This is the same as LANGFILE "Swedish" "Swedish" "Svenska" "Svenska")
110
  ; For more examples, see French.nsh, Greek.nsh and PortugueseBR.nsh
111

    
112
  !ifdef LANGFILE_SETNAMES
113

    
114
    !ifdef LANGFILE_IDNAME
115
      !undef LANGFILE_IDNAME
116
    !endif
117

    
118
    !define LANGFILE_IDNAME "${NLFID}"
119

    
120
    ; ModernUI or the .nsi can change LANGFILE_LANGDLL_FMT if desired
121
    !ifndef LANGFILE_LANGDLL_FMT
122
      !ifndef NSIS_UNICODE
123
        !define LANGFILE_LANGDLL_FMT "%ENGNAME% / %NATIVEASCIINAME%"
124
      !endif
125
      !define /ifndef LANGFILE_LANGDLL_FMT "%NATIVENAME%"
126
    !endif
127

    
128
    !ifndef "LANGFILE_${NLFID}_NAME"
129
      !if "${ENGNAME}" == "="
130
        !define /redef ENGNAME "${NLFID}"
131
      !endif
132
      !if "${NATIVEASCIINAME}" == "="
133
        !define /redef NATIVEASCIINAME "${NATIVENAME}"
134
      !endif
135

    
136
      !define "LANGFILE_${NLFID}_ENGLISHNAME" "${ENGNAME}"
137
      !ifdef NSIS_UNICODE
138
        !define "LANGFILE_${NLFID}_NAME" "${NATIVENAME}"
139
      !else
140
        !define "LANGFILE_${NLFID}_NAME" "${NATIVEASCIINAME}"
141
      !endif
142

    
143
      !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_LANGDLL_FMT}" %NATIVEASCIINAME% "${NATIVEASCIINAME}"
144
      !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %NATIVENAME% "${NATIVENAME}"
145
      !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %ENGNAME% "${ENGNAME}"
146

    
147
    !endif
148

    
149
  !endif
150

    
151
!macroend
152

    
153
!macro LANGFILE_EXT IDNAME
154

    
155
  ;Start of installer language file
156
  
157
  !ifdef LANGFILE_SETNAMES
158

    
159
    !ifdef LANGFILE_IDNAME
160
      !undef LANGFILE_IDNAME
161
    !endif
162

    
163
    !define LANGFILE_IDNAME "${IDNAME}"
164

    
165
  !endif
166

    
167
!macroend
168

    
169
!macro LANGFILE_SETSTRING NAME VALUE
170

    
171
  ;Set define with translated string
172

    
173
  !ifndef ${NAME}
174
    !define "${NAME}" "${VALUE}"
175
    !ifdef LANGFILE_PRIV_INCLUDEISFALLBACK
176
      !warning 'LangString "${NAME}" for language ${LANGFILE_IDNAME} is missing, using fallback from "${LANGFILE_PRIV_INCLUDEISFALLBACK}"'
177
    !endif
178
  !endif
179

    
180
!macroend
181

    
182
!macro LANGFILE_LANGSTRING NAME DUMMY
183

    
184
  ;Create a language string from a define and undefine
185

    
186
  LangString "${NAME}" "${LANG_${LANGFILE_IDNAME}}" "${${NAME}}"
187
  !undef "${NAME}"
188

    
189
!macroend
190

    
191
!endif