ローカリゼーションは、Eclipseのコードで行われている場合?
-
21-08-2019 - |
質問
私は、Eclipse RCPアプリケーションで貢献した見解を持っています。このビューでは、「マイビューパート」。
にplugin.propertiesファイルに翻訳して、ローカライズされた名%view.nameを持っています私は、国際化がどのように機能するかを理解するためのEclipseのソースコードに探しています。プロパティファイルから値を読み込み、ビューの名前として割り当てられている何点これまでのところ、私が見つけることができませんでした。
私は、リソースの読み取り部から起動した場合、私はクラスManifestLocalizationは、プロパティファイルを読み込み、私はそれが使用されている場所を見つけることができないことがわかります。
私は名前の割り当てから開始する場合は、、私はTableReaderクラスはビューの一部の名前を取得しますが、それはすでにローカライズされていることがわかります。私はまた、Eclipseはいくつかの点でいくつかのシリアライズされたオブジェクトにこのplugin.xmlのを変換することを見ました。多分それは、パフォーマンス上の理由のために行われる?
だから私の質問は、どのような時に「マイビューパート」
に変換し、この「%のview.name」の文字列です解決
org.eclipse.core.runtime.registry.IConfigurationElement
:少なくとも二つの食に局在を支持する機構があります。あなたが興味を持っている部分がIConfigurationElement
に発生します。
IConfigurationElement.getAttribute(String key)
が呼び出されると、、ResourceTranslator.getResourceString()
方法はバンドル局在正しいプロパティファイルを見つけることがマニフェストのOSGiにおけるヘッダ(通常これはplugin${locale}.properties
ある)とプロパティファイル内のエントリを使用します。
あなたは代わりにgetAttributeAsIs(String key)
メソッドを呼び出すことにより、plugin.xmlファイルに実際にあるものを手に入れることができます。
他のヒント
このは、Eclipseの特定のバージョンによって異なりますが、翻訳はResourceTranslator.getResourceString(バンドル、文字列、ResourceBundleの)
で起こっているように見えます プラグイン・マニフェストがExtensionRegistry.addContributionの一部としてロードされたときに、は、ビュー部品の寄与のために、これは起こる()。
あなたは翻訳されたバージョンがキャッシュされていることが正しいです。あなたは、私が言及した方法でブレークポイントを設定する場合は、ワークスペースが最初に初期化されるとき、彼らは唯一の火災ことがわかります。彼らは再び発射させるために、あなたは、ワークスペースの設定領域をクリアする必要があります。