diff --git a/core/DataTable/Filter/CalculateEvolutionFilter.php b/core/DataTable/Filter/CalculateEvolutionFilter.php
index 5af658bad6de2a4058019b51d8ff033684f8fad0..73274c537dc9e6ea3728b070cc90cfc3d0e76814 100755
--- a/core/DataTable/Filter/CalculateEvolutionFilter.php
+++ b/core/DataTable/Filter/CalculateEvolutionFilter.php
@@ -11,6 +11,7 @@ namespace Piwik\DataTable\Filter;
 use Piwik\Common;
 use Piwik\DataTable;
 use Piwik\DataTable\Row;
+use Piwik\NumberFormatter;
 use Piwik\Site;
 
 /**
@@ -157,10 +158,10 @@ class CalculateEvolutionFilter extends ColumnCallbackAddColumnPercentage
     {
         $number = self::getPercentageValue($currentValue - $pastValue, $pastValue, $quotientPrecision);
         if ($appendPercentSign) {
-            $number = self::appendPercentSign($number);
+            return NumberFormatter::getInstance()->formatPercent($number, $quotientPrecision);
         }
 
-        return $number;
+        return NumberFormatter::getInstance()->format($number, $quotientPrecision);
     }
 
     public static function appendPercentSign($number)
diff --git a/core/Metrics/Formatter.php b/core/Metrics/Formatter.php
index 69d32bc6286aceabd5d43812669167cbe519710d..8fbe5cbb89c7b0b37f06a232fd8f8858ee80484c 100644
--- a/core/Metrics/Formatter.php
+++ b/core/Metrics/Formatter.php
@@ -11,6 +11,7 @@ use Piwik\Common;
 use Piwik\Container\StaticContainer;
 use Piwik\DataTable;
 use Piwik\Intl\Data\Provider\CurrencyDataProvider;
+use Piwik\NumberFormatter;
 use Piwik\Piwik;
 use Piwik\Plugin\Metric;
 use Piwik\Plugin\ProcessedMetric;
@@ -98,7 +99,7 @@ class Formatter
 
         $seconds   = $minusDaysAndHours - $minutes * 60;
         $precision = ($seconds > 0 && $seconds < 0.01 ? 3 : 2);
-        $seconds   = round($seconds, $precision);
+        $seconds   = NumberFormatter::getInstance()->formatNumber(round($seconds, $precision), $precision);
 
         if ($years > 0) {
             $return = sprintf(Piwik::translate('General_YearsDays'), $years, $days);
diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php
index be874c622423ebfe6b67cbf9a9ff3b2ba9dccf0c..cf38fbd570084a15ca2ac52f3c5e07af1cffd6e2 100644
--- a/core/Plugin/Controller.php
+++ b/core/Plugin/Controller.php
@@ -24,6 +24,7 @@ use Piwik\Menu\MenuTop;
 use Piwik\Menu\MenuUser;
 use Piwik\NoAccessException;
 use Piwik\Notification\Manager as NotificationManager;
+use Piwik\NumberFormatter;
 use Piwik\Period\Month;
 use Piwik\Period;
 use Piwik\Period\PeriodValidator;
@@ -984,6 +985,9 @@ abstract class Controller
             $titleEvolutionPercent = '+' . $titleEvolutionPercent;
         }
 
+        $currentValue = NumberFormatter::getInstance()->format($currentValue);
+        $pastValue    = NumberFormatter::getInstance()->format($pastValue);
+
         $title = Piwik::translate('General_EvolutionSummaryGeneric', array(
                                                                          Piwik::translate('General_NVisits', $currentValue),
                                                                          $date,
diff --git a/core/Twig.php b/core/Twig.php
index 90b9643622712e1207fc7b606bc8871656287f17..6d5b91a24ce8224d91c89f5a1a6df33da63ae7c6 100755
--- a/core/Twig.php
+++ b/core/Twig.php
@@ -85,6 +85,7 @@ class Twig
         $this->addFilter_truncate();
         $this->addFilter_notification();
         $this->addFilter_percentage();
+        $this->addFilter_percent();
         $this->addFilter_prettyDate();
         $this->addFilter_safeDecodeRaw();
         $this->addFilter_number();
@@ -279,6 +280,14 @@ class Twig
         $this->twig->addFilter($percentage);
     }
 
+    protected function addFilter_percent()
+    {
+        $percentage = new Twig_SimpleFilter('percent', function ($string, $precision = 1) {
+            return NumberFormatter::getInstance()->formatPercent($string, $precision);
+        });
+        $this->twig->addFilter($percentage);
+    }
+
     protected function addFilter_number()
     {
         $formatter = new Twig_SimpleFilter('number', function ($string, $minFractionDigits = 0, $maxFractionDigits = 0) {
diff --git a/plugins/Goals/templates/_listTopDimension.twig b/plugins/Goals/templates/_listTopDimension.twig
index 8de4594f58aa9a104144e4f2a6001c634c5f3704..2d63e077b59ee6f83182a950c8b5ef82eaf1f0eb 100644
--- a/plugins/Goals/templates/_listTopDimension.twig
+++ b/plugins/Goals/templates/_listTopDimension.twig
@@ -1,8 +1,8 @@
 {% for element in topDimension %}
     {% set goal_nb_conversion=element.nb_conversions %}
     {% set goal_conversion_rate=element.conversion_rate %}
-    <span class='goalTopElement' title='{{ 'Goals_Conversions'|translate("<b>"~goal_nb_conversion~"</b>")|raw }},
-		{{ 'Goals_ConversionRate'|translate("<b>"~goal_conversion_rate~"</b>")|raw }}'>
+    <span class='goalTopElement' title='{{ 'Goals_Conversions'|translate("<b>"~goal_nb_conversion|number~"</b>")|raw }},
+		{{ 'Goals_ConversionRate'|translate("<b>"~goal_conversion_rate|number~"</b>")|raw }}'>
 	    {{ element.name }}
     </span>
 
diff --git a/plugins/Goals/templates/_titleAndEvolutionGraph.twig b/plugins/Goals/templates/_titleAndEvolutionGraph.twig
index 0a2fdc1e31c9988676cf0a934abf0bf5b59e744f..59657778a6f0cccc011286c1e8bf454a99a1897f 100644
--- a/plugins/Goals/templates/_titleAndEvolutionGraph.twig
+++ b/plugins/Goals/templates/_titleAndEvolutionGraph.twig
@@ -13,14 +13,14 @@
 <div id='leftcolumn' style="clear:both;{% if not isWidget and ecommerce is defined %}width:33%;'{% endif %}">
     <div class="sparkline">{{ sparkline(urlSparklineConversions) }}
         {% if ecommerce is defined %}
-            <strong>{{ nb_conversions }}</strong>
+            <strong>{{ nb_conversions|number }}</strong>
             {{ 'General_EcommerceOrders'|translate }}
             <img src='plugins/Morpheus/images/ecommerceOrder.gif'>
         {% else %}
-            {{ 'Goals_Conversions'|translate("<strong>"~nb_conversions~"</strong>")|raw }}
+            {{ 'Goals_Conversions'|translate("<strong>"~nb_conversions|number~"</strong>")|raw }}
         {% endif %}
         {% if goalAllowMultipleConversionsPerVisit is defined and goalAllowMultipleConversionsPerVisit %}
-            ({{ 'General_NVisits'|translate("<strong>"~nb_visits_converted~"</strong>")|raw }})
+            ({{ 'General_NVisits'|translate("<strong>"~nb_visits_converted|number~"</strong>")|raw }})
         {% endif %}
     </div>
     {% if revenue != 0 or ecommerce is defined %}
@@ -46,14 +46,14 @@
     <div class="sparkline">{{ sparkline(urlSparklineConversionRate) }}
         {% if ecommerce is defined %}
             {% set ecommerceOrdersText %}{{ 'General_EcommerceOrders'|translate }}{% endset %}
-            {{ 'Goals_ConversionRate'|translate("<strong>"~conversion_rate~"</strong> "~ecommerceOrdersText)|raw }}
+            {{ 'Goals_ConversionRate'|translate("<strong>"~conversion_rate|percent~"</strong> "~ecommerceOrdersText)|raw }}
         {% else %}
-            {{ 'Goals_OverallConversionRate'|translate("<strong>"~conversion_rate~"</strong>")|raw }}
+            {{ 'Goals_OverallConversionRate'|translate("<strong>"~conversion_rate|percent~"</strong>")|raw }}
         {% endif %}
     </div>
     {% if ecommerce is defined %}
         <div class="sparkline">{{ sparkline(urlSparklinePurchasedProducts) }}
-            <strong>{{ items }}</strong> {{ 'General_PurchasedProducts'|translate }}</div>
+            <strong>{{ items|number }}</strong> {{ 'General_PurchasedProducts'|translate }}</div>
     {% endif %}
 </div>
 {% if ecommerce is defined %}
@@ -65,7 +65,7 @@
         <div class="sparkline">
             {{ sparkline(cart_urlSparklineConversions) }}
             {% set ecommerceAbandonedCartsText %}{{ 'Goals_AbandonedCart'|translate }}{% endset %}
-            <strong>{{ cart_nb_conversions }}</strong> {{ 'General_VisitsWith'|translate(ecommerceAbandonedCartsText) }}
+            <strong>{{ cart_nb_conversions|number }}</strong> {{ 'General_VisitsWith'|translate(ecommerceAbandonedCartsText) }}
         </div>
 
         <div class="sparkline">
@@ -77,7 +77,7 @@
 
         <div class="sparkline">
             {{ sparkline(cart_urlSparklineConversionRate) }}
-            <strong>{{ cart_conversion_rate }}</strong>
+            <strong>{{ cart_conversion_rate|percent }}</strong>
             {{ 'General_VisitsWith'|translate(ecommerceAbandonedCartsText) }}
         </div>
     </div>
diff --git a/plugins/Goals/templates/getOverviewView.twig b/plugins/Goals/templates/getOverviewView.twig
index 909fd0171197f04d7f6c5764888f9a093ebd2fe7..ce828a8b54feb3e0b1439a7e5dfc1fdf9973cbcc 100644
--- a/plugins/Goals/templates/getOverviewView.twig
+++ b/plugins/Goals/templates/getOverviewView.twig
@@ -21,9 +21,9 @@
         {% endif %}
 
                 <div class="sparkline">{{ sparkline(goal.urlSparklineConversions) }}
-                    {{ 'Goals_Conversions'|translate("<strong>"~nb_conversions~"</strong>")|raw }}
+                    {{ 'Goals_Conversions'|translate("<strong>"~nb_conversions|number~"</strong>")|raw }}
                     {% if goal.goalAllowMultipleConversionsPerVisit %}
-                        ({{ 'General_NVisits'|translate("<strong>"~nb_visits_converted~"</strong>") | raw }})
+                        ({{ 'General_NVisits'|translate("<strong>"~nb_visits_converted|number~"</strong>") | raw }})
                     {% endif %}
                 </div>
 
@@ -33,7 +33,7 @@
         {% endif %}
 
                 <div class="sparkline">{{ sparkline(goal.urlSparklineConversionRate) }}
-                    {{ 'Goals_ConversionRate'|translate("<strong>"~conversion_rate~"</strong>")|raw }}
+                    {{ 'Goals_ConversionRate'|translate("<strong>"~conversion_rate|percent~"</strong>")|raw }}
                 </div>
 
         {% if not isWidget %}
diff --git a/plugins/Referrers/lang/bg.json b/plugins/Referrers/lang/bg.json
index 937703c8e324a9505b1073f05ee906bcf8887c4d..886aaa52a30a15d062a687a21027f59e3e617001 100644
--- a/plugins/Referrers/lang/bg.json
+++ b/plugins/Referrers/lang/bg.json
@@ -45,6 +45,6 @@
         "WidgetGetAll": "Всички препоръчители",
         "WidgetSocials": "Списък на социалните мрежи",
         "WidgetTopKeywordsForPages": "Най-използваните ключови думи",
-        "XPercentOfVisits": "%s%% от посещения"
+        "XPercentOfVisits": "%s от посещения"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/cs.json b/plugins/Referrers/lang/cs.json
index f9640a6869c382d634b6b888492fb9cb5386a7a5..740d25a38bcfa3ea547dd2978887ebb97421235e 100644
--- a/plugins/Referrers/lang/cs.json
+++ b/plugins/Referrers/lang/cs.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "VÅ¡echny referrery",
         "WidgetSocials": "Seznam sociálních sítí",
         "WidgetTopKeywordsForPages": "Nejčastější klíčová slova pro URL stránky",
-        "XPercentOfVisits": "%s%% návštěv"
+        "XPercentOfVisits": "%s návštěv"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/da.json b/plugins/Referrers/lang/da.json
index e48a828521c0324fe33708f3a1b1b9ba186e2308..3701ba19422d050005142298ee921f843922fee6 100644
--- a/plugins/Referrers/lang/da.json
+++ b/plugins/Referrers/lang/da.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Alle henvisninger",
         "WidgetSocials": "Liste af sociale netværk",
         "WidgetTopKeywordsForPages": "Top søgeord til side URL",
-        "XPercentOfVisits": "%s%% af besøg"
+        "XPercentOfVisits": "%s af besøg"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/de.json b/plugins/Referrers/lang/de.json
index f1aebccedcbd4909f81a3934b5e295fa770839d5..ea22dcfc620920092b241ec7140cc627b509242c 100644
--- a/plugins/Referrers/lang/de.json
+++ b/plugins/Referrers/lang/de.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Alle Verweise",
         "WidgetSocials": "Liste Sozialer Netzwerke",
         "WidgetTopKeywordsForPages": "Top-Suchbegriffe für Seiten-URL",
-        "XPercentOfVisits": "%s%% aller Besuche"
+        "XPercentOfVisits": "%s aller Besuche"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/el.json b/plugins/Referrers/lang/el.json
index d6533c4c68e6f8553bc5abeb205e2e1cb9ba338a..ec0a844319e8b91219f75904dc7163f72b02795d 100644
--- a/plugins/Referrers/lang/el.json
+++ b/plugins/Referrers/lang/el.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Όλες οι Παραπομπές",
         "WidgetSocials": "Λίστα κοινωνικών δικτύων",
         "WidgetTopKeywordsForPages": "Δημοφιλέστερες Λέξεις-Κλειδιά για τη Διεύθυνση URL της σελίδας",
-        "XPercentOfVisits": "%s%% των επισκέψεων"
+        "XPercentOfVisits": "%s των επισκέψεων"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/en.json b/plugins/Referrers/lang/en.json
index 1d3355299686a0e1e2e495854c4948df74e7cb28..14f106b9d0449145529bec1af8583663e437e152 100644
--- a/plugins/Referrers/lang/en.json
+++ b/plugins/Referrers/lang/en.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "All Referrers",
         "WidgetSocials": "List of social networks",
         "WidgetTopKeywordsForPages": "Top Keywords for Page URL",
-        "XPercentOfVisits": "%s%% of visits"
+        "XPercentOfVisits": "%s of visits"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/es.json b/plugins/Referrers/lang/es.json
index 32c8cb3a7bca73f066d78eb1ebdfd8add65d5bc2..9d38b45cc830a6c5cbd6f7f46b0db68f8fbadda0 100644
--- a/plugins/Referrers/lang/es.json
+++ b/plugins/Referrers/lang/es.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Todas las referencias",
         "WidgetSocials": "Lista de redes sociales",
         "WidgetTopKeywordsForPages": "Principales palabras clave para el URL de página",
-        "XPercentOfVisits": "%s%% de visitas"
+        "XPercentOfVisits": "%s de visitas"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/et.json b/plugins/Referrers/lang/et.json
index f2d0d0dc8a2232ac0cb972023d6c22eea81ba1a4..a91f3185bc1fa343b1c4625938934a6274c3b410 100644
--- a/plugins/Referrers/lang/et.json
+++ b/plugins/Referrers/lang/et.json
@@ -29,6 +29,6 @@
         "WidgetGetAll": "Kõik viitajad",
         "WidgetSocials": "Nimekiri sotsiaalvõrgustikest",
         "WidgetTopKeywordsForPages": "Lehe URL peamised võtmesõnad",
-        "XPercentOfVisits": "%s%% külastustest"
+        "XPercentOfVisits": "%s külastustest"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/fi.json b/plugins/Referrers/lang/fi.json
index 8131fe33a816b0f072b7a1e87f6cc7c9ceaf4156..7e2ac0ed16a96ea54bd400fd867960d03f8e0569 100644
--- a/plugins/Referrers/lang/fi.json
+++ b/plugins/Referrers/lang/fi.json
@@ -48,6 +48,6 @@
         "WidgetGetAll": "Kaikki viittaukset",
         "WidgetSocials": "Sosiaalisten verkostojen lista",
         "WidgetTopKeywordsForPages": "Käytetyimmät avainsanat sivun URL:lle",
-        "XPercentOfVisits": "%s%% kävijöistä"
+        "XPercentOfVisits": "%s kävijöistä"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/fr.json b/plugins/Referrers/lang/fr.json
index ff7aa07f750a284cd23b8b5a238a4341111e965e..864f8b31a36b8709a09b3ea9bf71d977126e3d7f 100644
--- a/plugins/Referrers/lang/fr.json
+++ b/plugins/Referrers/lang/fr.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Tous les référents",
         "WidgetSocials": "Liste des réseaux sociaux",
         "WidgetTopKeywordsForPages": "Meilleurs mots-clés pour l'URL",
-        "XPercentOfVisits": "%s%% des visites"
+        "XPercentOfVisits": "%s des visites"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/it.json b/plugins/Referrers/lang/it.json
index 94396a0dcd91bd1a5b794be18fafbec99a5671a8..5343975d95ab959551011aede0667d5e617e14af 100644
--- a/plugins/Referrers/lang/it.json
+++ b/plugins/Referrers/lang/it.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Tutti i Referenti",
         "WidgetSocials": "Elenco di social network",
         "WidgetTopKeywordsForPages": "Top Keyword per URL Pagina",
-        "XPercentOfVisits": "%s%% di visite"
+        "XPercentOfVisits": "%s di visite"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/ja.json b/plugins/Referrers/lang/ja.json
index db6978a8f1ac5b2065ef19c4531a37bd590e5dec..f5b1e178a432b7ae0e73b86397239a555db1ca51 100644
--- a/plugins/Referrers/lang/ja.json
+++ b/plugins/Referrers/lang/ja.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "全参照元",
         "WidgetSocials": "ソーシャルネットワークのリスト",
         "WidgetTopKeywordsForPages": "ページ URL のトップキーワード",
-        "XPercentOfVisits": "訪問の %s%%"
+        "XPercentOfVisits": "訪問の %s"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/nb.json b/plugins/Referrers/lang/nb.json
index ee64f7ba5ab6ba6c8ea18e6b77f946e6cfb10018..c521750718359dc7f1d1e0f9e40a5ce1bce8e328 100644
--- a/plugins/Referrers/lang/nb.json
+++ b/plugins/Referrers/lang/nb.json
@@ -32,6 +32,6 @@
         "WidgetExternalWebsites": "Liste over eksterne nettsteder",
         "WidgetGetAll": "Alle henvisere",
         "WidgetSocials": "Liste over sosiale nettverk",
-        "XPercentOfVisits": "%s%% av besøk"
+        "XPercentOfVisits": "%s av besøk"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/nl.json b/plugins/Referrers/lang/nl.json
index 90630685820d8ed5f5a1f6de650f6a2d1fd26f7a..648c1f51a13f433dadf8f9e7dc588e5f648d56a8 100644
--- a/plugins/Referrers/lang/nl.json
+++ b/plugins/Referrers/lang/nl.json
@@ -47,6 +47,6 @@
         "WidgetGetAll": "Alle Referers",
         "WidgetSocials": "Lijst van sociale netwerken",
         "WidgetTopKeywordsForPages": "Top sleutelwoorden voor pagina URL",
-        "XPercentOfVisits": "%s%% van de bezoeken"
+        "XPercentOfVisits": "%s van de bezoeken"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/pt-br.json b/plugins/Referrers/lang/pt-br.json
index 64174e7f01248ee4b6d09212d927639531baafca..7204ca60696bd9dfd4b2e42d0182f18fc33d4cf8 100644
--- a/plugins/Referrers/lang/pt-br.json
+++ b/plugins/Referrers/lang/pt-br.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Todos os Referenciadores",
         "WidgetSocials": "Lista de redes sociais",
         "WidgetTopKeywordsForPages": "Principais Palavras-chave para a URL da página",
-        "XPercentOfVisits": "%s%% de visitas"
+        "XPercentOfVisits": "%s de visitas"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/ro.json b/plugins/Referrers/lang/ro.json
index bd6b9f538f46c4f39cf1a4279d08b003b13ce19b..ea2c7aec8260cd33a566e3bf70f3b88aa2fe3342 100644
--- a/plugins/Referrers/lang/ro.json
+++ b/plugins/Referrers/lang/ro.json
@@ -48,6 +48,6 @@
         "WidgetGetAll": "Toti Referalii",
         "WidgetSocials": "Listă de reţele sociale",
         "WidgetTopKeywordsForPages": "Cuvinte cheie de top pentru URL-ul paginii",
-        "XPercentOfVisits": "%s%% de vizite"
+        "XPercentOfVisits": "%s de vizite"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/ru.json b/plugins/Referrers/lang/ru.json
index 50dd18267de0a6258aac8afa490ce9fe1538ffe4..1a93015fc251db68d8baf90dafcbf3c16c894399 100644
--- a/plugins/Referrers/lang/ru.json
+++ b/plugins/Referrers/lang/ru.json
@@ -48,6 +48,6 @@
         "WidgetGetAll": "Все источники трафика",
         "WidgetSocials": "Список социальных сетей",
         "WidgetTopKeywordsForPages": "Топ ключевых слов для страницы URL",
-        "XPercentOfVisits": "%s%% посещений"
+        "XPercentOfVisits": "%s посещений"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/sr.json b/plugins/Referrers/lang/sr.json
index 20949babe97c2aa195c945c5220081e3c41ecdd0..1766549e627eef10928f65663b11177177ca8bee 100644
--- a/plugins/Referrers/lang/sr.json
+++ b/plugins/Referrers/lang/sr.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Sve reference",
         "WidgetSocials": "Spisak društvenih mreža",
         "WidgetTopKeywordsForPages": "Najbolje ključne reči za URL",
-        "XPercentOfVisits": "%s%% poseta"
+        "XPercentOfVisits": "%s poseta"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/sv.json b/plugins/Referrers/lang/sv.json
index 3deca310064be949ae67c21d7fa5645168410873..99319376dd613a56d7bf860412aff378e66b2534 100644
--- a/plugins/Referrers/lang/sv.json
+++ b/plugins/Referrers/lang/sv.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "Alla hänvisningar",
         "WidgetSocials": "Lista över sociala nätverk",
         "WidgetTopKeywordsForPages": "Toppnyckelord för sid-URL",
-        "XPercentOfVisits": "%s%% av besökare"
+        "XPercentOfVisits": "%s av besökare"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/tl.json b/plugins/Referrers/lang/tl.json
index bd973da30aed571c6ab50d3afe8a5bc6126cb58b..cd2b2f5adc009ec3e0d649fe4178d15cf31b219d 100644
--- a/plugins/Referrers/lang/tl.json
+++ b/plugins/Referrers/lang/tl.json
@@ -48,6 +48,6 @@
         "WidgetGetAll": "Lahat ng mga Referrer",
         "WidgetSocials": "Listahan ng mga social network",
         "WidgetTopKeywordsForPages": "Nangungunang mga keyword para sa URL ng Pahina",
-        "XPercentOfVisits": "%s%% ng mga pagbisita"
+        "XPercentOfVisits": "%s ng mga pagbisita"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/lang/zh-cn.json b/plugins/Referrers/lang/zh-cn.json
index 7fdef3a5f02784f40e92a7188efc1f9cd84d3d2a..983f89210b0c4381b3bd26d11dd23ddefac240ef 100644
--- a/plugins/Referrers/lang/zh-cn.json
+++ b/plugins/Referrers/lang/zh-cn.json
@@ -50,6 +50,6 @@
         "WidgetGetAll": "所有来源",
         "WidgetSocials": "社交网络",
         "WidgetTopKeywordsForPages": "主要关键词",
-        "XPercentOfVisits": "%s%% 个访问"
+        "XPercentOfVisits": "%s 个访问"
     }
 }
\ No newline at end of file
diff --git a/plugins/Referrers/templates/index.twig b/plugins/Referrers/templates/index.twig
index c6294312105be99482223cfaea7568ba2bb51e40..74851c3b37bdd4833687556e9981a057fae409c8 100644
--- a/plugins/Referrers/templates/index.twig
+++ b/plugins/Referrers/templates/index.twig
@@ -7,18 +7,18 @@
 <div class="row">
     <div class="col-md-6">
         <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineDirectEntry) }}
-            {{ 'Referrers_TypeDirectEntries'|translate("<strong>"~visitorsFromDirectEntry~"</strong>")|raw }}
+            {{ 'Referrers_TypeDirectEntries'|translate("<strong>"~visitorsFromDirectEntry|number~"</strong>")|raw }}
             {% if visitorsFromDirectEntryPercent|default is not empty %},
-                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromDirectEntryPercent~"</strong>")|raw }}
+                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromDirectEntryPercent|percent~"</strong>")|raw }}
             {% endif %}
             {% if visitorsFromDirectEntryEvolution|default is not empty %}
                 {{ visitorsFromDirectEntryEvolution|raw }}
             {% endif %}
         </div>
         <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineSearchEngines) }}
-            {{ 'Referrers_TypeSearchEngines'|translate("<strong>"~visitorsFromSearchEngines~"</strong>")|raw }}
+            {{ 'Referrers_TypeSearchEngines'|translate("<strong>"~visitorsFromSearchEngines|number~"</strong>")|raw }}
             {% if visitorsFromSearchEnginesPercent|default is not empty %},
-                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromSearchEnginesPercent~"</strong>")|raw }}
+                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromSearchEnginesPercent|percent~"</strong>")|raw }}
             {% endif %}
             {% if visitorsFromSearchEnginesEvolution|default is not empty %}
                 {{ visitorsFromSearchEnginesEvolution|raw }}
@@ -27,18 +27,18 @@
     </div>
     <div class="col-md-6">
         <div class="sparkline">{{ sparkline(urlSparklineWebsites) }}
-            {{ 'Referrers_TypeWebsites'|translate("<strong>"~visitorsFromWebsites~"</strong>")|raw }}
+            {{ 'Referrers_TypeWebsites'|translate("<strong>"~visitorsFromWebsites|number~"</strong>")|raw }}
             {% if visitorsFromWebsitesPercent|default is not empty %},
-                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromWebsitesPercent~"</strong>")|raw }}
+                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromWebsitesPercent|percent~"</strong>")|raw }}
             {% endif %}
             {% if visitorsFromWebsitesEvolution|default is not empty %}
                 {{ visitorsFromWebsitesEvolution|raw }}
             {% endif %}
         </div>
         <div class="sparkline">{{ sparkline(urlSparklineCampaigns) }}
-            {{ 'Referrers_TypeCampaigns'|translate("<strong>"~visitorsFromCampaigns~"</strong>")|raw }}
+            {{ 'Referrers_TypeCampaigns'|translate("<strong>"~visitorsFromCampaigns|number~"</strong>")|raw }}
             {% if visitorsFromCampaignsPercent|default is not empty %},
-                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromCampaignsPercent~"</strong>")|raw }}
+                {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromCampaignsPercent|percent~"</strong>")|raw }}
             {% endif %}
             {% if visitorsFromCampaignsEvolution|default is not empty %}
                 {{ visitorsFromCampaignsEvolution|raw }}
@@ -50,13 +50,13 @@
 <div id="distinctReferrersByType" class="row">
     <div class="col-md-6">
         <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineDistinctSearchEngines) }}
-            <strong>{{ numberDistinctSearchEngines }}</strong> {{ 'Referrers_DistinctSearchEngines'|translate }}
+            <strong>{{ numberDistinctSearchEngines|number }}</strong> {{ 'Referrers_DistinctSearchEngines'|translate }}
             {% if numberDistinctSearchEnginesEvolution|default is not empty %}
                 {{ numberDistinctSearchEnginesEvolution|raw }}
             {% endif %}
         </div>
         <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineDistinctKeywords) }}
-            <strong>{{ numberDistinctKeywords }}</strong> {{ 'Referrers_DistinctKeywords'|translate }}
+            <strong>{{ numberDistinctKeywords|number }}</strong> {{ 'Referrers_DistinctKeywords'|translate }}
             {% if numberDistinctKeywordsEvolution|default is not empty %}
                 {{ numberDistinctKeywordsEvolution|raw }}
             {% endif %}
@@ -64,14 +64,14 @@
     </div>
     <div class="col-md-6">
         <div class="sparkline">{{ sparkline(urlSparklineDistinctWebsites) }}
-            <strong>{{ numberDistinctWebsites }}</strong> {{ 'Referrers_DistinctWebsites'|translate }}
-            {{ 'Referrers_UsingNDistinctUrls'|translate("<strong>"~numberDistinctWebsitesUrls~"</strong>")|raw }}
+            <strong>{{ numberDistinctWebsites|number }}</strong> {{ 'Referrers_DistinctWebsites'|translate }}
+            {{ 'Referrers_UsingNDistinctUrls'|translate("<strong>"~numberDistinctWebsitesUrls|number~"</strong>")|raw }}
             {% if numberDistinctWebsitesEvolution|default is not empty %}
                 {{ numberDistinctWebsitesEvolution|raw }}
             {% endif %}
         </div>
         <div class="sparkline">{{ sparkline(urlSparklineDistinctCampaigns) }}
-            <strong>{{ numberDistinctCampaigns }}</strong> {{ 'Referrers_DistinctCampaigns'|translate }}
+            <strong>{{ numberDistinctCampaigns|number }}</strong> {{ 'Referrers_DistinctCampaigns'|translate }}
             {% if numberDistinctCampaignsEvolution|default is not empty %}
                 {{ numberDistinctCampaignsEvolution|raw }}
             {% endif %}
diff --git a/plugins/UserCountry/templates/index.twig b/plugins/UserCountry/templates/index.twig
index fe1a6735dd5eb81833a8cf9c247c1830a4556cdb..01708f5bce455071ba1a0aa8a9c2ee6ddb3693a6 100644
--- a/plugins/UserCountry/templates/index.twig
+++ b/plugins/UserCountry/templates/index.twig
@@ -8,7 +8,7 @@
 
         <div class="sparkline">
             {{ sparkline(urlSparklineCountries) }}
-            {{ 'UserCountry_DistinctCountries'|translate("<strong>"~numberDistinctCountries~"</strong>")|raw }}
+            {{ 'UserCountry_DistinctCountries'|translate("<strong>"~numberDistinctCountries|number~"</strong>")|raw }}
         </div>
         <div style="clear:left"></div>
 
diff --git a/plugins/VisitFrequency/templates/_sparklines.twig b/plugins/VisitFrequency/templates/_sparklines.twig
index c6c123c5e2db075d491740e9ff9884529a8fafec..9c59efb811fb0f6672db612a9360c424d045270f 100644
--- a/plugins/VisitFrequency/templates/_sparklines.twig
+++ b/plugins/VisitFrequency/templates/_sparklines.twig
@@ -6,15 +6,15 @@
 
         <div class="sparkline">
             {{ sparkline(urlSparklineNbVisitsReturning) }}
-            {{ 'VisitFrequency_ReturnVisits'|translate("<strong>"~nbVisitsReturning~"</strong>")|raw }}
+            {{ 'VisitFrequency_ReturnVisits'|translate("<strong>"~nbVisitsReturning|number~"</strong>")|raw }}
         </div>
         <div class="sparkline">
             {{ sparkline(urlSparklineNbActionsReturning) }}
-            {{ 'VisitFrequency_ReturnActions'|translate("<strong>"~nbActionsReturning~"</strong>")|raw }}
+            {{ 'VisitFrequency_ReturnActions'|translate("<strong>"~nbActionsReturning|number~"</strong>")|raw }}
         </div>
         <div class="sparkline">
             {{ sparkline(urlSparklineActionsPerVisitReturning) }}
-            {{ 'VisitFrequency_ReturnAvgActions'|translate("<strong>"~nbActionsPerVisitReturning~"</strong>")|raw }}
+            {{ 'VisitFrequency_ReturnAvgActions'|translate("<strong>"~nbActionsPerVisitReturning|number(1)~"</strong>")|raw }}
         </div>
 
     {% if not isWidget %}
@@ -29,7 +29,7 @@
         </div>
         <div class="sparkline">
             {{ sparkline(urlSparklineBounceRateReturning) }}
-            {{ 'VisitFrequency_ReturnBounceRate'|translate("<strong>"~bounceRateReturning~"</strong>")|raw }}
+            {{ 'VisitFrequency_ReturnBounceRate'|translate("<strong>"~bounceRateReturning|percent~"</strong>")|raw }}
         </div>
         {% include "_sparklineFooter.twig" %}
 
diff --git a/plugins/VisitsSummary/templates/_sparklines.twig b/plugins/VisitsSummary/templates/_sparklines.twig
index 94682a928c3e1f2a6caa20b91fff42a09d2d711a..b00ba537a1a1199c57bdca299a3b57e3e166b3fc 100644
--- a/plugins/VisitsSummary/templates/_sparklines.twig
+++ b/plugins/VisitsSummary/templates/_sparklines.twig
@@ -5,14 +5,14 @@
 
         <div class="sparkline">
             {{ sparkline(urlSparklineNbVisits)|raw }}
-            {{ 'General_NVisits'|translate("<strong>"~nbVisits~"</strong>")|raw }}{% if displayUniqueVisitors %},
-                {{ 'VisitsSummary_NbUniqueVisitors'|translate("<strong>"~nbUniqVisitors~"</strong>")|raw }}{% endif %}
+            {{ 'General_NVisits'|translate("<strong>"~nbVisits|number~"</strong>")|raw }}{% if displayUniqueVisitors %},
+                {{ 'VisitsSummary_NbUniqueVisitors'|translate("<strong>"~nbUniqVisitors|number~"</strong>")|raw }}{% endif %}
         </div>
         {% if nbUsers > 0 %}
             {# Most of users will not have used `setUserId` so this would be confusingly zero #}
             <div class="sparkline">
                 {{ sparkline(urlSparklineNbUsers)|raw }}
-                {{ 'General_NUsers'|translate("<strong>"~nbUsers~"</strong>")|raw }}
+                {{ 'General_NUsers'|translate("<strong>"~nbUsers|number~"</strong>")|raw }}
             </div>
         {% endif %}
         <div class="sparkline">
@@ -22,11 +22,11 @@
         </div>
         <div class="sparkline">
             {{ sparkline(urlSparklineBounceRate)|raw }}
-            {{ 'VisitsSummary_NbVisitsBounced'|translate("<strong>"~bounceRate~"</strong>")|raw }}
+            {{ 'VisitsSummary_NbVisitsBounced'|translate("<strong>"~bounceRate|percent~"</strong>")|raw }}
         </div>
         <div class="sparkline">
             {{ sparkline(urlSparklineActionsPerVisit)|raw }}
-            {{ 'VisitsSummary_NbActionsPerVisit'|translate("<strong>"~nbActionsPerVisit~"</strong>")|raw }}
+            {{ 'VisitsSummary_NbActionsPerVisit'|translate("<strong>"~nbActionsPerVisit|number(1)~"</strong>")|raw }}
         </div>
         {% if showActionsPluginReports|default(false) %}
         <div class="sparkline">
@@ -45,36 +45,36 @@
             {% if showOnlyActions %}
                 <div class="sparkline">
                     {{ sparkline(urlSparklineNbActions)|raw }}
-                    {{ 'VisitsSummary_NbActionsDescription'|translate("<strong>"~nbActions~"</strong>")|raw }}
+                    {{ 'VisitsSummary_NbActionsDescription'|translate("<strong>"~nbActions|number~"</strong>")|raw }}
                 </div>
             {% else %}
                 <div class="sparkline">
                     {{ sparkline(urlSparklineNbPageviews)|raw }}
-                    {{ 'VisitsSummary_NbPageviewsDescription'|translate("<strong>"~nbPageviews~"</strong>")|trim|raw }},
-                    {{ 'VisitsSummary_NbUniquePageviewsDescription'|translate("<strong>"~nbUniquePageviews~"</strong>")|raw }}
+                    {{ 'VisitsSummary_NbPageviewsDescription'|translate("<strong>"~nbPageviews|number~"</strong>")|trim|raw }},
+                    {{ 'VisitsSummary_NbUniquePageviewsDescription'|translate("<strong>"~nbUniquePageviews|number~"</strong>")|raw }}
                 </div>
                 {% if displaySiteSearch %}
                     <div class="sparkline">
                         {{ sparkline(urlSparklineNbSearches)|raw }}
-                        {{ 'VisitsSummary_NbSearchesDescription'|translate("<strong>"~nbSearches~"</strong>")|trim|raw }},
-                        {{ 'VisitsSummary_NbKeywordsDescription'|translate("<strong>"~nbKeywords~"</strong>")|raw }}
+                        {{ 'VisitsSummary_NbSearchesDescription'|translate("<strong>"~nbSearches|number~"</strong>")|trim|raw }},
+                        {{ 'VisitsSummary_NbKeywordsDescription'|translate("<strong>"~nbKeywords|number~"</strong>")|raw }}
                     </div>
                 {% endif %}
                 <div class="sparkline">
                         {{ sparkline(urlSparklineNbDownloads)|raw }}
-                        {{ 'VisitsSummary_NbDownloadsDescription'|translate("<strong>"~nbDownloads~"</strong>")|trim|raw }},
-                        {{ 'VisitsSummary_NbUniqueDownloadsDescription'|translate("<strong>"~nbUniqueDownloads~"</strong>")|raw }}
+                        {{ 'VisitsSummary_NbDownloadsDescription'|translate("<strong>"~nbDownloads|number~"</strong>")|trim|raw }},
+                        {{ 'VisitsSummary_NbUniqueDownloadsDescription'|translate("<strong>"~nbUniqueDownloads|number~"</strong>")|raw }}
                 </div>
                 <div class="sparkline">
                         {{ sparkline(urlSparklineNbOutlinks)|raw }}
-                        {{ 'VisitsSummary_NbOutlinksDescription'|translate("<strong>"~nbOutlinks~"</strong>")|trim|raw }},
-                        {{ 'VisitsSummary_NbUniqueOutlinksDescription'|translate("<strong>"~nbUniqueOutlinks~"</strong>")|raw }}
+                        {{ 'VisitsSummary_NbOutlinksDescription'|translate("<strong>"~nbOutlinks|number~"</strong>")|trim|raw }},
+                        {{ 'VisitsSummary_NbUniqueOutlinksDescription'|translate("<strong>"~nbUniqueOutlinks|number~"</strong>")|raw }}
                 </div>
                 {% endif %}
         {% endif %}
         <div class="sparkline">
                 {{ sparkline(urlSparklineMaxActions)|raw }}
-                {{ 'VisitsSummary_MaxNbActions'|translate("<strong>"~maxActions~"</strong>")|raw }}
+                {{ 'VisitsSummary_MaxNbActions'|translate("<strong>"~maxActions|number~"</strong>")|raw }}
         </div>
 
         {{ postEvent('Template.VisitsSummaryOverviewSparklines') }}