如何安全地获取Web Api控制器中的本地化字符串?

夸克

我正在尝试本地化我的Web API的响应。

我在项目中创建了一个资源文件(Messges.resx),其中包含所有本地化的字符串。并使用Accept-Language标头来识别用户的语言。

在响应中,我可以将字符串设置为:

response = Messages.KEY_GOOD_MORNING

它将以当前线程区域性的语言获取该名称的字符串。我将不得不将线程的当前文化更改为从Accept-Language标头中找到的文化。但是我不想更改线程的区域性,因为这也会更改数字/日期格式,这对我来说是有问题的。

我看到的另一种选择是-使用ResourceManager并将文化作为-

Messages.ResourceManager.GetString("KEY_GOOD_MORNING", CultureInfo.CreateSpecificCulture(lang.value))

这样,我就不必更改线程的区域性。但是这种方法的问题是-字符串名称不再安全传递给GetString()的字符串名称中的错字可能会导致返回空值。

我是否可以采用其他方法来避免上述两个问题?

奥伦。

首先,您应该检查此msdn讨论

为解决此问题的最佳方法。您应该在web.config文件中设置全球化设置。

<configuration>
 <system.web>
  <globalization 
    enableClientBasedCulture="true|false"
    requestEncoding="any valid encoding string"
    responseEncoding="any valid encoding string"
    fileEncoding="any valid encoding string"

    responseHeaderEncoding = "any valid encoding string" 
    resourceProviderFactoryType = string
    enableBestFitResponseEncoding = "true|false"

    culture="any valid culture string"
    uiCulture="any valid culture string"/>

对于英国文化案例

<globalization 
    enableClientBasedCulture="false" 
    uiCulture="en-US" 
    culture="en-US" />

这样,您就可以将文化线程与config一起使用。另外,您可以将culturethread设置为浏览器设置为auto,可以将其设置为auto并忽略某些情况。有关更多信息,您可以检查上面的链接。

如果您想接受浏览器的文化

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto" 
    culture="auto" />

或使用默认操作

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto:en-US" 
    culture="auto:en-US" />

为了获得最佳实践,请不要更改计算机线程的区域性信息。但是您可以更改基于会话的更改,更改当前的线程文化,这只是基于线程的信息,而不是整个系统。我希望它会有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从主包中获取本地化的字符串

如何使用GlobalMaterialLocalizations中的本地化字符串?

如何安全地向控制器发送数据?

如何安全地截断带引号的字符串?

如何安全地传递字符串值?

如何使用Web应用程序安全地验证AWS API Gateway中的请求

使用Asp.Net Core获取控制器中的本地化显示属性

如何从 SHNotify 事件 (SHCNE_RENAMEITEM) 中安全地获取新文件名

如何安全地从Web应用程序访问我自己的API?

如何在Spotfire IronPython脚本中安全地将临时文件用于Web?

如何安全地延迟ASP.net中的Web响应?

如何获取本地化的日期模式字符串?

如何安全地解开textField.text并将其安全地存储在属性中?

如何在颤振中获取本地化的日期字符串?

从服务器react-native动态获取本地化字符串

如何在控制器中安全地调用删除操作?

Web API控制器-查询字符串中的'action'参数

如何在UWP中创建参数化的本地化字符串

Xcode本地化-如何为开发语言创建本地化的字符串

如何本地化Azure API Management开发人员门户使用的字符串?

如何安全地将Unicode字符存储在cookie中?

如何正确使用VarArgs本地化字符串?

如何反向查找本地化字符串

如何本地化数据绑定的字符串属性?

如何本地化android系统字符串资源?

在angularjs控制器中本地化字符串属性

为什么我的应用从本地化资源中获取错误的字符串?

无法从Grails中的本地化表获取message()字符串

XSLT 从辅助 xml 文件中获取本地化字符串