4

[새 게시물에 대한 미안하지만 내 첫 번째는 페르시아어/아랍어 숫자에 집중했지만 문제가 큰 것 같습니다.] 누군가가 처리하기 위해 보석을했던 궁금현지화

루비/레일 숫자의 지역화. I18n 공식 언어 (https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale)는이를 처리하지 않는 것 같습니다.

도우미가하는 일은 복잡합니다. 너무

٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩

페르시아어 :

아랍어는 간단하다

۰ ١ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ 

그러나 모든 언어 예를 들어 영어, 중국어 1-1 변환과 일치하지 않습니다

0: 〇 (零) líng 
1: 一 (壹) yī 
2: 二 (Simplified:贰;Traditional:貳) èr 
3: 三 (Simplified:叁;Traditional:叄、參) sān 
4: 四 (肆) sì 
5: 五 (伍) wǔ 
6: 六 (Simplified:陆;Traditional:陸) liù 
7: 七 (柒) qī 
8: 八 (捌) bā 
9: 九 (玖) jiǔ 
10: 十 (拾) shí 
100: 百 (佰) bǎi 
1000: 千 (仟) qiān 
10,000: Simplified:万;Traditional萬 wàn 
100,000,000: Simplified:亿;Traditional億 yì 
1,000,000,000,000: 兆 zhào           

비슷한 문제가있는 다른 언어가 있습니다. 아무도 이전에 얼굴을 보지 못한 것 같아요.

모든 로케일에서 숫자를 처리하는 가장 좋은 방법을 알고 있습니까?

+1

무엇이 당신의 질문입니까? – toro2k

+0

명시된 질문을 추가했는데, 분명하다고 생각했습니다. – Hartator

+0

** ** ** explicit 인 경우에만 질문이 명확합니다. 그것은 분명했을 지 모르지만, 당신은 당신이 무엇을 요구하고 있는지 알았습니다. –

답변

7

좋아, 나는 그와 함께 왔어요 :

def number to_convert, locale, text = nil, 
    to_convert = to_convert.to_i.to_s 
    case locale 
    when 'ar' 
     to_convert = to_convert.unpack('U*').map{ |e| e + 1584 }.pack('U*') 
     text ? to_convert + ' ' + text : to_convert 
    when 'fa' 
     to_convert = to_convert.unpack('U*').map{ |e| e + 1728 }.pack('U*') 
     text ? to_convert + ' ' + text : to_convert 
    when 'hi' 
     to_convert = to_convert.unpack('U*').map{ |e| e + 2358 }.pack('U*') 
     text ? to_convert + ' ' + text : to_convert 
    else 
     text ? to_convert + ' ' + text : to_convert 
    end 
    end 

다른 언어 사용자 정의 현지화가 필요하지 않습니다. 예. 중국인/일본인은 전화 번호를 알고 있으며 현지인들이 웹에서 전화 번호를 사용함에 따라 현지 번호를 지원하는 것이 이상합니다.

+0

시원한 - 이걸 레일에 기부 할 계획이 있습니까? 내장 된 모든 언어를 지원하는 것이 유용 할 것입니다. – froderik