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):

       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):

       import EctoGettext
  3. Create attributes.po and errors.po files in priv/gettext/locale/LC_MESSAGES/

       # attributes.po - file with Ecto attributes such as username, email, password, etc.
       msgid "username"
       msgstr "имя пользователя"
    
       msgid "password"
       msgstr "пароль"
       # 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:

       # Example with slim templates
    
       = for {attr, message} <- localize_validations(MyApp.Gettext, f.errors) do
         li
           = humanize(attr) <> " "
           = message