Как локализовать календарную составляющую YUI? - PullRequest
0 голосов
/ 02 сентября 2010

Я использую компонент календаря YUI на своем веб-сайте.Я вставил код на страницу ASP в виде Javascript, как , этот пример демонстрирует.В этом примере показано, как настроить компонент календаря для одной локали (в нашем случае это немецкий).Я хотел бы знать, как настроить календарь для каждого пользователя в зависимости от языка его браузера?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2010

Еще более простым решением, чем показано в моем другом ответе, было бы использование свойства EnableScriptLocalization элемента управления ScriptManager :

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

При этом будет автоматически пытаться включить локализованную версию сценарияНапример, yui-calendar-localization-de-DE.js.

0 голосов
/ 02 сентября 2010

Поместите код инициализации для конкретного языка (как показано на странице, на которую вы ссылаетесь) в отдельные файлы для каждого языка (например, "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); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...