我们有一个Web.API应用程序,我们必须支持荷兰语和英语。 为此,我们根据用户请求将文化设置为“nl”或“en”。
但是,我们在“NumberDecimalSeparator”中遇到了这个问题,因为“en”是“。”而“nl”则是“,”。现在,当用户想要发布或获取“nl”语言的任何数据时,值应显示/发布为“,”,对于“en”语言,它应显示/发布为“。”。
有没有人知道我们如何处理这个?
我正在使用Linq查询,我必须根据语言显示重试数据。
提前谢谢..
Linq查询如下:
var test = await (from x in db.instance.Where(x => x.ID == 36)
select new GeofenceAttributeModel()
{
Address = x.geofenceattribute != null ? x.geofenceattribute.Address : string.Empty,
Latitude = x.geofenceattribute != null && x.geofenceattribute.Latitude.HasValue ? x.geofenceattribute.Latitude : null,
Longitude = x.geofenceattribute != null && x.geofenceattribute.Longitude.HasValue ? x.geofenceattribute.Longitude : null,
RadiusInMtr = x.geofenceattribute != null ? x.geofenceattribute.RadiusInMtr.ToString() : string.Empty
}).FirstOrDefaultAsync();
答案 0 :(得分:3)
欢迎全球化支持。
经验法则:仅在UI(例如网络浏览器)中解析或显示时才使用当前区域设置。
在所有其他情况下(存储数据,文本格式的组件之间的通信,包括json或XML帖子)使用不变文化。在服务器端,无论UI使用荷兰语还是英语还是任何其他文化,它都应该是完全透明的。
永远不要使用本地文化序列化数字和日期时间值;否则,当您必须反序列化数据时,您不能再告诉逗号是小数字符号还是千位分隔符,例如。
在您的代码RadiusInMtr.ToString()
中使用系统的本地文化(Thread.CurrentThread.CurrentCulture
)。只有在UI中显示字符串时才可以。如果您使用此字符串将某些数据传输到另一个组件,请改用ToString(CultureInfo.InvariantCulture)
。并且在解析字符串时指定文化。