2012-02-17 22 views
8

Trong Delphi có một tùy chọn VersionInfo-> Language-> Locale ID khi xem thuộc tính dự án.
Tôi đã đi lang thang làm thế nào để thiết lập tài sản như vậy cho một chương trình được biên dịch theo Free Pascal.
Bất kỳ giải pháp nào đều được hoan nghênh: đối số dòng lệnh hoặc chỉ thị tiền xử lý chẳng hạn như {$key value}; tương đương với Delphi.Làm thế nào để thông báo Free Pascal Compiler để thiết lập Locale ID cho ứng dụng đã biên dịch

+3

Trong Lazarus thật dễ dàng, có một tab cài đặt dự án rất giống nhau. Sau đó, các cài đặt này được lưu trữ trong các tệp '* .lpi' của dự án như thế này '' – TLama

+1

@ TLama, điều này trông giống như một câu trả lời tuyệt vời, tôi đề nghị bạn làm cho nó một, vì vậy chúng tôi có thể bỏ phiếu nó lên. – Johan

+0

(1) Bạn mong muốn được bản địa hóa nội dung nào? (2) Nó không phải là một công cụ cầm tay sẽ sử dụng một cửa sổ mã. (3) nếu đây là D2009 + chỉ, công cụ như vậy vẫn đang được làm việc trên. –

Trả lời

8

Nếu bạn có thể tạo dự án của mình bằng cách sử dụng *.lpi tệp thì tôi sẽ cố gắng thêm các tệp sau vào tệp Project.lpi của dự án của bạn.Trong đoạn mã sau đây được hiển thị cách đặt ID ngôn ngữ của dự án (cho nền tảng Windows) thành 0405 (tiếng Séc).

<?xml version="1.0"?> 
<CONFIG> 
    <ProjectOptions> 
    ... 
    <VersionInfo> 
     <UseVersionInfo Value="True"/> 
     <Language Value="0405"/> 
     <StringTable ProductVersion=""/> 
    </VersionInfo> 
    ... 
    </ProjectOptions> 
    ... 
</CONFIG> 

Hoặc nếu bạn đang sử dụng Lazarus IDE thì bạn có thể sử dụng để Delphi tab thiết lập rất giống nhau mà bạn có thể mở từ Project/Project Options ... và như trong Delphi đi đến Version Info đâu là Language selection combo box có sẵn nếu bạn bao gồm các thông tin phiên bản vào dự án.

5

Không chắc chắn 100% điều này sẽ hiệu quả, vui lòng bỏ phiếu cho tôi nếu điều này không hiệu quả.

Lazarus sẽ kế thừa cài đặt miền địa phương bắt đầu bằng.
Bạn có thể thiết lập các thông tin miền địa phương trước khi bắt đầu Lazarus trong Linux/OS X sử dụng dòng lệnh:

export LC_CTYPE="pt_BR" 
export LANG="pt_BR" 
export LANGUAGE="pt_BR" 
./lazarus 

ứng dụng biên soạn của bạn nên kế thừa các thiết lập này.

Câu trả lời được lấy cảm hứng từ this workaround đến một lỗi đã được khắc phục.

Tôi khuyên bạn cũng nên xem at the fpc forum và đặt câu hỏi ở đó.
Đừng quên nó bao gồm các chi tiết như nền tảng (Linux/Windows/OS X) và phiên bản chính xác của FPC và Lazarus bạn đang sử dụng cũng như Ngôn ngữ thực tế mà bạn muốn.

câu trả lời tốt hơn
Từ: http://forum.lazarus.freepascal.org/index.php/topic,5924.0.html

Cuối cùng, tôi cố gắng tìm một cách đơn giản và hiệu quả để làm localizeable ứng dụng của tôi. Nó chỉ sử dụng một đơn vị và không có mã.
1. Thêm đơn vị "defaulttranslator" vào danh sách sử dụng của bạn.
2. Bật "i18n" trong "Tùy chọn dự án" và đặt "thư mục đầu ra PO" thành "ngôn ngữ" hoặc "ngôn ngữ". Bạn có thể đặt các tập tin dịch ngay vào thư mục ứng dụng, nhưng điều đó sẽ tạo ra một mớ hỗn độn. Đừng quên tạo một thư mục thích hợp.
3. Thêm thành phần vào biểu mẫu. Nếu bạn đã có tất cả các thành phần trên biểu mẫu của mình, bạn sẽ phải di chuyển nó một chút, vì vậy nó đã được sửa đổi.
4. Lưu dự án của bạn.
5. Bây giờ phải có tệp .po trong thư mục "ngôn ngữ" hoặc "ngôn ngữ" của bạn. Đối với các tệp ngôn ngữ khác nhau nên được sao chép và đổi tên thành "project1.XX.po", trong đó XX là mã ngôn ngữ (ví dụ: "en", "de", v.v ...).
6. Dịch tệp .po bằng phần mềm dịch và tạo tệp .mo. Tôi đề nghị sử dụng POEdit.
7. Chạy ứng dụng của bạn và bản dịch được sử dụng sẽ được chọn bởi cài đặt ngôn ngữ khu vực của bạn. Nếu bạn cần kiểm tra ngôn ngữ khác - chỉ cần khởi động ứng dụng của bạn với các tham số dòng lệnh sau - "-l XX" hoặc "-lang XX", trong đó XX là mã ngôn ngữ.
Phương pháp này không phải là rất linh hoạt, nhưng nó dịch chuỗi tài nguyên và các thuộc tính thành phần LCL.