¿Cómo pluralizar un string basado en el lenguaje en Javascript?

El objeto Intl también admite una forma de definir cómo formatear contenido “pluralizado” sensible al lenguaje, este es el constructor PluralRules.

Un caso de uso para esta función es mostrar la cantidad de elementos que existen en una colección; idea…


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Matías Hernández Arellano

El objeto Intl también admite una forma de definir cómo formatear contenido "pluralizado" sensible al lenguaje, este es el constructor PluralRules.

Un caso de uso para esta función es mostrar la cantidad de elementos que existen en una colección; idealmente, esto debería respetar la numeración gramatical en cada idioma que elijas usar.

function pluralize(locale, count, singular, plural) {
    const pluralRules = new Intl.PluralRules(locale);
    const numbering = pluralRules.select(count);
    switch (numbering) {
        case 'one':
        return count + ' ' + singular;
        case 'other':
        return count + ' ' + plural;
        default:
        throw new Error('Unknown: '+ numberig);
    }
}

function showItemsQuantity(count) {
    return pluralize('en-US', count, 'item', 'items')
}

const zeroItem = showItemsQuantity(0) // 0 items
const oneItem = showItemsQuantity(1) // 1 item
const manyItem = showItemsQuantity(12) // 12 items

// Spanish
function mostrarCantidadCajas(count) {
    return pluralize('es-ES', count, 'caja', 'cajas')
}
const ceroItem = mostrarCantidadCajas(0) // 0 cajas
const unoItem = mostrarCantidadCajas(1) // 1 caja
const muchosItem = mostrarCantidadCajas(12) // 12 cajas

Revisa el demo en este playground

Nota: en un escenario del mundo real, no escribirías los plurales

como en este fragmento; serían parte de tus archivos de traducción

Tal vez este ejemplo sea demasiado ingenuo ya que el inglés y el español tienen solo dos reglas de pluralización; sin embargo, no todos los idiomas siguen esta regla, algunos tienen solo una forma plural, mientras que otros tienen múltiples formas.

Este ejemplo ha sido tomado del blog de V8

const suffixes = new Map([
  ['zero',  'cathod'],
  ['one',   'gath'],
  // Note: the `two` form happens to be the same as the `'one'`
  // form for this word specifically, but that is not true for
  // all words in Welsh.
  ['two',   'gath'],
  ['few',   'cath'],
  ['many',  'chath'],
  ['other', 'cath'],
]);
const pr = new Intl.PluralRules('cy');
const formatWelshCats = (n) => {
  const rule = pr.select(n);
  const suffix = suffixes.get(rule);
  return `${n} ${suffix}`;
};

formatWelshCats(0);   // '0 cathod'
formatWelshCats(1);   // '1 gath'
formatWelshCats(1.5); // '1.5 cath'
formatWelshCats(2);   // '2 gath'
formatWelshCats(3);   // '3 cath'
formatWelshCats(6);   // '6 chath'
formatWelshCats(42);  // '42 cath'

Este constructor al igual que los demás expuestos por Intl acepta un segundo argumento para definir opciones, una de esas opciones es el type que te permite definir la regla de selección. Por defecto usa la forma cardinal. Si desea obtener el indicador ordinal para un número (por ejemplo, para crear una lista), puede hacerlo como el siguiente ejemplo.

const pr = new Intl.PluralRules('en-US',{
    type: 'ordinal'
})
const suffixes = {
    one: 'st',
    two: 'nd',
    few: 'rd',
    other: 'th'
}

const formatOrdinals = n => `${n}${suffixes[pr.select(n)]}`
formatOrdinals(0) // 0th
formatOrdinals(1) //1sst
formatOrdinals(2) // //2nd
formatOrdinals(40) //40th
formatOrdinals(63) // 63rd
formatOrdinals(100) // 100nd

Footer Social Card.jpg
✉️ Únete a Micro-bytes 🐦 Sígueme en Twitter ❤️ Apoya mi trabajo


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Matías Hernández Arellano


Print Share Comment Cite Upload Translate Updates
APA

Matías Hernández Arellano | Sciencx (2022-09-18T22:37:45+00:00) ¿Cómo pluralizar un string basado en el lenguaje en Javascript?. Retrieved from https://www.scien.cx/2022/09/18/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript/

MLA
" » ¿Cómo pluralizar un string basado en el lenguaje en Javascript?." Matías Hernández Arellano | Sciencx - Sunday September 18, 2022, https://www.scien.cx/2022/09/18/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript/
HARVARD
Matías Hernández Arellano | Sciencx Sunday September 18, 2022 » ¿Cómo pluralizar un string basado en el lenguaje en Javascript?., viewed ,<https://www.scien.cx/2022/09/18/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript/>
VANCOUVER
Matías Hernández Arellano | Sciencx - » ¿Cómo pluralizar un string basado en el lenguaje en Javascript?. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/09/18/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript/
CHICAGO
" » ¿Cómo pluralizar un string basado en el lenguaje en Javascript?." Matías Hernández Arellano | Sciencx - Accessed . https://www.scien.cx/2022/09/18/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript/
IEEE
" » ¿Cómo pluralizar un string basado en el lenguaje en Javascript?." Matías Hernández Arellano | Sciencx [Online]. Available: https://www.scien.cx/2022/09/18/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript/. [Accessed: ]
rf:citation
» ¿Cómo pluralizar un string basado en el lenguaje en Javascript? | Matías Hernández Arellano | Sciencx | https://www.scien.cx/2022/09/18/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.