Inno Setup-如何在自定义页面中显示本地化的RTF文本 [英] Inno Setup - How to display localized RTF text in custom page

查看:166
本文介绍了Inno Setup-如何在自定义页面中显示本地化的RTF文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用此代码以不同的语言显示相同的文本,相同的结构(字体等)?例如:语言选择器中的英语和西班牙语.

How to use this code to show the same text, with the same structure (fonts, etc) but in different languages? For example: English and Spanish in a language selector.

(文本是​​RTFText :=之前的全部内容)

(The text is all that is ahead of RTFText :=)

var
  ISCustomPage1: TWizardPage;
  RichEditViewer1: TRichEditViewer;

procedure initializewizard;
begin
  { Creates custom wizard page }
  ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');

  { RichEditViewer1 }
  RichEditViewer1 := TRichEditViewer.Create(WizardForm);
  with RichEditViewer1 do
  begin
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(0);
    Top := ScaleY(0);
    Width := ScaleX(417);
    Height := ScaleY(241);
    ReadOnly := True;
    RTFText := '{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset204{\*\fname Times New Roman;}Times New Roman CYR;}{\f1\fnil\fcharset0 Times New Roman;}{\f2\fnil\fcharset0 Tahoma;}{\f3\fnil\fcharset0 @BatangChe;}}' + #13#10 +
         '{\colortbl ;\red0\green0\blue128;\red0\green0\blue255;}' + #13#10 +
         '\viewkind4\uc1\pard\cf1\lang1034\ul\b\f0\fs36 C\f1 o\f0 mo usar este c\f1\''f3\f0 digo para mostrar el mismo texto, con la misma estructura (fuentes, etc) pero en diferentes idiomas?\par' + #13#10 +
         '\cf0\ulnone\b0\f2\fs24\par' + #13#10 +
         '\par' + #13#10 +
         '\cf2\b\f3\fs20 Por ejemplo: ingl\''e9s y espa\''f1ol en un selector de idiomas.\par' + #13#10 +
         '}' + #13#10 +
         '';
  end;

  RichEditViewer1.TabOrder := 0;
end;

更好的选择是使用两个.rtf文件(英语和西班牙语)并根据语言选择器的语言分别加载一个文件吗?

Would a better choice be to use two .rtf files (English and Spanish) and load each one according to language of the language selector?

推荐答案

对于自定义页面的标题和描述,请定义自定义消息,与 Inno设置-如何本地化组件和类型名称?

For the caption and description of the custom page, define custom messages in the language files, the same way as in Inno Setup - How to localize component and type names?

[CustomMessages]
ISCustomPage1_Caption=Some caption
ISCustomPage1_Description=Some description

然后使用 CustomMessage函数函数使用这些自定义消息在您的代码中.

And then use these custom messages using the CustomMessage function function in your code.

对于RTF文本,最好的解决方案是创建单独的.rtf文件并根据所选语言加载适当的文件.

For the RTF text, the best solution is to create separate .rtf files and load an appropriate one based on the selected language.

[Languages]
Name: "eng"; MessagesFile: "Idiomas\English.isl"
Name: "spa"; MessagesFile: "Idiomas\Spanish.isl"

[Files]
Source: "eng.rtf"; Flags: dontcopy
Source: "spa.rtf"; Flags: dontcopy

[Code]

var
  ISCustomPage1: TWizardPage;
  RichEditViewer1: TRichEditViewer;

procedure InitializeWizard;
var
  RtfName: string;
  Rtf: AnsiString;
begin
  { Creates custom wizard page }
  ISCustomPage1 :=
    CreateCustomPage(
      wpWelcome, CustomMessage('ISCustomPage1_Caption'),
      CustomMessage('ISCustomPage1_Description'));

  { RichEditViewer1 }
  RichEditViewer1 := TRichEditViewer.Create(WizardForm);
  with RichEditViewer1 do
  begin
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(0);
    Top := ScaleY(0);
    Width := ScaleX(417);
    Height := ScaleY(241);
    ReadOnly := True;
    ScrollBars := ssVertical;

    RtfName := ActiveLanguage + '.rtf';
    ExtractTemporaryFile(RtfName);
    if LoadStringFromFile(ExpandConstant('{tmp}\' + RtfName), Rtf) then
    begin
      UseRichEdit := True;
      RTFText  := Rtf;
    end;
  end;
end;

这篇关于Inno Setup-如何在自定义页面中显示本地化的RTF文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆