• sapui5 使用common(其他工程)的i18n 文件


    先做成一个application。

    我这里做成的application的id是"app3.App3"。

    然后在这个app的i18n文件中添加对应的内容,我写了一个简单的Common。

    之后将这个工程发布。我设置的Application name是 ZTESTAPP3。

    在Fiori的管理页面中,进行这样的配置。

    需要在之后的App中用到url以及id

    在另外一个App的manifest.jaso文件中追加以下内容

    {
        "_version": "1.12.0",
        "sap.app": {
            "id": "redirectApp1.RedirectApp1",
            "type": "application",
            "i18n": "i18n/i18n.properties",
            "applicationVersion": {
                "version": "1.0.0"
            },
            "title": "{{appTitle}}",
            "description": "{{appDescription}}",
            "sourceTemplate": {
                "id": "ui5template.basicSAPUI5ApplicationProject",
                "version": "1.40.12"
            }
        },
        "sap.ui": {
            "technology": "UI5",
            "icons": {
                "icon": "",
                "favIcon": "",
                "phone": "",
                "phone@2": "",
                "tablet": "",
                "tablet@2": ""
            },
            "deviceTypes": {
                "desktop": true,
                "tablet": true,
                "phone": true
            }
        },
        "sap.ui5": {
            "flexEnabled": false,
            "rootView": {
                "viewName": "redirectApp1.RedirectApp1.view.HelloApp1",
                "type": "XML",
                "async": true,
                "id": "HelloApp1"
            },
            "dependencies": {
                "minUI5Version": "1.65.6",
                "components": {
                    "app3.App3": {
                        "minVersion": "1.0.0"
                    }
                },
                "libs": {
                    "sap.ui.layout": {},
                    "sap.ui.core": {},
                    "sap.m": {}
                }
            },
            "contentDensities": {
                "compact": true,
                "cozy": true
            },
            "models": {
                "i18n": {
                    "type": "sap.ui.model.resource.ResourceModel",
                    "settings": {
                        "bundleName": "redirectApp1.RedirectApp1.i18n.i18n"
                    }
                }
            },
            "resources": {
                "css": [
                    {
                        "uri": "css/style.css"
                    }
                ]
            },
            "routing": {
                "config": {
                    "routerClass": "sap.m.routing.Router",
                    "viewType": "XML",
                    "async": true,
                    "viewPath": "redirectApp1.RedirectApp1.view",
                    "controlAggregation": "pages",
                    "controlId": "app",
                    "clearControlAggregation": false
                },
                "routes": [
                    {
                        "name": "RouteHelloApp1",
                        "pattern": "RouteHelloApp1",
                        "target": [
                            "TargetHelloApp1"
                        ]
                    }
                ],
                "targets": {
                    "TargetHelloApp1": {
                        "viewType": "XML",
                        "transition": "slide",
                        "clearControlAggregation": false,
                        "viewId": "HelloApp1",
                        "viewName": "HelloApp1"
                    }
                }
            }
        },
        "sap.platform.hcp": {
            "uri": "webapp",
            "_version": "1.1.0"
        },
        "sap.platform.abap": {
            "uri": "/sap/bc/ui5_ui5/sap/ztestredirect/webapp",
            "_version": "1.1.0"
        }
    }

    将app3.App3作为组件添加进来。

    修改Component.js

    jQuery.sap.registerModulePath("app3.App3", {
        url: "/sap/bc/ui5_ui5/sap/ZTESTAPP3"
    });
    
    sap.ui.define([
        "sap/ui/core/UIComponent",
        "sap/ui/Device",
        "redirectApp1/RedirectApp1/model/models"
    ], function (UIComponent, Device, models) {
        "use strict";
    
        return UIComponent.extend("redirectApp1.RedirectApp1.Component", {
    
            metadata: {
                manifest: "json"
            },
    
            /**
             * The component is initialized by UI5 automatically during the startup of the app and calls the init method once.
             * @public
             * @override
             */
            init: function () {
                    // get the i18n model for the app
                    var oI18nModel = this.getModel("i18n");
    
                    // get the common component
                    var oCommonComponent = sap.ui.component({
                        name: "app3.App3"
                    });
    
                    // get the common component resource bundle
                    if (oCommonComponent) {
                        var oBundle = oCommonComponent.getModel("i18n").getResourceBundle();
    
                        // enhance the app i18n with the resources from the commmon component
                        oI18nModel.enhance(oBundle);
                    }    
                
                
                
                // call the base component's init function
                UIComponent.prototype.init.apply(this, arguments);
    
                // enable routing
                this.getRouter().initialize();
    
                // set the device model
                this.setModel(models.createDeviceModel(), "device");
                
                //jQuery.sap.registerModulePath("common", "./../../common");
            }
        });
    });

    使用App1的deploy信息,将他注册到App2中,

    jQuery.sap.registerModulePath("app3.App3", {
    url: "/sap/bc/ui5_ui5/sap/ZTESTAPP3"
    });

    两个参数,一个是App1的id,一个是App1的url。

    注册之后,可以取得App1的i18n的Model,将他扩展到App2中。

    App2的View

    <mvc:View controllerName="redirectApp1.RedirectApp1.controller.HelloApp1" 
        xmlns:mvc="sap.ui.core.mvc" 
        xmlns="sap.m"
        displayBlock="true">
        <Shell id="shell">
            <App id="app">
                <pages>
                    <Page id="page" title="{i18n>title}">
                        <content>
                            <Panel
                              headerText="App1">
                              <content>
                                 <Button
                                    text="Redirect To App2"
                                    press=".onRedirect"/>
                                    
                                  <Button text="{i18n>commonText}"/>
                              </content>
                            </Panel>
                        </content>
                    </Page>
                </pages>
            </App>
        </Shell>
    </mvc:View>

    App2的i18n文件,没有定义commonText

    显示的Common,是定义在app3.App3中的。

    使用这种方法,应该也可以抽出共通,然后所有的app都使用共通的component

    参照blog:https://jasper07.secondphase.com.au/blog/2016/04/09/merge-translatable-texts/

  • 相关阅读:
    再谈spark部署搭建和企业级项目接轨的入门经验(博主推荐)
    CSS基础3——使用CSS格式化元素内容的字体
    利用MySQL 的GROUP_CONCAT函数实现聚合乘法
    POJ Octal Fractions(JAVA水过)
    组件接口(API)设计指南-文件夹
    Nginx 因 Selinux 服务导致无法远程訪问
    host字段变复杂了
    hdu 1251 统计难题 初识map
    “那个人样子好怪。”“我也看到了,他好像一条狗。”
    pomelo 协议
  • 原文地址:https://www.cnblogs.com/suoluo119/p/11585817.html
Copyright © 2020-2023  润新知