文档章节

关于三语 (简体、繁体、英语) 切换的尝试

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 320
阅读 16
收藏 0

在空白窗体上添加 PopupMenu1, 并添加几个测试用的菜单项, 分别命名为: m1、m2、m3、mCn、mBig、mEn;
激活 mCn 的 OnClick 事件和窗体的 OnCreate 事件.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    m1: TMenuItem;
    m2: TMenuItem;
    m3: TMenuItem;
    mCn: TMenuItem;  //Caption: 简体中文
    mBig: TMenuItem; //Caption: 繁体中文
    mEn: TMenuItem;  //Caption: English
    procedure FormCreate(Sender: TObject);
    procedure mCnClick(Sender: TObject);
  end;

var
  Form1: TForm1;
  LanguageList: TStrings;

implementation

{$R *.dfm}

{转换简体到繁体}
function Cn2Big(CnStr: string): string;
var
  Len: Integer;
begin
  Len := Length(CnStr);
  SetLength(Result, Len);
  LCMapString(GetUserDefaultLCID, LCMAP_TRADITIONAL_CHINESE, PChar(CnStr), Len, PChar(Result), Len);
end;

{建立列表: Name 将是英文菜单, Value 将是简体菜单, 繁体是从简体转换得来}
procedure CreateLanguageList;
begin
  with LanguageList do begin
    Clear;
    Add('Default=默认');
    Add('Fit Width=适宽');
    Add('Fit Height=适高');
  end;
end;

{语言变换}
procedure ChangeLanguageList(LangId: Integer);
var
  i: Integer;
begin
  CreateLanguageList;
  with LanguageList do case LangId of
    0: Exit;
    1: for i := 0 to Count - 1 do Values[Names[i]] := Cn2Big(Values[Names[i]]);
    2: for i := 0 to Count - 1 do Values[Names[i]] := Names[i];
  end;
end;

{初始化菜单}
procedure TForm1.FormCreate(Sender: TObject);
begin
  PopupMenu := PopupMenu1;
  PopupMenu1.AutoHotkeys := maManual;
  mBig.OnClick := mCn.OnClick;
  mEn.OnClick := mCn.OnClick;
  mCn.Tag := 0;
  mBig.Tag := 1;
  mEn.Tag := 2;
  mCn.Click;
end;

procedure TForm1.mCnClick(Sender: TObject);
begin
  ChangeLanguageList(TMenuItem(Sender).Tag);
  m1.Caption := LanguageList.Values['Default'];
  m2.Caption := LanguageList.Values['Fit Width'];
  m3.Caption := LanguageList.Values['Fit Height'];
end;

initialization
  LanguageList := TStringList.Create;
finalization
  LanguageList.Free;

end.


效果图:


本文转载自:http://www.cnblogs.com/del/archive/2011/07/14/2105844.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
Git@OSC 国际化 —— 支持中文繁体

Git@OSC 是开源中国基于 Git 的代码托管平台。Git@OSC 现在已经支持繁体显示,同时也可以切换到英文或者中文简体显示,为用户提供更多的国际化特性。 上个月 Git@OSC 已经上线了国际化新特性...

oschina
2015/11/27
2.1K
26
WannaCry 勒索软件背后的开发者可能是中国人?

Flashpoint的两位研究员Jon Condra和John Costello称,从语言的角度分析,WannaCry勒索软件背后的开发者可能来自说中文的国家。 近期Wannacry勒索病毒肆虐全球,由于病毒利用了Windows系统的...

两味真火
2017/05/27
3.1K
42
RDIFramework.NET V2.9版本多语言的实现

RDIFramework.NET V2.9版本多语言的实现   现在是国际化时代,软件也不能落后。一个公司里很可能会有老外,也可能有台湾的朋友,他们用软件的习惯都不一样,若同样一个软件同时能适应多种语...

yonghu86
06/26
0
0
Firefox在线翻译--ImTranslator

ImTranslator – 在线翻译阿拉伯语、保加利亚语、中文(简体) 中文(繁体)、克罗地亚语、捷克语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希腊语、印地语、意大利语、日语、韩国语、挪威...

匿名
2008/09/19
3.2K
0
axure怎么删除网页下面的空白

axure怎么删除网页下面的空白 G M T 检测语言世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利...

西伯利亚狼1
01/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

smart-doc特殊功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
0
0
JavaEE——Junit

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Junit Junit又名单元测试,Junit是用来测试Jav...

凯哥学堂
昨天
0
0
读《美丽新世界》

一、背景 十一国庆节从重庆回深圳的时候,做得绿皮车,路上看了两本书:李笑来的《韭菜的自我修养》和禁书《美丽新世界》。 上篇文章已经分享了 读《韭菜的自我修养》,这篇文章来记录一下《...

tiankonguse
昨天
0
0
archlinux下基于Jenkins,docker实现自动化部署(持续交互)

本文永久更新地址:https://my.oschina.net/bysu/blog/2250954 【若要到岸,请摇船:开源中国 不最醉不龟归】 -----------------------------------第一部分Jenkins的安装与使用-----------...

不最醉不龟归
昨天
0
0
Spark Parquet file split

在实际使用 spark + parquet 的时候, 遇到了两个不解的地方: 我们只有一个 parquet 文件(小于 hdfs block size), 但是 spark 在某个 stage 生成了4个 tasks 来处理. 4个 tasks 中只有一个 ta...

Aaaaaaaron
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部