# EctoGettext
EctoGettext - library for localization Ecto validation errors with using Gettext
## Installation
The package can be installed as:
1. Add ecto_gettext to your list of dependencies in `mix.exs`:
def deps do
[{:ecto_gettext, "~> 0.0.1"}]
end
2. Ensure ecto_gettext is started before your application:
def application do
[applications: [:ecto_gettext]]
end
## Usage
1. Create Gettext module (if it is not):
```elixir
defmodule MyApp.Gettext do
use Gettext, otp_app: :my_app
end
```
2. Add this line into "view" section in the web/web.ex (if you use phoenix framework):
```elixir
import EctoGettext
```
3. Create attributes.po and errors.po files in priv/gettext/_locale_/LC_MESSAGES/
```elixir
# attributes.po - file with Ecto attributes such as username, email, password, etc.
msgid "username"
msgstr "имя пользователя"
msgid "password"
msgstr "пароль"
```
```elixir
# errors.po - file with Ecto validation errors
# Please use only %{count} interpolation, because it is a hard rule
msgid "can't be blank"
msgstr "не может быть пустым"
msgid "should be at least %{count} characters"
msgstr "не может быть короче %{count} символов"
msgid "should be at most %{count} characters"
msgstr "не может быть длиннее %{count} символов"
msgid "has invalid format"
msgstr "имеет неверный формат"
```
4. Use it in your forms:
```elixir
# Example with slim templates
= for {attr, message} <- localize_validations(MyApp.Gettext, f.errors) do
li
= humanize(attr) <> " "
= message
```