我正在尝试将请求本地化添加到我的ASP.NET Core Web Api项目中。配置完设置后,本地化仅适用于完整的“接受语言”标头,例如“ ru-RU”或“ en-US”,但不适用于“ en”,“ ru”标头,但是,我将它们添加到了“受支持的”中文化列表。
我在我的Resources文件夹中添加了3个文件:(“ Resources.resx”,“ Resources.ru-Ru.resx”,“ Resources.en-US.resx”)
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("en"),
new CultureInfo("ru-RU"),
new CultureInfo("ru"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("uk"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
app.UseMvc();
}
我希望服务器在“ Accept-Language”标头为“ ru”或“ en”时将响应本地化
答案 0 :(得分:0)
最后,重命名资源文件后,我解决了该问题:
useEffect(() => {
const fetchData = async () => {
const result = await axios(url);
setData(result.data);
};
fetchData();
}, [url, count]);
答案 1 :(得分:0)
您希望使用中性文化,但您的所有资源文件都是针对特定文化的。
同时具有语言和地区的文化(如en-US 或ru-RU)称为特定文化。中立的文化只限于语言,例如 en 或 ru。
您的原始资源文件集都是特定的文化。当您收到来自特定文化的请求时,请求本地化会查找该特定文化。如果找不到,它将尝试找到与该特定文化相对应的中性文化。 (可以在 RequestLocalizationOptions 中通过将 FallbackToParentCultures 设置为 false 来禁用此行为)
通过重命名它们,您将它们更改为中性文化。由于您不再定义特定的文化,对 en-US 的请求将始终回退到匹配的 en。如果您不是针对文化进行本地化(例如,美国和英国没有单独的本地化),这是一个非常好的解决方案。