UI5-文档-4.8-Translatable Texts
在这一步中,我们将UI的文本移动到一个单独的资源文件中。
这样,他们都在一个中心位置,可以很容易地翻译成其他语言。这个国际化过程(简称i18n)是在SAPUI5中通过使用一种特殊的资源模型和标准的数据绑定语法实现的,但是没有前面的/。
Preview

An input field and a description displaying the value of the input field (No visual changes to last step)
Coding
You can view and download all files at Walkthrough - Step 8.
webapp/i18n/i18n.properties (New)
showHelloButtonText=Say Hello
helloMsg=Hello {0}
在本教程中,我们将只有一个属性文件。但是,在实际项目中,对于每种受支持的语言,您都有一个单独的文件,该文件带有地区后缀,例如i18n_de 德语属性 i18n_en英语属性,等等。当用户运行应用程序时,SAPUI5将加载最适合用户环境的语言文件。我们创建文件夹webapp/i18n和文件i18n。属性里面。解析后的包名是sap.ui.demo.walk.i18n,稍后我们将看到。文本的属性文件包含每个元素的名称-值对。您可以向文本中添加任意数量的参数,方法是向文本中添加大括号中的数字。这些数字与访问参数的顺序(s)相对应.
controller/App.controller.js
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/m/MessageToast",
"sap/ui/model/json/JSONModel",
"sap/ui/model/resource/ResourceModel"
], function (Controller, MessageToast, JSONModel, ResourceModel) {
"use strict";
return Controller.extend("sap.ui.demo.walkthrough.controller.App", {
onInit : function () {
// set data model on view
var oData = {
recipient : {
name : "World"
}
};
var oModel = new JSONModel(oData);
this.getView().setModel(oModel);
// set i18n model on view
var i18nModel = new ResourceModel({
bundleName: "sap.ui.demo.walkthrough.i18n.i18n"
});
this.getView().setModel(i18nModel, "i18n");
},
onShowHello : function () {
// read msg from i18n model
var oBundle = this.getView().getModel("i18n").getResourceBundle();
var sRecipient = this.getView().getModel().getProperty("/recipient/name");
var sMsg = oBundle.getText("helloMsg", [sRecipient]);
// show message
MessageToast.show(sMsg);
}
});
});
在onInit函数中,我们实例化了ResourceModel,它指向文本现在所在的新消息包文件(i18n).属性文件。包名sap.ui.demo. i18n.i18n包括应用程序名称空间sap.ui.demo.演练(index.html中定义的应用程序根目录)、文件夹名i18n,最后是不带扩展名的文件名i18n。SAPUI5运行时计算到资源的正确路径; 这里是到i18n.properties属性文件。接下来,在视图上将模型实例设置为具有键i18n的命名模型。当需要同时使用多个模型时,可以使用命名模型。
在onShowHello事件处理函数中,我们访问i18n模型来从消息包文件中获取文本,并将占位符{0}替换为数据模型中的接收方。getProperty方法可以在任何模型中调用,并将数据路径作为参数。此外,资源包具有一个特定的getText方法,该方法将字符串数组作为第二个参数。
可以使用ResourceModel的getResourceBundle方法访问资源包。与手工连接可翻译文本不同,我们可以使用getText的第二个参数用非静态数据替换部分文本。在运行时,SAPUI5试图加载正确的i18n_*。基于浏览器设置和区域设置的属性文件。在我们的例子中,我们只创建了一个i18n.properties文件使其更简单。但是,您可以从浏览器开发工具的网络流量中看到,SAPUI5试图加载一个或多个i18n_*.properties文件,然后返回到默认的i18n.属性文件。
webapp/view/App.view.xml
<mvc:View
controllerName="sap.ui.demo.walkthrough.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Button
text="{i18n>showHelloButtonText}"
press="onShowHello"/>
<Input
value="{/recipient/name}"
description="Hello {/recipient/name}"
valueLiveUpdate="true"
width="60%"/>
</mvc:View>
在XML视图中,我们使用数据绑定将按钮文本连接到i18n模型中的showHelloButtonText属性。资源包是平面结构,因此路径可以省略前面的斜杠(/)。
请注意:出于演示的目的,描述文本没有完全本地化。为了安全起见,我们必须使用与控制器类似的机制来使用资源包中的字符串并替换其中的部分。这可以用jQuery.sap完成。formatMessage格式化程序。此外,i18n文件只影响客户端应用程序文本。从后端系统加载的文本可以以后端系统支持的所有语言显示。
Conventions
▪用于国际化的资源模型称为i18n模型。
▪默认文件名是i18n.properties。
▪资源包键是用(较低的)camelCase编写的。
▪资源包值可以包含{0}、{1}、{2}、……
▪永远不要连接翻译后的字符串,总是使用占位符。
▪对特殊字符使用Unicode转义序列。
Parent topic: Walkthrough
Previous: Step 7: JSON Model
Next: Step 9: Component Configuration
Related Information
API Reference:jQuery.sap.util.ResourceBundle
API Reference:sap.ui.model.resource.ResourceModel
Samples:sap.ui.model.resource.ResourceModel
UI5-文档-4.8-Translatable Texts的更多相关文章
- ABP文档 - 本地化
文档目录 本节内容: 简介 应用语言 本地化源 XML文件 注册XML本地化源 JSOn文件 注册JSON本地化源 资源文件 自定义源 获取一个本地文本 在服务端 在MVc控制器里 在MVC视图里 在 ...
- [转]unity3d 脚本参考-技术文档
unity3d 脚本参考-技术文档 核心提示:一.脚本概览这是一个关于Unity内部脚本如何工作的简单概览.Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的.在脚本对象内部不同志的函数被 ...
- ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...
- ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/ 谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...
- 使用docx4j编程式地创建复杂的Word(.docx)文档
原文链接:Create complex Word (.docx) documents programatically with docx4j 原文作者:jos.dirksen 发表日期:2012年2月 ...
- SAP 常用增强记录文档
转自:http://blog.csdn.net/budaha 20170215需要一个PR 修改保存时候的增强,目的是同步PR的处理状态 EBAN-STATU 到一个自建表ZTPRTOPO,记得有个P ...
- python+selenium爬取百度文库不能下载的word文档
有些时候我们需要用到百度文库的某些文章时,却发现需要会员才能下载,很难受,其实我们可以通过爬虫的方式来获取到我们所需要的文本. 工具:python3.7+selenium+任意一款编辑器 前期准备:可 ...
- Web 通信技术 ——跨文档信息传输(JavaScript)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.html * 作者:常轩 * 微信公众号:Worldh ...
- javadoc导出成word文档
刚刚上次弄完了一个坑爹的任务,这次我领导又给我一个让人脑瓜子疼的任务了. 基本上客户他在验收我们系统的时候,都会要求我们编写相关的文档,这次也不例外. 只是这次的客户要求我们给出接口文档.不仅是要整个 ...
- C#给PDF文档添加文本和图片页眉
页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...
随机推荐
- silverlight 进行本地串口调用的一种可行的解决方法
silverlight 是一个很不错的开发平台,我们可以设计出很绚丽的界面,用户可以拥有很好的体验,但是就目前来说,进行本地串口的直接调用时不行的,因为安全的原因,有没有相对简单的调用方式呢? 答案是 ...
- 哈勃(Hubble)望远镜的新发现
请看下图: itok=FcRLe7t_" name="图形1" alt="" border="0" height ...
- java调用.net的webservice
目录(?)[-] 一参考文献 二概述 三实例 注意点 一.参考文献 1. http://www.cnblogs.com/xuqifa100/archive/2007/12/13/993926.ht ...
- PHP写的手机端网站,可以打包成app吗,怎么打包?
8:13:36 沐歌-重庆 2018/1/19 8:13:36 PHP写的手机端网站,可以打包成app吗,怎么打包 风太大-淮安 2018/1/19 8:14:58 变色龙 沐歌-重庆 一般用什么打包 ...
- Map 的营救;使对象属性有顺序
使用ES6的新特性Map.Map 对象以插入的顺序遍历元素.for...of循环为每一次循环返回一个[key, value]数组. 如果想在跨浏览器环境中模拟一个有序的关联数组,你要么使用两个分开的数 ...
- MySql检测阻塞,锁等待sql
------------ 1分钟内产生binlog大小计算 select @a1:=VARIABLE_VALUE as a1from information_schema.GLOBAL_STATUSw ...
- 日期获取 net
项目中用到了,所以就写全了,供参考使用. DateTime dt=DateTime.Now;int weeknow = Convert.ToInt32(DateTime.Now.DayOfWeek); ...
- MongoDB配置成系统服务(Win)
bin同级目录下创建文件夹data 进入data创建文件夹db和文件夹logs 进入logs创建文件mongo.log 以管理员权限打开cmd,进入mongo的bin目录下执行命令: mongod - ...
- C# 日期格式化的中的(/)正斜杠的问题(与操作系统设置有关)
Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd" )); //这行代码, 如果你在系统日期格式默认的情况下输出 2013/0 ...
- nginx_auto_deny
nginx auto deny 流量/访问限制脚本 https://files.cnblogs.com/files/ligao/nginx_deny_ip.tar.gz