2013-12-16 19 views
6

Dưới đây là trích dẫn từ các Qt documentation:quốc tế hóa tài nguyên Qt không

Một số nguồn lực cần thay đổi dựa trên miền địa phương của người dùng, chẳng hạn như file dịch hoặc biểu tượng. Điều này được thực hiện bằng cách thêm thuộc tính lang vào thẻ qresource, chỉ định chuỗi ngôn ngữ phù hợp. Ví dụ:

<qresource> 
    <file>cut.jpg</file> 
</qresource> 
<qresource lang="fr"> 
    <file alias="cut.jpg">cut_fr.jpg</file> 
</qresource> 

Nếu miền địa phương của người dùng là Pháp (tức là, QLocale :: hệ thống() Tên() trả về "fr_FR".),: /cut.jpg trở thành một tham chiếu đến hình ảnh cut_fr.jpg . Đối với các miền khác, cut.jpg được sử dụng.

Tôi cố gắng thực hiện việc này và không thành công. Đây là một phần từ tệp * .qrc của tôi:

<qresource> 
    <file>HtmlTemplates/angle.html</file> 
    <file>HtmlTemplates/bottom.html</file> 
    <file>HtmlTemplates/top.html</file> 
</qresource> 
<qresource lang="en"> 
    <file alias="HtmlTemplates/angle.html">HtmlTemplates/en/angle.html</file> 
    <file alias="HtmlTemplates/bottom.html">HtmlTemplates/en/bottom.html</file> 
    <file alias="HtmlTemplates/top.html">HtmlTemplates/en/top.html</file> 
</qresource> 

Như bạn thấy, nó chính xác giống như ví dụ trong sách hướng dẫn. Tuy nhiên, cố gắng để biên dịch tập tin này mang lại điều này:

..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'angle.html' 
..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'bottom.html' 
..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'top.html' 

Và nếu tôi cố gắng để thay đổi * .qrc tập tin trong QtCreator, nó reset nó vào một trạng thái sai xóa lang thuộc tính:

<qresource prefix="/"> 
    <file>HtmlTemplates/angle.html</file> 
    <file>HtmlTemplates/bottom.html</file> 
    <file>HtmlTemplates/top.html</file> 
    <file alias="HtmlTemplates/angle.html">HtmlTemplates/en/angle.html</file> 
    <file alias="HtmlTemplates/bottom.html">HtmlTemplates/en/bottom.html</file> 
    <file alias="HtmlTemplates/top.html">HtmlTemplates/en/top.html</file> 
</qresource> 

Vì vậy, tôi buộc phải lặp qua tài nguyên cho các miền địa phương khác nhau trong mã của tôi. Tôi đang thiếu một cái gì đó hoặc là một lỗi Qt? Phiên bản Qt là 4.8.4, phiên bản QtCreator là 2.8.1.

Trả lời

1

Tôi không biết điều này có thể giúp ích cho bạn. Tệp từ tài liệu cũng không hoạt động đối với tôi. Nhưng tác phẩm này:

<RCC> 
    <qresource prefix="/" lang="en"> 
     <file alias="tr.png">triangle_en.png</file> 
    </qresource> 
    <qresource prefix="/" lang="uk"> 
     <file alias="tr.png">triangle.png</file> 
    </qresource> 
</RCC> 

Tôi đã sử dụng thiết kế cho cửa sổ. Nhà thiết kế chỉ xem tr.png (triangle.png). Môi trường xây dựng mặc định là LANGUAGE = uk. Sau khi thay đổi thành LANGUAGE = vi trong Qt Creator, chương trình bắt đầu hiển thị triangle_en.png.

Tôi sử dụng Qt 5.0.2 và Trình tạo Qt 2.8.1.

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