Statistiques
| Révision :

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

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

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