/** * Merges this translation with other translation * * @param Translation $translation The translation to merge with * @param integer|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()) { $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))); } }
/** * 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()); } }
/** * @param Translation $otherTranslation * @return TranslationRow|null */ public function getFirstDifferentTranslation(Translation $otherTranslation) { /** @var TranslationRow $translation */ foreach ($this->getTranslations() as $translation) { $oldTranslation = $otherTranslation->getTranslation($translation->getIso2()); if ($oldTranslation === null || $translation->getName() !== $oldTranslation->getName()) { return $translation; } } return null; }