【问题标题】:How can I change default date time format from English to Farsi?如何将默认日期时间格式从英语更改为波斯语?
【发布时间】:2023-03-06 06:00:05
【问题描述】:

我想在支持的 Umbraco 中将显示日期时间格式从英语更改为波斯语。 我在 web.config 中应用了这个设置。但是没有用。 (属性选项卡中的日期选择器(发布时间和删除时间))

<globalization enableClientBasedCulture="true" requestEncoding="UTF-8" responseEncoding="UTF-8" uiCulture="fa" culture="fa"/>

我该怎么做?

【问题讨论】:

  • 如果您想了解更多关于 Asp.net 全球化的信息,请让我现在为您创建一个帖子
  • 我正在使用 Umbraco 版本 4.11.6
  • 您希望在设计时或运行时何时更改日期时间显示格式?

标签: c# asp.net web-config umbraco cultureinfo


【解决方案1】:

日期格式并未因我使用的语言而改变。

我在 umbraco_client\DateTimePicker\umbDateTimePicker.js 中看到硬编码的日期格式 根据需要更改然后更新客户端依赖项:

  1. App_Data\Temp\ClientDependency - 转储 CDJ 或在服务器“{ServerName}-{IDString}-map.xml”的相应 XML 文件中查找用于 umbDateTimePicker.js 的确切 CDJ,然后删除CDJ文件,即编译后的js,包括umbDateTimePicker.js
  2. 重新启动应用程序/appPool 以使用您的新设置触发新 ClientDependency 文件的生成。

我还在 umbraco.controls 中看到硬编码的日期时间格式字符串:umbraco.uicontrols.DatePicker.DateTimePicker.DateTime 设置器。

在各种 Umbraco 4.x 版本上完成。

【讨论】:

    【解决方案2】:

    Umbraco 后端的语言由登录的用户决定。截至目前,Umbraco 仅支持以下开箱即用的语言:

    • 丹麦语
    • 德语
    • 英语(英国)
    • 英语(美国)
    • 西班牙语
    • 法语
    • 希伯来语(以色列)
    • 意大利语
    • 日语
    • 韩语
    • 荷兰语
    • 挪威语
    • 波兰语
    • 葡萄牙语巴西
    • 俄语
    • 瑞典语
    • 中文(简单)

    根据为该特定用户选择的语言,日期将以适合该文化的格式显示。

    此论坛帖子Farsi and rtl support.... 提供了一些有关如何添加新翻译的信息,如果您感兴趣的话。

    【讨论】:

      【解决方案3】:

      当我搜索时,不幸的是 umbraco 不支持 Persian 日期时间格式,但您可以研究 FormatDateTime 并将外观更改为像 yyyy/mm/dd 这样的格式,但是对于像 فروردین اردیبهشت 这样的月份的全名,您应该创建您自己的控件或使用其他人员,例如PersianDate® (PD) 如果是开发自定义控件的代码,您可以学习PersianCalendar Class 还有这个微小的解决方案:^)

      如果您的日期是公历日期,那么首先您必须将其转换为 Jalali 日期,如下所示:

          PersianCalendar jc = new PersianCalendar();
          DateTime date = new DateTime(jc.GetYear(d), jc.GetMonth(d), jc.GetDayOfMonth(d));
          string print = string.Format("{0:0000}/{1:00}/{2:00}", date.Year, date.Month, date.Day);
      

      但如果您的日期已经是 Jalali 日期,那么只需使用:

          string print = string.Format("{0:0000}/{1:00}/{2:00}", date.Year, date.Month, date.Day);
      

      现在,如果您有一个包含 Jalali 日期(例如“1390/12/10”)的字符串,并且您想要获取它的日期名称,那就有点棘手了。

          public static string GetDayOfWeekName(this DateTime date)
          {
              PersianCalendar jc = new PersianCalendar();
              DateTime d = jc.ToDateTime(date.Year, date.Month, date.Day, 0, 0, 0, 0, PersianCalendar.PersianEra);
      
              switch (d.DayOfWeek)
              {
                  case DayOfWeek.Saturday: return "شنبه";
                  case DayOfWeek.Sunday: return "يکشنبه";
                  case DayOfWeek.Monday: return "دوشنبه";
                  case DayOfWeek.Tuesday: return "سه‏ شنبه";
                  case DayOfWeek.Wednesday: return "چهارشنبه";
                  case DayOfWeek.Thursday: return "پنجشنبه";
                  case DayOfWeek.Friday: return "جمعه";
                  default: return "";
              }
      

      首先您应该将其转换为公历日期,然后获取日期名称。 但不适用于月份名称:

          public static string GetMonthName(this DateTime date)
          {
              switch (date.Month)
              {
                  case 1: return "فررودين";
                  case 2: return "ارديبهشت";
                  case 3: return "خرداد";
                  case 4: return "تير‏";
                  case 5: return "مرداد";
                  case 6: return "شهريور";
                  case 7: return "مهر";
                  case 8: return "آبان";
                  case 9: return "آذر";
                  case 10: return "دي";
                  case 11: return "بهمن";
                  case 12: return "اسفند";
                  default: return "";
              }
          }
      

      如果我能提供更多有用的帖子,我将不胜感激,请告诉我!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 2022-06-23
        • 1970-01-01
        相关资源
        最近更新 更多