小品:number_to_human 的中英文竟然不同調!
WriterShelf™ is a unique multiple pen name blogging and forum platform. Protect relationships and your privacy. Take your writing in new directions. ** Join WriterShelf**
WriterShelf™ is an open writing platform. The views, information and opinions in this article are those of the author.
Article info
分類於:
標籤:
合計:550字
Like
or Dislike
About the Author
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯
More to explore
有人說 Rails 超好用,但也有人說 Rails 要用到精,很難,都對,因為,Rails 的挫折,總是就發生在轉角處。
我很久很久以前,用了 Rails 內建的一個 helper,目的很單純,就是把數字轉成對人類閱讀友善的格式,也就是,例如將:123456 轉成 123K,在 Rails 中,就是:
number_to_human (ActionView::Helpers::NumberHelper)
這功能在現在的電腦構架很常見也常用啦,所以我就直接用了,也沒什麼測試,怕什麼!就這麼小小的一個常見功能......
直到,幾天前,有用戶跟我說,我的中英文介面中,數字是不一樣的,我一看,真是嚇到吃手手,同一個數字:
這...... 嚇死人了,是那個偉大的程式,連數字都會搞錯?這很明顯的是進位有錯,很容易的就查到,問題發生在以下這行:
number_to_human(item.count, :format => '%n%u', :precision => 2, :units => { :thousand => 'K', :million => 'M', :billion => 'B' })
妙的是,我左看右看,API 上看下看,都很正確啊,但是數字就是不對,問題很明顯的出在語言版本上,而剛好,我在 API 上有看到,這個 helper 可以在 i18n 中設定,死馬當活馬醫,在 I18n 中試試看設些不同的值,哇哈,變正確了!
問題解決了,但是我還是不知道,為什麼 Rails 會不尊照 hepler 中的設定,而一定要去讀 I18n中的設定,我也沒時間再查下去,說不定那天 Rails 又改了,但是應該要把這個解決方法記錄下來,不然我下次一定忘記,又要重查一遍,也可以發佈給大家做參考。
解法:
呼叫這 helper 就簡化到只要給變數就好:
number_to_human(item.count)
所有的設定都移到 I18n yml 中,這部分很奇怪,Rails 的文件中都找不到:
這樣做,問題解決了,程式也清爽多了。 小小的提醒,YML 很重格式,複製貼上要小心!
好啦,老話一句,希望有幫助。