Saturday, December 31, 2016

Chinese Locale in Android

When we talk about Chinese language globally, there are three major categories:
  • Simplified Chinese
  • Traditional Chinese
  • Chinese
Where Android is using Locale.SIMPLIFIED_CHINESE (Before Android 7.0: zh-rCN; After Android 7.0: zh-rCN_#Hans), Locale.TRADITIONAL_CHINESE (Before Android 7.0: zh-rTW; After Android 7.0: zh-rTW_#Hant) & Locale.CHINESE (Before & After Android 7.0: zh) to represent them.

Here come the problem, when a Hong Kong device which prefer to view in Traditional Chinese, which strings.xml resource will the Android mobile app use?

Before Android 7.0, Android could not always successfully match app and system locales.
User SettingsApp ResourcesResource Resolution
zh-rHKdefault (en)
zh-rCN
zh-rTW
zh
Try zh-rHK => Fail
Try zh => Success
Use zh
Starting in Android 7.0, Android is changing the way the system resolves resources.
User SettingsApp ResourcesResource Resolution
zh-rHK_#Hantdefault (en)
zh-rCN_#Hans
zh-rTW_#Hant
zh
Try zh-rHK_#Hant => Fail
Try zh-r_#Hant => Fail
Try children of zh-r_#Hant => zh-rTW_#Hant
Use zh-rTW#Hant
In order to support both before & after Android 7.0 devices, I believe the minimum resources needed to maintain will be:
  • en (English)
  • zh-rCN (Simplified Chinese)
  • zh-rTW (Traditional Chinese)
  • zh (Traditional Chinese)

No comments:

Post a Comment