【问题标题】:How to use xPages translation files from Lotusscript and SSJS libraries如何使用来自 Lotusscript 和 SSJS 库的 xPages 翻译文件
【发布时间】:2013-12-13 13:24:40
【问题描述】:

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

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

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

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

string_*.properties

【问题讨论】:

  • 是的:DXL。附言祝你好运... ;)

标签: translation xpages resourcebundle lotusscript


【解决方案1】:

在 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.properties 文件。

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

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

在 LS 中更复杂:

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

【讨论】:

    【解决方案2】:

    在开发人员的作品中有an article 解释 i18n(国际化的通用引用者。按照这些步骤操作。

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

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

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

    玩得开心

    【讨论】:

      【解决方案3】:

      Stefan 和 Sven 的回答没有什么可补充的,至少在您的问题的技术方面没有。但是,我想知道您解决问题的基本方法是否不能不同:

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

      还有一个想法:我真的很喜欢 Xpages 使用 i18n 的方法,但总是存在一个缺点,即您需要设计器客户端来应用翻译,并且在同样的情况下,数据库所有者需要简单地访问翻译表,但确实如此没有使用 Domino Designer 的菜单或访问权限。因此,至少在某些应用程序中,我更喜欢使用存储在数据库本身中的配置文档集,以供各种代码访问,尽管我知道这可能会带来性能问题。所以也许 Stefan 使用服务器文件系统的想法可能是一个很好的解决方案。

      【讨论】:

      • 嘿设计师是免费的 :-)
      • 是的,但不是每个人都可以在生产环境中使用它,或者设计人员可以访问生产数据库
      • 感谢您的回答。 lotusscript 代理向用户发送时事通讯,他们的语言在用户配置文件中设置。我认为对我来说最好的方法是为需要使用 lotusscript 代理翻译的几行提供一个特殊的翻译文件(存储在文档中)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多