我正在使用golang.org/x/text
包进行一些测试,特别是使用feature/plural
子包及其MatchDigits
方法。这就是我在做的事情:
package main
import (
"fmt"
"golang.org/x/text/feature/plural"
"golang.org/x/text/language"
)
func main() {
fmt.Println(plural.Cardinal.MatchDigits(language.French, []byte{1}, 1, 0)) // "1" -> should print 2 (One) but prints 0 (Other)
fmt.Println(plural.Cardinal.MatchDigits(language.French, []byte{2}, 1, 0)) // "2" -> prints 0 (Other) the correct value
fmt.Println(plural.Cardinal.MatchDigits(language.French, []byte{1, 0}, 2, 0)) // "10" -> prints 0 (Other) the correct value
}
以下是我从http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html#fr
获得预期结果的地方我还尝试使用其他语言,使用更复杂的复数规则,如捷克语,输出不正确。
我错过了什么吗?我在这个软件包上找不到很多例子。
谢谢!
编辑:
经过多次测试后,我发现" 1"的结果很好,使用0作为exp
和scale
参数:
fmt.Println(plural.Cardinal.MatchDigits(language.French, []byte{1}, 0, 0)) // prints 2 (One), the correct value
但它不遵循documentation says的内容,当我尝试使用相同的逻辑时,它不起作用:
fmt.Println(plural.Cardinal.MatchDigits(language.French, []byte{1, 5}, 0, 1)) // prints 0 (Other), should print 2 (One)