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
,,)
if (
isSomeString!String &&
is(ElementEncodingType!String : char)
)

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