Chúng tôi đang bản địa hóa văn bản giao diện người dùng cho ứng dụng web chạy trên Java 5 và có tình trạng khó xử về cách chúng tôi xuất các thư được xác định trong tệp thuộc tính - loại được sử dụng bởi java.util.Properties.Tôi có nên sử dụng java.text.MessageFormat cho các thư được bản địa hóa mà không có trình giữ chỗ không?
Một số thư bao gồm trình giữ chỗ sẽ được điền bằng cách sử dụng java.text.MessageFormat. Ví dụ:
search.summary = Your search for {0} found {1} items.
MessageFormat gây phiền toái, vì một dấu nháy đơn là ký tự đặc biệt, mặc dù thông dụng trong văn bản tiếng Anh. Bạn phải nhập hai cho một dấu nháy đơn bằng chữ:
warning.item = This item''s {0} is not valid.
Tuy nhiên, ba phần tư trong số 1000 ứng dụng hoặc các thư của ứng dụng không bao gồm trình giữ chỗ. Điều này có nghĩa rằng chúng ta có thể xuất chúng trực tiếp, tránh MessageFormat, và để lại các dấu nháy đơn một mình:
help.url = The web page's URL
Câu hỏi: chúng ta nên sử dụng MessageFormat cho tất cả các bài viết, cho cú pháp nhất quán, hoặc tránh MessageFormat nơi chúng ta có thể, vì vậy hầu hết các tin nhắn không cần phải thoát?
Có những ưu điểm và nhược điểm rõ ràng.
Lưu ý rằng các tài liệu API cho MessageFormat thừa nhận vấn đề và đề nghị một tổ chức phi-giải pháp:
Các quy tắc sử dụng dấu ngoặc kép trong nhắn dạng mẫu may đã cho thấy được phần nào khó hiểu. Cụ thể, không phải lúc nào cũng rõ ràng là đối với người bản địa hóa cho dù dấu nháy đơn có cần phải được tăng gấp đôi hay không. Đảm bảo để thông báo cho người bản địa về các quy tắc, và cho họ biết (ví dụ: bằng cách sử dụng nhận xét trong nguồn gói nguồn tệp).
Có thể sử dụng thư viện mà chỉ cần định dạng một chuỗi mặc dù? –
có vẻ như cơ chế này được chôn sâu vào mã. có thể bạn sẽ có nhiều may mắn hơn: http://logback.qos.ch/download.html –
Thật vậy, vì vậy tôi đoán tôi sẽ tìm một triển khai thay thế. –