laminas/laminas-i18n
Internationalization tools for Laminas applications, including locale-aware translation, formatting, and pluralization support. Helps build multilingual PHP apps with proper locale handling and integration with Laminas MVC and services.
Installation:
composer require laminas/laminas-i18n
Laravel developers typically integrate this via Service Providers or Facades (if wrapping the package).
Basic Translation Usage:
use Laminas\Translator\Translator;
$translator = new Translator();
$translator->addTranslationFilePattern(
'phpArray',
__DIR__ . '/../language/*',
'default'
);
echo $translator->translate('greeting.hello'); // Outputs translated string
First Use Case:
.php/.json files (e.g., resources/lang/en/messages.php).{{ trans('messages.welcome') }}
Translation Loading:
.php, .json, .ini, .csv, .xliff.$translator->addTranslationFilePattern(
'json',
base_path('resources/lang/{locale}/messages.json'),
'messages'
);
$translator->setLocale('fr_FR');
Pluralization:
$translator->translatePlural(
'item',
'items',
5,
'en_US'
);
Validation/Filtering:
EmailAddress, PostCode) or filters (e.g., NumberParse):
use Laminas\Validator\EmailAddress;
$validator = new EmailAddress();
$validator->isValid('test@example.com');
Caching Translations:
laminas/laminas-cache):
$cache = new \Laminas\Cache\Storage\Adapter\Memory();
$translator->setCache($cache);
Service Provider:
public function register()
{
$this->app->singleton('translator', function ($app) {
$translator = new Translator();
$translator->addTranslationFilePattern(
'phpArray',
base_path('resources/lang/{locale}'),
'messages'
);
return $translator;
});
}
Facade Wrapper (Optional):
// app/Facades/Translator.php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Translator extends Facade { protected static function getFacadeAccessor() { return 'translator'; } }
Locale Handling:
if (empty($locale)) $locale = 'en_US';
Deprecated Interfaces:
Laminas\I18n\Translator\TranslatorInterface is deprecated. Use Laminas\Translator\TranslatorInterface instead.PHP Version Compatibility:
Validator Options:
$validator = new EmailAddress(['allow' => true]);
Missing Translations:
addTranslationFilePattern() match your Laravel resources/lang structure.Pluralization Issues:
1 item, 2 items). Use translatePlural() for debugging:
$translator->translatePlural('key', 'key_plural', 1, 'ru_RU');
Caching Problems:
$cache->clear();
Custom Validators/Filters:
Laminas\Validator\AbstractValidator or Laminas\Filter\AbstractFilter:
class CustomValidator extends AbstractValidator {
public function isValid($value) { /* ... */ }
}
Translation File Formats:
Laminas\Translator\Translator\Loader\LoaderInterface for custom formats (e.g., YAML).Locale Data:
$translator->setLocaleData(new \Laminas\I18n\Locale\DataArray());
laminas/laminas-cache with a persistent store (e.g., Redis) for production.How can I help you explore Laravel packages today?