我正在使用最初创建的MVC 4应用程序,目的是可能需要语言本地化,因此在整个项目中大量使用.resx文件和相应的引用嵌入。事实证明,这个应用程序只会被说英语的读者使用,实际上还没有其他任何语言被加载过。我们现在得到的是每次我们需要在页面上放置文本并增加不一致性时的开销。语言被硬编码到无法直接访问资源文件的地方,如.js文件和数据库中的参考数据。
如果没有大量的复制和粘贴,是否有任何自动方式从资源文件中提取英语语言值并在视图中替换它们的引用?在一个完美的世界中,有一个工具可以做到这一点,当然它是概念可编写脚本,这样的事情是否已经存在?
答案 0 :(得分:1)
你必须编写脚本。我用O2平台AST操作Mono.Cecil和单声道Cecil API做了类似的事情。
如果你给我一个小项目,你可以使用(一个resx文件和一个MVC视图),我可以给你看一个代码片段示例
答案 1 :(得分:1)
我还没有看到任何可以解决这个问题的事情。我的第一个想法是因为可以在大多数“开箱即用”的解决方案中呈现的本地化问题。
这可能是遥不可及的,但要试一试。您是否可以编写一个C#应用程序来加载包含资源文件的程序集,然后循环遍历项目中的每个文件并用值替换资源键?
正如你所说,它可以编写脚本,这似乎是在我脑海中完成任务的最简单而最原始的方法。根据您所讨论的资源数量,显然复制/粘贴可能更容易,更安全。
答案 2 :(得分:0)
附属程序集。如果您已将所有应用程序资源放置在项目中,则创建要实现的非默认语言。例如fr_ca.ErrorMsg | en_gb.ErrorMsg和en_Us.ErrorMsg。可以在主Thread.CultureInfo中指定默认语言如果en_us然后填写en_us文件,其中包含所有需要的条目,并且只有在默认资源 - > en_us中不存在的情况下才会加载其他资源。