【问题标题】:Resource strings, picking from multiple options资源字符串,从多个选项中挑选
【发布时间】:2018-07-17 12:32:21
【问题描述】:

在特定情况下,我有一个使用多个不同短语的应用程序。我想将这些短语放入资源文件中以启用本地化。在运行时,我希望能够从 N 个字符串中随机选择一个来显示。

例如,假设我正在向用户显示一个问候语。我可能有以下短语作为问候语变体。

  1. 你好
  2. 你好
  3. 欢迎

现在我知道我可以将它们存储在我的资源文件中,因为它是一个键/值对。

  1. GreetingVariant0
  2. GreetingVariant1
  3. GreetingVariant2

如何在运行时随机选择其中之一?

我是否需要一个配置文件,存储“Greeting Variants”的数量,读入该配置文件,然后选择一个随机数,然后提取该资源?

有没有更好的办法?

【问题讨论】:

    标签: c# asp.net localization resources


    【解决方案1】:

    我个人可能会使用配置解决方案,因为只需将给定范围内的随机数附加到资源键前缀并按键检索资源,检索资源将非常容易。

    另一个选项可能是查询资源文件中的所有键(使用解决方案之一here)并使用 LINQ 选择具有给定前缀的那些。您可以从结果集中随机选择一个。当然,这种解决方案效率较低,因为它需要对所有现有资源进行循环。

    【讨论】:

    • 我不喜欢将随机字符串连接到预定义的键前缀的想法。如果他添加更多值怎么办,你怎么知道你的 Random 应该生成的最大数字是多少?
    • 第一个解决方案本身需要维护,但是看看他在第二个中提供的链接,它包含一个遍历所有资源的方法,可以让您计算相关资源。
    • 这就是第一个解决方案中的配置值,以及第二个解决方案中的枚举
    • 这是他的另一个选择@Zero,我指的是他的第一个建议
    • 我知道这并不理想,但在我看来它是两者中更好的选择...您可以编写一个单元测试来验证具有前缀 + id 的资源是否可用于配置中设置的范围。
    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    相关资源
    最近更新 更多