내 프로젝트에 여러 개의 플러그인이 포함되어 있으며 모든 플러그인에는 20 개에 가까운 번역이 포함 된 plugin.properties 파일이 포함되어 있습니다. MANIFEST.MF 파일은 외부 플러그인 문자열이 저장된 특성 파일의 이름을 정의합니다.Eclipse의 plugin.properties 메커니즘 RCP
Bundle-Localization: plugin
내가 이클립스 런타임시 plugin.properties 파일에 "%의 plugin.name"를 검색합니다
%plugin.name
같이 정의 플러그인의 이름입니다.
"plugin.properties"파일에서 MANIFEST.MF Bundle-Localization 항목을 읽고 클래스의 시작 부분에 '%'접미사가있는 문자열을 검색하는 클래스는 무엇입니까?
"% plugin.name"식별자에 대해 다른 디렉토리/파일을 먼저 조사 할 수 있도록이 클래스를 찾아서 패치하고 싶습니다. 이러한 새로운 메커니즘을 사용하면 제품에 단편을 추가하고 원래 플러그인을 변경하지 않고 "plugin.properties"파일에서 한 줄을 덮어 쓸 수 있습니다. 이러한 메커니즘을 사용하면 여러 조각을 추가하여 여러 고객을위한 빌드 프로세스를 만들 수 있습니다. 변경하려는 고객 이름 및 특수 문자열을 포함한 조각입니다.
조각 메커니즘은 원래 플러그인에 파일을 추가하기 때문에 그렇게하고 싶습니다. "plugin.properties"파일이 플러그인에 있으면 "plugin.properties"단편은 무시됩니다.
UPDATE 1 :
class ManifestLocalization{
...
protected ResourceBundle getResourceBundle(String localeString) {
}
...
}
반환 속성의 ResourceBundle의 지정된 로케일에 문자열을 파일
방법. 누가 리소스 경로를 가져 오기 위해 먼저 조각을 조사 할 수 있는지 알려주세요.
업데이트 2 : 클래스의 속성에 대한
private URL findInResolved(String filePath, AbstractBundle bundleHost) {
URL result = findInBundle(filePath, bundleHost);
if (result != null)
return result;
return findInFragments(filePath, bundleHost);
}
검색 수는 파일 ManifestLocalization로 캐쉬에
방법. 번역은 캐시 된 파일에서 가져올 수 있습니다. 문제는 전체 파일이 캐시되고 단일 변환이 아니라는 것입니다.
해결책은 번들 파일을 읽는 것보다 먼저 조각 파일을 읽는 것입니다. 두 파일이 모두 존재할 때 파일을 하나의 파일로 병합하고 새 특성 파일을 디스크에 작성하십시오. 새 특성 파일의 URL이 리턴되어 새 특성 파일이 캐시 될 수 있습니다.
어디 populate 메서드를 찾을 수 있습니까? 또는 그것을 작성해야합니까? –
답변에 더 많은 정보를 입력 할 수 있습니까? 고맙습니다! –