/** * @test */ public function parsesCldrDataCorrectly() { $sampleFilenamePath = __DIR__ . '/../Fixtures/MockCldrData.xml'; $sampleParsedData = (require __DIR__ . '/../Fixtures/MockParsedCldrData.php'); $parser = new I18n\Cldr\CldrParser(); $result = $parser->getParsedData($sampleFilenamePath); $this->assertEquals($sampleParsedData, $result); }
/** * Parses given CLDR files using CldrParser and merges parsed data. * * Merging is done with inheritance in mind, as defined in CLDR specification. * * @param array<string> $sourcePaths Absolute paths to CLDR files (can be one file) * @return array Parsed and merged data */ protected function parseFiles(array $sourcePaths) { $parsedFiles = []; foreach ($sourcePaths as $sourcePath) { $parsedFiles[] = $this->cldrParser->getParsedData($sourcePath); } // Merge all data starting with most generic file so we get proper inheritance $parsedData = $parsedFiles[0]; $parsedFilesCount = count($parsedFiles); for ($i = 1; $i < $parsedFilesCount; ++$i) { $parsedData = $this->mergeTwoParsedFiles($parsedData, $parsedFiles[$i]); } return $parsedData; }