如何本地化YUI的日历组件?

时间:2010-09-02 13:03:40

标签: javascript asp.net yui

我在我的网站上使用YUI的日历组件。我已将代码插入ASP页面,如this example所示的Javascript所示。此示例显示如何为一个区域设置配置日历组件(在本例中为德语)。我想知道的是如何根据浏览器的语言为每个用户配置日历?

2 个答案:

答案 0 :(得分:0)

将特定语言的初始化代码(如您链接的页面所示)放入每种语言的单独文件中(例如“yui-calendar-de-DE.js”)。

然后在页面的代码隐藏中,根据用户的首选语言,包含正确的包含文件,例如使用以下内容:

string language = "en-US";
string[] languages = HttpContext.Current.Request.UserLanguages;
if (languages != null || languages.Length > 0)
  language = languages[0];

Page.ClientScript.RegisterClientScriptInclude(
  "yui-calendar-localization",
  ResolveClientUrl("~/scripts/yui-calendar-" + language + ".js")); 

更新

本地化文件(您应该自己创建)可能如下所示:

// this is yui-calendar-localization-de-DE.js

function initCalendar(cal)
{
  // Correct formats for Germany: dd.mm.yyyy, dd.mm, mm.yyyy
  YAHOO.example.calendar.cal1.cfg.setProperty("DATE_FIELD_DELIMITER", ".");
  YAHOO.example.calendar.cal1.cfg.setProperty("MDY_DAY_POSITION", 1);

  ...

  YAHOO.example.calendar.cal1.cfg.setProperty("WEEKDAYS_LONG",
    ["Sonntag", ... "Samstag"]);
}

然后在您创建日历的页面上,使用该功能本地化日历:

// create calendar
cal1 = new YAHOO.widget.Calendar("cal1","cal1Container", 
       { LOCALE_WEEKDAYS:"short", 
     START_WEEKDAY: 1, 
     MULTI_SELECT: true 
   } );
// localize it
initCalendar(cal1); 

答案 1 :(得分:0)

比我的其他答案中显示的更简单的解决方案是使用ScriptManager control's EnableScriptLocalization property

<asp:ScriptManager EnableScriptLocalization="True">
  <Scripts>
    <asp:ScriptReference Name="yui-calendar-localization.js" />
  </Scripts>
</asp:ScriptManager>

这将自动尝试包含脚本的本地化版本,例如yui-calendar-localization-de-DE.js