192 lines
5.2 KiB
Plaintext
192 lines
5.2 KiB
Plaintext
/*
|
|
|
|
LangFile.nsh
|
|
|
|
Header file to create language files that can be
|
|
included with a single command.
|
|
|
|
Copyright 2008-2023 Joost Verburg, Anders Kjersem
|
|
|
|
* Either LANGFILE_INCLUDE or LANGFILE_INCLUDE_WITHDEFAULT
|
|
can be called from the script to include a language file.
|
|
|
|
- LANGFILE_INCLUDE takes the language file name as parameter.
|
|
- LANGFILE_INCLUDE_WITHDEFAULT takes as additional second
|
|
parameter, the default language file to load missing strings from.
|
|
|
|
* Language strings in the language file have the format:
|
|
${LangFileString} LANGSTRING_NAME "Text"
|
|
|
|
* There are two types of language header files:
|
|
|
|
- NSIS multi-lang support; these must start with the LANGFILE macro and
|
|
provide strings for features like MUI and MultiUser. If you are adding
|
|
support for a new language to NSIS you should make a copy of English.nsh
|
|
and translate this .nsh along with the .nlf.
|
|
- Custom installer strings; these must start with the LANGFILE_EXT macro and
|
|
contain translated versions of
|
|
custom strings used in a particular installer.
|
|
This is useful if you want to put the translations for each language in
|
|
their own separate file.
|
|
|
|
* Example:
|
|
|
|
; Setup.nsi
|
|
!include "MUI.nsh"
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
!insertmacro MUI_LANGUAGE "Danish"
|
|
!insertmacro LANGFILE_INCLUDE "DanishExtra.nsh"
|
|
!insertmacro MUI_LANGUAGE "Swedish"
|
|
!insertmacro LANGFILE_INCLUDE "SwedishExtra.nsh"
|
|
Section
|
|
MessageBox MB_OK "$(myCustomString)"
|
|
SectionEnd
|
|
|
|
; SwedishExtra.nsh
|
|
!insertmacro LANGFILE_EXT Swedish
|
|
${LangFileString} myCustomString "Bork bork"
|
|
|
|
*/
|
|
|
|
!ifndef LANGFILE_INCLUDED
|
|
!define LANGFILE_INCLUDED
|
|
|
|
!macro LANGFILE_INCLUDE FILENAME
|
|
|
|
;Called from script: include a language file
|
|
|
|
!ifdef LangFileString
|
|
!undef LangFileString
|
|
!endif
|
|
|
|
!define LangFileString "!insertmacro LANGFILE_SETSTRING"
|
|
|
|
!define LANGFILE_SETNAMES
|
|
!include "${FILENAME}"
|
|
!undef LANGFILE_SETNAMES
|
|
|
|
;Create language strings
|
|
!define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING"
|
|
!include "${FILENAME}"
|
|
|
|
!macroend
|
|
|
|
!macro LANGFILE_INCLUDE_WITHDEFAULT 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_SETSTRING"
|
|
|
|
!define LANGFILE_SETNAMES
|
|
!include "${FILENAME}"
|
|
!undef LANGFILE_SETNAMES
|
|
|
|
;Include default language for missing strings
|
|
!define LANGFILE_PRIV_INCLUDEISFALLBACK "${FILENAME_DEFAULT}"
|
|
!include "${FILENAME_DEFAULT}"
|
|
!undef LANGFILE_PRIV_INCLUDEISFALLBACK
|
|
|
|
;Create language strings
|
|
!define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING"
|
|
!include "${FILENAME_DEFAULT}"
|
|
|
|
!macroend
|
|
|
|
!macro LANGFILE NLFID ENGNAME NATIVENAME NATIVEASCIINAME
|
|
|
|
;Start of standard NSIS language file
|
|
|
|
; NLFID: Must match the name of the .nlf file
|
|
; ENGNAME: English name of language, "=" if it is the same as NLFID
|
|
; NATIVENAME: Native name of language. (In Unicode)
|
|
; NATIVEASCIINAME: Native name of language using only ASCII, "=" if it is the same as NATIVENAME
|
|
|
|
; Example: LANGFILE "Swedish" = "Svenska" = (This is the same as LANGFILE "Swedish" "Swedish" "Svenska" "Svenska")
|
|
; For more examples, see French.nsh, Greek.nsh and PortugueseBR.nsh
|
|
|
|
!ifdef LANGFILE_SETNAMES
|
|
|
|
!ifdef LANGFILE_IDNAME
|
|
!undef LANGFILE_IDNAME
|
|
!endif
|
|
|
|
!define LANGFILE_IDNAME "${NLFID}"
|
|
|
|
; ModernUI or the .nsi can change LANGFILE_LANGDLL_FMT if desired
|
|
!ifndef LANGFILE_LANGDLL_FMT
|
|
!ifndef NSIS_UNICODE
|
|
!define LANGFILE_LANGDLL_FMT "%ENGNAME% / %NATIVEASCIINAME%"
|
|
!endif
|
|
!define /ifndef LANGFILE_LANGDLL_FMT "%NATIVENAME%"
|
|
!endif
|
|
|
|
!ifndef "LANGFILE_${NLFID}_NAME"
|
|
!if "${ENGNAME}" == "="
|
|
!define /redef ENGNAME "${NLFID}"
|
|
!endif
|
|
!if "${NATIVEASCIINAME}" == "="
|
|
!define /redef NATIVEASCIINAME "${NATIVENAME}"
|
|
!endif
|
|
|
|
!define "LANGFILE_${NLFID}_ENGLISHNAME" "${ENGNAME}"
|
|
!ifdef NSIS_UNICODE
|
|
!define "LANGFILE_${NLFID}_NAME" "${NATIVENAME}"
|
|
!else
|
|
!define "LANGFILE_${NLFID}_NAME" "${NATIVEASCIINAME}"
|
|
!endif
|
|
|
|
!searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_LANGDLL_FMT}" %NATIVEASCIINAME% "${NATIVEASCIINAME}"
|
|
!searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %NATIVENAME% "${NATIVENAME}"
|
|
!searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %ENGNAME% "${ENGNAME}"
|
|
|
|
!endif
|
|
|
|
!endif
|
|
|
|
!macroend
|
|
|
|
!macro LANGFILE_EXT IDNAME
|
|
|
|
;Start of installer language file
|
|
|
|
!ifdef LANGFILE_SETNAMES
|
|
|
|
!ifdef LANGFILE_IDNAME
|
|
!undef LANGFILE_IDNAME
|
|
!endif
|
|
|
|
!define LANGFILE_IDNAME "${IDNAME}"
|
|
|
|
!endif
|
|
|
|
!macroend
|
|
|
|
!macro LANGFILE_SETSTRING NAME VALUE
|
|
|
|
;Set define with translated string
|
|
|
|
!ifndef ${NAME}
|
|
!define "${NAME}" "${VALUE}"
|
|
!ifdef LANGFILE_PRIV_INCLUDEISFALLBACK
|
|
!warning 'LangString "${NAME}" for language ${LANGFILE_IDNAME} is missing, using fallback from "${LANGFILE_PRIV_INCLUDEISFALLBACK}"'
|
|
!endif
|
|
!endif
|
|
|
|
!macroend
|
|
|
|
!macro LANGFILE_LANGSTRING NAME DUMMY
|
|
|
|
;Create a language string from a define and undefine
|
|
|
|
LangString "${NAME}" "${LANG_${LANGFILE_IDNAME}}" "${${NAME}}"
|
|
!undef "${NAME}"
|
|
|
|
!macroend
|
|
|
|
!endif
|