NSIS 中的 GetLocaleInfo
GetLocaleInfo in NSIS
我正在尝试在 NSIS (using this code) 中获取语言环境信息。
由于我的系统是法语的,我希望得到一个像“fr-FR”这样的字符串,但我得到的是中文符号:/
知道我做错了什么吗?
!define LOCALE_ILANGUAGE '0x1' ;System Language Resource ID
!define LOCALE_SLANGUAGE '0x2' ;System Language & Country [Cool]
!define LOCALE_SABBREVLANGNAME '0x3' ;System abbreviated language
!define LOCALE_SNATIVELANGNAME '0x4' ;System native language name [Cool]
!define LOCALE_ICOUNTRY '0x5' ;System country code
!define LOCALE_SCOUNTRY '0x6' ;System Country
!define LOCALE_SABBREVCTRYNAME '0x7' ;System abbreviated country name
!define LOCALE_SNATIVECTRYNAME '0x8' ;System native country name [Cool]
!define LOCALE_IDEFAULTLANGUAGE '0x9' ;System default language ID
!define LOCALE_IDEFAULTCOUNTRY '0xA' ;System default country code
!define LOCALE_IDEFAULTCODEPAGE '0xB' ;System default oem code page
Function getLocale
System::Call 'kernel32::GetSystemDefaultLangID() i .r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SNATIVELANGNAME}, t .r1, i ${NSIS_MAX_STRLEN}) i r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SNATIVECTRYNAME}, t .r2, i ${NSIS_MAX_STRLEN}) i r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SLANGUAGE}, t .r3, i ${NSIS_MAX_STRLEN}) i r0'
MessageBox MB_OK|MB_ICONINFORMATION "Your System LANG Code is: [=10=]. $\r$\nYour system language is: . $\r$\nYour system language is: . $\r$\nSystem Locale INFO: ."
FunctionEnd
这些常量出现相同类型的错误:
!define LOCALE_SISO639LANGNAME 0x00000059 ; ISO abbreviated language name, eg "en"
!define LOCALE_SISO3166CTRYNAME 0x0000005A ; ISO abbreviated country/region name, eg "US"
将 GetLocaleInfoA
更改为 GetLocaleInfo
。当使用 t 类型参数时,NSIS v3 将自动检测 A/W 函数。
解释为 Unicode 时的 Ansi 字符串 tends to look like Chinese。
我正在尝试在 NSIS (using this code) 中获取语言环境信息。 由于我的系统是法语的,我希望得到一个像“fr-FR”这样的字符串,但我得到的是中文符号:/
知道我做错了什么吗?
!define LOCALE_ILANGUAGE '0x1' ;System Language Resource ID
!define LOCALE_SLANGUAGE '0x2' ;System Language & Country [Cool]
!define LOCALE_SABBREVLANGNAME '0x3' ;System abbreviated language
!define LOCALE_SNATIVELANGNAME '0x4' ;System native language name [Cool]
!define LOCALE_ICOUNTRY '0x5' ;System country code
!define LOCALE_SCOUNTRY '0x6' ;System Country
!define LOCALE_SABBREVCTRYNAME '0x7' ;System abbreviated country name
!define LOCALE_SNATIVECTRYNAME '0x8' ;System native country name [Cool]
!define LOCALE_IDEFAULTLANGUAGE '0x9' ;System default language ID
!define LOCALE_IDEFAULTCOUNTRY '0xA' ;System default country code
!define LOCALE_IDEFAULTCODEPAGE '0xB' ;System default oem code page
Function getLocale
System::Call 'kernel32::GetSystemDefaultLangID() i .r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SNATIVELANGNAME}, t .r1, i ${NSIS_MAX_STRLEN}) i r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SNATIVECTRYNAME}, t .r2, i ${NSIS_MAX_STRLEN}) i r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SLANGUAGE}, t .r3, i ${NSIS_MAX_STRLEN}) i r0'
MessageBox MB_OK|MB_ICONINFORMATION "Your System LANG Code is: [=10=]. $\r$\nYour system language is: . $\r$\nYour system language is: . $\r$\nSystem Locale INFO: ."
FunctionEnd
这些常量出现相同类型的错误:
!define LOCALE_SISO639LANGNAME 0x00000059 ; ISO abbreviated language name, eg "en"
!define LOCALE_SISO3166CTRYNAME 0x0000005A ; ISO abbreviated country/region name, eg "US"
将 GetLocaleInfoA
更改为 GetLocaleInfo
。当使用 t 类型参数时,NSIS v3 将自动检测 A/W 函数。
解释为 Unicode 时的 Ansi 字符串 tends to look like Chinese。