semitexa/locale
最新稳定版本:2026.05.09.0726
Composer 安装命令:
composer require semitexa/locale
包简介
Semitexa Locale - translation, locale resolution, and i18n support for applications
README 文档
README
Internationalization module with per-request locale resolution, coroutine-safe context, and translation with CLDR plural support.
Purpose
Resolves the active locale on every request through a composable, configurable resolver chain (commonly cookie, URL path, and Accept-Language header; actual order follows configuration). Stores the result in coroutine-safe context and provides a translation service with CLDR plural rules for Germanic and Slavic languages, with other languages currently falling back to Germanic rules.
Role in Semitexa
Depends on Core. Optional integration with Tenancy for tenant-driven locale defaults. Used by SSR for locale-aware template rendering, Mail for localized email content, and any module that needs translated output.
Key Features
- Resolver chain (configuration-driven priority):
CookieLocaleResolver,PathLocaleResolver,HeaderLocaleResolver(RFC 7231 quality factors) - Custom resolvers via
LocaleResolverInterface - Coroutine-safe
LocaleContextStorefor Swoole TranslationServicewith named placeholders andtransChoice()for plurals- CLDR plural rules: Germanic (en, de), Slavic East (uk, ru), Slavic West (pl)
- JSON translation files per module (
Application/View/locales/{lang}.json) - Module-namespaced keys (
MyModule.welcome) LocaleResolvedevent for post-resolution hooksTenantResolvedLocaleListenerfor automatic tenant-based locale when Tenancy is active
Notes
Translation catalogs are loaded once at worker boot and shared across requests. The context store uses Swoole coroutine storage in HTTP mode and static fallback in CLI/test mode.
统计信息
- 总下载量: 117
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 4
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-26