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

Laravel Translatable Laravel Package

novius/laravel-translatable

Make Laravel Eloquent models translatable using locale and locale_parent_id. Includes migration macro, Translatable trait, relations for translations (with/without soft-deleted), translate() and getTranslation(), plus withLocale() query scope. Supports Laravel 10–13, PHP 8.2–8.5.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Multilingual Content Strategy: Enables localized content management (e.g., blogs, product descriptions, CMS pages) with minimal development overhead. Supports global expansion by abstracting translation logic into reusable Laravel traits.
  • Roadmap for Internationalization: Accelerates timelines for launching multilingual features without requiring custom database schemas or third-party services. Aligns with market expansion goals by providing a scalable, Laravel-native solution.
  • Build vs. Buy Decision: Avoids reinventing translation infrastructure while maintaining control over data structure. Reduces technical debt compared to custom pivot tables or JSON-based solutions.
  • Use Cases:
    • Localized e-commerce product catalogs with language-specific attributes.
    • Multilingual CMS platforms (e.g., news sites, documentation hubs) with user-generated content.
    • Compliance with regional language requirements (e.g., GDPR, accessibility laws).
    • User-facing applications with dynamic language preferences (e.g., forums, reviews).

When to Consider This Package

  • Adopt if:

    • Your Laravel application requires simple, field-level translations tied to a parent record via locale_parent_id.
    • You prioritize database normalization and avoid schema-less approaches (e.g., JSON fields).
    • Your team lacks bandwidth to build a custom translation system but needs Laravel-native integration.
    • You’re using Laravel 11/12/13 and PHP 8.2–8.5, ensuring compatibility with modern Laravel features.
    • The AGPL-3.0 license is acceptable, or you’re open to forking for proprietary use.
    • You need basic translation features (e.g., translate(), getTranslation(), withLocale() scopes) without complex relationships.
  • Look elsewhere if:

    • Your translations require deeply nested attributes (e.g., post.comments[].reply.text).
    • You need many-to-many relationships between translations and other models.
    • You prefer schema-less flexibility (e.g., storing translations as JSON in a single column).
    • Your project uses non-Laravel frameworks or requires headless CMS compatibility.
    • The AGPL-3.0 license conflicts with your licensing model (consider alternatives like spatie/laravel-translatable or kukuhvelo/laravel-translation).
    • You anticipate high write volumes (e.g., real-time translations) that could lead to table bloat or performance issues.

How to Pitch It (Stakeholders)

For Executives:

*"This package allows us to enable multilingual features without significant development overhead, reducing time-to-market for global expansion. By leveraging Laravel’s Eloquent ORM, we can support localized content—such as product pages, blogs, or documentation—with minimal code changes. This avoids the need for third-party translation tools or custom infrastructure, cutting costs and accelerating our roadmap.

Key Benefits:

  • Speed: Launch multilingual features in weeks, not months.
  • Cost-Effective: No licensing fees for proprietary translation systems.
  • Scalable: Handles growth without requiring major refactoring.
  • Compliance: Easily meets regional language requirements (e.g., GDPR, accessibility laws).

This is a low-risk, high-reward solution that aligns with our global strategy while keeping development simple."*


For Engineering:

*"This package provides a lightweight, Laravel-native way to handle translations using a single trait (Translatable). It abstracts away the complexity of managing multilingual content, offering:

Key Features:

  • Automatic locale and locale_parent_id fields via schema macros.
  • Translation methods (translate(), getTranslation()) and query scopes (withLocale()) for seamless integration.
  • Customizable behavior (e.g., restricted locales, attribute transformations) via translatableConfig() and translateAttributes().
  • Minimal query overhead for localized content retrieval.

Trade-offs:

  • Single-table storage: All translations share a table, which could lead to bloat if scaling to many languages.
  • No built-in fallback logic: Requires manual handling of missing locales (e.g., defaulting to en).
  • AGPL license: May require compliance or forking for proprietary use.
  • Limited ecosystem: No admin UI or API endpoints included (must pair with frontend tools like Vue I18n).

Recommendation: Start with a pilot feature (e.g., blog posts or product descriptions) to validate performance and developer experience before scaling. Monitor table growth and query performance, especially if supporting >50 languages."*


For Design/UX Teams:

*"This package enables seamless multilingual content management without impacting the user experience. Developers can easily implement language-specific content (e.g., product names, descriptions, or UI text) while maintaining a clean backend structure.

Key UX Benefits:

  • Consistent localization: Supports dynamic language switching for users (e.g., based on browser/preferences).
  • No frontend changes required: Works with existing templates (e.g., Blade, Vue, React) by passing localized data.
  • Future-proof: Easy to add new languages or update translations without redesigning the database.

Considerations:

  • Ensure your frontend framework (e.g., Vue I18n, React Intl) is configured to handle dynamic locale switching.
  • Document translation workflows for content editors (e.g., how to add/edit translations in the admin panel)."*
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.
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours