Skip to content

Latest commit

 

History

History
326 lines (237 loc) · 11.6 KB

CHANGELOG.md

File metadata and controls

326 lines (237 loc) · 11.6 KB

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:

    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 msgids 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 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 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