Atitit.国际化中的日期与钱符号问题

1. 用户名注册的问题 1

1.1. 不能限制用户名长度与特殊符号 1

2. 2、8月7号未必总写成8/7,有时也用7/8
2

3. 5、$未必总是指美元 3

4. 8、时区很重要 5

5. 更改os与client时区可测试时区的合理性 10

6. 更改系统区域,可测试字符串流转换的乱码 11

7. 设置语言偏好,不要自动语言 11

8. 排序和校对(Sorting and collation) 11

9. 度量衡、地址、电话号码、纸张格式 11

10. 语言的切换---cookie支持 11

11. 参考 11

1. 用户名注册的问题

1.1. 不能限制用户名长度与特殊符号

对于开发者而言,意识到这一趋势并作出相应的调整至关重要。想想看,如果你想注册一个网站,但因为“名字不合格”而被拒,那是多么令人心烦的事情? 全世界的爱尔兰后裔姓氏中都有一个撇号,例如O’Sullivan、O’Brien、O’Connor。但我亲爱的澳大利亚政府最近竟然不允许在电子医疗 门户中使用这种符号。

作为开发者,需要格外注意以下两种情况:

(1)是否存在限制这种名字的白名单或黑名单?爱尔兰人名就经常遭遇这种尴尬。

(2)数据库能否支持多字节字符?配置数据库时需要格外留心。

不过,不仅是中文需要多字节字符支持,斯拉夫文同样如此

姓名中常用特殊符号,撇号,句号 ,ascii扩展字符。。

况就大不相同。背景决定一切。

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2. 2、8月7号未必总写成8/7,有时也用7/8

相信很多人都明白这一点,但却经常有意无意地忽视这一问题——毕竟没有多少地方使用“日/月”的表达方式。但事实上,如果你使用“月/日”,反而是“少数群体”,而且很有可能是美国人或伯利兹人。不信来看下面这张图:

问题不在于使用哪种方式表达月份和日期,这很含混不清。如果只是看到“7/8”,那既可以理解成7月8日,也可以理解成8月7日。即使是美国或伯利兹网站,我又怎么知道它是否会根据IP地址或用户资料等信息自动调整设置?

这家名为6speedonline.com的网站就犯错了:

这到底是几号?

这到底是7月还是2月?只要没有一个超出12的日期,或是其他可以帮助你做出判断的信息,那就只能完全靠猜了。

Stack Overflow的方法就比较可取:

这样的日期就比较明确

无论你采取什么顺序,只要用字母来表示月份,就不会引起歧义。

3. 5、$未必总是指美元

你有没有花$30买过一杯咖啡?这听起来很奢侈,但香港每天都有数千人这么干,因为在香港,$1的价值只相当于在澳大利亚和美国的八分之一。到了新加坡和新西兰,$1的价值又会发生变化。

全世界有35个国家或地区使用$作为自己的货币单位,所以具体价值要取决于所处的环境。每次当你不考虑背景因素就直接使用$时,都有可能混淆货币的价值。

例如,《Ghost in the Wires》在亚马逊卖多少钱?

《Ghost in the Wires》在亚马逊卖多少钱?

我知道亚马逊在美国,但这就表明亚马逊用的都是美元吗?要知道,亚马逊还支持自动货币转换功能,我怎么知道它显示的不是澳元?

货币单位有一套全球标准,也就是ISO 4217,可以用AUD、HKD、NZD、USD、SGD来代表具体国家的货币。我不是说所有$都应该用三个字母代替,但在某些情况下,的确需要通过这种方式来明确表明价值。

再来看看eBay,这件产品的价格标注就很明确:

嘛,这样标价就好多了嘛

很清晰,不含糊,不用猜来猜去。只要牵扯到钱的问题,都应该这样。

4. 8、时区很重要

时间跟时间也不一样,我这里的四点半到了你那里可能就是另一个时间。虽然多数人都知道世界分成40个时区,但却未必是严格按照经度划分的,详情如下:

在时区这个问题上要有国际化视野,特别是对媒体网站来说

每个时间都对应着特定的时区。不知道时区,就会产生误解。例如,下面这个网站到底说的是什么时间:

“重要通知”搞不清时间真让人抓狂

是我这里的中午?还是美国的中午、我这里的早晨?或者是英国的中午,我这里的晚上?这是一个Android开发论坛,吸引了全球各地的人,所以,显然需要注意时区问题,否则便会产生误解。

再回来看看Stack Overflow,他们的时间做得就很好:

Stack Overflow的例子

虽然需要用户主动把鼠标悬停在时间上,但至少提供了时区信息。还有的网站直接使用协调时间,也就是你看到的UTC,而不再针对某一个时区。

在有些网站中,时间扮演了重要角色,这时,允许人们自主设置时区就很重要。就像ASafaWeb这样:

允许自主设置时区

这些时区都来自.NET的TimZoneInfo类,很容易实现转换。但不要做成下面这样:

太繁琐则无意义

虽然这是直接来自于时区数据库的内容,但对多数人而言,这都没有意义。很多国家不存在所谓的“南部”或“西部”时间,也没有不同的时区。

9、对国际用户一视同仁

有些网站是针对特定区域的人设计的,例如,杂货店网站只针对附近的居民,因此会形成一些先入为主的意识,比如只有本地人才能看懂的联系页面:

对本地人来说,这样的电话是没问题的

如果你在同一个国家打电话,那没有问题,营业时间也不会产生误解。但如果像IFTTT那样,可以让各地的人免费注册,那就有问题了:

不要按“本地”“非本地”来区分对待

上图中的时区列表有8个地方没有按照字母顺序排列,因为这都是美国的地方。如果IFTTT是只针对美国人开放的网站,那没有关系,但它不是。对于这样一款很优秀的服务而言,这种方式会导致用户被分成两类:美国人和低人一等的非美国人。

当然,网站设计者可能会说:“我们的主要用户都来自美国。”但完全可以参照如下做法:

按字幕顺序排列会更加一致

这种模式没有打乱字母排列顺序,只是将一些美国地区做了高亮处理。这样给人的感觉就好得多:虽然他们的主要目标用户是美国人,但外国用户也不会受到冷遇。

5. 更改os与client时区可测试时区的合理性

服务器端环境缺省一般是英文(ISO8859-1)

6. 更改系统区域,可测试字符串流转换的乱码

7. 设置语言偏好,不要自动语言

不要光工具浏览器的语言设置来。。

8. 排序和校对(Sorting and collation)

各个语言的排序方法会有所不同,比如有的按读音,有的按笔画,还有按字典顺序的,在测试的时候要注意排序是否是按系统设定的排序方法进行排序的。(windows中,在original and language options里面自定义格式中有排序方法的定义)。一般只要保证软件和操作系统给出的排序一样就可以了。

9. 度量衡、地址、电话号码、纸张格式

10. 语言的切换---cookie支持

11. 参考

国际化软件设计及软件国际化开发与测试详细_梦和丸_新浪博客.htm

Atitit.国际化中的日期与钱符号问题的更多相关文章

  1. python中时间日期格式化符号

    python中时间日期格式化符号: import time print(time.strftime('%Y%H%M%S', time.localtime())) 运行结果: 2016092308 %y ...

  2. Flutter中的日期插件date_format 中文 国际化 及flutter_cupertino_date_picker

    今天我们来聊聊Flutter中的日期和日期选择器. Flutter中的日期和时间戳 //日期时间戳转换 var _nowTime = DateTime.now();//获取当前时间 print(_no ...

  3. Struts2中Date日期转换的问题

      今天跑程序的时候莫名其妙的出现了下面的一个异常: java.lang.NoSuchMethodException:com.ca.agent.model.mybatis.ApprovalInforC ...

  4. Java中的日期操作

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  5. Python中的日期和时间

    感觉C语言作为一门编程的入门语言还是很好的,相比较之下,Python为代表的一些语言,适合很多非计算机专业的编程入门学习. Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换 ...

  6. 填坑:Java 中的日期转换

    我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方 ...

  7. Solr中的日期/时间表示

    摘要: Solr的日期字段(TrieDateField 和DateRangeField)可以对一个时间点以毫秒精度表示. 格式 Solr中的日期有很严格的格式限制: YYYY-MM-DDThh:mm: ...

  8. Java中的日期和时间

    Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...

  9. Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

随机推荐

  1. VisualStudio:WEB 性能测试和负载测试 入门

    背景 一直做的是中小企业应用,很少关注性能和负载这里,进来准备看一本关于并发编程的图书,为了量化的测试 WEB 环境的性能和负载,特意玩了一下 VS 提供的测试项目. 新的测试项目 新建项目 性能测试 ...

  2. ViewStub用法

    在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...

  3. JAVA单例MongoDB工具类

    我经常对MongoDB进行一些基础操作,将这些常用操作合并到一个工具类中,方便自己开发使用. 没用Spring Data.Morphia等框架是为了减少学习.维护成本,另外自己直接JDBC方式的话可以 ...

  4. java后台与jsp前台特殊字符处理(字符串编码与解码)

    在后台与前台数据交互时如果有特殊字符就很容易出现问题,所以就需要对字符串进行编码传输,在获取后再进行解码: 1.Java后台进行编码与解码 URLEncoder.encode(str,"ut ...

  5. [译]使用scikit-learn进行机器学习的简介(教程1)

    原文:http://www.cnblogs.com/taceywong/p/4568806.html 原文地址:http://scikit-learn.org/stable/tutorial/basi ...

  6. 第一个Xamarin的 Android 应用程序!

    你好,安卓 Xamarin的工作室 Xamarin的应用程序图标和启动屏幕 脱机使用PDF格式: 介绍与Xamarin的Android开发 示例代码: 开始使用应用程序的探险家 显示说明: Visua ...

  7. TP模板中如何使用函数

    TP模板中如何使用函数 TP中如何将时间戳转换为时间显示 我们往往需要对模板输出变量使用函数,可以使用: {$data.name|md5} 编译后的结果是: <?php echo (md5($d ...

  8. TP框架中session操作

    TP中session操作 查看代码,OMG! 不应该是这样的

  9. Python list删除元素

    pop()方法 pop(n) 从list删除元素Paul同学刚来几天又要转走了,那么我们怎么把Paul 从现有的list中删除呢?如果Paul同学排在最后一个,我们可以用list的pop()方法删除: ...

  10. react-router-dom Link search 传参

    <Link> 和之前版本没太大区别,重点看下组件属性: to(string/object):要跳转的路径或地址: replace(bool):为 true 时,点击链接后将使用新地址替换掉 ...