forked from apps/featurer
		
	Add vendor to improve building speed.
This also adds ability to be built in network-constrained environment.
This commit is contained in:
		
							
								
								
									
										24
									
								
								vendor/github.com/go-playground/locales/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/go-playground/locales/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| # Compiled Object files, Static and Dynamic libs (Shared Objects) | ||||
| *.o | ||||
| *.a | ||||
| *.so | ||||
|  | ||||
| # Folders | ||||
| _obj | ||||
| _test | ||||
|  | ||||
| # Architecture specific extensions/prefixes | ||||
| *.[568vq] | ||||
| [568vq].out | ||||
|  | ||||
| *.cgo1.go | ||||
| *.cgo2.c | ||||
| _cgo_defun.c | ||||
| _cgo_gotypes.go | ||||
| _cgo_export.* | ||||
|  | ||||
| _testmain.go | ||||
|  | ||||
| *.exe | ||||
| *.test | ||||
| *.prof | ||||
							
								
								
									
										26
									
								
								vendor/github.com/go-playground/locales/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/go-playground/locales/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| language: go | ||||
| go: | ||||
|   - 1.13.1 | ||||
|   - tip | ||||
| matrix: | ||||
|   allow_failures: | ||||
|     - go: tip | ||||
|  | ||||
| notifications: | ||||
|   email: | ||||
|     recipients: dean.karn@gmail.com | ||||
|     on_success: change | ||||
|     on_failure: always | ||||
|  | ||||
| before_install: | ||||
|   - go install github.com/mattn/goveralls | ||||
|  | ||||
| # Only clone the most recent commit. | ||||
| git: | ||||
|   depth: 1 | ||||
|  | ||||
| script: | ||||
|   - go test -v -race -covermode=atomic -coverprofile=coverage.coverprofile ./... | ||||
|  | ||||
| after_success: | | ||||
|   goveralls -coverprofile=coverage.coverprofile -service travis-ci -repotoken $COVERALLS_TOKEN | ||||
							
								
								
									
										21
									
								
								vendor/github.com/go-playground/locales/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/go-playground/locales/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| The MIT License (MIT) | ||||
|  | ||||
| Copyright (c) 2016 Go Playground | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										170
									
								
								vendor/github.com/go-playground/locales/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								vendor/github.com/go-playground/locales/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,170 @@ | ||||
| ## locales | ||||
| <img align="right" src="https://raw.githubusercontent.com/go-playground/locales/master/logo.png"> | ||||
| [](https://travis-ci.org/go-playground/locales) | ||||
| [](https://godoc.org/github.com/go-playground/locales) | ||||
|  | ||||
|  | ||||
| Locales is a set of locales generated from the [Unicode CLDR Project](http://cldr.unicode.org/) which can be used independently or within | ||||
| an i18n package; these were built for use with, but not exclusive to, [Universal Translator](https://github.com/go-playground/universal-translator). | ||||
|  | ||||
| Features | ||||
| -------- | ||||
| - [x] Rules generated from the latest [CLDR](http://cldr.unicode.org/index/downloads) data, v36.0.1 | ||||
| - [x] Contains Cardinal, Ordinal and Range Plural Rules | ||||
| - [x] Contains Month, Weekday and Timezone translations built in | ||||
| - [x] Contains Date & Time formatting functions | ||||
| - [x] Contains Number, Currency, Accounting and Percent formatting functions | ||||
| - [x] Supports the "Gregorian" calendar only ( my time isn't unlimited, had to draw the line somewhere ) | ||||
|  | ||||
| Full Tests | ||||
| -------------------- | ||||
| I could sure use your help adding tests for every locale, it is a huge undertaking and I just don't have the free time to do it all at the moment; | ||||
| any help would be **greatly appreciated!!!!** please see [issue](https://github.com/go-playground/locales/issues/1) for details. | ||||
|  | ||||
| Installation | ||||
| ----------- | ||||
|  | ||||
| Use go get  | ||||
|  | ||||
| ```shell | ||||
| go get github.com/go-playground/locales | ||||
| ```   | ||||
|  | ||||
| NOTES | ||||
| -------- | ||||
| You'll notice most return types are []byte, this is because most of the time the results will be concatenated with a larger body | ||||
| of text and can avoid some allocations if already appending to a byte array, otherwise just cast as string. | ||||
|  | ||||
| Usage | ||||
| ------- | ||||
| ```go | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/go-playground/locales/currency" | ||||
| 	"github.com/go-playground/locales/en_CA" | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
|  | ||||
| 	loc, _ := time.LoadLocation("America/Toronto") | ||||
| 	datetime := time.Date(2016, 02, 03, 9, 0, 1, 0, loc) | ||||
|  | ||||
| 	l := en_CA.New() | ||||
|  | ||||
| 	// Dates | ||||
| 	fmt.Println(l.FmtDateFull(datetime)) | ||||
| 	fmt.Println(l.FmtDateLong(datetime)) | ||||
| 	fmt.Println(l.FmtDateMedium(datetime)) | ||||
| 	fmt.Println(l.FmtDateShort(datetime)) | ||||
|  | ||||
| 	// Times | ||||
| 	fmt.Println(l.FmtTimeFull(datetime)) | ||||
| 	fmt.Println(l.FmtTimeLong(datetime)) | ||||
| 	fmt.Println(l.FmtTimeMedium(datetime)) | ||||
| 	fmt.Println(l.FmtTimeShort(datetime)) | ||||
|  | ||||
| 	// Months Wide | ||||
| 	fmt.Println(l.MonthWide(time.January)) | ||||
| 	fmt.Println(l.MonthWide(time.February)) | ||||
| 	fmt.Println(l.MonthWide(time.March)) | ||||
| 	// ... | ||||
|  | ||||
| 	// Months Abbreviated | ||||
| 	fmt.Println(l.MonthAbbreviated(time.January)) | ||||
| 	fmt.Println(l.MonthAbbreviated(time.February)) | ||||
| 	fmt.Println(l.MonthAbbreviated(time.March)) | ||||
| 	// ... | ||||
|  | ||||
| 	// Months Narrow | ||||
| 	fmt.Println(l.MonthNarrow(time.January)) | ||||
| 	fmt.Println(l.MonthNarrow(time.February)) | ||||
| 	fmt.Println(l.MonthNarrow(time.March)) | ||||
| 	// ... | ||||
|  | ||||
| 	// Weekdays Wide | ||||
| 	fmt.Println(l.WeekdayWide(time.Sunday)) | ||||
| 	fmt.Println(l.WeekdayWide(time.Monday)) | ||||
| 	fmt.Println(l.WeekdayWide(time.Tuesday)) | ||||
| 	// ... | ||||
|  | ||||
| 	// Weekdays Abbreviated | ||||
| 	fmt.Println(l.WeekdayAbbreviated(time.Sunday)) | ||||
| 	fmt.Println(l.WeekdayAbbreviated(time.Monday)) | ||||
| 	fmt.Println(l.WeekdayAbbreviated(time.Tuesday)) | ||||
| 	// ... | ||||
|  | ||||
| 	// Weekdays Short | ||||
| 	fmt.Println(l.WeekdayShort(time.Sunday)) | ||||
| 	fmt.Println(l.WeekdayShort(time.Monday)) | ||||
| 	fmt.Println(l.WeekdayShort(time.Tuesday)) | ||||
| 	// ... | ||||
|  | ||||
| 	// Weekdays Narrow | ||||
| 	fmt.Println(l.WeekdayNarrow(time.Sunday)) | ||||
| 	fmt.Println(l.WeekdayNarrow(time.Monday)) | ||||
| 	fmt.Println(l.WeekdayNarrow(time.Tuesday)) | ||||
| 	// ... | ||||
|  | ||||
| 	var f64 float64 | ||||
|  | ||||
| 	f64 = -10356.4523 | ||||
|  | ||||
| 	// Number | ||||
| 	fmt.Println(l.FmtNumber(f64, 2)) | ||||
|  | ||||
| 	// Currency | ||||
| 	fmt.Println(l.FmtCurrency(f64, 2, currency.CAD)) | ||||
| 	fmt.Println(l.FmtCurrency(f64, 2, currency.USD)) | ||||
|  | ||||
| 	// Accounting | ||||
| 	fmt.Println(l.FmtAccounting(f64, 2, currency.CAD)) | ||||
| 	fmt.Println(l.FmtAccounting(f64, 2, currency.USD)) | ||||
|  | ||||
| 	f64 = 78.12 | ||||
|  | ||||
| 	// Percent | ||||
| 	fmt.Println(l.FmtPercent(f64, 0)) | ||||
|  | ||||
| 	// Plural Rules for locale, so you know what rules you must cover | ||||
| 	fmt.Println(l.PluralsCardinal()) | ||||
| 	fmt.Println(l.PluralsOrdinal()) | ||||
|  | ||||
| 	// Cardinal Plural Rules | ||||
| 	fmt.Println(l.CardinalPluralRule(1, 0)) | ||||
| 	fmt.Println(l.CardinalPluralRule(1.0, 0)) | ||||
| 	fmt.Println(l.CardinalPluralRule(1.0, 1)) | ||||
| 	fmt.Println(l.CardinalPluralRule(3, 0)) | ||||
|  | ||||
| 	// Ordinal Plural Rules | ||||
| 	fmt.Println(l.OrdinalPluralRule(21, 0)) // 21st | ||||
| 	fmt.Println(l.OrdinalPluralRule(22, 0)) // 22nd | ||||
| 	fmt.Println(l.OrdinalPluralRule(33, 0)) // 33rd | ||||
| 	fmt.Println(l.OrdinalPluralRule(34, 0)) // 34th | ||||
|  | ||||
| 	// Range Plural Rules | ||||
| 	fmt.Println(l.RangePluralRule(1, 0, 1, 0)) // 1-1 | ||||
| 	fmt.Println(l.RangePluralRule(1, 0, 2, 0)) // 1-2 | ||||
| 	fmt.Println(l.RangePluralRule(5, 0, 8, 0)) // 5-8 | ||||
| } | ||||
| ``` | ||||
|  | ||||
| NOTES: | ||||
| ------- | ||||
| These rules were generated from the [Unicode CLDR Project](http://cldr.unicode.org/), if you encounter any issues | ||||
| I strongly encourage contributing to the CLDR project to get the locale information corrected and the next time  | ||||
| these locales are regenerated the fix will come with. | ||||
|  | ||||
| I do however realize that time constraints are often important and so there are two options: | ||||
|  | ||||
| 1. Create your own locale, copy, paste and modify, and ensure it complies with the `Translator` interface. | ||||
| 2. Add an exception in the locale generation code directly and once regenerated, fix will be in place. | ||||
|  | ||||
| Please to not make fixes inside the locale files, they WILL get overwritten when the locales are regenerated. | ||||
|  | ||||
| License | ||||
| ------ | ||||
| Distributed under MIT License, please see license file in code for more details. | ||||
							
								
								
									
										311
									
								
								vendor/github.com/go-playground/locales/currency/currency.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										311
									
								
								vendor/github.com/go-playground/locales/currency/currency.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,311 @@ | ||||
| package currency | ||||
|  | ||||
| // Type is the currency type associated with the locales currency enum | ||||
| type Type int | ||||
|  | ||||
| // locale currencies | ||||
| const ( | ||||
| 	ADP Type = iota | ||||
| 	AED | ||||
| 	AFA | ||||
| 	AFN | ||||
| 	ALK | ||||
| 	ALL | ||||
| 	AMD | ||||
| 	ANG | ||||
| 	AOA | ||||
| 	AOK | ||||
| 	AON | ||||
| 	AOR | ||||
| 	ARA | ||||
| 	ARL | ||||
| 	ARM | ||||
| 	ARP | ||||
| 	ARS | ||||
| 	ATS | ||||
| 	AUD | ||||
| 	AWG | ||||
| 	AZM | ||||
| 	AZN | ||||
| 	BAD | ||||
| 	BAM | ||||
| 	BAN | ||||
| 	BBD | ||||
| 	BDT | ||||
| 	BEC | ||||
| 	BEF | ||||
| 	BEL | ||||
| 	BGL | ||||
| 	BGM | ||||
| 	BGN | ||||
| 	BGO | ||||
| 	BHD | ||||
| 	BIF | ||||
| 	BMD | ||||
| 	BND | ||||
| 	BOB | ||||
| 	BOL | ||||
| 	BOP | ||||
| 	BOV | ||||
| 	BRB | ||||
| 	BRC | ||||
| 	BRE | ||||
| 	BRL | ||||
| 	BRN | ||||
| 	BRR | ||||
| 	BRZ | ||||
| 	BSD | ||||
| 	BTN | ||||
| 	BUK | ||||
| 	BWP | ||||
| 	BYB | ||||
| 	BYN | ||||
| 	BYR | ||||
| 	BZD | ||||
| 	CAD | ||||
| 	CDF | ||||
| 	CHE | ||||
| 	CHF | ||||
| 	CHW | ||||
| 	CLE | ||||
| 	CLF | ||||
| 	CLP | ||||
| 	CNH | ||||
| 	CNX | ||||
| 	CNY | ||||
| 	COP | ||||
| 	COU | ||||
| 	CRC | ||||
| 	CSD | ||||
| 	CSK | ||||
| 	CUC | ||||
| 	CUP | ||||
| 	CVE | ||||
| 	CYP | ||||
| 	CZK | ||||
| 	DDM | ||||
| 	DEM | ||||
| 	DJF | ||||
| 	DKK | ||||
| 	DOP | ||||
| 	DZD | ||||
| 	ECS | ||||
| 	ECV | ||||
| 	EEK | ||||
| 	EGP | ||||
| 	ERN | ||||
| 	ESA | ||||
| 	ESB | ||||
| 	ESP | ||||
| 	ETB | ||||
| 	EUR | ||||
| 	FIM | ||||
| 	FJD | ||||
| 	FKP | ||||
| 	FRF | ||||
| 	GBP | ||||
| 	GEK | ||||
| 	GEL | ||||
| 	GHC | ||||
| 	GHS | ||||
| 	GIP | ||||
| 	GMD | ||||
| 	GNF | ||||
| 	GNS | ||||
| 	GQE | ||||
| 	GRD | ||||
| 	GTQ | ||||
| 	GWE | ||||
| 	GWP | ||||
| 	GYD | ||||
| 	HKD | ||||
| 	HNL | ||||
| 	HRD | ||||
| 	HRK | ||||
| 	HTG | ||||
| 	HUF | ||||
| 	IDR | ||||
| 	IEP | ||||
| 	ILP | ||||
| 	ILR | ||||
| 	ILS | ||||
| 	INR | ||||
| 	IQD | ||||
| 	IRR | ||||
| 	ISJ | ||||
| 	ISK | ||||
| 	ITL | ||||
| 	JMD | ||||
| 	JOD | ||||
| 	JPY | ||||
| 	KES | ||||
| 	KGS | ||||
| 	KHR | ||||
| 	KMF | ||||
| 	KPW | ||||
| 	KRH | ||||
| 	KRO | ||||
| 	KRW | ||||
| 	KWD | ||||
| 	KYD | ||||
| 	KZT | ||||
| 	LAK | ||||
| 	LBP | ||||
| 	LKR | ||||
| 	LRD | ||||
| 	LSL | ||||
| 	LTL | ||||
| 	LTT | ||||
| 	LUC | ||||
| 	LUF | ||||
| 	LUL | ||||
| 	LVL | ||||
| 	LVR | ||||
| 	LYD | ||||
| 	MAD | ||||
| 	MAF | ||||
| 	MCF | ||||
| 	MDC | ||||
| 	MDL | ||||
| 	MGA | ||||
| 	MGF | ||||
| 	MKD | ||||
| 	MKN | ||||
| 	MLF | ||||
| 	MMK | ||||
| 	MNT | ||||
| 	MOP | ||||
| 	MRO | ||||
| 	MRU | ||||
| 	MTL | ||||
| 	MTP | ||||
| 	MUR | ||||
| 	MVP | ||||
| 	MVR | ||||
| 	MWK | ||||
| 	MXN | ||||
| 	MXP | ||||
| 	MXV | ||||
| 	MYR | ||||
| 	MZE | ||||
| 	MZM | ||||
| 	MZN | ||||
| 	NAD | ||||
| 	NGN | ||||
| 	NIC | ||||
| 	NIO | ||||
| 	NLG | ||||
| 	NOK | ||||
| 	NPR | ||||
| 	NZD | ||||
| 	OMR | ||||
| 	PAB | ||||
| 	PEI | ||||
| 	PEN | ||||
| 	PES | ||||
| 	PGK | ||||
| 	PHP | ||||
| 	PKR | ||||
| 	PLN | ||||
| 	PLZ | ||||
| 	PTE | ||||
| 	PYG | ||||
| 	QAR | ||||
| 	RHD | ||||
| 	ROL | ||||
| 	RON | ||||
| 	RSD | ||||
| 	RUB | ||||
| 	RUR | ||||
| 	RWF | ||||
| 	SAR | ||||
| 	SBD | ||||
| 	SCR | ||||
| 	SDD | ||||
| 	SDG | ||||
| 	SDP | ||||
| 	SEK | ||||
| 	SGD | ||||
| 	SHP | ||||
| 	SIT | ||||
| 	SKK | ||||
| 	SLL | ||||
| 	SOS | ||||
| 	SRD | ||||
| 	SRG | ||||
| 	SSP | ||||
| 	STD | ||||
| 	STN | ||||
| 	SUR | ||||
| 	SVC | ||||
| 	SYP | ||||
| 	SZL | ||||
| 	THB | ||||
| 	TJR | ||||
| 	TJS | ||||
| 	TMM | ||||
| 	TMT | ||||
| 	TND | ||||
| 	TOP | ||||
| 	TPE | ||||
| 	TRL | ||||
| 	TRY | ||||
| 	TTD | ||||
| 	TWD | ||||
| 	TZS | ||||
| 	UAH | ||||
| 	UAK | ||||
| 	UGS | ||||
| 	UGX | ||||
| 	USD | ||||
| 	USN | ||||
| 	USS | ||||
| 	UYI | ||||
| 	UYP | ||||
| 	UYU | ||||
| 	UYW | ||||
| 	UZS | ||||
| 	VEB | ||||
| 	VEF | ||||
| 	VES | ||||
| 	VND | ||||
| 	VNN | ||||
| 	VUV | ||||
| 	WST | ||||
| 	XAF | ||||
| 	XAG | ||||
| 	XAU | ||||
| 	XBA | ||||
| 	XBB | ||||
| 	XBC | ||||
| 	XBD | ||||
| 	XCD | ||||
| 	XDR | ||||
| 	XEU | ||||
| 	XFO | ||||
| 	XFU | ||||
| 	XOF | ||||
| 	XPD | ||||
| 	XPF | ||||
| 	XPT | ||||
| 	XRE | ||||
| 	XSU | ||||
| 	XTS | ||||
| 	XUA | ||||
| 	XXX | ||||
| 	YDD | ||||
| 	YER | ||||
| 	YUD | ||||
| 	YUM | ||||
| 	YUN | ||||
| 	YUR | ||||
| 	ZAL | ||||
| 	ZAR | ||||
| 	ZMK | ||||
| 	ZMW | ||||
| 	ZRN | ||||
| 	ZRZ | ||||
| 	ZWD | ||||
| 	ZWL | ||||
| 	ZWR | ||||
| ) | ||||
							
								
								
									
										
											BIN
										
									
								
								vendor/github.com/go-playground/locales/logo.png
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/github.com/go-playground/locales/logo.png
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 36 KiB | 
							
								
								
									
										293
									
								
								vendor/github.com/go-playground/locales/rules.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										293
									
								
								vendor/github.com/go-playground/locales/rules.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,293 @@ | ||||
| package locales | ||||
|  | ||||
| import ( | ||||
| 	"strconv" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/go-playground/locales/currency" | ||||
| ) | ||||
|  | ||||
| // // ErrBadNumberValue is returned when the number passed for | ||||
| // // plural rule determination cannot be parsed | ||||
| // type ErrBadNumberValue struct { | ||||
| // 	NumberValue string | ||||
| // 	InnerError  error | ||||
| // } | ||||
|  | ||||
| // // Error returns ErrBadNumberValue error string | ||||
| // func (e *ErrBadNumberValue) Error() string { | ||||
| // 	return fmt.Sprintf("Invalid Number Value '%s' %s", e.NumberValue, e.InnerError) | ||||
| // } | ||||
|  | ||||
| // var _ error = new(ErrBadNumberValue) | ||||
|  | ||||
| // PluralRule denotes the type of plural rules | ||||
| type PluralRule int | ||||
|  | ||||
| // PluralRule's | ||||
| const ( | ||||
| 	PluralRuleUnknown PluralRule = iota | ||||
| 	PluralRuleZero               // zero | ||||
| 	PluralRuleOne                // one - singular | ||||
| 	PluralRuleTwo                // two - dual | ||||
| 	PluralRuleFew                // few - paucal | ||||
| 	PluralRuleMany               // many - also used for fractions if they have a separate class | ||||
| 	PluralRuleOther              // other - required—general plural form—also used if the language only has a single form | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	pluralsString = "UnknownZeroOneTwoFewManyOther" | ||||
| ) | ||||
|  | ||||
| // Translator encapsulates an instance of a locale | ||||
| // NOTE: some values are returned as a []byte just in case the caller | ||||
| // wishes to add more and can help avoid allocations; otherwise just cast as string | ||||
| type Translator interface { | ||||
|  | ||||
| 	// The following Functions are for overriding, debugging or developing | ||||
| 	// with a Translator Locale | ||||
|  | ||||
| 	// Locale returns the string value of the translator | ||||
| 	Locale() string | ||||
|  | ||||
| 	// returns an array of cardinal plural rules associated | ||||
| 	// with this translator | ||||
| 	PluralsCardinal() []PluralRule | ||||
|  | ||||
| 	// returns an array of ordinal plural rules associated | ||||
| 	// with this translator | ||||
| 	PluralsOrdinal() []PluralRule | ||||
|  | ||||
| 	// returns an array of range plural rules associated | ||||
| 	// with this translator | ||||
| 	PluralsRange() []PluralRule | ||||
|  | ||||
| 	// returns the cardinal PluralRule given 'num' and digits/precision of 'v' for locale | ||||
| 	CardinalPluralRule(num float64, v uint64) PluralRule | ||||
|  | ||||
| 	// returns the ordinal PluralRule given 'num' and digits/precision of 'v' for locale | ||||
| 	OrdinalPluralRule(num float64, v uint64) PluralRule | ||||
|  | ||||
| 	// returns the ordinal PluralRule given 'num1', 'num2' and digits/precision of 'v1' and 'v2' for locale | ||||
| 	RangePluralRule(num1 float64, v1 uint64, num2 float64, v2 uint64) PluralRule | ||||
|  | ||||
| 	// returns the locales abbreviated month given the 'month' provided | ||||
| 	MonthAbbreviated(month time.Month) string | ||||
|  | ||||
| 	// returns the locales abbreviated months | ||||
| 	MonthsAbbreviated() []string | ||||
|  | ||||
| 	// returns the locales narrow month given the 'month' provided | ||||
| 	MonthNarrow(month time.Month) string | ||||
|  | ||||
| 	// returns the locales narrow months | ||||
| 	MonthsNarrow() []string | ||||
|  | ||||
| 	// returns the locales wide month given the 'month' provided | ||||
| 	MonthWide(month time.Month) string | ||||
|  | ||||
| 	// returns the locales wide months | ||||
| 	MonthsWide() []string | ||||
|  | ||||
| 	// returns the locales abbreviated weekday given the 'weekday' provided | ||||
| 	WeekdayAbbreviated(weekday time.Weekday) string | ||||
|  | ||||
| 	// returns the locales abbreviated weekdays | ||||
| 	WeekdaysAbbreviated() []string | ||||
|  | ||||
| 	// returns the locales narrow weekday given the 'weekday' provided | ||||
| 	WeekdayNarrow(weekday time.Weekday) string | ||||
|  | ||||
| 	// WeekdaysNarrowreturns the locales narrow weekdays | ||||
| 	WeekdaysNarrow() []string | ||||
|  | ||||
| 	// returns the locales short weekday given the 'weekday' provided | ||||
| 	WeekdayShort(weekday time.Weekday) string | ||||
|  | ||||
| 	// returns the locales short weekdays | ||||
| 	WeekdaysShort() []string | ||||
|  | ||||
| 	// returns the locales wide weekday given the 'weekday' provided | ||||
| 	WeekdayWide(weekday time.Weekday) string | ||||
|  | ||||
| 	// returns the locales wide weekdays | ||||
| 	WeekdaysWide() []string | ||||
|  | ||||
| 	// The following Functions are common Formatting functionsfor the Translator's Locale | ||||
|  | ||||
| 	// returns 'num' with digits/precision of 'v' for locale and handles both Whole and Real numbers based on 'v' | ||||
| 	FmtNumber(num float64, v uint64) string | ||||
|  | ||||
| 	// returns 'num' with digits/precision of 'v' for locale and handles both Whole and Real numbers based on 'v' | ||||
| 	// NOTE: 'num' passed into FmtPercent is assumed to be in percent already | ||||
| 	FmtPercent(num float64, v uint64) string | ||||
|  | ||||
| 	// returns the currency representation of 'num' with digits/precision of 'v' for locale | ||||
| 	FmtCurrency(num float64, v uint64, currency currency.Type) string | ||||
|  | ||||
| 	// returns the currency representation of 'num' with digits/precision of 'v' for locale | ||||
| 	// in accounting notation. | ||||
| 	FmtAccounting(num float64, v uint64, currency currency.Type) string | ||||
|  | ||||
| 	// returns the short date representation of 't' for locale | ||||
| 	FmtDateShort(t time.Time) string | ||||
|  | ||||
| 	// returns the medium date representation of 't' for locale | ||||
| 	FmtDateMedium(t time.Time) string | ||||
|  | ||||
| 	//  returns the long date representation of 't' for locale | ||||
| 	FmtDateLong(t time.Time) string | ||||
|  | ||||
| 	// returns the full date representation of 't' for locale | ||||
| 	FmtDateFull(t time.Time) string | ||||
|  | ||||
| 	// returns the short time representation of 't' for locale | ||||
| 	FmtTimeShort(t time.Time) string | ||||
|  | ||||
| 	// returns the medium time representation of 't' for locale | ||||
| 	FmtTimeMedium(t time.Time) string | ||||
|  | ||||
| 	// returns the long time representation of 't' for locale | ||||
| 	FmtTimeLong(t time.Time) string | ||||
|  | ||||
| 	// returns the full time representation of 't' for locale | ||||
| 	FmtTimeFull(t time.Time) string | ||||
| } | ||||
|  | ||||
| // String returns the string value  of PluralRule | ||||
| 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] | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // | ||||
| // Precision Notes: | ||||
| // | ||||
| // must specify a precision >= 0, and here is why https://play.golang.org/p/LyL90U0Vyh | ||||
| // | ||||
| // 	v := float64(3.141) | ||||
| // 	i := float64(int64(v)) | ||||
| // | ||||
| // 	fmt.Println(v - i) | ||||
| // | ||||
| // 	or | ||||
| // | ||||
| // 	s := strconv.FormatFloat(v-i, 'f', -1, 64) | ||||
| // 	fmt.Println(s) | ||||
| // | ||||
| // these will not print what you'd expect: 0.14100000000000001 | ||||
| // and so this library requires a precision to be specified, or | ||||
| // inaccurate plural rules could be applied. | ||||
| // | ||||
| // | ||||
| // | ||||
| // n - absolute value of the source number (integer and decimals). | ||||
| // i - integer digits of n. | ||||
| // v - number of visible fraction digits in n, with trailing zeros. | ||||
| // w - number of visible fraction digits in n, without trailing zeros. | ||||
| // f - visible fractional digits in n, with trailing zeros. | ||||
| // t - visible fractional digits in n, without trailing zeros. | ||||
| // | ||||
| // | ||||
| // Func(num float64, v uint64) // v = digits/precision and prevents -1 as a special case as this can lead to very unexpected behaviour, see precision note's above. | ||||
| // | ||||
| // n := math.Abs(num) | ||||
| // i := int64(n) | ||||
| // v := v | ||||
| // | ||||
| // | ||||
| // w := strconv.FormatFloat(num-float64(i), 'f', int(v), 64)  // then parse backwards on string until no more zero's.... | ||||
| // f := strconv.FormatFloat(n, 'f', int(v), 64) 			  // then turn everything after decimal into an int64 | ||||
| // t := strconv.FormatFloat(n, 'f', int(v), 64) 			  // then parse backwards on string until no more zero's.... | ||||
| // | ||||
| // | ||||
| // | ||||
| // General Inclusion Rules | ||||
| // - v will always be available inherently | ||||
| // - all require n | ||||
| // - w requires i | ||||
| // | ||||
|  | ||||
| // W returns the number of visible fraction digits in N, without trailing zeros. | ||||
| func W(n float64, v uint64) (w int64) { | ||||
|  | ||||
| 	s := strconv.FormatFloat(n-float64(int64(n)), 'f', int(v), 64) | ||||
|  | ||||
| 	// with either be '0' or '0.xxxx', so if 1 then w will be zero | ||||
| 	// otherwise need to parse | ||||
| 	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 | ||||
| } | ||||
|  | ||||
| // F returns the visible fractional digits in N, with trailing zeros. | ||||
| func F(n float64, v uint64) (f int64) { | ||||
|  | ||||
| 	s := strconv.FormatFloat(n-float64(int64(n)), 'f', int(v), 64) | ||||
|  | ||||
| 	// with either be '0' or '0.xxxx', so if 1 then f will be zero | ||||
| 	// otherwise need to parse | ||||
| 	if len(s) != 1 { | ||||
|  | ||||
| 		// ignoring error, because it can't fail as we generated | ||||
| 		// the string internally from a real number | ||||
| 		f, _ = strconv.ParseInt(s[2:], 10, 64) | ||||
| 	} | ||||
|  | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // T returns the visible fractional digits in N, without trailing zeros. | ||||
| func T(n float64, v uint64) (t int64) { | ||||
|  | ||||
| 	s := strconv.FormatFloat(n-float64(int64(n)), 'f', int(v), 64) | ||||
|  | ||||
| 	// with either be '0' or '0.xxxx', so if 1 then t will be zero | ||||
| 	// otherwise need to parse | ||||
| 	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 | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// ignoring error, because it can't fail as we generated | ||||
| 		// the string internally from a real number | ||||
| 		t, _ = strconv.ParseInt(s[:end], 10, 64) | ||||
| 	} | ||||
|  | ||||
| 	return | ||||
| } | ||||
		Reference in New Issue
	
	Block a user