Skip to main content

Python SDK for AutoLocalise translation service

Project description

AutoLocalise Python SDK

A framework-agnostic Python SDK for the AutoLocalise translation service. Works seamlessly with Django, Flask, FastAPI, or any Python backend.

Features

  • Framework-agnostic — Works with any Python web framework
  • Intelligent caching — In-memory cache with thread-safe operations
  • Template support — Built-in Python Template support with parameter protection
  • Batch translation — Efficient bulk translation support
  • Smart API usage — Only translates new strings, reuses existing translations
  • Error handling — Graceful fallbacks when translation fails

Installation

pip install autolocalise

Quick Start

from autolocalise import Translator

# Initialize translator
translator = Translator(api_key="your-api-key", source_locale="en", target_locale="fr")

# Simple translation
result = translator.translate(["Hello", "Goodbye"])
print(result)
# {"Hello": "Bonjour", "Goodbye": "Au revoir"}

# Template with parameters
from string import Template
template = Template("Hello $name, you have $count new messages!")
translated = translator.translate_template(template, name="Alice", count=5)
print(translated)
# "Bonjour Alice, vous avez 5 nouveaux messages!"

Core Usage

Basic Translation

from autolocalise import Translator

translator = Translator(
    api_key="your-api-key",
    source_locale="en",
    target_locale="fr"
)

# Single or multiple texts
texts = ["Welcome", "Login", "Submit"]
translations = translator(texts)

Template Translation with Parameters

The SDK supports Python's string.Template with automatic parameter protection:

from string import Template
from autolocalise import Translator

translator = Translator(api_key="your-api-key", source_locale="en", target_locale="fr")

# Create template
template = Template("Welcome $name! You have $count items in your $container.")

# Translate with parameters - parameters are protected from translation
result = translator.translate_template(template, name="John", count=3, container="cart")
print(result)
# "Bienvenue John! Vous avez 3 articles dans votre cart."

Environment Configuration

import os
from autolocalise import Translator

translator = Translator(
    api_key=os.getenv("AUTOLOCALISE_API_KEY"),
    source_locale=os.getenv("AUTOLOCALISE_SOURCE_LANG", "en"),
    target_locale=os.getenv("AUTOLOCALISE_TARGET_LANG", "fr")
)

Framework Examples

Django

# utils.py
from django.conf import settings
from autolocalise import Translator
from string import Template

translator = Translator(
    api_key=settings.AUTOLOCALISE_API_KEY,
    source_locale="en",
    target_locale="fr"
)

def translate_message(template_str, **params):
    template = Template(template_str)
    return translator.translate_template(template, **params)

# views.py
def dashboard_view(request):
    message = translate_message(
        "Hello $name, you have $count notifications!",
        name=request.user.first_name,
        count=request.user.notifications.unread().count()
    )
    return render(request, 'dashboard.html', {'message': message})

Flask

from flask import Flask
from autolocalise import Translator
from string import Template

app = Flask(__name__)
translator = Translator(api_key=app.config['AUTOLOCALISE_API_KEY'], source_locale="en", target_locale="fr")

@app.route('/user/<username>')
def user_profile(username):
    template = Template("Welcome back, $name!")
    message = translator.translate_template(template, name=username)
    return f"<h1>{message}</h1>"

FastAPI

from fastapi import FastAPI
from autolocalise import Translator
from string import Template

app = FastAPI()
translator = Translator(api_key="your-api-key", source_locale="en", target_locale="fr")

@app.get("/welcome/{user_name}")
async def welcome_user(user_name: str):
    template = Template("Welcome $name! Enjoy using our API.")
    message = translator.translate_template(template, name=user_name)
    return {"message": message}

API Reference

Translator Class

__init__(api_key, source_locale="en", target_locale="fr", cache_ttl=3600, cache_enabled=True, shared_cache=True)

Initialize a new translator instance.

translate(texts, target_locale=None, source_locale=None)

Translate multiple strings.

translate_template(template, **params)

Translate a Python Template with parameter protection.

Parameters:

  • template (Template): Python string.Template object
  • **params: Template parameters (protected from translation)

Returns: str - Translated text with parameters substituted

Cache Management

# Check cache size
translator.cache_size()

# Clear cache
translator.clear_cache()

# Clear global cache
Translator.clear_global_cache()

How Parameter Protection Works

When using translate_template():

  1. Parameter Extraction: Parameters are temporarily replaced with short placeholders like X1X, X2X
  2. Translation: Only the template text with placeholders is sent for translation
  3. Parameter Restoration: Original parameter values are substituted back
  4. Result: Translated text with original parameter values intact

Cost Optimization: Short placeholders minimize translation API costs while ensuring parameters like usernames, numbers, and dynamic content are never accidentally translated.

Example: "Hello $name!""Hello X1X!" (sent to API) → "Bonjour John!" (final result)

Development

git clone https://github.com/AutoLocalise/autolocalise-py.git
cd autolocalise-py
pip install -e ".[dev]"
pytest

License

MIT License - see LICENSE file for details.

Support

For support, please contact at https://www.autolocalise.com/support

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

autolocalise-0.1.3.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

autolocalise-0.1.3-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: autolocalise-0.1.3.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for autolocalise-0.1.3.tar.gz
Algorithm Hash digest
SHA256 32731e53bd941cd474a871ab278b8a542a4f76d7ba4aa37158d6193fac88f730
MD5 24adbd8e8d147fe926ed3144052bde54
BLAKE2b-256 c167c96c949b770a337bb81653ebec8f2264d9fe06dd8b677cecc772b0eae524

See more details on using hashes here.

File details

Details for the file autolocalise-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: autolocalise-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for autolocalise-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 78c062cf2602e44bd76d3283d54a09c7233c84fc7ef6bae3e9a001078c465d38
MD5 0e3258710d6df8aea57906d0cba625c0
BLAKE2b-256 daaefee7c54aadd4ffba75a698e9081083189b8638f407b8b35c4483702ed4a9

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