Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.0.0 - 2026-01-18

Added

Core Localization System

  • Localization static facade for convenient access to the localization system
  • LocalizationService pure C# implementation with DI support
  • ILocalizationService interface for testing and dependency injection
  • LocalizedString serializable struct for Inspector-friendly localization references
  • Locale class representing language/region with metadata (display name, native name, RTL support)
  • StringTable ScriptableObject for storing translations with O(1) lookup performance
  • LocalizationSettings ScriptableObject for project-wide configuration

Provider System

  • ILocalizationProvider interface for implementing custom data providers
  • JsonProvider for file-based JSON storage with caching and compression support
  • CsvProvider for CSV import/export with configurable delimiter and layout options
  • POProvider for GNU Gettext PO file support with:
    • Standard msgid/msgstr pairs
    • Context support (msgctxt)
    • Plural forms (msgid_plural, msgstr[n])
    • Translator and extracted comments
    • Multiline strings and escape sequences
  • ProviderRegistry for automatic provider discovery and registration
  • LocaleData and TranslationEntry data transfer objects

Smart String System

  • SmartStringParser with support for:
    • Positional arguments ({0}, {1})
    • Named arguments ({player}, {score})
    • Pluralization with CLDR rules ({0:plural:one=# item|other=# items})
    • Gender agreement ({0:male=He|female=She|other=They})
    • Boolean conditionals ({0:true=Yes|false=No})
    • Number formatting ({0:N0}, {0:N2})
    • Currency formatting ({0:C})
    • Date formatting ({0:d}, {0:D})
  • PluralRules implementing CLDR plural categories for 15+ languages
  • Template validation and variable extraction utilities

UI Components

  • LocalizedTMP component for TextMeshPro with automatic locale updates
  • LocalizedText component for legacy Unity UI Text
  • LocalizedImage component for locale-specific sprites
  • LocalizedAudioComponent for localized audio clips with playback control
  • LocalizedTextureComponent for localized textures on RawImage

Asset Localization

  • AssetTable ScriptableObject for localizing non-text assets
  • ILocalizedAsset<T> interface for typed asset references
  • LocalizedTexture and LocalizedAudioClip structs

UI Toolkit Integration

  • LocalizedLabel element with UXML support
  • LocalizedStringConverter for UXML attribute binding

Editor Tools

  • Setup Panel (Lexis > Setup)
    • Initial setup wizard
    • Settings validation
    • Package detection status
  • String Table Browser (Lexis > String Table Browser)
    • Inline translation editing
    • Search and filter
    • Add/remove entries
    • Create new string tables
  • Language Switcher (Lexis > Language Switcher)
  • Property drawers for LocalizedString, LocalizedTexture, LocalizedAudioClip
  • CSV, JSON, and PO file importers

Validation

  • MissingTranslationValidator for finding missing translations across locales

Internal Utilities

  • LocaleDetector for system language detection
  • StringFormatter with ZString integration for zero-allocation formatting
  • IServiceFactory and DefaultServiceFactory for DI support

Samples

  • Basic Setup sample with minimal configuration example
  • Smart Strings sample demonstrating pluralization and formatting
  • UI Toolkit sample showing LocalizedLabel in UXML

Documentation

  • Comprehensive README with quick start guide
  • XML documentation for all public APIs with examples
  • This CHANGELOG

Platform Support

  • Unity 2020.3 LTS through Unity 6
  • All build targets (Windows, macOS, Linux, Android, iOS, WebGL, consoles)
  • All render pipelines (Built-in, URP, HDRP)

Dependencies

  • Required: Unity 2023.1+ OR UniTask
  • Optional: TextMeshPro, UI Toolkit, ZString

Unreleased

Added

RTL Support

  • RtlSupport utility class for RTL (Right-to-Left) text support:
    • Locale-based RTL detection (IsRtlLocale) for Arabic, Hebrew, Persian, Urdu, and more
    • Character-level RTL detection (IsRtlCharacter, ContainsRtlCharacters)
    • Text direction analysis (DetectTextDirection) with RTL ratio calculation
    • Layout helpers (FlipAnchor, FlipPivot, FlipAnchors, FlipHorizontalPosition)
    • Padding/margin flipping utilities (FlipHorizontalPadding, FlipRectOffset)
    • LocalizedTextAlignment enum for direction-aware alignment (Start/End/Center)
    • Unicode directional control characters (LTR/RTL marks, embedding)
    • ApplyRtlToRectTransform for automatic RectTransform mirroring

Addressables Integration

  • AddressableLocalization static API for async asset loading
  • AddressableAssetTable ScriptableObject for Addressables-based asset references
  • AddressableLocalizedAsset<T> generic struct for typed Addressable references
  • Concrete types: AddressableLocalizedTexture, AddressableLocalizedSprite, AddressableLocalizedAudioClip, AddressableLocalizedPrefab
  • Runtime components:
    • AddressableLocalizedTextureComponent for RawImage
    • AddressableLocalizedSpriteComponent for Image
    • AddressableLocalizedAudioComponent for AudioSource
    • AddressableLocalizedPrefabComponent for instantiating prefabs
  • AddressableAssetPreloader for preloading assets before locale switch
  • Editor support:
    • AddressableLocalizedAssetDrawer property drawer with dropdown key selection
    • AddressableAssetTableEditor custom inspector
    • AddressableKeySearchWindow for browsing available keys
    • AddressableExtensionBridge for String Table Browser integration

Remote Providers

  • RemoteProviderBase abstract class for implementing remote data providers
  • GoogleSheetsProvider for syncing translations with Google Sheets:
    • Read/write support
    • Batch operations for efficiency
    • Configurable sheet and range settings

Editor File Watching

  • LocalizationFileWatcher for automatic hot reload of localization files in Editor:
    • Watches JSON, CSV, and PO files for changes
    • Automatic StringTable refresh on file modification
    • Configurable watch paths and file patterns
    • Enable/disable via Localization Settings

Editor Improvements

  • Unified String Table Browser with Asset Table support:
    • Browse and edit both StringTable and AssetTable entries
    • Locale columns with inline editing
    • Create new tables directly from browser
    • Search field for filtering entries
  • Refactored editor architecture with extracted managers:
    • ColumnLayoutManager for dynamic column layout
    • TableSelectionManager for table selection UI
    • StringTableEditor for string entry editing
    • AssetTableEditor for asset entry editing
    • ValidationManager for entry validation
    • LocaleManager for locale column management
  • Improved property drawers with dropdown selection for all localized types
  • Auto-setup functionality for new projects

Professional Unity Development Tools