mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-06 12:00:13 +01:00
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@71139 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
122 lines
3.8 KiB
ReStructuredText
122 lines
3.8 KiB
ReStructuredText
.. include:: headings.inc
|
|
|
|
|
|
.. _internationalization:
|
|
.. _I18N:
|
|
.. _localization:
|
|
.. _L10N:
|
|
|
|
|
|
==================================================
|
|
|phoenix_title| **Internationalization Overview**
|
|
==================================================
|
|
|
|
"Internationalization" (often referred to as i18n) is the process to change an
|
|
application so that all user visible texts are translated to the user selected
|
|
language and that things like dates, money amounts and numbers in general are
|
|
shown in a format the user is familiar with/or used to.
|
|
|
|
The easiest way to show what is needed is by using a little code sample.
|
|
|
|
|
|
Text translation
|
|
================
|
|
|
|
Prepare the source code
|
|
-----------------------
|
|
|
|
Text translation in Python is done using gettext [1]_ , to ensure that all
|
|
wxPython labels are also translated we will use :class:`Locale` and
|
|
:func:`GetTranslation` .
|
|
|
|
How to prepare your source code to enable translation of texts::
|
|
|
|
aString = _(u"This is a string which will be translated")
|
|
|
|
|
|
As you can see it is very simple, you just enclose the text with the translation
|
|
function "_()", obviously there is a bit more to it, see below.
|
|
|
|
Enabling I18N for a whole application you would do some setup in the application
|
|
file along the following lines:
|
|
|
|
.. literalinclude:: _downloads/i18nwxapp/app_base.py
|
|
:lines: 25-27
|
|
|
|
|
|
Here we setup the "_" translation function and making it available application
|
|
by adding it to builtin.
|
|
|
|
The code required to change to a different language is as follows:
|
|
|
|
.. literalinclude:: _downloads/i18nwxapp/app_base.py
|
|
:pyobject: BaseApp.updateLanguage
|
|
|
|
|
|
Do the actual translation work
|
|
------------------------------
|
|
|
|
You need to extract all the text strings marked by the "_" function, a little
|
|
script `geni18n.py` is in the :download:`downloadable zip file <_downloads/i18nwxapp/i18nwxapp.zip>`,
|
|
it will extract all the strings and generate a ``.pot`` file, which is put to
|
|
the locale folder. The `geni18n.py` script will also generate the ``.mo`` files
|
|
for defined languages.
|
|
|
|
The ``.pot`` file is then provided to the translators and they use it to
|
|
generate a ``.po`` file for the language they translate too or they can also use
|
|
the ``.pot`` file to merge new/changed text strings to an existing ``.po`` file.
|
|
|
|
To do the actual translation we recomment `poEdit` [2]_ , it allows you to
|
|
create or update a translation catalog (``.po`` file) from the ``.pot`` file.
|
|
|
|
|
|
Sample application
|
|
------------------
|
|
|
|
In the :download:`downloadable zip file <_downloads/i18nwxapp/i18nwxapp.zip>`
|
|
we included a small sample application showing the above in action.
|
|
|
|
- `app_base.py` contains the initialization code
|
|
- `sampleapp.py` is the main frame/application, just run this to see things in action
|
|
- `geni18n.py` is the script to generate the ``.pot`` file and it also generates the ``.mo`` files.
|
|
|
|
.. note::
|
|
The application has a button which displays a file dialog, as wxPython uses
|
|
a native widget for this the text are shown in the operating system language
|
|
and not the language which is selected in `app_base.py`.
|
|
|
|
|
|
Localization overview
|
|
=====================
|
|
|
|
"Localization", often referred to as "L10n", is the process to adapt the display
|
|
of dates and numbers to local custom.
|
|
|
|
E.g. "4/5/2012" would for an American mean April 5. 2012, but for most Europeans
|
|
it would be 4. May 2012.
|
|
|
|
|
|
Localize dates
|
|
==============
|
|
|
|
.. todo:: to be written
|
|
|
|
|
|
Localize numbers
|
|
================
|
|
|
|
.. todo:: to be written
|
|
|
|
|
|
Additional resources
|
|
====================
|
|
|
|
- http://zetcode.com/wxpython/in18/
|
|
- http://wiki.wxpython.org/Internationalization
|
|
- http://en.wikipedia.org/wiki/Internationalization_and_localization
|
|
|
|
|
|
.. rubric:: Footnotes
|
|
|
|
.. [1] gettext - http://docs.python.org/library/gettext.html
|
|
.. [2] poEdit - http://www.poedit.net/ |