La tarea es mostrar el precio de la suscripción como 5$ / month en diferentes lugares.
Puedo manejar la parte del precio con Intl muy bien, pero me quedé con la parte de traducción del período de tiempo.
Puedo usar mis propias cadenas de traducción, pero preferiría usar la versión Intl predeterminada si es posible.
Use Intl.DisplayNames con el tipo datetimefield de Intl API .
const trans = (translate, locale = 'en') => { return new Intl.DisplayNames(locale, { type: 'dateTimeField' }).of(translate); } for (lang of [ 'en', 'nl', 'fr', 'zh-Hant' ]) { console.log(`3$ / ${trans('month', lang)}`); } <script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script> 3$ / month 3$ / maand 3$ / mois 3$ / 月Esta API es capaz de traducir casi todas las cadenas de fecha/hora.
Descripción general de los valores admitidos/traducibles:
| día | hora | minuto | segundo |
| año | mes | cuarto | |
| semana del año | día laborable | era | díaPeríodo |
Puede usar el método DisplayNames y establecer type = 'dateTimeField'
ejemplo:
const dn = new Intl.DisplayNames('pt', {type: 'dateTimeField'}); console.log(dn.of('era')); // logs 'era' console.log(dn.of('year')); // logs 'ano' console.log(dn.of('month')); // logs 'mês' console.log(dn.of('quarter')); // logs 'trimestre' console.log(dn.of('weekOfYear')); // logs 'semana' console.log(dn.of('weekday')); // logs 'dia da semana' console.log(dn.of('dayPeriod')); // logs 'AM/PM' console.log(dn.of('day')); // logs 'dia' console.log(dn.of('hour')); // logs 'hora' console.log(dn.of('minute')); // logs 'minuto' console.log(dn.of('second')); // logs 'segundo'fuente https://docs.w3cub.com/javascript/global_objects/intl/displaynames/displaynames