Multi-Language - Datatables for Laravel                  [               Datatables for Laravel  ](/) 

  Toggle main menu         [Docs](https://laravel-datatables.com/docs) [Demos](/demos) [Blog](https://laravel-datatables.com/blog) [Pricing](/pricing)        Search  ⌘ K   [ Log in ](/login) 

  [Docs](https://laravel-datatables.com/docs) [Demos](/demos) [Blog](https://laravel-datatables.com/blog) [Pricing](/pricing) 

 Search docs and demos  

Type at least 2 characters to search.

    Documentation menu      ### Getting Started

- [ Installation ](https://laravel-datatables.com/docs)
- [ Dark Mode ](https://laravel-datatables.com/docs/dark-mode)

### Basics

- [ Creating a Table ](https://laravel-datatables.com/docs/creating-a-table)
- [ Displaying Columns ](https://laravel-datatables.com/docs/displaying-columns)
- [ Data Sources ](https://laravel-datatables.com/docs/data-sources)
- [ Internationalisation ](https://laravel-datatables.com/docs/internationalisation)
- [ Multi-Language ](https://laravel-datatables.com/docs/multi-language)
- [ Styling ](https://laravel-datatables.com/docs/styling)

### Customization

- [ Columns ](https://laravel-datatables.com/docs/customization-columns)
- [ Cell Renderer ](https://laravel-datatables.com/docs/customization-cell-renderer)
- [ Value Formatter ](https://laravel-datatables.com/docs/customization-value-formatter)
- [ Filters ](https://laravel-datatables.com/docs/customization-filters)
- [ Pagination ](https://laravel-datatables.com/docs/customization-pagination)
- [ Sorting Icons ](https://laravel-datatables.com/docs/customization-sorting-icons)
- [ Row Actions ](https://laravel-datatables.com/docs/customization-row-actions)
- [ Multi Row Actions ](https://laravel-datatables.com/docs/customization-multi-row-actions)
- [ Loading Indicator ](https://laravel-datatables.com/docs/customization-loading-indicator)
- [ Exporting ](https://laravel-datatables.com/docs/customization-exporting)
- [ Components ](https://laravel-datatables.com/docs/customization-components)
- [ Data Sources ](https://laravel-datatables.com/docs/customization-data-sources)
- [ State Persistence ](https://laravel-datatables.com/docs/customization-state-persistence)

### Features

- [ Accessibility ](https://laravel-datatables.com/docs/feature-accessibility)
- [ Actions and Forms ](https://laravel-datatables.com/docs/actions-and-forms)
- [ Aggregate Columns ](https://laravel-datatables.com/docs/feature-aggregate-columns)
- [ Column Reordering ](https://laravel-datatables.com/docs/feature-column-reordering)
- [ Column Visibility ](https://laravel-datatables.com/docs/feature-column-visibility)
- [ Custom Filters ](https://laravel-datatables.com/docs/feature-custom-filters)
- [ Custom Controls ](https://laravel-datatables.com/docs/feature-custom-controls)
- [ Exporting ](https://laravel-datatables.com/docs/feature-exporting)
- [ Freeze Columns and Headers ](https://laravel-datatables.com/docs/feature-freeze-columns-and-headers)
- [ Pagination ](https://laravel-datatables.com/docs/feature-pagination)
- [ Responsive Mobile ](https://laravel-datatables.com/docs/feature-responsive-mobile)
- [ Row Grouping ](https://laravel-datatables.com/docs/feature-row-grouping)
- [ Row Selection ](https://laravel-datatables.com/docs/feature-row-selection)
- [ Sorting and Searching ](https://laravel-datatables.com/docs/sorting-and-searching)
- [ State Persistence ](https://laravel-datatables.com/docs/feature-state-persistence)
- [ Value Preparation ](https://laravel-datatables.com/docs/feature-value-preparation)

### Cell Renderer

- [ Action Buttons ](https://laravel-datatables.com/docs/renderer-action-buttons)
- [ Avatar ](https://laravel-datatables.com/docs/renderer-avatar)
- [ Checkmark ](https://laravel-datatables.com/docs/renderer-checkmark)
- [ Color Sample ](https://laravel-datatables.com/docs/renderer-color-sample)
- [ Email Link ](https://laravel-datatables.com/docs/renderer-email-to-link)
- [ External Link ](https://laravel-datatables.com/docs/renderer-external-link)
- [ Friendly Timestamp ](https://laravel-datatables.com/docs/renderer-friendly-timestamp)
- [ Image ](https://laravel-datatables.com/docs/renderer-image)
- [ Long Text ](https://laravel-datatables.com/docs/renderer-long-text)
- [ Phone Link ](https://laravel-datatables.com/docs/renderer-phone-link)
- [ Progress Bar ](https://laravel-datatables.com/docs/renderer-progress-bar)
- [ Status Badge ](https://laravel-datatables.com/docs/renderer-status-badge)
- [ URL Link ](https://laravel-datatables.com/docs/renderer-url-link)
- [ Wire Link ](https://laravel-datatables.com/docs/renderer-wire-link)

### Value Formatter

- [ Compact Number ](https://laravel-datatables.com/docs/formatter-compact-number)
- [ Currency ](https://laravel-datatables.com/docs/formatter-currency)
- [ Duration ](https://laravel-datatables.com/docs/formatter-duration)
- [ Friendly Filesize ](https://laravel-datatables.com/docs/formatter-friendly-filesize)
- [ Friendly Timestamp ](https://laravel-datatables.com/docs/formatter-friendly-timestamp)
- [ Locale Timestamp ](https://laravel-datatables.com/docs/formatter-locale-timestamp)
- [ Number ](https://laravel-datatables.com/docs/formatter-number)
- [ Percent ](https://laravel-datatables.com/docs/formatter-percent)

  Multi-Language
==============

This page covers how the package behaves when your application runs in multiple locales.

It highlights locale-aware package formatters and how package-rendered UI updates when locale changes.

1. Package Locale-Aware Formatters
----------------------------------

These package formatters read locale directly or accept locale options:

 Locale-aware formatter map TEXT     `LocaleTimestamp:- uses app()->getLocale()- formats with Carbon locale and isoFormat()/format()Number:- uses app()->getLocale() by default- supports constructor locale overridePercent:- uses app()->getLocale() by default- supports constructor locale overrideCurrency:- can use fixed locale/currency- can resolve locale/currency from row fields (localeCol/currencyCol)FriendlyTimestamp:- uses Carbon::diffForHumans() for relative output` 

 ```
LocaleTimestamp:
- uses app()->getLocale()
- formats with Carbon locale and isoFormat()/format()

Number:
- uses app()->getLocale() by default
- supports constructor locale override

Percent:
- uses app()->getLocale() by default
- supports constructor locale override

Currency:
- can use fixed locale/currency
- can resolve locale/currency from row fields (localeCol/currencyCol)

FriendlyTimestamp:
- uses Carbon::diffForHumans() for relative output
```

 Example datatable columns PHP     `use MorrowIt\LaravelDatatable\Config\Column;use MorrowIt\LaravelDatatable\Formatters\Currency;use MorrowIt\LaravelDatatable\Formatters\LocaleTimestamp;use MorrowIt\LaravelDatatable\Formatters\Number;Column::make('created_at', __('Created'))    ->format(new LocaleTimestamp());Column::make('revenue', __('Revenue'))    ->format(new Currency(currencyCol: 'currency', localeCol: 'locale'));Column::make('ratio', __('Ratio'))    ->format(new Number(locale: 'de_DE', minDecimals: 2, maxDecimals: 2));` 

 ```
use MorrowIt\LaravelDatatable\Config\Column;
use MorrowIt\LaravelDatatable\Formatters\Currency;
use MorrowIt\LaravelDatatable\Formatters\LocaleTimestamp;
use MorrowIt\LaravelDatatable\Formatters\Number;

Column::make('created_at', __('Created'))
    ->format(new LocaleTimestamp());

Column::make('revenue', __('Revenue'))
    ->format(new Currency(currencyCol: 'currency', localeCol: 'locale'));

Column::make('ratio', __('Ratio'))
    ->format(new Number(locale: 'de_DE', minDecimals: 2, maxDecimals: 2));
```

2. Package UI Strings After Locale Switch
-----------------------------------------

Package controls and table messaging are translated through Laravel helpers, so they switch language with your active app locale.

 Package text surfaces affected by locale TEXT     `- Search placeholder and aria labels- Settings menu labels (Items per page, Filters, Export, Columns)- Filter modal labels (All, From, To, Contains..., Clear all, Done)- Selection banner and grouped table labels (Total, Previous, Next)- Pagination labels and pagination aria labels` 

 ```
- Search placeholder and aria labels
- Settings menu labels (Items per page, Filters, Export, Columns)
- Filter modal labels (All, From, To, Contains..., Clear all, Done)
- Selection banner and grouped table labels (Total, Previous, Next)
- Pagination labels and pagination aria labels
```

3. Runtime Locale Switching With Livewire Tables
------------------------------------------------

Formatters that depend on app()-&gt;getLocale() will emit locale-specific output after re-render when locale changes.

 Locale switch action example PHP     `public function switchLocale(string $locale): void{    if (in_array($locale, config('app.supported_locales', ['en']), true)) {        session(['locale' => $locale]);        app()->setLocale($locale);    }}` 

 ```
public function switchLocale(string $locale): void
{
    if (in_array($locale, config('app.supported_locales', ['en']), true)) {
        session(['locale' => $locale]);
        app()->setLocale($locale);
    }
}
```

If you pin a formatter locale explicitly in constructor options, that column will stay fixed regardless of current app locale.

4. Package-Specific Override Paths
----------------------------------

Use translation files first. If you need theme-specific wording or markup changes, publish and edit package views.

 terminal     `php artisan vendor:publish --tag="laravel-datatable-views" --provider="MorrowIt\LaravelDatatable\LaravelDatatableServiceProvider"` 

 ```
php artisan vendor:publish --tag="laravel-datatable-views" --provider="MorrowIt\LaravelDatatable\LaravelDatatableServiceProvider"
```

 When custom renderer classes are needed TEXT     `If a renderer outputs fixed text that is not translation-aware in your use case,create a project renderer class in app/, then reference it via Column::renderer().` 

 ```
If a renderer outputs fixed text that is not translation-aware in your use case,
create a project renderer class in app/, then reference it via Column::renderer().
```

Multi-Language Checklist
------------------------

Use this checklist for package multi-language validation:

    Check Expected Result     Formatter behavior LocaleTimestamp, Number, Percent, and Currency outputs match expected locale formatting.   Package controls Search, filters, settings, selection banner, and pagination labels are translated.   Pagination keys pagination.previous and pagination.next exist for every supported locale.   Override strategy Translation files are used first; published views or custom renderer classes are used only when needed.    

   © 2026 Copyright (C)  [ Morrow IT Consulting &amp; Services ](https://morrow-it.services)  

 [Terms of Service](https://laravel-datatables.com/legal/terms) [Privacy](https://laravel-datatables.com/legal/privacy) [Legal Disclosure](https://laravel-datatables.com/legal/disclosure)
