如何使用Lotusscript和SSJS库中的xPages翻译文件

时间:2013-12-13 13:24:41

标签: translation xpages resourcebundle lotusscript

我正在使用资源包将我的所有xpages翻译成不同的语言。 这非常适合在xPages中翻译标签等。

然而,我确实在数据库中有Lotusscript代理和服务器端javascript代码,用于向用户发送邮件,我希望这些电子邮件也可以使用翻译文件进行翻译。

所以我的问题很简单。是否可以从SSJS脚本库和Lotusscript代理中读取翻译文件。如果是这样,请告诉我怎么做?

下面的图片显示了我的所有翻译文件,每种语言都有一个。

的字符串_ *。属性

enter image description here

3 个答案:

答案 0 :(得分:4)

在SSJS中,您可以使用 getResourceAsStream 方法访问属性文件。

var data = "";
var ex = facesContext.getExternalContext();
var io:java.io.InputStream = ex.getResourceAsStream("strings_en.properties");

var i;
do{
   i = io.read();
   data += @Char(i)
}while( i != (-1) ) 

变量 data 现在包含整个* strings_en。属性文件。

可以在此处找到直接在 java.util.Properties 实例中加载属性的示例:

http://openntf.org/XSnippets.nsf/snippet.xsp?id=access-.properties-files

在LS中它更复杂:

  1. 您需要设计元素的查找视图,字段 $ FileNames 为关键
  2. 这允许您搜索属性文件。
  3. 然后您可以使用dxl
  4. 导出设计文档
  5. 在导出的DXL中,您必须搜索 $ FileData 项目
  6. 在项目中有BASE64编码的属性文件
  7. 解码它,跳过前30个字符(标题信息,如RT的大小)
  8. 逐行解析

答案 1 :(得分:2)

开发人员工作an article解释i18n(国际化的常用推荐人。请按照这些步骤。

对于LotusScript:按照上面的Svens步骤或从XPage应用程序中删除它。

另一种方法:由于您的资源文件仅在设计时更改:

  • 将您的NSF链接到磁盘项目
  • 现在所有资源文件都可供工具访问
  • 创建一个将资源文件转换为LS源的Java类。您可以填充列表或使用类。
  • 在您的磁盘项目的构建器中
  • 创建一个运行您的类的Ant任务,并将LS写入磁盘项目中的库。
  • 同步会将其写回您的nsf

玩得开心

答案 2 :(得分:1)

没有什么可以添加到Stefan和Sven的答案中,至少在问题的技术方面没有。不过我不知道你对这个问题的基本方法是不是一个不同的方法:

假设您的应用程序主要基于Xpages前端设计,我想知道LS代理可以为您的用户提供哪些需要翻译的内容。也许某些邮件内容或某些字段内容使用后端类打印到文档中。但是,在这两种情况下,您都没有机会使用来自客户端首选项或存储在用户配置文件中的用户首选项的任何本地化参数或类似的内容:计划代理无法对这些设置做出反应。我想说的是:你真的确定你的LS代码实际上需要访问翻译的字符串吗?或者将这些负载放到SSJS代码上会不会更容易,而SSJS代码又可以访问您的资源包?

还有另外一个想法:我真的很喜欢Xpages使用i18n的方法,但总是存在缺点,你需要一个设计师客户端来应用翻译,在同样的情况下,数据库所有者需要简单访问翻译表但是doens没有使用Domino Designer的menas或访问权限。因此,至少在某些应用程序中,我更喜欢使用存储在数据库本身中的配置文件集,以便通过各种代码进行访问,尽管我知道这可能会带来性能问题。因此,Stefan关于使用服务器文件系统的想法可能是一个很好的解决方案。