Esempio n. 1
0
        internal bool HasResource(string languageTag)
        {
            if (string.IsNullOrWhiteSpace(languageTag))
            {
                return(false);
            }

            var languageTagInstance = LanguageTagManager.Get(languageTag);

            return(HasResource(languageTagInstance));
        }
Esempio n. 2
0
        /// <summary>
        /// Get resource by given language tag
        /// </summary>
        /// <param name="languageTag"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public ITranslateResource GetResource(string languageTag)
        {
            if (string.IsNullOrWhiteSpace(languageTag))
            {
                return(null);
            }

            // ReSharper disable once InconsistentlySynchronizedField
            if (_langAndResourceMapCache.TryGetValue(languageTag, out var resource))
            {
                return(resource);
            }

            var languageTagInstance = LanguageTagManager.Get(languageTag);

            if (languageTagInstance == null)
            {
                throw new ArgumentException($"Cannot resolve an instance of LanguageTag by '{languageTag}'.");
            }

            if (_resources.TryGetValue(languageTagInstance, out resource))
            {
                return(resource);
            }

            var suitableTags = _fallbackExperimenter.GetSuitableTags(languageTagInstance).ToList();

            if (!suitableTags.Any())
            {
                throw new ArgumentException($"Cannot resolve a suitable LanguageTag by '{languageTag}'.");
            }

            var theMostSuitableTag = suitableTags.First();

            if (_resources.TryGetValue(theMostSuitableTag, out resource))
            {
                return(CacheAndReturn(languageTag, resource));
            }

            throw new ArgumentException($"Cannot resolve the resource by the given LanguageTag '{languageTag}'");
        }
Esempio n. 3
0
 /// <summary>
 /// Create a new instance of <see cref="Text"/>.
 /// </summary>
 /// <param name="text"></param>
 /// <param name="packageKey"></param>
 /// <param name="languageTag"></param>
 /// <param name="parameters"></param>
 public Text(string text, string packageKey, string languageTag, params object[] parameters)
     : this(text, packageKey, LanguageTagManager.Get(languageTag), parameters)
 {
 }
Esempio n. 4
0
 /// <summary>
 /// Create a new instance of <see cref="Text"/>.
 /// </summary>
 /// <param name="processor"></param>
 /// <param name="text"></param>
 /// <param name="packageKey"></param>
 /// <param name="languageTag"></param>
 /// <param name="parameters"></param>
 public Text(TranslationProcessor processor, string text, string packageKey, string languageTag, params object[] parameters)
     : this(processor, text, packageKey, LanguageTagManager.Get(languageTag), parameters)
 {
 }