论坛风格切换切换到宽版
  • 3890阅读
  • 9回复

请教老虎版主多语言问题 [复制链接]

上一主题 下一主题
离线546242502
 

发帖
332
金钱
-3060
威望
-306
只看楼主 倒序阅读 0 发表于: 2015-08-19
1、参照老虎版主您以前的一个帖子(),搜不到原帖了,论坛搜索提示非法请求,百度也搜不到:



具体问题如下:


在code段引用自定义消息,我参照以前那个帖子用 CustomMessage('cmcleanhint') 的方式,但是提示缺少逗号,不知道怎么修改?

[CustomMessages]
chs.cmcleanhint=是否清除项目文件及配置文件,请注意备份
en.cmcleanhint=Are you sure to clean the project files and configuration files? Please back up important files before Clean!

[code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if ActiveLanguage = 'chs' then
  begin
  if CurUninstallStep = usDone then
  if MsgBox('CustomMessage('cmcleanhint')', mbConfirmation, MB_YESNO) = IDYES then
  //删除文件夹及其中所有文件
  end;

2、界面设置有简体中文和英语两种语言,由于安装向导的位图在两种语言下有差别,怎么根据不同的语言用不同的位图

离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2015-08-20
注意不要乱用引号!
if MsgBox('CustomMessage('cmcleanhint')', mbConfirmation, MB_YESNO) = IDYES then
正确应该是
if MsgBox(CustomMessage('cmcleanhint'), mbConfirmation, MB_YESNO) = IDYES then
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 2 发表于: 2015-08-20
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if ActiveLanguage = 'chs' then
  begin
  if CurUninstallStep = usDone then
  if MsgBox('CustomMessage('cmcleanhint')', mbConfirmation, MB_YESNO) = IDYES then
  //删除文件夹及其中所有文件
  end;

这个代码是意思是:如果语言是中文就弹出提问窗口,如果语言不是中文则什么都不做。这个显然不是你的意图。正确应该是根本就不要检查是不是中文,总是弹出窗口,而窗口显示的文字这根据具体的语言自动选择。所以正确应该是
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
   if CurUninstallStep = usDone then
  if MsgBox('CustomMessage('cmcleanhint')', mbConfirmation, MB_YESNO) = IDYES then
  //删除文件夹及其中所有文件
end;
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2015-08-20
关于根据不同的语言显示不同的图像:
建议选择一个图像(比如中文图像)当作默认的图像。另外一种语言(英语)的图像再额外打包。
初始化安装向导时检查,如果语言不是中文,则从安装包里面把英语图像取出来,并用它来取代安装向导页面的图像(中文图像)。
也就是说你准备两个语言的图像,比如
中文图像是文件 WizModernImage_chs.bmp
英语图像是文件 WizModernImage_en.bmp

离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 4 发表于: 2015-08-20
参看下面的示例,举一反三。

[Setup]
AppName={cm:MyAppName}
AppId=My Program
AppVerName={cm:MyAppVerName,1.5}
DefaultDirName={pf}\{cm:MyAppName}
DefaultGroupName={cm:MyAppName}
WizardImageFile=WizModernImage_chs.bmp
; 如果启动安装程序时不显示选择语言的窗口,而是让系统自动选择安装语言,请删除下一行的注释符
ShowLanguageDialog=no

[Languages]
Name: en; MessagesFile: "compiler:Languages\english.isl"
Name: chs; MessagesFile: "compiler:Default.isl"

[Messages]
en.BeveledLabel=This is English
chs.BeveledLabel=这是简体中文

[CustomMessages]
en.MyDescription=My description
en.MyAppName=My Program
en.MyAppVerName=My Program %1
en.cmcleanhint=Are you sure to clean the project files and configuration files? Please back up important files before Clean!
en.cmThankyou=Thank you!
chs.MyDescription=我的程序描述
chs.MyAppName=我的程序
chs.MyAppVerName=我的程序 %1
chs.cmcleanhint=是否清除项目文件及配置文件,请注意备份!
chs.cmThankyou=谢谢!

[Files]
Source: "WizModernImage_en.bmp"; Flags: dontcopy

[Code]
procedure InitializeWizard();
begin
if ActiveLanguage <> 'chs' then       //如果语言不是中文,则更换为英文图像。
  begin
  ExtractTemporaryFile('WizModernImage_en.bmp');
  WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizModernImage_en.bmp'));
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usDone then
    if MsgBox(CustomMessage('cmcleanhint'), mbConfirmation, MB_YESNO) = IDYES then
      //删除文件夹及其中所有文件
      MsgBox(CustomMessage('cmThankyou'), mbInformation, MB_OK);
end;
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 5 发表于: 2015-08-20
回 4楼(gnatix) 的帖子
感谢老虎版主的解答,前面的问题,我用笨方法解决了,不过还是我问这一种方法简单,学习了


离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 6 发表于: 2015-08-21
回 2楼(gnatix) 的帖子
gnatix:procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);begin  if ActiveLanguage = 'chs' then  begin  if CurUninstallStep = usDone then....... (2015-08-20 06:24) 

是,就是因为上面的逗号问题,所以我用了笨方法
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 7 发表于: 2015-08-21
回 4楼(gnatix) 的帖子
gnatix:参看下面的示例,举一反三。[Setup]AppName={cm:MyAppName}AppId=My Program....... (2015-08-20 06:35) 

老虎版主,我起先也是这么替换位图的,但这只是替换了欢迎界面的位图,完成页面并没有替换
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 8 发表于: 2015-08-21
我当然知道还有完成页面的图像,还有页面上面的小图。但是我只是给一个思路,所以我每次提醒:举一反三。意思是其他的你要自己去弄了。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 9 发表于: 2015-08-21
回 8楼(gnatix) 的帖子
gnatix:我当然知道还有完成页面的图像,还有页面上面的小图。但是我只是给一个思路,所以我每次提醒:举一反三。意思是其他的你要自己去弄了。 (2015-08-21 14:04) 

恩,知道了