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;
        }
示例#2
0
 public ListResponse <TranslationItem> List(TranslationListRequest request)
 {
     return(new MyRepository().List(request));
 }
示例#3
0
        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);
 }