Render an ISO 8601 duration string as a locale-aware, human-readable string.
Uses Temporal.Duration.from to parse, then Intl.NumberFormat({ style: “unit” }) to render each nonzero year/month/week/day/hour/minute/second component with correct per-locale unit labels and pluralization, joined via Intl.ListFormat.
Sub-second components (milliseconds/microseconds/nanoseconds) are folded into the seconds component as a fractional value (e.g. “PT1.5S” -> one “1.5 seconds” component), since Intl.NumberFormat’s “second” unit accepts fractional input.
By default, zero-valued components are omitted (e.g. “P1DT0H30M” -> “1 day, 30 minutes”). Pass { zero: true } to include them.
A zero-length duration (e.g. “PT0S”) always renders its seconds component (“0 seconds”) even with the default zero-omitting behavior, since omitting every component would otherwise produce “”.
Negative durations render each component with a leading “-” (Temporal stores every field of a negative duration as a negative number).
Returns “” for invalid input: non-string value or invalid duration string.