标签: culture

如何从 .NET 中的 CultureInfo 获取 ISO 3166 国家/地区代码

给定一个CultureInfo对象,如何获取两个字符的 ISO 3166 国家/地区代码?例如en-US,来自,我想要US和来自en-GB,我想要GB。我还需要处理文化可能没有国家/地区代码的情况。

.net culture cultureinfo iso-3166 .net-core

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

如何设置 dotnet 日志记录的区域性?

我正在使用 dotnetcore 3.1 中的日志记录。当我在记录器中使用日期的复合格式时,我得到的格式与在应用程序代码中将日期转换为字符串时得到的格式不同。

这段代码:

ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
_logger = loggerFactory.CreateLogger<Program>();
_logger.LogInformation("TEST date via format string {}", DateTime.Today);
_logger.LogInformation("TEST date with concatentation:" + DateTime.Today);
Run Code Online (Sandbox Code Playgroud)

产生以下输出(注意天和月顺序的变化):

TEST date via format string 08/26/2020 00:00:00
TEST date with concatentation:26/08/2020 00:00:00
Run Code Online (Sandbox Code Playgroud)

我很惊讶记录器没有从应用程序继承文化。我是否遗漏了一些东西,如果没有,我如何控制记录器的文化?

c# culture logging .net-core .net-core-3.0

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

asp.net中的Convert.ToDateTime问题

我有一个应用程序在西班牙语服务器中没有任何问题.

当我将应用程序上传到在线服务器(英文窗口)时,我使用Convert.ToDateTime和Convert.ToInt32获得异常(类型为"输入字符串不是有效的Datetime/Int32").是否有任何web.config行可以帮助我解决这个问题?我尝试用西班牙文化添加全球化元素,但没有奏效.

你能帮我个忙吗?

提前致谢.Josema.

c# asp.net formatting culture web-config

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

这两个字符串之间有什么区别?

使用nUnit测试特定文化的输出(货币格式),但我们得到以下结果.

  Fail: Formatting currency amount
  String lengths are both 11. Strings differ at index 2.
  Expected: "12 765,87 €"
  But was:  "12 765,87 €"
  -------------^
Run Code Online (Sandbox Code Playgroud)

我们看不出字符串之间的区别.我们的预期结果使用"空格"字符.

我们可以将不同的空格字符放入可接受的结果中以使测试通过吗?

顺便说一下,测试的培养物是fr-FR.

编辑:感谢Adam,你发现了unicode角色.我们改变了我们的预期结果,现在每个单元测试通过.

c# string culture nunit

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

在不创建应用程序的情况下确定PC的本地文化

有什么方法可以在不运行应用程序的情况下确定PC的本地文化(例如en-US)?我尝试在“控制面板”中查找| 区域设置(运行WinXP),但是我不知道那里的选择如何映射到PC的文化。

我正在寻找不需要创建.exe的解决方案,例如从命令提示符(不是PowerShell)运行命令,或者运行VbScript或JS文件(只要我们了解的是真正的文化,而不是IE)设置。)

谢谢

.net culture localization cultureinfo

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

请解释"Fanboys如何看待.NET数据访问策略"

这个图表已经在我关注的博客上多次链接,我感觉自己就像一个没有得到它的人.所以,在这里走出困境并询问这个社区.请在这里的博客文章中解释这个网格.

替代文字

.net culture persistence data-access

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

C#:如何为Double.Parse显式设置文化(字符串num)

我下载了一个读取文件的程序,然后将双精度值从String解析为Double.但是我得到一个例外,因为这个文件包含带有'.'的数字.分隔符,但在我的文化中有','.如何明确设置文化?

c# culture parsing

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

ASP.Net:为string.Format()设置正确的货币设置

在我正在使用的ASP.Net网站中

String.Format("{0:C}", param)  
Run Code Online (Sandbox Code Playgroud)

格式化货币值.在我的本地机器上这很好用,但是当将网站部署到服务器时,输出从€切换到$.

显然服务器有不同的文化设置,是否有一种简单的方法来改变这个应用程序?(无法直接访问服务器设置)

我可以更改web.config条目吗?

c# asp.net culture currency string-formatting

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

ASP.NET MVC中的文化问题3

我想在我的网站上显示多种语言和UI文化.我启用了IIS 7标志,它自动从浏览器中获取文化,如下所示:

<globalization 
    enableClientBasedCulture="true"
    culture="en-GB"
    uiCulture="auto:en"/>
Run Code Online (Sandbox Code Playgroud)

这非常有效,因为加载了正确的Resources文件,并显示正确的文化(GB为0.00; DE为0,00).

然而,这有一个意外的干扰我的外部服务的问题,例如这里是与PayPal接口的代码.

var paymentDetails = new PaymentDetailsType
{
    ItemTotal = new BasicAmountType
    { 
        currencyID = currencyCode,
        Value = basket.SubTotal.ToString("0.00")
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

这段代码基本上创建了一个像这样格式化的字符串'50.25',但是当PayPal总是需要点小数点时,当选择具有逗号作为小数点(例如DE - 德语)的文化时,ToString("0.00")生成'50,25'因此我的代码失败.

什么是纠正这个的最佳方法?我仍然希望将文化设置为用户的文化,但是我想设置我的代码的某些部分以使用我自己的文化.

我知道我可以用特定的文化来养活这种ToString()方法,但这看起来非常苛刻.更专业的清洁方法?

asp.net-mvc culture localization asp.net-mvc-3

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

C# - XElement和文化

我遇到了XElement和Culture的问题.

我的当地文化是法国人.浮动值使用逗号而不是点编写.

Console.WriteLine(1.1d);
//1,1
Run Code Online (Sandbox Code Playgroud)

但是,当我在XElement中放入一个double时,它以美国格式存储.

XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
Console.WriteLine(myXmlElement.Value);
//1.1
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试解析我的XElement的值时,我得到一个FormatException.

XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
double myDouble = double.Parse(myXmlElement.Value);
//Throws a FormatException
Run Code Online (Sandbox Code Playgroud)

我发现这种行为真的很奇怪.当我写一个XDoucment时,它不是写在应用程序或线程的文化中,而是总是在美国文化中.我错过了什么吗?我有一些解决方法来表现我期望的方式,但我发现它们并非"干净".

//This will work
XElement myXmlElement = new XElement("ADoubleElement", 1.1d.ToString());
double myDouble = double.Parse(myXmlElement.Value);
//This will also work but if I write XElement, it will not have the correct Culture
XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
double myDouble = (double)myXmlElement;
Run Code Online (Sandbox Code Playgroud)

.net c# xelement culture

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