使用正确的小数点数量将小数点格式化为正确的货币(C#)。
具有小数变量的"价格"和一个区域info变量"区域": var price = new Decimal(49.9); var region = new RegionInfo(Thread.CurrentThread.CurrentUICulture.LCID); 我确实喜欢: string.Format("{0:0,0.##} {1}", price, region.CurrencySymbol); 这将返回我希望支持的三种文化中的两种(瑞典语和挪威语)中的两种.尽管对于第三种文化(丹麦语),它将错误地将货币符号放在金额之后. 这是一种替代方法: string.Format("{0:c}", price); 这适用于所有三种文化,但现在我的问题是我无法控制小数的数量. 我的问题是: 如何同时控制小数价值和货币文化的数量? 我正在寻找这样的东西(当然是行不通的): string.Format("{0:c,0.##}", price);
12 2024-04-25
编程技术问答社区
在运行时加载 "松散 "的本地化资源?
我有一个Web服务,它为我提供了生成的.RESX(仅XML),然后将其转换为二进制A .resources文件.我目前正在使用al.exe生成一个汇编文件.这是我的论点: /t:lib /c:{culture} /embed:"{.resource input}" /out:"{.dll output}" 将此组件加载到Via Assembly.LoadFrom(file)中工作正常,但是我相信我的组件没有正确生成.它没有类型,名称空间或方法可以调用,因此显然没有ResourceManager. 本质上,我只是想知道是否可以生成,加载和利用我项目在编译时知道的没有类别或名称空间的资源.谢谢. 解决方案 您的组件是卫星组件.来自 msdn : 根据定义,卫星组件只能包含资源.他们 不能包含任何可执行的代码. 如果要访问此组件的资源 - 类似的代码应该有效: ResourceManager rm = new ResourceManager(
26 2024-04-25
编程技术问答社区
使用CultureAndRegionInfoBuilder来更新内置的.Net文化
我正在尝试使用以下方法来更改.NET文化FR-CA的内置: CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuilder("fr-CA", CultureAndRegionModifiers.Replacement); try { Console.WriteLine("Updating " + cib.CultureName); cib.NumberFormat.CurrencyGroupSeparator = ","; cib.NumberFormat.CurrencyDecimalSeparator = "."; cib.NumberFormat.NumberGroupSeparator = ","; cib.NumberFormat.NumberDecimalSeparator = ".";
2 2024-04-25
编程技术问答社区
用各种小数/小数分隔符来解析小数的方法
我进行了很多文件解析,其中涉及解析十进制之类的数据类型.为了帮助使代码更可读,我一直在使用以下方法: public static decimal? ToDecimal(this string data) { decimal result; if (decimal.TryParse(data, NumberStyles.Integer | NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out result)) return result; return null; } 这对于用全挡/周期表示为十进制分离器的小数很好.但是,我希望此功能与其他标准小数分离器,尤其是逗号. (我读到还有一个阿拉伯十进制分离器:/decimal_mark#其他_numeral_systems ,但这大概也依赖于能够解析东部阿拉伯数数字). culture.currentcultu
24 2024-04-24
编程技术问答社区
ASP.NET MVC,授权后设置文化
我们想设置线程. ASP.NET MVC模型粘合剂/验证器运行(当然) 已授权用户(因为我们想从使用者表加载文化) 我们应该选择的正确扩展点是什么? 操作过滤器为时已晚,global.asax为时过早(用户尚未授权).任何有好主意的人? 解决方案 global.asax还为时过早 全局. 也许是PostAuthorizeRequest的处理程序,或者如果要在会话中存储东西,PostAcquireRequestState会做? 其他解决方案 您可以使用AuthorizationFilter,只需扩展功能中的构建即可.在授权时期,您将能够判断它们是否已获得授权并相应地执行您的逻辑. public class CustomAuthAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) {
6 2024-04-23
编程技术问答社区
C# CultureInfo.CurrentCulture显示为en_US,但我的Windows设置为南非。
我将Windows 8.1控制面板中的区域/位置更改为南非.当我从Visual Studio 2013启动我的应用程序并获得Cultureinfo.currentuiclulure时,它仍然说" en-us". public CultureInfo getCurrentCulture() { if (CultureInfo.DefaultThreadCurrentUICulture != null) { return CultureInfo.DefaulThreadCurrentUICulture; } else { return CultureInfo.CurrentUICulture; } } 我还尝试过cultureinfo.currentculture而不是当前的文化,但它们的行为方式相同.如何通过代码确定用户的真实语言环境是什么?还是我是通过Windows设置错误地设置该区域的? 我的应用程序格式货币字符串
10 2024-04-23
编程技术问答社区
显示相当于当前文化信息中的 "MMM d, yyyy"。
我已经仔细阅读了C#提供的标准DateTime格式,我似乎找不到与"短期日期"要求相匹配的标准格式化器:" 2013年5月4日".我知道我可以执行自定义格式字符串来实现目标: myDateTimeOffset.ToString("MMM d, yyyy"); 但是,此申请可能会用于其他国家.有没有办法使当前文化等同于特定格式字符串? myDateTimeOffset.ToString("MMM d, yyyy", CultureInfo.CurrentUICulture); 并适应了外国文化中同等的"短期"格式? 解决方案 我认为在您的特定要求中没有任何默认格式选项(D可能会接近).我已经在书签中概述了十多年,但我发现它仍然有用:无论如何,由于您的应用程序可能无法用于无限量的语言,我认为您的最佳选择是根据使用的实际语言(甚至需要)使用某种DateTime扩展方法和格式.
4 2024-04-23
编程技术问答社区
i18n黄色死亡屏幕
System.InvalidOperationException:Värdet null kan inte tilldelas en medlem av typen System.Boolean eftersom den är en värdetyp som inte kan ha värdet null. 谢谢微软,意图很好,我知道.好像任何真正发现此信息有用的人也会将瑞典语视为编码通用语言.摩尔达维亚人只能转向摩尔达维亚的堆叠流,然后发布其疑问以寻求快速帮助. 有人知道如何用英语获取这些消息吗? 解决方案 异常消息由线程文化控制.您可以找到一些解决方法建议在这里. 其他解决方案 Google Translate给了我们: 值null不能授予type system.boolean的成员,因为它是一种价值类型,无法为零值. 编辑: 事件尽管这种翻译并不完美,但它使我们对问题有了一个很好的了解.这是我的翻译; - ) 值null不能分配给 typ
6 2024-04-23
编程技术问答社区
本地化的Win7版本上的UI截断问题
我分别在C#.NET 3和明智的安装程序中开发了一个2 UI. UI是向导的页面.这在Win 7 English OS上可以很好地工作.但是,当我在Win7韩语或中文上部署该应用程序时.我看到截断. 我也会看到问题,即使我将字体用作任何本地化OS的默认字体都是不同的. . 我尝试的其他事情是 - 更改Windows主题,更改分辨率.但是问题仍然存在. 我想了解这种变化的原因是什么?是否有有关这种行为的正式文件?解决这个问题的方法是什么? 解决方案 在更改OS DPI设置时,很难像向导这样的"固定尺寸"形式来表现自己,而且我想您可能会在Windows的不同语言版本中遇到类似的问题. (最大的困难是必须不断重新启动您的PC进行测试,并且表单设计器受当前OS/FONT/DPI设置的影响,因此您不能在测试环境中编辑表单,因为它不会返回编码环境时工作!) 默认情况下根据目标计算机上的字体和DPI设置来缩放表单.在表单属性中,查找AutoScaleMode选项,然后
2 2024-04-23
编程技术问答社区
国际化HelloWorld程序.NET
我有一个小的测试应用程序,该应用具有具有相同精确字符串名称的2个资源文件(Resources.resx&Resources.de-DE.resx),但是一个字符串转换为德语. 对于我的表格,我将本地化属性设置为ture. 在我的应用程序中,我会得到这样的字符串: this.Text = Properties.Resources.frmCaption; 在我的释放文件夹中,我获得了一个名为International_test.resources.dll的DLL的文件夹. 我试图将其分配给设置为德国的机器,并且所有拉的字符串仍然是英语. 我尝试将International_test.resources.dll保存在de-DE文件夹中,或者只是放入我的apps目录中. 我在做什么错或需要做些什么才能使使用德语资源文件? 解决方案 幸运的是,我使用Hello World Prototype项目在我们的构建管道中测试一堆东西. 假设您已经正确设
6 2024-04-22
编程技术问答社区
如何改变.net网络应用程序中的默认文化设置?
我们的Web应用程序(.NET/C#)格式使用金额.ToString(" c"),显示了本地定位于几个不同区域的. 我们的法国candian用户更喜欢所有金额是美国格式(123,456.99 vs. fr-ca的默认Windows方式为123 456,99). 最好的处理方法是什么?我可以简单地修改Windows中每个网络服务器上的区域设置吗?还是我需要创建自定义文化? 解决方案 您可能需要考虑创建自定义文化,提供您重新制定的格式化规则的组合. MSDN上有一篇文章,描述了如何做... 简而a>对象,定义名称,设置属性并进行注册.检查文章以获取详细信息. 其他解决方案 您可以像这样修改当前文化: Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA") 您可以从web.config中提取值. 编辑: 好,对不起,我误会了. 这可能有效: decima
10 2024-04-21
编程技术问答社区
在C#中对字符串进行复数化和本地化处理
我有一个C#WPF应用程序,我正在尝试使用RESX文件全球化.它很出色.但是,我遇到了一个障碍.我有一个相对简单的多元化解决方案,其中我要显示的字符串的单数和复数形式,并且根据我在说的内容的数量选择一个. 但是,我最近对某些文化具有多种复数形式的事实达成了要求.有人在C#中遇到了一个很好的解决方案,更不用说WPF? 我见过的这个问题的规范示例来自波兰语言.抛光剂具有单数,典型和复数形式.此示例是用于"文件"一词的翻译: 1 plik 2,3,4 pliki 5-21 pliko'w 22-24 Pliki 25-31 pliko'w 解决方案 Mozilla已在Firefox 3中实施了这一点,他们有一个指南,描述了如何使用其实现在这里. 最值得注意的是,在 plularform "> collect 资源://gre/modules/pluralform.jsm 到实施的来源.必须从Firefox 3及更高的内部打开. 我还没有阅读整
2 2024-04-21
编程技术问答社区
如何在KeyDown事件中检测NumberDecimalSeparator (C#)
我正在尝试查看用户是否已按下文本框中的十进制分离器,并根据其他参数允许或抑制它. numberDecimalSeparator返回为46或'.在我的美国系统上.许多其他国家使用",作为分离器.当我按时期时,键盘事件将密钥值设置为190. 我只是继续寻找逗号/时期,还是有更好的方法? 解决方案 呼叫 CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator 获取当前用户界面文化的小数分离器.您可以使用其他文化来获取其他语言的分离器. 编辑 在我的系统中报告的166种培养物中(CultureInfo.GetCultures(CultureTypes.SpecificCultures).Count()),似乎只使用了两个分离器:时期和逗号.您可以在系统中尝试此操作: var seps = CultureInfo.GetCultures(CultureTypes.Specifi
24 2024-04-20
编程技术问答社区
有没有一个用C#+ASP.NET实现国际化的基本好教程?
我正在寻找在基于Web的软件中实施国际化的方法.当然,我不是要求一个特定的实现,只是一个简单的例子,应该指导我向右指导(如果有这样的话)方向. 例如,让我担心的一件事是日期工作.当用户在文本框中输入日期时,我应该如何根据当前语言设置(mm/dd/yyyy x dd/mm/yyyy)验证该条目? 文字本身呢,我应该在哪里存储.当然,我可以创建自己的结构,但是可以使用一些东西吗?如何创建它?以及如何在运行时检索? 解决方案 55/国际化/ 其他解决方案 asp.net Wiki 详细说明如何构建您的资源并包含大量示例.日期基于当前其他解决方案 我只想指出,取决于您的语言支持,验证日期和时间可能不像基于本地日期模式的简单正则表达式. 这里有很多策略:您可能决定仅使用jQuery UI DatePicker(使用适当的区域脚本),您可以决定提供单独的组合盒以供选择(不是很容易使用的想法) - 年,月份, 天.否则,您可以将自由形式的文本字段放在服务器端(您可以
8 2024-04-20
编程技术问答社区
按类别过滤Outlook约会
我已经编写了此代码,以在指定的时间范围内找到指定类别的所有约会的总持续时间: private readonly MAPIFolder _timing; private int CalculateTotalDuration(DateTime start, DateTime end, string category) { string filter = String.Format( "([Start] >= '{0:g}') AND ([End] (). Sum(appt => appt.Duration); } 与俄罗斯版本的Outlook一起使用时,此代码会导致以下例外(
22 2024-04-20
编程技术问答社区
改变所有页面的文字方向
我正在从事一个可以在Multi langauges中进行的Web项目,我已经完成了所有这些,我仍然有一件事. 用英语从左到右显示时的页面. 我网站上的某些语言必须从右到左 请注意,我的问题是关于整个页面而不是字段中的文字. 我该怎么做? 我正在使用此代码来启动许多语言的线程. Thread.CurrentThread.CurrentCulture = new CultureInfo(CultureName); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 我不知道我认为以前的代码对实现目标有帮助. 解决方案 bool Thread.CurrentThread.CurrentCulture.TextInfo.IsRightToLeft 参见例如: optimization.aspx?pag = 2 翻转整页使用HTML标签属性
16 2024-04-19
编程技术问答社区
在应用程序的国际化方面是否有一个最佳实践方法?
我们需要将应用程序转换为其他语言.这需要重命名我们可见的控件的.TEXT属性以及应用程序中发现的其他文字,以使我们需要转化为任何语言. 这是可以通过.Resx文件轻松完成的?我正在考虑创建主RESX键/值列表,其中键将是控制/变量/常数等的完全合格名称,然后对我们的应用进行重构以查看该文件以根据在运行时? 是否有标准或更简单的方法? 解决方案 有很多资源: 您认为可以通过使用.RESX文件来实现这一点.基本上,您为您希望支持的每种语言创建.RESX文件,如果您根据语言环境(en-us,de-de等)给它一个名称,则会自动拾取. 其他解决方案 查看当您有机会时.这是一个库,可让您使用getText进行I18N,从而使您可以遵循其余业务的最佳实践,而不是MS试图强迫您的.resx东西.
2 2024-04-19
编程技术问答社区
String.Format考虑locale还是不考虑?
string.format工作2种方法是真的: 如果我们使用内置格式,例如C,N,P ....它将考虑到语言环境设置吗? 如果我们使用自定义格式代码,例如#,## 0.000,则不会考虑语言环境设置? 在我的代码中,我使用这样的方法 string.format(" {0:#.## 0,000}",value); 因为我的国家使用逗号作为小数分离器 但结果仍然是:1,234.500,好像它将点视为十进制分离器. 请帮助! 解决方案 您想使用 cultureinfo : value.ToString("N", new CultureInfo("vn-VN")); 使用 String.Format String.Format : String.Format(new CultureInfo("vi-VN"), "N", value); 由于您在河内(来自个人资料),所以我使用了越南代码,即vn-VN. 其他解决方案 这有效.格式的
4 2024-04-19
编程技术问答社区