리소스 번들에 배치하면 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
text1
MessageFormator를 통해 실행되지 않을 수 있습니다(예를 들어 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
'itsource' 카테고리의 다른 글
이미 시작된 PHP 세션 (0) | 2022.09.26 |
---|---|
자모듈을 빌드하지 않고 부모 POM 설치 (0) | 2022.09.26 |
PHP에서 NULL을 확인합니다. (0) | 2022.09.26 |
MySQL/MariaDB는 정확히 1분 42초 후에 셧다운됩니다. (0) | 2022.09.26 |
3개의 다른 SELECT 쿼리를 통합하여 3개의 다른 카테고리에서 각각 10개의 값을 가져와 하나의 임시 테이블에 삽입하는 방법 (0) | 2022.09.26 |