标签: cultureinfo

.NET Core 和 .NET Framework 之间的 CultureInfo 有所不同

.NET Core.NET Framework之间的 CultureInfo 似乎存在一些差异。这有什么理由吗?

例子:

var italian = CultureInfo.GetCultureInfo("it").TextInfo.CultureName;
Run Code Online (Sandbox Code Playgroud)

.NET Core上解析为:

it
Run Code Online (Sandbox Code Playgroud)

虽然它之前在.NET Framework上解析为:

it-IT
Run Code Online (Sandbox Code Playgroud)

这会破坏一些单元测试。在两个干净的控制台项目中运行它会产生不同的结果。尝试从 Nuget 添加 System.Globalization,结果没有任何差异。

是否需要一些配置才能使其相同,或者它们是否完全破坏了 CultureInfo?

c# globalization locale cultureinfo .net-core

5
推荐指数
1
解决办法
651
查看次数

为什么 TextInfo.ToTitleCase 在字母全部为大写的字符串上无法正常工作?

你能看一下我的样品吗?

在此输入图像描述

该结果由以下示例产生:

var str = @"VIENNA IS A VERY BEAUTIFUL CAPITAL CITY.";
var title = new CultureInfo("en-US", false).TextInfo.ToTitleCase(str.ToLower());
MessageBox.Show(title);
Run Code Online (Sandbox Code Playgroud)

因为该程序的语言是土耳其语。我想提请您注意虚线字母 I。但我们都知道正确的方法应该是这样的:

维也纳是一个非常美丽的首都。

我怎样才能得到真实的结果?

c# string title-case cultureinfo

5
推荐指数
1
解决办法
483
查看次数

.NET 对不支持的 ISO 639-2 文化的多语言支持

我目前正在开发一个 ASP.NET 4.8 MVC 单页应用程序,预计支持多种语言。从各种资源中,我发现实现此目的的一种方法是使用App_GlobalResources每种受支持语言的资源文件。

我在页面中添加了一些导航链接,用于更新线程的当前文化信息,从而将这些语言资源拉入我的应用程序中。

var cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)
                             .FirstOrDefault(x => x.ThreeLetterISOLanguageName == language);

if (cultureInfo == null)
     cultureInfo = CultureInfo.GetCultureInfo("en-US");

Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Run Code Online (Sandbox Code Playgroud)

这对于有文化支持的语言来说似乎效果很好。(IE:“eng”拉回en-us并找到Content.en.resx文件,“spa”检索Content.es.resx等)但是我遇到了困难,语言出现在 ISO639-2 列表中(苗族、凯伦族)但没有关联的 CultureInfo跟他们。

我尝试过使用这些来分离文化CultureAndRegionInfoBuilder,但根据我的理解,这只能在我的计算机上运行,​​而不能在网络上运行。我也无法“破解”现有文化 - 即采用越南语并替换其ThreeLetterISOLanguageName和其他属性 - 因为这些属性是只读的。

当 CultureInfo 不可用时,是否有明确的方法告诉我的代码引用特定的内容文件?还是我以完全错误的方式处理这个问题?

c# asp.net-mvc multilingual cultureinfo .net-4.8

5
推荐指数
0
解决办法
472
查看次数

我们在哪里可以看到命名语言值的完整列表?

我注意到我们可以通过使用来设置表单的语言Xml:lang="en-US".我想看到其他语言的名称,但不确定从C#访问它们的位置.

请帮忙.

编辑 我更喜欢知道列出值集的枚举类型.有可用吗?或者我们必须自己创造?

因为它似乎没有可用的枚举类型,所以是我自己创建的.

c# wpf multilingual cultureinfo visual-studio-2010

4
推荐指数
2
解决办法
6821
查看次数

使用母版页在ASP.NET应用程序上切换语言

我正在使用Visual Studio 2008和ASP.NET来构建Web应用程序.我的大多数网页都基于一个母版页.该母版页包含三个用作语言切换的按钮链接; 该Click事件处理程序是这样的:

protected void lbuLangEN_Click(object sender, EventArgs e)
{
    this.SwitchLanguage(string.Empty);
}  

protected void lbuLangES_Click(object sender, EventArgs e)
{
    this.SwitchLanguage("es");
}
Run Code Online (Sandbox Code Playgroud)

然后我有我的私人方法SwitchLanguage:

private void SwitchLanguage(string culture)
{
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该足以使基于我的母版页的页面表现出本地化的行为,即resx根据文化从适当的本地文件中获取资源.但是,它不起作用.它们总是以西班牙语出现,这是我浏览器的默认语言.我在入口和出口处设置了一些跟踪消息SwitchLanguage,显然当前线程没有改变它的文化信息:每次SwitchLanguage调用时,当前线程的文化都是"es-ES",无论我的代码刚刚设置了什么.

我的代码或我采用的方法有问题吗?谢谢.

asp.net localization master-pages cultureinfo

4
推荐指数
1
解决办法
1万
查看次数

.net文化特定的12/24小时格式

有没有办法保持文化特定的日期时间格式,但强制12/24小时渲染?我知道我可以用实际的日期/时间格式字符串做很多事情HH:mm:ss ,hh:mm:ss但我想尊重当前的用户文化格式(即mm/dd/yyyyyyyy/mm/dd等),只需强制12/24小时的时间渲染.

c# wpf datetime cultureinfo

4
推荐指数
2
解决办法
1万
查看次数

从当前线程文化中获取区域设置代码

我正在使用ac#application.如果我访问

Thread.CurrentThread.CurrentCulture
Run Code Online (Sandbox Code Playgroud)

对象,从检查中我发现它的文化设置为en-GB,我该如何访问GB值?我看着这个物体,并没有明显存放的地方.

c# cultureinfo currentculture

4
推荐指数
1
解决办法
3772
查看次数

文化信息名称

我正在culture根据所选货币更改应用程序。

例如。

_culture = new CultureInfo("en-US");
_culture = new CultureInfo("fr-FR");
Run Code Online (Sandbox Code Playgroud)

在什么地方可以得到所有与工作有关的文化信息的名称.net

我找到了大多数,但错过了像这样的几个国家

斐济元(FJD),瑞典克朗(SEK),冰岛克朗(ISK),斯里兰卡卢比(LKR)和巴西雷亚尔(BRL)

如果有人知道我能找到这些货币的任何参考文献,那将是很好的。

谢谢

.net c# currency cultureinfo winforms

4
推荐指数
3
解决办法
5079
查看次数

如何在wpf中更改应用程序文化?

这是我的代码.

double value = double.Parse(Utility.GetParamValueOrDefault(omRecord.paramList[i].value, "0"),CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误 FormatException:输入字符串格式不正确

我已经阅读了StackOverFlow的一些线程,说我需要将以下代码添加到我的WPF应用程序的main()中.

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误,我的CurrentCulture仍然不是en-US.

c# wpf cultureinfo

4
推荐指数
2
解决办法
1万
查看次数

十进制?类型不是特定于文化的

我使用以下代码行将a转换decimal为a string:

decimal a = 0;
a.ToString();
Run Code Online (Sandbox Code Playgroud)

和Resharper给了我以下警告:" 指定字符串文化表达 ".我想这是有道理的,因为有些文化可能会使用"." (点)或","(逗号)作为小数点.

但是,以下代码行:

decimal? a = 0; //a is now nullable
a.ToString();
Run Code Online (Sandbox Code Playgroud)

不要出现相同的警告.我想知道这是否是Resharper中的一个错误,或者是否有关于可空的特殊内容decimal

c# resharper cultureinfo

4
推荐指数
1
解决办法
70
查看次数