Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Zend I18N Laravel Package

zendframework/zend-i18n

Zend\I18n provides a full translation suite for PHP/Zend Framework: supports major translation formats, pluralization, and text domains. Translator is mostly dependency-free, using the Intl extension only for default locale fallback. Repository abandoned; moved to laminas/laminas-i18n.

View on GitHub
Deep Wiki
Context7

Getting Started

  • Install via Composer: composer require zendframework/zend-i18n
    (Note: As of 2020, this package is archived; consider laminas/laminas-i18n as the official successor.)
  • Key entry points: Zend\I18n\Translator\Translator and Zend\I18n\View\Helper\Translate
  • First use case: Add translations to a Laravel app using Translator manually (e.g., for legacy Zend-based migrations or hybrid stacks), or use Translate as a fallback for view-layer translations if integrating older views.
  • Start by configuring translator in config/translator.php (or config/app.php): set locale, translation_file_patterns, and adapter (e.g., gettext, ini, array).

Implementation Patterns

  • Translation files: Use .mo/.po (gettext), .ini, or .php array files (e.g., resources/lang/en_US/LC_MESSAGES/messages.mo).
  • In views: Use <?= $this->translate('Hello world') ?> if leveraging Zend View (rare in Laravel), or inject the Translator service manually into Laravel views/controllers via dependency injection.
  • Programmatic usage in Laravel:
    // In a service provider or controller
    $translator = app(\Zend\I18n\Translator\Translator::class);
    $translator->setLocale(app()->getLocale());
    echo $translator->translate('Welcome');
    
  • Integrate with Laravel’s localization: Override App::setLocale() to sync Zend\Translator’s locale via a service provider boot method.
  • Custom plural rules: Use translatePlural() with Zend\I18n\Translator\Plural\Rule for language-specific pluralization.

Gotchas and Tips

  • ⚠️ Archived & unmaintained: For new projects, switch to Laminas (laminas/laminas-i18n)—API-compatible but actively supported.
  • File path issues: locale must match the directory structure (e.g., en_US, not en-US). Use LC_MESSAGES subdirectory for gettext files.
  • Caching: Enable caching (e.g., File cache) to avoid parsing translation files on every request:
    $translator->setCache(new \Zend\Cache\Storage\Adapter\Filesystem());
    
  • Laravel vs Zend locale mismatch: Laravel uses en, Zend uses en_US. Normalize via setLocale() with rtrim($locale, '_') or map locales explicitly.
  • Missing Laravel integration: No out-of-the-box __('message') helper—override Laravel’s trans() or create a custom helper that delegates to the Zend translator.
  • Debug tip: Use getMessages($locale, $textdomain) to inspect loaded translations at runtime.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport