Documentation
¶
Index ¶
- Constants
- Variables
- func Empty(v reflect.Value) bool
- func InString(str string, params []string) bool
- func IsEmptyString(str string) bool
- func IsFloat(str string) bool
- func IsInt(str string) bool
- func IsNull(str string) bool
- func IsNumeric(str string) bool
- func ToBool(str string) bool
- func ToFloat(str string) (float64, error)
- func ToInt(value interface{}) (res int64, err error)
- func ToString(obj interface{}) string
- func ToUint(param string) (res uint64, err error)
- func ValidateAlpha(str string) bool
- func ValidateAlphaDash(str string) bool
- func ValidateAlphaDashUnicode(str string) bool
- func ValidateAlphaNum(str string) bool
- func ValidateAlphaNumUnicode(str string) bool
- func ValidateAlphaUnicode(str string) bool
- func ValidateBetween(i interface{}, params []string) (bool, error)
- func ValidateBetweenString(v string, left, right int64) bool
- func ValidateDigitsBetween(i interface{}, params []string) (bool, error)
- func ValidateDigitsBetweenFloat64(value, left, right float64) bool
- func ValidateDigitsBetweenInt64(value, left, right int64) bool
- func ValidateDigitsBetweenUint64(value, left, right uint64) bool
- func ValidateDistinct(i interface{}) bool
- func ValidateEmail(str string) bool
- func ValidateGt(i, a interface{}) (bool, error)
- func ValidateGtFloat64(v, param float64) bool
- func ValidateGtParam(i interface{}, params []string) (bool, error)
- func ValidateGte(i, a interface{}) (bool, error)
- func ValidateGteFloat64(v, param float64) bool
- func ValidateGteParam(i interface{}, params []string) (bool, error)
- func ValidateIP(v string) bool
- func ValidateIPv4(v string) bool
- func ValidateIPv6(v string) bool
- func ValidateImage(data []byte) bool
- func ValidateLt(i, a interface{}) (bool, error)
- func ValidateLtFloat64(v, param float64) bool
- func ValidateLtParam(i interface{}, params []string) (bool, error)
- func ValidateLte(i, a interface{}) (bool, error)
- func ValidateLteFloat64(v, param float64) bool
- func ValidateLteParam(i interface{}, params []string) (bool, error)
- func ValidateMax(i interface{}, params []string) (bool, error)
- func ValidateMaxFloat64(v, param float64) bool
- func ValidateMimeTypes(data []byte, mimeTypes []string) bool
- func ValidateMimes(data []byte, mimes []string) (bool, error)
- func ValidateMin(i interface{}, params []string) (bool, error)
- func ValidateMinFloat64(v, param float64) bool
- func ValidateRequired(i interface{}) bool
- func ValidateSame(i, a interface{}) (bool, error)
- func ValidateSize(i interface{}, params []string) (bool, error)
- func ValidateStruct(s interface{}) error
- func ValidateURL(str string) bool
- func ValidateUUID(str string) bool
- func ValidateUUID3(str string) bool
- func ValidateUUID4(str string) bool
- func ValidateUUID5(str string) bool
- type CustomTypeValidateFunc
- type ErrorResponse
- type Errors
- func (es Errors) Error() string
- func (es Errors) Errors() []error
- func (es Errors) FieldErrors() []*FieldError
- func (es Errors) GetFieldError(fieldName string) *FieldError
- func (es Errors) GroupByField() map[string][]*FieldError
- func (es Errors) HasFieldError(fieldName string) bool
- func (es Errors) MarshalJSON() ([]byte, error)
- type FieldError
- type MessageParameters
- type ParamValidateFunc
- type StringParamValidateFunc
- type StringValidateFunc
- type Translate
- type Translator
- type UnsupportedTypeError
- type ValidTag
- type ValidateFunc
- type Validator
Constants ¶
const ( Email string = "" /* 1208-byte string literal not displayed */ Alpha string = "^[a-zA-Z]+$" AlphaNum string = "^[a-zA-Z0-9]+$" AlphaDash string = "^[a-zA-Z_-]+$" AlphaUnicode string = "^[\\p{L}]+$" AlphaNumUnicode string = "^[\\p{L}\\p{M}\\p{N}]+$" AlphaDashUnicode string = "^[\\p{L}\\p{M}\\p{N}_-]+$" Numeric string = "^\\d+$" Int string = "^(?:[-+]?(?:0|[1-9][0-9]*))$" Float string = "^(?:[-+]?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$" Hexadecimal string = "^[0-9a-fA-F]+$" HexColor string = "^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$" RGBColor string = "" /* 167-byte string literal not displayed */ RGBAColor string = "" /* 200-byte string literal not displayed */ HSLColor string = "^hsl\\(\\s*(?:0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d|360)\\s*,\\s*(?:(?:0|[1-9]\\d?|100)%)\\s*,\\s*(?:(?:0|[1-9]\\d?|100)%)\\s*\\)$" HSLAColor string = "" /* 158-byte string literal not displayed */ UUID3 string = "^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$" UUID4 string = "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" UUID5 string = "^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" UUID string = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" CreditCard string = "^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3[0-9]{13}|6(?:011|5[0-9]{2})[0-9]{12})$" ISBN10 string = "^(?:[0-9]{9}X|[0-9]{10})$" ISBN13 string = "^(?:97[89][0-9]{10})$" IP string = `` /* 659-byte string literal not displayed */ URLSchema string = `((ftp|tcp|udp|wss?|https?):\/\/)` URLUsername string = `(\S+(:\S*)?@)` URLPath string = `((\/|\?|#)[^\s]*)` URLPort string = `(:(\d{1,5}))` URLIP string = `([1-9]\d?|1\d\d|2[01]\d|22[0-3]|24\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){2}(?:\.([0-9]\d?|1\d\d|2[0-4]\d|25[0-5]))` URLSubdomain string = `((www\.)|([a-zA-Z0-9]+([-_\.]?[a-zA-Z0-9])*[a-zA-Z0-9]\.[a-zA-Z0-9]+))` URL = `^` + URLSchema + `?` + URLUsername + `?` + `((` + URLIP + `|(\[` + IP + `\])|(([a-zA-Z0-9]([a-zA-Z0-9-_]+)?[a-zA-Z0-9]([-\.][a-zA-Z0-9]+)*)|(` + URLSubdomain + `?))?(([a-zA-Z\x{00a1}-\x{ffff}0-9]+-?-?)*[a-zA-Z\x{00a1}-\x{ffff}0-9]+)(?:\.([a-zA-Z\x{00a1}-\x{ffff}]{1,}))?))\.?` + URLPort + `?` + URLPath + `?$` )
Basic regular expressions for validating strings
const ( // Unknown is unresolved OS type Unknown = iota // Win is Windows type Win // Unix is *nix OS types Unix )
Used by IsFilePath func
Variables ¶
var CustomTypeRuleMap = &customTypeRuleMap{validateFunc: make(map[string]CustomTypeValidateFunc)}
CustomTypeRuleMap is a map of functions that can be used as tags for ValidateStruct function.
var Default = New()
Default returns a instance of Validator
var MessageMap = map[string]string{
"accepted": "The {{.Attribute}} must be accepted.",
"activeUrl": "The {{.Attribute}} is not a valid URL.",
"after": "The {{.Attribute}} must be a date after {{.Date}}.",
"afterOrEqual": "The {{.Attribute}} must be a date after or equal to {{.Date}}.",
"alpha": "The {{.Attribute}} may only contain letters.",
"alphaDash": "The {{.Attribute}} may only contain letters, numbers, dashes and underscores.",
"alphaNum": "The {{.Attribute}} may only contain letters and numbers.",
"array": "The {{.Attribute}} must be an array.",
"before": "The {{.Attribute}} must be a date before {{.Date}}.",
"beforeOrEqual": "The {{.Attribute}} must be a date before or equal to {{.Date}}.",
"between.numeric": "The {{.Attribute}} must be between {{.Min}} and {{.Max}}.",
"between.file": "The {{.Attribute}} must be between {{.Min}} and {{.Max}} kilobytes.",
"between.string": "The {{.Attribute}} must be between {{.Min}} and {{.Max}} characters.",
"between.array": "The {{.Attribute}} must have between {{.Min}} and {{.Max}} items.",
"boolean": "The {{.Attribute}} field must be true or false.",
"confirmed": "The {{.Attribute}} confirmation does not match.",
"date": "The {{.Attribute}} is not a valid date.",
"dateFormat": "The {{.Attribute}} does not match the format {{.Format}}.",
"different": "The {{.Attribute}} and {{.Other}} must be different.",
"digits": "The {{.Attribute}} must be {{.Digits}} digits.",
"digitsBetween": "The {{.Attribute}} must be between {{.Min}} and {{.Max}} digits.",
"dimensions": "The {{.Attribute}} has invalid image dimensions.",
"distinct": "The {{.Attribute}} field has a duplicate value.",
"email": "The {{.Attribute}} must be a valid email address.",
"exists": "The selected {{.Attribute}} is invalid.",
"file": "The {{.Attribute}} must be a file.",
"filled": "The {{.Attribute}} field must have a value.",
"gt.numeric": "The {{.Attribute}} must be greater than {{.Value}}.",
"gt.file": "The {{.Attribute}} must be greater than {{.Value}} kilobytes.",
"gt.string": "The {{.Attribute}} must be greater than {{.Value}} characters.",
"gt.array": "The {{.Attribute}} must have greater than {{.Value}} items.",
"gte.numeric": "The {{.Attribute}} must be greater than or equal {{.Value}}.",
"gte.file": "The {{.Attribute}} must be greater than or equal {{.Value}} kilobytes.",
"gte.string": "The {{.Attribute}} must be greater than or equal {{.Value}} characters.",
"gte.array": "The {{.Attribute}} must have {{.Value}} items or more.",
"image": "The {{.Attribute}} must be an image.",
"in": "The selected {{.Attribute}} is invalid.",
"inArray": "The {{.Attribute}} field does not exist in {{.Other}}.",
"integer": "The {{.Attribute}} must be an integer.",
"ip": "The {{.Attribute}} must be a valid IP address.",
"ipv4": "The {{.Attribute}} must be a valid IPv4 address.",
"ipv6": "The {{.Attribute}} must be a valid IPv6 address.",
"json": "The {{.Attribute}} must be a valid JSON string.",
"lt.numeric": "The {{.Attribute}} must be less than {{.Value}}.",
"lt.file": "The {{.Attribute}} must be less than {{.Value}} kilobytes.",
"lt.string": "The {{.Attribute}} must be less than {{.Value}} characters.",
"lt.array": "The {{.Attribute}} must have less than {{.Value}} items.",
"lte.numeric": "The {{.Attribute}} must be less than or equal {{.Value}}.",
"lte.file": "The {{.Attribute}} must be less than or equal {{.Value}} kilobytes.",
"lte.string": "The {{.Attribute}} must be less than or equal {{.Value}} characters.",
"lte.array": "The {{.Attribute}} must not have more than {{.Value}} items.",
"max.numeric": "The {{.Attribute}} may not be greater than {{.Max}}.",
"max.file": "The {{.Attribute}} may not be greater than {{.Max}} kilobytes.",
"max.string": "The {{.Attribute}} may not be greater than {{.Max}} characters.",
"max.array": "The {{.Attribute}} may not have more than {{.Max}} items.",
"mimes": "The {{.Attribute}} must be a file of type: {{.Values}}.",
"mimetypes": "The {{.Attribute}} must be a file of type: {{.Values}}.",
"min.numeric": "The {{.Attribute}} must be at least {{.Min}}.",
"min.file": "The {{.Attribute}} must be at least {{.Min}} kilobytes.",
"min.string": "The {{.Attribute}} must be at least {{.Min}} characters.",
"min.array": "The {{.Attribute}} must have at least {{.Min}} items.",
"notIn": "The selected {{.Attribute}} is invalid.",
"notRegex": "The {{.Attribute}} format is invalid.",
"numeric": "The {{.Attribute}} must be a number.",
"present": "The {{.Attribute}} field must be present.",
"regex": "The {{.Attribute}} format is invalid.",
"required": "The {{.Attribute}} field is required.",
"requiredIf": "The {{.Attribute}} field is required when {{.Other}} is {{.Value}}.",
"requiredUnless": "The {{.Attribute}} field is required unless {{.Other}} is in {{.Values}}.",
"requiredWith": "The {{.Attribute}} field is required when {{.Values}} is present.",
"requiredWithAll": "The {{.Attribute}} field is required when {{.Values}} is present.",
"requiredWithout": "The {{.Attribute}} field is required when {{.Values}} is not present.",
"requiredWithoutAll": "The {{.Attribute}} field is required when none of {{.Values}} are present.",
"same": "The {{.Attribute}} and {{.Other}} must match.",
"size.numeric": "The {{.Attribute}} must be {{.Size}}.",
"size.file": "The {{.Attribute}} must be {{.Size}} kilobytes.",
"size.string": "The {{.Attribute}} must be {{.Size}} characters.",
"size.array": "The {{.Attribute}} must contain {{.Size}} items.",
"string": "The {{.Attribute}} must be a string.",
"timezone": "The {{.Attribute}} must be a valid zone.",
"unique": "The {{.Attribute}} has already been taken.",
"uploaded": "The {{.Attribute}} failed to upload.",
"uuid3": "The {{.Attribute}} format is invalid.",
"uuid4": "The {{.Attribute}} format is invalid.",
"uuid5": "The {{.Attribute}} format is invalid.",
"uuid": "The {{.Attribute}} format is invalid.",
}
MessageMap is a map of string, that can be used as error message for ValidateStruct function.
var Mimes = map[string]string{}/* 767 elements not displayed */
Mimes is a map of extension to MIME types.
var ParamRuleMap = map[string]ParamValidateFunc{
"between": validateBetween,
"digitsBetween": validateDigitsBetween,
"min": validateMin,
"max": validateMax,
"size": validateSize,
"gt": validateGtParam,
"gte": validateGteParam,
"lt": validateLtParam,
"lte": validateLteParam,
}
ParamRuleMap is a map of functions, that can be used as tags for ValidateStruct function.
var RuleMap = map[string]ValidateFunc{
"distinct": validateDistinct,
}
RuleMap is a map of functions, that can be used as tags for ValidateStruct function.
var StringRulesMap = map[string]StringValidateFunc{ "numeric": IsNumeric, "int": IsInt, "integer": IsInt, "float": IsFloat, "email": ValidateEmail, "alpha": ValidateAlpha, "alphaNum": ValidateAlphaNum, "alphaDash": ValidateAlphaDash, "alphaUnicode": ValidateAlphaUnicode, "alphaNumUnicode": ValidateAlphaNumUnicode, "alphaDashUnicode": ValidateAlphaDashUnicode, "ip": ValidateIP, "ipv4": ValidateIPv4, "ipv6": ValidateIPv6, "uuid3": ValidateUUID3, "uuid4": ValidateUUID4, "uuid5": ValidateUUID5, "uuid": ValidateUUID, "url": ValidateURL, }
StringRulesMap is a map of functions, that can be used as tags for ValidateStruct function when reflect type is string.
Functions ¶
func IsEmptyString ¶
IsEmptyString check if the string is empty.
func ToInt ¶
ToInt convert the input string or any int type to an integer type 64, or 0 if the input is not an integer.
func ToString ¶
func ToString(obj interface{}) string
ToString convert the input to a string with optimized fast paths.
func ValidateAlpha ¶
ValidateAlpha check if the string may be only contains letters (a-zA-Z). Empty string is valid.
func ValidateAlphaDash ¶
ValidateAlphaDash check if the string may be only contains letters, numbers, dashes and underscores. Empty string is valid.
func ValidateAlphaDashUnicode ¶
ValidateAlphaDashUnicode check if the string may be only contains letters, numbers, dashes and underscores. Empty string is valid.
func ValidateAlphaNum ¶
ValidateAlphaNum check if the string may be only contains letters and numbers. Empty string is valid.
func ValidateAlphaNumUnicode ¶
ValidateAlphaNumUnicode check if the string may be only contains letters and numbers. Empty string is valid.
func ValidateAlphaUnicode ¶
ValidateAlphaUnicode check if the string may be only contains letters (a-zA-Z). Empty string is valid.
func ValidateBetween ¶
ValidateBetween check The field under validation must have a size between the given min and max. Strings, numerics, arrays, and files are evaluated in the same fashion as the size rule.
func ValidateBetweenString ¶
ValidateBetweenString is
func ValidateDigitsBetween ¶
ValidateDigitsBetween check The field under validation must have a length between the given min and max.
func ValidateDigitsBetweenFloat64 ¶
ValidateDigitsBetweenFloat64 returns true if value lies between left and right border
func ValidateDigitsBetweenInt64 ¶
ValidateDigitsBetweenInt64 returns true if value lies between left and right border
func ValidateDigitsBetweenUint64 ¶
ValidateDigitsBetweenUint64 returns true if value lies between left and right border
func ValidateDistinct ¶
func ValidateDistinct(i interface{}) bool
ValidateDistinct is the validation function for validating an attribute is unique among other values.
func ValidateEmail ¶
ValidateEmail check if the string is an email.
func ValidateGt ¶
ValidateGt is the validation function for validating if the current field's value is greater than to the param's value.
func ValidateGtFloat64 ¶
ValidateGtFloat64 is the validation function for validating if the current field's value is greater than to the param's value.
func ValidateGtParam ¶
ValidateGtParam is the validation function for validating if the current field's value is greater than the param's value.
func ValidateGte ¶
ValidateGte is the validation function for validating if the current field's value is greater than to the param's value.
func ValidateGteFloat64 ¶
ValidateGteFloat64 is the validation function for validating if the current field's value is greater than or equal to the param's value.
func ValidateGteParam ¶
ValidateGteParam is the validation function for validating if the current field's value is greater than or equal to the param's value.
func ValidateIPv4 ¶
ValidateIPv4 check if the string is an ipv4 address.
func ValidateIPv6 ¶
ValidateIPv6 check if the string is an ipv6 address.
func ValidateImage ¶
ValidateImage is the validation function for the The file under validation must be an image (jpeg, png, bmp, gif, or svg)
func ValidateLt ¶
ValidateLt is the validation function for validating if the current field's value is less than the param's value.
func ValidateLtFloat64 ¶
ValidateLtFloat64 is the validation function for validating if the current field's value is less than the param's value.
func ValidateLtParam ¶
ValidateLtParam is the validation function for validating if the current field's value is less than the param's value.
func ValidateLte ¶
ValidateLte is the validation function for validating if the current field's value is less than or equal to the param's value.
func ValidateLteFloat64 ¶
ValidateLteFloat64 is the validation function for validating if the current field's value is less than or equal to the param's value.
func ValidateLteParam ¶
ValidateLteParam is the validation function for validating if the current field's value is less than or equal to the param's value.
func ValidateMax ¶
ValidateMax is the validation function for validating if the current field's value is less than or equal to the param's value.
func ValidateMaxFloat64 ¶
ValidateMaxFloat64 is the validation function for validating if the current field's value is less than or equal to the param's value.
func ValidateMimeTypes ¶
ValidateMimeTypes is the validation function for the file must match one of the given MIME types.
func ValidateMimes ¶
ValidateMimes is the validation function for the file must have a MIME type corresponding to one of the listed extensions.
func ValidateMin ¶
ValidateMin is the validation function for validating if the current field's value is greater than or equal to the param's value.
func ValidateMinFloat64 ¶
ValidateMinFloat64 is the validation function for validating if the current field's value is greater than or equal to the param's value.
func ValidateRequired ¶
func ValidateRequired(i interface{}) bool
ValidateRequired check value required when anotherField str is a member of the set of strings params
func ValidateSame ¶
ValidateSame is the validation function for validating if the current field's value is greater than or equal to the param's value.
func ValidateSize ¶
ValidateSize The field under validation must have a size matching the given value. For string data, value corresponds to the number of characters. For numeric data, value corresponds to a given integer value. For an array | map | slice, size corresponds to the count of the array | map | slice.
func ValidateStruct ¶
func ValidateStruct(s interface{}) error
ValidateStruct use tags for fields. result will be equal to `false` if there are any errors.
func ValidateUUID3 ¶
ValidateUUID3 check if the string is an uuid3.
func ValidateUUID4 ¶
ValidateUUID4 check if the string is an uuid4.
func ValidateUUID5 ¶
ValidateUUID5 check if the string is an uuid5.
Types ¶
type CustomTypeValidateFunc ¶
CustomTypeValidateFunc is a wrapper for validator functions that returns bool. first parameter is field value second parameter is struct field third parameter is validTag message, pass the variable to the message
type ErrorResponse ¶
type Errors ¶
type Errors []error
Errors is an array of multiple errors and conforms to the error interface.
func (Errors) FieldErrors ¶
func (es Errors) FieldErrors() []*FieldError
FieldErrors returns all FieldError instances
func (Errors) GetFieldError ¶
func (es Errors) GetFieldError(fieldName string) *FieldError
GetFieldError returns the first error for the specified field
func (Errors) GroupByField ¶
func (es Errors) GroupByField() map[string][]*FieldError
GroupByField groups errors by field name
func (Errors) HasFieldError ¶
HasFieldError checks if there's an error for the specified field
func (Errors) MarshalJSON ¶
MarshalJSON output Json format.
type FieldError ¶
type FieldError struct {
Name string `json:"name"`
StructName string `json:"struct_name,omitempty"`
Tag string `json:"tag"`
MessageName string `json:"message_name,omitempty"`
MessageParameters MessageParameters `json:"message_parameters,omitempty"`
Attribute string `json:"attribute,omitempty"`
DefaultAttribute string `json:"default_attribute,omitempty"`
Value string `json:"value,omitempty"`
Message string `json:"message"`
FuncError error `json:"func_error,omitempty"`
}
FieldError encapsulates name, message, and value etc.
func (*FieldError) Error ¶
func (fe *FieldError) Error() string
Error returns the error message with optional function error details
func (*FieldError) HasFuncError ¶
func (fe *FieldError) HasFuncError() bool
HasFuncError checks if there's an underlying function error
func (*FieldError) SetMessage ¶
func (fe *FieldError) SetMessage(msg string)
SetMessage sets the user-friendly message while preserving function error
func (*FieldError) Unwrap ¶
func (fe *FieldError) Unwrap() error
Unwrap implements the errors.Unwrap interface for error chain support
type MessageParameters ¶
type MessageParameters []messageParameter
A MessageParameters represents store message parameter into field struct.
type ParamValidateFunc ¶
ParamValidateFunc is
type StringParamValidateFunc ¶
StringParamValidateFunc is
type Translator ¶
type Translator struct {
// contains filtered or unexported fields
}
Translator type
func NewTranslator ¶
func NewTranslator() *Translator
NewTranslator returns a new instance of 'translator' with sane defaults.
func (*Translator) LoadMessage ¶
func (t *Translator) LoadMessage(langCode string) Translate
LoadMessage load message
func (*Translator) SetAttributes ¶
func (t *Translator) SetAttributes(langCode string, messages Translate)
SetAttributes set attributes
func (*Translator) SetMessage ¶
func (t *Translator) SetMessage(langCode string, messages Translate)
SetMessage set Message
type UnsupportedTypeError ¶
UnsupportedTypeError is a wrapper for reflect.Type
func (*UnsupportedTypeError) Error ¶
func (e *UnsupportedTypeError) Error() string
Error returns string equivalent for reflect.Type
type ValidTag ¶
type ValidTag struct {
// contains filtered or unexported fields
}
A ValidTag represents parse validTag into field struct.
type Validator ¶
type Validator struct {
Attributes map[string]string
CustomMessage map[string]string
Translator *Translator
}
Validator construct
func (*Validator) ValidateStruct ¶
ValidateStruct use tags for fields. result will be equal to `false` if there are any errors.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
_examples
|
|
|
custom
command
|
|
|
echo
command
|
|
|
gin
command
|
|
|
iris
command
|
|
|
simple
command
|
|
|
translation
command
|
|
|
translations
command
|
|
|
lang
|
|