/// <summary> /// Uses an open database connection to recurse /// looking for the resource. /// Retrieves a resource entry based on the /// specified culture and resource /// key. The resource type is based on this instance of the /// StringResourceDALC as passed to the constructor. /// Resource fallback follows the same mechanism /// of the .NET /// ResourceManager. Ultimately falling back to the /// default resource /// specified in this class. /// </summary> /// <param name="culture">The culture to search with.</param> /// <param name="resourceKey">The resource key to find.</param> /// <returns>If found, the resource string is returned. /// Otherwise an empty string is returned.</returns> private string GetResourceByCultureAndKeyInternal(CultureInfo culture, string resourceKey) { if (string.IsNullOrEmpty(culture.Name)) culture = CultureInfo.CurrentUICulture; // we should only get one back, but just in case, we'll iterate reader results var resources = new DbFunctions().GetResourceValue(_resourcePage, culture.Name, resourceKey); // we should only get 1 back, this is just to verify the tables aren't incorrect if (resources == null || string.IsNullOrEmpty(resources.Value)) { // is this already fallback location? if (culture.Name == this._defaultResourceCulture) { // if we can't get a resource return an empty string return string.Empty; } // try to get parent culture culture = culture.Parent; if (string.IsNullOrEmpty(culture.Name)) { // there isn't a parent culture, change to neutral culture = new CultureInfo(this._defaultResourceCulture); } return this.GetResourceByCultureAndKeyInternal(culture, resourceKey); } return resources.Value; }
public void ExportFromDatabase(string exportPath) { var allRecords = new DbFunctions(_connectionString).GetAllResources(); foreach (ResourceRecord record in allRecords) { using (ResXResourceWriter writer = new ResXResourceWriter(GetExportPath(exportPath, record))) { writer.AddResource(record.Key, record.Value); } } }
public ListDictionary GetResourcesByCulture(CultureInfo culture) { // make sure we have a default culture at least if (culture == null || culture.Name.Length == 0) { culture = new CultureInfo(this._defaultResourceCulture); } // create the dictionary ListDictionary resourceDictionary = new ListDictionary(); // gather resource and create the dictionary var resources = new DbFunctions().GetResourcesForPage(culture.Name, _resourcePage); resources.ForEach(r => resourceDictionary.Add(r.Key, r.Value)); return resourceDictionary; }