【问题标题】:Localization in C#C#中的本地化
【发布时间】:2016-03-04 19:26:16
【问题描述】:

我可以本地化一个私有的 const 字符串吗? 例子: 我有一个Strings.resx 文件,文件中有一个名为“Name”的字符串。我可以将它用作string name = Strings.Name; 但是,我可以将“名称”分配给私有常量字符串,例如private const string name = Strings.Name; 吗?我试过但失败了,所以我想知道可能这样做吗?换句话说,如何本地化私有 const 字符串?

另外,我可以在本地化文件中添加参数吗? 例子: 如果我想用MessageBox.Show(user.name + " cannot be created for " + group.name + ". Already has same user name in the group.")等参数创建一个消息框我现在的解决方案是在本地化文件中创建2个字符串string1包含" cannot be created for "string2包含". Already has same user name in the group."我想知道还有其他简单的方法做吗?

【问题讨论】:

  • 第二个:存储为格式,然后调用string.Format。例如Strings.Message = "{0} cannot be created for {1}. Blabla
  • 谢谢你的帮助,但是我应该把甲酸盐放在哪里呢? “Strings.resx”还是“MessageBox”?我尝试在“Strings.resx”文件中放置“{0} 无法为 {1} 创建”并添加到消息框,如“MessageBox.Show(Strings.Name, user.name);”但它不起作用。

标签: c# string localization constants


【解决方案1】:

我可以本地化一个私有 const 字符串吗?

不,如果它是可本地化的,它就不是恒定的......
您可以做的是使该字段只读,然后您可以在构造函数中分配一个值或使用字段初始值设定项。

我可以在本地化文件中添加参数吗

是的,你已经知道怎么做...
只是你没有正确使用它

下面的代码示例显示:

如果你有资源文件

using System;
using System.Windows.Forms;

namespace ConsoleApplication7
{
    public class Program
    {
        private static readonly string aString = Strings.String1;
        public static void Main(string[] arccgs)
        {
            MessageBox.Show(string.Format(aString, "AAA", "BBB"));
            Console.ReadLine();
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多