我正在尝试本地化我的网络API的响应.
我在项目中创建了一个包含所有本地化字符串的资源文件(Messges.resx).并使用Accept-Language标头来识别用户的语言.
在响应中,我可以将字符串设置为:
response = Messages.KEY_GOOD_MORNING
Run Code Online (Sandbox Code Playgroud)
它将以当前线程文化的语言获取该名称的字符串.我将不得不将线程的当前文化更改为从Accept-Language标题中找到的文化.但我不想改变线程的文化,因为这也会改变数字/日期格式,这对我来说是个问题.
我看到的另一种选择是 - 使用ResourceManager并将文化传递给 -
Messages.ResourceManager.GetString("KEY_GOOD_MORNING", CultureInfo.CreateSpecificCulture(lang.value))
Run Code Online (Sandbox Code Playgroud)
这样我就不必改变线程的文化.但这种方法的问题是 - 字符串名称不再是类型安全的.传递给GetString()的字符串名称中的拼写错误可能导致返回空值.
我可以采取其他方法来避免上述问题吗?