1

在我们开发的应用程序中,我曾多次遇到同样的问题:

我们希望允许用户以他的格式(日期,货币,...)编辑/显示它的数据,但我们只想用英文显示应用程序(出于多种原因,它是一个专业的国际应用程序,在一个域中我们主要用英语交流)。

当我们管理整个应用程序时没有问题,但是我使用的大多数第三方专业框架(Telerik,DevExpress)都使用CurrentCulture正确的格式和相应的语言显示我的数据。

所以,即使我的电脑是英文的,我的区域设置设置为fr-CH,我也会有所有的第三方用户控件都是法文的。

我无法将 设置CurrentCulture为特定的文化并将我的用户控件的格式设置为其他格式(我会放弃我的默认格式)并且我不能让 成为默认格式,CurrentCulture因为我的第三方组件会使用另一种语言.

我试图建立自己的文化(CultureAndRegionInfoBuilder),但没有成功。当我更改语言时,我的应用程序仍然使用用户特定的语言。

具体问题

我正在使用日期编辑器(基本,它有一个文本输入,可以弹出一个日历)。我想在我的操作系统语言环境中显示日期(ch-FR,所以 2013 年 1 月 15 日将是“15.01.2013”​​),但我不希望当我显示日历月/日名称时以法语显示。

正确的方法是什么?

4

2 回答 2

0

为您的目的存储原始CultureInfo文件并尝试在 中编辑属性CurrentCulture和属性,也许这会解决您的问题。CurrentUICultureCurrentThreadSystem.Threading.Thread

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
于 2013-01-28T15:22:30.570 回答
0

我通过自定义文化信息解决了我的问题:

private static void UpdateCultureInfoWithoutLangage()
{
    //We initialize a en-US cultureInfo and change all formats + number infor related
    CultureInfo cultureInfoEn = new CultureInfo("en-US");
    CultureInfo cultureInfoEnClone = (CultureInfo)cultureInfoEn.Clone();

    //Setting DateTimeFormat(Without changing translations)
    cultureInfoEnClone.DateTimeFormat.FirstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
    cultureInfoEnClone.DateTimeFormat.FullDateTimePattern = CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern;
    cultureInfoEnClone.DateTimeFormat.LongDatePattern = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern;
    cultureInfoEnClone.DateTimeFormat.LongTimePattern = CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern;
    cultureInfoEnClone.DateTimeFormat.MonthDayPattern = CultureInfo.CurrentCulture.DateTimeFormat.MonthDayPattern;
    cultureInfoEnClone.DateTimeFormat.ShortDatePattern = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
    cultureInfoEnClone.DateTimeFormat.ShortTimePattern = CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern;
    cultureInfoEnClone.DateTimeFormat.TimeSeparator = CultureInfo.CurrentCulture.DateTimeFormat.TimeSeparator;
    cultureInfoEnClone.DateTimeFormat.YearMonthPattern = CultureInfo.CurrentCulture.DateTimeFormat.YearMonthPattern;
    cultureInfoEnClone.NumberFormat = CultureInfo.CurrentCulture.NumberFormat;
    Thread.CurrentThread.CurrentCulture = cultureInfoEnClone;
    Thread.CurrentThread.CurrentUICulture = cultureInfoEnClone;
    Application.CurrentCulture = cultureInfoEnClone;
}
于 2013-01-30T08:21:34.983 回答