自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

国际化梦工厂

专注国际化开发和测试,只聊干货拒绝扯淡!

  • 博客(19)
  • 收藏
  • 关注

原创 JavaMail中的国际化(一)

JavaMail是JavaEE中13种核心技术之一,其中有不少涉及国际化的知识点,例如subject, body, attachment时间日期等。本文我们来关注邮件附件乱码问题,首先看一个真实的bug,测试步骤如下。1. 创建一个mail notification,附件名为中文2. 触发notification条件,发送mail并检查结果如图所示。一探究竟,最终我

2016-08-30 22:41:44 10172

原创 浅析 AngularJS 全球化最优方案(六)

本节是最后一节关于AngularJS的国际化和本地化方案讨论,具体会和大家聊下目前有哪些第三方的库以及有缺点。首先谈谈国际化,AngularJS的国际化支持是不错的,提供了一些语言的国际化资源文件文件,具体支持哪些国家,大家可以去官网查询。下面聊聊怎么使用这些资源文件,一般来说会分静态加载和动态加载,静态加载可以使用预绑定、单独加载。预绑定是将国际化资源文件和 AngularJS 库文件进

2016-08-26 12:59:45 10271 4

原创 也说DateTime.ToString()

曾遇到过这样一个bug,测试描述说一旦设置了浏览器的语言为Portuguese/Brazil[pt-br],对机器的reconfigure request就会fail。而当浏览器语言为en-us时,request则没有问题,如我们所愿的正常pass,贴图如下:pt-bren-us起初接到这个bug时,百思不得其解!pt-br有什么特殊之处?何德何能?怎么到你这儿就敢对我

2016-08-24 16:23:17 8830 1

原创 我们还需要专职黑盒手动国际化测试人员么?

时至今日,我们还需要专职黑盒手动国际化测试人员么?这个问题其实在我脑中已经萦绕多时了,现在终于有机会把自己的想法和盘托出。不过在探讨这个问题前,请大家先起立!不要因为现在所坐的位置影响了你的思维。 首先务必澄清几个概念。1. 所谓专职即只进行国际化测试,负责执行测试+报bug的活动,不参与编码2. 黑盒是说测试人员对于国际化开发技术并不熟悉,甚至不懂3. 手动意味着测试

2016-08-21 20:59:28 28883 2

原创 Codepage vs Charset

之前在面试话题中介绍了如何言简意赅的回答各种char的使用区别,本文将谈到另外一个高频问题——codepage跟charset的区别和联系。虽然这两个概念几乎天天都会在工作中出现,但就个人过往经验看,面对该问题时能够给出清晰答案的着实凤毛麟角。 首先来看codepage(“内码表”或者“代码页”),这是wiki对他的定义——代码页是字符编码的别名,也称“内码表”,是特定语言的字符集的一张表

2016-08-18 15:28:06 11482

原创 浅析 AngularJS 全球化最优方案(五)

在前几节了我们总结了获取Locale的几种方式,各有优缺点。接下来我们聊聊如何做 Locale 的 mapping 和 fallback。从浏览器获取到用户的语言偏好,或者下拉框选择预定义语言,只是Locale的一个入口,在获取到raw Locale以后,我们需要进行映射和fallback处理。首先我们先回顾下国际化分层,分层的概念。在本系列开始的时候,我给大家讲过一个概念,国

2016-08-16 23:59:39 10600 2

原创 浅析 AngularJS 全球化最优方案(四)

在前面三节我们分析了 AngularJS 的web application里面,3种常见获取浏览器用户语言信息的方法以及优缺点:前端 JS 直接获取浏览器的用户语言信息。优点:真正意义上做到了前后端分离。缺点:现有 API的定义,在每个浏览器上面的实现不一致或者有些浏览器暂不支持。类 JSP 方案,定义locale 变量在引导

2016-08-16 13:32:27 10106

原创 浅析 AngularJS 全球化最优方案(三)

在上节我们分析了从前端,无论是AngularJS本身 $locale 还是通过现有的 JS navigator对象的相关的language属性,都无法得到准确的用户语言信息。由此可见从前端获取Browser 的用户语言,在现阶段是有缺陷的。那么要获取当前用户端接受的语言除了从浏览器直接获取外,其实通常情况下是分析Http 请求里面的报头,(Accept - Language)请

2016-08-16 13:31:32 10202

原创 浅析 AngularJS 全球化最优方案(二)

上节我们谈到在 AngularJS 里面拿当前浏览器 Locale 的3种方式,本节我们主要讨论下 AngularJS 里面自带的 $locale 服务和用原生 JS 如何获取浏览器 Locale,严谨的角度来说是获取当前用户浏览器的语言列表或者是浏览器UI语言。首先我们聊下 AngularJS 里面的$locale 服务,很棒的概览,会让人感觉眼前一亮,但当我们研读了它的源码

2016-08-16 13:30:37 10937

原创 浅析 AngularJS 全球化最优方案(一)

最近由于公司项目的原因,接触到AngularJS,在经历了一番研究和尝试后,成功为此产品提交了全球化框架。在研究过程中也调研了其他几种 AngularJS 全球化方案,总结了一些经验,在此希望跟大家分享。软件全球化支持,通常情况下分两个维度一个是国际化支持、一个是本地化支持,国际化支持包括安装、输入、输出以及对货币,日期和数字等 locale sensitive数据的格式化。本

2016-08-16 13:27:51 10216

原创 ExtJS的中法语千位分隔符

法语的千位分隔符应该是什么?相信大部分国际化从业者都很清楚,对!就是如下图所示的空格。讲到这里,就先分享一个因为这小空格曾引发的血案吧……话说五年前,那时我在某金融机构供职,负责一个监控债券价格浮动的项目。要求一旦债券价格高于或低于某个值时,立刻发出alert,警告所有交易员。平日测试都是获取英文消息源,但产品上线的那天,好巧不巧,英文消息源down机,程序转而从法文消息源获取

2016-08-15 10:44:56 16911

原创 话说Sorting和Collation

不知大家是否注意过,Sorting和Collation这两个词儿常在工作中被混用。但事实上,这二者不是一个概念,甚至不在一个层面上。先看看这二者是如何进行定义的。Sorting是按照某种规则,对数据进行的分类、整理;而Collation则是对数字,字符进行某种顺序的装配、组合。还是一头雾水,不明就里?…… 举个例子吧,假设某一本书籍是集体创作,作者名较多,那么作者列表是如何呈现给读

2016-08-15 10:41:17 10553

原创 当Culture遇上DateTimeFormat

提问——如果你遇到一个其他语言都不复现,只能在芬兰语测试环境中出现的bug,你的第一反应是什么?(冷场)好吧,还是先说说我的亲身经历,步骤如下:首先在芬兰语Windows环境安装并配置软件;其次对某一台特定测试机发出请求。返回下图结果。 经过反复验证,该问题在CCJK,FR, DE上均不复现。那么在request场景中,最大的嫌犯就只能是时间格式了吧,来看看Windows的

2016-08-15 10:08:40 10598

原创 Migration中的Collation Confliction

说到SQL中的collation(校对集),相信大家都清楚它是用来指定排序规则的。同时大部分人应该都会赞同,排序功能优先级很低,绝对不应该跟show stopper划上等号,所以一般不会安装排在前几个sprint中来进行实现。就历史经验看,即便是到了最后的几个sprint,也未必会把collation这种corner case提上日程。而本文的主人公正是这个不起眼的小配角,看看他是如何通过不懈努力

2016-08-15 10:04:02 10284

原创 一句话证明你懂那些char

“请说明char、varchar、nchar、nvarchar的区别是什么?”——这是一个在国际化测试人员面试过程中时常被提起的问题。不过可惜的是,能准确回答这个问题,同时又言简意赅的面试者却远比想象中的少。本文站在面试者角度,探索是否能找出一句话就能证明你懂那些char的所谓标准答案。 首先,需要引入两个维度来考量。 1. 定长和变长定长即长度固定,当输入的数据长度没有达到指定的

2016-08-14 20:18:36 10115

原创 XSS与国际化

提到省略符,见多识广的国际化测试人员的第一反应应该会是法语。没错,在法语中的确充斥着这样的符号(俗称“撇号”)。一旦出现这样的符号,总是会涉及到转义问题,例如如下信息。在这里,细心的本地化人员已经为省略符做了转义。 message=Supprimer cette stratégie de tous les droits d''accèsliés ? Si vous cliquez sur

2016-08-14 20:14:00 10737

原创 文本框无法接受非英文字符的技术分析

关于文本框无法输入非英文字符的现象,在日常国际化测试工作中出现的概率极大。为了限制用户的输入必须符合软件定义的规范,开发人员一般都会对输入框中的value通过正则表达式或事件进行校验。如下图所示,当cost type被设置为“日本语”时,错误框将弹出,操作也无法继续进行。本例中将以正则表达式作为假定的技术背景,对这一现象进行分析,示例代码如下。public class Cost

2016-08-14 19:56:52 10233

原创 Spring MVC @RequestMapping中的乱码问题解析

国际化测试过程中,上传下载以本地字符命名的附件是一个不容忽视的测试用例,也是非常容易发现bug的环节。如下图所以,用户期望的日文文件名在该场景中已经变为了不可读的乱码。 导致这个现象的技术成因有很多,这里我们使用了Spring MVC框架的@RequestMapping(参数绑定)作为技术背景对问题进行剖析。 首先对参数绑定做一个简单介绍。@Requ

2016-08-14 19:39:06 21844

原创 法语德语Windows平台软件部署失败原因分析

在测试过程中,我们时常会遇到软件在法语、德语的Windows平台部署失败的情况,典型错误信息如下:2016-05-22T16:02:07.768Z (1332,'LookupAccountName', 'Le mappage entre les noms de compte et les ID de xxx.') 在国际化测试过程中,安装或升级失败的场景最容易出现在法语、德语的Wi

2016-08-14 19:22:03 16521

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除