Package: zope.app.locales
zope.app.localesThis package provides some facilities for extracting and managing i18n
messages that occur in Zope software.  More specifically, i18n
messages can occur in Python code, in Page Templates and in ZCML
declarations.zope.app.localesprovides a utility that can
extract messages from all three and write them to a standard gettext
template (potfile).UsageVersion 4.2 does not contain any*.mofiles. They are the compiled
translation files (*.po). (Future versions will contain them again.)To generate or update*.mofiles on the fly set the following environment
variable:zope_i18n_compile_mo_files=TrueTo restrict the allowed languages setzope_i18n_allowed_languagesto a list
of languages. Example:zope_i18n_allowed_languages=de,en,es,frDetailed DocumentationInternationalization (I18n) and Localization (L10n)This document assumes that you have a Zope 3 checkout and the gettext
utilities installed.Creating/Updating Message Catalog Template (POT) FilesWhenever you’ve made a change to Zope that affects the i18n messages,
you need to re-extract i18n messages from the code.  To do that,
executei18nextract.pyfrom theutilitiesdirectory of your
Zope 3 checkout:$ python utilities/i18nextract.py -d zope -p src/zope -o app/localesThis will update thezope.potfile.  Make sure that the checkout’ssrcdirectory is part of yourPYTHONPATHenvironment variable.After that, you need to merge those changes to all existing
translations.  You can do that by executing thei18nmergeall.pyscript from theutilitiesdirectory of your Zope 3 checkout:$ python utilities/i18nmergeall.py -l src/zope/app/localesTranslatingTo translate messages you need to do the following steps:If a translation for your language is already present and you just
want to update, skip ahead to step 2.  If you want to start
translation on a new language, you need tocreate a directorysrc/zope/app/locales/<lang_code>/LC_MESSAGESwith the appropriate code for your language as <lang_code>.
Note that the two letters specifying the language should always
be lower case (e.g. ‘pt’); if you additionally specify a region,
those letters should be upper case (e.g. ‘pt_BR’).copy thezope.pottemplate file to<lang_code>/LC_MESSAGES/zope.po.edit the PO header of the newly createdzope.pofile and
fill in all the necessary information.Translate messages within the PO file.  Make sure the gettext
syntax stays intact.  Tools like poEdit and KBabel can help you.Finally, when you’re done translating, compile the PO file to its
binary equivalent using themsgfmttool:$ cd <lang_code>/LC_MESSAGES
$ msgfmt -o zope.mo zope.poCHANGES5.0 (2023-08-28)Add support for Python 3.11.Drop support for Python 2.7, 3.5, 3.6.4.3 (2022-09-12)Remove*.mofiles from the repository and document in the README how to
generate them on the fly.
(#7)Automatically create*.mofiles during the release process so this
release will again contain*.mofiles.4.2 (2022-06-10)Add support for Python 3.9, 3.10.Make path in ZCML extraction relative.This release does not contain any*.mofiles.4.1 (2019-06-24)Flake8 the code.Add support for Python 3.7, 3.8b1 and PyPy3.Port usage of custom POT file header template here fromz3c.recipe.i18n.
(#11)Prevent POT files from collecting duplicate location specifiers over time.
(#12)4.0.1 (2018-06-29)Recompile the*.motranslation files.4.0.0 (2017-05-02)Add support for Python 3.5 and 3.6 and PyPy.3.7.5 (2016-03-28)Add a test for the zcml_extraction.Remove zope.app.applicationcontrol and zope.app.appsetup dependencies.Add list of supported Python versions to Trove classifiers.3.7.4 (2012-05-14)In version 3.7.2 msgids and default values were forced to beunicode. This was too strict because at least the TAL extractor returns
UTF-8 encoded default values. Fixed this by allowing the default value to
be a string again.3.7.3 (2012-01-06)i18nextract bugfix: _(“msgid”, mapping={…}) does not have a default, just
like _(“msgid”).  Previously it would get a#. Default: ""annotation in
the .pot file.3.7.2 (2011-12-12)Handle Unicode msgids and default values.Consistent sorting of source filenames for each msgid.  Also sort line
numbers numerically, not lexicographically.3.7.1 (2011-12-07)Fix nl translations.Updated Brazilian Portuguese translation [erico_andrei]3.7.0 (2011-03-02)Include zcml dependencies inconfigure.zcml, require the necessary
packages via azcmlextra, added tests for zcml.Using Python’sdoctestmodule instead of depreactedzope.testing.doctest.3.6.2 (2010-07-31)Updated copyright toZope Foundation, even in pot template.Updated e-mail address in pot template to current address of zope
mailing list.Added missing test dependency onzope.i18n.3.6.1 (2010-05-17)Updated Dutch and German translations.3.6.0 (2009-12-28)Addedconfigure.zcmlwhich registers the translations in the
package. So the package contains its configuration. (Till now it was
done inzope.app.zcmlfiles.)3.5.2 (2009-12-22)Updated tests to handle Unicode correctly.Update Japanese Translation (thanks Takeshi Yamamoto).3.5.1 (2009-01-27)Added missing dependency (zope.tal) for tests.3.5.0 (2009-01-26)Moved the dependencies of the extract console script into anextractextras_require to avoid runtime dependencies.Fixed bug #227582 (bad size in zh_CN locale)3.4.5 (2008-07-16)added filePattern parameter for tal_strings to be able to not only parse.ptfiles.Updated Dutch translation3.4.4 (2008-03-05)Updated Spanish translation3.4.3 (2008-02-20)Updated Spanish translationUpdated Japanese translation3.4.2 (2008-02-06)Fixed and updated Russian translation. Fixed issue #186628 (Typos and errors
in russian translation)3.4.1 (2007-12-12)Fixed and updated the french translation3.4.0 (2007-10-25)Folded the i18nextract script intozope.app.locales.extractand
exposed it as a console script entry point.3.4.0a1 (2007-04-22)Initial release as a separate project, corresponds tozope.app.localesfrom Zope 3.4.0a1