我正在对我的一个应用程序进行本地化,我在这里阅读了关于本地化的android文档。这句话引起了我的注意:
将应用程序的默认文本放在res/values/strings.xml中。
res/values/strings.xml中的文本字符串应该使用默认语言,这是您希望大多数应用程序用户使用的语言。
现在我的问题是,如果应用程序的默认文本是从右到左的语言(比如阿拉伯语(,并且你构建了所有适合阿拉伯语的布局,那么你将如何处理LTR语言呢?你如何告诉android默认语言是RTL,布局是为RTL语言设计的,并且当用户选择LTR语言时,如何实际翻转布局?
经过几天的研究、阅读关于本地化的文章和对xml的一些修改,使用RTL语言作为默认语言并在默认情况下用RTL构建所有UI似乎不是一个好的选择,尽管可以按照下面的解释进行,我不建议这样做,除非你有一个只考虑RTL语言的应用程序,现在你想支持LTR语言,而不必手动修复所有布局。
你唯一需要做的就是强制android使用LTR进行布局方向(是的,LTR而不是RTL,因为你已经在RTL中构建了布局,但android希望它是LTR并将翻转它,所以你必须再次翻转它(,你可以通过在styles.xml
中将<item name="android:layoutDirection">ltr</item>
添加到你的应用程序主题中来轻松做到这一点。
之后,您应该使用支持的LTR语言的本地化限定符创建另一个styles.xml
,并覆盖您的应用程序主题,这次将rtl
用于layoutDirection
。