Thanks @gmclelland! Pretty useful service for getting high-level overviews.
I tried this prompt: Explain how ProcessWire handles locales.
And got this:
# How ProcessWire Handles Locales
ProcessWire provides comprehensive locale support through its **LanguageSupport module system**, which manages internationalization (i18n) and localization functionality across the entire framework.
## Core Locale Management
ProcessWire's locale handling is primarily managed through the **Languages class**, which extends WireArray and provides centralized locale management functionality [1](#0-0) . This class contains the main `setLocale()` and `getLocale()` methods that handle locale settings throughout the system [2](#0-1) .
The system uses PHP's native `setlocale()` function as its foundation, with extensive wrapper functionality to support multi-language environments [3](#0-2) . The locale settings affect various categories including `LC_ALL` and `LC_NUMERIC` for proper formatting of numbers, dates, and other locale-specific content.
## Individual Language Objects
Each language in ProcessWire is represented by a **Language object** that includes its own locale management methods [4](#0-3) . These objects provide wrapper methods that allow setting locales on a per-language basis, enabling fine-grained control over locale settings for different languages in multilingual sites.
## Translation Functions
ProcessWire implements a GetText-like translation system with three core functions that work with the locale system [5](#0-4) :
- `__()` for basic string translation
- `_x()` for contextual translation with additional context
- `_n()` for plural form handling
These functions are available both globally and as methods in Wire-derived classes [6](#0-5) .
## System Integration
The locale system is initialized during system startup through the **LanguageSupport module** [7](#0-6) . This ensures that proper locale settings are established early in the request lifecycle.
Locale settings also integrate with other core components:
- **Number formatting** through WireNumberTools, which uses locale information for proper numeric display [8](#0-7)
- **Page name localization** for multilingual URLs through LanguageSupportPageNames [9](#0-8)
- **Field value management** for multilingual content through specialized field types [10](#0-9)
## Locale Validation and Maintenance
ProcessWire includes system checks to ensure locale settings are properly configured and functional [11](#0-10) . These checks help identify and resolve locale-related issues during system updates and maintenance.
## Notes
ProcessWire's locale handling system is designed to be flexible and comprehensive, supporting both simple single-language sites and complex multilingual installations. The system builds on PHP's native locale functionality while providing ProcessWire-specific enhancements for content management scenarios. The modular architecture allows locale functionality to be enabled or disabled as needed, making it suitable for sites that may not require internationalization features.