Decode and translate ACRISS vehicle classification codes in PHP.
lacatoire/acriss-code is a PHP library to parse, validate, and translate ACRISS codes (used by rental companies to describe vehicles).
It supports typed enums, Symfony integration, and multilingual translations (EN, FR, IT).
composer require lacatoire/acriss-codeSymfony Flex will register the bundle automatically if you're using Symfony.
- ✅ Strongly-typed with PHP enums
- ✅ Decode ACRISS 4-letter codes into structured objects
- ✅ Translate ACRISS codes into human-readable strings (EN, FR, IT)
- ✅ Framework-agnostic core (usable with Laravel, Symfony, or standalone)
- ✅ Symfony integration via bundle
- ✅ 100% tested with PHPUnit
use Acriss\AcrissCodeParser;
$parser = new AcrissCodeParser();
$code = $parser->parse('CDMR');
echo $code->category->value;use Acriss\AcrissTranslator;
$translator = new AcrissTranslator($translatorService);
$labels = $translator->translate($code, 'fr');
echo $labels->category;
echo $labels->fuelAirCon;use Acriss\AcrissCodeDetails;
$details = (new AcrissCodeDetails($parser, $translator))->get('CDMR', 'it');
// $details->original is an AcrissCode
// $details->translated is a TranslatedAcrissCode
echo $details->translated->transmission; // "Manuale"class AcrissCode {
public AcrissCategory $category;
public AcrissType $type;
public TransmissionDrive $transmission;
public FuelAirConditioning $fuelAirCon;
}class TranslatedAcrissCode {
public string $category;
public string $type;
public string $transmission;
public string $fuelAirCon;
}class AcrissCodeDetails {
public AcrissCode $original;
public TranslatedAcrissCode $translated;
}composer install
./vendor/bin/phpunituse Acriss\AcrissTranslator;
$translator = new AcrissTranslator($this->translator);- Compatible with Symfony translation (TranslatorInterface)
- Drop translations in translations/messages.[locale].yaml
- Autowiring-ready if registered as a bundle (optional)
use Illuminate\Translation\Translator;
use Acriss\AcrissTranslator;
$acriss = new AcrissTranslator(app(Translator::class));- Use any Laravel translator via adapter or service container
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\YamlFileLoader;
use Acriss\AcrissTranslator;
$translator = new Translator('fr');
$translator->addLoader('yaml', new YamlFileLoader());
$translator->addResource('yaml', __DIR__.'/translations/messages.fr.yaml', 'fr');
$acriss = new AcrissTranslator($translator);src/
Acriss/
Enum/ // ACRISS enums (category, type, etc.)
Model/ // AcrissCode value object
AcrissCodeParser.php
AcrissTranslator.php
AcrissCodeDetails.php
tests/ // PHPUnit tests
translations/ // Symfony-compatible translations (en, fr, it, de)
en– English (default)fr– Françaisit– Italianode– Deutsch
Want to add more? PRs welcome 👌
This library is open-sourced under the MIT license.
docker run --rm -v "${PWD}:/app" -w /app php:8.3-cli bash -c "apt update && apt install -y git unzip curl > /dev/null && curl -sS https://getcomposer.org/installer | php && php composer.phar install && php vendor/bin/phpunit"