Exemplo n.º 1
0
        /// <summary>
        /// Create a new instance of <see cref="TranslatePackage"/>
        /// </summary>
        /// <param name="packageKey"></param>
        /// <param name="fallbackExperimenter"></param>
        public TranslatePackage(string packageKey, FallbackExperimenter fallbackExperimenter)
        {
            if (packageKey.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(packageKey));
            }

            _fallbackExperimenter    = fallbackExperimenter;
            _resources               = new Dictionary <LanguageTag, ITranslateResource>();
            _langAndResourceMapCache = new Dictionary <string, ITranslateResource>();
            _usedLanguageTags        = new List <LanguageTag>();

            PackageKey  = packageKey;
            IsAnonymous = packageKey == TranslationManager.ANONYMOUS_PACKAGE_KEY;
        }
Exemplo n.º 2
0
 /// <summary>
 /// Create a new anonymous instance of <see cref="TranslatePackage"/>
 /// </summary>
 /// <param name="fallbackExperimenter"></param>
 public TranslatePackage(FallbackExperimenter fallbackExperimenter)
     : this(TranslationManager.ANONYMOUS_PACKAGE_KEY, fallbackExperimenter)
 {
 }
Exemplo n.º 3
0
        public static bool FallbackMode(LanguageTag languageTagInstance, string resourceKey,
                                        IReadOnlyDictionary <LanguageTag, ITranslateResource> resources, FallbackExperimenter experimenter)
        {
            if (resources.TryGetValue(languageTagInstance, out var resource) && resource.CanTranslate(resourceKey))
            {
                return(true);
            }

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

            if (!suitableTags.Any())
            {
                return(false);
            }

            foreach (var tag in suitableTags)
            {
                if (resources.TryGetValue(tag, out resource) && resource.CanTranslate(resourceKey))
                {
                    return(true);
                }
            }

            return(false);
        }