Exception raised when the :locale_cache_dir or :otp_app
application environment keys are misconfigured.
Three failure modes:
:relative_path—:locale_cache_diris a relative string and no:otp_appis configured to anchor it. A relative path with no anchor resolves against the BEAM's current working directory, which differs betweenmixtasks (CWD = project root),mix test, and a release (CWD = release root) — one value cannot be correct in all phases.:invalid_form—:locale_cache_diris set but is not a string.:invalid_otp_app—:otp_appis set but is not an atom.
Supported configurations
Three forms are accepted:
:otp_apponly (recommended) — caches inApplication.app_dir(<otp_app>, "priv/localize/locales"):config :localize, otp_app: :my_app:otp_app+ relative:locale_cache_dir— caches inApplication.app_dir(<otp_app>, <relative>):config :localize, otp_app: :my_app, locale_cache_dir: "priv/i18n/cache"Absolute
:locale_cache_dir— used verbatim;:otp_appis ignored:config :localize, locale_cache_dir: "/var/lib/localize/locales"
:otp_app follows the Elixir/Phoenix/Ecto/Gettext convention.
Application.app_dir/2 is re-resolved at every read, so the same
config value produces the correct path in mix tasks
(_build/<env>/lib/<app>/priv/...) and in releases
(/path/to/release/lib/<app>-X.Y.Z/priv/...) without per-phase
duplication.