ResourceBundle
ResourceBundle is a package that manages internationalization / localization (i18n / l10n) of string resources.
It is inspired by Java's ResourceBundle and accepts the same format as a Java PropertyResourceBundle
.
Note: ResourceBundle is not the pythonic way of internationalization / localization.
This package is only intended to be used if you absolutely have to work with ResourceBundle files
or need a quick working way when porting from Java.
For information on how to do internationalization in python,
see the official documentation.
You can use the ResourceBundle.Converter.to_gettext()
method to convert your ResourceBundle files to gettext po
files.
Installation
The ResourceBundle module can be downloaded from PyPI:
$ python3 -m pip install ResourceBundle
> py -m pip install ResourceBundle
Usage
Assuming you come from Java, you are probably familiar with the ResourceBundle file format.
If not, you can read about it
here.
Get a ResourceBundle instance is by using ResourceBundle.get_bundle(name, locale)
.
import ResourceBundle
bundle = ResourceBundle.get_bundle("Strings", "en")
bundle.get("key")
If the key could not be found in the ResourceBundle the parent ResourceBundles will be searched
until a matching key was found.
If the key is not present in any of its parents a ResourceBundle.exceptions.NotInResourceBundleError
will be raised.
gettext
The ResourceBundle module can convert ResourceBundle files to gettext pot
/ po
files.
This can be done by using the ResourceBundle.Converter.to_gettext()
method.
from ResourceBundle import Converter
Converter.to_gettext(".", ".")
Note however that this step is obsolete if you are using gettext
properly
as this will include automatically extracting strings from your source code with the help of a library like
Babel with its pybabel tool.
The function is only intended as a head start to keep existing translations.