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