管理国际化的wicket应用程序

时间:2011-02-28 09:54:17

标签: internationalization wicket administration

是否有良好/正确的方法来维护/管理Wicket应用程序的国际化?

目前有几个* .properties文件,其中包含翻译,就像你在Wicket中一样。您是否可以在运行时访问这些值并更改值,以便在不重新启动应用程序的情况下进行更改?

(另一种方法是将值存储在数据库中,但我现在暂时离开。)

2 个答案:

答案 0 :(得分:4)

您可以编写自己的IStringResourceLoader实现,并将其注册到您的应用程序中,如下所示:

getApplication().getResourceSettings().addStringResourceLoader(  
                                                     new CustomResourceLoader());

您的资源加载器应该从WAR文件之外的某些位置获取资源,以便管理员按照Aaron Digulla的建议对其进行修改。

要让Wicket在运行时获取修改,您必须调整资源设置,如下所示:

getApplication().getResourceSettings().setResourcePollFrequency( 
                                                           Duration.seconds(1));

答案 1 :(得分:1)

我知道任何现有的解决方案,但我们有一些想法:

  • 将翻译存储在应用程序之外的目录中。这样,它们就不会在JAR文件中结束,因此您可以在运行时更改它们。
  • 确保可以刷新资源包(例如,使用可在文本更改时调用的事件总线或侦听器)
  • 为应用添加“翻译模式”。通过一点JavaScript和精心设计的HTML,应该可以通过单击来使资源包中的每个文本“可编辑”。使用AJAX将更改事件发送回服务器并更新资源包。

    通过这种方式,翻译人员可以在实时系统中完成工作,这样他们就可以看到在线需要更改的内容(您可以根据文本是否已经或仍需要为文本提供CSS类别翻译)以及翻译的内容等等。

<强> [编辑]

我的意思是 WAR文件之外。否则,每次翻译更改时都需要重新创建WAR。

或者,您可以将属性文件放入WEB-INF / classes(与普通类文件一起),并使用小脚本替换WAR中的文件。

在批处理/ shell脚本中,使用jar -u替换现有文件。在ant中,使用旧的WAR文件作为源zipfileset,首先添加新文件并使用duplicate="preserve"

这样,您不必再次压缩整个文件。