PHPackages                             be-interactive/laravel-translation-scanner - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. be-interactive/laravel-translation-scanner

ActiveLibrary[Localization &amp; i18n](/categories/localization)

be-interactive/laravel-translation-scanner
==========================================

A package that scans you repo for translations

v1.1.1(1y ago)0630↓91.7%[4 PRs](https://github.com/be-interactive/laravel-translation-scanner/pulls)MITPHPPHP ^8.3CI passing

Since Apr 2Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/be-interactive/laravel-translation-scanner)[ Packagist](https://packagist.org/packages/be-interactive/laravel-translation-scanner)[ Docs](https://github.com/be-interactive/laravel-translation-scanner)[ GitHub Sponsors](https://github.com/timo-de-winter)[ RSS](/packages/be-interactive-laravel-translation-scanner/feed)WikiDiscussions v1.x Synced 3w ago

READMEChangelog (7)Dependencies (14)Versions (12)Used By (0)

Laravel Translation Scanner
===========================

[](#laravel-translation-scanner)

This package scans your projects for translations and integrates them into spatie translation loader.

[![Latest Version on Packagist](https://camo.githubusercontent.com/95aa4643940e77ddc37909c28d16ca1153b50f0fc2cd426a82e173af7749c7e0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f62652d696e7465726163746976652f7472616e736c6174696f6e2d7363616e6e65722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/be-interactive/translation-scanner)[![GitHub Tests Action Status](https://camo.githubusercontent.com/596ebdb0b14f4386852a1b2f01f0c5f1996e13e7fac138a6f20c85a619825c0c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f62652d696e7465726163746976652f7472616e736c6174696f6e2d7363616e6e65722f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/be-interactive/translation-scanner/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/f56784699493e4dbbf5869330745946abd69767dcd324c37dae5dd8bd5663f9c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f62652d696e7465726163746976652f7472616e736c6174696f6e2d7363616e6e65722f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/be-interactive/translation-scanner/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/f4e9c1bd12919bdb9552114a105f15c6986f358f17a43b80546d9a9179f66f1e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f62652d696e7465726163746976652f7472616e736c6174696f6e2d7363616e6e65722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/be-interactive/translation-scanner)

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require be-interactive/laravel-translation-scanner
```

You can optionally publish the config file like this:

```
php artisan vendor:publish --provider="BeInteractive\TranslationScanner\TranslationScannerServiceProvider" --tag="translation-scanner-config"
```

This package uses `spatie/laravel-translation-loader`, this means you will need to publish both their migrations and ours, in that order:

```
# In this order
php artisan vendor:publish --provider="Spatie\TranslationLoader\TranslationServiceProvider" --tag="translation-loader-migrations"
php artisan vendor:publish --provider="BeInteractive\TranslationScanner\TranslationScannerServiceProvider" --tag="translation-scanner-migrations"
```

After this you can run the migration:

```
php artisan migrate
```

Usage
-----

[](#usage)

This package implements a bridge-like architecture to scan your projects for translations. We do this by using `Scanners`, each of these have their own logic to scan for translations.

### Default scanners

[](#default-scanners)

By default, we ship with the following `Scanners`:

- Laravel translation files (scans in the laravel `lang` folder).
- Laravel scanner (scans for `trans` and `__` translations).
- Filament scanner (scans for everything within `make::` functions).
- Regex scanner (allows you to implement a custom regex to scan your projects).

### Basic Implementation

[](#basic-implementation)

Actual usage of these looks like this:

```
\BeInteractive\TranslationScanner\Facades\TranslationScanner::laravel()
    ->filament()
    ->regex('/test/')
    // This stores all language lines
    ->store();
```

You can add options to further improve your scan based on your needs:

```
\BeInteractive\TranslationScanner\Facades\TranslationScanner::filament()->scanFiles();
```

### Store without deleting

[](#store-without-deleting)

By default, the `store()` function will also delete records from the language\_lines table that were not found during that scan. This might not be what you want so you can disble it:

```
\BeInteractive\TranslationScanner\TranslationScanner::laravel()
    ->store(deleteLinesThatWereNotScanned: false);
```

### Only fetching the results

[](#only-fetching-the-results)

Sometimes you may want to execute your very own logic in handling the scanned language lines. To do this you can do the following:

```
\BeInteractive\TranslationScanner\TranslationScanner::laravel()
    ->getLanguageLines(); // Returns an array of all scanned translations
```

### Custom scanners

[](#custom-scanners)

You can also create your own scanners to use your own scanning logic. A scanner might look something like this:

```
use BeInteractive\TranslationScanner\Contracts\Scanner;

class MyCustomScanner implements Scanner
{
    /**
     * @return array{group: string, key: string, text: array{string, string}}
     */
    public function getLanguageLines(): array
    {
        return [
            [ 'group' => 'attributes', 'key' => 'name', 'text' => [ 'en' => 'Name' ] ],
        ];
    }
}
```

And then you can simply implement it using the facade.

```
\BeInteractive\TranslationScanner\TranslationScanner::laravel()
    ->with(new MyCustomScanner())
    ->store();

// Or only use a custom scanner
\BeInteractive\TranslationScanner\TranslationScanner::with(new MyCustomScanner())
    ->store();
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Credits
-------

[](#credits)

- [Martijn Laffort](https://github.com/martijnlaffort)
- [Timo de Winter](https://github.com/timo-de-winter)
- [All Contributors](../../contributors)

License
-------

[](#license)

Please see [License File](LICENSE.md) for more information.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance69

Regular maintenance activity

Popularity13

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 61.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~46 days

Recently: every ~65 days

Total

7

Last Release

172d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3807812?v=4)[BE-Interactive B.V.](/maintainers/be-interactive)[@be-interactive](https://github.com/be-interactive)

![](https://www.gravatar.com/avatar/fd9a1bef805a3d82b0410d5d0e7c3a6186cdd9aa18fd0262c56f97d7ddb70631?d=identicon)[timo\_beinter](/maintainers/timo_beinter)

---

Top Contributors

[![timo-de-winter](https://avatars.githubusercontent.com/u/52080998?v=4)](https://github.com/timo-de-winter "timo-de-winter (19 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (5 commits)")[![martijnlaffort](https://avatars.githubusercontent.com/u/58423267?v=4)](https://github.com/martijnlaffort "martijnlaffort (4 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (3 commits)")

---

Tags

laravelBE-Interactivetranslation-scanner

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/be-interactive-laravel-translation-scanner/health.svg)

```
[![Health](https://phpackages.com/badges/be-interactive-laravel-translation-scanner/health.svg)](https://phpackages.com/packages/be-interactive-laravel-translation-scanner)
```

###  Alternatives

[spatie/laravel-health

Monitor the health of a Laravel application

87411.3M153](/packages/spatie-laravel-health)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.1M337](/packages/psalm-plugin-laravel)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

815320.5k3](/packages/defstudio-telegraph)[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.3M42](/packages/spatie-laravel-pdf)[laravel/ai

The official AI SDK for Laravel.

9782.1M162](/packages/laravel-ai)[harris21/laravel-fuse

Circuit breaker for Laravel queue jobs. Protect your workers from cascading failures.

43140.3k](/packages/harris21-laravel-fuse)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
