# `GuardedStruct.Messages`
[🔗](https://github.com/mishka-group/guarded_struct/blob/v0.1.4/lib/messages.ex#L1)

This module is used to define the messages that are used in the guarded_struct library.
You can define your own messages by creating a module that uses this module and
implements the callbacks defined in this module.
It can be used to define messages in multiple languages like using Gettext.

## Usage
```elixir
defmodule GuardedStruct.Your.Messages do
  use GuardedStruct.Messages
  import MyAppWeb.Gettext

  def required_fields(), do: gettext("Please submit required fields.")
end
```

Remember to add `message_backend: GuardedStruct.Your.Messages` to your
configuration.

```elixir
config :guarded_struct, message_backend: GuardedStruct.Your.Messages
```

# `message`

```elixir
@type message() :: binary()
```

# `authorized_fields`
*optional* 

```elixir
@callback authorized_fields() :: message()
```

# `builder`
*optional* 

```elixir
@callback builder() :: message()
```

# `check_dependent_keys`
*optional* 

```elixir
@callback check_dependent_keys({any(), any()}) :: message()
```

# `convert_enum_output`
*optional* 

```elixir
@callback convert_enum_output(any()) :: message()
```

# `custom`
*optional* 

```elixir
@callback custom(any()) :: message()
```

# `date_binary`
*optional* 

```elixir
@callback date_binary(any()) :: message()
```

# `date_struct`
*optional* 

```elixir
@callback date_struct(any()) :: message()
```

# `datetime`
*optional* 

```elixir
@callback datetime(any()) :: message()
```

# `domain_field_status`
*optional* 

```elixir
@callback domain_field_status(any()) :: message()
```

# `each`
*optional* 

```elixir
@callback each(any()) :: message()
```

# `either`
*optional* 

```elixir
@callback either(any()) :: message()
```

# `email`
*optional* 

```elixir
@callback email(any()) :: message()
```

# `email_r`
*optional* 

```elixir
@callback email_r(any()) :: message()
```

# `enum`
*optional* 

```elixir
@callback enum(any()) :: message()
```

# `equal`
*optional* 

```elixir
@callback equal(any()) :: message()
```

# `field`
*optional* 

```elixir
@callback field(any()) :: message()
```

# `field_type`
*optional* 

```elixir
@callback field_type(any()) :: message()
```

# `force_domain_field_status`
*optional* 

```elixir
@callback force_domain_field_status(any()) :: message()
```

# `full_name`
*optional* 

```elixir
@callback full_name(any()) :: message()
```

# `future_datetime`
*optional* 

```elixir
@callback future_datetime(any()) :: message()
```

# `hex_color`
*optional* 

```elixir
@callback hex_color(any()) :: message()
```

# `hostname`
*optional* 

```elixir
@callback hostname(any()) :: message()
```

# `ip`
*optional* 

```elixir
@callback ip(any()) :: message()
```

# `ipv4`
*optional* 

```elixir
@callback ipv4(any()) :: message()
```

# `ipv6`
*optional* 

```elixir
@callback ipv6(any()) :: message()
```

# `is_type`
*optional* 

```elixir
@callback is_type({any(), any()}) :: message()
```

# `language_code`
*optional* 

```elixir
@callback language_code(any()) :: message()
```

# `list_builder`
*optional* 

```elixir
@callback list_builder() :: message()
```

# `list_builder_field_exception`
*optional* 

```elixir
@callback list_builder_field_exception() :: message()
```

# `list_builder_type`
*optional* 

```elixir
@callback list_builder_type() :: message()
```

# `location`
*optional* 

```elixir
@callback location(any()) :: message()
```

# `location_url`
*optional* 

```elixir
@callback location_url(any()) :: message()
```

# `max_len`
*optional* 

```elixir
@callback max_len(any()) :: message()
```

# `max_len_binary`
*optional* 

```elixir
@callback max_len_binary({any(), any()}) :: message()
```

# `max_len_integer`
*optional* 

```elixir
@callback max_len_integer({any(), any()}) :: message()
```

# `max_len_list`
*optional* 

```elixir
@callback max_len_list({any(), any()}) :: message()
```

# `max_len_range`
*optional* 

```elixir
@callback max_len_range({any(), any()}) :: message()
```

# `message_exception`
*optional* 

```elixir
@callback message_exception() :: message()
```

# `message_exception`
*optional* 

```elixir
@callback message_exception(any()) :: message()
```

# `min_len`
*optional* 

```elixir
@callback min_len(any()) :: message()
```

# `min_len_binary`
*optional* 

```elixir
@callback min_len_binary({any(), any()}) :: message()
```

# `min_len_integer`
*optional* 

```elixir
@callback min_len_integer({any(), any()}) :: message()
```

# `min_len_list`
*optional* 

```elixir
@callback min_len_list({any(), any()}) :: message()
```

# `min_len_range`
*optional* 

```elixir
@callback min_len_range({any(), any()}) :: message()
```

# `naive_datetime`
*optional* 

```elixir
@callback naive_datetime(any()) :: message()
```

# `not_empty`
*optional* 

```elixir
@callback not_empty(any()) :: message()
```

# `not_empty_binary`
*optional* 

```elixir
@callback not_empty_binary(any()) :: message()
```

# `not_empty_list`
*optional* 

```elixir
@callback not_empty_list(any()) :: message()
```

# `not_empty_map`
*optional* 

```elixir
@callback not_empty_map(any()) :: message()
```

# `not_empty_string`
*optional* 

```elixir
@callback not_empty_string(any()) :: message()
```

# `not_flatten_empty`
*optional* 

```elixir
@callback not_flatten_empty(any()) :: message()
```

# `not_flatten_empty_item`
*optional* 

```elixir
@callback not_flatten_empty_item(any()) :: message()
```

# `past_datetime`
*optional* 

```elixir
@callback past_datetime(any()) :: message()
```

# `port_number`
*optional* 

```elixir
@callback port_number(any()) :: message()
```

# `queue`
*optional* 

```elixir
@callback queue(any()) :: message()
```

# `range`
*optional* 

```elixir
@callback range(any()) :: message()
```

# `record`
*optional* 

```elixir
@callback record(any()) :: message()
```

# `regex`
*optional* 

```elixir
@callback regex(any()) :: message()
```

# `register_struct`
*optional* 

```elixir
@callback register_struct() :: message()
```

# `required_fields`
*optional* 

```elixir
@callback required_fields() :: message()
```

# `semver`
*optional* 

```elixir
@callback semver(any()) :: message()
```

# `slug`
*optional* 

```elixir
@callback slug(any()) :: message()
```

# `some_string_float`
*optional* 

```elixir
@callback some_string_float(any()) :: message()
```

# `some_string_integer`
*optional* 

```elixir
@callback some_string_integer(any()) :: message()
```

# `string_boolean`
*optional* 

```elixir
@callback string_boolean(any()) :: message()
```

# `string_float`
*optional* 

```elixir
@callback string_float(any()) :: message()
```

# `string_integer`
*optional* 

```elixir
@callback string_integer(any()) :: message()
```

# `tell`
*optional* 

```elixir
@callback tell(any()) :: message()
```

# `time_struct`
*optional* 

```elixir
@callback time_struct(any()) :: message()
```

# `url`
*optional* 

```elixir
@callback url(any()) :: message()
```

# `url_gethostbyname`
*optional* 

```elixir
@callback url_gethostbyname(any()) :: message()
```

# `url_host`
*optional* 

```elixir
@callback url_host(any()) :: message()
```

# `url_scheme`
*optional* 

```elixir
@callback url_scheme(any()) :: message()
```

# `username`
*optional* 

```elixir
@callback username(any()) :: message()
```

# `utc_datetime`
*optional* 

```elixir
@callback utc_datetime(any()) :: message()
```

# `uuid`
*optional* 

```elixir
@callback uuid(any()) :: message()
```

# `validate_unexpected`
*optional* 

```elixir
@callback validate_unexpected(any()) :: message()
```

# `authorized_fields`

# `builder`

# `check_dependent_keys`

# `convert_enum_output`

# `custom`

# `date_binary`

# `date_struct`

# `datetime`

# `domain_field_status`

# `each`

# `either`

# `email`

# `email_r`

# `enum`

# `equal`

# `field`

# `field_type`

# `force_domain_field_status`

# `full_name`

# `future_datetime`

# `hex_color`

# `hostname`

# `ip`

# `ipv4`

# `ipv6`

# `is_type`

# `language_code`

# `list_builder`

# `list_builder_field_exception`

# `list_builder_type`

# `location`

# `location_url`

# `max_len`

# `max_len_binary`

# `max_len_integer`

# `max_len_list`

# `max_len_range`

# `message_exception`

# `message_exception`

# `min_len`

# `min_len_binary`

# `min_len_integer`

# `min_len_list`

# `min_len_range`

# `naive_datetime`

# `not_empty`

# `not_empty_binary`

# `not_empty_list`

# `not_empty_map`

# `not_empty_string`

# `not_flatten_empty`

# `not_flatten_empty_item`

# `past_datetime`

# `port_number`

# `queue`

# `range`

# `record`

# `regex`

# `register_struct`

# `required_fields`

# `semver`

# `slug`

# `some_string_float`

# `some_string_integer`

# `string_boolean`

# `string_float`

# `string_integer`

# `tell`

# `time_struct`

# `translated_message`

# `translated_message`

# `url`

# `url_gethostbyname`

# `url_host`

# `url_scheme`

# `username`

# `utc_datetime`

# `uuid`

# `validate_unexpected`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
