/core/Translate/Filter/ByBaseTranslations.php
PHP | 65 lines | 34 code | 10 blank | 21 comment | 5 complexity | 5407e749092f592c6618cb44abf4fe2c MD5 | raw file
Possible License(s): LGPL-3.0, JSON, MIT, GPL-3.0, LGPL-2.1, GPL-2.0, AGPL-1.0, BSD-2-Clause, BSD-3-Clause
- <?php
- /**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
- namespace Piwik\Translate\Filter;
- /**
- */
- class ByBaseTranslations extends FilterAbstract
- {
- protected $baseTranslations = array();
- /**
- * Sets base translations
- *
- * @param array $baseTranslations
- */
- public function __construct($baseTranslations = array())
- {
- $this->baseTranslations = $baseTranslations;
- }
- /**
- * Removes all translations that aren't present in the base translations set in constructor
- *
- * @param array $translations
- *
- * @return array filtered translations
- */
- public function filter($translations)
- {
- $cleanedTranslations = array();
- foreach ($translations AS $pluginName => $pluginTranslations) {
- if (empty($this->baseTranslations[$pluginName])) {
- $this->filteredData[$pluginName] = $pluginTranslations;
- continue;
- }
- foreach ($pluginTranslations as $key => $translation) {
- if (isset($this->baseTranslations[$pluginName][$key])) {
- $cleanedTranslations[$pluginName][$key] = $translation;
- }
- }
- if (!empty($cleanedTranslations[$pluginName])) {
- $diff = array_diff($translations[$pluginName], $cleanedTranslations[$pluginName]);
- } else {
- $diff = $translations[$pluginName];
- }
- if (!empty($diff)) {
- $this->filteredData[$pluginName] = $diff;
- }
- }
- return $cleanedTranslations;
- }
- }