- Allow plural forms to be set for the gettext application
- Use Application.compile_env if available
- Allow default domain to be configurable
- Improve parallelism when compiling modules
- Allow sorting strings by
msgid
- Add
:allowed_locales
to restrict the locales bundled in the backend
- Do not change the return types of
*_noop
macros (regression in v0.17.2 and v0.17.3) - Fix dialyzer warnings
- Add
lgettext/4
back which was removed in v0.17.2 - notelgettext/4
is private API and may be removed in future once again
- Support
pgettext
- Consider extracted comments when merging templates during extraction
- Store the
msgctxt
value in translation and dump it when dumping translations - Fix a bug when dumping references
- Improve code generation
- Preserve whitespace in translation flags
- Require Elixir 1.6 and later
- Add stats reporting when merging PO files
- Optimize default locale lookup
- 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
andhandle_missing_plural_translation/6
callbacks to Gettext backends - Fix a bug in
mix gettext.extract
, which was ignoring the--merge
option
- Generate correct plural forms when dumping new translations in PO files
- Fix a bug where we were losing translator comments for fuzzy-merged translations
- Don't make an exact match when merging prevent later fuzzy matches
- Allow multiple translations to fuzzy-match against the same translation when merging
- Bump the Elixir requirement to v1.4 and on
- Copy flags from existing translations when merging translations
- 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 translations
- 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
- Add the
gettext_noop/1
,dgettext_noop/2
,ngettext_noop/3
, anddngettext_noop/4
macros to Gettext backends; these macros can be used to mark translations for extractions without translating the given string
- Fix a bug where we failed miserably with a "no process" error when extracting
translations 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 translation, while now they're indented at the same level as the parent translation
- Ensure the Gettext application is started before running mix tasks
- 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 translation. 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 inproject/0
inmix.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
andmix gettext.merge
- Don't print tokens as Erlang terms in syntax error when running
mix gettext.extract
andmix 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 ongettext.merge
expect specific locale directories) - Re enable the "compile" task in
mix gettext.extract
- Ensure translations are tracked to the proper child app when using umbrella apps
- Polish so many docs!
- Make an error in
Gettext.put_locale/2
clearer - Pluralize
x_Y
locales asx
, but fail withGettext.Plural.UnknownLocaleError
for any other unknown locale - Add a
Gettext.Backend
behaviour (automatically implemented if a module callsuse Gettext
) - Allow whitelisting of references via the
:excluded_refs_from_purging
option in the:gettext
application config
- 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.
- 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).
- 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 thegettext.merge
Mix task. - Fallback to default translations (that is, the
msgid
) when themsgstr
(or one or moremsgstr
strings for plural translations) is empty.
- 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
andGettext.with_locale/2
in favour ofGettext.get_locale/1
,Gettext.put_locale/2
, andGettext.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"
)
- Fix a bug with the
mix gettext.merge
task that was failing in Elixir v1.1.1 because0.5 in 0..1
returnsfalse
with it
- Add a
:flags
field to theGettext.PO.Translation
andGettext.PO.PluralTranslation
structs - Add support for fuzzy matching translations in
gettext.merge
andgettext.extract --merge
- Add the
:fuzzy_threshold
configuration option for the:gettext
application
- Initial release