Skip to main content

A Python internationalization (i18n) package

Project description

Pi18n

Pi18n is an internationalization library for Python

Installation

Install using pip

pip install pi18n

Getting started

Pi18n lets you internationalize your Python app in a simple way. It works like this:

  • Provide Pi18n with as many JSON files as languages your app is going to support.

    • Each file will be named with the locale of the language it represents.

    • The content that is going to be placed in the app will be in each of these files, translated into the language that

    the file represents and associated with a code.

    • The way a translation is associated with a code is by a JSON object: each key of the object is the code, and the value

    is the translation associated to the code for every language.

    • Every JSON object of every file must have the same keys.

    • Translations can contain named parameters (placeholders) that will be replaced by a certain value on translation-time. Provide

    as many as needed with this syntax: {param-code}.

  • Instantiate an object of TranslationService class. Its constructor must receive:

    1. The path with the translation files.

    2. The default locale.

  • Call the get method of the TranslationService instance for getting a translation:

    1. Provide the translation code to the get method as the first argument.

    2. Optionally, provide parameters to the translation either as a dict or as keyword arguments.

Usage

1. Place some translation files in your project

resources/es.json

{

  "HELLO_WORLD": "Hola mundo!",

  "WITH_PARAMS": "Los parámetros son: {fruit1}, {fruit2} and {fruit3}"

}

resources/en.json

{

  "HELLO_WORLD": "Hello world!",

  "WITH_PARAMS": "Params are: {fruit1}, {fruit2} and {fruit3}"

}

2. Create an instance of TranslationService

main.py

from pi18n import TranslationService



translation_service = TranslationService('resources', 'es')

3. Use the TranslationService

Get a translation:

translation = translation_service.get("HELLO_WORLD")

print(f"Message in Spanish: {translation}")



>>> "Message in Spanish: Hola mundo!"

Change locale at runtime:

translation_service.change_locale("en")

translation = translation_service.get("HELLO_WORLD")

print(f"Message in English: {translation}")



>>> "Message in English: Hello world!"

Get a translation that receives some params as a dict:

params = {"fruit1": "apple", "fruit2": "orange", "fruit3": "banana"}

translation = translation_service.get("WITH_PARAMS", params)

print(f"Message with params: {translation}")



>>> "Message with params: Params are: apple, orange and banana"

Get a translation that receives some params as kerword arguments:

translation = translation_service.get("WITH_PARAMS", fruit1="apple", fruit2="orange", fruit3="banana")

print(f"Message with params: {translation}")



>>> "Message with params: Params are: apple, orange and banana"

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

pi18n-0.1.3.tar.gz (3.3 kB view details)

Uploaded Source

File details

Details for the file pi18n-0.1.3.tar.gz.

File metadata

  • Download URL: pi18n-0.1.3.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.8

File hashes

Hashes for pi18n-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b52e1bbc3b2fbf2936348437885a75d0d7e7a58053dce8508affb376c14282ca
MD5 9f2be3109047d957a7f0d408e1269617
BLAKE2b-256 6c25a77808afbd263016e7ed1c83953d2c0087a5aeb86a243102a2837855f4e2

See more details on using hashes here.

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