标签为 "中文" 的存档

Ubuntu14.04用户文件夹中英文切换

安装ubuntu14.04时选择了中文,装好后用户文件夹为中文,在终端操作时有些不太方便,于是需要切换为英文的命名方式。

切换方法很简单,打开终端,先修改为英文环境:

export LANG=en_US

然后再输入

xdg-user-dirs-gtk-update

会弹出一个对话框,可以看到中文文件夹会被修改为对应的英文文件夹,选择确认

最后再恢复为中文环境:

export LANG=zh_CN

extjs使用grid动态加载数据中文提示

extjs默认的消息文本都是英文的,当然它已经提供了本地化的方法,只需要在页面中引用ext-all.js之后再引用一下locale文件夹下的ext-lang-zh_CN.js就可以了,这样界面中的大部分消息文本就是中文显示了。

设置grid使用动态store数据的情况下,从远程加载数据时,grid会锁定并有相应的提示,默认为loading…

本文虽然已经本地化了,但是此处消息依然是英文,虽说影响不大,但是整体却不统一了,肯定是要完善的,自己这关就无法通过。

但是翻看了文档,对于例子中的loadMask : true属性文档中并未体现,而且即使不设置,也会有加载提示。文档中提到的setLoading()方法,设置了字符串参数也是无效,依然显示英文,文档是这么说的,飞尘应该没理解错吧。

setLoading( Boolean/Object/String load, Boolean targetEl ) : Ext.LoadMask
This method allows you to show or hide a LoadMask on top of this component.

Parameters-
load : Boolean/Object/String
True to show the default LoadMask, a config object that will be passed to the LoadMask constructor, or a message String to show. False to hide the current LoadMask.
targetEl : Boolean
True to mask the targetEl of this Component instead of the this.el. For example, setting this to true on a Panel will cause only the body to be masked. (defaults to false)
Returns-
Ext.LoadMask
The LoadMask instance that has just been shown.

既然此路不通,只能另觅他途。在ext-all-debug.js文件中遍历了一下,包含loading…文本的共有4处,对照着ext-lang-zh_CN.js文件,发现有三处文本已经被本地化覆盖,但是还有一处未做处理,在ext-all-debug.js文件中,定义Ext.view.AbstractView时有行代码很可疑,本文的extjs版本为4.0.2a,代码在58419行:

loadingText: ‘Loading…’,

找到了原因,那就自己来本地化吧。

将原始的ext-lang-zh_CN.js备份为ext-lang-zh_CN_bak.js,然后在ext-lang-zh_CN.js文件中添加下面的代码:

刷新页面,英文不再o(∩_∩)o

extjs数字格式化bug

在用extjs开发项目时,遇到一个很奇怪的问题。需求是将原始数字转换为带有逗号分隔符的千位计数法。

ext也提供了这样的工具,就是Ext.util.Format.number()

参考文档的说明,使用也是比较简单的:

Ext.util.Format.number(100000, “0,000”)

这样格式化后的数字显示为100,000

但是这样一个简单的转换却没有想象中那么顺利,返回的结果很出人意料,居然是100.000

怎么搞的啊,翻看了源码,没有问题啊,而且明明定义了的:

Ext.apply(UtilFormat, {
thousandSeparator: ‘,’,

加了日志输出,真怪,UtilFormat对象的thousandSeparator属性竟然是.而不是,

折腾了好久也没找到什么地方这个属性被修改了。偶然在查看firebug中输出的UtilFormat对象时,看到currencySign属性是¥,就猜想是不是因为设置了中文本地化的原因。

赶紧将html文件中引用的ext-lang-zh_CN.js注掉

刷新页面,输出正常了,这回是100,000了

于是打开ext-lang-zh_CN.js来看,赫然写到:

就算中文,也是用逗号作为千位分隔符的吧,不知道哪位大侠给飞尘在此设了个陷阱,真是摔个够呛啊。

将thousandSeparator和decimalSeparator属性值对调,问题得以解决。

javascript阿拉伯数字转中文

有时会遇到这样的需求,原始数据是数值型的数据,也就是阿拉伯数字,例如“123”,而在业务逻辑中,需要展现在页面中的为中文的数字字符,例如“一百二十三”。

一般通过javascript转换一下就能满足我们的需求了。

下面这个方法不是飞尘原创的,取材于互联网,针对自身的需要做了小小的修改。

将转换方法放到了工具包中,需要转换阿拉伯数字的时候,调用一下就可以了。


Utils.numberToChinese(123);

返回字符串“一百二十三”

下面是程序源代码