我现在的软件是简体版的,如在香港台湾运行时应怎样自动转换为繁体版呢(200分)

  • 主题发起人 主题发起人 dylwordtop
  • 开始时间 开始时间
D

dylwordtop

Unregistered / Unconfirmed
GUEST, unregistred user!
大概开发的思路是什么呢,我想了解一下,是应该把界面改为繁体的,
还是应该调用windows操作系统呢转换呢,我想是后一种。但我一点门路都没有。
 
双语开发
Project --Languges--Add
 
你能给我讲仔细一点吗
 
还是看一下这个吧。估计能好用。
沤心沥血2个月,终于释了MultiLanguageWizard的第一个版本,现提供评估版下载。
简介:
MultiLanguageWizard v0.1
本软件可以帮助你将你的Delphi程序转换为支持多语言。
就像本程序一样,随意切换语言界面。
附有Demo,你可以一步一步,制作出你喜欢的多语言界面。
这个版本是for Delphi5/6/7的。for Kylix1/2/3的版本正在移植中,相信很快会面世了。
主页:
http://kylix.linuxaid.com.cn
下载:
http://kylix.linuxaid.com.cn/xoops/modules/mydownloads/visit.php?lid=2
请多提宝贵意见,及到各大编程论坛宣传本软件。如果能写出好的介绍本软件的文章,我将发免费送出正式版给该用户。
顶者有分,提意见者重奖分,写文章介绍本软件的免费送出正式版给该用户。
 
我不需要软件,我只想知道他的原理。
 
* 自己在程序中按需转换,即在需要时把简体字GB码转换为繁体字BIG5码,
但需要有完整的对应转换码表才行,而现在我所拥有的此类代码中都只
包含了GB2132标准的8千多个汉字,而BIG5码有一万多个汉字。此外还需
要机器上有安装BIG5码的繁体字字体(例如安装IE的繁体字支持);
 
MultiLanguageWizard可以帮你解决问题,如果你要源码,与我联系, 价钱好商量
roc@linuxaid.com.cn
for Kylix的版本基本已完成了,正在测试中。
 
如果要写英文版呢?
 
http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=28843
推荐一组实现多语言的Delphi元件,所有文字,讯息都可以实现,简单,扩展性强,
第三方元件也没问题;附专业的资料字典编辑工具。
 
从Delphi3开始就支持国际化资源模块.
一、建立相应应用程序、DLL或包的国际化资源模块,具体方法如下:
1、在Delphi中选择File|New菜单,建立新的DLL;
2、仅仅包含已经本地化的资源,比如:MyApp.frm和MyApp.res
{$R MyApp.res}
{$R MyApp.dfm}
3、该DLL文件取名应该与应用程序、DLL或包的名称相同,扩展名取名为当地代码。
当应用程序、DLL或包启动时,会自动寻找[当前目录下]与本地代码相符合的国际化资源模块,如果找不到,才使用应用程序内部的字符串资源。
字符串资源的国际化:
将要国际化的字符串集中到一个单元,使用ResourceString对字符串进行说明:
Unit Msgs;
interface
resourcestring
sInPasswd='Incorrect password';
sTextFileExt='.txt';
sUnableOpen='Unable to open file';
sUnableCreate='Unable to Create file';
sLZRWStreamReadErr = 'Error reading from input stream !';
sLZRWSTREAMWriteErr = 'Error writing to output stream !';
sLZHSizeErr ='Original and compressed sizesdo
not match !';
implementation
end.

然后使用命令行参数:-gd或在项目参数设置中的linker页面上选取request Detailed Map File,它将在编译时产生包含使用ResourceString宣称的所有字符串的资源文件:.DRC。每当你重新编译一次,你就需要重新“翻译”一次文件(.DRC)。
当你翻译完该文件(.DRC)后,使用BRCC32将.DRC文件编译为资源文件(.RES)。最后你就可以将它联接到国际化资源模块:
{$R MyApp.res}
Must like this:
library MyExample;
{$R MyStrings.res} {my strings resource}
{$R MyExample.res} {Delphi Auto gernerate! if have not this,Delphi will overwrite MyStrings.res,this can work now.}
{$R Dlg1.dfm}
{$R Dlg2.dfm}
{$R SplashForm.dfm}
{$R AboutDlg.dfm}
{$R unit1.dfm}
uses
Windows;
{$E chs}
begin
end.

二、动态切换国际化资源模块
你可以在运行时,动态切换语言,首先你应该使用ReInit单元,然后调用LoadNewResourceModule装入新的语言模块,最后重新初始化窗体ReinitializeForms。
例如,以下的代码将语言切换到法语:
const
FRENCH = (SUBLANG_FRENCH shl 10) or LANG_FRENCH;
if LoadNewResourceModule(FRENCH) <> 0 then
ReinitializeForms;
注意:任何改变后的属性在新语言装入后将失去,恢复为默认值。

附录:
当地代码可以使用GetLocaleInfo函数取得,指定第二个参数为LOCALE_SABBREVLANGNAME,程序实例如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
LocaleList: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
function GetLocaleData(ID: LCID;
Flag: DWORD): string;
var
BufSize: Integer;
begin
BufSize := GetLocaleInfo(ID, Flag, nil, 0);
SetLength(Result, BufSize);
GetLocaleinfo(ID, Flag, PChar(Result), BufSize);
SetLength(Result, BufSize - 1);
end;

{ Called for each supported locale. }
function LocalesCallback(Name: PChar): Bool;
stdcall;
var
LCID: Integer;
begin
LCID := StrToInt('$' + Copy(Name, 5, 4));
Form1.LocaleList.Lines.Add(GetLocaleData(LCID, LOCALE_SLANGUAGE)
+':'+GetLocaleData(LCID, LOCALE_SABBREVLANGNAME));
Result := Bool(1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EnumSystemLocales(@LocalesCallback, LCID_SUPPORTED);{枚举出系统内的所有当地代码}
end;

end.

常用当地代码列表:
巴士克语:euq
加泰隆语:cat
丹麦语:dan
荷兰语(标准):nld
荷兰语(比利时):nlb
英语(美国):enu
英语(英国):eng
英语(澳大利亚):ena
英语(加拿大):enc
英语(新西兰):enz
英语(爱尔兰):eni
芬兰语:fin
法语(标准):fra
法语(比利时):frb
法语(加拿大):frc
法语(瑞士):frs
德语(标准):deu
德语(瑞士):des
德语(奥地利):dea
冰岛语:isl
意大利语(标准):ita
意大利语(瑞士):its
挪威语(伯克梅尔):nor
挪威语(尼诺斯克):non
葡萄牙语(巴西):ptb
葡萄牙语(标准):ptg
西班牙语(传统):esp
西班牙语(墨西哥):esm
西班牙语(现代):esn
瑞典语:sve
南非荷兰语:afk
英语(南非):ens
法语(卢森堡):frl
德语(卢森堡):del
德语(列支敦士登):dec
印度尼西亚语:ind
繁体中文(台湾):
简体中文(中国):chs
 
后退
顶部