return 如何了解用户在 PC 中使用的当前文化
How can return on current culture who user used in PC
我读取了 csv 文件,列用逗号分隔。在某些文化中,分隔符是点,因此我决定将当前文化更改为 "en-US",后者使用逗号作为分隔符。但是当我完成一些操作后,我需要 return 在用户使用的文化中。但我不能。
如何return当前用户使用的文化?
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
// do something
CultureInfo ci = CultureInfo.CurrentCulture;
var a = ci.DisplayName;
正在继续"en-US"
只需保存然后恢复:
var saved = Thread.CurrentThread.CurrentCulture;
try {
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
// do something
finally {
Thread.CurrentThread.CurrentCulture = saved;
}
另一种(有点异国情调)的可能性是将逻辑隐藏在特别设计的class:
public sealed class CurrentCulture: IDisposable {
private CultureInfo m_Saved;
public CurrentCulture(CultureInfo info) {
//TODO: validate info
m_Saved = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = info;
}
public CurrentCulture(String name) :
this(new CultureInfo(name)) {
}
public void Dispose() {
if (m_Saved != null) {
Thread.CurrentThread.CurrentCulture = m_Saved;
m_Saved = null;
}
}
}
...
using (var c = new CurrentCulture("en-US")) {
// do something
}
//Save your current culture;
var myCurrentCulture = Thread.CurrentThread.CurrentCulture;
//Adjust the culture
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
//Set it back
Thread.CurrentThread.CurrentCulture = myCurrentCulture;
CultureInfo ci = CultureInfo.CurrentCulture;
var a = ci.DisplayName;
我读取了 csv 文件,列用逗号分隔。在某些文化中,分隔符是点,因此我决定将当前文化更改为 "en-US",后者使用逗号作为分隔符。但是当我完成一些操作后,我需要 return 在用户使用的文化中。但我不能。
如何return当前用户使用的文化?
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
// do something
CultureInfo ci = CultureInfo.CurrentCulture;
var a = ci.DisplayName;
正在继续"en-US"
只需保存然后恢复:
var saved = Thread.CurrentThread.CurrentCulture;
try {
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
// do something
finally {
Thread.CurrentThread.CurrentCulture = saved;
}
另一种(有点异国情调)的可能性是将逻辑隐藏在特别设计的class:
public sealed class CurrentCulture: IDisposable {
private CultureInfo m_Saved;
public CurrentCulture(CultureInfo info) {
//TODO: validate info
m_Saved = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = info;
}
public CurrentCulture(String name) :
this(new CultureInfo(name)) {
}
public void Dispose() {
if (m_Saved != null) {
Thread.CurrentThread.CurrentCulture = m_Saved;
m_Saved = null;
}
}
}
...
using (var c = new CurrentCulture("en-US")) {
// do something
}
//Save your current culture;
var myCurrentCulture = Thread.CurrentThread.CurrentCulture;
//Adjust the culture
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
//Set it back
Thread.CurrentThread.CurrentCulture = myCurrentCulture;
CultureInfo ci = CultureInfo.CurrentCulture;
var a = ci.DisplayName;