¿ Cómo pluralizar un string basado en el lenguaje en Javascript?
14214 단어 spanishprogrammingjavascriptwebdev
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
데모 버전 수정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
✉️ Únete a Micro-bytes 🐦 Sígueme en ❤️ Apoya mi trabajo
Reference
이 문제에 관하여(¿ Cómo pluralizar un string basado en el lenguaje en Javascript?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/matiasfha/como-pluralizar-un-string-basado-en-el-lenguaje-en-javascript-270j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)