This release changes the way you use Gettext. We're not crazy: it does so because doing so makes it a lot faster to compile projects that use Gettext.
The changes you have to make to your code are minimal, and the old behavior is deprecated so that you will be guided on how to update.
The reason for this change is that it removes compile-time dependencies from modules that used to import a Gettext backend. In applications such as Phoenix applications, where every view and controller imports the Gettext backend, this change means a lot less compilation when you make translation changes!
Here's the new API. Now, instead of defining a Gettext backend (use Gettext) and then importing that to use its macros, you need to:
Define a Gettext backend with use Gettext.Backend
Import and use its macros with use Gettext, backend: MyApp.Gettext.
Before and After
Before this release, code using Gettext used to look something like this:
defmodule MyApp.Gettext do
use Gettext, otp_app: :my_app
end
defmodule MyAppWeb.Controller do
import MyApp.Gettext
end
This creates a compile-time dependency for every module that imports the Gettext backend.
With this release, the above turns into:
defmodule MyApp.Gettext do
use Gettext.Backend, otp_app: :my_app
end
defmodule MyAppWeb.Controller do
use Gettext, backend: MyApp.Gettext
end
We are also updating Phoenix generators to use the new API.
If you update Gettext and still use use Gettext, otp_app: :my_app to define a backend, Gettext will emit a warning now.
Detailed Changelog
This is a detailed list of the new things introduced in this release:
Add Gettext.Macros, which contains all the macros you know and love (*gettext). It also contains *gettext_with_backend variants to explicitly pass a backend at compile time and keep extraction working.
Document lgettext/5 and lngettext/7 callbacks in Gettext.Backend. These get generated in every Gettext backend.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps gettext from 0.24.0 to 0.26.0.
Changelog
Sourced from gettext's changelog.
... (truncated)
Commits
86d44c6
Release v0.26.0968d85e
Update instructions in the README1ec048c
Only import a subset of Gettext.Macros macrosdf20514
Move tests around70e896f
Remove several TODOsd6e3eb5
Refactor Gettext.Macros to generate less code (#393)0cdb06a
Deprecate "use Gettext" for backends and improve docs (#392)57c6249
Avoid compile-time dependency to Gettext backend (#391)c602ea9
Introduce "use Gettext.Backend" (#390)e6e9fe8
Start v0.26.0-devDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show