/** * Generates an array with the translations. * * @param Translations $translations * * @return array */ public static function toArray(Translations $translations) { $array = array(); $context_glue = ""; foreach ($translations as $translation) { $key = ($translation->hasContext() ? $translation->getContext() . $context_glue : '') . $translation->getOriginal(); $entry = array($translation->getPlural(), $translation->getTranslation()); if ($translation->hasPluralTranslation()) { $entry = array_merge($entry, $translation->getPluralTranslation()); } $array[$key] = $entry; } $domain = $translations->getDomain() ?: 'messages'; $lang = $translations->getLanguage() ?: 'en'; $fullArray = array($domain => array('' => array('domain' => $domain, 'lang' => $lang, 'plural-forms' => 'nplurals=2; plural=(n != 1);'))); if ($translations->getHeader('Plural-Forms') !== null) { $fullArray[$domain]['']['plural-forms'] = $translations->getHeader('Plural-Forms'); } $fullArray[$domain] = array_merge($fullArray[$domain], $array); return $fullArray; }
/** * Add the headers found to the translations instance. * * @param string $headers * @param Translations $translations * * @return array */ private static function extractHeaders($headers, Translations $translations) { $headers = explode("\n", $headers); $currentHeader = null; foreach ($headers as $line) { $line = self::convertString($line); if ($line === '') { continue; } if (self::isHeaderDefinition($line)) { $header = array_map('trim', explode(':', $line, 2)); $currentHeader = $header[0]; $translations->setHeader($currentHeader, $header[1]); } else { $entry = $translations->getHeader($currentHeader); $translations->setHeader($currentHeader, $entry . $line); } } }
/** * {@parentDoc}. */ public static function toString(Translations $translations, array $options = []) { $domain = $translations->getDomain() ?: 'messages'; $options += static::$options; return json_encode([$domain => ['' => ['domain' => $domain, 'lang' => $translations->getLanguage() ?: 'en', 'plural-forms' => $translations->getHeader('Plural-Forms') ?: 'nplurals=2; plural=(n != 1);']] + self::buildMessages($translations)], $options['json']); }