public static int SelectLocaleId(IList<int> availableLocaleIds, IList<string> preferredLocales)
{
// choose system default if no available locale ids.
if (availableLocaleIds == null || availableLocaleIds.Count == 0)
{
return ComUtils.LOCALE_SYSTEM_DEFAULT;
}
// choose system default if no preferred locales.
if (preferredLocales == null || preferredLocales.Count == 0)
{
return availableLocaleIds[0];
}
// look for an exact match.
for (int ii = 0; ii < preferredLocales.Count; ii++)
{
for (int jj = 0; jj < availableLocaleIds.Count; jj++)
{
if (ComUtils.CompareLocales(availableLocaleIds[jj], preferredLocales[ii], false))
{
return availableLocaleIds[jj];
}
}
}
// look for a match on the language only.
for (int ii = 0; ii < preferredLocales.Count; ii++)
{
for (int jj = 0; jj < availableLocaleIds.Count; jj++)
{
if (ComUtils.CompareLocales(availableLocaleIds[jj], preferredLocales[ii], true))
{
return availableLocaleIds[jj];
}
}
}
// return the first avialable locale.
return availableLocaleIds[0];
}