Пример #1
0
        public virtual string ConvertToLocalString(DateTime?date, string format, string nullText = null)
        {
            var localDate = ConvertToLocal(date);

            if (!localDate.HasValue)
            {
                return(nullText);
            }

            // If the configured current calendar is different from the default calendar
            // of the configured current culture we must override the conversion process.
            // We do this by using a custom CultureInfo modified to use GregorianCalendar
            // (means no calendar conversion will be performed as part of the string
            // formatting) and instead perform the calendar conversion ourselves.

            var cultureInfo          = CurrentCulture;
            var usingCultureCalendar = CurrentCulture.DateTimeFormat.Calendar.GetType().IsInstanceOfType(CurrentCalendar);

            if (!usingCultureCalendar)
            {
                cultureInfo = (CultureInfo)CurrentCulture.Clone();
                cultureInfo.DateTimeFormat.Calendar = new GregorianCalendar();
                var calendar = CurrentCalendar;
                localDate = new DateTime(calendar.GetYear(localDate.Value), calendar.GetMonth(localDate.Value), calendar.GetDayOfMonth(localDate.Value), calendar.GetHour(localDate.Value), calendar.GetMinute(localDate.Value), calendar.GetSecond(localDate.Value));
            }

            return(localDate.Value.ToString(format, cultureInfo));
        }
Пример #2
0
        public void SetLanguage(CultureInfo culture)
        {
            if (!culture.Equals(CultureInfo.CurrentCulture))
            {
                CultureInfo.CurrentCulture = culture;
            }

            if (CurrentCulture == null || !CurrentCulture.Equals(culture))
            {
                CurrentCulture = culture;
                CultureInfo.DefaultThreadCurrentCulture   = culture;
                CultureInfo.DefaultThreadCurrentUICulture = culture;

                string fileName = $"{_resourcesAssembly.GetName().Name}.Resources.{culture.Name}.json";

                Resources = GetKeysFromCulture(culture.Name, fileName);

                if (Resources == null)
                {
                    throw new FileNotFoundException($"There is no language files for '{culture.Name}' existing in the Resources folder within '{_resourcesAssembly.GetName().Name}' assembly");
                }

                LanguageChanged?.Invoke(this, culture);
            }
        }
Пример #3
0
        //[DisableValidation]
        public ActionResult EditStatusRescheduled(Sls_Task _objTask)
        {
            _objTask.ModifiedBy = CurrentUser.NameIdentifierInt64;
            _objTask.ModifiedOn = DateTime.Now;
            var result = this._TaskBAL.ChangeStatus_RescheduleBAL(_objTask);

            if (result == -1)
            {
                ModelState.AddModelError(lr.ErrorServerError, lr.ErrorServerError);
            }
            else
            {
                var results = this._TaskBAL.Task_GetBALbyOrganization(CurrentCulture.ToString(), CurrentUser.CompanyID.ToString(), CurrentUser.NameIdentifierInt64, _objTask.ID);
                var r       = results.First();
                Library.TMS.Notifications nof = new Library.TMS.Notifications();
                nof.NotificationText = "Your Task has rescheduled to " + _objTask.DueDate.Date;
                nof.Organization_ID  = CurrentUser.CompanyID;
                nof.ToUser           = Convert.ToInt64(r.AssignedTo);
                nof.FromUser         = CurrentUser.NameIdentifierInt64;
                nof.ActionUrl        = "../Task/Detail?pid=" + _objTask.ID;
                nof.Event_ID         = 3;
                nof.CreatedDate      = DateTime.Now;
                BALNotification.create_NotificationsBAL(nof);
                var notificationHub = GlobalHost.ConnectionManager.GetHubContext <NotificationHub>();
                notificationHub.Clients.All.notify("added");
            }
            var resultData = new[] { _objTask };

            return(RedirectToAction("Index"));
        }
Пример #4
0
        public virtual DateTime?ConvertFromLocalString(string dateString, string timeString)
        {
            if (String.IsNullOrWhiteSpace(dateString) && String.IsNullOrWhiteSpace(timeString))
            {
                return(null);
            }

            // If the configured current calendar is different from the default calendar
            // of the configured current culture we must override the conversion process.
            // We do this by using a custom CultureInfo modified to use GregorianCalendar
            // (means no calendar conversion will be performed as part of the string
            // parsing) and instead perform the calendar conversion ourselves.

            var cultureInfo          = CurrentCulture;
            var usingCultureCalendar = CurrentCulture.DateTimeFormat.Calendar.GetType().IsInstanceOfType(CurrentCalendar);

            if (!usingCultureCalendar)
            {
                cultureInfo = (CultureInfo)CurrentCulture.Clone();
                cultureInfo.DateTimeFormat.Calendar = new GregorianCalendar();
            }

            var localDate     = !String.IsNullOrWhiteSpace(dateString) ? DateTime.Parse(dateString, cultureInfo) : new DateTime(1980, 1, 1);
            var localTime     = !String.IsNullOrWhiteSpace(timeString) ? DateTime.Parse(timeString, cultureInfo) : new DateTime(1980, 1, 1, 12, 0, 0);
            var localDateTime = new DateTime(localDate.Year, localDate.Month, localDate.Day, localTime.Hour, localTime.Minute, localTime.Second);

            if (!usingCultureCalendar)
            {
                var calendar = CurrentCalendar;
                localDateTime = calendar.ToDateTime(localDateTime.Year, localDateTime.Month, localDateTime.Day, localDateTime.Hour, localDateTime.Minute, localDateTime.Second, localDateTime.Millisecond);
            }

            return(ConvertFromLocal(localDateTime));
        }
Пример #5
0
 public override int GetHashCode()
 {
     unchecked
     {
         return(CurrentCulture.GetHashCode() * CurrentUICulture.GetHashCode() * ManagedThreadId.GetHashCode()
                * Priority.GetHashCode() * ThreadName.GetHashCode() * ThreadState.GetHashCode()
                * IsBackground.GetHashCode() * IsThreadPoolThread.GetHashCode());
     }
 }
Пример #6
0
        /// <summary>
        /// Looks up a translated string for a resource.
        /// </summary>
        /// <param name="type">Resource type.</param>
        /// <param name="rawData">Raw API data; provides the necessary data (ID, names, etc.) for a look-up.</param>
        /// <returns></returns>
        public string Lookup(TranslationType type, object rawData)
        {
            if (!EnableTranslations || CurrentCulture.StartsWith("ja"))
            {
                Debug.WriteLine(this.GetType().Name + ": lookup called for {0} but translations are disabled or culture is Japanese.", type);
                return(null);
            }

            return(TranslationDataProvider.Lookup(type, rawData));
        }
Пример #7
0
        //public static string GetLocalizedName(object obj,string EnglishProperty, string ArabicProperty)
        //{
        //    System.Reflection.PropertyInfo engObj = obj.GetType().GetProperty(EnglishProperty);
        //    System.Reflection.PropertyInfo arObj = obj.GetType().GetProperty(ArabicProperty);

        //    if (CurrentCulture.ToLower().Split('-')[0] == "en")
        //    {
        //        if (engObj != null && engObj.GetValue(obj) != null)
        //            return engObj.GetValue(obj).ToString();

        //        if (arObj != null && arObj.GetValue(obj) != null)
        //            return arObj.GetValue(obj).ToString();
        //    }
        //    else
        //    {
        //        if (arObj != null && arObj.GetValue(obj) != null)
        //            return arObj.GetValue(obj).ToString();

        //        if (engObj != null && engObj.GetValue(obj) != null)
        //            return engObj.GetValue(obj).ToString();
        //    }

        //    return "";
        //}

        #region  common

        public static string GetLocalizedName(string english, string arabic)
        {
            if (CurrentCulture.ToLower().Split('-')[0] == "en")
            {
                return(english);
            }
            else
            {
                return(arabic);
            }

            return("");
        }
Пример #8
0
        public static String GetLocalValue(this Object obj, String invariantPropertyName)
        {
            var propertyName = CurrentCulture.PropertyName(invariantPropertyName);
            var property     = obj.GetType().GetProperty(propertyName);

            if (property != null)
            {
                var value = property.GetValue(obj, null);

                return(value != null?value.ToString() : null);
            }
            else
            {
                return(null);
            }
        }
Пример #9
0
        public override void Execute()
        {
            if (_languageProvider != null)
            {
                var langList = new LanguageList();
                _language = langList.Search(_languageProvider.GetLanguageId());
            }
            else if (!string.IsNullOrEmpty(_langId))
            {
                var langList = new LanguageList();
                _language = langList.Search(_langId);
            }

            CurrentCulture.Set(_language.WindowsCultureName);
            UserLanguage.Set(_language);
        }
Пример #10
0
 public override void Execute()
 {
     //Aktuelle Culture auf de-CH setzen, da Menu-Server Englisch sind
     CurrentCulture.Set("de-CH");
 }
Пример #11
0
 public object GetFormat(Type formatType)
 {
     return(CurrentCulture.GetFormat(formatType));
 }
        public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
        {
            var responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage);

            try
            {
                switch (requestMessage.Content.ToLower().Trim())
                {
                //case "g":
                //    responseMessage.Content = GetSPFBAUserNamePassword();
                //    break;
                case "debug":
                    SPFBAUser.Debug = !SPFBAUser.Debug;
                    SPFBAUser.Save <WeChatUser>();
                    responseMessage.Content = GetWelcomeInfo(CurrentCulture);
                    break;

                case "h":
                    responseMessage.Content = GetWelcomeInfo(CurrentCulture);
                    break;

                case "x":
                    SPFBAUser.SaveMessageToPublic = !SPFBAUser.SaveMessageToPublic;
                    SPFBAUser.Save <WeChatUser>();
                    responseMessage.Content = CurrentCulture.Equals(new CultureInfo("zh-CN"))?
                                              string.Concat("后续消息将", SPFBAUser.SaveMessageToPublic ? "公开" : "私有", "保存") :
                                              string.Concat("Future message will be saved ", SPFBAUser.SaveMessageToPublic ? "publicly" : "privately");
                    break;

                //TODO: 这个地方可以是 x 返回当前状态,让后 xx 更改,或者搞一个命令 q, 返回一系列的状态,然后有提示切换
                //case "s":
                //按s 返回所有AppearInWeChat 的 WeChatResult Managed Property
                //然后, user property 里面可以保留一个 最后 搜索关键字
                //可以设置一个WeChat 常用搜索列表
                //点S进入搜索状态,在UserProperty 里面设置标记,返回常用搜索列表
                //如果用户没点常用搜索项,而是输入任意非命令? 字符串,则返回搜索此字符串结果,并把此字符串存入 user property 最后搜索关键字
                case "cn":
                    CultureInfo c = new CultureInfo("zh-CN");
                    CurrentCulture          = c;
                    responseMessage.Content = GetWelcomeInfo(c);
                    //NeedToSetCultureInfo = c;
                    break;

                case "en":
                    CultureInfo e = new CultureInfo("en-US");
                    CurrentCulture          = e;
                    responseMessage.Content = GetWelcomeInfo(e);
                    //NeedToSetCultureInfo = e;
                    break;

                case "ls":     //list priviate message
                case "lg":     //list public message
                    string nextDateTime;

                    responseMessage.Content = GetLatestMessageSubject(DateTime.Now, out nextDateTime, requestMessage.Content.ToLower().Trim().Equals("lg"));
                    if (!string.IsNullOrEmpty(nextDateTime))
                    {
                        responseMessage.Content += (System.Environment.NewLine
                                                    + MessageLink(requestMessage.Content.ToLower().Trim() + HttpUtility.UrlEncode(nextDateTime), "9", "更早的留言"));
                    }
                    break;

                //case "ps":
                //case "pg":
                //    var responseMessageNews = CreateResponseMessage<ResponseMessageNews>();

                //    return responseMessageNews;
                //    break;
                case "wol":
                    if (SPFBAUserName.Equals("233173287"))
                    {
                        new WakeOnLine().WOLMyDEV();
                    }
                    break;

                default:
                    DateTime next;
                    string   nextDateTime1;
                    if ((requestMessage.Content.ToLower().StartsWith("lg") || requestMessage.Content.ToLower().StartsWith("ls")) && DateTime.TryParse(HttpUtility.UrlDecode(requestMessage.Content.Substring(2, requestMessage.Content.Length - 2)), out next))
                    {
                        responseMessage.Content = GetLatestMessageSubject(next, out nextDateTime1, requestMessage.Content.ToLower().Trim().StartsWith("lg"));
                        if (!string.IsNullOrEmpty(nextDateTime1))
                        {
                            responseMessage.Content += (System.Environment.NewLine
                                                        + MessageLink(requestMessage.Content.ToLower().Substring(0, 2) + HttpUtility.UrlEncode(nextDateTime1), "9", "更早的留言"));
                        }
                        break;
                    }

                    responseMessage.Content = WriteUserWeixinMessageToSP(SPFBAUserName, requestMessage.Content);
                    //NeedToWriteMessageToSP = true;
                    break;
                }
            }
            catch (WeChatException ex)
            {
                responseMessage.Content = ex.Message;
            }
            return(responseMessage);
        }
Пример #13
0
 public override void Execute()
 {
     CurrentCulture.Reset();
 }
Пример #14
0
 public override void Execute()
 {
     CurrentCulture.Set(_cultureName);
 }
Пример #15
0
 public static T Localize <T>() where T : new()
 {
     return(CurrentCulture.Get <T>());
 }