【问题标题】:Displaying all the resources strings in a resx file显示 resx 文件中的所有资源字符串
【发布时间】:2009-02-10 15:30:11
【问题描述】:

我的应用程序中有一个“GUI 字符串”.resx 文件,其中包含我显示的所有字符串。我显然可以通过直接访问每个字符串 Resources.Resource_GUI_Strings.CameraSettings_BrightnessLabel

但是如何列出 .resx 文件中的所有设置,作为它们的(名称,值)对,是我使用反射的唯一选择吗?

我想列出所有对(即 CameraSettings_BrightnessLabel 和“Brightness”),以便用户可以编辑每个项目的字符串。这样他们就可以本地化 GUI。我不想完全国际化应用程序,要求只是让用户能够自己做。

所以我需要能够从 .resx 文件中读取成对的值,然后在用户编辑它们时将它们写回。

只是补充一下,我想在应用程序本身的运行时执行此操作,因此我无法解析磁盘上的 .resx 文件。

【问题讨论】:

  • 为什么不使用反射?这听起来不像是一段将在循环中运行 1000 次的代码。听起来它会出现在某种 Edit->Options 菜单上,因此即使使用 Reflection,您也不会注意到任何性能损失。
  • 我不确定我是否理解您的要求。您想在应用程序运行之间保留值吗?是每个用户都自定义自己的 GUI 版本,还是应该由所有用户共享自定义?
  • 客户对基本的国际化感到满意,因此他们唯一希望的是每个用户能够将 GUI 中的任何标签从默认的“英语”标签更改为自己的标签。因此,这些值需要保留,但仅适用于 GUI 的该用户。

标签: c# winforms user-interface resources internationalization


【解决方案1】:

通常我会使用 ResXResourceReaderResXResourceWriter 类,但我猜你的 resx 文件将在运行时被锁定。您最好将文本存储在数据库中而不是资源文件中来解决这个问题。

This answer 展示了如何制作自定义资源提供者/资源管理器来存储/编辑数据库中的资源。或者,您可以完全放弃资源模型并推出自己的解决方案。

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多