Localization for Hong Kong on iOS not going to traditional chinese

Go to FICUInternationalization::GetPrioritizedCultureNames and replace the sort call after the comment // Sort the cultures by their priority with this:

// Sort the cultures by their priority
// Special case handling for the ambiguity of Hong Kong and Macau supporting both Traditional and Simplified Chinese (prefer Traditional)
const bool bPreferTraditionalChinese = GivenCultureData.CountryCode == TEXT("HK") || GivenCultureData.CountryCode == TEXT("MO");
PrioritizedCultureData.Sort([bPreferTraditionalChinese](const FICUCultureData& DataOne, const FICUCultureData& DataTwo) -> bool
{
	const int32 DataOneSortWeight = (DataOne.CountryCode.IsEmpty() ? 0 : 4) + (DataOne.ScriptCode.IsEmpty() ? 0 : 2) + (bPreferTraditionalChinese && DataOne.ScriptCode == TEXT("Hant") ? 1 : 0);
	const int32 DataTwoSortWeight = (DataTwo.CountryCode.IsEmpty() ? 0 : 4) + (DataTwo.ScriptCode.IsEmpty() ? 0 : 2) + (bPreferTraditionalChinese && DataTwo.ScriptCode == TEXT("Hant") ? 1 : 0);
	return DataOneSortWeight >= DataTwoSortWeight;
});

That will special case the “HK” and “MO” cultures to order their ambiguous scripts like so:

  • zh-Hant-HK
  • zh-Hans-HK
  • zh-HK
  • zh-Hant
  • zh-Hans
  • zh