问题标签 [globalization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 在 .NET 中使用小数类型的问题
我对.NET 和使用十进制类型有一些奇怪的问题。我的 Web 应用程序使用以下全球化设置:
考虑到这一点,请考虑以下内容:十进制值 123.00 变为 GBP 123.00 英镑和 EUR 123,00(注意逗号)。当我想从十进制值 123,00 (EUR) 再次回到 GBP 时,我遇到的问题出现了,因为它变成了 123,000 - 这是一个大问题。
在这种情况下,我的应用程序已根据检测到的文化查阅查找表,并以该货币显示价格。只有当用户做出选择并且数据准备好发送到我们的支付网关时才会出现问题,这会将 123,00 欧元转换为 123,000 欧元。
有什么想法可以克服这个问题吗?
asp.net - ASP.NET 本地化问题
我已成功将本地化添加到我的网站。第二天来了,还是不行。在阅读了很多帖子并做了一些我自己的故障排除之后。我发现页面忽略了 page.aspx.en-US.resx。因为我没有页面的标准 resx,所以它显示了我在设计器中的标签标题。我刚刚取出 en-US 并将其设为默认值(page.aspx.resx)。该页面正确显示资源文件中的字符串。我使用了 MSDN 上的教程和您可以在整个互联网上找到的相同教程,我什至为 MSDN 上的教程做出了贡献。当您使用身份验证或模拟时,您必须通过 web.config 授予对 APP_LocalResources 文件夹的访问权限
我昨天发现并解决了问题,但现在它不使用 page.aspx.en-US.resx ,除非它是默认的我觉得很奇怪。有人有解决方案或建议吗?
asp.net - ASP.NET 从哪里获得文化设置?
在 ASP.NET 应用程序中,我将区域性设置为 lv-LV。一切都很好,但默认的短日期格式似乎是“yyyy.mm.dd”。客户希望它是“dd.mm.yyyy”(这实际上是 LV 标准)。ASP.NET 从哪里获得特定文化的日期/时间设置?如何在不影响其他文化的情况下为单一文化更改它们(应用程序应该是可本地化的)?
asp.net-mvc - 将参数映射到模型时使用哪种语言?
我在 InvariantCulture (16.4) 中发布了一个十进制形式值,并且很惊讶它没有到达我的德语系统上的模型。
我必须使用德语格式(16,4)。有没有办法配置用于解析参数的语言?
编辑:调试到源代码后发现 ValueProviderDictionary 中的语言特定部分
填充字典。那里的文档内容如下:
- 请求表单提交(应该具有文化意识)
- 来自 RouteData 的值(可能来自输入的 URL 或来自路由的默认值)
- URI 查询字符串
1.takes CurrentCulture 2./3。采取不变文化
这对我不起作用:如果我发布一个值或将其放入查询字符串中,我不会期望在使用文化方面有不同的行为。如果用户手动填写可解析的值,这可能是必要的,但如果您填写列表框的值,这很奇怪。如果我可以在两个版本之间切换,我认为理想的解决方案是。
无论如何,我现在需要找到一种方法来在调用 PopulateDictionary 之前设置 CultureInfo.CurrentCulture。我就是这样做的:
language-agnostic - 网站应该如何处理本地化设置?(来自“什么是常见的 UI 误解和烦恼?”)
我选择将其作为一个问题本身,因为它在原始帖子的评论中引起了如此多的争论。
有趣的是,SO 上的很多人(他们是开发人员)只是没有获得本地化。这是我对它应该如何工作的看法:
在我查看过的所有浏览器中(以及那里的 .NET 开发人员),当您查看用户的文化偏好时,它采用以下格式:语言-文化。
所以我们有:
- zh-CN - 英语 - 英国文化
- en-US - 英语 - 美国文化
- en - 英语 - 不变的文化。
- fr-FR – 法语 – 法国文化
- fr-CH – 法语 – 瑞士文化
- de-CH – 德语 – 瑞士文化
- de-DE – 德语 – 德国文化
有关.NET 框架支持的完整列表,请参阅MSDN 。
当我访问一个网站时,它知道我想要从 en 部分开始使用英语,并且它知道我对它偏向英国感兴趣(数字格式、日期格式)。因此,当我访问 google.com 并将我带到 google.de(因为我的 IP 地址)时,如果 google.de 以英语向我显示所有内容但由于 google.de 是德语完全错误,那完全没问题。我几乎无法控制我的 IP 地址,但可以完全控制我的语言和文化设置。如果您有兴趣,Microsoft 的新搜索引擎 (bing.com) 会处理得当。让我们希望微软可以像谷歌一样学习如何进行搜索,或者谷歌可以像微软一样学习本地化;)
MSDN有另一篇好文章在这里了解更多信息
那么您对网站应如何处理本地化有什么建议?
asp.net-mvc - 在 asp.net mvc 中对本地和全局资源进行单元测试
我有一个包装 GetGlobalResourceObject 和 GetLocalResourceObjet 的类,因此它们可以在 MVC 中轻松使用。然后模型验证类从资源文件中动态加载错误消息。问题是单元测试。代码使用“~/”,虽然在运行解决方案时一切正常,但我看不到如何进行单元测试,因为我总是收到以下错误“System.Web.HttpException:应用程序相对虚拟路径'~/ ' 不能设为绝对,因为应用程序的路径未知。”
引发异常的代码如下,用于计算表达式并返回全局资源对象。
关于如何测试这个和其他使用资源文件的代码的任何想法?
sql - 从全球化日期/时间格式(可能是 ISO8601)转换为 SQL Server 日期时间类型
是否有字符串格式来表示 SQL 将能够解析并转换为另一个偏移量的日期时间(例如 EST -> UTC)。
我有一个来自用户的字符串,例如:
我希望能够将字符串转换为等效的 UTC 并将其存储在日期时间字段中。这样:
应该产生这个:
换句话说,给定第一个字符串,我想存储一个值为“2009-06-26 18:30”的日期时间。
此外,我们必须假设服务器与用户不在同一个时区(因此我们不能只检测偏移量 datediff(gettime(), getutctime())。
我曾尝试使用 convert(...) 和 cast(... as datetime) 但没有运气。
在 SQL Server 2005 中有没有办法做到这一点?
c# - 浏览器中的全球化、缓存控制和 HTTP 日期
我需要有关浏览器以及它们如何在 HTTP 标头中发送更新日期的教育。我担心如果用户使用不同的浏览器或本地化,我将无法进行字符串比较。
目前,我有这样的代码来处理请求:
目标:我不想让它坏掉。
所以我检查了几个浏览器的请求标头:
当我使用 IE 时,以英语为我的语言:
当我使用 IE 时,以法语(比利时)作为我的语言(我本来希望使用“mar”而不是“Tue”):
无论如何,我从 Firefox 得到这个:
这对我来说看起来不错,因为日期似乎都使用英文缩写和单一格式(RFC 1123) - 但我不确定这是否适用于所有主要浏览器以及所有全球化和操作系统(我只可以在 Windows 机器上进行测试)。
我做对了吗?
asp.net - HttpContext.GetGlobalResourceObject 始终返回 null
我在 App_GlobalResources 文件夹中创建了两个文件:
两者都包含“SiteTitleSeparator”的值。
这是我正在尝试做的事情(以下行始终返回 null):
请注意,页面上的 Culture 属性已设置。
VB 和 C# 中的答案都将受到欢迎。
c# - Process.Start 指定文化
在一个 web 应用程序中,我有一个 IHttpHandler,它在被调用时会启动一个连接到 firebird 数据库的常规应用程序,除此之外,它会解析数据库中的一些日期。
从桌面运行时,应用程序可以毫无问题地执行应有的操作。但是当它从 httpHandler 启动时,会以错误的文化结束,并且无法解析日期。我已经设置了 web.config 和 CurrentThread.CurrentCulture 的文化,但它仍然以错误的结果告终。所有这些都是从文化设置为 sv-SE 的英文 Windows Server 2003 运行的。
那么有没有办法使用 System.Diganotics.Process.Start 以特定文化启动应用程序?如果没有新启动的流程使用哪种文化?