【问题标题】:Localizing labels in org.apache.wicket.extensions.yui.calendar.DatePicker在 org.apache.wicket.extensions.yui.calendar.DatePicker 中本地化标签
【发布时间】:2009-08-20 05:43:14
【问题描述】:

有谁知道如何本地化 org.apache.wicket.extensions.yui.calendar.DatePicker 的“月”、“年”、“好”和“取消”标签?

根据API你可以重写localize(Map)方法来设置本地化字符串,但是我没找到对应属性的名称。

【问题讨论】:

  • 没有明确的解决方案,只是添加了一个链接列表供您探索...
  • 查看 DatePicker 的来源,似乎至少月/年标签与组件的语言环境设置相关联。除此之外,我不确定其他标签是从哪里来的。

标签: java localization yui datepicker wicket


【解决方案1】:

根据this,您可以通过覆盖 DatePicker 类的配置方法来本地化标签:

    public class DatePicker extends org.apache.wicket.extensions.yui.calendar.DatePicker {

    @Override
    protected void configure(Map<String, Object> widgetProperties) {
        super.configure(widgetProperties);

        /*
        * var navConfig = {
        *   strings: {
        *   month:"Calendar Month",
        *   year:"Calendar Year",
        *   submit: "Submit",
        *   cancel: "Cancel",
        *   invalidYear: "Please enter a valid year"
        *   },
        * monthFormat: YAHOO.widget.Calendar.SHORT,
        * initialFocus: "month"
        * }
        */

        Map<String, Object> strings = new HashMap<String, Object>();
        strings.put("month", "Месяц");
        strings.put("year", "Год");
        strings.put("submit", "Ok"); // put label for 'Okay' button
        strings.put("cancel", "Отмена"); // put label for 'Cancel' button
        strings.put("invalidYear", "Введите корректный год");

        Map<String, Object> props = new HashMap<String, Object>();
        props.put("strings", strings); // pass localization related parameters
        props.put("monthFormat", "YAHOO.widget.Calendar.SHORT");
        props.put("initialFocus", "year");

        widgetProperties.put("navigator", props);
    }
}

希望您会发现这段代码 sn-p 有用。

【讨论】:

    【解决方案2】:

    ticket 754 添加对localization 的支持。

    也许patch introduced then能给你一些线索?它参考:

    src/main/java/org/apache/wicket/extensions/yui/calendar/locale/DatePicker_de.properties
    

    与:

    DATE_FIELD_DELIMITER=x
    MDY_DAY_POSITION=1
    MDY_MONTH_POSITION=2
    MDY_YEAR_POSITION=3
    MD_DAY_POSITION=1
    MD_MONTH_POSITION=2
    
    MONTHS_SHORT=Jan,Feb,M\u00E4r,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
    
    MONTHS_LONG=Januar,Februar,M\u00E4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember
    WEEKDAYS_1CHAR=S,M,D,M,D,F,S
    WEEKDAYS_SHORT=So,Mo,Di,Mi,Do,Fr,Sa
    WEEKDAYS_MEDIUM=Son,Mon,Die,Mit,Don,Fre,Sam
    WEEKDAYS_LONG=Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag
    

    关于标签本身的本地化,你可以试试:

    【讨论】:

    • 允许本地化实际月份和工作日。我正在寻找的是标签“月”、“年”、“好的”和“取消”的本地化(后两个是按钮标签)。
    • @tehvan:“我正在寻找的是标签的本地化”......你在之前的评论中已经告诉我了!对于那个很抱歉。仍在寻找正确的答案。
    【解决方案3】:

    我认为您在谈论日历导航器上的标签。这个example 可能会有所帮助。

    【讨论】:

      【解决方案4】:

      我认为这个解决方案很好:

      protected static final String[] NAVIGATOR_LOCALIZATION_KEYS = {
          "month", "year", "submit", "cancel", "invalidYear",
      };
      
      In overridden method u should write: 
      
      super.configure(widgetProperties, response, initVariables);
          Map<String, String> strings = MapBuilder.newHashMap();
          for (String key : NAVIGATOR_LOCALIZATION_KEYS) {
              strings.put(key, LocalizationUtils.getString(key));
          }
          widgetProperties.put(
              "navigator", Collections.singletonMap("strings", strings)
          );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 2018-11-22
        • 2013-07-10
        • 1970-01-01
        • 2017-11-08
        • 2021-02-17
        • 2013-01-18
        相关资源
        最近更新 更多