7

我正在使用一个 MVC 4 应用程序,该应用程序最初是为了可能需要语言本地化而创建的,因此在整个项目中大量使用 .resx 文件和相应的引用嵌入。事实证明,该应用程序只会被说英语的观众使用,而且实际上没有加载其他语言。我们现在得到的是每次我们需要将文本放在页面上并且增加英语的不一致性时的开销语言被硬编码到无法直接访问资源文件的地方,例如 .js 文件和数据库中的参考数据。

除了大量的复制和粘贴之外,是否有任何自动化方法可以从资源文件中提取英语语言值并替换它们在视图中的引用?在一个完美的世界里,会有一个工具来做到这一点,当然它在概念上是可编写脚本的,这样的东西已经存在了吗?

4

3 回答 3

1

您必须编写脚本。我用 O2 平台 AST 操作 Mono.Cecil 和 mono Cecil API 做了类似的事情。

如果你给我一个使用你需要的小项目(一个 resx 文件和一个 MVC 视图)我可以向你展示一个代码片段示例

于 2013-03-08T02:45:15.123 回答
1

我还没有看到任何可以解决这个问题的东西。我的第一个想法是因为大多数“开箱即用”解决方案中可能出现的本地化问题。

这可能有点牵强,但试一试。您能否编写一个 C# 应用程序来加载包含资源文件的程序集,然后遍历项目中的每个文件并用值替换资源键?

就像你说的,脚本化是可能的,在我看来,这似乎是完成任务的最简单但最粗暴的方式。根据您正在谈论的资源数量,显然复制/粘贴可能更容易和更安全。

于 2013-03-08T03:30:00.803 回答
0

附属程序集..如果您将所有应用程序资源放置在项目中,则创建您要实现的非默认语言。例如 fr_ca.ErrorMsg | en_gb.ErrorMsg 和 en_Us.ErrorMsg。默认语言可以在主 Thread.CultureInfo 中指定,如果 en_us 则在 en_us 文件中填写所有需要的条目,并且只有在默认资源->en_us 中不存在其他资源时才会加载其他资源。

于 2013-03-08T04:32:52.323 回答