아포스트로피는 리소스 번들에 배치 될 때 제대로 번역되지 않습니다.
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
여기서 위의 키를 포맷하면 아포스트로피가 누락됩니다. java.util.ResourceBundle
What could be the problem here?
아포스트로피는 리소스 번들에 배치 될 때 제대로 번역되지 않습니다.
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
여기서 위의 키를 포맷하면 아포스트로피가 누락됩니다. java.util.ResourceBundle
What could be the problem here?
답변:
나는 문제가 자원 번들이 아니라 MessageFormater 라는 것을 강하게 믿습니다. 메시지를 인쇄하는 데 사용 .
문자열 내에서 ''( 두 개의 작은 따옴표 )는 작은 따옴표를 나타냅니다. QuotedString은 작은 따옴표를 제외한 임의의 문자를 포함 할 수 있습니다. 둘러싼 작은 따옴표가 제거됩니다. UnquotedString은 작은 따옴표와 왼쪽 중괄호를 제외한 임의의 문자를 포함 할 수 있습니다. 따라서 형식화 된 메시지 '{0}'가되는 문자열은 '' '{'0} ''또는 '' '{0}' ''로 작성할 수 있습니다.
따라서 다음과 같이 작성해야합니다.
{0}''s brush is {1} centimeters tall
여기 에서 javadoc을보세요
문자열 내에서 " ''"는 작은 따옴표를 나타냅니다. QuotedString은 작은 따옴표를 제외한 임의의 문자를 포함 할 수 있습니다. 둘러싼 작은 따옴표가 제거됩니다. UnquotedString은 작은 따옴표와 왼쪽 중괄호를 제외한 임의의 문자를 포함 할 수 있습니다. 따라서 형식화 된 메시지 " '{0}'"가되는 문자열은 " '' '{'0} ''"또는 " '' '{0}' ''"로 기록 될 수 있습니다.
@Ralph의 답변에 추가 : 다음 MessageFormat
과 같은 텍스트가있을 때 이것이 사실임을 알게 될 것입니다.
text1=It's too late
대
text2={0}''s too late
text1
아마도 MessageFormater를 통해 실행되지 않을 것입니다 (예 : 인자가 전달되거나 전달되지 않으면 spring은 다른 코드 경로를 가짐) text2
. 따라서에서 두 개의 작은 따옴표를 사용하면 그렇게 text1
표시 될 수 있습니다. 따라서 인수가 형식화되었는지 여부를 확인하고 그에 따라 하나 또는 두 개의 작은 따옴표를 사용해야합니다.
위의 방법 중 어느 것도 작동하지 않은 것처럼 완전히 멈춘 경우 아포스트로피 기호를 유니 코드 : \ u0027로 바꿀 수 있습니다. 속성 파일에서 항상 UTF 기호를 사용할 수 있습니다.
속성 편집기 플러그인 사용 고려 (Eclipse 용)