【问题标题】:Add / switch between embedded / linked resources at running time在运行时在嵌入/链接资源之间添加/切换
【发布时间】:2013-01-16 14:45:53
【问题描述】:

我的 c# 代码中有 resources.resx 并填充了一些字符串:

Text1,"Some Text" 

我可以在运行时调用它

Properties.Resources.Text1

导致

"Some Text"

现在我想让 Text1 有不同的输出(例如另一种语言或其他东西) 这样Properties.Resources.Text1 就会产生"Different Text"

我怎样才能做到这一点?

EDIT1:我发现了this,但我正在寻找一种不同的资源文件方法。

【问题讨论】:

    标签: c# .net visual-studio properties


    【解决方案1】:

    恐怕您必须为其他文化添加另一个资源文件。看看这个线程 How to use localization in C#

    参考评论: 获取当前文化信息并像这样加载资源:

    Thread.CurrentThread.CurrentCulture.ClearCachedData();
    CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
    if(currentCulture.Name == "en-US")
       Console.WriteLine(resources.Text1);
    else if if(currentCulture.Name == "ja-JP")
       Console.WriteLine(resourcesJapan.Text1);
    

    【讨论】:

    • 我可以添加另一个我打算的资源文件,但是我如何告诉代码使用另一个资源文件
    • rm = new ResourceManager(typeof(Resource1));是我一直在寻找的东西。但是还是谢谢
    【解决方案2】:

    如果你想使用不同的Resource Files,你可以使用ResourceManager:

    ResourceManager rm;
    if (Configuration.Default.Culture == "en-US")
        rm = new ResourceManager(typeof(Resource1));
    else
        // ...
    String label = rm.GetString("Text1");
    

    在用户设置中保存文化,添加配置文件并定义用户变量。

    Configuration.Default.Culture= "en-US";
    Configuration.Default.Save();
    

    根据信息更新问题

    【讨论】:

    • 这可以工作,但我希望在程序启动时加载不同的资源文件或类似的东西
    • 如果你有不同的资源文件,你可以使用资源管理器。不过我可能错了:msdn.microsoft.com/de-de/library/yfsz7ac5.aspx
    • 您在添加 resx 文件时在添加文件向导中选择的名称,假设您已经在使用命名空间
    • 啊,谢谢,我在代码中一直拼错了,我想知道。现在可以了。
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多