Package plural
Overview ▹
Index ▹
Constants
CLDRVersion is the CLDR version from which the tables in this package are derived.
const CLDRVersion = "30"
type Form ¶
Form defines a plural form.
Not all languages support all forms. Also, the meaning of each form varies per language. It is important to note that the name of a form does not necessarily correspond one-to-one with the set of numbers. For instance, for Croation, One matches not only 1, but also 11, 21, etc.
Each language must at least support the form "other".
type Form byte
const ( Other Form = iota Zero One Two Few Many )
type Rules ¶
Rules defines the plural rules for all languages for a certain plural type.
This package is UNDER CONSTRUCTION and its API may change.
type Rules struct {
// contains filtered or unexported fields
}
var ( // Cardinal defines the plural rules for numbers indicating quantities. Cardinal *Rules = cardinal // Ordinal defines the plural rules for numbers indicating position // (first, second, etc.). Ordinal *Rules = ordinal )
func (*Rules) MatchDigits ¶
func (p *Rules) MatchDigits(t language.Tag, digits []byte, exp, scale int) Form
MatchDigits computes the plural form for the given language and the given decimal floating point digits. The digits are stored in big-endian order and are of value byte(0) - byte(9). The floating point position is indicated by exp and the number of visible decimals is scale. All leading and trailing zeros may be omitted from digits.
The following table contains examples of possible arguments to represent the given numbers.
decimal digits exp scale 123 []byte{1, 2, 3} 3 0 123.4 []byte{1, 2, 3, 4} 3 1 123.40 []byte{1, 2, 3, 4} 3 2 100000 []byte{1} 6......0 100000.00 []byte{1} 6......3