자원을 변환하지 않는 방법으로 지정하는 방법은 무엇입니까?
-
03-07-2019 - |
문제
Java 소프트웨어의 현지화 작업을 수행하며 프로젝트에는 .properties 파일과 XML 리소스가 모두 있습니다. 우리는 현재 댓글을 사용하여 번역가에게 특정 문자열을 번역하지 말라고 지시하지만 주석의 문제는 기계 판독 할 수 없다는 것입니다.
내가 생각할 수있는 유일한 솔루션은 각각의 do-notlate 키를 _DNT_
이러한 항목을 무시하도록 번역 도구를 교육하십시오. 더 나은 아이디어가있는 사람이 있습니까?
해결책
번역 할 파일로 분해하거나 번역되지 않은 파일을 분해 한 다음 번역 할 파일 만 보낼 수 있습니까? (구조를 모르므로 실용적인지 대답 할 때 Har Dto가 알 수 있습니다 ...)
다른 팁
가장 간단한 솔루션은 리소스 파일에 DNT (Do-Translate Strings)를 넣지 않는 것입니다.
.속성 파일은 메타 데이터 처리 방식에 크게 제공되지 않으며 런타임에 데이터가 필요하지 않기 때문에 .속성 파일은 바람직한 것이 아니라 부작용입니다. 번역 가능한 문자열 (예 : 브랜드 이름 또는 URI)에 번역 할 수없는 부분이있는 부분 DNT도 고려하십시오.
"IDENTIFIER english en en en" -> "french fr IDENTIFIER fr fr"
내가 아는 한, 심지어 표준조차도 xliff DNT를 고려하지 마십시오. 사용자 정의 메타 데이터 파일을 통해 관리해야합니다. 용어 파일 및/또는 주석 (예 : 노트 xliff의 요소).
그의 링크에 게시 된 Axelclk처럼 ... Eclipse는
// $ non-nls-1 $
이 줄의 첫 번째 문자열이 번역되어서는 안된다는 것을 프로젝트에 알리는 진술. 소스-> 외부화 문자열을 호출하여 찾을 수있는 다른 모든 문자열
외부 문자열에는 지원하려는 모든 언어가 포함됩니다.
다음과 같은 번역이 포함 된 파일 : PluginPage.error1 = Text1 PluginPage.error2 = Text2
번역을 읽은 수업
private static final String BUNDLE_NAME = "com.plugin.name"; //$NON-NLS-1$
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
private PluginMessages() {
}
public static String getString(String key) {
// TODO Auto-generated method stub
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
그리고 당신은 그것을 다음과 같이 부를 수 있습니다.
String msg = PluginMessages.getString("PluginPage.Error2"); //$NON-NLS-1$
편집하다:
문자열이 외부화되어 원래 문자열을 사용하려면 기본적으로 기본적으로 모든 속성 파일에서 외부 분해 문자열을 삭제할 수 있습니다. 번들이 현지 언어와 일치하는 메시지 파일을 찾을 수없는 경우 기본값이 사용됩니다.
그러나 이것은 런타임에 작동하지 않습니다.
속성 파일에서 to-translate 주석을 사용하기로 결정한 경우 일식 컨벤션. 그것은 특별한 것이 아니지만, 우리 모두가 같은 마법 끈을 사용하면 인생이 더 쉬울 것입니다!
(Eclipse는 실제로 내가 아는 한 아직 번역하지 않은 의견을지지하지는 않지만 Tennera Ant-Gettext 리소스 번들에서 GetText PO 파일로 변환 할 때 사용되는 위의 체계의 구현이 있습니다.)