我的 .resx 资源文件痛点
Posted
技术标签:
【中文标题】我的 .resx 资源文件痛点【英文标题】:My .resx Resource File Pain Points 【发布时间】:2016-12-21 17:26:01 【问题描述】:使用 .resx 资源文件进行本地化时,我有以下痛点:
对于每个标签,我需要在每个不同的语言文件中创建一个条目。在复制条目名称方面容易出现人为错误,并且在一个地方添加相同标签的不同语言版本会更容易。例如:
var lbl_Hello = new en = "Hello, fr = "Bonjour" ;
我似乎无法使用 Visual Studio 搜索在 resx 可视化编辑器中搜索名称或值。
有没有办法克服这些问题?
【问题讨论】:
请看我回答的编辑。咻 【参考方案1】:我感觉到你的痛苦。微软这么多年都没有为此提供更好的选择,这太荒谬了。甚至 .NET Core 本地化也使用 .resx 文件。我的替代方法是创建一个表,其中包含您要跟踪的每种语言的一列。然后在管道中(在 .NET Core 中)或在配置阶段(旧 ASP)中以静态变量(字典)的形式将其加载到内存中,或者我将其插入到本地/共享缓存中,没有过期日期。
编辑
如果要本地化的字符串数量不是很大,并且您可以在所有语言中使用它们,您可以完美地将它们内联到静态类本身,而不是将它们放在外部资源(数据库或文件)。但是在外部资源上使用这个字符串有一个明显的优势,您可以在不重新编译应用程序的情况下替换它们。
此外,有时您不会将所有字符串翻译成您想要提供的所有可用语言。然后,如果您在数据库或外部文件中分配了资源,那么您可以提供一个用户界面,以允许一些具有所需权限的用户修改/完成翻译。
【讨论】:
您对将字典保存在静态类本身而不是使用数据库加载它有何看法?它还将提供静态类型。以上是关于我的 .resx 资源文件痛点的主要内容,如果未能解决你的问题,请参考以下文章
防止资源 [.resx] 文件预编译。 .NET 核心 2.0