A framework-agnostic Python SDK for the AutoLocalise translation service. Works seamlessly with Django, Flask, FastAPI, or any Python backend.
- 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
pip install autolocalise
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!"
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)
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."
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")
)
# 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})
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>"
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}
__init__(api_key, source_locale="en", target_locale="fr", cache_ttl=3600, cache_enabled=True, shared_cache=True)
Initialize a new translator instance.
Translate multiple strings.
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
# Check cache size
translator.cache_size()
# Clear cache
translator.clear_cache()
# Clear global cache
Translator.clear_global_cache()
When using translate_template()
:
- Parameter Extraction: Parameters are temporarily replaced with short placeholders like
X1X
,X2X
- Translation: Only the template text with placeholders is sent for translation
- Parameter Restoration: Original parameter values are substituted back
- 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)
git clone https://github.com/AutoLocalise/autolocalise-py.git
cd autolocalise-py
pip install -e ".[dev]"
pytest
MIT License - see LICENSE file for details.
For support, please contact at https://www.autolocalise.com/support