Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsgiehl <stefan@piwik.org>2016-12-27 00:55:14 +0300
committersgiehl <stefan@piwik.org>2016-12-27 00:56:14 +0300
commit496cf1fb290de03d48fcb6ef650c29f24458ba69 (patch)
tree0d6d902b8221dbf8de1786f26f958d499a1b998f /plugins/LanguagesManager
parent9a9c1e469c4423dc63135bdd29caaf1208df1b1c (diff)
fix false entity decoding in translations
Diffstat (limited to 'plugins/LanguagesManager')
-rw-r--r--plugins/LanguagesManager/Commands/SetTranslations.php2
-rw-r--r--plugins/LanguagesManager/TranslationWriter/Filter/EncodedEntities.php16
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) {