/** * Given a number and a format, returns the keyword of the first applicable * rule for the PluralRules object. * @param rules The plural rules. * @param obj The numeric object for which the rule should be determined. * @param fmt The NumberFormat specifying how the number will be formatted * (this can affect the plural form, e.g. "1 dollar" vs "1.0 dollars"). * @param status Input/output parameter. If at entry this indicates a * failure status, the method returns immediately; otherwise * this is set to indicate the outcome of the call. * @return The keyword of the selected rule. Undefined in the case of an error.
*/
UnicodeString select(const PluralRules &rules, const Formattable& obj, const NumberFormat& fmt, UErrorCode& status) { if (U_SUCCESS(status)) { const DecimalFormat *decFmt = dynamic_cast<const DecimalFormat *>(&fmt); if (decFmt != nullptr) {
number::impl::DecimalQuantity dq;
decFmt->formatToDecimalQuantity(obj, dq, status); if (U_SUCCESS(status)) { return rules.select(dq);
}
} else { double number = obj.getDouble(status); if (U_SUCCESS(status)) { return rules.select(number);
}
}
} return {};
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.