High-performance streaming XLIFF parser for TYPO3 supporting large translation files (10MB+) with constant memory footprint.
- High Performance: 60x faster than SimpleXML for large files (90 seconds vs 90 minutes)
- Memory Efficient: 30x memory reduction (30MB vs 900MB for 108MB file)
- Constant Memory: Memory usage independent of file size
- XLIFF Support: Full XLIFF 1.0, 1.2, and 2.0 support (trans-unit and unit elements)
- XXE Protection: Built-in protection against XML External Entity attacks
- Generator Pattern: Stream-based processing for optimal resource usage
Install via Composer:
composer require netresearch/nr-xliff-streaminguse Netresearch\NrXliffStreaming\Parser\XliffStreamingParser;
$parser = new XliffStreamingParser();
$xliffContent = file_get_contents('path/to/large-translation.xlf');
foreach ($parser->parseTransUnits($xliffContent) as $unit) {
echo sprintf(
"ID: %s\nSource: %s\nTarget: %s\n\n",
$unit['id'],
$unit['source'],
$unit['target'] ?? '(untranslated)'
);
}use Netresearch\NrXliffStreaming\Parser\XliffStreamingParser;
final class MyTranslationService
{
public function __construct(
private readonly XliffStreamingParser $xliffParser
) {}
public function importTranslations(string $xliffContent): void
{
foreach ($this->xliffParser->parseTransUnits($xliffContent) as $unit) {
// Process translation unit
}
}
}| File Size | SimpleXML Memory | Streaming Memory | SimpleXML Time | Streaming Time |
|---|---|---|---|---|
| 1 MB | 8 MB | 30 MB | 0.5s | 0.1s |
| 10 MB | 80 MB | 30 MB | 5s | 0.5s |
| 100 MB | 800 MB | 30 MB | 90min | 90s |
- XLIFF 1.0: No namespace,
<trans-unit>elements - XLIFF 1.2:
urn:oasis:names:tc:xliff:document:1.2,<trans-unit>elements - XLIFF 2.0:
urn:oasis:names:tc:xliff:document:2.0,<unit>+<segment>elements
This extension provides built-in protection against:
- XXE (XML External Entity) Attacks - CWE-611
- Billion Laughs Attack - Entity expansion DoS
- SSRF via XXE - Server-Side Request Forgery
All XML parsing uses LIBXML_NONET flag to prevent network access during parsing.
- TYPO3 13.4+
- PHP 8.2, 8.3, or 8.4
# Install dependencies
composer install
# Run tests
composer test
# Run unit tests only
composer test:unit
# Code quality
composer lint
composer fix
composer analyseDeveloped by Netresearch DTT GmbH
GPL-2.0-or-later. See LICENSE for details.