大多数浏览器和
Developer App 均支持流媒体播放。
-
Apple TVOS 上的本地化最佳做法
为全球受众构建 app,使其覆盖更多用户。学习如何创建在任何国家/地区和语言设置下都能流畅运行的本地化 Apple TVOS app。深入探讨处理服务器端内容、匹配首选语言以及本地化图像和文本方向等各类主题。
资源
-
下载
(tvOS上的最佳本地化体验)
大家好 欢迎你们来到 “tvOS上的最佳本地化体验” 我的名字叫若阿金·罗波·席尔瓦 在接下来几分钟里 我将会带着你们看一下 你们要采取的几个步骤 在tvOS上创造一个 很棒的本地化应用体验
Apple TV已经在多语言 和不同地区上架了 tvOS 11上新加入的是 阿拉伯语和希伯来语 以及可选的系统语言 将国际化支持加入到你的应用中 是一个进入新市场的好机会 让更多的用户来使用并享受你的内容 我们有很多的API和工具 来帮助你们达成这一点 让我们现在就开始吧
我会把这个主题分成 三个不同部分来讲 首先 我会谈谈如何处理 文本的最佳体验 即显示给你用户的文本信息 然后我会说下 对于布局和图像应该考虑的因素 最后 就是导出你本地内容的步骤 还有测试你的应用 以确保它能正常运作 让我们从文本开始说起吧
任何要呈现给你用户的文本信息 都应该以他们的偏好语言显示
如果在你的Storyboard元素里有些文本 你就什么都不需要做了 它们被默认标记为“本地化的”
如果你计划呈现的是字符串和代码 那么这些内容应该调用 NSLocalizedString来返回 这样就可以将你的字符串 标记为“本地化的” 以便它会被包含在 你将要送出翻译的文件中
对于这两种情况 给字符串做好备注是非常有用的 你应用里的每一个本地化的字符串 都应该包含这部分备注 备注可以被当成定义因素 用于已翻译内容和 感觉不自然或不清晰的文本信息之间
这里是一个代码中本地化字符串的例子 如你所见 这是个简单的英文单词“订阅” 其备注描述了 它会出现我UI中的什么位置 还有它在我的应用里会实现什么
将备注加到 Storyboard元素上也很简单 对于每个元素 你就把备注加到 在Identity Inspector下的 Comment for Localizer文本框
需要注意的是 要显示你应用中的文本信息时 本地化字符串不是唯一实现它的方式 事实上 你的一些用例很有可能 被我们的格式化类所支持 这些类能帮助你格式化和显示内容 像是数字 汇率 日期 像是长度和质量单位 以及更多 根本就不用给这些内容写本地化字符串
这里是个关于使用 DateFormatter的例子 我只需创建这个对象 在本例中 我只关心显示时间 因此我将timeStyle 设成我偏好的长度值 最后得到一个此对象的格式化字符串 这个字符串 不仅保证是以用户的偏好语言显示 而且处理了一些其他的格式化环境内容 像是用户偏爱12小时制 还是24小时制
关于如何最大程度地利用格式器 的更多信息 还有它们国际化能力的一些指引内容 我强烈建议你们去看看 2016年的这两场演讲
让我们谈谈远程内容
任何你从服务器取得的文本信息 也应该与你应用的运行语言一致 我所指的是 例如 你应用里所显示的 多媒体内容和描述信息
为了达成这一点 你需要通知你的服务器 内容应该以什么语言来呈现
我们有些API来让你们知道 你应用的当前运行语言是什么 这帮你省了很多工夫 来从你支持的语言中选出最好的 同时还尊重了用户的偏好
像是区域差异和 适当的区域备用方案这些因素 也被考虑到了
举几个小例子 这里我有一个表格 第一列显示的是语种 用户可能将此语种选为其系统语言 第二列 显示了你应用支持的备选语言 第三列就是最终结果 在考虑各种情况后所得出 第一个例子是 用户选择了西班牙语 并将区域设为墨西哥 由于识别码是“es-MX”
这个应用除了支持西班牙的西班牙语 还支持拉丁美洲西班牙语 在本地化列表中 分别是“es-ES”和“es-419” 运行时间接下来会 为你的应用选择拉丁美洲西班牙语
类似地 第二个例子是 用户选择了中文 并将区域设为中国 Bundle接下来就会选择 “简体中文” 从你应用所支持的语种当中
要获取你应用的当前运行语言 你只需要从偏好本地化内容中 获取第一个对象 该内容来自于你应用的bundle 它会返回一个语言识别码 你可以将此识别码发送到服务器上
同样地 如果你的服务器支持 很多种跟你应用有关的语言 你也可从这些语言中得到最合适的语言 利用Bundle.preferredLocalizations (from: available)语句
这就是关于 如何处理你应用中文本信息的概述 可以使用Storyboard 来将文本标记为本地化的 也可以调用 NSLocalizedString以及相关代码 我们有许多格式器 用来显示和上下文化信息 像是日期和数字 对于远程内容 你可以依赖Bundle API 来通知你的服务器 你的内容应该被显示成什么语言
接下来 让我们谈下布局和图像
谈到布局的时候 通常有两种要进行适应的情况
第一种就是单词长度可能不同 例如 这里是英文单词"backup" 然后这是芬兰语中同样的单词 显著变长或者变短的翻译 会影响你的布局在运行时间中的表现 你应该为此相应地进行设计
另一个方面是文本方向性 英语使用的是拉丁字母表 读还有解析都是从左到右的
一些语言像是阿拉伯语 它们的文本是从右到左读的 结果就是有一些设计上的考虑 来应对关于信息的流向和顺序 例如 在从右到左的语言中 列表中的第一个项目应该是在最右边 而不是在最左边
如果你的应用用UIKit 来显示用户界面元素 这里有一些你能用得上的技术 来让你轻松应对这两种不同的情况 我强烈建议你 从UIStackView开始看起 UIStackView是一个用来布局 一系列视图的流线型界面 水平或者垂直地 它们还可以被嵌套使用 来创建这里所显示的复杂布局
在本例中 你可以看到我有一些编好号的视图 这里的基本信息流是从左到右的 就像是英语这样的语言
关于UIStackView的内容 是底层的 它依赖于叫作自动布局的东西
自动布局是一组API 它用来确定视图间的布局关系 也就是说如果一个视图的尺寸改变了 其他的视图能够进行相应地适应更改 来避免重叠或者截断
另外 自动布局 还依赖于头限制和尾限制的概念 这些本来是左到右位置限制 不过当运行的是 从右到左语言的时候评估的是右到左 因此 对于上面的栈视图 布局会自动地改变为从右到左 比如 运行在阿拉伯语或者希伯来语时
而且这可以被实现 都不用额外多写一行代码 对于不同的布局环境来说
对于使用TVMLKit的应用来说 其所提供的标准模板 对于我上面提到的两点 所有费力的工作都被它完成了
特别是对于从右到左语言 有着新加入的阿拉伯语和希伯来语 以及可选的系统语言 我们有些新的API 来权衡相同的头和尾概念 对于有特定位置或者 对齐的TVMLKit元素来说
类似地 对于边缘和内填充 我们有新的多媒体询问来描述特定的值 对于一个特定布局方向来说
为了深入探究这些新功能 请参见TVMLKit进阶
接下来让我们看看图像 对于这个主题 我会简要说明一个方法 你要记住这个方法 以应对不同的布局方向 通常你应用中的图像会分为三类
你的绝大多数图像可能都是第一种 也就是通用的 这些图像不需要特别调整 以应对某个布局方向
第二种 就是确实有某种方向性的图像 这种图像有很多种 像是导航箭头 揭露指示器 或者像是这个例子 一种文本的简化呈现 对于这些图像来说 唯一要做的步骤 来适应相反方向布局就是 从图形角度上镜像它们 现在我们就有正确的结果了
最后 第三种和第二种很类似 不过相对复杂些 也就是单纯地翻转它们 会得到错误的结果
在本例中 我有一个带对勾的项目列表 但是作为符号 对勾是不应该被镜像的
所以在这种情况下 我需要的是两个独立的图像 每个对应不同的布局方向
Xcode可以让你 轻松应对所有这些情况 从你的资源目录中就可以找到 对于每个资源 你可以标出 某个图像是否有固定的方向 或者应该适应 不论是通过镜像 还是指明不同图像的情况 接下来就是一般的图像使用了 通过代码 或是通过Interface Builder使用
对于更多的内容 关于如何使用资源目录 来应对不同的布局方向 请参见2016年的这场演讲
这就是关于布局和图像的内容 我们看到了UIKit和 TVMLKit 对于适应的布局 有着非常高级别的处理办法 还介绍了一些tvOS11 新引入用来支持从右到左语言的API 还有关于图像方向性的概念 以及为何它会成为图像资源的一部分
最后同样重要的是 让我们谈谈 如何将一门语言添加到你的应用 我从头到尾来讲一下
将一门语言添加到你的项目 是在项目编辑器内完成的 在Xcode中选择你的项目文件 在项目设置中 你可以在本地化区域添加支持的语言
Xcode会管理并且追踪 任何可用的文件管理 像是从Storyboard中 提取文本信息 还有你在代码中 标记为本地化的字符串
当你准备好将应用的内容进行翻译了 接下来你只需要在Xcode中 选择你的项目文件 并且在编辑菜单里选择本地化导出 Xcode会生成一个翻译交换文件 或者XLIFF 你可以把它发出去进行翻译
一旦你收到送回的这个文件 要将该内容重新引入到 你的Xcode项目 只需要选择引入本地化 从相同的菜单中
Xcode会更新所有相关文件和资源 以确保你的应用在构建的时候 包含了所有最新的所支持的翻译
完成了这个之后 测试你的应用是个不错的主意 在你计划支持的不同环境上进行测试 Xcode提供了许多不同功能 来帮助你们实现这个目的 你就能清楚了解 你的应用在这些环境下表现如何 即使你根本不会说所支持的语言
对于Objective-C代码 静态分析器的支持确保了 对于一个UI元素而言 你所提供的任何字符串 都会被恰当地标记为“本地化” 不仅如此 你还可以检查 你所有的本地化字符串 是否有遗漏的备注
对于在不同语言中运行你的应用 有一组很方便的选择用来模拟 一个特定的语言或者区域设置
除此之外 Xcode还允许你在仿真环境中 运行你的应用 或者伪语言 像是从右到左 以便你可以接着 在你的基本语言中测试你的应用 同时看看 其在从右到左的语言中是什么样的 这可以通过使用你应用中 方案编辑器的选项标签页来实现
通过Xcode 9进行本地化会议 涵盖了所有这些功能以及更多的内容 介绍了绝大多数 你准备 本地化你的应用时要用到的工具
这就是关于本地化和 测试你的应用的概要内容 在Xcode中 我介绍了你要如何添加支持的语言 到你的项目中 整合翻译 还有在不同的环境中 检查你的项目和应用
有关本地化的更多内容和资源 请参见为本演讲而制作的链接
除了这些资源 如果你有兴趣更深入地探究本地化 和国际化的主题 可以从这里所列的演讲看起
感谢你们的观看 -
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。