1 <?php
2 // 正确地显示复数
3 if(!function_exists('_plurals_format'))
4 {
5 /**
6 * 正确的使用复数
7 * @access public
8 * @author zhaoyingnan 2016-02-17 11:53
9 * @param string $sPluralName 非复数形式的名称
10 * @param int $iAmount 数量
11 * @return string
12 * @note
13 **/
14 function _plurals_format($sPluralName, $iAmount)
15 {
16 if(!$sPluralName || !is_numeric($iAmount) || $iAmount <= 0)
17 return '';
18 // 特殊的复数形式
19 $arPluralName = array(
20 'addendum'=>'addenda',
21 'alga'=>'algae',
22 'alumna'=>'alumnae',
23 'alumnus'=>'alumni',
24 'analysis'=>'analyses',
25 'antenna'=>'antennas',//antennae
26 'apparatus'=>'apparatuses',
27 'appendix'=>'appendices',//appendixes
28 'axis'=>'axes',
29 'bacillus'=>'bacilli',
30 'bacterium'=>'bacteria',
31 'basis'=>'bases',
32 'beau'=>'beaux',
33 'bison'=>'bison',
34 'buffalo'=>'buffalos',//buffaloes
35 'bureau'=>'bureaus',
36 'bus'=>'busses',//buses
37 'cactus'=>'cactuses',//cacti
38 'calf'=>'calves',
39 'child'=>'children',
40 'corps'=>'corps',
41 'corpus'=>'corpora',//corpuses
42 'crisis'=>'crises',
43 'criterion'=>'criteria',
44 'curriculum'=>'curricula',
45 'datum'=>'data',
46 'deer'=>'deer',
47 'die'=>'dice',
48 'dwarf'=>'dwarfs',//dwarves
49 'diagnosis'=>'diagnoses',
50 'echo'=>'echoes',
51 'elf'=>'elves',
52 'ellipsis'=>'ellipses',
53 'embargo'=>'embargoes',
54 'emphasis'=>'emphases',
55 'erratum'=>'errata',
56 'fireman'=>'firemen',
57 'fish'=>'fish',//fishes
58 'focus'=>'focuses',
59 'foot'=>'feet',
60 'formula'=>'formulas',
61 'fungus'=>'fungi',//funguses
62 'genus'=>'genera',
63 'goose'=>'geese',
64 'half'=>'halves',
65 'hero'=>'heroes',
66 'hippopotamus'=>'hippopotami',//hippopotamuses
67 'hoof'=>'hoofs',//hooves
68 'hypothesis'=>'hypotheses',
69 'index'=>'indices',//indexes
70 'knife'=>'knives',
71 'leaf'=>'leaves',
72 'life'=>'lives',
73 'loaf'=>'loaves',
74 'louse'=>'lice',
75 'man'=>'men',
76 'matrix'=>'matrices',
77 'means'=>'means',
78 'medium'=>'media',
79 'memorandum'=>'memoranda',
80 'millennium'=>'millenniums',//milennia
81 'moose'=>'moose',
82 'mosquito'=>'mosquitoes',
83 'mouse'=>'mice',
84 'nebula'=>'nebulae',//nebulas
85 'neurosis'=>'neuroses',
86 'nucleus'=>'nuclei',
87 'oasis'=>'oases',
88 'octopus'=>'octopi',//octopuses
89 'ovum'=>'ova',
90 'ox'=>'oxen',
91 'paralysis'=>'paralyses',
92 'parenthesis'=>'parentheses',
93 'person'=>'people',
94 'phenomenon'=>'phenomena',
95 'potato'=>'potatoes',
96 'radius'=>'radii',//radiuses
97 'scarf'=>'scarfs',//scarves
98 'self'=>'selves',
99 'series'=>'series',
100 'sheep'=>'sheep',
101 'shelf'=>'shelves',
102 'scissors'=>'scissors',
103 'species'=>'species',
104 'stimulus'=>'stimuli',
105 'stratum'=>'strata',
106 'syllabus'=>'syllabi',//syllabuses
107 'symposium'=>'symposia',//symposiums
108 'synthesis'=>'syntheses',
109 'synopsis'=>'synopses',
110 'tableau'=>'tableaux',
111 'that'=>'those',
112 'thesis'=>'theses',
113 'thief'=>'thieves',
114 'this'=>'these',
115 'tomato'=>'tomatoes',
116 'tooth'=>'teeth',
117 'torpedo'=>'torpedoes',
118 'vertebra'=>'vertebrae',
119 'veto'=>'vetoes',
120 'vita'=>'vitae',
121 'watch'=>'watches',
122 'wife'=>'wives',
123 'wolf'=>'wolves',
124 'woman'=>'women',
125 'zero'=>'zeros',//zeroes
126 );
127
128 // 如果只有一个
129 if($iAmount == 1)
130 return $sPluralName;
131
132 // 如果超过一个,并且是特殊的复数形式
133 if(isset($arPluralName[$sPluralName]))
134 return $arPluralName[$sPluralName];
135
136 // 超过一个,并且是一个标准的复数形式
137 return $sPluralName.'s';
138 }
139 }
140
141 echo 'Sybil ate three '._plurals_format('biscuit', 3).', one after the other.',PHP_EOL;
142 echo 'The two '._plurals_format('woman', 2).' will meet tomorrow in the final.';