表单编程字符串的资源使用情况?

时间:2009-11-19 06:47:05

标签: c# .net winforms localization resources

有一个基本的WinForm问题:默认情况下,为每个表单或用户控件(以及designer.cs)创建一个resx文件。此resx适用于所有控件以及通过UI添加到控件的文本。

我想知道我是否可以使用相同的resx添加字符串,这些字符串必须以编程方式使用并且基于附加到控件的条件?在任何情况下都会覆盖resx并删除此自定义字符串吗? 在这种情况下,最好的做法是什么?

3 个答案:

答案 0 :(得分:2)

Resources.resx文件中的字符串资源存在一个奇怪的问题。我没有发现过如何使用IDE为另一种语言创建新资源表的明显方法。它可以手工完成。请按照以下步骤操作:

  1. 项目+属性,资源选项卡, 添加您要使用的字符串 你的计划
  2. 启动Windows资源管理器并导航 到项目的属性文件夹
  3. 复制并粘贴Resources.resx 文件
  4. 将其重命名为您想要的文化 使用。例如: Resources.fr-FR.resx
  5. 返回VS,单击“显示所有文件” 解决方案资源管理器窗口中的图标
  6. 展开“属性”节点,新建 资源文件应该是可见的
  7. 右键单击它并选择“包含” 在项目“
  8. 在“属性”窗口中选择它 设置自定义工具= “ResXFileCodeGenerator”
  9. 验证Build Action是否设置为 “嵌入式资源”
  10. 构建您的程序。您应该在项目的bin \ Debug目录中使用名为projectname.resources.dll的附属程序集获取一个新文件夹。此附属程序集包含本地化字符串和表单中的任何本地化资源。测试它是否适用于这样的代码:

    public Form1() {
      System.Threading.Thread.CurrentThread.CurrentUICulture =
        System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
      InitializeComponent();
      textBox1.Text = Properties.Resources.String1;
    }
    

答案 1 :(得分:2)

自动生成的那些被覆盖(我正在使用2005),所以不,我不会使用相同的文件。我建议在项目中为.resx文件创建一个单独的区域。通常我会为每个表单创建一个.resx,当然还要匹配名称。

编辑:Here是我最近提供的一个更详细的答案,用于在使用.resx文件本地化您的应用时组织文件/文件夹结构。

答案 2 :(得分:1)

或者你可以试试这个:

在main();

中添加此代码

使用System.Resources;

ResXResourceWriter rw = new ResXResourceWriter("Resources.de-DE.resx");
rw.AddResource("String1", "de");
rw.Close();
...

重复更多文件

转到bin目录并将XML(resx)文件移动到属性文件夹中。

转到nobugz post上面的步骤5-9。