私はロシア語の清潔さと適切な使用を完全にサポートします。 人生全般、特にルネットで。 「23個」や「23個」の平均版などの碑文の場合。軽度に反ります。
したがって、名詞の末尾のロボット主義を克服するためにタスクが発生したとき、対応する機能が開発および実装されました(または、Smartyのプラグイン)。
この関数はルールに基づいています-数字で使用されるロシア語には、合計で3つのオプション(場合によっては少数)の名詞語尾があります:
- 番号の最後の桁が1の場合(11ではない)
- 番号の最後の桁が2,3,4である場合(ただし、* 12、* 13、* 14ではない)
- 他のすべての場合。
当然、この規則性を受け取ったので、コードを書くことは難しくありませんでした。
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
Copy Source | Copy HTML /** * Smarty {number2word} function plugin * * Type: function* Name: number2word* Purpose: Get russian (or other lang) word equivalent to current number of items * @author Beresnev Sergey * @param array * @param Smarty */ function smarty_function_number2word( $params , & $smarty ) { if (! isset ( $params [ 'number' ])) { $smarty ->trigger_error( "numbertoword: 'number'" ); return ; } if (! isset ( $params [ 'name1' ]) or ! isset ( $params [ 'name2' ]) or ! isset ( $params [ 'name3' ])) { $smarty ->trigger_error( "numbertoword: 'name1' 'name2' 'name3'" ); return ; } $temp = strval( $params [ 'number' ]); $temp = $temp [utf8_strlen( $temp )-1]; return (( $temp >1 and $temp <5 and (intval( $params [ 'number' ]%100)>19 or intval( $params [ 'number' ]%100)<10))? $params [ 'name2' ]:( $temp ==1? $params [ 'name1' ]: $params [ 'name3' ])); }
その後、テンプレートで、フォームのデザインを示すだけで十分です
{number2word number=$your_number name1= name2= name3=}
Z.Y. アカウントの修正をありがとう* 10- * 20