功能在单数和复数之间切换?
我正在寻找一个函数,给定一个字符串,它将字符串切换到单数/复数。我需要它来为英语以外的欧洲语言工作。
是否有任何功能可以做到这一点?(给定一个要转换的字符串和语言?
谢谢
我正在寻找一个函数,给定一个字符串,它将字符串切换到单数/复数。我需要它来为英语以外的欧洲语言工作。
是否有任何功能可以做到这一点?(给定一个要转换的字符串和语言?
谢谢
这是我的便捷功能:
function plural( $amount, $singular = '', $plural = 's' ) {
if ( $amount === 1 ) {
return $singular;
}
return $plural;
}
默认情况下,它只是在字符串后添加“s”。例如:
echo $posts . ' post' . plural( $posts );
这将回显“0个帖子”,“1个帖子”,“2个帖子”,“3个帖子”等。但你也可以做:
echo $replies . ' repl' . plural( $replies, 'y', 'ies' );
这将回显“0回复”,“1回复”,“2回复”,“3回复”等。或者:
echo $replies . ' ' . plural( $replies, 'reply', 'replies' );
它也适用于其他一些语言。例如,在西班牙语中,我这样做:
echo $comentarios . ' comentario' . plural( $comentarios );
这将呼应“0 comentarios”,“1 comentario”,“2 comentarios”,“3 comentarios”等。或者,如果添加“s”不是方法,那么:
echo $canciones . ' canci' . plural( $canciones, 'ón', 'ones' );
这将呼应“0 canciones”,“1 canción”,“2 canciones”,“3 canciones”等。
PHP 中没有内置用于此类操作的函数。但是,您可以使用一些工具来帮助实现目标。
有一个非官方的Google Dictionary API,其中包含有关复数的信息。您可以在此处阅读有关该方法的更多信息。您需要解析 JSON 对象才能找到适当的项目,而此方法往往有点慢。
想到的另一种方法是使用aspell或其亲戚之一。我不确定这些词典对于英语以外的语言有多准确,但我使用aspell将单词扩展到各种形式。
我知道这不是最有帮助的答案,但希望它能给你一个大致的方向来搜索。