System.Globalization.CultureInfo.InstalledUICulture.Name
这是获得英文的区域码,也就是zh-cn的这种,需要找区域码字典对照。
System.Globalization.CultureInfo.InstalledUICulture.NativeName
这是翻译成中文的那种。 int lcid = System.Globalization.CultureInfo.CurrentCulture.LCID;//得到语言的lcid;
下面我想介绍一下用win32函数来得到本地信息的方法(以得到版本语言为例)
在C++中代码如下:
参考网址http://www.delphibbs.com/delphibbs/dispq.asp?lid=739046
procedure TForm1.Button1Click(Sender: TObject);
var
S : array[0..255] of char;
iType : LCTYPE;
begin
iType := LOCALE_SNATIVELANGNAME;
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, iType, S, SizeOf(S));
if s='中文(简体)' then
showmessage('简体')
else
showmessage('繁体');
end;
下面介绍一下在C#中如何使用GetLocaleInfo函数
首先是LOCALE_SYSTEM_DEFAULT 的值在,net中如何实现 在C++中通过下边的代码我们知道了
#include <stdio.h>
#include <windows.h>
void main()
{
printf("=%d",LOCALE_SLANGUAGE);
printf("=%d",LOCALE_USER_DEFAULT);
printf("=%d",LOCALE_SYSTEM_DEFAULT);
printf("=%d",LOCALE_SNATIVELANGNAME);
}
LOCALE_SLANGUAGE 的值为2;SYSTEM_DEFAULT 的值为2048; LOCALE_USER_DEFAULT 的值为1024;LOCALE_SNATIVELANGNAME的值为4;
在C++中的参数 S : array[0..255] of char; 和 iType : LCTYPE;
在C#中分别定义为StringBuilder S = new StringBuilder(255); 和 int LCTYPE=4;
[DllImport("kernel32.dll")]
static extern int GetLocaleInfo(int d, int s, StringBuilder k, int dd);
StringBuilder S = new StringBuilder(255);
int LCTYPE = 4;
int d = GetLocaleInfo(2048, LCTYPE, S, 255);
Console.WriteLine("");
在返回值中StringBuilder S 为语言版本值;