From cbec998d78318539a206befc88ff9e696541da9a Mon Sep 17 00:00:00 2001 From: Stefan Giehl <stefan@piwik.org> Date: Mon, 5 Dec 2016 18:37:19 +0100 Subject: [PATCH] always unescape escaped % symbols in translations (#10917) * always unescape escaped % symbols in translations * adds new tests to proove %-symbols are escaped in english translations * submodule update --- core/Translation/Translator.php | 2 +- lang/en.json | 2 +- plugins/Actions/lang/en.json | 2 +- plugins/CustomAlerts | 2 +- .../Test/Integration/LanguagesManagerTest.php | 26 +++++++++++++++++++ 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/core/Translation/Translator.php b/core/Translation/Translator.php index af2ae597f2..98b3759f3b 100644 --- a/core/Translation/Translator.php +++ b/core/Translation/Translator.php @@ -84,7 +84,7 @@ class Translator } if (count($args) == 0) { - return $translationId; + return str_replace('%%', '%', $translationId); } return vsprintf($translationId, $args); } diff --git a/lang/en.json b/lang/en.json index ab7e7dcc9c..ce3caaa2fe 100644 --- a/lang/en.json +++ b/lang/en.json @@ -70,7 +70,7 @@ "ColumnPageBounceRateDocumentation": "The percentage of visits that started on this page and left the website straight away.", "ColumnPageviews": "Pageviews", "ColumnPageviewsDocumentation": "The number of times this page was visited.", - "ColumnPercentageVisits": "% Visits", + "ColumnPercentageVisits": "%% Visits", "ColumnRevenue": "Revenue", "ColumnSumVisitLength": "Total time spent by visitors (in seconds)", "ColumnTotalPageviews": "Total Pageviews", diff --git a/plugins/Actions/lang/en.json b/plugins/Actions/lang/en.json index c31dc264ec..27c9b2f72f 100644 --- a/plugins/Actions/lang/en.json +++ b/plugins/Actions/lang/en.json @@ -18,7 +18,7 @@ "ColumnSearchCategory": "Search Category", "ColumnSearches": "Searches", "ColumnSearchesDocumentation": "The number of visits that searched for this keyword on your website's search engine.", - "ColumnSearchExits": "% Search Exits", + "ColumnSearchExits": "%% Search Exits", "ColumnSearchExitsDocumentation": "The percentage of visits that left the website after searching for this Keyword on your Site Search engine.", "ColumnSearchResultsCount": "Search Results Count", "ColumnSiteSearchKeywords": "Unique Keywords", diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts index 49ae454fd7..8c861c9084 160000 --- a/plugins/CustomAlerts +++ b/plugins/CustomAlerts @@ -1 +1 @@ -Subproject commit 49ae454fd7eae39e07300c83e0dff40dda2e4276 +Subproject commit 8c861c9084a25dc36e1176496598a175a1619ee9 diff --git a/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php b/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php index 0ff66919ce..59124a79cd 100755 --- a/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php +++ b/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php @@ -155,6 +155,32 @@ class LanguagesManagerTest extends \PHPUnit_Framework_TestCase } } + /** + * check all english translations do not contain unescaped % symbols + * + * @group Plugins + * @group numbered2 + */ + function testTranslationsUseEscapedPercentSigns() + { + Cache::flushAll(); + $translator = StaticContainer::get('Piwik\Translation\Translator'); + $translator->reset(); + Translate::loadAllTranslations(); + $translations = $translator->getAllTranslations(); + foreach ($translations AS $plugin => $pluginTranslations) { + if ($plugin == 'Intl') { + continue; // skip generated stuff + } + foreach ($pluginTranslations as $key => $pluginTranslation) { + $pluginTranslation = preg_replace('/(%(?:[1-9]\$)?[a-z])/', '', $pluginTranslation); // remove placeholders + $pluginTranslation = str_replace('%%', '', $pluginTranslation); // remove already escaped symbols + $this->assertEquals(0, substr_count($pluginTranslation, '%'), + sprintf('%s.%s must use escaped %% symbols', $plugin, $key)); + } + } + } + /** * test English short name for language * -- GitLab