如何从XPage中的配置文件中读取翻译标签?

时间:2014-08-18 13:55:10

标签: xpages translation profile labels

我是xpages启用旧的Notes应用程序,该应用程序使用配置文件来存储已翻译的标签。注释表单中的翻译标签使用@GetProfileField从配置文件中读取,具体取决于用户在其配置文件中选择的语言。

我已经读过不建议将配置文件与xpages一起使用,因此我需要为我的xpages用户提供更好的解决方案。但使用Notes客户端的用户仍然使用“旧的”配置文件解决方案非常重要。

如何向我的xpages用户提供这些翻译标签?

由于 托马斯

3 个答案:

答案 0 :(得分:2)

除了Knut的答案之外,还有选项" double"通过使用本文所述的本地化选项,您可以通过喜欢XPages dev的方式翻译标签:http://www-10.lotus.com/ldd/ddwiki.nsf/dx/UsingLocalizationOptions.htm

答案 1 :(得分:2)

您需要将任务分成两部分。首先有一个在XPage中调用的函数来获取你正在寻找的标签,其次有一种方法可以在函数内部提供这个值。

直接调用该配置文件并不是一个好主意,因为它修复了您提供数据的方式(如果您不进行回收,可能会造成内存泄漏)。我会看到4个可能的解决方案:

  1. 将您的个人资料文档定义为附加数据源,并将标签绑定到文档中的项目。为您节省大部分回收工作,但情侣紧张

  2. 使用SsJS函数:getLabel(name)。它会检查范围变量(地图),如果没有找到加载它 - 目前来自你的个人资料。如果应用范围足够好,您只需触摸一次配置文件 - 速度。如果您稍后更改了加载程序 - 您不需要更改XPage中的任何内容。

  3. 使用托管bean。与#2相同的方法,现在只能使用el数据绑定。你的bean需要实现Map

  4. 如果标签几乎没有变化,请进行设计时转换并将配置文件doc写入属性文件(与ODP配合使用)并使用XPages内部机制进行国际化

  5. 让我们知道它是怎么回事

答案 2 :(得分:1)

您可以将配置文件用于此用例,因为内容仅可能与项目的新版本一起更改。因此,您可以轻松使用个人资料文档的缓存。

您可以使用

从配置文件中获取标签转换
var doc = database.getProfileDocument("LabelsEnglish", "");
var label = doc.getItemValueString("label1");
doc.recycle();
return label; 

您也可以阅读应用范围变量Map 中的所有标签并执行自己的缓存。这样,配置文件只能读取一次。

if (!applicationScope.labels) {
    var map = new java.util.HashMap();
    var doc = database.getProfileDocument("LabelsEnglish", "");
    var allItems = doc.getItems();
    for (var i = 0; i < allItems.size(); i++) {
        var item = allItems.elementAt(i);
        item.getName();
        map.put(item.getName(), item.getValueString());
        item.recycle();
    }
    doc.recycle();
    applicationScope.labels = map;
}

在页面加载事件之前的每个XPage(例如应用程序布局自定义控件)中包含的自定义控件中执行上面的SSJS代码,这样您就可以确定应用程序范围变量&#34;标签&#34;在您想要使用它时初始化。您可以使用EL

轻松访问标签
 applicationScope.labels.label1