327 lines
12 KiB
Markdown
327 lines
12 KiB
Markdown
# Changelog
|
|
|
|
## v0.24.0
|
|
|
|
* Handle singular and plural messages with the same `msgid` as the same
|
|
message.
|
|
|
|
This change produces a `Expo.PO.DuplicateMessagesError` if you already have
|
|
messages with the same singular `msgid`. This can be solved by calling the
|
|
`expo.msguniq` mix task on your `.po` file:
|
|
|
|
```bash
|
|
mix expo.msguniq \
|
|
priv/gettext/LOCALE/LC_MESSAGES/DOMAIN.po \
|
|
--output-file priv/gettext/LOCALE/LC_MESSAGES/DOMAIN.po
|
|
```
|
|
|
|
## v0.23.1
|
|
|
|
* Use the Hex version of the excoveralls dependency.
|
|
|
|
## v0.23.0
|
|
|
|
* Add the `:custom_flags_to_keep` Gettext option.
|
|
|
|
## v0.22.3
|
|
|
|
* Fix a bug with extracting translations in Elixir 1.15.0+.
|
|
|
|
## v0.22.2
|
|
|
|
* Use `Code.ensure_compiled/1` instead of `Code.ensure_loaded/1` for Elixir < 1.12 compatibility.
|
|
* Ensure all modules are properly loaded for `mix gettext.merge`.
|
|
* Fix a "protected" check when extracting translations.
|
|
|
|
## v0.22.1
|
|
|
|
* Put correct `Plural-Forms` header on `gettext.merge` for the first time.
|
|
* Fix extractor crash in case of conflicting backends.
|
|
* Fix to use the correct plural forms for multiple languages.
|
|
* Update expo to `~> 0.4.0` to fix issues with empty `msgstr`.
|
|
|
|
## v0.22.0
|
|
|
|
* Deprecate (with a warning) the `--plural-forms` CLI option and the `:plural_forms` option in favor of `--plural-forms-header` and `:plural_forms_header`.
|
|
* Supply the `Plural-Forms` header to `Gettext.Plural` callbacks.
|
|
* Bump Expo requirement to `~> 0.3.0`.
|
|
* Add the types:
|
|
* `Gettext.Interpolation.bindings/0`
|
|
* `Gettext.Error.t/0`
|
|
* `Gettext.Plural.locale/0`
|
|
* `Gettext.Plural.pluralization_context/0`
|
|
* `Gettext.Plural.plural_info/0`
|
|
* Add the optional callbacks `Gettext.Plural.init/1` and `Gettext.Plural.plural_forms_header/1`.
|
|
|
|
### Bug fixes
|
|
|
|
* Fix `--check-up-to-date` with `msgid`s split in different ways.
|
|
* Don't write the same file more than once in references when using `write_reference_line_numbers: false`.
|
|
|
|
## v0.21.0
|
|
|
|
### New features and improvements
|
|
|
|
* Bump Elixir requirement to 1.11+.
|
|
|
|
* Extract parsing and dumping of PO/POT files to the
|
|
[expo](https://github.com/elixir-gettext/expo) library, and start depending
|
|
on that.
|
|
|
|
* Support marking messages as obsolete with the new `:on_obsolete` Gettext
|
|
configuration option.
|
|
|
|
* Add the `:write_reference_line_numbers` Gettext configuration option.
|
|
|
|
* Save the previous messages when there's a fuzzy match, with the new
|
|
`:store_previous_message_on_fuzzy_match` Gettext configuration option.
|
|
|
|
* Change `:sort_by_msgid` to accept `false`, `:case_sensitive`, or
|
|
`:case_insensitive` and deprecate the `true` value.
|
|
|
|
### Bug fixes
|
|
|
|
* Sort messages independent of line splits when dumping PO files.
|
|
|
|
## v0.20.0
|
|
|
|
* Allow `gettext_comment` to be invoked multiple times
|
|
* Dump flags after references in PO files
|
|
* Deprecate `compile.gettext` in favor of `__mix_recompile__?`
|
|
|
|
### Backwards incompatible changes
|
|
|
|
* `handle_missing_translation(locale, domain, msgid, bindings)` callback
|
|
signature was changed to `handle_missing_translation(locale, domain,
|
|
msgctxt, msgid, bindings)` (it receives a new argument called `msgctxt`)
|
|
|
|
* `handle_missing_plural_translation(locale, domain, msgid, msgid_plural, n,
|
|
bindings)` callback signature was changed to
|
|
`handle_missing_plural_translation(locale, domain, msgctxt, msgid,
|
|
msgid_plural, n, bindings)` (it receives a new argument called `msgctxt`)
|
|
|
|
## v0.19.1
|
|
|
|
* Fix warnings on Elixir v1.14+
|
|
* Rename `ex-autogen` to `elixir-autogen` and make sure `elixir-autogen` is
|
|
added to existing messages
|
|
|
|
## v0.19.0
|
|
|
|
* Remove the `:one_module_per_locale` option in favor of `:split_module_by`
|
|
and `:split_module_compilation`
|
|
* Make `Gettext.dngettext/6` bindings argument optional (effectively
|
|
introducing `Gettext.dngettext/5`)
|
|
* Preserve the `fuzzy` message flag when merging
|
|
* Add the `--check-unextracted` flag to `mix gettext.extract`, which is useful
|
|
in CI and similar
|
|
* Place each message reference on its own line in extracted PO files
|
|
* Make the interpolation module customizable via the `:interpolation`
|
|
configuration option
|
|
* Use a different flag to detect autogenerated messages (`ex-autogen`)
|
|
* Update `gettext.extract` to correctly extract on recompilation for Elixir
|
|
1.13+
|
|
|
|
## v0.18.2
|
|
|
|
* Allow plural forms to be set for the `:gettext` application
|
|
* Use `Application.compile_env/3` if available
|
|
|
|
## v0.18.1
|
|
|
|
* Allow default domain to be configurable
|
|
* Improve parallelism when compiling modules
|
|
|
|
## v0.18.0
|
|
|
|
* Allow sorting strings by `msgid`
|
|
* Add `:allowed_locales` to restrict the locales bundled in the backend
|
|
|
|
## v0.17.4
|
|
|
|
* Do not change the return types of `*_noop` macros (regression in v0.17.2 and
|
|
v0.17.3)
|
|
* Fix dialyzer warnings
|
|
|
|
## v0.17.3
|
|
|
|
* Add `lgettext/4` back which was removed in v0.17.2 - note `lgettext/4` is
|
|
private API and may be removed in future once again
|
|
|
|
## v0.17.2
|
|
|
|
* Support `pgettext`
|
|
* Consider extracted comments when merging templates during extraction
|
|
|
|
## v0.17.1
|
|
|
|
* Store the `msgctxt` value in message and dump it when dumping
|
|
messages
|
|
* Fix a bug when dumping references
|
|
* Improve code generation
|
|
* Preserve whitespace in message flags
|
|
|
|
## v0.17.0
|
|
|
|
* Require Elixir 1.6 and later
|
|
* Add stats reporting when merging PO files
|
|
|
|
## v0.16.1
|
|
|
|
* Optimize default locale lookup
|
|
|
|
## v0.16.0
|
|
|
|
* Fix bugs related to expanding arguments to Gettext macros
|
|
* Fix a bug where you couldn't have filenames with colons in them in reference comments
|
|
* Add `handle_missing_translation/4` and `handle_missing_plural_translation/6` callbacks to Gettext backends
|
|
* Fix a bug in `mix gettext.extract`, which was ignoring the `--merge` option
|
|
|
|
## v0.15.0
|
|
|
|
* Generate correct plural forms when dumping new messages in PO files
|
|
* Fix a bug where we were losing translator comments for fuzzy-merged
|
|
messages
|
|
* Don't make an exact match when merging prevent later fuzzy matches
|
|
* Allow multiple messages to fuzzy-match against the same message when
|
|
merging
|
|
* Bump the Elixir requirement to v1.4 and on
|
|
|
|
## v0.14.1
|
|
|
|
* Copy flags from existing messages when merging messages
|
|
|
|
## v0.14.0
|
|
|
|
* Introduce a global locale (per-process) for all Gettext backends
|
|
* Warn when compiling and raise at runtime for missing plural forms
|
|
* Separate flags with commas when dumping and parsing .pot files
|
|
* Add support for extracted comments via `gettext_comment/1`
|
|
* Require Elixir v1.3 and fix warnings
|
|
* Improve compilation time of Gettext backends in roughly 20%
|
|
* Add `:one_module_per_locale` for parallel compilation of backends (requires
|
|
Elixir v1.6)
|
|
* Use the `elixir-format` flag to mark autogenerated messages
|
|
|
|
## v0.13.1
|
|
|
|
* Fix a bug with Dialyzer specs for the `Gettext.Backend.ngettext_noop/2` callback
|
|
* Parse `msgctxt` entries in PO and POT files so that they don't cause syntax
|
|
errors, but ignore them in the parsed result
|
|
|
|
## v0.13.0
|
|
|
|
* Add the `gettext_noop/1`, `dgettext_noop/2`, `ngettext_noop/3`, and
|
|
`dngettext_noop/4` macros to Gettext backends. These macros can be used to
|
|
mark messages for extractions without translating the given string
|
|
|
|
## v0.12.2
|
|
|
|
* Fix a bug where we failed miserably with a "no process" error when
|
|
extracting messages without having the `:gettext` compiler run
|
|
* Slightly revisit the indentation of subsequent literal strings in dumped
|
|
PO(T) files; before, they were dumped one per line, indented one level more
|
|
than the parent message, while now they're indented at the same level as
|
|
the parent message
|
|
|
|
## v0.12.1
|
|
|
|
* Ensure the Gettext application is started before running Mix tasks
|
|
|
|
## v0.12.0
|
|
|
|
* Drop support for Elixir 1.1 and require ~> 1.2
|
|
* Add `:compiler_po_wildcard` to explicitly choose the po files that are
|
|
tracked by the compiler
|
|
* Allow the developer to configure what happens when there are missing
|
|
bindings in the message. The default has been changed to log and return
|
|
the incomplete string instead of raising
|
|
* Move the configuration for the `:gettext` application to compile-time config
|
|
in `project/0` in `mix.exs` (under the `:gettext` key, with configuration
|
|
options `:excluded_refs_from_purging`, `:compiler_po_wildcard` and
|
|
`:fuzzy_threshold`)
|
|
* Show the file name in syntax errors when running `mix gettext.extract` and
|
|
`mix gettext.merge`
|
|
* Don't print tokens as Erlang terms in syntax error when running `mix
|
|
gettext.extract` and `mix gettext.merge`
|
|
* Allow duplicate interpolation keys
|
|
* Raise when the domain is not a binary at compile-time
|
|
* Fix many dialyzer warnings
|
|
* No longer traverse directories given to `gettext.merge` recursively (from
|
|
now on `gettext.merge` expect specific locale directories)
|
|
* Re enable the "compile" task in `mix gettext.extract`
|
|
* Ensure messages are tracked to the proper child app when using umbrella
|
|
apps
|
|
|
|
## v0.11.0
|
|
|
|
* Polish so many docs!
|
|
* Make an error in `Gettext.put_locale/2` clearer
|
|
* Pluralize `x_Y` locales as `x`, but fail with
|
|
`Gettext.Plural.UnknownLocaleError` for any other unknown locale
|
|
* Add a `Gettext.Backend` behaviour (automatically implemented if a module
|
|
calls `use Gettext`)
|
|
* Allow whitelisting of references via the `:excluded_refs_from_purging` option
|
|
in the `:gettext` application config
|
|
|
|
## v0.10.0
|
|
|
|
* Emit warnings when the domain passed to one of the `*gettext` macros has
|
|
slashes in it (as we don't support domains in subdirectories).
|
|
* Discard dangling comments when parsing/dumping PO(T) files (dangling
|
|
comments are comments that are not followed by a transaction they can be
|
|
attached to).
|
|
* Updated informative comments for newly generated PO/POT files.
|
|
|
|
## v0.9.0
|
|
|
|
* Strip `##` comments from POT files when they're being merged into PO files;
|
|
these comments are comments meant to be generated by tools or directed at
|
|
developers (so they have no use for translators in PO files).
|
|
* Add informative comments at the top of newly generated PO/POT files.
|
|
* Add `Gettext.known_locales/1`
|
|
* Fix a bug with PO parsing when the PO file starts with a
|
|
[BOM](https://en.wikipedia.org/wiki/Byte_order_mark) character (which broke
|
|
the parser, now a warning is issued).
|
|
|
|
## v0.8.0
|
|
|
|
* Fix a bug with the `*gettext` macros, which raised an error when given
|
|
compile-time strings in the form of `~s`/`~S` sigils.
|
|
* Create missing locale directories (for example, `en/LC_MESSAGES`) when
|
|
running the `gettext.merge` Mix task.
|
|
* Fallback to default messages (that is, the `msgid`) when the `msgstr`
|
|
(or one or more `msgstr` strings for plural messages) is empty.
|
|
|
|
## v0.7.0
|
|
|
|
* When dumping PO files, dump as many references as possible on one line,
|
|
wrapping at the 80th column
|
|
* Parse multiple references in the same reference comment
|
|
* Remove `Gettext.locale/0-1` and `Gettext.with_locale/2` in favour of
|
|
`Gettext.get_locale/1`, `Gettext.put_locale/2`, and `Gettext.with_locale/3`
|
|
which now work by setting/getting the locale on a per-backend basis (instead
|
|
of a global one)
|
|
* Remove the `:default_locale` config option for the `:gettext` application in
|
|
favour of configuring the `:default_locale` for backends tied to their
|
|
`:otp_app` (for example, `config :my_app, MyApp.Gettext, default_locale:
|
|
"pt_BR"`)
|
|
|
|
## v0.6.1
|
|
|
|
* Fix a bug with the `mix gettext.merge` task that was failing in Elixir
|
|
v1.1.1 because `0.5 in 0..1` returns `false` with it
|
|
|
|
## v0.6.0
|
|
|
|
* Add a `:flags` field to the `Gettext.PO.Translation` and
|
|
`Gettext.PO.PluralTranslation` structs
|
|
* Add support for fuzzy matching messages in `gettext.merge` and
|
|
`gettext.extract --merge`
|
|
* Add the `:fuzzy_threshold` configuration option for the `:gettext`
|
|
application
|
|
|
|
## v0.5.0
|
|
|
|
* Initial release
|