/** * Merge the translations of two translations. * * @param Translation $from * @param Translation $to * @param int $options */ public static function mergeTranslation(Translation $from, Translation $to, $options = self::DEFAULTS) { $override = (bool) ($options & self::TRANSLATION_OVERRIDE); if (!$to->hasTranslation() || $from->hasTranslation() && $override) { $to->setTranslation($from->getTranslation()); } if (!$to->hasPlural() || $from->hasPlural() && $override) { $to->setPlural($from->getPlural()); } if (!$to->hasPluralTranslations() || $from->hasPluralTranslations() && $override) { $to->setPluralTranslations($from->getPluralTranslations()); } }
/** * Merges this translation with other translation. * * @param Translation $translation The translation to merge with * @param int|null $method One or various Translations::MERGE_* constants to define how to merge the translations */ public function mergeWith(Translation $translation, $method = null) { if ($method === null) { $method = Translations::$mergeDefault; } if (!$this->hasTranslation() || $translation->hasTranslation() && $method & Translations::MERGE_OVERRIDE) { $this->setTranslation($translation->getTranslation()); } if ($method & Translations::MERGE_PLURAL && !$this->hasPlural()) { $this->setPlural($translation->getPlural()); } if ($this->hasPlural() && !$this->hasPluralTranslation() && $translation->hasPluralTranslation()) { $this->pluralTranslation = $translation->getPluralTranslation(); } if ($method & Translations::MERGE_REFERENCES) { foreach ($translation->getReferences() as $reference) { $this->addReference($reference[0], $reference[1]); } } if ($method & Translations::MERGE_COMMENTS) { $this->comments = array_values(array_unique(array_merge($translation->getComments(), $this->comments))); $this->extractedComments = array_values(array_unique(array_merge($translation->getExtractedComments(), $this->extractedComments))); $this->flags = array_values(array_unique(array_merge($translation->getFlags(), $this->flags))); } }