在Windows 10 64位窗口中将应用形式从美国文化转换为fa-IR文化的问题

时间:2019-08-09 19:43:14

标签: cultureinfo culture

尽管使用了正确的代码,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;

但是在运行程序之后,什么也没发生。当前的文化仍然是美国!我也要这样说,我不会在其他任何地方更改文化计划。 not change culture

2 个答案:

答案 0 :(得分:0)

我认为,在更改系统的文化之后,系统的语言也应该更改。虽然我错了。通过添加以下代码,我能够将Windows语言更改为波斯语。

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(culture);

答案 1 :(得分:0)

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;
}