【问题标题】:Can you add a language without forcing a rebuild?您可以在不强制重建的情况下添加语言吗?
【发布时间】:2018-03-04 18:26:41
【问题描述】:

我的应用程序设计为能够在两种不同的语言(英语和捷克语)上运行。为了实现这一点,我创建了 2 个资源文件:

如果最终用户想要添加另一种语言,例如GlobalStrings.fr-FR.resx是否可以在不重新构建应用程序的情况下允许此功能?

如果我们查看这些资源文件的属性:

我不明白 嵌入式资源 是什么意思。这是否意味着为了让应用使用此文件,必须重新构建应用?

我们如何创建一个资源文件,它可以由最终用户扩展/更改,而无需重新构建整个应用程序 ?

【问题讨论】:

  • 是的,这是可能的。在此处阅读有关资源的更多信息:docs.microsoft.com/en-us/visualstudio/ide/… 并使用此:marketplace.visualstudio.com/…
  • 是的,使用那个插件很棒!仍然不明白如何允许客户端编辑值
  • 不知道为什么亚历克斯删除了他的帖子,但它非常好,不幸的是,它在中途消失了
  • 我恢复了它......在检查一切是否正确时,我找到了关于纯文本版本资源的文章,尽管我们是否真的支持纯文本除了编译的程序集(因此使答案无效),但是事实证明,这只是为编译的资源程序集指定源的另一种方式-答案中的链接。

标签: c# vb.net winforms visual-studio-2017


【解决方案1】:

常规 .Net 资源被编译成具有特定名称的程序集,并通过匹配该名称来加载。因此,如果“最终用户”可以翻译 resx 文件中的字符串并将资源编译为具有特定名称的程序集(如“MyResources.cs-cz.dll”),那么您可以使用默认的 .Net 行为来执行此操作,而无需重新编译主代码。有关详细信息,请参阅MSDN:Packing and Deploying resources 和相关链接。

请注意,您不需要 Visual Studio,并且可以在用户机器上使用 csc 命令行编译器 embed resources - 因此,如果您真的需要,您可以提供在本地编译相应 resx 的简单脚本。请注意,由于需要对某些字符进行编码,普通人通常无法将 XML (resx) 编辑为文本 - 在走这条路线之前,请考虑您的“最终用户”的技术水平。 Plain text 版本的资源源可能在更多情况下有效。

通常情况并非如此 - 如果最终用户需要本地化,您可以通过从纯文本文件或数据库中加载用户可以在本地更新的字符串来创建某种自定义资源字符串管理。

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多