chooseLocalizedValue

Choose the better localized value matching to locale between two localized values. The "goodness" is determined using algorithm described in Localized values for keys.

@nogc @trusted pure nothrow
chooseLocalizedValue
(
String
)
(
String locale
,,
String firstValue
,,)

Parameters

locale String

original locale to match to

firstLocale String

first locale

firstValue String

first value

secondLocale String

second locale

secondValue String

second value

Return Value

Type: auto

The best alternative among two or empty string if none of alternatives match original locale. Note: value with empty locale is considered better choice than value with locale that does not match the original one.

Examples

string locale = "ru_RU.UTF-8@jargon";
assert(chooseLocalizedValue(string.init, "ru_RU", "Программист", "ru@jargon", "Кодер") == tuple(string.init, string.init));
assert(chooseLocalizedValue(locale, "fr_FR", "Programmeur", string.init, "Programmer") == tuple(string.init, "Programmer"));
assert(chooseLocalizedValue(locale, string.init, "Programmer", "de_DE", "Programmierer") == tuple(string.init, "Programmer"));
assert(chooseLocalizedValue(locale, "fr_FR", "Programmeur", "de_DE", "Programmierer") == tuple(string.init, string.init));

assert(chooseLocalizedValue(string.init, string.init, "Value", string.init, string.init) == tuple(string.init, "Value"));
assert(chooseLocalizedValue(locale, string.init, "Value", string.init, string.init) == tuple(string.init, "Value"));
assert(chooseLocalizedValue(locale, string.init, string.init, string.init, "Value") == tuple(string.init, "Value"));

assert(chooseLocalizedValue(locale, "ru_RU", "Программист", "ru@jargon", "Кодер") == tuple("ru_RU", "Программист"));
assert(chooseLocalizedValue(locale, "ru_RU", "Программист", "ru_RU@jargon", "Кодер") == tuple("ru_RU@jargon", "Кодер"));

assert(chooseLocalizedValue(locale, "ru", "Разработчик", "ru_RU", "Программист") == tuple("ru_RU", "Программист"));

Meta