public ListResponse<TranslationItem> List(TranslationListRequest request) { var result = new ListResponse<TranslationItem>(); var availableKeys = GetAllAvailableLocalTextKeys(); var targetLanguageID = request.TargetLanguageID.TrimToNull(); var customTranslations = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); var textsFilePath = GetUserTextsFilePath(targetLanguageID); if (File.Exists(textsFilePath)) { var json = JsonConfigHelper.LoadConfig<Dictionary<string, JToken>>(textsFilePath); JsonLocalTextRegistration.ProcessNestedDictionary(json, "", customTranslations); foreach (var key in customTranslations.Keys) availableKeys.Add(key); } var sorted = new string[availableKeys.Count]; availableKeys.CopyTo(sorted); Array.Sort(sorted); var registry = Dependency.Resolve<ILocalTextRegistry>(); targetLanguageID = targetLanguageID ?? ""; var sourceLanguageID = request.SourceLanguageID.TrimToEmpty(); result.Entities = new List<TranslationItem>(); Func<string, string> effective = delegate (string key) { if (key.StartsWith("Navigation.")) { key = key.Substring("Navigation.".Length); return key.Split(new char[] { '/' }).Last(); } else if (key.StartsWith("Forms.") && key.Contains(".Categories.")) { return key.Split(new char[] { '.' }).Last().TrimToNull(); } return key; }; foreach (var key in sorted) { string customText; if (!customTranslations.TryGetValue(key, out customText)) customText = null; result.Entities.Add(new TranslationItem { Key = key, SourceText = registry.TryGet(sourceLanguageID, key) ?? effective(key), TargetText = registry.TryGet(targetLanguageID, key) ?? effective(key), CustomText = customText }); } return result; }
public ListResponse <TranslationItem> List(TranslationListRequest request) { return(new MyRepository().List(request)); }
public ListResponse <TranslationItem> List(TranslationListRequest request) { var result = new ListResponse <TranslationItem>(); var availableKeys = GetAllAvailableLocalTextKeys(); var targetLanguageID = request.TargetLanguageID.TrimToNull(); var customTranslations = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); var textsFilePath = GetUserTextsFilePath(targetLanguageID); if (File.Exists(textsFilePath)) { var json = JsonConfigHelper.LoadConfig <Dictionary <string, JToken> >(textsFilePath); JsonLocalTextRegistration.ProcessNestedDictionary(json, "", customTranslations); foreach (var key in customTranslations.Keys) { availableKeys.Add(key); } } var sorted = new string[availableKeys.Count]; availableKeys.CopyTo(sorted); Array.Sort(sorted); var registry = Dependency.Resolve <ILocalTextRegistry>(); targetLanguageID = targetLanguageID ?? ""; var sourceLanguageID = request.SourceLanguageID.TrimToEmpty(); result.Entities = new List <TranslationItem>(); Func <string, string> effective = delegate(string key) { if (key.StartsWith("Navigation.")) { key = key.Substring("Navigation.".Length); return(key.Split(new char[] { '/' }).Last()); } else if (key.StartsWith("Forms.") && key.Contains(".Categories.")) { return(key.Split(new char[] { '.' }).Last().TrimToNull()); } return(key); }; foreach (var key in sorted) { string customText; if (!customTranslations.TryGetValue(key, out customText)) { customText = null; } result.Entities.Add(new TranslationItem { Key = key, SourceText = registry.TryGet(sourceLanguageID, key) ?? effective(key), TargetText = registry.TryGet(targetLanguageID, key) ?? effective(key), CustomText = customText }); } return(result); }
public ListResponse<TranslationItem> List(TranslationListRequest request) { return new MyRepository().List(request); }