/// <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; }
/// <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) { }
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); }