You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.6 KiB
148 lines
4.6 KiB
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) |
|
}
|
|
|