コード例 #1
0
        public string GetTextString(
            string textString,
            string fallback = "",
            IDictionary <string, string> replacements             = null,
            IDictionary <Regex, MatchEvaluator> regexReplacements = null,
            string libName       = null,
            bool overridePrefix  = false,
            bool caseInsensitive = true)
        {
            TextstringHandler handler = null;

            try
            {
                handler = libName == null
                    ? _handlers.First().Value
                    : _handlers[libName];
            }
            catch (Exception ex)
            {
                _logger.Error(new ExceptionData(ex,
                                                $"[TextStringHelper] Failed to get textStringHandler for textString {textString}")
                {
                    { "libName", libName },
                    { "libs", _handlers.Keys },
                    { "stringName", textString },
                    { "overridePrefix", overridePrefix },
                    { "fallback", fallback }
                });
            }

            return(ResolveTextString(handler, textString, fallback, replacements, regexReplacements, overridePrefix,
                                     caseInsensitive));
        }
コード例 #2
0
        public string GetTextString <TLibKey>(
            string textString,
            string fallback = "",
            IDictionary <string, string> replacements             = null,
            IDictionary <Regex, MatchEvaluator> regexReplacements = null,
            TLibKey libName      = default,
            bool overridePrefix  = false,
            bool caseInsensitive = true)
        {
            TextstringHandler handler = null;

            try
            {
                if (!_handlers.TryGetValue(libName.ToString() ?? "", out handler))
                {
                    handler = _handlers.First().Value;
                }
            }
            catch (Exception ex)
            {
                _logger.Error(new ExceptionData(ex,
                                                $"[TextStringHelper] Failed to get textStringHandler for textString {textString}")
                {
                    { "libName", libName },
                    { "libs", _handlers.Keys },
                    { "stringName", textString },
                    { "overridePrefix", overridePrefix },
                    { "fallback", fallback }
                });
            }

            return(ResolveTextString(handler, textString, fallback, replacements, regexReplacements, overridePrefix,
                                     caseInsensitive));
        }
コード例 #3
0
        private string ResolveTextString(
            TextstringHandler handler,
            string textString,
            string fallback = "",
            IDictionary <string, string> replacements             = null,
            IDictionary <Regex, MatchEvaluator> regexReplacements = null,
            bool overridePrefix  = false,
            bool caseInsensitive = true)
        {
            var result = fallback;

            if (handler != null)
            {
                try
                {
                    result = handler.GetText(textString, overridePrefix) ?? fallback;
                }
                catch (Exception ex)
                {
                    _logger.Warning(new ExceptionData(ex, $"[TextStringHelper] Failed to load textString {textString}")
                    {
                        { "stringName", textString },
                        { "overridePrefix", overridePrefix },
                        { "fallback", fallback }
                    });
                    result = fallback;
                }
            }

            if (replacements != null)
            {
                foreach (var(search, value) in replacements)
                {
                    result = Regex.Replace(
                        result,
                        Regex.Escape(search),
                        value,
                        caseInsensitive ? RegexOptions.IgnoreCase : RegexOptions.None);
                }
            }

            if (regexReplacements != null)
            {
                foreach (var(regex, evaluator) in regexReplacements)
                {
                    if (regex != null)
                    {
                        result = regex.Replace(result, evaluator);
                    }
                }
            }

            return(result);
        }