Odd LangString behavior
I'm reading in a language id from regsitry which doesn't match the ${LANGUAGE_*} values so I'm just switching the LANGID and popping the appropriate value into $LANGUAGE. The problem is that while the value of $LANGUAGE is correct it always prints the english error message. The license agreement is in the correct language; just never any of the error messages. All errors are thrown only in .onInit. Any ideas?
!define LANGID_ENGLISH 0
!define LANGIS_FRENCH 1
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "French"
LicenseLangString myLicenseData ${LANG_ENGLISH} "local\license.txt.EN"
LicenseLangString myLicenseData ${LANG_FRENCH} "local\license.txt.FR"
LicenseData $(myLicenseData)
LangString emsg_InstallerAlreadyRunning ${LANG_ENGLISH} "English - Installer already running."
LangString emsg_InstallerAlreadyRunning ${LANG_FRENCH} "French - Installer already running."
Function .onInit
; Get the game language value
ReadRegDWORD $LANGID HKLM "..." "Language"
${Select} $LANGID
${Case} ${LANGID_FRENCH}
Push ${LANG_FRENCH}
Pop $LANGUAGE
${Default}
Push ${LANG_ENGLISH}
Pop $LANGUAGE
${EndSelect}
MessageBox MB_OK|MB_ICONEXCLAMATION "$LANGUAGE"
; Prevent multiple instances of installer
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "TSLRP") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "$(emsg_InstallerAlreadyRunning)"
Abort
...