首页 > 解决方案 > 在 Windows 10 64 位窗体应用程序中将 en-US 文化更改为 fa-IR 文化的问题

问题描述

尽管使用了正确的代码(我当然认为),但 Windows 窗体应用程序的文化并没有改变。

在 win 表单应用程序的 Program.cs 文件中,我尝试将当前文化从 en-US 更改为 fa-IR,并使用以下代码:

CultureInfo culture =  CultureInfo.CreateSpecificCulture("Fa-IR");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;  
Thread.CurrentThread.CurrentUICulture = culture;  
Thread.CurrentThread.CurrentCulture = culture;

但是运行程序后,什么也没有发生。当前的文化仍然是 en-US!。让我也这么说,我不会在其他任何地方改变文化计划。 不改变文化

标签: cultureinfoculture

解决方案


public static void InitializePersianCulture() {

    var culture = new CultureInfo("fa-ir");
    var info = culture.DateTimeFormat;

    var calendar = new PersianCalendar();
    info.Calendar = calendar;
    var field = typeof(CultureInfo).GetField("Calendar", System.Reflection.BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic);
    if (field != null)
        field.SetValue(culture, "fa-ir");

    Thread.CurrentThread.CurrentCulture = culture;
    Thread.CurrentThread.CurrentUICulture = culture;
    CultureInfo.CurrentCulture.DateTimeFormat = info;
    CultureInfo.CurrentUICulture.DateTimeFormat = info;
}

推荐阅读