cancel
Showing results for 
Search instead for 
Did you mean: 

Fragment calls wrong i18n path after deployment to fiori launchpad

0 Kudos

Dear Experts,

we developed a custom SAPUI5-App with one main view and two fragments. We have three i18n-files for different languages.

If I test the i18n translations in my local WebIDE everything is fine. But after we deployed the app in our Fiori launchpad an error occured while loading the i18n files.

If I open the app in the launchpad the main view is loading the correct i18n files and the labels are translated. But if I open the fragments, F12 says that it cannot load the i18n files. When I was analyzing the Network requests I noticed, that the main view is calling the correct path of the i18n file but the fragments are calling another path wich is wrong and after that there is a 404 error (not found).

I tried many things:

  • Set the i18n model for every single fragment
  • Use the function "addDependent" in the create and calling methods for the fragment
  • Check the manifest.json and the component.js for wrong resources or path
  • Check the mapping file of the bsp application

Nothing works. And again: It works in my local test environment.

Inside the launchpad the main view is calling the correct path: https://XXX/sap/bc/ui5_ui5/sap/zindivsel_nmf/~A511A000B4A95D2839F3719D216182DE~5/i18n/i18n_it.proper...

Inside the launchpad the fragments are calling the wrong path: https://XXX/sap/bc/ui5_ui5/ui2/ushell/shells/abap/i18n/i18n_it.properties

Did somebody know why this happens and how can I fix it?

Regards,

Tim

junwu
Active Contributor
0 Kudos

why not put your model in manifest.json?

Accepted Solutions (1)

Accepted Solutions (1)

Dear Experts,

thanks a lot for your ideas and help. I solved the problem now.

In my case the solution was that I have to put the "addDependent" statement not inside my "createViewSettingsDialog" method rather then in my button event method if I`m clicking the filter / sort button.

So finally it was only one line of code to solve the problem 🙂

Here also my Code for all who have the same issue:

// Create the Dialog
createViewSettingsDialog: function(sDialogFragmentName) {
var oDialog = this._mViewSettingsDialogs[sDialogFragmentName];
if (!oDialog) {
oDialog = sap.ui.xmlfragment(sDialogFragmentName, this);
this._mViewSettingsDialogs[sDialogFragmentName] = oDialog;
}
return oDialog;
},


// Button-Event for Sort
handleSortButtonPressed: function() {
this.getView().addDependent(this.createViewSettingsDialog("zindivsel_nmf.view.SortDialog"));
this.createViewSettingsDialog("zindivsel_nmf.view.SortDialog").open();
},
karthikarjun
Active Contributor
0 Kudos

Awesome Tim

Answers (3)

Answers (3)

junwu
Active Contributor
0 Kudos
<Module Path> is the id in your manifest.json. not that url
karthikarjun
Active Contributor
0 Kudos

Hi Tim, Can you try to use below path?

        var rootPath = jQuery.sap.getModulePath("<Module Path>");
        var i18nModel = new sap.ui.model.resource.ResourceModel({
            bundleUrl : [rootPath, '<i18n Path>'].join("/")
        });
        this.setModel(i18nModel, "i18n");

Regards,

Karthik Arjun

0 Kudos

jun.wu5 The i18n models are already defined in my manifest.json (see here i18n-manifest.png)

karthikarjun Thanks a lot for your code snippet. I was putting it with my custom path in my coding:

var rootPath = jQuery.sap.getModulePath("/sap/bc/ui5_ui5/sap/zindivsel_nmf");

var i18nModel_it = new sap.ui.model.resource.ResourceModel({
bundleUrl: [rootPath, 'i18n/i18n_it.properties'].join("/")
});
this.setModel(i18nModel_it, "i18n_it");

After that, the following (wrong) path is used in the launchpad (only the second part that is given trough the coding would be right):

https://XXX/sap/bc/ui5_ui5/ui2/ushell/resources/~20190213161400~/sap/bc/ui5_ui5/sap/zindivsel_nmf/i18n/i18n_it.properties

new-path.png

Is it possible to overwrite the first part "sap/bc/ui5_ui5/ui2/ushell/resources/~20190213161400~/" with my second part?

Thanks for your help!

Regards,

Tim

UxKjaer
Product and Topic Expert
Product and Topic Expert
0 Kudos

Can you please show the code where you are appending the fragment. You might be able to use the answer from this. https://stackoverflow.com/questions/25636637/localizationi18n-in-sapui5-for-fragment-xml-file-in-not...

0 Kudos

Hi Jakob,

thanks for your answer. I attached my coding to this answer as a screenshot including the structure of my app to give you a better understanding of what I`m doing.

Explanation to the screenshots:

  1. I have one Controller that is responsible for my MainView and my fragments
  2. I created a container for my fragment with a ViewSettingsDialog
  3. And I tried to set the model directly to the fragment when the button pressed and also when the container was created including "addDependent" (tried in both methods)
  4. There you will see the simple xml coding of my fragment with the normal i18n binding

FYI: Maybe there is something obsolet in my coding because I tried many things in case of my issue 😉

Is there anything wrong with that coding? If yes, I`m wondering why it works in my local test environment.

If I have a look at the coding of your recommended link: I think there is nothing new compared to my coding. What do you think?

Thanks for your help!

Regards,

Tim

1-app-structure.png

2-create-basic-fragment-container.png

3-action-sort-button-pressed.png

4-xml-sort.png