我目前正在从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
)。这就是为什么我不确定此标准应用程序甚至没有翻译密钥的原因。
我不想为扩展名创建新的翻译密钥并使用它。完成此操作后,还必须为新的翻译密钥保留标准应用程序的所有翻译。
有人熟悉这种翻译吗?如何为扩展程序维护翻译?
最好的问候,
基督徒
我找到了解决问题的方法:
/UI5/TEXT_FILE_GEN_TRANS_KEY
中运行程序se38
生成了新的翻译密钥i18n
,并向其中添加了i18nCustom.properties
文件。然后,我将翻译键和默认翻译添加到了文件中,就像常规的i18n.properties
文件一样。下一步,我将以下代码添加到扩展名sap.ui5
文件的manifest.json
属性中,以启动自定义翻译文件:
"models": {
"i18nCustom": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "<Your Component>.i18n.i18nCustom"
}
}
}
[请注意,您现在必须在视图中使用类似{i18nCustom>property}
的东西,而不是使用i18n
模型。
为了使用自定义文件增强标准翻译文件,我在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
}
希望有人遇到同样的问题会有所帮助。