Skip to content

Commit

Permalink
perf: UnitsOfTimeFormatter instead of properties files
Browse files Browse the repository at this point in the history
  • Loading branch information
jy95 committed Feb 9, 2025
1 parent a140681 commit 3f9a52f
Showing 1 changed file with 13 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.ibm.icu.number.NumberFormatter;
import com.ibm.icu.number.Precision;
import com.ibm.icu.number.UnlocalizedNumberFormatter;
import com.ibm.icu.util.MeasureUnit;

import java.util.Locale;
Expand All @@ -26,6 +27,13 @@ public final class UnitsOfTimeFormatter {
Map.entry("a", MeasureUnit.YEAR)
);

/**
* Common formatter for all calls to this class
*/
private static final UnlocalizedNumberFormatter formatter = NumberFormatter
.with()
.unitWidth(NumberFormatter.UnitWidth.FULL_NAME);

/**
* Formats a time unit with a count (e.g., "3 heures", "1 minute").
* @param locale The locale expected for the resulting text
Expand All @@ -34,10 +42,9 @@ public final class UnitsOfTimeFormatter {
* @return A formatted time-unit string with a count
*/
public static String formatWithCount(Locale locale, String unit, Number count) {
return NumberFormatter
.withLocale(locale)
return formatter
.locale(locale)
.unit(UNIT_MAPPING.get(unit))
.unitWidth(NumberFormatter.UnitWidth.FULL_NAME)
.format(count)
.toString();
}
Expand All @@ -51,11 +58,10 @@ public static String formatWithCount(Locale locale, String unit, Number count) {
*/
public static String formatWithoutCount(Locale locale, String unit, Number count) {
// ICU4j doesn't have a method for extracting only the unit with plural form so a bit of magic here
return NumberFormatter
.withLocale(locale)
.precision(Precision.maxSignificantDigits(1))
return formatter
.unit(UNIT_MAPPING.get(unit))
.unitWidth(NumberFormatter.UnitWidth.FULL_NAME)
.locale(locale)
.precision(Precision.maxSignificantDigits(1))
.format(count)
.toString()
.substring(2); // 1 because of the number display + 1 because of spacing
Expand Down

0 comments on commit 3f9a52f

Please sign in to comment.