public static bool TryGetErrorResource(ErrorResourceKey resourceKey, out ErrorResource resourceValue, string locale = null) { Contracts.CheckValue(resourceKey.Key, "action"); Contracts.CheckValueOrNull(locale, "locale"); if (locale == null) { locale = CurrentLocaleInfo.CurrentUILanguageName; Contracts.CheckNonEmpty(locale, "currentLocale"); } Dictionary <string, ErrorResource> errorResources; if (!ErrorResources.TryGetValue(locale, out errorResources)) { lock (dictionaryLock) { Dictionary <string, string> strings; LoadFromResource(locale, ResourceNamePrefix, typeof(TypeFromThisAssembly), ResourceFileName, ResourceFormat.Resw, out strings, out errorResources); Strings[locale] = strings; ErrorResources[locale] = errorResources; } } return(errorResources.TryGetValue(resourceKey.Key, out resourceValue) || (ExternalStringResources?.TryGetErrorResource(resourceKey, out resourceValue, locale) ?? false)); }
public static ErrorResource GetErrorResource(ErrorResourceKey resourceKey, string locale = null) { Contracts.CheckValue(resourceKey.Key, "action"); Contracts.CheckValueOrNull(locale, "locale"); ErrorResource resourceValue; // As foreign languages can lag behind en-US while being localized, if we can't find it then always look in the en-US locale if (!TryGetErrorResource(resourceKey, out resourceValue, locale) && !TryGetErrorResource(resourceKey, out resourceValue, FallbackLocale)) { Debug.WriteLine(string.Format("ERROR error resource {0} not found", resourceKey)); if (ShouldThrowIfMissing) { throw new System.IO.FileNotFoundException(resourceKey.Key); } } return(resourceValue); }
public static string Get(ErrorResourceKey resourceKey, string locale = null) { return(Get(resourceKey.Key, locale)); }