内部复数包的问题" golang.org/x/text"

时间:2017-05-01 11:13:02

标签: go internationalization

我正在使用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作为expscale参数:

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)

0 个答案:

没有答案