2013-06-05 3 views
0

레일즈 3.2를 사용하고 있습니다.커스텀 정규 표현식 i18n

나는 루마니아어로 내 사이트를 번역 중입니다. 정규 표현식에서 정규 표현식 간격 [AZ]를 순서대로 포함해야, 다음과 같은 문자 : A, A, â, B, C 등

내 응용 프로그램을 알 수있는 방법이 있다는 것을 [AZ] 내 지역에 따라 위의 목록이어야합니까?

또한 대문자 사용에 문제가 있습니다. "â".upcase는 "Â"가되지 않습니다.

또는이 기능이 아직 레일스에 구현되지 않았습니까?

+0

당신이 [음역]로 봤어 (http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method- : 당신이 어떤 라틴어 문자와 일치 할 경우, Onigmo의 문자 속성을 사용 i- 음역)? –

+0

'upcase' 루비의 기능이 아닌가요? Rails와 관련된 이유는 무엇입니까? – sawa

+0

@PaulFioravanti 이는이 질문과 관련이 없습니다. – sawa

답변

1

이것은 레일 문제가 아니며 [a-z]는 비 ASCII 문자를 포함 할 필요가 없습니다. 루비의 경우, [a-z]는 연속 된 아스키 문자와 일치하는 정규 표현식을 나타냅니다.

루비에서는 String.upcase가 로캘에 종속적 일 필요는 없습니다. 대신과 같이 UnicodeUtils에게 보석을 사용하여 시도 할 수 있습니다 :

:

퍼센트의 보석, unicode_utils에게

#encoding: UTF-8 
require 'unicode_utils' 

p UnicodeUtils.upcase('ă', :ro) 

"A"문자열 케이스를 변환 할 때 로케일을 지정

더 의미가 있습니다 설치 예를 들어 있기 때문에

UnicodeUtils.upcase('i', :en) # is not equal to 
UnicodeUtils.upcase('i', :tr) 
0

나는 [a-z] 시퀀스가 ​​ASCII 코드 번호를 기반으로하므로 루마니아 문자는 고려되지 않는다고 생각합니다.

"ă" =~ /\p{Latin}/ 
# => 0 
+0

감사합니다. 나는 Onigmo를 조사 할 것입니다. – George