1 | puts Time.now.strftime("%B %d, %Y %H:%M") |
What i want to acheive is to reliably get the chinese version:
八月 06, 2010 17:24
I've tried playing with the environment variable $LANG:
$ export LANG=zh_CN.utf8
$ locale
LANG=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=
Seems good, but nope, Time#strftime still gives me the same english output. I've trying recompiling a different ruby using rvm with the exported $LANG ... nope, doesn't work either. It seems that not matter how $LANG is set (thus affecting LC_TIME), ruby just doesn't care abt it. Yet, i swear that on flyhzm's machine, he has been getting the chinese version, no matter how hard he has tried to get the english version.
Battled, beaten & worn out, i've concluded that the most reliable way (and definitely what most people do), is to use the i18n. Given i already have this /path/to/i18n.yml:
1 | en: |
The following works for mri 1.9.1:
1 | require 'rubygems' |
Without modication, i got the following unfriendly output for the chinese port under mri 1.8.7, jruby & ree-1.8.7:
\345\205\253\346\234\210 06, 2010 20:27
After much googling, stumbled across this post abt $KCODE. Here's the final modified code for the 1.8.7 equivalents:
1 | require 'rubygems' |
For people doing rails, here are some useful resources:
* http://guides.rubyonrails.org/i18n.html
* http://github.com/svenfuchs/rails-i18n
No comments:
Post a Comment