From f6552263808d298e2696049887f23227274a8065 Mon Sep 17 00:00:00 2001 From: joostverburg Date: Sat, 29 Mar 2008 15:35:08 +0000 Subject: [PATCH] * New LangFile.nsh macro LANGFILE_INCLUDE_WITHDEFAULT to load language file with defaults being obtained from a default file. This replaces the LANGFILE_DEFAULT setting and makes it easier to use LangFile.nsh for multiple sets of languages file without having to care about the different LANGFILE_DEFAULT settings. * Allow LangFile.nsh to be included multiple times. git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5577 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/Modern UI 2/Localization.nsh | 15 +------ Contrib/Modern UI/System.nsh | 15 +------ Include/LangFile.nsh | 60 +++++++++++++++++++++------- 3 files changed, 48 insertions(+), 42 deletions(-) diff --git a/Contrib/Modern UI 2/Localization.nsh b/Contrib/Modern UI 2/Localization.nsh index caf35d2e..e40ff547 100644 --- a/Contrib/Modern UI 2/Localization.nsh +++ b/Contrib/Modern UI 2/Localization.nsh @@ -37,21 +37,8 @@ Localization LoadLanguageFile "${NSISDIR}\Contrib\Language files\${LANGUAGE}.nlf" - ;Set default language file for MUI and backup user setting - !ifdef LANGFILE_DEFAULT - !define MUI_LANGFILE_DEFAULT_TEMP "${LANGFILE_DEFAULT}" - !undef LANGFILE_DEFAULT - !endif - !define LANGFILE_DEFAULT "${NSISDIR}\Contrib\Language files\English.nsh" - ;Include language file - !insertmacro LANGFILE_INCLUDE "${NSISDIR}\Contrib\Language files\${LANGUAGE}.nsh" - - ;Restore user setting for default language file - !undef LANGFILE_DEFAULT - !ifdef MUI_LANGFILE_DEFAULT_TEMP - !define LANGFILE_DEFAULT "${MUI_LANGFILE_DEFAULT}" - !endif + !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "${NSISDIR}\Contrib\Language files\${LANGUAGE}.nsh" "${NSISDIR}\Contrib\Language files\English.nsh" ;Add language to list of languages for selection dialog !ifndef MUI_LANGDLL_LANGUAGES diff --git a/Contrib/Modern UI/System.nsh b/Contrib/Modern UI/System.nsh index cde25a0f..4c61f9a6 100644 --- a/Contrib/Modern UI/System.nsh +++ b/Contrib/Modern UI/System.nsh @@ -2077,21 +2077,8 @@ Var MUI_TEMP2 LoadLanguageFile "${NSISDIR}\Contrib\Language files\${LANGUAGE}.nlf" - ;Set default language file for MUI and backup user setting - !ifdef LANGFILE_DEFAULT - !define MUI_LANGFILE_DEFAULT_TEMP "${LANGFILE_DEFAULT}" - !undef LANGFILE_DEFAULT - !endif - !define LANGFILE_DEFAULT "${NSISDIR}\Contrib\Language files\English.nsh" - ;Include language file - !insertmacro LANGFILE_INCLUDE "${NSISDIR}\Contrib\Language files\${LANGUAGE}.nsh" - - ;Restore user setting for default language file - !undef LANGFILE_DEFAULT - !ifdef MUI_LANGFILE_DEFAULT_TEMP - !define LANGFILE_DEFAULT "${MUI_LANGFILE_DEFAULT}" - !endif + !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "${NSISDIR}\Contrib\Language files\${LANGUAGE}.nsh" "${NSISDIR}\Contrib\Language files\English.nsh" ;Add language to list of languages for selection dialog !ifndef MUI_LANGDLL_LANGUAGES diff --git a/Include/LangFile.nsh b/Include/LangFile.nsh index dca854a1..45b3a03b 100644 --- a/Include/LangFile.nsh +++ b/Include/LangFile.nsh @@ -2,16 +2,32 @@ LangFile.nsh -Header file to create langauge file that can be +Header file to create langauge files that can be included with a single command. -When LANGFILE_DEFAULT is set, missing strings will -automatically be loaded from a default file. - Copyright © 2008 Joost Verburg +* 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. + +* A language file start with: + !insertmacro LANGFILE_EXT "English" + using the same name as the standard NSIS language file. + +* Language strings in the language file have the format: + ${LangFileString} LANGSTRING_NAME "Text" + */ +!ifndef LANGFILE_INCLUDED +!define LANGFILE_INCLUDED + !macro LANGFILE_INCLUDE FILENAME ;Called from script: include a langauge file @@ -26,23 +42,37 @@ Copyright !include "${FILENAME}" !undef LANGFILE_SETNAMES - ;Include default language for missing strings - - !ifdef LANGFILE_DEFAULT - !include "${LANGFILE_DEFAULT}" - !endif - ;Create language strings !undef LangFileString !define LangFileString "!insertmacro LANGFILE_LANGSTRING" + !include "${FILENAME}" - !ifdef LANGFILE_DEFAULT - !include "${LANGFILE_DEFAULT}" - !else - !include "${FILENAME}" +!macroend + +!macro LANGFILE_INCLUDE_WITHDEFAULT FILENAME FILENAME_DEFAULT + + ;Called from script: include a langauge 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 + !include "${FILENAME_DEFAULT}" + + ;Create language strings + !undef LangFileString + !define LangFileString "!insertmacro LANGFILE_LANGSTRING" + !include "${FILENAME_DEFAULT}" + !macroend !macro LANGFILE IDNAME NAME @@ -99,3 +129,5 @@ Copyright !undef "${NAME}" !macroend + +!endif