如何创建多语言Web并将值从数据库设置为Resource.resx

时间:2016-12-25 09:31:39

标签: asp.net resourcedictionary

我想将我的网页翻译成不同的语言,而且这个词的价值在数据库中,

如何从数据库表中设置资源值,不同表中的每个值

1 个答案:

答案 0 :(得分:1)

如果我做得对,您希望从您的DataBase 填充您的资源文件动态。您可以通过在项目中创建.resx文件来实现这一目标,下一步将使用以下代码添加/更新其内容:

public static void AddOrUpdateResource(string key, string value)
        {
            var path = @"YourResourceFilePath.resx";
            var resx = new List<DictionaryEntry>();
            using (var reader = new ResXResourceReader(path))
            {
                resx = reader.Cast<DictionaryEntry>().ToList();
                var existingResource = resx.Where(r => r.Key.ToString() == key).FirstOrDefault();
                if (existingResource.Key == null && existingResource.Value == null) // NEW!
                {
                    resx.Add(new DictionaryEntry() { Key = key, Value = value });
                }
                else // MODIFIED RESOURCE!
                {
                    var modifiedResx = new DictionaryEntry() { Key = existingResource.Key, Value = value };
                    resx.Remove(existingResource);  // REMOVING RESOURCE!
                    resx.Add(modifiedResx);  // AND THEN ADDING RESOURCE!
                }
            }
            using (var writer = new ResXResourceWriter(path))
            {
                resx.ForEach(r =>
                {
                    // Again Adding all resource to generate with final items
                    writer.AddResource(r.Key.ToString(), r.Value.ToString());
                });
                writer.Generate();
            }
        }

然后,您可以调用此方法并传递DataBase

中的键值