标准 SAPUI5 应用程序的 SAP 自定义翻译

SAP custom translations for standard SAPUI5 application

我目前正在对 SAP Marketing 的标准应用程序实施扩展。

扩展包含需要翻译成不同语言的新文本。在我以前的扩展中,我也可以将标准应用程序的翻译密钥用于我的扩展。在这种情况下,i18n.properties 文件中的第一行的结构始终如下:

# SAPUI5 TRANSLATION-KEY XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但是,在我当前正在编辑的标准应用程序中,它看起来像这样:

# This is the resource bundle for Campaigns 
# __ldi.translation.uuid = 8e965d5e-c905-4b60-ac2a-205abb14046

在交易 se63 中,找不到翻译密钥(它甚至是翻译密钥吗?)- 有或没有连字符。此外,在标准应用程序中,每种语言的翻译都保存在一个文件中(例如,i18n_de.properties)。这就是为什么我不确定这个标准应用程序是否有翻译密钥。

我不想为我的扩展程序创建一个新的翻译密钥并使用这个。执行此操作后,还必须为新的翻译密钥维护标准应用程序的所有翻译。

有人熟悉这种翻译吗?如何维护我的扩展的翻译?

此致,

基督教徒

我找到了解决问题的方法:

  1. 我在事务 se38
  2. 中通过 运行 程序 /UI5/TEXT_FILE_GEN_TRANS_KEY 生成了一个新的翻译密钥
  3. 我创建了一个新文件夹 i18n 并向其中添加了一个 i18nCustom.properties 文件。然后我将翻译密钥和默认翻译添加到文件中,就像常规 i18n.properties 文件一样。
  4. 在下一步中,我将以下代码添加到扩展的 manifest.json 文件的 sap.ui5 属性 中以启动自定义翻译文件:

    "models": {
        "i18nCustom": {
            "type": "sap.ui.model.resource.ResourceModel",
            "settings": {
                "bundleName": "<Your Component>.i18n.i18nCustom"
            }
        }
    }
    

    请注意,您现在必须在视图中使用类似 {i18nCustom>property} 的东西,而不是使用 i18n 模型。

  5. 为了用自定义文件增强标准翻译文件,我将以下代码添加到 BaseController。您也可以仅在其视图使用自定义翻译的控制器中添加代码。

    onBeforeRendering: function() {
        var i18n = this.getModel("i18n"); // Get the standard i18n file
        var sBundleURL = this.getModel("i18nCustom").getResourceBundle().oUrlInfo.url;
        i18n.enhance({bundleUrl:sBundleURL}); // Merge the custom i18n file with the standard one
    }
    

希望这对遇到同样问题的人有所帮助。