Configuration File
The Composer Translation Validator can be configured using various configuration file formats to customize validation behavior, specify paths and control which validators are used.
TIP
The configuration schema is validated automatically when using JSON or YAML format files.
Supported Formats
The configuration can be specified in the following formats:
- PHP (
.php) - Full programmatic control - JSON (
.json) - Simple structured format - YAML (
.yamlor.yml) - Human-readable format
PHP Configuration
Create a PHP file that returns a configured TranslationValidatorConfig instance:
<?php
declare(strict_types=1);
use MoveElevator\ComposerTranslationValidator\Config\TranslationValidatorConfig;
$config = new TranslationValidatorConfig();
$config->setPaths(['translations/', 'locale/'])
->setFormat('json')
->setStrict(true)
->setOnly([
'MoveElevator\\ComposerTranslationValidator\\Validator\\MismatchValidator',
'MoveElevator\\ComposerTranslationValidator\\Validator\\DuplicateKeysValidator',
])
->setExclude(['**/backup/**', '**/cache/**']);
return $config;Enabling DuplicateValuesValidator in PHP
Explicitly include it in the only option:
<?php
declare(strict_types=1);
use MoveElevator\ComposerTranslationValidator\Config\TranslationValidatorConfig;
use MoveElevator\ComposerTranslationValidator\Validator\DuplicateValuesValidator;
$config = new TranslationValidatorConfig();
$config->setPaths(['translations/'])
->setOnly([
DuplicateValuesValidator::class,
]);
return $config;Or remove it from the skip list:
$config = new TranslationValidatorConfig();
$config->setPaths(['translations/'])
->setSkip([]); // Empty skip list enables all validators
return $config;JSON Configuration
Create a JSON file with the following structure:
{
"paths": [
"translations/",
"locale/"
],
"validators": [
"MoveElevator\\ComposerTranslationValidator\\Validator\\MismatchValidator",
"MoveElevator\\ComposerTranslationValidator\\Validator\\DuplicateKeysValidator",
"MoveElevator\\ComposerTranslationValidator\\Validator\\XliffSchemaValidator"
],
"file-detectors": [
"MoveElevator\\ComposerTranslationValidator\\FileDetector\\SuffixFileDetector"
],
"only": [
"MoveElevator\\ComposerTranslationValidator\\Validator\\MismatchValidator"
],
"skip": [
"MoveElevator\\ComposerTranslationValidator\\Validator\\XliffSchemaValidator"
],
"exclude": [
"**/backup/**",
"**/cache/**",
"**/*.bak"
],
"strict": true,
"dry-run": false,
"format": "json",
"verbose": false
}Enabling DuplicateValuesValidator in JSON
Set an empty skip array:
{
"paths": ["translations/"],
"skip": []
}Or use the only option:
{
"paths": ["translations/"],
"only": [
"MoveElevator\\ComposerTranslationValidator\\Validator\\DuplicateValuesValidator"
]
}YAML Configuration
Create a YAML file with the following structure:
paths:
- translations/
- locale/
validators:
- MoveElevator\ComposerTranslationValidator\Validator\MismatchValidator
- MoveElevator\ComposerTranslationValidator\Validator\DuplicateKeysValidator
- MoveElevator\ComposerTranslationValidator\Validator\XliffSchemaValidator
file-detectors:
- MoveElevator\ComposerTranslationValidator\FileDetector\SuffixFileDetector
only:
- MoveElevator\ComposerTranslationValidator\Validator\MismatchValidator
skip:
- MoveElevator\ComposerTranslationValidator\Validator\XliffSchemaValidator
exclude:
- "**/backup/**"
- "**/cache/**"
- "**/*.bak"
strict: true
dry-run: false
format: cli
verbose: falseEnabling DuplicateValuesValidator in YAML
Set an empty skip array:
paths:
- translations/
skip: []Or use the only option:
paths:
- translations/
only:
- MoveElevator\ComposerTranslationValidator\Validator\DuplicateValuesValidatorValidator Settings
Some validators accept additional configuration options:
validator-settings:
KeyCountValidator:
threshold: 500 # Warn when files have more than 500 keys
KeyDepthValidator:
threshold: 5 # Warn when keys have more than 5 nesting levels
KeyNamingConventionValidator:
convention: snake_case # Enforce snake_case namingSee the Validators Reference for validator-specific options.
Configuration in composer.json
You can also specify the path to a configuration file in your composer.json:
{
"extra": {
"translation-validator": {
"config-file": "./translation-validator.json"
}
}
}Auto-Detection Order
The plugin automatically searches for configuration files in this order:
translation-validator.phptranslation-validator.jsontranslation-validator.yamltranslation-validator.yml