2013-07-11 36 views
7

Tôi đã tạo bảng tùy chỉnh cho Inno-Setup và tôi muốn quốc tế hóa cho việc này.Thiết lập Inno i18n cho bảng tùy chỉnh

Tôi có thể sử dụng các tệp * .isl để thêm các phím dịch của tôi hay tôi phải sử dụng [custommessages]? Và làm thế nào tôi có thể truy cập các phím trong phần [code].

Không phải ví dụ về thiết lập nội bộ bằng i18n.

thx Tom

Trả lời

9

1. Tôi có thể sửa đổi các tập tin định vị isl?

Khi bạn sửa đổi các tệp * .isl chuẩn hoặc tạo các tệp đã chỉnh sửa của riêng bạn. Để chắc chắn ghi nhớ, rằng nếu bạn sửa đổi những tiêu chuẩn, họ có thể nhận được cập nhật bởi một phiên bản mới của Inno Setup bạn cài đặt. Đó có thể là lý do tại sao nhiều người đề xuất chỉ tạo mục nhập trong phần [CustomMessages]. Tuy nhiên, bạn có thể tạo một tệp ngôn ngữ riêng biệt mà bạn sẽ hợp nhất với mỗi bản cập nhật cài đặt Inno hoặc thậm chí tốt hơn, như Miral gợi ý, chỉ định thư tùy chỉnh của bạn trong tệp * .isl của riêng bạn và sau đó trong MessagesFile tham số của bộ phận [Languages] chỉ định tập tin đó ở phần cuối của dấu phẩy tách ra danh sách các tập tin:

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

Theo các tiểu bang tham chiếu cho MessagesFile tham số:

Khi nhiều tập tin được chỉ định, y được đọc theo thứ tự là được chỉ định, do đó tệp tin cuối cùng sẽ ghi đè bất kỳ thư nào trong các tệp trước đó .

Vì vậy, nếu bạn thực hiện chỉ * .isl file (s) với chỉ [CustomMessages] phần và xác định chúng trong kịch bản cách trên, bạn sẽ không phá vỡ bất cứ điều gì và bạn sẽ nhận được các tập tin ngôn ngữ thể tái sử dụng riêng biệt (s). Cơ cấu như tùy chỉnh file * .isl có thể trông giống như eaxctly phần [CustomMessages]:

[CustomMessages] 
SomeCustomKey=Some custom value 
... 

Đặt tệp ngôn ngữ của bạn có thể là tốt hơn cho bạn nếu bạn đang đi để tái sử dụng những thông điệp tùy chỉnh trong nhiều thiết lập.

2. Tôi làm cách nào để truy cập thư tùy chỉnh từ phần [Mã]?

Bằng cách sử dụng chức năng CustomMessage. Ví dụ: theo cách này:

... 

[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

tôi đề nghị không bao giờ sửa đổi các tập tin '.isl' chuẩn trực tiếp. Thay vào đó, bạn có thể tạo tệp '.isl' mới chỉ chứa những thư bạn muốn sửa đổi hoặc thêm. Sau đó, bạn có thể sử dụng cả hai tệp bằng #including tệp chuẩn từ tệp tùy chỉnh của bạn hoặc bằng cách chỉ định cả hai tệp (với tệp tùy chỉnh cuối cùng) trong thông số ['MessagesFile'] (http://jrsoftware.org/ishelp/topic_languagessection) .htm). – Miral

+0

@Miral, điểm tốt! – TLama

+1

Điều này thực sự hữu ích, điều duy nhất còn thiếu là cách sử dụng thông báo tùy chỉnh trong mã khi các thông báo này có thông số (ví dụ:% 1, ...,% 9). –

4

Trả lời do @TLama cung cấp thực sự hữu ích. Tôi gặp phải sự cố bổ sung, có liên quan đến việc sử dụng thông báo tùy chỉnh có thông số.

Để xác định thông báo tùy chỉnh:

Tin nhắn có thể lấy đối số, từ% 1 đến% 9. Bạn có thể sắp xếp thứ tự của các đối số (ví dụ: di chuyển% 2 trước% 1) và cũng là đối số trùng lặp nếu cần (ví dụ: "% 1 ...% 1% 2").Trên thư có đối số, hãy sử dụng hai ký tự "%" liên tiếp để nhúng một "%" đơn. "% n" tạo ngắt dòng.

Ví dụ:

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

Và sau đó, sử dụng nó trong phần mã, chỉ cần sử dụng FmtMessage chức năng cùng với chức năng CUSTOMMESSAGE:

Ví dụ:

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

Ngoài ra rất hay! – TLama

Các vấn đề liên quan