1. 程式人生 > >ExtJS的中法語千位分隔符

ExtJS的中法語千位分隔符

法語的千位分隔符應該是什麼?相信大部分國際化從業者都很清楚,對!就是如下圖所示的空格。

講到這裡,就先分享一個因為這小空格曾引發的血案吧……話說五年前,那時我在某金融機構供職,負責一個監控債券價格浮動的專案。要求一旦債券價格高於或低於某個值時,立刻發出alert,警告所有交易員。平日測試都是獲取英文訊息源,但產品上線的那天,好巧不巧,英文訊息源down機,程式轉而從法文訊息源獲取。而法文訊息中的債券價格千位正是這個小空格,並不是我們期望的”,”。那結果呢?還用問麼?自然是什麼都沒獲取到,沒有任何alert生成,交易員也因此錯過了最佳時機。

故事結束了,回到本文要介紹的案例吧。這裡我們用ExtJS作為前端框架,發現UI展示出來的法文千位分隔符不是期望的空格。呼叫錯誤麼?反覆嘗試後,證明沒有任何問題。

難道是ExtJS自己的bug?去原始碼找找看吧。一番努力後,果然在ext-lang-fr.js的第78行發現了端倪。這裡的期望結果應該是thousandSeparator: ' '而不是thousandSeparator:'.'。怎麼辦?寫個third party issue然後close麼?
 
左思右想,最終我們還是向Sencha發了mail,同時開了ticket。沒成想,Sencha support團隊很快就做出了迴應,郵件正文如下。

Hi,
 
Thank you for contacting  Sencha Support!
 
I completely agree, we're  sorry for the incorrect information.
You've got two  alternatives to fix this:
 
a) Manually update the  ext-lang-fr.js file to correct this
or
b) include the following  code at the beginning of your app.js file:
Ext.apply(Ext.util.Format,  {
    thousandSeparator: ' '
});
 
Both options will  instruct the Ext.util.Format class to use the correct character.
I've refunded your  x-credits for this ticket since it's caused by an issue with the framework  files.
 
Best regards,
Sencha  Support Team
 
問題解決!同時友情提醒大家,日後一旦你也遇到了ExtJS法文千位分隔符顯示異常情況時,請先查驗ext-lang-fr.js檔案是否已採用最新版本。
 
獨樂樂,與人樂樂,孰樂乎?不若與人。古人誠不欺餘也!