Skip to main content

i18ntools helps translate Java properties i18n files using Azure Cognitive Services Translator

Project description

i18ntools

Translate i18n Java properties files to desired language(s).

DescriptionInstallationUsageLicense

Description

i18ntools is a collection of Python scripts to help translate your Java properties internationalization files using Azure Cognitive Services Translator.

What does each script do?

  • translate.py translates an entire i18n Java properties file into a new i18n Java properties file of a different language.
  • translate_missing.py translates the messages in an i18n Java properties file that are missing from an i18n Java properties file of a different language. The missing messages will be appended at the end of the output file unless the --sort option is used. Note: using the --sort option will delete comments in the output file that are not present in the input file.
  • parse_i18n_file.py reads an i18n Java properties file and returns the data as a dictionary.
  • sort_i18n_file.py sorts the messages in a given i18n Java properties file so that they are in the same order as the messages in a different i18n Java properties file. Using this script will delete comments in the sorted output file that are not present in the input file.

Installation

You can install the i18ntools package using pip:

python -m pip install i18ntools

i18ntools officially supports Python 3.10+.

It is recommended to install i18ntools in a virtual environment rather than being installed globally:

python -m venv i18n_env
source i18n_env/bin/activate
python -m pip install i18ntools

When this package is installed, CLI executables of the scripts will be installed on the path of your virtual environment.

translate --help
translate-missing --help
parse-i18n-file --help
sort-i18n-file --help

Usage

Before using translate.py or translate_missing.py, your Azure API secret key must be set in an environment variable named TRANSLATOR_API_SUBSCRIPTION_KEY.

export TRANSLATOR_API_SUBSCRIPTION_KEY=<your_key>

You can accomplish this on Windows with the following command:

C:\>set TRANSLATOR_API_SUBSCRIPTION_KEY=<your_key>

Suppose you have the following in a file named /home/docs/example.properties:

default.invalid.min.message=Property [{0}] of class [{1}] with value [{2}] is less than minimum value [{3}]

# Track 4 on Expert In A Dying Field
TheBeths.YourSide.lyrics=I want to see you knocking at the door. \
    I wanna leave you out there waiting in the downpour. \
    Singing that you’re sorry, dripping on the hall floor.
instructor.submitWithCustomTime.customSubmitTS.missing.error=The customSubmitTS parameter is missing. \
    It must be present and of type Date.

# SessionItem.itemID is the first parameter
instructorService.removeSession.success={0} session removed.

handshake.register.suspended.error=The trial period has ended for your account \
    and you can no longer use the application.
handshake.register.disabledException.error=Instructor is disabled

When you run:

translate -i=/home/docs/example.properties -t=es

Then a new file named /home/docs/example_es.properties will be saved and contain Spanish translations of the input file, with the comments preserved:

default.invalid.min.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] es menor que el valor mínimo [{3}]

# Track 4 on Expert In A Dying Field
TheBeths.YourSide.lyrics=Quiero verte llamando a la puerta. \
    Quiero dejarte ahí afuera esperando bajo el aguacero. \
    Cantando que lo sientes, goteando en el piso del pasillo.
instructor.submitWithCustomTime.customSubmitTS.missing.error=Falta el parámetro customSubmitTS. \
    Debe estar presente y ser de tipo Fecha.

# SessionItem.itemID is the first parameter
instructorService.removeSession.success={0} sesión eliminada.

handshake.register.suspended.error=El período de prueba ha finalizado para su cuenta \
    y ya no puede usar la aplicación.
handshake.register.disabledException.error=El instructor está deshabilitado

Options

These are the options for translate.py. Details about how to use each file can be found by running it with the --help flag.

Key Alias Description Default
--help -h All available options. /
--region -r Region of the Azure translator resource. eastus2
--input_file [required] -i Path to a .properties file to translate. /
--from_lang -f From which language you want to translate. en
--to [required] -t To which language you want to translate. For example, use de to translate to German. /
--output_file -o Path where the translated .properties file will be saved. Overwrites any existing file. input_file with the output language appended to the filename; i.e., messages.properties would become messages_de.properties.

Translate multiple files

If you want to tranlsate multiple entire files, you can create a Python file that imports the i18ntools.translate module and calls translate_file:

from i18ntools.translate import translate_file


files = [
    "app/Admin/i18n/messageBundle.properties",
    "app/Device/crud/i18n/messageBundle.properties",
    "app/Login/i18n/messageBundle.properties",
]

output_lang = "es"

for input_file in files:
    translate_file(input_file, output_lang)

If you want to tranlsate missing messages from multiple files, you can create a Python file that imports the i18ntools.translate_missing module and calls translate_missing_messages:

from i18ntools.translate_missing import translate_missing_messages


files = [
    "app/Admin/i18n/messageBundle.properties",
    "app/Device/crud/i18n/messageBundle.properties",
    "app/Login/i18n/messageBundle.properties",
]

for input_file in files:
    # This assumes the following files exist:
    # app/Admin/i18n/messageBundle_es.properties
    # app/Device/crud/i18n/messageBundle_es.properties
    # app/Login/i18n/messageBundle_es.properties
    translate_missing_messages(input_file, output_lang="es", sort_file=True)

Obtaining API keys

  • Azure
    • Follow the instructions here.

License

Contribute

Contributions are more than welcome. Please see the contribution instructions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

i18ntools-0.2.2.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

i18ntools-0.2.2-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file i18ntools-0.2.2.tar.gz.

File metadata

  • Download URL: i18ntools-0.2.2.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for i18ntools-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c0705ba042e7d52b317d9599989d8dba345ca89c2d86ea5fd0fd7d75000772b9
MD5 6d09c7e8523f71d6ddbe532bc1235924
BLAKE2b-256 88143a03a885799069f8a1214dbe3922a765d47de2c52839b7ccf2a30b453710

See more details on using hashes here.

Provenance

The following attestation bundles were made for i18ntools-0.2.2.tar.gz:

Publisher: publish.yaml on hypercision/i18ntools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file i18ntools-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: i18ntools-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for i18ntools-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 42469c2dbed673526432b64207b135919ca83dbc75f92f5a32b7b00aea216128
MD5 9a5cb6060982e65c059b36e4a8e39c8a
BLAKE2b-256 207586ec3aceb39b5b6c753b88cac52431529166954450251d8dbf2e057ec4d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for i18ntools-0.2.2-py3-none-any.whl:

Publisher: publish.yaml on hypercision/i18ntools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page