PHPackages                             kalimeraa/grumphp-laravel-translation-checker - 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. kalimeraa/grumphp-laravel-translation-checker

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

kalimeraa/grumphp-laravel-translation-checker
=============================================

A GrumPHP task that validates Laravel translation files for missing keys, duplicate keys, and synchronization across locales.

v1.0.0(1mo ago)1695↑93.5%MITPHPPHP ^8.1CI passing

Since Apr 14Pushed 1mo agoCompare

[ Source](https://github.com/kalimeraa/grumphp-laravel-translation-checker)[ Packagist](https://packagist.org/packages/kalimeraa/grumphp-laravel-translation-checker)[ Docs](https://github.com/kalimeraa/grumphp-laravel-translation-checker)[ RSS](/packages/kalimeraa-grumphp-laravel-translation-checker/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

GrumPHP Laravel Translation Checker
===================================

[](#grumphp-laravel-translation-checker)

A GrumPHP extension that validates Laravel translation files on every commit. Detects missing keys, duplicate keys, and keeps all locale files synchronized.

Features
--------

[](#features)

- Detects **missing translation keys** across all locales
- Detects **duplicate keys** within language files (PHP silently overwrites duplicates)
- Supports **nested translation keys** (dot notation: `password.reset`)
- **Auto-fix mode**: automatically adds missing keys from the base language
- **Auto-stage mode**: stages fixed files for commit
- **Configurable**: base language, lang path, ignore keys, triggered file extensions
- **Framework agnostic**: works with any PHP project using Laravel-style `lang/` files

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

[](#installation)

```
composer require --dev kalimeraa/grumphp-laravel-translation-checker
```

Configuration
-------------

[](#configuration)

Add the extension and task to your `grumphp.yml`:

```
grumphp:
  extensions:
    - Kalimeraa\GrumPHPTranslationChecker\ExtensionLoader
  tasks:
    translation_checker:
      base_lang: en
      lang_path: lang
      check_duplicates: true
      triggered_by: ['php']
      ignore_keys: []
```

### Options

[](#options)

OptionTypeDefaultDescription`base_lang`string`en`The reference language to compare against`lang_path`string`lang`Path to the language files directory`check_duplicates`bool`true`Check for duplicate keys in files`triggered_by`array`['php']`File extensions that trigger the check`ignore_keys`array`[]`Keys to skip during comparison`auto_fix`bool/string`false`Auto-add missing keys from base language`auto_stage`bool/string`false`Auto `git add` fixed files### Auto-fix Mode

[](#auto-fix-mode)

When `auto_fix` is enabled, missing keys are automatically copied from the base language:

```
translation_checker:
  base_lang: en
  auto_fix: pre_commit     # Fix on commit
  auto_stage: pre_commit   # Stage fixed files
```

Possible values for `auto_fix` and `auto_stage`:

- `false` — disabled (default)
- `true` — always enabled
- `'pre_commit'` — only during git pre-commit
- `'run'` — only during manual `grumphp run`

### Ignoring Keys

[](#ignoring-keys)

Some keys are intentionally the same across languages (e.g., currency codes, abbreviations):

```
translation_checker:
  ignore_keys:
    - EUR
    - USD
    - CRM
    - FAQ
```

Expected Directory Structure
----------------------------

[](#expected-directory-structure)

```
lang/
├── en/
│   ├── general.php
│   ├── auth.php
│   └── validation.php
├── tr/
│   ├── general.php
│   ├── auth.php
│   └── validation.php
└── de/
    ├── general.php
    ├── auth.php
    └── validation.php

```

Each file returns a PHP array:

```
