Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将本地化添加到ASP.NET Core 2.0应用程序_C#_Localization_Asp.net Core Mvc - Fatal编程技术网

C# 将本地化添加到ASP.NET Core 2.0应用程序

C# 将本地化添加到ASP.NET Core 2.0应用程序,c#,localization,asp.net-core-mvc,C#,Localization,Asp.net Core Mvc,我需要将本地化添加到我的ASP.NET核心应用程序中 我不知道实现这个目标的最好方法是什么。。。我希望有包含不同翻译的外部文件,这样我就可以修改它们,而无需再次编译我的应用程序 我在互联网上看到,有两种方法可以在.Net核心应用程序中添加本地化: -使用.resx文件,但不能根据需要修改它们 -我需要的是.po文件 但是,我不知道.po文件是否真的是一个好的解决方案。。。有一个金块软件包“OrchardCore.Localization.Core”,它配置了PO文件支持,但它是一个测试版,没有太

我需要将本地化添加到我的ASP.NET核心应用程序中

我不知道实现这个目标的最好方法是什么。。。我希望有包含不同翻译的外部文件,这样我就可以修改它们,而无需再次编译我的应用程序

我在互联网上看到,有两种方法可以在.Net核心应用程序中添加本地化: -使用.resx文件,但不能根据需要修改它们 -我需要的是.po文件

但是,我不知道.po文件是否真的是一个好的解决方案。。。有一个金块软件包“OrchardCore.Localization.Core”,它配置了PO文件支持,但它是一个测试版,没有太多的更改,据我所知,它似乎不能很好地与DataAnnotation配合使用


你觉得怎么样?对于我的问题,什么是最好的解决方案?

事实上,在构建过程中,resx文件被编译成二进制文件(),因此在不重新编译的情况下,您无法修改它们(至少是简单地修改它们)

相反,PO文件是纯文本文件,可以随时轻松编辑

这是我在我的项目中使用PO而不是内置的、基于resx的本地化很长一段时间的原因之一。我从Orchard CMS项目(经典项目)中得到了这个想法,它对我来说非常有效。我认为作者在Orchard的.NET核心重新实现中坚持使用PO这一事实很好地表明PO是本地化的可行选择

要在ASP.NET Core中进行PO本地化,您需要:

  • 一个PO文件解析器。Orchard Core必须包含这样的内容,但我不知道它有多成熟。当我切换到.NET内核并在.NET标准上实现它时,我需要这个功能。后来我

  • 的自定义实现。这并不难做到。你可以找到这样一个例子,例如

但是,为了使本地化工作流程尽可能轻松,建议使用好的PO编辑器,并以能够自动提取可翻译文本的方式实现本地化。您可以找到有关此主题的更多信息


至于数据注释:我不知道Orchard Core中如何实现本地化的确切细节,但是如果您使用IStringLocalizer路径,那么您在数据注释本地化方面的问题应该不会少,也不会多,就像您使用默认的resx实现一样。(关于数据注释本地化,有一些已知的问题,比如没有那么严重的问题太难解决。)

“但是你不能随心所欲地修改它们”什么?为什么不呢?官方文档中有很多关于使用任何你想要的翻译源的文档。你试过调查吗?查看@DavidG以了解我读到的内容,.resx是应用程序解决方案中包含的资源文件。您不能使用外部工具修改它们,而不必再次编译应用程序以进行更改。我错了吗?有什么我不明白的吗?很好的解释!谢谢!