2011-12-12 25 views
5

Chúng tôi có một trang web sẽ được sử dụng cho hai khách hàng khác nhau. Trong lần yêu cầu đầu tiên, người dùng sẽ được yêu cầu chọn một khách hàng. Dựa trên văn bản đó, nhãn và nội dung trang web sẽ được hiển thị.Có thể có nhiều hơn một tệp tin trong khuôn khổ Play

Có thể có hai thông điệp nộp trong khuôn khổ Play và quá trình khởi động phiên giao dịch thông điệp tập tin sẽ được quyết định

Tính đến nghiên cứu của tôi, chúng tôi có thể có nhiều hơn một hồ sơ cho mỗi Locale, các thông điệp sẽ được nhận được dựa trên miền địa phương trong yêu cầu.

Trả lời

1

Giải Quyết vấn đề này với bên dưới giải pháp,

  1. Tạo một lớp MessagesPlugIn kéo dài play.i18n.MessagesPlugin
  2. Tạo một lớp học Messages giống như play.i18n.Messages
  3. Đã có sẵn Bản đồ messaagesByClientID trong Messages.java
  4. ghi đè onApplicationStart() trong MessagesPlugIn
  5. Loaded Properties trong messaagesByClientID như locales nạp trong play.i18n.MessagesPlugin
  6. Đã có một phương pháp get() trong Messages.java, lấy tài sản từ messaagesByClientID dựa ClientId trong phiên. Nếu tài sản không có sẵn gọi get() trong play.i18n.Messages

7.Created thẻ Tuỳ chỉnh il8nTag và sử dụng nó trong HTML mẫu. il8nTag sẽ gọi methos theo số Messages.get().

1

Bạn có thể viết riêng mình PlayPlugin và xử lý thực hiện play.PlayPlugin.getMessage(String, Object, Object...). Sau đó, bạn có thể chọn đúng tệp. Lớp play.i18n.Messages có thể được sử dụng làm nguồn cảm hứng để thực hiện phương pháp.

+0

Cảm ơn, Dựa trên câu trả lời cho trang này, tôi đã tìm thấy câu trả lời và được đăng ở trên. –

4

Không, nó không được hỗ trợ tại thời điểm này. Bạn có thể dễ dàng làm điều đó, hoặc trong một plugin (Look at MessagesPlugin) hoặc thậm chí sử dụng một bootstrap job với chú thích @onApplicationStartup

// From MessagesPlugin.java 

//default languange messages 
VirtualFile appDM = Play.getVirtualFile("conf/messages"); 
if(appDM != null && appDM.exists()) { 
    Messages.defaults.putAll(read(appDM)); 
} 

static Properties read(VirtualFile vf) { 
    if (vf != null) { 
     return IO.readUtf8Properties(vf.inputstream()); 
    } 
    return null; 
} 
+0

Cảm ơn, tôi có thể đạt được điều này khi tôi tải thư trong Bộ điều khiển. Nhưng làm thế nào để tôi ghi đè lên tính năng chức năng khi các tin nhắn được tải trong Bản mẫu sử dụng & {}. Làm ơn giúp tôi. –

+0

thư mẫu cũng sẽ hoạt động khi bạn đã thêm chúng vào Messages.defaults. Bạn đã thử không thành công chưa? – mericano1

+0

Thực tế yêu cầu của tôi là, ứng dụng sẽ có nhiều hơn một tệp thuộc tính có cùng khóa, nhưng các giá trị khác nhau. Nó có thể truy xuất thuộc tính từ một trong hai tệp dựa trên "ClientID" trong phiên. Nếu tôi thêm nó vào mặc định tôi không thể tìm thấy theo giá trị session.found một giải pháp khác.Đã tạo customMessagesPlugIn mở rộng MessagesPlugin và có HashMap bên trong nó, Tải tất cả các tệp trong bản đồ với Id ứng dụng dưới dạng khóa và Thuộc tính dưới dạng giá trị. Gọi cho Messages.get(), sẽ truy xuất giá trị dựa trên ID khách hàng trong phiên.Đối với mẫu tôi đã sử dụng thẻ tùy chỉnh để truy xuất thư. –

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