/// <summary> /// Builds an <see cref="JsonLocalizationDictionary" /> from given json string. /// </summary> /// <param name="jsonString">Json string</param> public static JsonLocalizationDictionary BuildFromJsonString(string jsonString) { JsonLocalizationFile jsonFile; try { jsonFile = JsonConvert.DeserializeObject <JsonLocalizationFile>( jsonString, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); } catch (JsonException ex) { throw new SharePlatformException("无法分析JSON字符串。 " + ex.Message); } var cultureCode = jsonFile.Culture; if (string.IsNullOrEmpty(cultureCode)) { throw new SharePlatformException("语言JSON文件中的区域性为空。"); } var dictionary = new JsonLocalizationDictionary(CultureInfo.GetCultureInfo(cultureCode)); var dublicateNames = new List <string>(); foreach (var item in jsonFile.Texts) { if (string.IsNullOrEmpty(item.Key)) { throw new SharePlatformException("给定JSON字符串中的键为空。"); } if (dictionary.Contains(item.Key)) { dublicateNames.Add(item.Key); } dictionary[item.Key] = item.Value.NormalizeLineEndings(); } if (dublicateNames.Count > 0) { throw new SharePlatformException( "字典不能包含同一个键两次。有一些重复的名称: " + dublicateNames.JoinAsString(", ")); } return(dictionary); }
protected virtual JsonLocalizationDictionary CreateJsonLocalizationDictionary(string fileName) { return(JsonLocalizationDictionary.BuildFromFile(fileName)); }
protected virtual JsonLocalizationDictionary CreateJsonLocalizationDictionary(string jsonString) { return(JsonLocalizationDictionary.BuildFromJsonString(jsonString)); }