Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public static class STR_COMMON
{
public const int Welcome = 0x00000001;
public const int ServerUnavailable = 0x00000002;
public const int ConnectionRefused = 0x00000003;
// и т.д.
}
Plural(%0, "str1", "str2") имеет одну фатальную опасность, если у вас много переводчиков и они работают удаленно: переводчик может вдруг решить перевести название функции и программа будет не просто выдавать некорректную строку, а падать с необработанным исключением, и проверить это крайне сложно.%Plural(%0, "str1", "str2", "str3")%%Множественный(%0, "str1", "str2", "str3")%), интерпретатор выдаст исключение о том, что функция «Множественный» не найдена.[Function("P", "Множественный", "ЧислФорма")]
protected override object Plural(int count, params object[] forms)
{
int m10 = count % 10;
int m100 = count % 100;
if (m10 == 1 && m100 != 11)
{
return forms[0];
}
else if (m10 >= 2 && m10 <= 4 && (m100 < 10 || m100 >= 20))
{
return forms[1];
}
else
{
return forms[2];
}
}
Зачем переводчику заменять названия функций?
%0.Name%
Локализация проектов на .NET с интерпретатором функций