+/**
+ * ualoc_localizationsToUse - map preferred languages to
+ * available localizations.
+ * =========================
+ * BEHAVIOR EXAMPLES
+ * Each block gives up to 6 sets of available lprojs, and then shows how various
+ * preferred language requests would be mapped into one of the lprojs in each set.
+ * The en entriy marked * is currently not working as intended (get just "en"
+ * instead of the indicated values)
+ *
+ * --------
+ * lproj sets → list1 list2 list3 list4 list5 list6
+ * zh_CN zh_CN zh_CN zh_Hans zh_CN zh_CN
+ * zh_TW zh_TW zh_TW zh_Hant zh_TW zh_TW
+ * zh_HK zh_HK zh_Hant_HK zh_Hans zh_HK
+ * zh_MO zh_Hant zh_Hans
+ * zh_Hant
+ * zh_Hant_HK
+ * language ↓
+ * zh zh_CN zh_CN zh_CN zh_Hans zh_Hans zh_Hans
+ * zh-Hans zh_CN zh_CN zh_CN zh_Hans zh_Hans zh_Hans
+ * zh-Hant zh_TW zh_TW zh_TW zh_Hant zh_Hant zh_Hant
+ * zh-Hans-CN zh_CN zh_CN zh_CN zh_Hans zh_CN, zh_CN,
+ * zh_Hans zh_Hans
+ * zh-Hans-SG zh_CN zh_CN zh_CN zh_Hans zh_Hans zh_Hans
+ * zh-Hant-TW zh_TW zh_TW zh_TW zh_Hant zh_TW, zh_TW,
+ * zh_Hant zh_Hant
+ * zh-Hant-HK zh_TW zh_HK, zh_HK, zh_Hant_HK, zh_Hant zh_Hant_HK,
+ * zh_TW zh_TW zh_Hant zh_Hant
+ * zh-Hant-MO zh_TW zh_HK, zh_MO, zh_Hant_HK, zh_Hant zh_Hant_HK,
+ * zh_TW zh_HK,zh_TW zh_Hant zh_Hant
+ * zh-Hans-HK zh_CN zh_CN zh_CN zh_Hans zh_Hans zh_Hans
+ * zh-CN zh_CN zh_CN zh_CN zh_Hans zh_CN, zh_CN,
+ * zh_Hans zh_Hans
+ * zh-SG zh_CN zh_CN zh_CN zh_Hans zh_Hans zh_Hans
+ * zh-TW zh_TW zh_TW zh_TW zh_Hant zh_TW, zh_TW,
+ * zh_Hant zh_Hant
+ * zh-HK zh_TW zh_HK zh_HK, zh_Hant_HK, zh_Hant zh_HK,
+ * zh_TW zh_Hant zh_Hant_HK,zh_Hant
+ * zh-MO zh_TW zh_HK zh_MO, zh_Hant_HK, zh_Hant zh_Hant_HK,
+ * zh_HK,zh_TW zh_Hant zh_Hant_HK,zh_Hant
+ * --------
+ * lproj sets → list1 list2 list3 list4 list5 list6
+ * English en en en en en
+ * en_AU en_AU en_AU en_AU en_AU
+ * en_GB en_GB en_GB en_GB en_GB
+ * en_CA en_CA en_001 en_001
+ * en_IN en_150
+ * en_US
+ * language ↓
+ * en English en en en en en
+ * en-US English en en en_US, en en
+ * en
+ * en-AU English en_AU, en_AU, en_AU, en_AU,en_GB, en_AU,en_GB,
+ * en_GB,en en_GB,en en_GB,en en_001,en en_001,en
+ * en-CA English en en_CA, en_CA, en_001, en_001,
+ * en en en en
+ * en-GB English en_GB, en_GB, en_GB, en_GB, en_GB,
+ * en en en en_001,en en_001,en
+ * en-IN English en_GB, en_GB, en_IN, en_GB, en_GB,
+ * en en en_GB,en en_001,en en_001,en
+ * en-US English en en en_US, en en
+ * en
+ * en-FR English en_GB, en_GB, en_GB, en_GB, en_150,en_GB,
+ * en en en en_001,en en_001,en
+ * en-IL English en en en en_001, en_001,
+ * en en
+ * en-001 English en en en en_001, en_001,
+ * en en
+ * en-150 English en_GB, en_GB, en_GB, en_GB, en_150,en_GB,
+ * en en en en_001,en en_001,en
+ * en-Latn English en en en en en
+ * en-Latn_US English en en en_US,* en en
+ * en
+ * --------
+ * lproj sets → list1 list2 list3 list4 list5 list6
+ * Spanish es es es es es
+ * es_MX es_419 es_419 es_ES es_ES
+ * es_MX es_MX es_419
+ * es_MX
+ * language ↓
+ * es Spanish es es es es es
+ * es-ES Spanish es es es es_ES, es_ES,
+ * es es
+ * es-419 Spanish es es_419, es_419, es es_419,
+ * es es es
+ * es-MX Spanish es_MX, es_419, es_MX, es_MX, es_MX,
+ * es es es_419,es es es_419,es
+ * es-AR Spanish es es_419, es_419, es es_419,
+ * es es es
+ * --------
+ * lproj sets → list1 list2 list3 list4 list5 list6
+ * Portuguese pt pt pt
+ * pt_PT pt_BR pt_BR
+ * pt_PT
+ * language ↓
+ * pt Portuguese pt pt pt
+ * pt-BR Portuguese pt pt_BR, pt_BR,
+ * pt pt
+ * pt-PT Portuguese pt_PT, pt_PT, pt
+ * pt pt
+ * pt-MO Portuguese pt_PT, pt_PT, pt
+ * pt pt
+ * =========================
+ *
+ * @param preferredLanguages
+ * Ordered array of pointers to user's preferred language
+ * codes (BCP47 style null-terminated ASCII strings), in
+ * order from most preferred; intended to accept the
+ * contents of AppleLanguages. Must not be NULL.
+ * Entries with the following values will be ignored:
+ * NULL, "", "root", any entry beginning with '-' or '_'.
+ * @param preferredLanguagesCount
+ * Count of entries in preferredLanguages.
+ * @param availableLocalizations
+ * Unordered array of pointers to identifiers for available
+ * localizations (lprojs); handles old Apple-style
+ * identifiers such as "English", as well as currently-
+ * superseded identifiers such as "no", "tl". Must not be
+ * NULL. Entries with the following values will be ignored:
+ * NULL, "", "root", any entry beginning with '-' or '_'.
+ * @param availableLocalizationsCount
+ * Count of entries in availableLocalizations.
+ * @param localizationsToUse
+ * Caller-provided array to be filled with pointers to
+ * localizations to use in the availableLocalizations
+ * array; these are entries from availableLocalizations
+ * that correspond to the first language in
+ * preferredLanguages for which there is any entry in
+ * availableLocalizations that is a reasonable match,
+ * with the best-matching localization first in
+ * localizationsToUse, followed by any other possible
+ * fallback localizations (for example, "en_IN" in
+ * preferredLanguages might produce { "en_GB, "en" } in
+ * localizationsToUse). Must not be NULL. This need not
+ * large enough to accomodate all of the localizations
+ * that might be returned; it is perfectly reasonable
+ * (and more efficient) to only provide an array with
+ * one entry, if that is all that you are planning to use.
+ * @param localizationsToUseCapacity
+ * The capacity of localizationsToUse.
+ * @param status
+ * A pointer to a UErrorCode to receive any errors.
+ * @return
+ * The number of entries filled out in localizationsToUse.
+ * @draft ICU 55
+ */
+U_DRAFT int32_t U_EXPORT2
+ualoc_localizationsToUse( const char* const *preferredLanguages,
+ int32_t preferredLanguagesCount,
+ const char* const *availableLocalizations,
+ int32_t availableLocalizationsCount,
+ const char* *localizationsToUse,
+ int32_t localizationsToUseCapacity,
+ UErrorCode *status );
+