cancel
Showing results for 
Search instead for 
Did you mean: 

Custom translations for standard SAPUI5 application

0 Kudos

I am currently implementing an extension to a standard application from SAP Marketing.

The extension contains new texts that need to be translated into different languages. In my previous extensions I could use the translation key of the standard application for my extension as well. The first line in the i18n.properties file in this case was always structured as follows:

# SAPUI5 TRANSLATION-KEY XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

However, in the standard app that I'm currently editing, it looks like this:

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

In transaction se63, the translation key (is it even a translation key?) is not found - either with hyphens or without. Furthermore, in the standard app, the translations are kept in a single file for each language (e.g., i18n_de.properties). That's why I'm not sure if there's even a translation key for this standard app.

I don't want to create a new translation key for my extension and use this one. Once I did this, all the translations of the standard app had to be maintained for the new translation key as well.

Is anyone familiar with this type of translation? How can I maintain the translations for my extension?

Best Regards,
Christian

Accepted Solutions (1)

Accepted Solutions (1)

I found some solution to my problem:

  1. I generated a new translation key by running program /UI5/TEXT_FILE_GEN_TRANS_KEY in transaction se38
  2. I created a new folder i18n and added a i18nCustom.properties file to it. Then I added the translation key and default translations to the file just like for a regular i18n.properties file.
  3. In the next step, I added the following code to the sap.ui5 property of the extension's manifest.json file to initiate the custom translation file:
"models": {
    "i18nCustom": {
        "type": "sap.ui.model.resource.ResourceModel",
        "settings": {
            "bundleName": "<Your Component>.i18n.i18nCustom"
        }
    }
}

Please note that you have to use something like {i18nCustom>property} in your view now instead of using the standard model.

4. To enhance the standard translation file with the custom one, I added the following code to the BaseController. You could also add the code only in the controller whose view is using the custom translations.

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
}

Hope this helps if someone has the same problem.

Answers (0)