public function execute() { global $wgTranslateGroupFiles, $wgTranslateYamlLibrary; $documents = array(); $times = array(); $mems = array(); $mempeaks = array(); foreach (array('syck', 'spyc', 'phpyaml') as $driver) { $mempeaks[$driver] = -memory_get_peak_usage(true); $mems[$driver] = -memory_get_usage(true); $times[$driver] = -microtime(true); $wgTranslateYamlLibrary = $driver; $documents[$driver] = array(); foreach ($wgTranslateGroupFiles as $file) { foreach (self::parseGroupFile($file) as $id => $docu) { $documents[$driver]["{$file}-{$id}"] = $docu; } } $times[$driver] += microtime(true); $mems[$driver] += memory_get_usage(true); $mempeaks[$driver] += memory_get_peak_usage(true); self::sortNestedArrayAssoc($documents[$driver]); file_put_contents("yaml-test-{$driver}.txt", var_export($documents[$driver], true)); file_put_contents("yaml-output-{$driver}.txt", TranslateYaml::dump($documents[$driver])); } var_dump($times); var_dump($mems); var_dump($mempeaks); }
/** * @param $collection MessageCollection * @return string */ protected function writeReal(MessageCollection $collection) { $output = $this->doHeader($collection); $output .= $this->doAuthors($collection); $mangler = $this->group->getMangler(); $messages = array(); /** * @var $m TMessage */ foreach ($collection as $key => $m) { $key = $mangler->unmangle($key); $value = $m->translation(); $value = str_replace(TRANSLATE_FUZZY, '', $value); if ($value === '') { continue; } $messages[$key] = $value; } if (!count($messages)) { return false; } $messages = $this->unflatten($messages); // Some groups have messages under language code. if (isset($this->extra['codeAsRoot'])) { $code = $this->group->mapCode($collection->code); $messages = array($code => $messages); } $output .= TranslateYaml::dump($messages); return $output; }
public function execute() { $outRulesets = array(); $outLocales = array(); $doc = new DOMDocument(); $doc->load( 'plurals.xml' ); $rulesets = $doc->getElementsByTagName( "pluralRules" ); foreach ( $rulesets as $ruleset ) { $codes = $ruleset->getAttribute( 'locales' ); $parsed = array(); $rules = $ruleset->getElementsByTagName( "pluralRule" ); foreach ( $rules as $rule ) { $parsed[$rule->getAttribute( 'count' )] = $rule->nodeValue; } $name = "Rule " . chr( count( $outRulesets ) + 65 ); // Special names for some rules... might not be useful at all if ( count( $parsed ) === 0 ) { $name = "Zero"; } elseif ( $codes === 'ar' ) { $name = "Arabic"; } elseif ( count( $parsed ) === 1 ) { if ( isset( $parsed['one'] ) && $parsed['one'] === 'n is 1' ) { $name = "Default"; } elseif ( isset( $parsed['one'] ) && $parsed['one'] === 'n in 0..1' ) { $name = "One-zero"; } } elseif ( count( $parsed ) === 2 ) { if ( isset( $parsed['one'] ) && isset( $parsed['two'] ) ) { $name = "Has-dual"; } } $outRulesets[$name] = $parsed; foreach ( explode( ' ', $codes ) as $code ) { $outLocales[$code] = $name; } } file_put_contents( 'plural-cldr.yaml', TranslateYaml::dump( array( 'locales' => $outLocales, 'rulesets' => $outRulesets, ) ) ); }