149 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package ut
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/go-playground/locales"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	// ErrUnknowTranslation indicates the translation could not be found
 | |
| 	ErrUnknowTranslation = errors.New("Unknown Translation")
 | |
| )
 | |
| 
 | |
| var _ error = new(ErrConflictingTranslation)
 | |
| var _ error = new(ErrRangeTranslation)
 | |
| var _ error = new(ErrOrdinalTranslation)
 | |
| var _ error = new(ErrCardinalTranslation)
 | |
| var _ error = new(ErrMissingPluralTranslation)
 | |
| var _ error = new(ErrExistingTranslator)
 | |
| 
 | |
| // ErrExistingTranslator is the error representing a conflicting translator
 | |
| type ErrExistingTranslator struct {
 | |
| 	locale string
 | |
| }
 | |
| 
 | |
| // Error returns ErrExistingTranslator's internal error text
 | |
| func (e *ErrExistingTranslator) Error() string {
 | |
| 	return fmt.Sprintf("error: conflicting translator for locale '%s'", e.locale)
 | |
| }
 | |
| 
 | |
| // ErrConflictingTranslation is the error representing a conflicting translation
 | |
| type ErrConflictingTranslation struct {
 | |
| 	locale string
 | |
| 	key    interface{}
 | |
| 	rule   locales.PluralRule
 | |
| 	text   string
 | |
| }
 | |
| 
 | |
| // Error returns ErrConflictingTranslation's internal error text
 | |
| func (e *ErrConflictingTranslation) Error() string {
 | |
| 
 | |
| 	if _, ok := e.key.(string); !ok {
 | |
| 		return fmt.Sprintf("error: conflicting key '%#v' rule '%s' with text '%s' for locale '%s', value being ignored", e.key, e.rule, e.text, e.locale)
 | |
| 	}
 | |
| 
 | |
| 	return fmt.Sprintf("error: conflicting key '%s' rule '%s' with text '%s' for locale '%s', value being ignored", e.key, e.rule, e.text, e.locale)
 | |
| }
 | |
| 
 | |
| // ErrRangeTranslation is the error representing a range translation error
 | |
| type ErrRangeTranslation struct {
 | |
| 	text string
 | |
| }
 | |
| 
 | |
| // Error returns ErrRangeTranslation's internal error text
 | |
| func (e *ErrRangeTranslation) Error() string {
 | |
| 	return e.text
 | |
| }
 | |
| 
 | |
| // ErrOrdinalTranslation is the error representing an ordinal translation error
 | |
| type ErrOrdinalTranslation struct {
 | |
| 	text string
 | |
| }
 | |
| 
 | |
| // Error returns ErrOrdinalTranslation's internal error text
 | |
| func (e *ErrOrdinalTranslation) Error() string {
 | |
| 	return e.text
 | |
| }
 | |
| 
 | |
| // ErrCardinalTranslation is the error representing a cardinal translation error
 | |
| type ErrCardinalTranslation struct {
 | |
| 	text string
 | |
| }
 | |
| 
 | |
| // Error returns ErrCardinalTranslation's internal error text
 | |
| func (e *ErrCardinalTranslation) Error() string {
 | |
| 	return e.text
 | |
| }
 | |
| 
 | |
| // ErrMissingPluralTranslation is the error signifying a missing translation given
 | |
| // the locales plural rules.
 | |
| type ErrMissingPluralTranslation struct {
 | |
| 	locale          string
 | |
| 	key             interface{}
 | |
| 	rule            locales.PluralRule
 | |
| 	translationType string
 | |
| }
 | |
| 
 | |
| // Error returns ErrMissingPluralTranslation's internal error text
 | |
| func (e *ErrMissingPluralTranslation) Error() string {
 | |
| 
 | |
| 	if _, ok := e.key.(string); !ok {
 | |
| 		return fmt.Sprintf("error: missing '%s' plural rule '%s' for translation with key '%#v' and locale '%s'", e.translationType, e.rule, e.key, e.locale)
 | |
| 	}
 | |
| 
 | |
| 	return fmt.Sprintf("error: missing '%s' plural rule '%s' for translation with key '%s' and locale '%s'", e.translationType, e.rule, e.key, e.locale)
 | |
| }
 | |
| 
 | |
| // ErrMissingBracket is the error representing a missing bracket in a translation
 | |
| // eg. This is a {0 <-- missing ending '}'
 | |
| type ErrMissingBracket struct {
 | |
| 	locale string
 | |
| 	key    interface{}
 | |
| 	text   string
 | |
| }
 | |
| 
 | |
| // Error returns ErrMissingBracket error message
 | |
| func (e *ErrMissingBracket) Error() string {
 | |
| 	return fmt.Sprintf("error: missing bracket '{}', in translation. locale: '%s' key: '%v' text: '%s'", e.locale, e.key, e.text)
 | |
| }
 | |
| 
 | |
| // ErrBadParamSyntax is the error representing a bad parameter definition in a translation
 | |
| // eg. This is a {must-be-int}
 | |
| type ErrBadParamSyntax struct {
 | |
| 	locale string
 | |
| 	param  string
 | |
| 	key    interface{}
 | |
| 	text   string
 | |
| }
 | |
| 
 | |
| // Error returns ErrBadParamSyntax error message
 | |
| func (e *ErrBadParamSyntax) Error() string {
 | |
| 	return fmt.Sprintf("error: bad parameter syntax, missing parameter '%s' in translation. locale: '%s' key: '%v' text: '%s'", e.param, e.locale, e.key, e.text)
 | |
| }
 | |
| 
 | |
| // import/export errors
 | |
| 
 | |
| // ErrMissingLocale is the error representing an expected locale that could
 | |
| // not be found aka locale not registered with the UniversalTranslator Instance
 | |
| type ErrMissingLocale struct {
 | |
| 	locale string
 | |
| }
 | |
| 
 | |
| // Error returns ErrMissingLocale's internal error text
 | |
| func (e *ErrMissingLocale) Error() string {
 | |
| 	return fmt.Sprintf("error: locale '%s' not registered.", e.locale)
 | |
| }
 | |
| 
 | |
| // ErrBadPluralDefinition is the error representing an incorrect plural definition
 | |
| // usually found within translations defined within files during the import process.
 | |
| type ErrBadPluralDefinition struct {
 | |
| 	tl translation
 | |
| }
 | |
| 
 | |
| // Error returns ErrBadPluralDefinition's internal error text
 | |
| func (e *ErrBadPluralDefinition) Error() string {
 | |
| 	return fmt.Sprintf("error: bad plural definition '%#v'", e.tl)
 | |
| }
 |