itsource

리소스 번들에 배치하면 Apostrope가 올바르게 변환되지 않음

mycopycode 2022. 9. 26. 22:04
반응형

리소스 번들에 배치하면 Apostrope가 올바르게 변환되지 않음

리소스 번들에 배치하면 아포스트로피가 올바르게 변환되지 않습니다.

key = {0}'s brush is {1} centimeters tall

(e.g. Sam's brush is 4 centimeters tall)

위의 키를 에서 포맷하면 아포스트로피가 누락됩니다.java.util.ResourceBundle여기 뭐가 문제죠?

홑따옴표는 생략해야 합니다.

key = {0}''s brush is {1} centimeters tall

문제는 resource 번들이 아니라 메시지 인쇄에 사용하는 MessageFormater라고 생각합니다.

MessageFormator java doc에서:

문자열 내에서 " (2개의 작은 따옴표)는 단일 따옴표를 나타냅니다.QuotedString에는 작은 따옴표를 제외한 임의의 문자를 포함할 수 있습니다.따옴표는 삭제됩니다.UnquotedString에는 작은 따옴표와 왼쪽 대괄호를 제외한 임의의 문자를 포함할 수 있습니다.따라서 형식화된 메시지 '{0}'이 되는 문자열은 '''{0}'' 또는 ''{0}'''로 쓸 수 있습니다.

따라서 다음과 같이 적어야 합니다.

{0}''s brush is {1} centimeters tall

@Ralph의 답변에 추가:이게 바로 '무슨 일이냐'는 걸 알게 될 거예요MessageFormat같은 문자가 있을 때

text1=It's too late

text2={0}''s too late

text1MessageFormator를 통해 실행되지 않을 수 있습니다(예를 들어 spring에는 인수가 전달되는지 여부에 관계없이 다른 코드 경로가 있습니다).text2그럴 거예요. 그래서 만약 당신이 두 개의 작은 인용구를 사용해서text1는, 그 상태로 표시되는 경우가 있습니다.따라서 인수의 형식이 지정되어 있는지 확인하고 그에 따라 한두 개의 작은 따옴표를 사용해야 합니다.

여기 javadoc을 보세요.

문자열 내에서 ""는 단일 따옴표를 나타냅니다.QuotedString에는 작은 따옴표를 제외한 임의의 문자를 포함할 수 있습니다.따옴표는 삭제됩니다.UnquotedString에는 작은 따옴표와 왼쪽 대괄호를 제외한 임의의 문자를 포함할 수 있습니다.따라서 형식화된 메시지 ''{0}''이 되는 문자열은 '''{0}''' 또는 '''{0}'''로 쓸 수 있습니다.

큰따옴표로 묶어야 합니다.{0}의 브러시의 높이는 {1}cm입니다.

(상기 중 어느 것도 동작하지 않는) 것처럼, 완전히 막혀 있는 경우는, 아포스트로피 기호를 유니코드로 치환할 수 있습니다.\u0027.속성 파일에는 항상 UTF 기호를 사용할 수 있습니다.

속성 편집기 플러그인 사용 고려(Eclipse용)

http://propedit.sourceforge.jp/index_en.html

string.xml에 Android 문제가 있는 모든 사용자에게는 작은 따옴표 대신 \'\'를 사용합니다.

언급URL : https://stackoverflow.com/questions/4449639/apostrophe-doesnt-get-translated-properly-when-placed-in-a-resource-bundle

반응형