로케일 특정 파일

단편은 자국어 변환을 패키지화하는 편리한 방법입니다. 로케일 특정 변환 파일을 설치하는 데 사용된 디렉토리 구조를 자세히 살펴보겠습니다. 변환된 파일이 단편으로 패키지화되었거나 원래 플러그인으로 전달되었는지 여부와 상관 없이 이 디렉토리 구조를 사용합니다.

플러그인에는 로케일 특정 파일을 찾을 수 있는 세 가지 메커니즘이 있습니다.   

변환해야 할 해당 파일을 액세스하는 데 사용된 메커니즘을 알고 있어야 어떤 파일 이름을 지정하고 플러그인에 관련된 파일 시스템의 어느 곳에 파일을 배치할지 알 수 있습니다.

플랫폼 코어 메커니즘

플랫폼 코어는 로케일별로 다른 파일에 대한 로케일 특정 서브디렉토리를 사용하는 디렉토리 구조를 정의합니다. 변환된 파일은 플러그인 아래 nl이라는 디렉토리에 위치합니다. 예를 들어, 다음의 설치 트리는 about.properties 파일의 로케일 특정 변환을 사용하는 보통 플러그인(코드 없음)을 보여줍니다. 플러그인 자체보다 플러그인 단편에서 나오는 다양한 변환이 표시됩니다. 기본과 별도로 변환을 제공하는 것이 일반적이나, 플러그인 자체 아래에 nl 서브디렉토리를 놓을 수도 있습니다.

acmeweb/
  eclipse/
    plugins/
      com.example.acme.acmewebsupport_1.0.0/
        plugin.xml
        about.properties    (기본 로케일)
      com.example.acme.fragmentofacmewebsupport_1.0.0/
        fragment.xml   (com.example.acme.acmewebsupport 1.0.0의 단편)
        nl/
          fr/
            about.properties  (프랑스어 로케일)
            CA/
              about.properties  (불어권 캐나다 로케일)
            FR/
              EURO/
                about.properties (불어권 프랑스 유로)
          en/
            about.properties  (영어 로케일)
            CA/
              about.properties  (영어권 캐나다어 로케일)
            US/
              about.properties (미국 영어 로케일)
         de/
            about.properties (독일어 로케일) 

변환될 파일이 JAR 파일에 포함되지 않습니다. 각 파일은 같은 파일 이름을 갖고 있어야 하지만 단편(또는 플러그인)의 루트에 있는 nl 서브디렉토리 아래의 서브디렉토리에 있어야 합니다.

런타임 시 가장 특정한 파일에만 액세스됩니다. 파일 경로는 Platform.find, IPluginDescriptor.findPlugin.find 메커니즘의 일부로서 검색됩니다. 예를 들어 기본 로케일이 en_CA이고 플러그인에서 다음과 같이 about.properties를 검색한다고 가정합니다.

somePlugin.find("$nl$/about.properties");

메소드는 다음 순서에 따라 about.properties가 있는 첫 번째 위치에 해당하는 URL을 리턴합니다.

com.example.acme.acmewebsupport_1.0.0/nl/en/CA/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/CA/about.properties
 ...  		<any other fragments>
com.example.acme.acmewebsupport_1.0.0/nl/en/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/about.properties
 ...
com.example.acme.acmewebsupport_1.0.0/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/about.properties

플러그인에서 이 메커니즘을 사용하여 기타 플러그인에 있는 잘 알려진 파일 이름을 검색합니다. 여기에는 다음과 같이 잘 알려진 파일 이름이 포함됩니다.

(참고:  plugin.propertiesfragment.properties는 확실하게 이 목록에 없습니다. 이 파일은 아래에 설명된 방법과 다소 다르게 처리됩니다.)

Java 자원 번들

다른 파일에는 특성 자원 번들의 표준 Java 처리를 사용합니다. 변환된 파일은 JAR 파일에 포함되는 데 각 특성 파일에는 "message_en_CA.properties" 같은 로케일 특정 이름이 있습니다. 파일은 패키지 특정 서브디렉토리에 있고 플러그인이나 플러그인의 단편 중 하나에 나타날 수 있습니다. 키 찾아보기가 특성 파일의 잘 정의된 체인에 액세스하기 때문에 각각의 변환된 특성 파일은 부분적일 수 있습니다.

plugin.properties 메커니즘

plugin.properties 파일을 변환하는 데 사용되는 메커니즘은 Java 자원 번들 이름 지정 규칙을 사용합니다. 그러나 파일은 이 플러그인 단편의 루트에 또는 플러그인의 루트에 있어야 합니다. 동일한 규칙이 MANIFEST.MF의 변환에 적용됩니다.

NL 단편 정의

NL 단편의 모양이 2.1 이후 버전에 다소 개선되었습니다. 이전에는 모든 변환 파일(plugin.properties 포함)이 jar 형식으로 제공되었습니다. 이것은 plugin.properties 파일이 플러그인의 루트에 제공된 이후 일관되지 않은 것이었습니다.
NL 단편을 새 모델에 적합하게 하려면 jar에서 plugin.properties 변환 파일을 제거하여 이 파일을 fragment.xml의 동위로서 해당 단편의 루트에 두십시오. 예를 들어 org.eclipse.ui.workbench에 대한 NL 단편의 새 모양은 다음과 같습니다.

  org.eclipse.ui.workbench.nl/
     fragment.xml
     plugin_fr.properties
     plugin_pt_BR.properties
     ...
     nl1.jar