标签: culture

如何检测KeyDown事件中的NumberDecimalSeparator(C#)

我正在尝试查看用户是否在文本框中按了小数点分隔符,并根据其他参数允许或禁止它.

NumberdecimalSeparator返回46或'.' 在我的美国系统上.许多其他国家使用','作为分隔符.当我按下句点时,KeyDown事件将KeyValue设置为190.

我只是继续寻找逗号/句号,还是有更好的方法?

c# culture internationalization keyboard-events

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

ASP.Net验证文化名称

我们有一个多语言网站,利用asp.net 2.0文化.通过将url重写为查询字符串来设置当前文化.(〜/ es/blah.aspx是〜/ blah.aspx的西班牙语版本 - 改写为〜/ blah.aspx?lang = es)

测试文化的代码如下:

    System.Globalization.CultureInfo ci;
    try
    {
        ci = new System.Globalization.CultureInfo(Request.QueryString["lang"] ?? string.Empty);
    }
    catch
    {
        ci = new System.Globalization.CultureInfo(string.Empty);
    }
Run Code Online (Sandbox Code Playgroud)

如果没有文化集,则默认为英语,127.当存在文化时,该页面上的所有链接都将使用正确的文化名称预先设置.

一些蜘蛛如何以〜/ www.test.com/blah.aspx的形式获得了一些链接,并用www.test.com的文化锤击我们的网站,并充斥着我们的错误记录.

除了捕获异常之外,有没有办法测试文化名称是否有效?

.net c# asp.net culture

5
推荐指数
4
解决办法
8363
查看次数

C#为课堂设定特定的文化

我有一个C#类有各种方法.我想en-US在这个类的所有方法中使用culture.我可以为特定班级设置文化吗?

背景:我有List<object>一些,有些object是数字,有些是字符串.我想用美国文化写的所有数字,但我不知道哪些是数字.这个objectToString()似乎没有采取文化论证.

c# globalization methods culture

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

改变Silverlight应用程序的文化

我目前正在开发一个Silverlight应用程序.我有一些datagrids/textblocks,我使用标准绑定来显示值,其中一些是日期.例如

<sdk:DataGrid AutoGenerateColumns="False" IsReadOnly="True" ItemsSource="{Binding Path=MyCollection}">
  <sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Binding="{Binding Path=Name, Mode=OneWay}" Header="Agent"/>
    <sdk:DataGridTextColumn Binding="{Binding Path=UpdateTime, Mode=OneWay}" Header="Update Time"/>
  </sdk:DataGrid.Columns>
</sdk:DataGrid>
<TextBlock Text="{Binding Path=LastUpdatedTime}"/>
Run Code Online (Sandbox Code Playgroud)

这个结合得很好,但是日期总是显示为美式(m/d/y),而我想要显示它们的英国风格(d/m/y).我尝试使用托管应用程序的页面上的HTML标记设置文化

<param name="uiculture" value="en-GB" />
<param name="culture" value="en-GB" />
Run Code Online (Sandbox Code Playgroud)

Application_Start我的Silverlight应用程序的

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
Run Code Online (Sandbox Code Playgroud)

但这些都没有任何区别.我有一个实现IValueConverter接口的自定义类,我在Convert方法上添加了一个断点,传入的CultureInfo参数是en-US,我该如何更改文化?

silverlight culture localization silverlight-4.0

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

C#Culture和Java Locale不匹配

考虑这种比较:

String a = "\u00C4";       // "LATIN CAPITAL LETTER A WITH DIAERESIS"
String b = "\u0041\u0308"; // "LATIN CAPITAL LETTER A" and "COMBINING DIAERESIS"
Run Code Online (Sandbox Code Playgroud)

在C#丹麦文化中比较这些,返回false:

Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK", false);
Console.WriteLine(a.Equals(b, StringComparison.CurrentCulture));   // false
Run Code Online (Sandbox Code Playgroud)

在Java丹麦语区域中比较这些,返回true:

System.out.println(Collator.getInstance(new Locale("Danish (Denmark)").equals(a,b)); // true
Run Code Online (Sandbox Code Playgroud)

我列出了两种环境中的所有语言环境/文化,并确认选择了正确的语言环境/文化.我错过了什么吗?有什么区别?

c# java culture locale

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

MVC3显示日期+没有格式字符串的短时间

在MVC中你可以做到

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy h:mm tt}"]
Run Code Online (Sandbox Code Playgroud)

这将转化为

10/12/2011 1:30 PM

这对于en-US用户来说是正确的

但是让我们说瑞典用户访问该网站(sv-SE)

然后我想要

2011-10-12 13:30

所以我不能使用格式字符串..如果我从模型中删除格式属性我会得到

2011年12月10日下午1:30:20为en-US和2011-10-12 13:30:20为sv-SE

如何在没有秒的情况下获得正确的格式?

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

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

为什么比较两个相等的波斯单词不会返回0?

我们有两个相同的字母'ی'和'ي',第一个作为主要信件在Windows 7之后出现.
回到旧版XP,我们将第二个作为主要版本.
现在,如果一个客户端在Windows XP上,另一个客户端在Windows 7上,我得到的输入被确定为不同.
我也尝试过使用波斯文化而没有成功.
我错过了什么吗?
编辑:不得不改变单词以便更好地理解..现在它们看起来很相似.

foreach (CompareOptions i in Enum.GetValues(new CompareOptions().GetType()).OfType<CompareOptions>()) 
    Console.WriteLine( string.Compare("??????", "??????", new CultureInfo("fa-ir"), i) + "\t : " + i );
Run Code Online (Sandbox Code Playgroud)

产出:

-1       : None
-1       : IgnoreCase
-1       : IgnoreNonSpace
-1       : IgnoreSymbols
-1       : IgnoreKanaType
-1       : IgnoreWidth
1        : OrdinalIgnoreCase
-1       : StringSort
130      : Ordinal
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net culture cultureinfo

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

您是否可以像.NET一样在javascript中获取文化信息字符串?

我需要从浏览器的语言中获取文化字符串。

我考虑过从javascript这样获取代码:

var userLang = navigator.language || navigator.userLanguage;
Run Code Online (Sandbox Code Playgroud)

但这只给了我从.NET获得的文化信息的第一部分:

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

因此,javascript为我提供了“ de”或“ pl”,而不是.NET中的“ de-DE”或“ pl-PL”。有没有办法获取“完整信息”?

javascript c# asp.net culture cultureinfo

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

.NET-加拿大DateTime格式错误

我目前有一个需要支持多种文化的应用程序。一个日期字符串被传入并被解析为一个DateTime对象。为了允许多种文化,我首先设置线程的文化和UICulture。

这是我的代码示例:

首先,我为此线程设置了区域性。这是通过URL(例如en-us,en-ca,fr-ca)传递的:

CultureInfo ci = new CultureInfo(culture, false);
Thread.CurrentThread.CurrentUICulture = ci;
Thread.CurrentThread.CurrentCulture = ci;
Run Code Online (Sandbox Code Playgroud)

然后,我将一个也传入URL的日期字符串转换为DateTime。根据文化的不同,日期将以mm / dd / yyyy或dd / mm / yyyy传递。

我用以下代码解析日期字符串:

DateTime DateTimeObject;
bool validDate = DateTime.TryParse(DateStringFromURL, Thread.CurrentThread.CurrentCulture, DateTimeStyles.None, out DateTimeObject);
Run Code Online (Sandbox Code Playgroud)

TryParse适用于大多数区域性,并提供了有效的datetime对象。但是,en-ca和fr-ca会出现问题。如果传入了错误的格式,则日期字符串将无法正确解析。

下面显示了每种文化.NET似乎期望的格式:

         dd/MM/yyyy    MM/dd/yyyy
EN-CA      Valid        Invalid
FR-CA     Invalid        Valid
Run Code Online (Sandbox Code Playgroud)

编辑:更确切地说,这里是导致我出现问题的示例:

对于EN-CA:

DateTime.Parse("26/08/2014") //VALID
DateTime.Parse("08/26/2014") //EXCEPTION THROWN
Run Code Online (Sandbox Code Playgroud)

对于FR-CA:

DateTime.Parse("26/08/2014") //EXCEPTION THROWN
DateTime.Parse("08/26/2014") //VALID
Run Code Online (Sandbox Code Playgroud)

这与其他系统如何处理这种文化的日期格式相反。

为什么格式看似倒退?这是.NET 4.5的错误吗?

任何和所有帮助将不胜感激,谢谢。

注意:.NET版本4.5

.net c# culture datetime

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

为什么有些文化默认围绕货币小数?

我注意到,当使用框架函数string.Format格式化货币值时,在某些文化中,此函数默认情况下会舍入小数.例如,在使用马来西亚林吉特时:

CultureInfo culture = new CultureInfo("ms-MY");
someLabel.Content = string.Format(culture,"{0:C}", 1.64m);
Run Code Online (Sandbox Code Playgroud)

产出:RM2

但是,当使用其他货币(如美元,欧元或其他货币)时,您将获得原始值,例如:

CultureInfo culture = new CultureInfo("sv-SE");
someLabel.Content = string.Format(culture,"{0:C}", 1.64m);
Run Code Online (Sandbox Code Playgroud)

产量:1.64kr

我知道我可以指定CultureInfo类中的小数位数,但问题是,为什么这种情况发生在一些货币而不是其他货币?预计一些货币默认为四舍五入?

.net c# culture string.format

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