protected virtual string ToText(long num, CurrencyModel currencyModel, bool isMainUnit)
 {
     return ToText(num);
 }
 protected override string GetCurrencyText(long num, CurrencyModel currency) 
 {
     var textType = GetTextType(num);
     return currency.Names[textType-1];
 }
 protected virtual string GetSubUnitCurrencyText(long num, CurrencyModel currency)
 {
     return num > 1 ? currency.SubUnitCurrency.Names[1] : currency.SubUnitCurrency.Names[0];
 }
 protected override string ToText(long num, CurrencyModel currencyModel, bool isMainUnit)
 {
     switch (currencyModel.Currency) {
         case Currency.RUB:
             TextStrings[2] = isMainUnit ? "два" : "две";
             break;
         case Currency.EUR:
             TextStrings[2] = isMainUnit ? "два" : "две";
             break;
         default:
             TextStrings[2] = "два";
             break;
     }
     return ToText(num);
 }