Programing

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

crosscheck 2020. 10. 5. 07:38
반응형

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


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

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

나는 문제가 자원 번들이 아니라 메시지를 인쇄하는 데 사용 하는 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


string.xml에 Android 문제가있는 모든 사람은 작은 따옴표 대신 \ '\'를 사용하십시오.

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

반응형