【问题标题】:Dynamically add files for localization C#为本地化 C# 动态添加文件
【发布时间】:2011-05-26 08:40:37
【问题描述】:

我在本地化我的 Wpf .net 3.5 应用程序时需要帮助。我将只将 exe 文件提供给我的 cient,他将使用它为他的用户创建设置。我的客户想自己添加本地化文件。

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

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

【问题讨论】:

    标签: c# .net wpf resx


    【解决方案1】:

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

    编辑:

    我会详细介绍一下...

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

    编辑二:

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

    希望对你有帮助

    【讨论】:

    • @sra,正如你所说,我将使用简单的键值对字符串,但 ResourceManager 只加载带有 .resource 的文件,对吗?或者它也可以读取 .txt/.xml 吗?
    • @Coder323 resourceManager 需要一个带有嵌入资源的程序集,并且在所有其他程序上都会失败。您在项目中看到的 XML 结构只是编译器的参考,哪些资源要嵌入以及在哪里可以找到它们以及具有静态访问器的类。所以是的,你需要自己写一个。但如上所述,在您的情况下应该非常简单。
    • @sra,我可以编写自定义代码来读取 xml 文件并分配给控件的内容,但是如果我的客户端用户可能会更改简单的 xml 文件怎么办?
    • @Coder323 你想要那个还是不想要那个?您可以重命名扩展名,如果您想使用开源 .net 库之一压缩它。如果你想让它真的很难用密码压缩。
    • @sra,我不希望这种情况发生。好的,我可以使用某种算法进行加密。感谢您编辑您的帖子,我会试试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多