gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

errors.go (4674B)


      1 package ut
      2 
      3 import (
      4 	"errors"
      5 	"fmt"
      6 
      7 	"github.com/go-playground/locales"
      8 )
      9 
     10 var (
     11 	// ErrUnknowTranslation indicates the translation could not be found
     12 	ErrUnknowTranslation = errors.New("Unknown Translation")
     13 )
     14 
     15 var _ error = new(ErrConflictingTranslation)
     16 var _ error = new(ErrRangeTranslation)
     17 var _ error = new(ErrOrdinalTranslation)
     18 var _ error = new(ErrCardinalTranslation)
     19 var _ error = new(ErrMissingPluralTranslation)
     20 var _ error = new(ErrExistingTranslator)
     21 
     22 // ErrExistingTranslator is the error representing a conflicting translator
     23 type ErrExistingTranslator struct {
     24 	locale string
     25 }
     26 
     27 // Error returns ErrExistingTranslator's internal error text
     28 func (e *ErrExistingTranslator) Error() string {
     29 	return fmt.Sprintf("error: conflicting translator for locale '%s'", e.locale)
     30 }
     31 
     32 // ErrConflictingTranslation is the error representing a conflicting translation
     33 type ErrConflictingTranslation struct {
     34 	locale string
     35 	key    interface{}
     36 	rule   locales.PluralRule
     37 	text   string
     38 }
     39 
     40 // Error returns ErrConflictingTranslation's internal error text
     41 func (e *ErrConflictingTranslation) Error() string {
     42 
     43 	if _, ok := e.key.(string); !ok {
     44 		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)
     45 	}
     46 
     47 	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)
     48 }
     49 
     50 // ErrRangeTranslation is the error representing a range translation error
     51 type ErrRangeTranslation struct {
     52 	text string
     53 }
     54 
     55 // Error returns ErrRangeTranslation's internal error text
     56 func (e *ErrRangeTranslation) Error() string {
     57 	return e.text
     58 }
     59 
     60 // ErrOrdinalTranslation is the error representing an ordinal translation error
     61 type ErrOrdinalTranslation struct {
     62 	text string
     63 }
     64 
     65 // Error returns ErrOrdinalTranslation's internal error text
     66 func (e *ErrOrdinalTranslation) Error() string {
     67 	return e.text
     68 }
     69 
     70 // ErrCardinalTranslation is the error representing a cardinal translation error
     71 type ErrCardinalTranslation struct {
     72 	text string
     73 }
     74 
     75 // Error returns ErrCardinalTranslation's internal error text
     76 func (e *ErrCardinalTranslation) Error() string {
     77 	return e.text
     78 }
     79 
     80 // ErrMissingPluralTranslation is the error signifying a missing translation given
     81 // the locales plural rules.
     82 type ErrMissingPluralTranslation struct {
     83 	locale          string
     84 	key             interface{}
     85 	rule            locales.PluralRule
     86 	translationType string
     87 }
     88 
     89 // Error returns ErrMissingPluralTranslation's internal error text
     90 func (e *ErrMissingPluralTranslation) Error() string {
     91 
     92 	if _, ok := e.key.(string); !ok {
     93 		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)
     94 	}
     95 
     96 	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)
     97 }
     98 
     99 // ErrMissingBracket is the error representing a missing bracket in a translation
    100 // eg. This is a {0 <-- missing ending '}'
    101 type ErrMissingBracket struct {
    102 	locale string
    103 	key    interface{}
    104 	text   string
    105 }
    106 
    107 // Error returns ErrMissingBracket error message
    108 func (e *ErrMissingBracket) Error() string {
    109 	return fmt.Sprintf("error: missing bracket '{}', in translation. locale: '%s' key: '%v' text: '%s'", e.locale, e.key, e.text)
    110 }
    111 
    112 // ErrBadParamSyntax is the error representing a bad parameter definition in a translation
    113 // eg. This is a {must-be-int}
    114 type ErrBadParamSyntax struct {
    115 	locale string
    116 	param  string
    117 	key    interface{}
    118 	text   string
    119 }
    120 
    121 // Error returns ErrBadParamSyntax error message
    122 func (e *ErrBadParamSyntax) Error() string {
    123 	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)
    124 }
    125 
    126 // import/export errors
    127 
    128 // ErrMissingLocale is the error representing an expected locale that could
    129 // not be found aka locale not registered with the UniversalTranslator Instance
    130 type ErrMissingLocale struct {
    131 	locale string
    132 }
    133 
    134 // Error returns ErrMissingLocale's internal error text
    135 func (e *ErrMissingLocale) Error() string {
    136 	return fmt.Sprintf("error: locale '%s' not registered.", e.locale)
    137 }
    138 
    139 // ErrBadPluralDefinition is the error representing an incorrect plural definition
    140 // usually found within translations defined within files during the import process.
    141 type ErrBadPluralDefinition struct {
    142 	tl translation
    143 }
    144 
    145 // Error returns ErrBadPluralDefinition's internal error text
    146 func (e *ErrBadPluralDefinition) Error() string {
    147 	return fmt.Sprintf("error: bad plural definition '%#v'", e.tl)
    148 }