【问题标题】:Creating localizatin .resx files makes empty .Designer.cs files创建本地化 .resx 文件会生成空的 .Designer.cs 文件
【发布时间】:2018-11-13 08:24:15
【问题描述】:

我正在尝试将本地化添加到我的 .NET MVC 项目中。据我所见(hereherehere),我应该能够创建总共三个文件(如果我有两种语言)。

Resources.resx
Resources.en-us.resx
Resources.da-dk.resx

当我打开 .resx 文件时,我可以向它们添加条目。一旦我这样做了(并将“访问修饰符”设置为内部或公共),它会生成一个Resources.*.Designer.cs 文件(应该如此)。但是,对于 en-usda-dk,它们是空的。没有错误或任何东西。

据我所知(hereherehere),文件名和 .resx 扩展名之间不能有一个点。令我惊讶的是,这是真的。如果我将这些 en-us/da-dk 文件中的任何一个重命名为 Whatever.resx,则将创建 Whatever.Designer.cs 文件。

我已经阅读了很多答案,尝试过使用 T4 模板和其他一些东西,但我根本无法使用它来创建一个有效的 Designer.cs 文件。

我做错了吗?我觉得我现在已经尝试了一切。我只想能够做到Resources.TestText 并让我的应用程序根据文化进行翻译。

【问题讨论】:

  • 我使用了一个名为 Resx Manager 的 VS 扩展程序,它会为您处理所有事情,您只需安装它并选择您需要的语言,它就会创建所有文件。它还有一个用于添加字符串的 UI。
  • @Nekeniehl 当代码无法按预期工作时,我并没有真正帮助我。我创建了一个新项目,它运行良好。
  • 这只是下次的建议,我一直在为本地化而苦恼

标签: c# .net localization resx


【解决方案1】:

这是设计使然。

Resources.EN-US.resx 文件类型没有设计器,因为实际设计器在它的“父”文件Resources.EN-US.resx 中。 en-us 文件仅保存键/值 XML

如果您正在调用您的资源,您可能会这样使用它:

var someVar = Resources.SomeLocalizedString;

您不必区分 EN-US 类型。

如果您查看设计器的代码,您可以看到发生了什么(等等,我会获取一个示例)

所以,你不需要那些设计师,它应该开箱即用如果你设置了 UI 线程的文化信息。

Thread.CurrentThread.CurrentUICulture = new CultureInfo("EN-US");

【讨论】:

  • 这是有道理的,如果是这样的话。但是我的语言环境设置为en-US(我确实尝试将美国和丹麦部分大写),但它在我的代码中没有受到影响。我确实在我的 Web.config 文件中添加了 标签
  • 好的,我将启动一个视觉工作室:你在做什么样的项目?安慰? ASP? wpf?
  • 这是一个 ASP.NET Web 项目。我确实尝试使用 Startup.cs 中的线程设置文化,但它仍然不会使用我的翻译(它只是默认为 Resource.resx 值)
  • 啊,是的,我想我知道发生了什么:如果你调用 asp.net web 项目,一个新线程就会启动;这个新线程包含默认的 UI 文化信息。
  • 如果我在页面上输出Thread.CurrentThread.CurrentUICulture,它会显示en-US。所以有些东西肯定是行不通的哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 2011-04-13
  • 2011-03-14
  • 2021-04-20
  • 1970-01-01
  • 2013-06-17
  • 2012-06-06
相关资源
最近更新 更多