Metadata-Version: 2.0
Name: zope.app.locales
Version: 4.1
Summary: Zope locale extraction and management utilities
Home-page: http://pypi.python.org/pypi/zope.app.locales
Author: Zope Corporation and Contributors
Author-email: zope-dev@zope.org
License: ZPL 2.1
Keywords: zope3 i18n l10n translation gettext
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Internationalization
Classifier: Framework :: Zope :: 3
Provides-Extra: test
Provides-Extra: extract
Provides-Extra: zcml
Requires-Dist: setuptools
Requires-Dist: zope.cachedescriptors
Requires-Dist: zope.i18nmessageid (>=4.1.0)
Requires-Dist: zope.interface
Provides-Extra: extract
Requires-Dist: zope.tal; extra == 'extract'
Provides-Extra: test
Requires-Dist: zope.i18n; extra == 'test'
Requires-Dist: zope.security; extra == 'test'
Requires-Dist: zope.tal; extra == 'test'
Requires-Dist: zope.testing; extra == 'test'
Requires-Dist: zope.testrunner; extra == 'test'
Provides-Extra: zcml
Requires-Dist: zope.configuration; extra == 'zcml'
Requires-Dist: zope.i18n; extra == 'zcml'

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


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

   a) 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').

   b) copy the ``zope.pot`` template file to
      ``<lang_code>/LC_MESSAGES/zope.po``.

   c) 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
=======

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 <https://github.com/zopefoundation/zope.app.locales/pull/11>`_)

- Prevent POT files from collecting duplicate location specifiers over time.
  (`#12 <https://github.com/zopefoundation/zope.app.locales/pull/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


