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.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle