Skip to content
Devix Open Source

Changelog

Every release of Laravel Translations, newest first. Breaking changes are flagged.

v1.0.0

15 Sep 2026

First release.

Added

  • translations:lint with six checks — missing, unused, placeholder, plural, empty and same — returning reason codes with a file and line, and exiting non-zero so it fails a build.
  • A plural check that nothing else makes: the number of | forms a locale requires, taken from Laravel's own MessageSelector::getPluralIndex, so an Arabic string with two forms where six are needed is caught before it reaches production. Explicit ranges are left alone.
  • A placeholder check that catches :name present in the source and missing from the translation — which renders a page without the name while every test passes.
  • A scanner that reads __, trans, trans_choice, @lang, @choice, Lang::get and $t() across PHP, Blade, JavaScript, TypeScript and Vue, with the file and line of every use, and that reports dynamic keys rather than guessing at them.
  • translations:sync, which adds missing keys and never touches a value that exists.
  • translations:export and translations:import over a CSV with a byte-order mark, one column per locale, where a blank cell means "not yet" and never "erase it".
  • Nested arrays that survive the round trip in both directions, through one flattener with a test.
  • Files written with sorted keys and real indentation, so two translators do not conflict on every line.
  • Console-only registration: nothing from this package runs in a web request.