Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update gettext 0.19.1 → 0.26.1 (major) #45

Closed
wants to merge 1 commit into from

Conversation

depfu[bot]
Copy link
Contributor

@depfu depfu bot commented Aug 21, 2024

Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request.

What changed?

✳️ gettext (0.19.1 → 0.26.1) · Repo · Changelog

Release Notes

0.26.1 (from changelog)

  • Address backwards incompatible changes in previous release

0.26.0 (from changelog)

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:

  1. Define a Gettext backend with use Gettext.Backend
  2. 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.
  • Add the Gettext.domain/0 type.

0.25.0 (from changelog)

  • Run merging for mix gettext.extract's POT files even if they are unchanged.
  • Allow Expo 1.0+.

0.24.0 (from changelog)

  • 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

0.23.1 (from changelog)

  • Use the Hex version of the excoveralls dependency.

0.23.0 (from changelog)

  • Add the :custom_flags_to_keep Gettext option.

0.22.3 (from changelog)

  • Fix a bug with extracting translations in Elixir 1.15.0+.

0.22.2 (from changelog)

  • 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.

0.22.1 (from changelog)

  • 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.

0.22.0 (from changelog)

  • 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.

0.21.0 (from changelog)

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.

0.20.0 (from changelog)

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

Does any of this look wrong? Please let us know.

Commits

See the full diff on Github. The new version differs by more commits than we can show here.

🆕 expo (added, 1.0.0)


👉 No CI detected

You don't seem to have any Continuous Integration service set up!

Without a service that will test the Depfu branches and pull requests, we can't inform you if incoming updates actually work with your app. We think that this degrades the service we're trying to provide down to a point where it is more or less meaningless.

This is fine if you just want to give Depfu a quick try. If you want to really let Depfu help you keep your app up-to-date, we recommend setting up a CI system:

* [Circle CI](https://circleci.com), [Semaphore ](https://semaphoreci.com) and [Github Actions](https://docs.github.com/actions) are all excellent options. * If you use something like Jenkins, make sure that you're using the Github integration correctly so that it reports status data back to Github. * If you have already set up a CI for this repository, you might need to check your configuration. Make sure it will run on all new branches. If you don’t want it to run on every branch, you can whitelist branches starting with `depfu/`.

Depfu Status

Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.

All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)

@depfu depfu bot added the depfu label Aug 21, 2024
Copy link
Contributor Author

depfu bot commented Nov 14, 2024

Closed in favor of #46.

@depfu depfu bot closed this Nov 14, 2024
@depfu depfu bot deleted the depfu/update/elixir/gettext-0.26.1 branch November 14, 2024 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants