code: public static String wordBased(Duration duration, Locale locale) {
          Objects.requireNonNull(duration, "duration must not be null");
          Objects.requireNonNull(locale, "locale must not be null");
          ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME, locale);
          UnitFormat[] formats = {
              UnitFormat.of(bundle, WORDBASED_HOUR),
              UnitFormat.of(bundle, WORDBASED_MINUTE),
              UnitFormat.of(bundle, WORDBASED_SECOND),
              UnitFormat.of(bundle, WORDBASED_MILLISECOND)};
          WordBased wb = new WordBased(formats, bundle.getString(WORDBASED_COMMASPACE), bundle.getString(WORDBASED_SPACEANDSPACE));
  
          long hours = duration.toHours();
          long mins = duration.toMinutes() % MINUTES_PER_HOUR;
          long secs = duration.getSeconds() % SECONDS_PER_MINUTE;
          int millis = duration.getNano() / NANOS_PER_MILLIS;
          int[] values = {(int) hours, (int) mins, (int) secs, millis};
          return wb.format(values);
      }
docs: Formats a duration to a string in a localized word-based format.
  <p>
  This returns a word-based format for the duration.
  The words are configured in a resource bundle text file -
  {@code org.threeten.extra.wordbased.properties} - with overrides per language.
  
  @param duration  the duration to format
  @param locale  the locale to use
  @return the localized word-based format for the duration