关闭

修改时区名字

标签: 源码
212人阅读 评论(0) 收藏 举报
分类:
【Description】:

目前对于有些地区,很多国家会使用一个时区,显示的名称也是一样,比如对于欧洲,很多城市使用“欧洲中部时间”“中欧夏令时”,非洲国家也是类似的。对于有些客户,可能有定制显示需求,对于某些时区,不显示“xx中部时间”,而是显示“xx时间”,比如下面会以荷兰阿姆斯特丹为例,目前在手机Setting中选择“Amsterdam,Berlin”后在Date&Time界面会显示“Central European Summer Time”,下面是修改荷兰语下这个显示为自定义名称的过程。



【Solution】:

时区Europe/Amsterdam目前显示出来的时间是“欧洲中部时间”或“欧洲中部时间”,如果要修改荷兰语下显示为“阿姆斯特丹时间”或其他自定义的显示,请follow下面的修改:
1. 找到时区ID

时区id并不是城市名称,手机显示到时区列表上的时区名称与时区id有映射关系,可以通过查看Settings中的timezones.xml来确定,package/apps/Settings/res/xml-zh/timezones.xml是中文。这样可以找到Amsterdam,Berlin的时区id是Europe/Amsterdam。
2. 修改metaZones.txt文件(external/icu4c/data/misc/)
1)    修改mapTimezones

修改的目的是把时区添加到自己定义的显示规则中,这样通过时区ID  Europe/Amsterdam就可以得到该显示规则Europe_Amsterdam。这个步骤分2步:
a)      定义自己的显示规则名称

         比如我定义了新的规则Europe_Amsterdam, 需要在mapTimezones中添加进去,mapTimezones中顺序是按字母排序的,所以Europe_Amsterdam这个规则要添加到Europe_Central的前面,如下:

Europe_Amsterdam{

}
b)     将要修改的时区从原规则中删除,添加到自定义的规则中

找到要修改的时区,比如Europe/Amsterdam在Europe_Central中,

剪切NL{“Europe/Amsterdam”},粘贴到自定义的时区显示规则中,如下所示:

Europe_Amsterdam{

NL{“Europe/Amsterdam”}

}



如果此文件中没有包含要修改的时区,那么就需要添加此时区,添加的内容如上面所示,时区前面的两个字母是国家代码。
2)    修改metaZoneinfo

添加meta信息,这样就可以通过显示规则名称Europe_Amsterdam得到meta信息Europe:Amsterdam。

“Europe:Amsterdam”{

{“Europe_Amsterdam”}

}
3. 修改zone/*.txt文件(external/icu4c/data/)
这里所有的txt文件都代表每种语言下对应的时区显示的名字!
不同的txt文件代表的是不同语言,语言和区域代码可通过查询ISO-3166-1和ISO-639标准确定。

定义在界面显示的字串,这样根据之前得到的meta信息可以得到要显示的字串。

同样的,名称是按照字母排序的,所以在Europe_Central前面添加,如下:

“meta: Europe_Amsterdam”{

ld{“夏令时间显示名称”}

ls{“标准时间显示名称”}

}
 但是如果要提交到服务器,让修改的生效的话,必须把编译icu生成的.dat文件同时提交上去,替换相应目录下的同名文件才行昂!
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1202次
    • 积分:43
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档