{"library":"oslo-i18n","title":"Oslo Internationalization Utilities","description":"The oslo.i18n library provides utilities for internationalization (i18n) features, primarily for translating text strings within applications or libraries. It is part of the OpenStack Oslo project and is currently at version 6.7.2. New releases often align with OpenStack development cycles, indicating an active maintenance and development cadence.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install oslo-i18n"],"cli":null},"imports":["from oslo_i18n import TranslatorFactory","from oslo_i18n import translate","from myapp._i18n import _","from myapp._i18n import _LI"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom oslo_i18n import TranslatorFactory, enable_lazy, translate\n\n# 1. Create an integration module (conceptually, e.g., myapp._i18n.py)\n#    In a real project, this would be in a separate file and imported.\nDOMAIN = 'myproject'\n_translators = TranslatorFactory(domain=DOMAIN)\n_ = _translators.primary  # Primary translation marker\n_LW = _translators.log_warning # Log warning translation marker\n\n# 2. Enable lazy translation (optional, but common)\nenable_lazy()\n\n# 3. Mark strings for translation\nmessage = _('Hello, %(name)s!') % {'name': 'World'}\nwarning_message = _LW('Something went wrong: %s') % 'file not found'\n\n# 4. Simulate a different locale for translation at display/log time\n#    In a real app, this might come from user settings or request headers\ncurrent_locale = os.environ.get('TEST_LOCALE', 'en_US') # Example: 'es_ES'\n\n# 5. Translate and display\n#    Note: 'message' is a lazy translation object until explicitly translated or cast to string.\n#    The 'translate' function is used when the target locale is known.\n\ntranslated_message = translate(message, desired_locale=current_locale)\nprint(f\"Original (lazy) message type: {type(message)}\")\nprint(f\"Translated message for '{current_locale}': {translated_message}\")\n\n# Log messages would typically be handled by a logging configuration\n# with a TranslationHandler, but for demonstration, we can show direct translation.\nprint(f\"Translated log warning for '{current_locale}': {translate(warning_message, desired_locale=current_locale)}\")","lang":"python","description":"This quickstart demonstrates how to set up `oslo.i18n` by creating an integration module (conceptually), initializing a `TranslatorFactory`, obtaining marker functions (`_`, `_LW`), marking strings for lazy translation, and finally translating them to a specific locale using `oslo_i18n.translate()`.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"6.6.0","pypi_latest":"6.7.2","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.9,"avg_import_s":0.04,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.03,"mem_mb":1.6,"disk_size":"19.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.02,"mem_mb":1.6,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":1.8,"disk_size":"21.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.05,"mem_mb":1.8,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.5,"disk_size":"21.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.05,"mem_mb":1.5,"disk_size":"22M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":1.7,"disk_size":"21.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.04,"mem_mb":1.7,"disk_size":"22M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"oslo-i18n","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"19M"}]}}