Пример #1
0
        public static void Translate <T>(T obj, string translationData, string languageId = null) where T : class, new()
        {
            if (obj != null)
            {
                string requestLanguage = "";
                if (httpContextAccessor != null && httpContextAccessor.HttpContext != null && httpContextAccessor.HttpContext.Request != null && httpContextAccessor.HttpContext.Request.Headers != null)
                {
                    requestLanguage = httpContextAccessor.HttpContext.Request.Headers.Any(x => x.Key == "languageid")
                        ? httpContextAccessor.HttpContext.Request.Headers.FirstOrDefault(x => x.Key == "languageid").Value.ToString().ToUpper()
                        : "ES";
                }
                else
                {
                    requestLanguage = "ES";
                }

                if (!string.IsNullOrEmpty(translationData) && TranslateUtility.IsValidJson(translationData))
                {
                    Dictionary <string, List <TranslateData> > dictionary = JsonConvert.DeserializeObject <Dictionary <string, List <TranslateData> > >(translationData) ?? new Dictionary <string, List <TranslateData> >();
                    var translateProperties = obj.GetType().GetProperties().Where(t => t.GetCustomAttributes(typeof(TranslateAttribute), true).Length > 0).ToList();
                    foreach (var prop in translateProperties)
                    {
                        var    currentDictionary = dictionary.ContainsKey(requestLanguage.ToUpper()) ? dictionary.GetValueOrDefault(requestLanguage) : new List <TranslateData>();
                        string value             = currentDictionary.FirstOrDefault(x => x.PropertyName.ToLower() == prop.Name.ToLower())?.Value ?? "";
                        prop.SetValue(obj, value);
                    }
                }
            }
        }
Пример #2
0
        public static string SaveTranslation <T>(T obj, string translationData) where T : class, new ()

        {
            string requestLanguage = "";

            if (httpContextAccessor != null && httpContextAccessor.HttpContext != null && httpContextAccessor.HttpContext.Request != null && httpContextAccessor.HttpContext.Request.Headers != null)
            {
                requestLanguage = httpContextAccessor.HttpContext.Request.Headers.Any(x => x.Key == "languageid")
                           ? httpContextAccessor.HttpContext.Request.Headers.FirstOrDefault(x => x.Key == "languageid").Value.ToString().ToUpper()
                           : "ES";


                if (string.IsNullOrEmpty(translationData) || !TranslateUtility.IsValidJson(translationData))
                {
                    translationData = "";
                }
                Dictionary <string, List <TranslateData> > dictionary = JsonConvert.DeserializeObject <Dictionary <string, List <TranslateData> > >(translationData) ?? new Dictionary <string, List <TranslateData> >();

                var translateProperties = obj.GetType().GetProperties().Where(t => t.GetCustomAttributes(typeof(TranslateAttribute), true).Length > 0).ToList();
                foreach (var prop in translateProperties)
                {
                    var  currentDictionary = dictionary.ContainsKey(requestLanguage.ToUpper()) ? dictionary.GetValueOrDefault(requestLanguage) : new List <TranslateData>();
                    bool existData         = currentDictionary.Exists(x => x.PropertyName.ToLower() == prop.Name.ToLower());
                    var  currentProp       = new TranslateData()
                    {
                        PropertyName = prop.Name,
                        Value        = prop.GetValue(obj).ToString()
                    };
                    if (existData)
                    {
                        int index = currentDictionary.FindIndex(x => x.PropertyName.ToLower() == currentProp.PropertyName.ToLower());
                        if (index >= 0)
                        {
                            currentDictionary.RemoveAt(index);
                        }
                    }
                    currentDictionary.Add(currentProp);

                    if (dictionary.ContainsKey(requestLanguage.ToUpper()))
                    {
                        dictionary[requestLanguage.ToUpper()] = currentDictionary;
                    }
                    else
                    {
                        dictionary.Add(requestLanguage.ToUpper(), currentDictionary);
                    }
                }

                translationData = JsonConvert.SerializeObject(dictionary);
                return(translationData);
            }
            return("");
        }