动态添加本地化文件 C#

发布于 2024-11-09 19:37:26 字数 240 浏览 0 评论 0原文

我需要帮助来本地化我的 Wpf .net 3.5 应用程序。我将仅向我的客户提供 exe 文件,他将用该文件为他的用户创建安装程序。我的客户想要自己添加文件进行本地化。

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

PS:读取流并分配密钥是唯一的方法吗?

I need a help in localizing my Wpf .net 3.5 application. I am going to give only the exe file to my cient with which he will create setup for his users. My client wants to add files for localization by himself.

The general method of localization is creating .resx files for each languages and set the language in CurrentUICulture. but since, he cant use resgen tool to create resource files, I want to know the best method to let him add files in txt,excel,xml format to make the localization.

PS: reading through stream and assigning the key is the only way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

↙温凉少女 2024-11-16 19:37:26

如果您无法使用 resgen 工具,则最简单的方法是使用键值对的简单文本文件。如果你只使用简单的字符串,你应该使用这个。按照默认约定命名它们,并使用名称中的语言来标识要加载的正确文件,并自行编写一个自定义 resourceManager ,在启动时或按需加载这些文件到字典中以访问它们。

编辑:

我对此进行了更多详细介绍...

我会创建一个资源管理器
具有所有使用的静态访问器
资源文件只是后备
资源是静态类型的。我猜你的
语言是在启动时定义的,所以只是
加载后备和定义的
每个语言文件放入一个字典中
两个字典都是静态的
为此资源类型键入。使用一个
GetString("name", Culture) 加载一个
细绳。您可以查找
资源词典中的文化和
如果缺少一个键,则回退到
静态的。

编辑二:

您可以使用一个压缩文本文件
.Net 库的数量
阻止任何人打开和更改
内容。为了额外的安全性
您还可以添加密码
拉链。所以你最终会得到较小的文件
加上修改文件的能力
与任何 ZIP 程序。肯定你
还应该更改文件
扩展名。

希望这有帮助

If you cannot use the resgen Tool a simple textfile wit Key-Value Pairs would be the simplest way. And if you just staying with simple strings you should use just this. Name them after the default convention with the language in the name to identify to correct file to load and write yourself a custom resourceManager that load this files at startup or on demand into a Dictionary to access them.

Edit:

I go a bit more in details about this...

I would create a resource manager that
has static accessors for all used
resourcefiles where just the fallback
resource is static typed. I guess your
language is defined at startup so just
load the fallback and the defined
language files each into a dictionary
and both dictionaries in a static
typed for this resource type. Use a
GetString("name", Culture) to load a
string. You can do the lookups for the
culture in the resource dictionary and
if one key is missing do a fallback to
the static one.

Edit II:

You can ZIP the text-files using one
of the .Net libraries out there to
prevent anyone from open and change
the content. For additional security
you can also add a password to the
zip. So you end up with smaller files
plus the ability to modify the files
with any ZIP program. For sure you
should also change the file
extension.

Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文