2013-07-11 18 views
7

私はInno-Setup用のカスタムパネルを作ったので、これを国際化したいと思います。Innoセットアップi18nカスタムパネル用

* .islファイルを使用して翻訳キーを追加することはできますか?[custommessages]を使用する必要がありますか?そして、[code]セクションのキーにどうやってアクセスできますか?

i18nを使用するinno-setupの例はありません。

THX トム

答えて

9

1.私は、ISLローカライズファイルを変更することはできますか?

標準の* .islファイルを変更したり、独自の修正したファイルを作成したりするのはあなた次第です。標準のものを変更すると、インストールしたInno Setupの新しいバージョンによって更新される可能性があることに注意してください。これは、多くの人が[CustomMessages]セクションにエントリを作成するよう提案している理由です。

もちろん、別々の言語ファイルを作成して、Innoセットアップの各アップデートとマージすることもできます.Miralの提案のように、独自の* .islファイルでカスタムメッセージを指定してからMessagesFile[Languages]セクションのパラメータファイルのカンマ区切りリストの最後にそのファイルを指定します。MessagesFileパラメータの基準状態として

[Languages] 
Name: "en"; MessagesFile: "compiler:Default.isl,compiler:YourEnMessages.isl" 
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl,compiler:YourNlMessages.isl" 

:複数のファイルを指定した場合

、 yは、 の順に読み取られるため、最後のメッセージファイルは、 以前のファイルのすべてのメッセージよりも優先されます。

あなただけ[CustomMessages]セクションでのみ* .islファイル(複数可)を作成し、スクリプトで上記の方法でそれらを指定するのであれば、あなたは何も中断されません、あなたは別の再利用可能な言語ファイル(複数可を取得します)。こうしたカスタム*の.islファイルの構造はeaxctly [CustomMessages]セクションのようになります。

[CustomMessages] 
SomeCustomKey=Some custom value 
... 

あなたは多くのセットアップでこれらのカスタムメッセージを再利用するつもりなら、あなたのために良いかもしれない自分自身の言語ファイルを作ります。

2. [コード]セクションからカスタムメッセージにアクセスするにはどうすればよいですか?

を使用すると、CustomMessage機能を使用します。たとえば、次のようになります。

... 

[CustomMessages] 
; the following key value pair can be moved to the *.isl file into the same 
; named file section, if needed; as a downside of doing that you'll need to 
; keep track of changes if you update Inno Setup itself 
SomeCustomKey=Some custom value 

[Code] 
procedure InitializeWizard; 
var 
    S: string; 
begin 
    S := CustomMessage('SomeCustomKey'); 
    MsgBox(S, mbInformation, MB_OK); 
end; 
+1

Iは標準の '.isl'ファイルを決して直接変更することは推奨しません。代わりに、変更または追加するメッセージのみを含む新しい '.isl'ファイルを作成することができます。次に、両方のファイルを#カスタムファイルから標準ファイルをインクルードするか、['MessagesFile'パラメタ]で両方のファイルを指定することで(http://jrsoftware.org/ishelp/topic_languagessection .htm)。 – Miral

+0

@Miral、良い点! – TLama

+1

本当に便利でした。唯一欠けているのは、これらのメッセージにパラメータがある場合(たとえば、%1、...、%9)、カスタムメッセージをコードで使用する方法です。 –

4

@traamが提供する回答は本当に便利です。私は、のカスタムメッセージと、というカスタムメッセージを使用することに関連していたという追加の問題に直面しました。

メッセージは、%9%まで1から、引数を取る場合があります。カスタムメッセージを定義するには

引数の順序を並べ替えることができます(つまり、%1を%1の前に移動)し、必要に応じて引数を重複させることもできます(つまり、 "%1 ...%1%2")。引数のあるメッセージでは、連続する2つの "%"文字を使用して1つの "%"を埋め込みます。 "%n"は改行を作成します。例えば

:次いで

[CustomMessages] 
... 
NameAndVersion=%1 version %2 
... 

そして、単にCUSTOMMESSAGE機能と共にFmtMessage関数を使用し、コードセクションにそれを使用する:

例:

S := FmtMessage(CustomMessage('NameAndVersion'), ['My Program', '1.0']); 
// S = 'My Program version 1.0' 
+0

非常に素晴らしい追加! – TLama

関連する問題