[java] 아포스트로피가 리소스 번들에 배치 될 때 제대로 번역되지 않습니다.

아포스트로피는 리소스 번들에 배치 될 때 제대로 번역되지 않습니다.

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

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

여기서 위의 키를 포맷하면 아포스트로피가 누락됩니다. java.util.ResourceBundleWhat could be the problem here?



답변

작은 따옴표를 다음과 같이 이스케이프해야합니다.

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


답변

나는 문제가 자원 번들이 아니라 MessageFormater 라는 것을 강하게 믿습니다. 메시지를 인쇄하는 데 사용 .

MessageFormater 자바 문서에서 :

문자열 내에서 ”( 두 개의 작은 따옴표 )는 작은 따옴표를 나타냅니다. QuotedString은 작은 따옴표를 제외한 임의의 문자를 포함 할 수 있습니다. 둘러싼 작은 따옴표가 제거됩니다. UnquotedString은 작은 따옴표와 왼쪽 중괄호를 제외한 임의의 문자를 포함 할 수 있습니다. 따라서 형식화 된 메시지 ‘{0}’가되는 문자열은 ” ‘{‘0} ”또는 ” ‘{0}’ ”로 작성할 수 있습니다.

따라서 다음과 같이 작성해야합니다.

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


답변

여기 에서 javadoc을보세요

문자열 내에서 ” ””는 작은 따옴표를 나타냅니다. QuotedString은 작은 따옴표를 제외한 임의의 문자를 포함 할 수 있습니다. 둘러싼 작은 따옴표가 제거됩니다. UnquotedString은 작은 따옴표와 왼쪽 중괄호를 제외한 임의의 문자를 포함 할 수 있습니다. 따라서 형식화 된 메시지 ” ‘{0}'”가되는 문자열은 ” ” ‘{‘0} ””또는 ” ” ‘{0}’ ””로 기록 될 수 있습니다.


답변

큰 따옴표가 필요합니다. 즉 {0}의 브러시 높이가 {1} 센티미터입니다.


답변

@Ralph의 답변에 추가 : 다음 MessageFormat과 같은 텍스트가있을 때 이것이 사실임을 알게 될 것입니다.

text1=It's too late

text2={0}''s too late

text1아마도 MessageFormater를 통해 실행되지 않을 것입니다 (예 : 인자가 전달되거나 전달되지 않으면 spring은 다른 코드 경로를 가짐) text2. 따라서에서 두 개의 작은 따옴표를 사용하면 그렇게 text1표시 될 수 있습니다. 따라서 인수가 형식화되었는지 여부를 확인하고 그에 따라 하나 또는 두 개의 작은 따옴표를 사용해야합니다.


답변

위의 방법 중 어느 것도 작동하지 않은 것처럼 완전히 멈춘 경우 아포스트로피 기호를 유니 코드 : \ u0027로 바꿀 수 있습니다. 속성 파일에서 항상 UTF 기호를 사용할 수 있습니다.


답변

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

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