【问题标题】:Why aren't the localized resource files created automatically when changing the culture in the designer?为什么在设计器中更改文化时不会自动创建本地化资源文件?
【发布时间】:2009-09-22 09:41:28
【问题描述】:

我目前正在对表单进行本地化。但是,我对如何正确执行此操作感到有些困惑。

我认为可以将控件属性自动导出到资源文件,但似乎这是一项手动任务。

我目前的方法是添加所有类型为字符串且可写入资源文件的控件属性。这是通过递归枚举窗体上的所有控件和子控件并反映属性来实现的。

但这似乎有些复杂,我想知道其他人是怎么做到的。

所以我的问题: 在使用资源文件进行控制文本本地化方面的最佳实践是什么?

编辑:我知道我做错了什么。我认为 Displaytext 会自动复制到每个资源文件中。但是,似乎只复制了已更改的字段。

所以基本上,我将语言设置为某个设置,更改所有控件的 DisplayText,当我将语言更改回(默认)时,更改的内容会被保存。

感谢任何/所有 cmets。

【问题讨论】:

    标签: .net winforms reflection localization resourcemanager


    【解决方案1】:

    嗯,实际上本地化表单并不难。您将“Localizable”属性设置为“true”。这会导致将窗体上控件的所有可本地化属性迁移到资源文件中。当前资源文件是与语言环境无关的资源文件。然后,您可以在表单的属性中选择另一种语言,并将所有控件标题和文​​本替换为其翻译的变体。这会导致创建和使用适当的依赖于语言环境的资源文件。

    您可以通过设置 Thread.CurrentThread 的 CurrentCulture 和 CurrentUICulture 属性来选择界面显示的语言:

    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
    Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");
    

    界面会相应调整。

    【讨论】:

    • 用翻译替换所有控制标题就行了,谢谢!
    【解决方案2】:

    它已经这样做了。

    在 Form 或 UserControl 设计器中打开 Localizable。

    现在更改您的语言(也在设计器中),并自动创建相应的 langXXX.resx。

    【讨论】:

    • 从我阅读的所有内容来看,这似乎是这样做的方法,但我的控件的 Text 属性没有出现在资源文件中的任何位置。
    • 如果您构建自己的自定义控件,您必须为需要本地化的属性(例如显示文本、图标等)设置 Localizable 属性。为此,只需将[Localizable(true)] 放在属性声明上方即可。
    • 我明白了,但即使是标签、按钮、单选按钮、组框等标准控件也不会出现在资源文件中。也许我做错了什么......
    • 资源文件中基本没有字符串。有两个位图和一个图标,但没有字符串。
    【解决方案3】:

    您只需要使表单可本地化(在属性面板中,将 Localizable 设置为 true)。然后你只需要选择你想要本地化的语言。所有必要的资源文件都会自动生成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 2012-06-10
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多