文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 320
阅读 16
收藏 0
点赞 0
评论 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.


效果图:


© 著作权归作者所有

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

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

oschina ⋅ 2015/11/27 ⋅ 26

WannaCry 勒索软件背后的开发者可能是中国人?

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

两味真火 ⋅ 2017/05/27 ⋅ 42

RDIFramework.NET V2.9版本多语言的实现

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

yonghu86 ⋅ 2015/06/07 ⋅ 0

RDIFramework.NET V2.9版本多语言的实现

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

NET快速开发框架 ⋅ 2017/11/17 ⋅ 0

Firefox在线翻译--ImTranslator

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

匿名 ⋅ 2008/09/19 ⋅ 0

axure怎么删除网页下面的空白

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

西伯利亚狼1 ⋅ 01/16 ⋅ 0

关于一维数组和二维数组占用内存的问题

我查看了书籍中的例子和百度上也搜索过,说二维数组占用内存比一维数组占用内存大的多。我测试过后两个占用的内存是一样大,请问这种情况是怎么回事?源码如下: /** * 一维数组占用内存 */...

Edmoon ⋅ 2017/12/29 ⋅ 0

jsonString 转 实体类问题,实体类属性如果有byte[] 转化问题?

String jsongString = "{ "id": 833188646547890176, "name": "123", "secret": "s0wAsGU1HtEmVf2A", }" public class User { private Long id; private byte[] secret;} jsongString = JSON......

来来来来来 ⋅ 01/26 ⋅ 0

狮子的魂/friso

关于Friso Friso 是使用 c 语言开发的一款开源的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,源码无需修改就能...

狮子的魂 ⋅ 2013/11/28 ⋅ 0

“.中国”域名终获国际批准 繁简体完全等效

历经10年艰辛,中文域名终于被国际承认。昨日,中国互联网信息中心CNNIC宣布,简、繁体中文域名国际申请已通过互联网国际域名管理机构 ICANN的批准。从即日起以“.中国”结尾的域名网址可以从...

红薯 ⋅ 2010/04/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部