Skip to main content

zope.app.locales

This 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.locales provides a utility that can extract messages from all three and write them to a standard gettext template (pot file).

Usage

Version 4.2 does not contain any *.mo files. They are the compiled translation files (*.po). (Future versions will contain them again.)

To generate or update *.mo files on the fly set the following environment variable:

zope_i18n_compile_mo_files=True

To restrict the allowed languages set zope_i18n_allowed_languages to a list of languages. Example:

zope_i18n_allowed_languages=de,en,es,fr

Detailed Documentation

Internationalization (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) Files

Whenever 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, execute i18nextract.py from the utilities directory of your Zope 3 checkout:

$ python utilities/i18nextract.py -d zope -p src/zope -o app/locales

This will update the zope.pot file. Make sure that the checkout’s src directory is part of your PYTHONPATH environment variable.

After that, you need to merge those changes to all existing translations. You can do that by executing the i18nmergeall.py script from the utilities directory of your Zope 3 checkout:

$ python utilities/i18nmergeall.py -l src/zope/app/locales

Translating

To translate messages you need to do the following steps:

  1. 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 to

    1. create a directory

      src/zope/app/locales/<lang_code>/LC_MESSAGES

      with 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’).

    2. copy the zope.pot template file to <lang_code>/LC_MESSAGES/zope.po.

    3. edit the PO header of the newly created zope.po file and fill in all the necessary information.

  2. Translate messages within the PO file. Make sure the gettext syntax stays intact. Tools like poEdit and KBabel can help you.

  3. Finally, when you’re done translating, compile the PO file to its binary equivalent using the msgfmt tool:

    $ cd <lang_code>/LC_MESSAGES $ msgfmt -o zope.mo zope.po

CHANGES

6.0 (2025-09-12)

  • Replace pkg_resources namespace with PEP 420 native namespace.

5.1 (2025-08-08)

  • Add support for Python 3.12, 3.13.

  • Drop support for Python 3.7, 3.8.

  • Fix one pt_BR translation. (#21)

5.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 *.mo files from the repository and document in the README how to generate them on the fly. (#7)

  • Automatically create *.mo files during the release process so this release will again contain *.mo files.

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 *.mo files.

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 from z3c.recipe.i18n. (#11)

  • Prevent POT files from collecting duplicate location specifiers over time. (#12)

4.0.1 (2018-06-29)

  • Recompile the *.mo translation 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 be unicode. 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 in configure.zcml, require the necessary packages via a zcml extra, added tests for zcml.

  • Using Python’s doctest module instead of depreacted zope.testing.doctest.

3.6.2 (2010-07-31)

  • Updated copyright to Zope Foundation, even in pot template.

  • Updated e-mail address in pot template to current address of zope mailing list.

  • Added missing test dependency on zope.i18n.

3.6.1 (2010-05-17)

  • Updated Dutch and German translations.

3.6.0 (2009-12-28)

  • Added configure.zcml which registers the translations in the package. So the package contains its configuration. (Till now it was done in zope.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 an extract extras_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 .pt files.

  • Updated Dutch translation

3.4.4 (2008-03-05)

  • Updated Spanish translation

3.4.3 (2008-02-20)

  • Updated Spanish translation

  • Updated Japanese translation

3.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 translation

3.4.0 (2007-10-25)

  • Folded the i18nextract script into zope.app.locales.extract and exposed it as a console script entry point.

3.4.0a1 (2007-04-22)

  • Initial release as a separate project, corresponds to zope.app.locales from Zope 3.4.0a1

Release files for zope.app.locales 6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zope.app.locales 6.0
File Size Uploaded
zope_app_locales-6.0.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for zope.app.locales 6.0
File Interpreter ABI Platform
zope_app_locales-6.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.4 MB

Release files / zope_app_locales-6.0.tar.gz

Download URL zope_app_locales-6.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
2a09f9036d1e9e50943aa83584b90c8708b64238398feb4394a7d5344614d761
BLAKE2b-256 checksum
How to use checksums
2c0925e94b345dff0bd975b14ce16a81ee43190df7d6525e63aea4c068f94e13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.11

Release files / zope_app_locales-6.0-py3-none-any.whl

Download URL zope_app_locales-6.0-py3-none-any.whl
Size 1.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
3c29d7a5dee1ef94cb5c954c6feb219daac9ba51c9061125ffd514bbafa625fe
BLAKE2b-256 checksum
How to use checksums
4b9c231e5cb457bd07f7210eab04587df00bd16a85c17572bbe8aae1aaf3bb86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.11

Release history Release notifications | RSS feed

This release

6.0 This release

2 release files

5.1

2 release files

5.0

2 release files

4.3

2 release files

4.2

2 release files

4.1

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.7.5

1 release file

3.7.4

1 release file

3.7.3

1 release file

3.7.2

1 release file

3.7.1

1 release file

3.7.0

1 release file

3.6.2

1 release file

3.6.1

1 release file

3.6.0

1 release file

3.5.2

1 release file

3.5.1

1 release file

3.5.0

1 release file

3.4.5

1 release file

3.4.4

1 release file

3.4.3

1 release file

3.4.2

1 release file

3.4.1

1 release file

3.4.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page