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 为语言版本值;

 

posted on 2010-03-22 15:24  赤色彗星  阅读(4741)  评论(0编辑  收藏  举报