2011-05-26 99 views
6

我需要本地化我的Wpf.net 3.5应用程序的帮助。我将只给exe文件给我的cient,他将为他的用户创建设置。我的客户希望自己添加文件以进行本地化。动态添加本地化文件C#

本地化的一般方法是为每种语言创建.resx文件并在CurrentUICulture中设置语言。但是既然他不能使用resgen工具来创建资源文件,我想知道让他以txt,excel,xml格式添加文件以进行本地化的最佳方法。

PS:通过流读取和分配密钥是唯一的方法?

回答

4

如果您不能使用resgen Tool,那么使用Key-Value Pairs这个简单的文本文件将是最简单的方法。如果你只是使用简单的字符串,你应该使用这个。将它们命名为默认约定,并使用名称中的语言标识以正确加载文件,并为自己编写一个自定义resourceManager,该文件在启动时或根据需要将这些文件加载​​到字典中以访问它们。

编辑:

我去一个更位这个细节...

我将创建一个资源管理器 对所有使用 resourcefiles静态访问器只是在那里资源的后备 是静态类型的。我猜你的 语言是在启动时定义的,因此只需 将回退语句和定义的 语言文件分别加载到词典 中,并为此资源类型键入静态 中的两个词典。使用 GetString(“name”,Culture)加载 字符串。您可以在资源字典中查找 区域性文件,如果缺少一个关键字,则可以查找 静态文件。

编辑II:

可以ZIP使用.NET库的一个 都来 文本文件,防止任何人开放,改变 内容。为了获得额外的安全性 ,您还可以在 zip中添加密码。所以你最终得到更小的文件 加上用任何ZIP程序修改文件 的能力。当然, 也应该改变文件 的扩展名。

希望这有助于

+0

@sra,正如你所说,我会用简单的键值对字符串,但ResourceManager中只加载文件与.resource吧?或者它可以读取.txt/.xml吗? – Coder323 2011-05-26 08:59:30

+0

@ Coder323 resourceManager需要一个具有嵌入资源的程序集,并且在其他所有程序集上都会失败。您在项目中看到的XML结构只是编译器的参考资料,需要嵌入哪些资源以及在哪里找到它们以及带有静态访问器的类。所以是的,你需要自己写一个。但如上所述,它应该非常简单。 – sra 2011-05-26 09:05:41

+0

@sra,我可以编写自定义代码来读取xml文件并分配给控件的内容,但是如果我的客户端的用户可能会更改简单的xml文件呢? – Coder323 2011-05-26 09:10:53