Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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# “为什么请求本地化在以下情况下不起作用”;“接受语言”;标题是;“是吗?”;?_C#_Request_Localization_Asp.net Core Webapi - Fatal编程技术网

C# “为什么请求本地化在以下情况下不起作用”;“接受语言”;标题是;“是吗?”;?

C# “为什么请求本地化在以下情况下不起作用”;“接受语言”;标题是;“是吗?”;?,c#,request,localization,asp.net-core-webapi,C#,Request,Localization,Asp.net Core Webapi,我正在尝试将请求本地化添加到我的ASP.NET核心Web Api项目中。配置设置后,本地化仅适用于完整的“Accept Language”标题,如“ru-ru”或“en-US”,但不适用于“en”、“ru”标题,不过,我已将它们添加到支持的区域性列表中 我在我的资源文件夹中添加了3个文件:(“Resources.resx”、“Resources.ru.resx”、“Resources.en US.resx”) 我希望服务器在“Accept Language”头为“ru”或“en”时本地化响应。最

我正在尝试将请求本地化添加到我的ASP.NET核心Web Api项目中。配置设置后,本地化仅适用于完整的“Accept Language”标题,如“ru-ru”或“en-US”,但不适用于“en”、“ru”标题,不过,我已将它们添加到支持的区域性列表中

我在我的资源文件夹中添加了3个文件:(“Resources.resx”、“Resources.ru.resx”、“Resources.en US.resx”)


我希望服务器在“Accept Language”头为“ru”或“en”时本地化响应。最后,我修复了重命名资源文件时出现的问题,如:

"Resources.resx" -> "Resources.uk.resx", 
"Resources.ru-Ru.resx" -> "Resources.ru.resx", 
"Resources.en-US.resx" -> "Resources.en.resx"

您希望使用中性区域性,但所有资源文件都是针对特定区域性的

既有语言又有地域的文化(如en-US或ru-ru)称为特定文化。中立文化只是语言,就像英语或俄语一样

您的原始资源文件集都是特定的区域性。当您收到来自特定区域性的请求时,请求本地化将查找该特定区域性。如果找不到,它会尝试找到一种与特定文化相对应的中性文化。(通过将FallbackToParentCultures设置为false,可以在RequestLocalizationOptions中禁用此行为)

通过重命名它们,您将它们更改为中性区域性。由于您不再定义特定的区域性,因此对en US的请求将始终回退到匹配的en。如果你不是为了文化而本地化(比如,美国和英国没有单独的本地化),这是一个非常好的解决方案

"Resources.resx" -> "Resources.uk.resx", 
"Resources.ru-Ru.resx" -> "Resources.ru.resx", 
"Resources.en-US.resx" -> "Resources.en.resx"