标签: cultureinfo

浏览器语言:autodetect vs user select?

我正在设计一个本地化的网络应用.我倾向于自动检测浏览器语言设置.但我注意到许多可敬的网站要求用户选择一种语言.是否有任何可用性问题(来自实际经验)只有自动检测用户语言?

谢谢.

locale localization web-applications cultureinfo browser-detection

7
推荐指数
2
解决办法
4142
查看次数

asp.net中的货币格式字符串

我使用的是infragistics webgrid,需要格式化货币字符串.为此我需要一个包含模式的字符串,例如"$ ### ###,00",我希望这可以从我目前的CultureInfo中找到.我怎样才能做到这一点?我是否需要从以下信息中手动撰写:

CultureInfo.CreateSpecificCulture(myLanguageId).NumberFormat.CurrencyGroupSeparator
CultureInfo.CreateSpecificCulture(myLanguageId).NumberFormat.CurrencyGroupSizes
CultureInfo.CreateSpecificCulture(myLanguageId).NumberFormat.CurrencyDecimalDigits
CultureInfo.CreateSpecificCulture(myLanguageId).NumberFormat.CurrencyDecimalSeparator
Run Code Online (Sandbox Code Playgroud)

等等

这是单线解决方案吗?

c# asp.net currency cultureinfo

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

ASP.NET全球化:Culture ="auto"页面指令,中性文化崩溃?

我遇到了一个使用内置全球化设施的ASP.NET应用程序崩溃的情况.

在具有Culture ="auto"指令的ASP.NET页面上,具有中性文化作为其浏览器语言的用户(例如"zh-Hans")将产生以下异常:

文化'zh-Hans'是一种中性文化.它不能用于格式化和解析,因此不能设置为线程的当前文化.

在System.Globalization.CultureInfo.CheckNeutral(CultureInfo文化)的System.Threading.Thread.set_CurrentCulture(CultureInfo值)在System.Web.UI.Page.set_Culture(字符串值)的ASP.somePage_aspx .__ BuildControlTree(somePage_aspx __ctrl)在ASP .somePage_aspx.FrameworkInitialize()

有任何想法吗?输入Culture/UICulture参数的垃圾通常似乎被忽略,但是这种情况导致了未处理的异常.

asp.net globalization cultureinfo

7
推荐指数
2
解决办法
8516
查看次数

使用RegEx用逗号(,)替换点(.)?

我正在开发一个C#应用程序.我想用逗号(,)改变数字十进制数字,其中我有点(.)使用正则表达式.

例如:

Price= 100,00.56
Run Code Online (Sandbox Code Playgroud)

作为表示数值的国际规则,但我瑞典他们有不同的数字方式

Price= 100.00,56
Run Code Online (Sandbox Code Playgroud)

所以我想使用RegEx将点(.)改为逗号(,)和逗号(,)改为点(.).可以指导我这个.

.net c# regex cultureinfo decimal-point

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

如何在WPF中使用Windows的自定义区域和语言设置

我在纳米比亚工作.纳米比亚不是Windows区域和语言设置的选项,但与南非共享大多数文化细节,因此我们选择英语南非,然后将货币符号自定义为"N $"(纳米比亚元)而不是"R"(南非兰特).

但是,我无法说服WPF使用自定义货币.string.format("{0:c}", foo)在代码中使用工作正常,但{Binding Path=SomeCurrencyValue, StringFormat=c在XAML中使用}`仍然使用"R"符号而不是自定义"N $"符号.

App.xaml.cs我使用以下代码设置应用程序文化:

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.LCID, true);

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
                                                        new FrameworkPropertyMetadata(
                                                            System.Windows.Markup.XmlLanguage.GetLanguage(
                                                                System.Globalization.CultureInfo.CurrentUICulture.IetfLanguageTag)));
Run Code Online (Sandbox Code Playgroud)

作为演示,这里有一些显示问题的XAML代码:

<StackPanel>
    <TextBlock>
        Formatted in XAML with: <LineBreak/>
        Text="{Binding Path=SomeCurrencyValue, StringFormat=c}" <LineBreak/>
        Result:
    </TextBlock>

    <TextBox Text="{Binding Path=SomeCurrencyValue, StringFormat=c, Mode=OneWay}"
             Margin="5"/>

    <TextBlock>
        Formatted in code with: <LineBreak/>
        return string.Format("{0:c}", SomeCurrencyValue); <LineBreak/>
        Result:
    </TextBlock>

    <TextBox Text="{Binding Path=SomeCurrencyString, Mode=OneWay}"
             Margin="5"/>

</StackPanel>
Run Code Online (Sandbox Code Playgroud)

DataContext对上述观点包含以下内容:

public double SomeCurrencyValue
{
    get { return 34.95; }

}

public string SomeCurrencyString …
Run Code Online (Sandbox Code Playgroud)

wpf localization currency cultureinfo

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

如果我指定确切的结构,为什么TryParseExact需要CultureInfo?

看着

DateTime.TryParseExact(dateString, "M/d/yyyy hh:mm:ss tt",
                           CultureInfo.InvariantCulture, 0, out dateValue)
Run Code Online (Sandbox Code Playgroud)

我提供了确切的结构来寻找: M/d/yyyy hh:mm:ss tt

如果是这样,我为什么CultureInfo还需要指定呢?

c# datetime cultureinfo .net-4.0

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

更改整个Windows窗体应用程序.NET Compact Edition的当前文化

我需要将应用程序的当前文化更改为th-TH我尝试这样做以创建以下类型的对象,并且我打算将其分配给当前线程的CurrentCulture属性

System.Threading.Thread.CurrentThread.CurrentCulture = 
    new System.Globalization.CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)

但我正在使用的.NET Compact版本没有属性中的CurrentCulture System.Threading.Thread.CurrentThread属性.

我们有办法做到这一点吗?

编辑: 我可以更改移动设备的区域设置,然后当我运行应用程序时,我能够从正确的资源文件中获取正确的文本.

但是在使用安装项目安装应用程序时,我无法获得正确的资源

这就是我所做的.

  1. 我创建了安装项目,并将本地化资源,主输出以及内容文件包含到安装项目的文件系统目录中的Application文件夹中.
  2. 然后我在调试模式下构建它并生成所需的Cab文件.
  3. 我将文件传输到我的设备,然后运行cab文件,它说安装成功.
  4. 当我运行应用程序时,它只显示英文字符串而不管设备上的区域设置(但是当我通过直接选择设备在调试模式下运行相同的应用程序时,应用程序中会显示语言资源中的正确字符串在visual studio中并在其上部署应用程序)

我还验证了所需的文件夹,如fr-CA,th-TH等,是在我的应用程序的.exe存在的同一目录中创建的

.net compact-framework cultureinfo setup-project

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

DateTime从当前文化中获取代表日,月,年的字母

我想写一个方法,从datetimeformat给我3个字母 - 代表日,月,年.

所以在en-US文化中我想要的返回值是(加上分隔符)

  • d
  • 中号
  • ÿ
  • /

在de-DE中应该返回相同的方法

  • T(T ag =天)
  • M(M onat =月)
  • J(J ahr =年)
  • .(分隔器)

我查看了DateTimeFormatInfo类表单CurrentCulture,但只能找到分隔符你知道我怎么能得到其余的吗?

var culture = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(culture.DateTimeFormat.DateSeparator);
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为Excel中的TEXT函数不接受来自InvariantCulture的格式,只能从当前文化中处理它.

所以这样的东西在德语Excel版本中无效:

=TEXT(NOW();"dd.MM.yyyy")
Run Code Online (Sandbox Code Playgroud)

这需要设置

=TEXT(NOW();"TT.MM.JJJJ")
Run Code Online (Sandbox Code Playgroud)

(如果用VBA完成它并不重要,它不会被翻译)你可以看看下面的http://www.rondebruin.nl/win/s9/win013.htm

字符串格式可以是任何东西,因为用户可以按照他的喜好输入它,我需要将其翻译成当前的文化.

c# globalization excel cultureinfo

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

带小数分隔符的数字错误地转换为Double

在使用文化信息时,将数字转换为double时,我遇到了奇怪的行为.使用荷兰文化进行
转换时"3,3",处理正确.如果我"3,3"使用美国文化转换,它会返回33.我期待一个错误.看我的例子:

static void Main(string[] args)
{
    CultureInfo cultureDutch = new CultureInfo("nl-NL");
    CultureInfo cultureUS = new CultureInfo("en-US");

    System.Threading.Thread.CurrentThread.CurrentCulture = cultureDutch;
    Console.WriteLine("Input 3,3 --> Expected 3,3");
    Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureDutch));
    // Actual result --> 3,3

    Console.WriteLine("Input 3,3 --> Expected InvalidCastException");
    Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureUS));
    // Actual result --> 33

    Console.WriteLine();
    Console.WriteLine();

    System.Threading.Thread.CurrentThread.CurrentCulture = cultureUS;
    Console.WriteLine("Input 3.3 --> Expected InvalidCastException");
    Console.WriteLine("Output = " + Convert.ToDouble("3.3", cultureDutch));
    // Actual result --> 33

    Console.WriteLine("Input …
Run Code Online (Sandbox Code Playgroud)

c# cultureinfo

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

如何在dotnetcore xunit测试中设置文化

我有以下单元测试,我从.Net Framework库移植到.Net核心xunint测试库.需要添加单元测试的项目是

https://github.com/dotliquid/dotliquid

并将被添加到所选文件中,如此处所示

在此输入图像描述

我试图添加的单元测试是

[Test]
public void ParsingWithCommaDecimalSeparatorShouldWork()
{
    var ci = new CultureInfo(CultureInfo.CurrentCulture.Name)
             {
                 NumberFormat =
                 {
                     NumberDecimalSeparator = ","
                     , NumberGroupSeparator = "."
                 }
             };
    Thread.CurrentThread.CurrentCulture = ci;

    var t = Template.Parse("{{2.5}}");
    var result = t.Render( new Hash(), CultureInfo.InvariantCulture );
    Assert.AreEqual( result, "2.5"   );
}
Run Code Online (Sandbox Code Playgroud)

但是测试无法在dotnet核心中编译.

严重级代码描述项目文件行抑制状态错误CS1061"线程"不包含"CurrentCulture"的定义,并且没有可以找到接受"Thread"类型的第一个参数的扩展方法"CurrentCulture"(您是否缺少using指令或程序集引用?)DotLiquid.Tests(net451)C:\ Users\phelan\workspace\dotliquid\src\DotLiquid.Tests\OutputTests.cs 113 N/A

我需要对不同的文化进行不同的单元测试.我想创建一个XUnit理论,其中每个实例都在不同的文化中传递单元测试以进行验证.这是如何在.NetCore中完成的?

c# cultureinfo xunit .net-core

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