2021.08.08 技術シェア
【技术浅谈】移动开发中的国际化课题1-RTL技术

 

前言


在现在移动设备的开发中,我们知道有:底层驱动开发,系统层搭建,以及app层应用开发。但是,在国际化越来越重要的当下。企业还将面临一个重大的课题,那就是国际化与本地化。在技术中的国际化并不仅仅是技术问题本身,更是文化与技术的融合。因此,也要求我们架构师有技术经营的能力才能更好的服务于顾客。那么,本期将为大家简单介绍一下国际化课题中最难的课题之一:RTL技术。


 


以下,我们用移动操作系统中普及最广泛的Android做一个举例。Android系统对多国家的支持,目前主要体现在语言、区域选项、文字方向,其早期针对UI排版还保留着从左向右读(Left-To-Right)的状态。但这对一些中东国家,如阿拉伯的用户使用起来会造成极大的困扰。因为,在横向阅读时的中东国家的文字,如:阿拉伯语和乌尔都语,是自右向左进行输入和阅读的。那么,为了支持从右向左读(Right-To-Left),android优化了TextView的文字排版,并方便了开发者用LTR模式开发RTL类型的语言。但是在Android早期版本中的所有控件还并未支持<Right-To-Left>模式。


而用户的诉求需要的是一个完全支持<Right-To-Left>模式的android系统,其必须满足以下条件:


(1)   保证系统各模块显示效果符合<Right-To-Left>模式要求


(2)   能够优化第三方应用布局效果


(3)   保证CTS认证的通过(Google公司关于Android设备的品质验证)


(4)   减小系统耦合度,便于升级维护


那么,作为企业应该如何解决Google未解决的RTL问题将会直接影响其开发的移动设备在市场中的使用和普及。作为OEM厂商(使用Google的Android系统,并基于它自定义化自己的产品),常见的方案主要为以下。


 

① 修改控件


(显像像素的逻辑计算)


例如,Google开源了其操作系统的全部源代码。其中,包含我们经常使用的控件的底层实现代码(可以联想Java中的ArrayList类比)。那么,如果我们能够直接修改每个控件的底层布局,就可以针对性的实现RTL技术。它的优点,并未破坏Android的系统层,因为不违反Google在CTS认证中的要求。另外,因为修改的层级在系统层之上,app层之下。其代码的控制权可以保留在OEM厂商。但是显著的缺点是,在Android中这样的控件多达几十种,在面临Android版本升级时,其兼容性和适配性极低。并且,当第三方App使用了非Android系统的控件开发其布局时,我们无法确保其可以正确显示。


 


 

② 修改布局


(维护双资源超文本)


第二种方式就是不修改控件,而仅修改布局。此时,大家可以联想在Java的Web开发的MVC模式中,逻辑控制(类比java)与布局(类比html)是独立开来的。如果我们在不同国家的用户中,使用不同的布局就可以在不修改逻辑控制的前提下,完成RTL技术。此架构的优点是,修改代码的层级位于app层,即使Android系统升级,也不会影响app的使用。缺点是无法控制第三方应用显示效果,如果第三方已对阿拉伯区域进行处理,我们重复处理会破坏布局效果。


到底我们在处理RTL中,应该使用哪种技术,其不仅取决于技术本身的优点缺点,更是我们以何种方式服务于顾客。如:开放架构平台还是封闭自主研发的系统。关于此问题,我们交给各公司的CTO和CMO共同去决定。以下是RTL技术完成后的显示效果,供大家参考(Android HTC设备模拟器效果图)。


图片


 


本期针对国际化技术中的RTL做了一个简要的解析,那么下一期会为深入解说企业的技术战略将如何影响RTL技术的选择。谢谢大家!


 


图片