功能在单数和复数之间切换?

2022-08-30 16:49:36

我正在寻找一个函数,给定一个字符串,它将字符串切换到单数/复数。我需要它来为英语以外的欧洲语言工作。

是否有任何功能可以做到这一点?(给定一个要转换的字符串和语言?

谢谢


答案 1

这是我的便捷功能:

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”等。


答案 2

PHP 中没有内置用于此类操作的函数。但是,您可以使用一些工具来帮助实现目标。

有一个非官方的Google Dictionary API,其中包含有关复数的信息。您可以在此处阅读有关该方法的更多信息。您需要解析 JSON 对象才能找到适当的项目,而此方法往往有点慢。

想到的另一种方法是使用aspell或其亲戚之一。我不确定这些词典对于英语以外的语言有多准确,但我使用aspell将单词扩展到各种形式。

我知道这不是最有帮助的答案,但希望它能给你一个大致的方向来搜索。


推荐