Skip to main content

python-intl

A small library using PyICU to provide a Python API similar to what the Intl JavaScript API provides. It is not meant to fully behave the same, but instead be close enough so the "same" code works on JavaScript and Python, with similar results.

Status: This is very much work in progress. Currently only Intl.DateTimeFormat exists and this also is not complete yet.

General notes about the Python adaption

All names will be using the Python style rules. This means instead of formatToParts a method will be called format_to_parts. Also a dictionary key like dayPeriod will be named day_period. Python uses snake case, let's stick to this.

Instead of passing around undefined objects like in JavaScript we want to use well defined and typed dataclasses. This for example is true for the Intl.DateTimeFormat format options, you can use DateTimeFormatOptions as a clean representation of those. Using a dictionary (which behaves the most like those JavaScript objects) is still fine and will automatically converted, as seen in the examples here.

Many objects like for example the DateTimeFormatOptions provide methods to convert their Python representation to a JavaScript compatible JSON format by returning a dict using the JavaScript naming. You can use the to_json method for this.

For example:

import python_intl as Intl

Intl.DateTimeFormatOptions(time_zone_name="short_offset").to_json()
# Will return: {'timeZoneName': 'shortOffset'}

Available Intl classes

Intl.DateTimeFormat

Example usage

import datetime
import python_intl as Intl

datetime_ = datetime.datetime(2026, 8, 15)
formatter = Intl.DateTimeFormat("de-DE", {"year": "numeric", "month": "2-digit", "day": "2-digit"})
formatter.format(datetime_)  # Will output the German format: "15.08.2026"

Compatibility

Method Status Python name
DateTimeFormat.format
DateTimeFormat.formatToParts DateTimeFormat.format_to_parts
DateTimeFormat.supportedLocalesOf
DateTimeFormat.formatRange
DateTimeFormat.formatRangeToParts
DateTimeFormat.resolvedOptions

Installation

Be sure to be able to install PyICU, see the installation docs there: https://gitlab.pyicu.org/main/pyicu#installing-pyicu

Hint: I mainly did run into issues with pkg-config not finding the ICU library, setting PKG_CONFIG_PATH accordingly helps most of the time I guess.

When this is done you should be able to install python-intl using any package manager, like pip install python-intl or uv add python-intl.

Download files

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

Source Distribution

python_intl-0.3.1.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

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

python_intl-0.3.1-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file python_intl-0.3.1.tar.gz.

File metadata

  • Download URL: python_intl-0.3.1.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for python_intl-0.3.1.tar.gz
Algorithm Hash digest
SHA256 25a560f8f43569cc8cdf90c5d70cac971e94e9c4519505b4d55c46fa95fc62f5
MD5 6bcaf21b86b6d1794e98e284d69c59ad
BLAKE2b-256 ce3a4455fb6aaa6afa930c89d17fe98cf8f75a579eae10f55ab905b2874c98ce

See more details on using hashes here.

File details

Details for the file python_intl-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: python_intl-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for python_intl-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9860b8fa9ce31cc40c3bea807e01992f9bc359e6b155ebcc53f37e1c9e4a5c7b
MD5 c1aee770452e3167231540dec35031a7
BLAKE2b-256 76ad1881cd480efd54a3a44c869b74fcd2343b51ce66114f8c47fd570edf9943

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.0

2 files

0.7.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

This release

0.3.1 This release

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page