123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- /*
- LangFile.nsh
- Header file to create language files that can be
- included with a single command.
- Copyright 2008-2017 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" =
- ; 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
|