是否有良好/正确的方法来维护/管理Wicket应用程序的国际化?
目前有几个* .properties文件,其中包含翻译,就像你在Wicket中一样。您是否可以在运行时访问这些值并更改值,以便在不重新启动应用程序的情况下进行更改?
(另一种方法是将值存储在数据库中,但我现在暂时离开。)
答案 0 :(得分:4)
您可以编写自己的IStringResourceLoader实现,并将其注册到您的应用程序中,如下所示:
getApplication().getResourceSettings().addStringResourceLoader(
new CustomResourceLoader());
您的资源加载器应该从WAR文件之外的某些位置获取资源,以便管理员按照Aaron Digulla的建议对其进行修改。
要让Wicket在运行时获取修改,您必须调整资源设置,如下所示:
getApplication().getResourceSettings().setResourcePollFrequency(
Duration.seconds(1));
答案 1 :(得分:1)
我知道任何现有的解决方案,但我们有一些想法:
为应用添加“翻译模式”。通过一点JavaScript和精心设计的HTML,应该可以通过单击来使资源包中的每个文本“可编辑”。使用AJAX将更改事件发送回服务器并更新资源包。
通过这种方式,翻译人员可以在实时系统中完成工作,这样他们就可以看到在线需要更改的内容(您可以根据文本是否已经或仍需要为文本提供CSS类别翻译)以及翻译的内容等等。
<强> [编辑] 强>
我的意思是 WAR文件之外。否则,每次翻译更改时都需要重新创建WAR。
或者,您可以将属性文件放入WEB-INF / classes(与普通类文件一起),并使用小脚本替换WAR中的文件。
在批处理/ shell脚本中,使用jar -u
替换现有文件。在ant中,使用旧的WAR文件作为源zipfileset
,首先添加新文件并使用duplicate="preserve"
。
这样,您不必再次压缩整个文件。