本地化Windows Foundation Workflow服务

时间:2013-06-06 10:51:46

标签: c# localization workflow-foundation-4 workflowservice

我正在开发一个工作流服务,其中包含(最终)用于与用户交互的许多不同工作流程。

因此,这些工作流程需要向用户发布消息,并且需要对这些消息进行本地化。

我想在启动工作流程时使用RESX文件并添加额外的参数来设置所需的文化。

然而,这似乎失败了,因为WF服务(特别是在持久性方面)根据需要创建了新线程,尽管在开始时设置了当前的文化(并且稍微工作了一点),但最后我的工作流程将返回默认文化。

我也尝试设置RESX文件创建的静态类的Culture参数,但这似乎改变了所有正在运行的工作流程的文化(可能需要在不同的语言环境中运行) )。

有没有办法解决这个问题?

修改

我知道我可以使用ResourceManager类,因为我可以传递我想要使用的文化,但是然后我不需要使用生成的类中可用的强类型资源名称来使用字符串 - 而且它是很容易出错。

编辑2:

我还忘了提一件事 - 但它与ResourceManager的最后一次编辑有点联系。由于会有很多工作流程,我希望我能够设置环境和方法,让其他稍微不那么精通计算机的人来制作这些工作流程(或者,至少可以帮助制作这些工作流程)。由于与用户的沟通至关重要,因此使用资源应尽可能简单。

2 个答案:

答案 0 :(得分:0)

尝试设置工作流变量以保存当前文化,并且只要您需要使用它来本地化文本,您就可以从工作流变量中提取值。如果您的工作流程可以暂停,然后在世界另一端的另一台服务器上恢复,这也可以解决这个问题,因此它保留了它产生的原始文化。

答案 1 :(得分:0)

我设法使用this blog post提出解决方案。通过修改T4模板,我最终获得了非静态资源类。接下来,我创建了一个可序列化的包装类,以根据工作流的需要实例化所有这些资源类。

这很容易使用(自定义工作流操作用于创建资源实例),工作流内部资源的使用非常简单:例如resources.GeneralStrings.Timeout