이클립스 코드에서 현지화는 어디에서 수행됩니까?
-
21-08-2019 - |
문제
Eclipse RCP 응용 프로그램에서 기여한 견해가 있습니다. 이보기에는 국소화 된 이름 view.name이 있으며 플러그인 .properties 파일에 "내보기 부분"으로 변환됩니다.
국제화가 어떻게 작동하는지 이해하기 위해 Eclipse의 소스 코드를 조사하고 있습니다. 지금까지, 나는 속성 파일의 값이 뷰 이름으로 읽고 할당되는 시점에서 어떤 시점에서 찾을 수 없었습니다.
리소스 읽기 부분에서 시작하면 클래스 매니페스트 소속이 속성 파일을 읽지 만 사용되는 위치를 찾을 수 없습니다.
이름 할당에서 시작하면 TableReader 클래스가보기 부분의 이름을 얻지 만 이미 현지화되어 있음을 알 수 있습니다. 또한 Eclipse 가이 Plugin.xml을 어느 시점에서 일부 직렬화 된 객체로 변환하는 것을 보았습니다. 어쩌면 공연의 이유로 이루어 졌을까요?
그래서 내 질문은,이 "%view.name"문자열이 "내보기 부분"으로 변환 된 시점입니다.
해결책
Eclipse에서 현지화를 지원하는 두 가지 메커니즘이 있습니다 : NLS 및 org.eclipse.core.runtime.registry.IConfigurationElement
. 당신이 관심있는 부분은 IConfigurationElement
.
때 IConfigurationElement.getAttribute(String key)
라고 불립니다 ResourceTranslator.getResourceString()
메소드는 OSGI Manifest의 번들 로컬 화 헤더를 사용하여 올바른 속성 파일을 찾습니다 (일반적으로 이것은 다음과 같습니다. plugin${locale}.properties
) 및 속성 파일의 항목.
실제로 플러그인 .xml 파일에있는 것을 getAttributeAsIs(String key)
대신 방법.
다른 팁
이는 Eclipse의 특정 버전에 따라 다를 수 있지만 ResourcetRanslator.getResourcestring (Bundle, String, ResourceBundle)에서 번역이 발생하는 것처럼 보입니다.
보기 부품 기여의 경우 플러그인 매니페스트가 ExtensionRegistry.addContribution ()의 일부로로드 된 경우에 발생합니다.
번역 된 버전이 캐시 된 것이 맞습니다. 내가 언급 한 메소드에서 중단 점을 설정하면 작업 공간이 처음 초기화 될 때만 발사됩니다. 다시 발사하려면 작업 공간의 구성 영역을 지워야합니다.