diff options
author | sgiehl <stefan@piwik.org> | 2016-12-27 00:55:14 +0300 |
---|---|---|
committer | sgiehl <stefan@piwik.org> | 2016-12-27 00:56:14 +0300 |
commit | 496cf1fb290de03d48fcb6ef650c29f24458ba69 (patch) | |
tree | 0d6d902b8221dbf8de1786f26f958d499a1b998f /plugins/LanguagesManager | |
parent | 9a9c1e469c4423dc63135bdd29caaf1208df1b1c (diff) |
fix false entity decoding in translations
Diffstat (limited to 'plugins/LanguagesManager')
-rw-r--r-- | plugins/LanguagesManager/Commands/SetTranslations.php | 2 | ||||
-rw-r--r-- | plugins/LanguagesManager/TranslationWriter/Filter/EncodedEntities.php | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/plugins/LanguagesManager/Commands/SetTranslations.php b/plugins/LanguagesManager/Commands/SetTranslations.php index ef4ebdc22a..540471ce59 100644 --- a/plugins/LanguagesManager/Commands/SetTranslations.php +++ b/plugins/LanguagesManager/Commands/SetTranslations.php @@ -80,7 +80,7 @@ class SetTranslations extends TranslationBase $translationWriter->addFilter(new EmptyTranslations()); $translationWriter->addFilter(new ByParameterCount($baseTranslations)); $translationWriter->addFilter(new UnnecassaryWhitespaces($baseTranslations)); - $translationWriter->addFilter(new EncodedEntities()); + $translationWriter->addFilter(new EncodedEntities($baseTranslations)); $translationData = file_get_contents($filename); $translations = json_decode($translationData, true); diff --git a/plugins/LanguagesManager/TranslationWriter/Filter/EncodedEntities.php b/plugins/LanguagesManager/TranslationWriter/Filter/EncodedEntities.php index 492ad6953a..ad5b0605a5 100644 --- a/plugins/LanguagesManager/TranslationWriter/Filter/EncodedEntities.php +++ b/plugins/LanguagesManager/TranslationWriter/Filter/EncodedEntities.php @@ -13,6 +13,18 @@ use Piwik\Translate; class EncodedEntities extends FilterAbstract { + protected $baseTranslations = array(); + + /** + * Sets base translations + * + * @param array $baseTranslations + */ + public function __construct($baseTranslations = array()) + { + $this->baseTranslations = $baseTranslations; + } + /** * Decodes all encoded entities in the given translations * @@ -25,6 +37,10 @@ class EncodedEntities extends FilterAbstract foreach ($translations as $pluginName => $pluginTranslations) { foreach ($pluginTranslations as $key => $translation) { + if ($this->baseTranslations[$pluginName][$key] != Translate::clean($this->baseTranslations[$pluginName][$key])) { + continue; // skip if base translation already contains encoded entities + } + // remove encoded entities $decoded = Translate::clean($translation); if ($translation != $decoded) { |