我有一个使用嵌套组件的应用程序。 RootComponent 的清单如下所示:
"componentUsages": {
"UserComponent": {
"name": "com.app.user",
"settings": {},
"componentData": {},
"lazy": true
},
"AdminComponent": {
"name": "com.app.admin",
"settings": {},
"componentData": {},
"lazy": true
}
},
两个组件都具有典型的库文件夹结构:
我在嵌套组件的清单中定义了
supportedLocales
和 fallbackLocale
属性,如下所示:
"sap.app": {
"id": "com.app.admin",
"i18n": {
"bundleUrl": "i18n/i18n.properties",
"supportedLocales": ["en", "de"],
"fallbackLocale": "en"
},
"title": "{{appTitle}}"
},
//...
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleUrl": "i18n/i18n.properties",
"supportedLocales": ["en", "de"],
"fallbackLocale": "en"
}
}
}
但是,当我启动应用程序时,即使网络日志中没有 404 错误,也不会应用任何翻译。 UI 只显示按键,而不显示翻译。我需要做什么才能使后备翻译逻辑与嵌套组件一起工作?
事实证明,在应用程序中使用嵌套组件时,您需要在
bundleName
的 bundleUrl
部分定义 models
键而不是 manifest.xml
:
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "com.app.admin.i18n.i18n",
"supportedLocales": ["en", "de"],
"fallbackLocale": "en"
}
}
},
这也显示在这个官方演示存储库中。
不过,您在
sap.app
部分中使用哪种变体似乎并不重要。