static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = new CultureInfo("ja-JP") 和CurrentUICulture设置为了ja-JP,结果可以发现后续启动的线程其CurrentCulture和CurrentUICulture也都为ja-JP 现在我们设置主线程的CurrentCulture void AsyncAwaitThreadCulture() { //设置主线程的CurrentCulture和CurrentUICulture为语言ja-JP Thread.CurrentThread.CurrentCulture 都为zh-CN了 这说明在.NET Core中,默认情况下线程的CurrentCulture和CurrentUICulture属性是由启动它的线程来决定的,上面的结果很明显由于第一层线程的CurrentCulture 所以在.NET Core中要设置线程的CurrentCulture和CurrentUICulture属性,最简单的办法就是在根线程(主线程)上设置CurrentCulture和CurrentUICulture
通过通知更改 CurrentCulture 多语言来使用改变的语言文件里的key。 通过绑定 Binding 拼接Path 在输出。 动态切换 我们先来看实现结果 ? key; } } private CultureInfo currentCulture = CultureInfo.InstalledUICulture ; public CultureInfo CurrentCulture { get { return currentCulture; } set { if (currentCulture ! = value) { currentCulture = value; // string.Empty
/Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); //Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); break; case "cn": CultureInfo.CurrentCulture /Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN"); //Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN"); break; case "tw": CultureInfo.CurrentCulture /Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-TW"); //Thread.CurrentThread.CurrentCulture
1: public class CultureAwareHttpModule : IHttpModule 2: { 3: private CultureInfo currentCulture 12: private void SetCurrentCulture(object sender, EventArgs args) 13: { 14: currentCulture = Thread.CurrentThread.CurrentCulture; 15: currentUICulture = Thread.CurrentThread.CurrentUICulture { 21: 22: try 23: { 24: Thread.CurrentThread.CurrentCulture = currentCulture; 34: Thread.CurrentThread.CurrentUICulture = currentUICulture; 35:
= new CultureInfo("en-US"); public CultureInfo CurrentCulture { get => _currentCulture; set { _currentCulture = value; Thread.CurrentThread.CurrentUICulture _languageManager.CurrentCulture = new CultureInfo((string)e.NewValue);}这让界面更友好,用户体验也提升了。 = new CultureInfo("en-US"); public CultureInfo CurrentCulture { get => _currentCulture; set { _currentCulture = value; Thread.CurrentThread.CurrentUICulture
0x00000804 CultureInfo PronoCi = new CultureInfo(2052); //Thread.CurrentThread.CurrentCulture 0x00020804 CultureInfo StrokCi = new CultureInfo(133124); Thread.CurrentThread.CurrentCulture )); Console.WriteLine(); //zh-cn (拼音:简中) Thread.CurrentThread.CurrentCulture ); Console.WriteLine(); //zh-tw (笔划数:繁中) Thread.CurrentThread.CurrentCulture
然后根据当前区域性对字符串进行比较,不忽略大小写)
///
CurrentCulture = 0,
///
= correlationState as CultureInfo[]; 10: Thread.CurrentThread.CurrentCulture = currentCulture [0]; 11: Thread.CurrentThread.CurrentUICulture = currentCulture[1]; 12: cultureInfo; 24: } 25: 26: return new CultureInfo[] { currentCulture 最有返回保存有原来CurrentCulture和CurrentUICulture的Array。 在AfterInvoke中通过correlationState参数将这个Array取出,重置CurrentCulture和CurrentUICulture。
先写一个资源的接口 public interface IResource { string GetString(string name); CultureInfo CurrentCulture event EventHandler LanguageChanged; } IResource接口是资源要实现的,GetString(stirng name)方法是得到根据名字得到资源里的值 CurrentCulture Thread.CurrentThread.CurrentUICulture = culture; Resources.Apply(item => item.CurrentCulture 通过Resources得到所有export IResource的类 ChangeLanguage(string language)方法里的 Resources.Apply(item => item.CurrentCulture = culture);是把所有实现IResult类的CurrentCulture修改成我们要换成的语言格式 eventAggregator.Publish(new LanguageChangedMessage
private static readonly string dir = Environment.CurrentDirectory; //语言文件夹
private CultureInfo currentCulture = CultureInfo.CurrentCulture;
}
///
.Include(r => r.Culture) .Where(r => r.Culture.Name == CultureInfo.CurrentCulture.Name GetString(string name) { if (_memoryCache.TryGetValue<string>($"{CultureInfo.CurrentCulture.Name .Include(r => r.Culture) .Where(r => r.Culture.Name == CultureInfo.CurrentCulture.Name GetString(string name) { if (_memoryCache.TryGetValue<string>($"{CultureInfo.CurrentCulture.Name 多语言国家编码直接使用CultureInfo.CurrentCulture.Name获取。无需传参配置。
override string FormatErrorMessage(string name) { return String.Format(CultureInfo.CurrentCulture override string FormatErrorMessage(string name) { return String.Format(CultureInfo.CurrentCulture override string FormatErrorMessage(string name) { return String.Format(CultureInfo.CurrentCulture override string FormatErrorMessage(string name) { return String.Format(CultureInfo.CurrentCulture override string FormatErrorMessage(string name) { return String.Format(CultureInfo.CurrentCulture
App.Admin { public class CultureAwareHttpModule : IHttpModule { private CultureInfo currentCulture } private void SetCurrentCulture(object sender, EventArgs args) { currentCulture = Thread.CurrentThread.CurrentCulture; currentUICulture = Thread.CurrentThread.CurrentUICulture = currentCulture; Thread.CurrentThread.CurrentUICulture = currentUICulture; } 最后一个声明,如果你要获取当然选中的是什么语言你必须在页面引用 CultureInfo info = Thread.CurrentThread.CurrentCulture; 通过info.Name可以获取到
[源代码从这里下载] 要让资源服务具有识别语言文化的能够,我们必须将客户端服务调用线程当前的语言文化信息(具体来说就是Thread的两个属性:CurrentUICulture和CurrentCulture ,我们根据这个预定义SOAP报头名称和命名空间将这两个语言文化代码从入栈消息中获取出来,创建相应的CultureInfo对象并作为服务操作执行线程的CurrentUICulture和CurrentCulture 放到出栈消息中;而服务端将其从入栈消息中取出,并对当前线程的CurrentUICulture和CurrentCulture进行相应的设置。 由于CultureReceiver在从入栈消息中获取表示客户端线程的CurrentUICulture和CurrentCulture信息的时,需要预先知道相应报头的名称和命名空间(命名空间仅仅用于SOAP CurrentCulture和CurrentUICulture。
{ var culture = new CultureInfo(cultureQuery); CultureInfo.CurrentCulture context) => { await context.Response.WriteAsync( $"Hello {CultureInfo.CurrentCulture.DisplayName { var culture = new CultureInfo(cultureQuery); CultureInfo.CurrentCulture context) => { await context.Response.WriteAsync( $"Hello {CultureInfo.CurrentCulture.DisplayName
WriteTo.Async(c => c.File($"Logs/{DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture $"Logs/{(DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture $"Logs/{(DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture
); var end = Convert.ToDateTime(datearray[1] + " 23:59:59", CultureInfo.CurrentCulture); StringSplitOptions.RemoveEmptyEntries); var min = Convert.ToInt32(intarray[0] , CultureInfo.CurrentCulture ); var max = Convert.ToInt32(intarray[1], CultureInfo.CurrentCulture); var maxthen ); var dmax = Convert.ToDecimal(decarray[1], CultureInfo.CurrentCulture); var dmaxthen ); var fmax = Convert.ToDecimal(farray[1], CultureInfo.CurrentCulture); var fmaxthen
通过字符串创建 FormattedText 这里需要传入很多参数 var formattedText = new FormattedText(str, CultureInfo.CurrentCulture lindexi.gitee.io 里面有大量 UWP WPF 博客"; var formattedText = new FormattedText(str, CultureInfo.CurrentCulture
CultureInfo cul = CultureInfo.GetCultureInfo(CultureSources[id]); Thread.CurrentThread.CurrentCulture 造成这个情况的原因是:在进行日期时间输出时,.NET会考虑当前线程的CultureInfo,即Thread.CurrentThread.CurrentCulture(或者CultureInfo.CurrentCulture
System.Globalization.CultureInfo(culture); System.Threading.Thread.CurrentThread.CurrentCulture currentculture=zh-cn”>中文(中国) <a href=”? currentculture=en-us”>English * 在页面上page标签内加上UICulture=”auto” 表示:自动识别浏览器语言 注:还有一种获取值得方法是通过后台获取值