mindtwo/laravel-missing-translations

Browser-based viewer and database collector for missing Laravel translation keys.

Maintainers

Package info

github.com/mindtwo/laravel-missing-translations

Homepage

pkg:composer/mindtwo/laravel-missing-translations

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.2.0 2026-05-21 14:30 UTC

This package is auto-updated.

Last update: 2026-05-21 14:31:16 UTC


README

Latest Version on Packagist Software License Tests PHPStan Total Downloads

mindtwo/laravel-missing-translations lists every translation key your application has used together with the value for every configured locale. Missing keys are highlighted, optionally persisted to the database via Lang::handleMissingKeysUsing(), and discoverable through a single inspection route.

The package ships two interchangeable repositories:

  • A file repository that diffs every translation file in the configured main locale against the comparison locales.
  • A database repository backed by a missing_translations table, populated automatically as the application runs.

Requirements

  • PHP 8.2, 8.3, or 8.4
  • Laravel 10, 11, 12, or 13

Laravel 10 is included in the composer constraints for legacy applications, but is not exercised in CI: pestphp/pest-plugin-laravel v3+ dropped Laravel 10. New projects should use Laravel 11 or later.

Installation

composer require mindtwo/laravel-missing-translations

Publish the configuration file (and views, if you intend to customise them):

php artisan vendor:publish --tag=missing-translations-config
php artisan vendor:publish --tag=missing-translations-views

Run the package migration to enable the database repository:

php artisan migrate

Configuration

config/missing-translations.php exposes the following options:

Key Description
allowed_environments Environments where the inspection route is registered.
main_locale Locale used as the source of truth when collecting diffs.
locales Comparison locales.
log_missing_keys Persist keys reported by Lang::handleMissingKeysUsing().
authorization.gate false to disable, true for the default viewMissingTranslations gate, or a custom gate name.
authorization.middleware Middleware applied to the inspection route.
route.prefix URL prefix for the inspection route. Defaults to missing-translations.
repositories.default Default repository (file or database).
repositories.sources Map of repository name → implementation class.

Usage

Visit /<prefix> (defaults to /missing-translations) in an allowed environment to render the translation table. Query parameters:

  • ?only_missing=1 — show only keys that are missing in at least one locale.
  • ?exclude[]=de&exclude[]=fr — hide one or more locales.
  • ?repo=database — switch to the database repository for the current request.

Collecting missing keys manually

php artisan m2:collect-missing-translations --locales=de --locales=fr
php artisan m2:collect-missing-translations --dry-run

Resolving a repository in code

use mindtwo\LaravelMissingTranslations\Services\MissingTranslations;

$missing = app(MissingTranslations::class)
    ->repository('file')
    ->getMissingTranslationsForLocale('de');

Testing

composer test
composer analyse
composer lint
composer format

Changelog

See CHANGELOG for a list of recent changes.

Contributing

See CONTRIBUTING for details.

Security

If you discover a security issue, please email info@mindtwo.de instead of opening a public issue.

Credits

License

The MIT License (MIT). See LICENSE.md.