我正在开发一个Web应用程序.
我需要正确显示一些十进制数据,以便可以将其复制并粘贴到GUI不受我控制的某个应用程序中.
GUI应用程序是区域设置敏感的,它只接受在系统中设置的正确的小数分隔符.
我可以猜测小数分隔符Accept-Language和猜测在95%的情况下是正确的,但有时它会失败.
有没有办法在服务器端(最好是我可以收集统计数据),或在客户端?
更新:
任务的重点是自动完成.
事实上,这个webapp是一种传统GUI的在线界面,有助于正确填写表单.
使用它的用户大多不知道小数分隔符是什么.
该Accept-Language解决方案的实施和工作,但我想改善它.
UPDATE2:
我需要检索一个非常具体的设置:小数分隔符设置Control Panel / Regional and Language Options / Regional Options / Customize.
我处理四种操作系统:
所有100%的客户都在俄罗斯,遗留申请涉及俄罗斯政府发布的表格,因此要求一个国家将收取100%的俄罗斯联邦,GeoIP将收益80%的俄罗斯联邦和20%的其他(不正确)答案.
我正在测试一个网站的伪本地化.
我可以将Internet Explorer配置为具有自定义接受语言:
qps-ploc(即Pseudo(Base)语言环境)
现在,当Internet Explorer发出http请求时,接受语言将引导qpc-ploc:
GET https://stackoverflow.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: qps-ploc,en-US;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: stackoverflow.com
Run Code Online (Sandbox Code Playgroud)
如何对Chrome执行相同的更改?到Firefox?
更新
还应注意,Internet Explorer 尊重我的Windows首选项.我的Windows配置为使用 …
localization google-chrome internationalization pseudolocalization http-accept-language
我的电脑配置的文化不是en-US.
使用本机Win32 GetDateFormat函数时,我得到了正确格式化的日期:
这是对的; 以及Windows呈现它的方式:
任务栏
区域和语言设置
Windows资源管理器
外表
当我尝试使用我当前的语言环境将日期转换为.NET中的字符串时,例如:
DateTime.Now.ToString();
DateTime.Now.ToString(CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)
我得到一个不正确的日期:
在使用有缺陷的.NET代码的Windows中,.NET中的这个错误很明显:
Windows事件查看器:
任务计划程序:
SQL Server Management Studio:
我如何使.NET没有错误?
如何使用当前文化(正确)将日期和时间转换为字符串?
注:允许用户设置自己的Windows任何区域的喜好,他们想要的.就像现在一样,我的程序将无法正确处理 有效设置.告诉用户,"不要这样做"是非常卑鄙的.
类似的例子来自Delphi,它假设日期分隔符永远不能超过一个字符.当Windows配置了使用多个字符作为日期分隔符的区域设置时,例如:
- sk-SK(斯洛伐克 - 斯洛伐克):
.日期应格式化为:
Run Code Online (Sandbox Code Playgroud)22. 11. 2011代码库无法接受长于一个字符的日期分隔符,并回退到:
Run Code Online (Sandbox Code Playgroud)22/11/2011在过去,有些人可能会建议你不要打扰这种边缘情况.这些建议对我没有任何影响.
我会避免与想要通过更改标题来改变我的问题含义的人进行一场惹人喜爱的比赛.但问题不仅限于伪语言环境,专门用于查找应用程序中的错误.
以下是来自世界各地的日期格式的唯一列表:
.net localization internationalization datetime-format pseudolocalization
你如何测试你的应用程序Iñtërnâtiônàlizætiøn合规性?我告诉人们将Unicode字符串Iñtërnâtiônàlizætiøn存储到每个字段中,然后查看它是否在输出中正确显示.
---包括在Excel报告中作为单元格内容的输出,以及用于docs,xml文件等的rtf格式.
还应该做哪些其他测试?
来自@Paddy的想法:
还可以尝试从右到左的语言.例如,שלוםירושלים([耶路撒冷的和平]).应该是这样的:
שלוםירושליםhttp://sandbox.kluger.com/shalom.jpg
注意:Stackoverflow正确实现.如果文本与图像不匹配,则说明浏览器,操作系统或代理可能存在问题.
另请注意:您不必更改或"设置"已在运行的应用程序以接受W欧洲字符或希伯来语示例.您应该只需在应用程序中键入这些字符,并让它们在输出中正确返回.如果您没有放置希伯来语键盘,请将此问题中的示例复制并粘贴到您的应用中.
我希望有人能回答这个问题.
rpcrt4.dll类中的UuidCreateSequential方法如何用于播种它的guid?
我知道的很多:Microsoft更改了UuidCreate函数,因此它不再使用机器的MAC地址作为UUID的一部分.由于CoCreateGuid调用UuidCreate来获取其GUID,因此其输出也发生了变化.如果您仍然希望按顺序生成GUID(有助于在系统注册表中将相关的GUID组保持在一起),则可以使用UuidCreateSequential函数.
问题背后的原因是.如果我使用此函数在Web群集中生成顺序GUID,如何确保GUID接近一系列GUID而不会重复GUID?