Weave 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

I18N Laravel Package

ibexa/i18n

The official translation meta-repository for Ibexa, centralizing locale files synced from Crowdin so translations ship with the product. Enable them via the ibexa.ui.translations.enabled configuration, and contribute new translations through the Ibexa project on Crowdin.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What this actually is. ibexa/i18n is not a Laravel package. It is a Composer-installable content repository ("meta repository") that centralizes the translation strings for Ibexa DXP (formerly eZ Platform, a Symfony-based commercial CMS/DXP). It ships translated resource files plus a single configuration switch; there is no application code, no service provider, no middleware, and no Laravel integration surface. Any evaluation framed as "Laravel package adoption" is a category error — the correct framing is "do we adopt Ibexa DXP, and if so do we take the upstream translation bundle or manage translations ourselves."

Architecture fit. Fit is binary, not graduated. If the platform standard is Ibexa DXP, this package is the canonical, vendor-produced source of UI translations and belongs in the dependency graph by default. If the platform standard is Laravel, Symfony without Ibexa, or anything else, there is no architectural fit at all — the translation keys are Ibexa domain-specific (ibexa.ui.* style message catalogs) and are meaningless outside the Ibexa translation pipeline. There is no meaningful "cherry-pick the useful parts" path; extracting locale files as raw reference material would create an unmaintained fork with no consuming code.

Integration feasibility. Technically trivial: composer require ibexa/i18n, then set ibexa.ui.translations.enabled: true. No schema changes, no migrations, no runtime services, no API surface. The real feasibility question is legal and commercial, not technical.

Technical risk. Technical risk is low; commercial/legal risk is high and is the dominant factor:

  • License: NOASSERTION. The README states the code is available under the Ibexa Business Use License Agreement (Ibexa BUL) v2.3+, granted by holding a valid Ibexa DXP subscription. GitHub cannot classify this, hence NOASSERTION. This is a proprietary, entitlement-gated license — it must go through legal/procurement, not an engineering judgment call. Using the package outside a valid Ibexa subscription is a compliance exposure.
  • Community signal is effectively zero. 3 stars, 0 dependents. This is expected for a vendor-internal translation repo and should not be read as a quality signal either way — but it does mean there is no external documentation, no third-party issue history, and no community fallback if you hit a problem.
  • Maturity metadata (readme, releases). No test suite, no CI badges, no contributing guide. For a data-only package this is acceptable, but it means translation regressions are caught by users, not by automated gates.
  • Release date 2026-08-20 is anomalous relative to the evaluation date and is worth verifying against the actual tag list in the repo — treat version metadata as unvalidated until confirmed.
  • Version coupling. Translation keys track Ibexa product strings. A translation bundle ahead of or behind your installed Ibexa core version produces missing-key fallbacks rather than hard failures — silent degradation, which is the worst failure mode for i18n.

Key questions for the vendor/team.

  1. Do we have (or plan to have) a valid Ibexa DXP subscription that entitles us to Ibexa BUL v2.3+? Who signs off on that determination?
  2. Which locales are in scope, and are all of them covered upstream, or do we need project-specific overrides for some?
  3. Is our Ibexa core version pinned, and what is the supported compatibility matrix between ibexa/i18n tags and Ibexa core releases?
  4. What is the accepted process for local overrides — project translation domain, resource-path precedence, or a maintained fork?
  5. Is the Crowdin-driven upstream cadence (translator → l10n_main → PR → squash-merge → tag) acceptable as our translation workflow, or do we have a separate TMS requirement?
  6. What is the fallback locale behavior, and do we have a way to detect missing keys in CI?
  7. Confirm the actual current release tag and changelog — the metadata date does not reconcile.

Integration Approach

Stack fit. Only fits an Ibexa DXP stack. In an Ibexa project the layered translation model is: ibexa/i18n supplies baseline vendor translations → project-specific translation files override or supplement them → application config enables the UI translation layer. This package occupies the lowest, least customizable layer.

Migration path. For a Laravel or non-Ibexa codebase: do not pursue. There is no migration path worth designing; the effort would be spent rebuilding Ibexa's translation key namespace for zero reuse. Close this out as "not applicable to current stack" and record the rationale, rather than carrying it as a backlog item.

For an Ibexa DXP codebase:

  1. Entitlement gate first. Confirm Ibexa DXP subscription and BUL applicability in writing before any engineer adds the dependency. This is a procurement prerequisite, not a step to sequence after technical validation.
  2. Pin and install. Add ibexa/i18n at a tag matched to the installed Ibexa core version; commit composer.lock. Avoid floating constraints on a package with no compatibility documentation.
  3. Enable and verify coverage. Set ibexa.ui.translations.enabled: true in the relevant config scope, then enumerate the locales actually in scope and confirm each has a resource file and a non-trivial message count.
  4. Establish the override layer. Define where project-specific translations live and confirm precedence over vendor files. Document it — this is the mechanism the team will use for 100% of future copy changes.
  5. Add a completeness gate. Wire a CI check that compares the key set in vendor resources against project locale files and fails (or warns) on missing keys for in-scope locales. Without this, translation drift after Ibexa upgrades is invisible until a user reports it.
  6. Roll to production only after the completeness gate is green for all in-scope locales and fallback behavior for any remaining gaps is confirmed as acceptable (typically English).

Compatibility. Treat ibexa/i18n version as locked to the Ibexa core minor version. Plan translation-bundle bumps as part of the core upgrade runbook, not as independent maintenance. Expect key churn on every Ibexa minor upgrade.

Sequencing. Legal → version pin → enable → override layer → CI gate → production. Legal is not parallelizable with the rest in a meaningful way; it is the single go/no-go.

Operational Impact

Maintenance. Low steady-state effort if you stay on a pinned tag and take translation updates only during planned core upgrades. The upstream workflow is automated (Crowdin ↔ GitHub, PR per sync batch), so upstream consumes its own toil. Your toil is: reviewing the upgrade-time diff, updating overrides for renamed keys, and re-running the completeness gate. Realistically 1–3 days per Ibexa minor upgrade, not ongoing weekly work.

Support. Vendor-supported only insofar as your Ibexa subscription is active. Community support is nil — 3 stars and 0 dependents means there is no user community to draw on. Internal ownership must sit with whoever owns the Ibexa platform; nobody else can meaningfully triage a translation defect. Escalation path is Ibexa support, which is a commercial relationship to maintain.

Scaling. Effectively free. Static resource files, loaded and cached by the framework; no network calls, no external services at runtime. Volume grows linearly with locale count, which is bounded by business need. No scaling concerns at any realistic tenant or traffic level.

Failure modes, ranked by likelihood × impact.

  • Silent missing-key fallback (high likelihood, medium impact). Version skew or an upstream locale gap causes untranslated strings to render in the source language. Mitigate with the CI completeness gate — this is the single highest-value operational control.
  • License lapse or misapplication (medium likelihood, high impact). NOASSERTION licensing plus entitlement-gated access means an expired or absent subscription turns a working dependency into a compliance finding. Mitigate with procurement tracking tied to the Ibexa renewal date.
  • Override/vendor collision (medium likelihood, medium impact). A project override is silently shadowed or a vendor update overwrites a customization. Mitigate by documenting precedence and asserting it in a test.
  • Upstream stagnation (low likelihood, low impact). Translation sync stalls; new Ibexa UI strings ship untranslated. Detectable via the completeness gate; no action needed beyond filing with the vendor.
  • Metadata/tagging anomalies (low likelihood, low impact). The anomalous release date suggests metadata should be verified against the repo's actual tag list before pinning.

Ramp-up. Negligible for a PHP/Symfony developer already working in an Ibexa codebase — the integration is one Composer line and one YAML flag, so a competent engineer is productive in under an hour. The real ramp-up is organizational: understanding the vendor's translation domain structure, the override precedence rules, and the Crowdin workflow. Budget half a day of documentation review and one pairing session with whoever owns the Ibexa platform. For a team without Ibexa experience, the ramp-up cost is not in this package at all — it is in Ibexa DXP itself, which dwarfs it.

TPM recommendation. Do not carry this as a package-evaluation item. Convert it into two decisions: (a) an architecture decision that the platform is or is not Ibexa DXP, and (b) if it is, a procurement decision on Ibexa BUL entitlement. If both resolve yes, adopt with a pinned version and a CI translation-completeness gate. If either resolves no, close as not applicable — the technical merits are irrelevant without the commercial precondition.

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.
roundly-consulting/kubernetes-api-for-laravel
roundly-consulting/plausible-for-laravel
gvp/gvp-laravel-template
metasyncsite/laravel-metasync-client
roundly-consulting/onboarding-for-laravel
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo