Intl.PluralRules
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2019å¹´9æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
Intl.PluralRules ãªãã¸ã§ã¯ãã§ãè¤æ°å½¢ãå½±é¿ããæ¸å¼ãè¨èªã«ã¼ã«ã使ç¨ã§ãã¾ãã
解説
æ§ã ãªè¨èªã§ã¯ãã¢ã¤ãã ã®åæ°ï¼åºæ°ï¼ã表ãå ´åã¨ãã¢ã¤ãã ã®é åºï¼åºæ°ï¼ã表ãå ´åã¨ã§ãç°ãªã表ç¾ãã¿ã¼ã³ã使ç¨ããã¦ãã¾ãã è±èªã«ã¯åºæ°ãè¡¨ãæ¹æ³ã 2 ã¤ããã¾ãã1 ã¤ã¯åæ°ã® "item" ï¼1 æéã1 å¹ã®ç¬ã1 å¹ã®éï¼ç¨ã§ããã 1 ã¤ã¯ã¼ãã¾ãã¯ãã®ä»ã®æ°å¤ã® "items" ï¼0 æéã2 å¹ã®ã¬ãã³ã°ã100000.5 å¹ã®éï¼ç¨ã§ããä¸å½èªã«ã¯å½¢ã 1 ã¤ããããã¾ããããã¢ã©ãã¢èªã«ã¯ 6 ã¤ãããã¾ãï¼ åæ§ã«ãè±èªã«ã¯åºæ°ãè¡¨ãæ¹æ³ã "th"ã"st"ã"nd"ã"rd" ã® 4 ã¤ããã¾ããããã«ãã£ã¦ãé åºã 0thã1stã2ndã3rdã4thã5thãâ¦â¦ã21stã22ndã23rdã24thã25thãâ¦â¦ã¨ãã£ãå ·åã«è¡¨ããã¾ãã䏿¹ãä¸å½èªã¨ã¢ã©ãã¢èªã§ã¯ãåºæ°è©ãè¡¨ãæ¹æ³ã¯ 1 ã¤ããããã¾ããã
ããç¹å®ã®è¨èªã¨ä¸é£ã®æ¸å¼è¨å®ãªãã·ã§ã³ãæå®ãããå ´åãã¡ã½ãã Intl.PluralRules.prototype.select() ããã³ Intl.PluralRules.prototype.selectRange() ã¯ãåä¸ã®æ°å¤ã¾ãã¯ç¯å²ã®åºæ°ã»åºæ°ã®è¤æ°å½¢ã表ãã¿ã°ãè¿ãã¾ãã
ã³ã¼ãã§ã¯ãè¿ãããã¿ã°ã使ç¨ãã¦ãæå®ãããè¨èªã«é©ããå½¢ã§æ°å¤ã表ããã¨ãã§ãã¾ãã
è¿ãããå¯è½æ§ã®ããã¿ã°ã®å®å
¨ãªã»ããã¯ãzeroãoneãtwoãfewãmanyãotherï¼ãä¸è¬çãªãè¤æ°å½¢ãè¨èªã«åä¸ã®å½¢å¼ãããªãå ´åã«ã使ç¨ããã¾ãï¼ã§ãã
è±èªã«ã¯åºæ°è©ã®å½¢ã 2 ã¤ãããªããããselect() ã¡ã½ãã㯠2 ã¤ã®ã¿ã°ã®ã¿ãè¿ãã¾ããåæ°å½¢ã®å ´å㯠"one"ããã以å¤ã®ãã¹ã¦ã®åºæ°è©ã®å ´å㯠"other" ã§ãã
ããã«ãããããããã®å ´åã§è±èªã¨ãã¦æå³ã®éãæã使ãããã¨ãã§ãã¾ããä¾ãã°ã"1 dog is happy; do you want to play with it?" 㨠"10 dogs are happy; do you want to play with them?" ã¨ãã£ãå
·åã§ãã
ããããã®å½¢ã«é©ããæã使ããã«ã¯è¨èªã«ãã£ã¦ç°ãªãã¾ãããè±èªã§ãã£ã¦ããåã«åè©ã« "s" ãä»ããã°è¤æ°å½¢ã«ãªãã¨ããã»ã©åç´ã§ã¯ãªãå ´åãããã¾ãã 以ä¸ã®å®ä¾ãè¦ãã¨ããã®å½¢ã«ãã£ã¦æ¬¡ã®ãããªå½±é¿ãåºãå¯è½æ§ãããã¾ãã
- åè©: 1 dog, 2 dogs ï¼ãã ã "fish" ã "sheep" ã¯åæ°å½¢ã¨è¤æ°å½¢ãåãå½¢ã§ãï¼ã
- åè©: 1 dog is happy, 2 dogs are happy.
- 代åè©ï¼ããã³ãã®ä»ã®åç §å¯¾è±¡ï¼: Do you want to play with it / them.
ä»ã®è¨èªã¯ããã«å¤ãã®æ¹æ³ãæã¡ãé©åãªæãé¸ã¶ãã¨ãããã«è¤éã«ãªããã¨ãããã¾ãã
select() ã¯ãè±èªã®åºæ°è©ã«å¯¾ã㦠4 ã¤ã®ã¿ã°ã®ãããããè¿ããã¨ãã§ããããããã許容ãããå½¢å¼ã表ãã¾ãã"st" ã§çµããæ°å¤ï¼1ã21ã31ãâ¦ï¼ã«ã¯ oneã"nd" ã§çµããåºæ°ï¼2, 22, 32, ...ï¼ã«ã¯ twoã"rd" ã§çµããåºæ°ï¼3, 33, 43, ...ï¼ã«ã¯ fewããã㦠"th" ã§çµããåºæ°ï¼0, 4ï½20 ãªã©ï¼ã«ã¯ other ãè¿ããã¾ãã
ç¹°ãè¿ãã«ãªãã¾ãããè¿ãããã¿ã°ã使ç¨ãããã¨ã§ãåºæ°ã説æããæååãé©åã«æ¸å¼åãããã¨ãã§ãã¾ãã
ã«ã¼ã«ã¨ãããã®ä½¿ç¨æ¹æ³ã«é¢ããæ å ±ã«ã¤ãã¦ã¯ãè¤æ°å½¢ã«ã¼ã«ãã覧ãã ããã åã«ã¼ã«ã®ä¸è¦§ããã³è¨èªãã¨ã®é©ç¨æ¹æ³ã«ã¤ãã¦ã¯ãLDML è¨èªè¤æ°å½¢ã«ã¼ã«ãã覧ãã ããã
ã³ã³ã¹ãã©ã¯ã¿ã¼
Intl.PluralRules()-
æ°ãã
Intl.PluralRulesãªãã¸ã§ã¯ããçæãã¾ãã
éçã¡ã½ãã
Intl.PluralRules.supportedLocalesOf()-
æå®ãããã±ã¼ã«ã®ãã¡ãã©ã³ã¿ã¤ã ã®æ¢å®ã®ãã±ã¼ã«ã«ä»£æ¿ããããã¨ãªã対å¿ããã¦ãããã®ãå ¥ã£ãé åãè¿ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
ãããã®ããããã£ã¯ Intl.PluralRules.prototype ã§å®ç¾©ããã¦ããããã¹ã¦ã® Intl.PluralRules ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¾ãã
Intl.PluralRules.prototype.constructor-
ãã®ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã§ãã
Intl.PluralRulesã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯Intl.PluralRulesã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãªãã¾ãã Intl.PluralRules.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]ããããã£ã®åæå¤ã¯ãæåå"Intl.PluralRules"ã§ãããã®ããããã£ã¯Object.prototype.toString()ã§ä½¿ç¨ããã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
Intl.PluralRules.prototype.resolvedOptions()-
ãªãã¸ã§ã¯ãã®åæåæã«è¨ç®ããããã±ã¼ã«ãæ¸å¼åã®ãªãã·ã§ã³ãåæ ããããããã£ãæã¤ãæ°ãããªãã¸ã§ã¯ããè¿ãã¾ãã
Intl.PluralRules.prototype.select()-
ãã±ã¼ã«ãèæ ®ããæ¸å¼åã«ä½¿ç¨ããè¤æ°å½¢ã示ãæååãè¿ãã¾ãã
Intl.PluralRules.prototype.selectRange()-
ãã®ã¡ã½ãã㯠2 ã¤ã®å¤ãåãåãããã±ã¼ã«ãèæ ®ããæ¸å¼åã«ä½¿ç¨ããè¤æ°å½¢ã示ãæååãè¿ãã¾ãã
ä¾
>locales ã®ä½¿ç¨
ãã®ä¾ã§ã¯ãåºæ°è©ã®è¤æ°å½¢ã«é¢ããå°åãã¨ã®è¦åã®éããããã¤ã表示ãã¦ãã¾ãã
ã¢ããªã±ã¼ã·ã§ã³ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ä½¿ç¨ãããè¨èªã®æ¸å¼åãåå¾ããã«ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ locales 弿°ã使ç¨ãã¦ããã®è¨èªï¼ããã³å¿
è¦ã«å¿ãã¦ä»£æ¿è¨èªï¼ãæå®ããããã«ãã¦ãã ããï¼
// US English
const enCardinalRules = new Intl.PluralRules("en-US");
console.log(enCardinalRules.select(0)); // "other"
console.log(enCardinalRules.select(1)); // "one"
console.log(enCardinalRules.select(2)); // "other"
console.log(enCardinalRules.select(3)); // "other"
// Arabic
const arCardinalRules = new Intl.PluralRules("ar-EG");
console.log(arCardinalRules.select(0)); // "zero"
console.log(arCardinalRules.select(1)); // "one"
console.log(arCardinalRules.select(2)); // "two"
console.log(arCardinalRules.select(6)); // "few"
console.log(arCardinalRules.select(18)); // "many"
options ã®ä½¿ç¨
æå®ãããæ°å¤ã®è¤æ°å½¢ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ã® optionsã«ãã£ã¦ã決ã¾ãå ´åãããã¾ããä¾ãã°ãæ°å¤ã丸ããæ¹æ³ããåºæ°è©ãåºæ°è©ãã¨ãã£ãç¹ãªã©ãæãããã¾ãã
ãã®ä¾ã§ã¯ãã«ã¼ã«ã®ã¿ã¤ãããåºæ°ãã«è¨å®ããæ¹æ³ã¨ããããç±³å½è±èªã®æ°å¤ã®è¡¨è¨ã«ã©ã®ãããªå½±é¿ãä¸ãããã«ã¤ãã¦èª¬æãã¾ãã
// US English - ordinal
const enOrdinalRules = new Intl.PluralRules("en-US", { type: "ordinal" });
console.log(enOrdinalRules.select(0)); // "other" (0th)
console.log(enOrdinalRules.select(1)); // "one" (1st)
console.log(enOrdinalRules.select(2)); // "two" (2nd)
console.log(enOrdinalRules.select(3)); // "few" (3rd)
console.log(enOrdinalRules.select(4)); // "other" (4th)
console.log(enOrdinalRules.select(21)); // "one" (21st)
è¿ãããã¿ã°ã使ç¨ãã¦ããã¹ãã®æ¸å¼ãè¨å®
ä¸è¨ã³ã¼ãã¯ãåã®ä¾ãæ¡å¼µãããã®ã§ãè¿ãããåºæ°ã¿ã°ã使ç¨ãã¦è±èªã®ããã¹ããæ¸å¼åããæ¹æ³ã示ãã¦ãã¾ãã
const enOrdinalRules = new Intl.PluralRules("en-US", { type: "ordinal" });
const suffixes = new Map([
["one", "st"],
["two", "nd"],
["few", "rd"],
["other", "th"],
]);
const formatOrdinals = (n) => {
const rule = enOrdinalRules.select(n);
const suffix = suffixes.get(rule);
return `${n}${suffix}`;
};
formatOrdinals(0); // '0th'
formatOrdinals(1); // '1st'
formatOrdinals(2); // '2nd'
formatOrdinals(3); // '3rd'
formatOrdinals(4); // '4th'
formatOrdinals(11); // '11th'
formatOrdinals(21); // '21st'
formatOrdinals(42); // '42nd'
formatOrdinals(103); // '103rd'
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Internationalization API Specification > # pluralrules-objects > |