123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- package locales
- import (
- "strconv"
- "time"
- "github.com/go-playground/locales/currency"
- )
- type PluralRule int
- const (
- PluralRuleUnknown PluralRule = iota
- PluralRuleZero
- PluralRuleOne
- PluralRuleTwo
- PluralRuleFew
- PluralRuleMany
- PluralRuleOther
- )
- const (
- pluralsString = "UnknownZeroOneTwoFewManyOther"
- )
- type Translator interface {
-
-
-
- Locale() string
-
-
- PluralsCardinal() []PluralRule
-
-
- PluralsOrdinal() []PluralRule
-
-
- PluralsRange() []PluralRule
-
- CardinalPluralRule(num float64, v uint64) PluralRule
-
- OrdinalPluralRule(num float64, v uint64) PluralRule
-
- RangePluralRule(num1 float64, v1 uint64, num2 float64, v2 uint64) PluralRule
-
- MonthAbbreviated(month time.Month) string
-
- MonthsAbbreviated() []string
-
- MonthNarrow(month time.Month) string
-
- MonthsNarrow() []string
-
- MonthWide(month time.Month) string
-
- MonthsWide() []string
-
- WeekdayAbbreviated(weekday time.Weekday) string
-
- WeekdaysAbbreviated() []string
-
- WeekdayNarrow(weekday time.Weekday) string
-
- WeekdaysNarrow() []string
-
- WeekdayShort(weekday time.Weekday) string
-
- WeekdaysShort() []string
-
- WeekdayWide(weekday time.Weekday) string
-
- WeekdaysWide() []string
-
-
- FmtNumber(num float64, v uint64) string
-
-
- FmtPercent(num float64, v uint64) string
-
- FmtCurrency(num float64, v uint64, currency currency.Type) string
-
-
- FmtAccounting(num float64, v uint64, currency currency.Type) string
-
- FmtDateShort(t time.Time) string
-
- FmtDateMedium(t time.Time) string
-
- FmtDateLong(t time.Time) string
-
- FmtDateFull(t time.Time) string
-
- FmtTimeShort(t time.Time) string
-
- FmtTimeMedium(t time.Time) string
-
- FmtTimeLong(t time.Time) string
-
- FmtTimeFull(t time.Time) string
- }
- func (p PluralRule) String() string {
- switch p {
- case PluralRuleZero:
- return pluralsString[7:11]
- case PluralRuleOne:
- return pluralsString[11:14]
- case PluralRuleTwo:
- return pluralsString[14:17]
- case PluralRuleFew:
- return pluralsString[17:20]
- case PluralRuleMany:
- return pluralsString[20:24]
- case PluralRuleOther:
- return pluralsString[24:]
- default:
- return pluralsString[:7]
- }
- }
- func W(n float64, v uint64) (w int64) {
- s := strconv.FormatFloat(n-float64(int64(n)), 'f', int(v), 64)
-
-
- if len(s) != 1 {
- s = s[2:]
- end := len(s) + 1
- for i := end; i >= 0; i-- {
- if s[i] != '0' {
- end = i + 1
- break
- }
- }
- w = int64(len(s[:end]))
- }
- return
- }
- func F(n float64, v uint64) (f int64) {
- s := strconv.FormatFloat(n-float64(int64(n)), 'f', int(v), 64)
-
-
- if len(s) != 1 {
-
-
- f, _ = strconv.ParseInt(s[2:], 10, 64)
- }
- return
- }
- func T(n float64, v uint64) (t int64) {
- s := strconv.FormatFloat(n-float64(int64(n)), 'f', int(v), 64)
-
-
- if len(s) != 1 {
- s = s[2:]
- end := len(s) + 1
- for i := end; i >= 0; i-- {
- if s[i] != '0' {
- end = i + 1
- break
- }
- }
-
-
- t, _ = strconv.ParseInt(s[:end], 10, 64)
- }
- return
- }
|