README.md

# 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
      ```