2011-12-14 32 views
17

Đây là vấn đề của tôi: Chúng tôi có các tệp .ts cho chín ngôn ngữ khác nhau cho sản phẩm của chúng tôi. Chúng tôi đã thêm khoảng 100 chuỗi mới cần được dịch, nhưng một số là dành cho bản phát hành tiếp theo của chúng tôi và một số sẽ được phát hành sau đó. Chúng tôi đã gặp sự cố với các dịch giả thiếu chuỗi hoặc dịch chuỗi trước thời hạn. Chúng tôi muốn có thể gửi tệp .ts nhỏ hơn chỉ chứa các chuỗi mà chúng tôi muốn dịch ngay bây giờ và sau đó hợp nhất tệp .ts đó vào tệp .ts lớn hơn có chứa phần còn lại của bản dịch.Hợp nhất các tệp dịch (.ts) với các tệp .ts hiện có bằng QT Utilities (lconvert)

Người dịch của chúng tôi được yêu cầu sử dụng QT Linguist (trước đây chúng tôi cho phép họ chỉnh sửa XML thô với kết quả ít hơn sao).

Một giải pháp sẽ là sử dụng ngữ cảnh, nhưng nhóm dev của chúng tôi không quan tâm đến ý tưởng đó. Một cách khác là hợp nhất các tệp .ts bằng tay, nhưng điều đó có vẻ giống như một công thức để cắt các lỗi dán &.

Có phương pháp nào với lupdate & tệp dự án để thêm hoặc hợp nhất tệp .ts thứ cấp không? Tôi đã đọc qua các diễn đàn trong QT-land w/o tìm câu trả lời, nhưng các switch trong lupdate ám chỉ đến việc có thể trỏ đến các tệp dịch khác. Cụ thể công tắc -Pro mà nói:

-pro <filename> 
     Name of a .pro file. Useful for files with .pro file syntax but 
     different file suffix. Projects are recursed into and merged. 

example1: chúng ta có một tập tin .ts Đức, chúng tôi muốn thêm 20 chuỗi từ một tập tin bản dịch riêng của Đức như vậy mà các tập tin dịch chính chứa tất cả các chuỗi trong đó có 20 cái mới.

Ví dụ2: chúng tôi có tệp .ts Đức, chúng tôi muốn thêm 20 chuỗi từ tệp dịch tiếng Đức riêng biệt sao cho tệp dịch phụ sẽ được hợp nhất với tệp chính trong lupdate để tệp .qm kết quả chứa tất cả chuỗi bao gồm 20 cái mới.

Có ai đã thực hiện một trong hai cách này (và cả hai sẽ hoạt động) và bạn có thể cho tôi một số thông tin chi tiết không?

Trả lời

30

Câu trả lời không sử dụng lupdate, nó nằm trong một tiện ích khác được gọi là lconvert. Đó là khá dễ dàng để tạo ra một tập tin thứ cấp mà chỉ chứa các chuỗi bạn quan tâm (và xóa những chuỗi tương tự từ các tập tin ban đầu), sau đó chạy:

lconvert -i primary.ts secondary.ts -o complete.ts

này sẽ đưa tất cả các chuỗi từ hai tệp đầu vào và đặt chúng lại với nhau thành tệp đầu ra. Sử dụng phương pháp này tôi đã có thể tạo một tập tin khác biệt zero (khác với tem thời gian) của tập tin ban đầu mà tôi muốn chia hai tập tin thứ cấp chính &.

Câu hỏi này không nhận được nhiều sự chú ý, nhưng có thể ai đó sẽ gặp vấn đề tương tự và điều này sẽ giúp ích.

2

cảm ơn mẹo này. Dường như nó hoạt động đúng cho trường hợp của tôi: Tôi đã cố gắng trích xuất các chuỗi được cập nhật và mới từ dự án của mình, hiện đang được dịch trong phiên bản cũ/phát hành mà tôi chưa có chuỗi dịch.

Vấn đề là gửi các chuỗi mới/cập nhật chỉ cho người dịch.

Tôi đã vượt qua chuỗi cũ trong trạng thái được giải quyết, thêm chuỗi mới bằng Lupdate, thực hiện nghiên cứu bằng Trình chỉnh sửa oxyXML với XPath "/ TS/ngữ cảnh/tin nhắn [không phải (dịch/@ type)]" để xóa các chuỗi cũ hơn và làm sạch nó từ khoảng trống vô dụng và trả về vận chuyển.

Tôi đã thử hợp nhất bằng cách sử dụng lconvert với giải pháp của bạn, để hợp nhất các chuỗi đã dịch: cũ hơn và mới hơn. Nó vượt qua chính xác lrelease và được hiển thị đúng cách.

+2

vui vì điều này phù hợp với bạn. Như một điểm của SO nghi thức, nói chung, nếu một câu trả lời phù hợp với bạn, bạn hãy nhấp vào mũi tên lên của câu trả lời đó và tùy chọn thêm nhận xét để làm rõ cách nó hoạt động cho bạn, thay vì thêm câu trả lời là nhận xét về câu trả lời gốc. Không phải lo lắng. – delliottg

-3

Sử dụng Nhiều Dịch

Nhiều file dịch có thể được cài đặt trong một ứng dụng. Các bản dịch được tìm kiếm theo thứ tự ngược lại, trong đó chúng được cài đặt, vì vậy tập tin bản dịch được cài đặt gần đây nhất được tìm kiếm cho bản dịch đầu tiên và tập tin dịch đầu tiên được tìm kiếm lần cuối. Tìm kiếm sẽ dừng ngay khi bản dịch chứa chuỗi phù hợp được tìm thấy.

Cơ chế này làm cho bản dịch cụ thể có thể được "chọn" hoặc được ưu tiên hơn những người khác; chỉ cần gỡ cài đặt trình dịch từ ứng dụng bằng cách chuyển nó tới hàm QApplication :: removeTranslator() và cài đặt lại nó bằng QApplication :: installTranslator(). Sau đó nó sẽ là bản dịch đầu tiên được tìm kiếm cho các chuỗi phù hợp.

liên kết bằng chứng: QTranslator Class Reference

+1

điều này không giải quyết câu hỏi ở tất cả - downvoted. – ndbd

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