2010-10-20 25 views
5

Hallo, câu hỏi wicket i18n: Tôi có tệp javaScript, chứa chuỗi mà tôi muốn bản địa hóa. Lý tưởng nhất là tôi muốn bản địa hóa toàn bộ tệp. Một cái gì đó nhưCách bản địa hóa tệp javascript trong wicket

  • my.js
  • my_de.js
  • my_fr.js
  • ...

nơi wicket tự động chọn tập quyền js, vì nó làm với các tập tin bất động sản .

Bất kỳ ai biết cách thực hiện điều đó?

Trả lời

8

Vượt qua miền địa phương đến tham khảo tài nguyên:

class MyPage extends WebPage implements IHeaderContributor { 
    public void renderHead(IHeaderResponse response) { 
     response.renderJavascriptReference(new ResourceReference(
     MyPage.class, "my.js", getLocale(), getStyle())); 
    } 
} 
+0

Tôi đã đưa ra một giải pháp sử dụng PackageResource, nhưng bạn thậm chí còn ngắn hơn. Cảm ơn rất nhiều. – nebenmir

0

Các giải pháp thực tế hoạt động nếu Strings đã có trong Javascript files.But gì xảy ra khi bạn đã khu trú Strings trong cơ sở dữ liệu của bạn và muốn vượt qua chúng để mã Javascript của bạn? Bạn có thể tạo một tệp XML có tên YourPageJS.xml và lưu mã Javascript ở đó được một số khóa xác định.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> 

    <entry key="showModal"> 
    <![CDATA[ 

     $(''#{0}'').modal(''show'',{1}); 

    ]]> 
    </entry> 
</properties> 

Bạn gọi mã này thông qua các phương pháp sau đây được đặt trong một lớp tiện ích, thông qua các thông số của bạn:

public static String getJsByClass(Class clazz, String name, Object... params) 
    { 
     ResourceBundle resources = ResourceBundle.getBundle(clazz.getName() 
       + "JS", Locale.getDefault(), 
       new XMLResourceBundleControl()); 

     String mesaj = resources.getString(name); 
     mesaj = MessageFormat.format(mesaj, params); 

     return mesaj; 
    } 

Cuộc gọi trông như thế này:

YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"); 

nơi các thông số có thể là các chuỗi được bản địa hóa của bạn.Trong trường hợp trên, thông số đầu tiên là Id đánh dấu. Bạn có thể thêm nó vào đầu html của mình như sau:

response.render(JavaScriptHeaderItem.forScript(YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"), "yourJSid")); (Wicket 6)

Ngoài ra, trong XML bạn phải chuyển đổi hai nhân vật: ' trở thành ''{ trở thành '{' vì lý do phân tích cú pháp.

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