提问人:micka190 提问时间:10/24/2023 最后编辑:General Grievancemicka190 更新时间:10/25/2023 访问量:49
.resx 文件的每个变体是否应该生成自己的 Designer.cs 文件?
Are each variations of a .resx file supposed to generate their own Designer.cs file?
问:
我无法找到太多关于文件如何与官方文档中的文件相关的工作方式,并且谷歌搜索这种情况并没有产生任何有用的信息。.Designer.cs
.resx
我目前正在从事的项目需要支持多种语言。因此,它具有本地化文件:
- Localization.resx
- Localization.zh.resx
- 验证.resx
- Validation.zh.resx
注意:英语不是默认语言。
我注意到,除了文件之外,我们还有一些文件。具体来说,我们有以下几种:.resx
Designer.cs
- 本地化设计器 .cs
- 本地化.en.Designer,.cs
- 验证.设计器 .cs
由于某种原因,没有相应的文件。Validation.en.resx
.en.Designer.cs
如果我们对文件进行修改,则不会为其生成设计器文件。不过,这些变化仍然有效。访问我们的网站并将文化设置为英语显示了英语价值观。查看我们的 Git 状态,似乎在其他地方没有文件,并且我们的文件不会忽略它。.en.resx
.en.Designer.cs
.gitignore
为了生成一个文件,我试过:Validation.en.Designer.cs
- 禁用代码生成并将其重新启用为公共代码生成
- 将 VS2022 与“运行自定义工具”操作配合使用
- 将 Rider 与“生成资源”操作结合使用
- 创建空白/文件并手动移动其中的值
.resx
.en.resx
- 手动更新文件以确保其具有与其他文件相同的 ResX 代码
.csproj
唯一有效的方法是创建一个空文件,该文件立即填充了正确的值。Validator.en.Designer.cs
但是,当团队成员对文件进行更改时,文件不会更新,即使他们的更改在编译/运行应用时有效。但是,对默认文件的更改确实会导致对文件的更改。.en.resx
.en.Designer
.resx
.Designer.cs
那么我们应该在文件旁边有一个文件吗?还是默认文件应该处理根据本地选择正确的源,而我们的项目中只有额外的文件?.en.Designer.cs
.en.resx
.Designer.cs
.resx
答:
简短的回答是,不,每个本地化的资源文件都没有 Designer 文件。
C# 文件实际上并不包含 resx 文件的一部分。相反,它会生成代码来查找资源文件中的值,这也包括用于区域性相关查找的代码。您可以在主 resx 文件生成的 Designer 文件中看到这一点,C# 代码中有一段说(为简洁起见重新格式化):Value
public static global::System.Globalization.CultureInfo Culture {
get { return resourceCulture; }
set { resourceCulture = value; }
}
这意味着对本地化的内置支持,因此当您设置区域性时:
Resources.Validation.Culture = new CultureInfo("en");
...然后稍后引用本地化的字符串(以示例为例):Greeting
Console.WriteLine(Resources.Validation.Greeting);
...它将自动选择适当的资源。如果未找到字符串,则默认为主 resx 文件。
例
假设您有三个资源文件:
- 主要一个:Validation.resx,包含 (,
Anatid
Duck-translation here
) - 英语:Validation.en.resx,包含 (,
Anatid
Duck
) - 日语:Validation.ja-JP.resx,包含 (,
Anatid
カモ
)
要使用它们,请执行以下操作:
foreach (string loc in new[] { "en", "ja-JP", "sr-Cyrl-RS" })
{
Resources.Validation.Culture = new CultureInfo(loc);
Console.WriteLine(Resources.Validation.Anatid);
}
/* Outputs:
Duck
カモ (Or ??. `chcp 932` if you really want to see katakana. Point is, it looks up the value.)
Duck-translation here
*/
对于其他功能,您可以按照此处列出的说明进行操作,但这可能超出了您需要做的范围。
评论
.en.Designer.cs
.resx
.en.Designer.cs
评论
ResXFileCodeGenerator
PublicResXFileCodeGenerator
.en
ResXFileCodeGenerator
.en.Designer.cs
.
Validation_EN
_en
the .en.resx