A PHP library for working with NACE (Nomenclature of Economic Activities) codes used by the European Union for classifying business activities.
- Complete NACE Rev. 2 code database
- Hierarchical structure support (Sections, Divisions, Groups, Codes)
- Multi-language translations (25 languages included)
- Framework-agnostic translation system with adapters for:
- Standalone PHP (zero dependencies)
- Symfony
- Laravel
- PHP 7.1 - 8.4 support
composer require xterr/php-nacecodesuseXterr\NaceCodes\NaceCodesFactory;
$factory = newNaceCodesFactory();
// Get all NACE codes$codes = $factory->getCodes();
// Find a specific code$code = $codes->getByCodeAndVersion('6201', 2);
echo$code->getName(); // "Computer programming activities"echo$code->getCode(); // "6201"// Get sections, divisions, groups$sections = $factory->getSections();
$section = $sections->getByCodeAndVersion('J', 2);
echo$section->getName(); // "INFORMATION AND COMMUNICATION"$divisions = $factory->getDivisions();
$groups = $factory->getGroups();The library includes a zero-dependency translator for standalone usage:
useXterr\NaceCodes\NaceCodesFactory;
useXterr\NaceCodes\Translation\Adapter\ArrayTranslator;
// Create translator with German locale$translator = newArrayTranslator(null, 'de');
$factory = newNaceCodesFactory(null, $translator);
$sections = $factory->getSections();
$section = $sections->getByCodeAndVersion('A', 2);
echo$section->getName(); // "AGRICULTURE, FORESTRY AND FISHING" (original)echo$section->getLocalName(); // "LAND- UND FORSTWIRTSCHAFT, FISCHEREI" (translated)// Change locale at runtime$translator->setLocale('fr');
// Get available locales$locales = $translator->getAvailableLocales();
// ['bg', 'cs', 'da', 'de', 'el', 'es', 'et', 'fi', 'fr', 'hr', 'hu', 'it', 'lt', 'lv', 'mt', 'nl', 'no', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'sv', 'tr']useXterr\NaceCodes\NaceCodesFactory;
useXterr\NaceCodes\Translation\Adapter\SymfonyTranslatorAdapter;
useSymfony\Component\Translation\Translator;
// Your existing Symfony translator$symfonyTranslator = newTranslator('de');
// ... configure loaders and resources$adapter = newSymfonyTranslatorAdapter($symfonyTranslator);
$factory = newNaceCodesFactory(null, $adapter);
$code = $factory->getCodes()->getByCodeAndVersion('0111', 2);
echo$code->getLocalName(); // German translationuseXterr\NaceCodes\NaceCodesFactory;
useXterr\NaceCodes\Translation\Adapter\LaravelTranslatorAdapter;
// In a Laravel application$adapter = newLaravelTranslatorAdapter(app('translator'));
$factory = newNaceCodesFactory(null, $adapter);
$code = $factory->getCodes()->getByCodeAndVersion('0111', 2);
echo$code->getLocalName(); // Translated based on Laravel's localeThe library includes translations for 25 languages:
| Code | Language | Code | Language | Code | Language |
|---|---|---|---|---|---|
| bg | Bulgarian | hr | Croatian | pl | Polish |
| cs | Czech | hu | Hungarian | pt | Portuguese |
| da | Danish | it | Italian | ro | Romanian |
| de | German | lt | Lithuanian | ru | Russian |
| el | Greek | lv | Latvian | sk | Slovak |
| es | Spanish | mt | Maltese | sl | Slovenian |
| et | Estonian | nl | Dutch | sv | Swedish |
| fi | Finnish | no | Norwegian | tr | Turkish |
| fr | French |
$factory = newNaceCodesFactory(?string $baseDirectory = null, ?TranslatorInterface $translator = null);
$factory->getCodes(); // Returns NaceCodes$factory->getSections(); // Returns NaceSections$factory->getDivisions(); // Returns NaceDivisions$factory->getGroups(); // Returns NaceGroups$factory->getMappings(); // Returns NaceCodesMappingsAll entities (NaceCode, NaceSection, NaceDivision, NaceGroup) share these methods:
$entity->getCode(); // NACE code (e.g., "6201", "J", "62", "620")$entity->getName(); // Original English name$entity->getLocalName(); // Translated name (falls back to getName() if no translation)$entity->getVersion(); // NACE version (e.g., 2 for Rev. 2)// Get by code and version$codes->getByCodeAndVersion('6201', 2);
$sections->getByCodeAndVersion('J', 2);
$divisions->getByCodeAndVersion('62', 2);
$groups->getByCodeAndVersion('620', 2);
// Get all by version$codes->getAllByVersion(2);
// Iterationforeach ($codesas$code) {
echo$code->getName();
}
// Countechocount($codes);useXterr\NaceCodes\Translation\Adapter\ArrayTranslator;
$translator = newArrayTranslator(
?TranslationLoaderInterface $loader = null, // Custom loader (optional)
?string $defaultLocale = 'en', // Default locale
?string $fallbackLocale = 'en', // Fallback when translation not found
?string $basePath = null// Custom translations path
);
$translator->setLocale('de');
$translator->getLocale(); // 'de'$translator->setFallbackLocale('en');
$translator->getFallbackLocale(); // 'en'$translator->getAvailableLocales(); // ['bg', 'cs', ...]composer install
./vendor/bin/phpunit- PHP 7.1 or higher
- ext-json
MIT License. See LICENSE for details.
Razvan Ceana - razvan@ceana.ro
Contributions are welcome! Please feel free to submit a Pull Request.