【发布时间】:2019-09-20 19:41:09
【问题描述】:
我正在尝试使用“OSGi 方式”国际化 OSGi 应用程序,但我没有取得进展。 OSGi 方式 我的意思是,使用框架为其提供的功能。我以前有国际化 Java 应用程序,但我想知道如何将其作为 OSGi 应用程序。
我创建了这个简单的演示 [GitHub repo],它旨在创建一个捆绑包,该捆绑包将在激活后记录一条消息,在停用后记录另一条消息。
项目结构:
src
|- org.example.i18n
|- SimpleLoggingComponent // where the actual strings are
|- SimpleLogService
|- SimpleLogServiceImpl
META-INF
|- MANIFEST.MF
OSGI-INF
|- org.example.i18n.SimpleLoggingComponent
|- org.example.i18n.SimpleLogServiceImpl
build.properties
SimpleLoggingComponent source
@Component
public class SimpleLoggingComponent {
private SimpleLogService simpleLogService;
@Reference
public void bindLogger(SimpleLogService logService) {
this.simpleLogService = logService;
}
public void unbindLogger(SimpleLogService logService) {
this.simpleLogService = null;
}
@Activate
public void activate() {
if (simpleLogService != null) {
simpleLogService.log("Yee ha, I'm logging!"); // <-- need this message internationalized
}
}
@Deactivate
public void deactivate() {
if (simpleLogService != null) {
simpleLogService.log("Done, I'm finishing logging!"); // <-- need this message internationalized
}
}
}
现在,字符串在代码中是固定的,我希望能够将它们国际化。假设支持英语和西班牙语。
稍后我计划通过 Fragment Bundles 添加对更多语言的支持,因此该解决方案应该可以通过这种方式进行扩展。
我已经阅读了所有这些内容,但没有找到任何一致的内容对我有帮助。
- Using OSGi WAB as a Resource bundle inside a war
- JSP Spring internationalization using OSGi as service changing locale not working properly
- How to internationalize my eclipse Rcp application?
- Internationalization in RAP
- Eclipse RCP and Plugin Internationalization - Tutorial。这里提到了一些关于 (...) OSGi 资源包 (...) 但我不知道该怎么做。
- Eclipse Internationalization Part 2/4 – New Message Extension
此外,OSGi Alliance Tutorial Archive 和 OSGi enRoute 均不包含任何相关内容。
环境:
- 春分
- Eclipse 版本:2019-03 (4.11.0),内部版本号:20190314-1200 (download here)
- Target Platform (openhab.target)
- Eclipse Run Configuration
PS:我确信这不是一项复杂的任务,只是我没有找到任何有用的(对我而言)有关它的文档。
【问题讨论】:
标签: java eclipse localization internationalization osgi