#!/usr/bin/env php $keywords) { $langMessages = array(); foreach ($keywords as $type => $words) { if (!is_array($words)) { $words = array($words); } if ('scenarioOutline' === $type) { $type = 'scenario_outline'; } if (in_array($type, array('given', 'when', 'then', 'and', 'but'))) { $formattedKeywords = array(); foreach ($words as $word) { $formattedWord = trim($word); if ($formattedWord === $word) { $formattedWord = $formattedWord.'<'; // Convert the keywords to the syntax used by Gherkin 2, which is expected by our Lexer. } $formattedKeywords[] = $formattedWord; } $words = $formattedKeywords; } usort($words, function($type1, $type2) { return mb_strlen($type2, 'utf8') - mb_strlen($type1, 'utf8'); }); $langMessages[$type] = implode('|', $words); } // ensure that the order of keys is consistent between updates ksort($langMessages); $array[$lang] = $langMessages; } // ensure that the languages are sorted to avoid useless diffs between updates. We keep the English first though as it is the reference. $enData = $array['en']; unset($array['en']); ksort($array); $array = array_merge(array('en' => $enData), $array); $arrayString = var_export($array, true); file_put_contents(__DIR__.'/../i18n.php', <<