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:
-rw-r--r--composer.json2
-rw-r--r--composer.lock77
-rw-r--r--core/CliMulti.php57
-rw-r--r--core/CliMulti/CliPhp.php99
-rw-r--r--core/CronArchive.php2
-rw-r--r--core/DataAccess/ArchiveSelector.php5
-rw-r--r--core/DeviceDetectorCache.php65
-rw-r--r--core/DeviceDetectorFactory.php39
-rw-r--r--core/Filechecks.php36
-rw-r--r--core/Plugin.php25
-rw-r--r--core/Plugin/Controller.php4
-rw-r--r--core/Plugin/ControllerAdmin.php1
-rw-r--r--core/Plugin/Widgets.php2
-rw-r--r--core/SettingsPiwik.php9
-rw-r--r--core/Tracker/Db/Mysqli.php2
-rw-r--r--core/Tracker/VisitExcluded.php30
-rw-r--r--core/testMinimumPhpVersion.php4
-rw-r--r--lang/am.json2
-rw-r--r--lang/ar.json2
-rw-r--r--lang/be.json2
-rw-r--r--lang/bg.json18
-rw-r--r--lang/ca.json2
-rw-r--r--lang/cs.json2
-rw-r--r--lang/da.json54
-rw-r--r--lang/de.json6
-rw-r--r--lang/el.json9
-rw-r--r--lang/en.json5
-rw-r--r--lang/es.json2
-rw-r--r--lang/et.json2
-rw-r--r--lang/eu.json2
-rw-r--r--lang/fa.json2
-rw-r--r--lang/fi.json4
-rw-r--r--lang/fr.json2
-rw-r--r--lang/hi.json2
-rw-r--r--lang/hu.json2
-rw-r--r--lang/id.json2
-rw-r--r--lang/it.json11
-rw-r--r--lang/ja.json49
-rw-r--r--lang/ka.json2
-rw-r--r--lang/ko.json2
-rw-r--r--lang/lt.json2
-rw-r--r--lang/lv.json2
-rw-r--r--lang/nb.json2
-rw-r--r--lang/nl.json21
-rw-r--r--lang/nn.json2
-rw-r--r--lang/pl.json2
-rw-r--r--lang/pt-br.json2
-rw-r--r--lang/pt.json2
-rw-r--r--lang/ro.json12
-rw-r--r--lang/ru.json2
-rw-r--r--lang/sk.json2
-rw-r--r--lang/sl.json1
-rw-r--r--lang/sq.json2
-rw-r--r--lang/sr.json2
-rw-r--r--lang/sv.json2
-rw-r--r--lang/th.json2
-rw-r--r--lang/tr.json2
-rw-r--r--lang/uk.json2
-rw-r--r--lang/vi.json2
-rw-r--r--lang/zh-cn.json6
-rw-r--r--lang/zh-tw.json2
-rw-r--r--libs/UserAgentParser/UserAgentParser.php14
-rw-r--r--libs/upgradephp/upgrade.php6
-rw-r--r--piwik.php19
-rw-r--r--plugins/API/API.php1
-rw-r--r--plugins/API/Menu.php12
-rw-r--r--plugins/CoreConsole/Commands/GenerateWidget.php2
-rw-r--r--plugins/CoreHome/Controller.php2
-rw-r--r--plugins/CoreHome/DataTableRowAction/RowEvolution.php3
-rw-r--r--plugins/CoreHome/Widgets.php2
-rwxr-xr-xplugins/CoreHome/templates/getPromoVideo.twig2
-rw-r--r--plugins/Dashboard/Menu.php19
-rw-r--r--plugins/DevicesDetection/Controller.php63
-rw-r--r--plugins/DevicesDetection/functions.php86
-rw-r--r--plugins/Events/lang/bg.json3
-rw-r--r--plugins/Events/lang/da.json23
-rw-r--r--plugins/Events/lang/nl.json1
-rw-r--r--plugins/ExampleAPI/API.php1
-rw-r--r--plugins/ExamplePlugin/Widgets.php2
-rw-r--r--plugins/ExampleRssWidget/Widgets.php2
-rw-r--r--plugins/Goals/Widgets.php2
-rw-r--r--plugins/Insights/Widgets.php2
-rw-r--r--plugins/Installation/Controller.php29
-rw-r--r--plugins/Installation/FormSuperUser.php22
-rw-r--r--plugins/Installation/SystemCheck.php31
-rw-r--r--plugins/LeftMenu/lang/bg.json5
-rw-r--r--plugins/LeftMenu/lang/da.json10
-rw-r--r--plugins/LeftMenu/lang/el.json10
-rw-r--r--plugins/LeftMenu/lang/it.json10
-rw-r--r--plugins/LeftMenu/lang/nl.json6
-rw-r--r--plugins/Live/Widgets.php2
-rw-r--r--plugins/PrivacyManager/DoNotTrackHeaderChecker.php6
-rw-r--r--plugins/Referrers/Widgets.php2
-rw-r--r--plugins/SEO/Widgets.php2
-rwxr-xr-xplugins/UserCountry/LocationProvider/GeoIp/ServerBased.php37
-rw-r--r--plugins/VisitFrequency/Widgets.php2
-rw-r--r--plugins/VisitsSummary/Widgets.php2
-rw-r--r--tests/PHPUnit/Core/DeprecatedMethodsTest.php2
-rw-r--r--tests/PHPUnit/Core/ReleaseCheckListTest.php4
-rw-r--r--tests/PHPUnit/Fixture.php28
-rw-r--r--tests/PHPUnit/Integration/Core/Tracker/VisitTest.php53
-rw-r--r--tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml28
-rw-r--r--tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest_browserVersion__API.getSuggestedValuesForSegment.xml1
-rw-r--r--tests/PHPUnit/Integration/expected/test_ImportLogs__DevicesDetection.getType_month.xml21
-rw-r--r--tests/PHPUnit/Integration/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml14
-rw-r--r--tests/PHPUnit/Integration/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml8
-rw-r--r--tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv3
-rw-r--r--tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_and_graph__ScheduledReports.generateReport_month.original.html37
-rw-r--r--tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html35
-rwxr-xr-xtests/PHPUnit/IntegrationTestCase.php2
-rw-r--r--tests/PHPUnit/TestingEnvironment.php20
m---------tests/PHPUnit/UI0
-rw-r--r--tests/PHPUnit/bootstrap.php6
-rw-r--r--tests/PHPUnit/proxy/includes.php4
-rwxr-xr-xtests/PHPUnit/travis.sh3
-rw-r--r--tests/lib/screenshot-testing/run-tests.js14
-rw-r--r--tests/lib/screenshot-testing/support/chai-extras.js24
-rw-r--r--tests/lib/screenshot-testing/support/globals.js2
-rw-r--r--tests/lib/screenshot-testing/support/test-environment.js8
-rw-r--r--tests/resources/Config/common.config.ini.php3
-rwxr-xr-xtests/travis/setup_webserver.sh3
-rwxr-xr-xtests/travis/upload_artifacts.sh6
122 files changed, 1053 insertions, 438 deletions
diff --git a/composer.json b/composer.json
index de87087718..4347967b19 100644
--- a/composer.json
+++ b/composer.json
@@ -25,7 +25,7 @@
"symfony/console": ">=v2.3.5",
"tedivm/jshrink": "v0.5.1",
"mustangostang/spyc": "0.5.*",
- "piwik/device-detector": "1.0"
+ "piwik/device-detector": "2.*"
},
"require-dev": {
"phpunit/phpunit": "4.*"
diff --git a/composer.lock b/composer.lock
index e6d9aecfb6..d4813ca099 100644
--- a/composer.lock
+++ b/composer.lock
@@ -3,7 +3,7 @@
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
],
- "hash": "6d358fe10eaef73ee1323cb06cd0e5c8",
+ "hash": "016b7b6646d1d3ec6d8b574b5a6c5561",
"packages": [
{
"name": "leafo/lessphp",
@@ -95,27 +95,30 @@
},
{
"name": "piwik/device-detector",
- "version": "1.0",
+ "version": "2.0",
"source": {
"type": "git",
"url": "https://github.com/piwik/device-detector.git",
- "reference": "ea7c5d8b76def0d8345a4eba59c5f98ec0109de6"
+ "reference": "863ae43f5c68c15ce110516a0f7b11477e2a01c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/piwik/device-detector/zipball/ea7c5d8b76def0d8345a4eba59c5f98ec0109de6",
- "reference": "ea7c5d8b76def0d8345a4eba59c5f98ec0109de6",
+ "url": "https://api.github.com/repos/piwik/device-detector/zipball/863ae43f5c68c15ce110516a0f7b11477e2a01c0",
+ "reference": "863ae43f5c68c15ce110516a0f7b11477e2a01c0",
"shasum": ""
},
"require": {
"mustangostang/spyc": "*",
"php": ">=5.3.1"
},
+ "require-dev": {
+ "phpunit/phpunit": "4.0.*"
+ },
"type": "library",
"autoload": {
- "files": [
- "DeviceDetector.php"
- ]
+ "psr-4": {
+ "DeviceDetector\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -135,36 +138,38 @@
"parser",
"useragent"
],
- "time": "2014-04-03 08:59:48"
+ "time": "2014-05-29 20:51:28"
},
{
"name": "symfony/console",
- "version": "v2.4.4",
+ "version": "v2.5.0",
"target-dir": "Symfony/Component/Console",
"source": {
"type": "git",
"url": "https://github.com/symfony/Console.git",
- "reference": "2e452005b1e1d003d23702d227e23614679eb5ca"
+ "reference": "ef4ca73b0b3a10cbac653d3ca482d0cdd4502b2c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Console/zipball/2e452005b1e1d003d23702d227e23614679eb5ca",
- "reference": "2e452005b1e1d003d23702d227e23614679eb5ca",
+ "url": "https://api.github.com/repos/symfony/Console/zipball/ef4ca73b0b3a10cbac653d3ca482d0cdd4502b2c",
+ "reference": "ef4ca73b0b3a10cbac653d3ca482d0cdd4502b2c",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
+ "psr/log": "~1.0",
"symfony/event-dispatcher": "~2.1"
},
"suggest": {
+ "psr/log": "For using the console logger",
"symfony/event-dispatcher": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.4-dev"
+ "dev-master": "2.5-dev"
}
},
"autoload": {
@@ -190,7 +195,7 @@
],
"description": "Symfony Console Component",
"homepage": "http://symfony.com",
- "time": "2014-04-27 13:34:57"
+ "time": "2014-05-22 08:54:24"
},
{
"name": "tedivm/jshrink",
@@ -294,16 +299,16 @@
"packages-dev": [
{
"name": "phpunit/php-code-coverage",
- "version": "2.0.6",
+ "version": "2.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "bccecf50645068b44f49a84009e2a0499a500b99"
+ "reference": "58401826c8cfc8fd689b60026e91c337df374bca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bccecf50645068b44f49a84009e2a0499a500b99",
- "reference": "bccecf50645068b44f49a84009e2a0499a500b99",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/58401826c8cfc8fd689b60026e91c337df374bca",
+ "reference": "58401826c8cfc8fd689b60026e91c337df374bca",
"shasum": ""
},
"require": {
@@ -355,7 +360,7 @@
"testing",
"xunit"
],
- "time": "2014-04-30 09:01:21"
+ "time": "2014-05-26 14:55:24"
},
{
"name": "phpunit/php-file-iterator",
@@ -542,16 +547,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "4.1.0",
+ "version": "4.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "efb1b1334605594417a3bd466477772d06d460a8"
+ "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb1b1334605594417a3bd466477772d06d460a8",
- "reference": "efb1b1334605594417a3bd466477772d06d460a8",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/939cb801b3b2aa253aedd0b279f40bb8f35cec91",
+ "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91",
"shasum": ""
},
"require": {
@@ -612,20 +617,20 @@
"testing",
"xunit"
],
- "time": "2014-05-02 07:13:40"
+ "time": "2014-06-11 14:15:47"
},
{
"name": "phpunit/phpunit-mock-objects",
- "version": "2.1.0",
+ "version": "2.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c"
+ "reference": "1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/da0eb04d8ee95ec2898187e407e519c118d3d27c",
- "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f",
+ "reference": "1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f",
"shasum": ""
},
"require": {
@@ -669,7 +674,7 @@
"mock",
"xunit"
],
- "time": "2014-05-02 07:04:11"
+ "time": "2014-06-07 16:22:57"
},
{
"name": "sebastian/comparator",
@@ -940,17 +945,17 @@
},
{
"name": "symfony/yaml",
- "version": "v2.4.4",
+ "version": "v2.5.0",
"target-dir": "Symfony/Component/Yaml",
"source": {
"type": "git",
"url": "https://github.com/symfony/Yaml.git",
- "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff"
+ "reference": "b4b09c68ec2f2727574544ef0173684281a5033c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/65539ecde838f9c0d18b006b2101e3deb4b5c9ff",
- "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff",
+ "url": "https://api.github.com/repos/symfony/Yaml/zipball/b4b09c68ec2f2727574544ef0173684281a5033c",
+ "reference": "b4b09c68ec2f2727574544ef0173684281a5033c",
"shasum": ""
},
"require": {
@@ -959,7 +964,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.4-dev"
+ "dev-master": "2.5-dev"
}
},
"autoload": {
@@ -985,7 +990,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "http://symfony.com",
- "time": "2014-04-18 20:37:09"
+ "time": "2014-05-16 14:25:18"
}
],
"aliases": [
diff --git a/core/CliMulti.php b/core/CliMulti.php
index af576f685d..8085631feb 100644
--- a/core/CliMulti.php
+++ b/core/CliMulti.php
@@ -7,6 +7,7 @@
*/
namespace Piwik;
+use Piwik\CliMulti\CliPhp;
use Piwik\CliMulti\Output;
use Piwik\CliMulti\Process;
@@ -157,11 +158,17 @@ class CliMulti {
* What is missing under windows? Detection whether a process is still running in Process::isProcessStillRunning
* and how to send a process into background in start()
*/
- private function supportsAsync()
+ public function supportsAsync()
{
return Process::isSupported() && $this->findPhpBinary();
}
+ private function findPhpBinary()
+ {
+ $cliPhp = new CliPhp();
+ return $cliPhp->findPhpBinary();
+ }
+
private function cleanup()
{
foreach ($this->processes as $pid) {
@@ -204,36 +211,6 @@ class CliMulti {
return SettingsPiwik::rewriteTmpPathWithInstanceId($dir);
}
- private function findPhpBinary()
- {
- if (defined('PHP_BINARY') && $this->isValidPhpType(PHP_BINARY)) {
- return PHP_BINARY;
- }
-
- $bin = '';
-
- if (!empty($_SERVER['_']) && Common::isPhpCliMode()) {
- $bin = $this->getPhpCommandIfValid($_SERVER['_']);
- }
-
- if (empty($bin) && !empty($_SERVER['argv'][0]) && Common::isPhpCliMode()) {
- $bin = $this->getPhpCommandIfValid($_SERVER['argv'][0]);
- }
-
- if (!$this->isValidPhpType($bin)) {
- $bin = shell_exec('which php');
- }
-
- if (!$this->isValidPhpType($bin)) {
- $bin = shell_exec('which php5');
- }
-
- if ($this->isValidPhpType($bin)) {
- return trim($bin);
- }
-
- return false;
- }
private function executeAsyncCli($url, Output $output, $cmdId)
{
@@ -280,23 +257,6 @@ class CliMulti {
return $url;
}
- private function isValidPhpType($path)
- {
- return !empty($path)
- && false === strpos($path, 'fpm')
- && false === strpos($path, 'cgi')
- && false === strpos($path, 'phpunit');
- }
-
- private function getPhpCommandIfValid($path)
- {
- if (!empty($path) && is_executable($path)) {
- if (0 === strpos($path, PHP_BINDIR) && $this->isValidPhpType($path)) {
- return $path;
- }
- }
- }
-
/**
* @param array $piwikUrls
* @return array
@@ -316,4 +276,5 @@ class CliMulti {
return $results;
}
+
}
diff --git a/core/CliMulti/CliPhp.php b/core/CliMulti/CliPhp.php
new file mode 100644
index 0000000000..c7dd2884ec
--- /dev/null
+++ b/core/CliMulti/CliPhp.php
@@ -0,0 +1,99 @@
+<?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\CliMulti;
+
+use Piwik\CliMulti;
+use Piwik\Common;
+use Piwik\Plugins\Installation\SystemCheck;
+
+class CliPhp
+{
+
+ public function findPhpBinary()
+ {
+ if (defined('PHP_BINARY')) {
+
+ if($this->isValidPhpType(PHP_BINARY)) {
+ return PHP_BINARY;
+ }
+
+ if($this->isHhvmBinary(PHP_BINARY)) {
+ return PHP_BINARY . ' --php';
+ }
+ }
+
+ $bin = '';
+
+ if (!empty($_SERVER['_']) && Common::isPhpCliMode()) {
+ $bin = $this->getPhpCommandIfValid($_SERVER['_']);
+ }
+
+ if (empty($bin) && !empty($_SERVER['argv'][0]) && Common::isPhpCliMode()) {
+ $bin = $this->getPhpCommandIfValid($_SERVER['argv'][0]);
+ }
+
+ if (!$this->isValidPhpType($bin)) {
+ $bin = shell_exec('which php');
+ }
+
+ if (!$this->isValidPhpType($bin)) {
+ $bin = shell_exec('which php5');
+ }
+
+ if (!$this->isValidPhpType($bin)) {
+ return false;
+ }
+
+ $bin = trim($bin);
+
+ if (!$this->isValidPhpVersion($bin)) {
+ return false;
+ }
+ return $bin;
+ }
+
+ private function isHhvmBinary($bin)
+ {
+ return false !== strpos($bin, 'hhvm');
+ }
+
+ private function isValidPhpVersion($bin)
+ {
+ $cliVersion = $this->getPhpVersion($bin);
+ $isCliVersionValid = SystemCheck::isPhpVersionValid($cliVersion);
+ return $isCliVersionValid;
+ }
+
+ private function isValidPhpType($path)
+ {
+ return !empty($path)
+ && false === strpos($path, 'fpm')
+ && false === strpos($path, 'cgi')
+ && false === strpos($path, 'phpunit');
+ }
+
+ private function getPhpCommandIfValid($path)
+ {
+ if (!empty($path) && is_executable($path)) {
+ if (0 === strpos($path, PHP_BINDIR) && $this->isValidPhpType($path)) {
+ return $path;
+ }
+ }
+ }
+
+ /**
+ * @param $bin PHP binary
+ * @return string
+ */
+ private function getPhpVersion($bin)
+ {
+ $command = sprintf("%s -r 'echo phpversion();'", $bin);
+ $version = shell_exec($command);
+ return $version;
+ }
+}
diff --git a/core/CronArchive.php b/core/CronArchive.php
index 0a2903ac57..e9392298dc 100644
--- a/core/CronArchive.php
+++ b/core/CronArchive.php
@@ -731,7 +731,7 @@ class CronArchive
return;
}
$token_auth = Common::getRequestVar('token_auth', '', 'string');
- if ($token_auth != $this->token_auth
+ if ($token_auth !== $this->token_auth
|| strlen($token_auth) != 32
) {
die('<b>You must specify the Super User token_auth as a parameter to this script, eg. <code>?token_auth=XYZ</code> if you wish to run this script through the browser. </b><br>
diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php
index cd7d0a044c..72fb0faeb3 100644
--- a/core/DataAccess/ArchiveSelector.php
+++ b/core/DataAccess/ArchiveSelector.php
@@ -146,9 +146,14 @@ class ArchiveSelector
* '2010-01-01' => array(1,2,3)
* )
* )
+ * @throws
*/
static public function getArchiveIds($siteIds, $periods, $segment, $plugins, $isSkipAggregationOfSubTables = false)
{
+ if(empty($siteIds)) {
+ throw new \Exception("Website IDs could not be read from the request, ie. idSite=");
+ }
+
$getArchiveIdsSql = "SELECT idsite, name, date1, date2, MAX(idarchive) as idarchive
FROM %s
WHERE %s
diff --git a/core/DeviceDetectorCache.php b/core/DeviceDetectorCache.php
new file mode 100644
index 0000000000..70a6f68bb7
--- /dev/null
+++ b/core/DeviceDetectorCache.php
@@ -0,0 +1,65 @@
+<?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;
+
+use Exception;
+
+/**
+ * Caching class used for DeviceDetector caching
+ *
+ * Combines Piwik\CacheFile with an additional caching in static property
+ *
+ * Static caching speeds up multiple detections in one request, which is the case when sending bulk requests
+ */
+class DeviceDetectorCache extends CacheFile implements \DeviceDetector\Cache\CacheInterface
+{
+ protected static $staticCache = array();
+
+ /**
+ * Function to fetch a cache entry
+ *
+ * @param string $id The cache entry ID
+ * @return array|bool False on error, or array the cache content
+ */
+ public function get($id)
+ {
+ if (empty($id)) {
+ return false;
+ }
+ $id = $this->cleanupId($id);
+
+ if (array_key_exists($id, self::$staticCache)) {
+ return self::$staticCache[$id];
+ }
+
+ return parent::get($id);
+ }
+
+
+ /**
+ * A function to store content a cache entry.
+ *
+ * @param string $id The cache entry ID
+ * @param array $content The cache content
+ * @throws \Exception
+ * @return bool True if the entry was succesfully stored
+ */
+ public function set($id, $content)
+ {
+ if (empty($id)) {
+ return false;
+ }
+
+ $id = $this->cleanupId($id);
+
+ self::$staticCache[$id] = $content;
+
+ return parent::set($id, $content);
+ }
+}
diff --git a/core/DeviceDetectorFactory.php b/core/DeviceDetectorFactory.php
new file mode 100644
index 0000000000..c61da87a14
--- /dev/null
+++ b/core/DeviceDetectorFactory.php
@@ -0,0 +1,39 @@
+<?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;
+
+use DeviceDetector\DeviceDetector;
+
+class DeviceDetectorFactory
+{
+ protected static $deviceDetectorInstances = array();
+
+ /**
+ * Returns a Singleton instance of DeviceDetector for the given user agent
+ * @param string $userAgent
+ * @return DeviceDetector
+ */
+ public static function getInstance($userAgent)
+ {
+ if (array_key_exists($userAgent, self::$deviceDetectorInstances)) {
+
+ return self::$deviceDetectorInstances[$userAgent];
+ }
+
+ $deviceDetector = new DeviceDetector($userAgent);
+ $deviceDetector->discardBotInformation();
+ $deviceDetector->setCache(new DeviceDetectorCache('tracker', 86400));
+ $deviceDetector->parse();
+
+ self::$deviceDetectorInstances[$userAgent] = $deviceDetector;
+
+ return $deviceDetector;
+ }
+
+}
diff --git a/core/Filechecks.php b/core/Filechecks.php
index ddfade4e6e..ab25ae7d9d 100644
--- a/core/Filechecks.php
+++ b/core/Filechecks.php
@@ -84,11 +84,11 @@ class Filechecks
// Also give the chown since the chmod is only 755
if (!SettingsServer::isWindows()) {
$realpath = Filesystem::realpath(PIWIK_INCLUDE_PATH . '/');
- $directoryList = "<code>chown -R www-data:www-data " . $realpath . "</code><br />" . $directoryList;
+ $directoryList = "<code>chown -R ". self::getUserAndGroup() ." " . $realpath . "</code><br />" . $directoryList;
}
if(function_exists('shell_exec')) {
- $currentUser = trim(shell_exec('whoami'));
+ $currentUser = self::getUser();
if(!empty($currentUser)) {
$optionalUserInfo = " (running as user '" . $currentUser . "')";
}
@@ -178,7 +178,7 @@ class Filechecks
{
$realpath = Filesystem::realpath(PIWIK_INCLUDE_PATH . '/');
$message = '';
- $message .= "<code>chown -R www-data:www-data " . $realpath . "</code><br />";
+ $message .= "<code>chown -R ". self::getUserAndGroup() ." " . $realpath . "</code><br />";
$message .= "<code>chmod -R 0755 " . $realpath . "</code><br />";
$message .= 'After you execute these commands (or change permissions via your FTP software), refresh the page and you should be able to use the "Automatic Update" feature.';
return $message;
@@ -198,9 +198,10 @@ class Filechecks
$message .= "On Windows, check that the folder is not read only and is writable.\n
You can try to execute:<br />";
} else {
- $message .= "For example, on a GNU/Linux server if your Apache httpd user
- is www-data, you can try to execute:<br />\n"
- . "<code>chown -R www-data:www-data " . $path . "</code><br />";
+ $message .= "For example, on a GNU/Linux server if your Apache httpd user is "
+ . self::getUser()
+ . ", you can try to execute:<br />\n"
+ . "<code>chown -R ". self::getUserAndGroup() ." " . $path . "</code><br />";
}
$message .= self::getMakeWritableCommand($path);
@@ -208,6 +209,29 @@ class Filechecks
return $message;
}
+ private static function getUserAndGroup()
+ {
+ $user = self::getUser();
+ if(!function_exists('shell_exec')) {
+ return $user . ':' . $user;
+ }
+
+ $group = trim(shell_exec('groups '. $user .' | cut -f3 -d" "'));
+
+ if(empty($group)) {
+ $group = 'www-data';
+ }
+ return $user . ':' . $group;
+ }
+
+ private static function getUser()
+ {
+ if(!function_exists('shell_exec')) {
+ return 'www-data';
+ }
+ return trim(shell_exec('whoami'));
+ }
+
/**
* Returns the help text displayed to suggest which command to run to give writable access to a file or directory
*
diff --git a/core/Plugin.php b/core/Plugin.php
index e9cbe2feae..967d23b0ec 100644
--- a/core/Plugin.php
+++ b/core/Plugin.php
@@ -383,12 +383,29 @@ class Plugin
{
foreach ($backtrace as $tracepoint) {
// try and discern the plugin name
- if (isset($tracepoint['class'])
- && preg_match("/Piwik\\\\Plugins\\\\([a-zA-Z_0-9]+)\\\\/", $tracepoint['class'], $matches)
- ) {
- return $matches[1];
+ if (isset($tracepoint['class'])) {
+ $className = self::getPluginNameFromNamespace($tracepoint['class']);
+ if ($className) {
+ return $className;
+ }
}
}
return false;
}
+
+ /**
+ * Extracts the plugin name from a namespace name or a fully qualified class name. Returns `false`
+ * if we can't find one.
+ *
+ * @param string $namespaceOrClassName The namespace or class string.
+ * @return string|false
+ */
+ public static function getPluginNameFromNamespace($namespaceOrClassName)
+ {
+ if (preg_match("/Piwik\\\\Plugins\\\\([a-zA-Z_0-9]+)\\\\/", $namespaceOrClassName, $matches)) {
+ return $matches[1];
+ } else {
+ return false;
+ }
+ }
}
diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php
index 43e385f263..b65823be58 100644
--- a/core/Plugin/Controller.php
+++ b/core/Plugin/Controller.php
@@ -828,7 +828,9 @@ abstract class Controller
*/
protected function checkTokenInUrl()
{
- if (Common::getRequestVar('token_auth', false) != Piwik::getCurrentUserTokenAuth()) {
+ $requestTokenAuth = Common::getRequestVar('token_auth', false);
+ $currentUserTokenAuth = Piwik::getCurrentUserTokenAuth();
+ if ($requestTokenAuth !== $currentUserTokenAuth) {
throw new NoAccessException(Piwik::translate('General_ExceptionInvalidToken'));
}
}
diff --git a/core/Plugin/ControllerAdmin.php b/core/Plugin/ControllerAdmin.php
index 4254cdbb2c..0212a3769c 100644
--- a/core/Plugin/ControllerAdmin.php
+++ b/core/Plugin/ControllerAdmin.php
@@ -56,6 +56,7 @@ abstract class ControllerAdmin extends Controller
$invalidPluginsWarning = Piwik::translate('CoreAdminHome_InvalidPluginsWarning', array(
self::getPiwikVersion(),
'<strong>' . implode('</strong>,&nbsp;<strong>', $missingPlugins) . '</strong>'))
+ . "<br/>"
. Piwik::translate('CoreAdminHome_InvalidPluginsYouCanUninstall', array(
'<a href="' . $pluginsLink . '"/>',
'</a>'
diff --git a/core/Plugin/Widgets.php b/core/Plugin/Widgets.php
index c2ea16f7cf..201fe743f6 100644
--- a/core/Plugin/Widgets.php
+++ b/core/Plugin/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/core/SettingsPiwik.php b/core/SettingsPiwik.php
index f2b8d147b3..f620112805 100644
--- a/core/SettingsPiwik.php
+++ b/core/SettingsPiwik.php
@@ -292,6 +292,10 @@ class SettingsPiwik
/**
* Returns true if the Piwik server appears to be working.
*
+ * If the Piwik server is in an error state (eg. some directories are not writable and Piwik displays error message),
+ * or if the Piwik server is "offline",
+ * this will return false..
+ *
* @param $piwikServerUrl
* @return bool
*/
@@ -319,7 +323,10 @@ class SettingsPiwik
$expectedString = 'misc/user/';
$expectedStringNotFound = strpos($fetched, $expectedString) === false && strpos($fetched, $expectedStringAlt) === false;
- if ($expectedStringNotFound) {
+
+ $hasError = false !== strpos($fetched, PAGE_TITLE_WHEN_ERROR);
+
+ if ($hasError || $expectedStringNotFound) {
throw new Exception("\nPiwik should be running at: "
. $piwikServerUrl
. " but this URL returned an unexpected response: '"
diff --git a/core/Tracker/Db/Mysqli.php b/core/Tracker/Db/Mysqli.php
index 737719e51f..66521b120b 100644
--- a/core/Tracker/Db/Mysqli.php
+++ b/core/Tracker/Db/Mysqli.php
@@ -46,7 +46,7 @@ class Mysqli extends Db
$this->socket = $dbInfo['port'];
} else {
$this->host = $dbInfo['host'];
- $this->port = $dbInfo['port'];
+ $this->port = (int)$dbInfo['port'];
$this->socket = null;
}
$this->dbname = $dbInfo['dbname'];
diff --git a/core/Tracker/VisitExcluded.php b/core/Tracker/VisitExcluded.php
index 19fa96dc4f..586c874a0c 100644
--- a/core/Tracker/VisitExcluded.php
+++ b/core/Tracker/VisitExcluded.php
@@ -8,8 +8,10 @@
*/
namespace Piwik\Tracker;
+use DeviceDetector\Parser\Bot;
use Piwik\Common;
use Piwik\Config;
+use Piwik\DeviceDetectorFactory;
use Piwik\IP;
use Piwik\Piwik;
@@ -73,9 +75,9 @@ class VisitExcluded
/**
* Triggered on every tracking request.
- *
+ *
* This event can be used to tell the Tracker not to record this particular action or visit.
- *
+ *
* @param bool &$excluded Whether the request should be excluded or not. Initialized
* to `false`. Event subscribers should set it to `true` in
* order to exclude the request.
@@ -147,32 +149,18 @@ class VisitExcluded
* As a result, these sophisticated bots exhibit characteristics of
* browsers (cookies enabled, executing JavaScript, etc).
*
+ * @see \DeviceDetector\Parser\Bot
+ *
* @return boolean
*/
protected function isNonHumanBot()
{
$allowBots = $this->request->getParam('bots');
- return !$allowBots
- // Seen in the wild
- && (strpos($this->userAgent, 'Googlebot') !== false // Googlebot
- || strpos($this->userAgent, 'Google Web Preview') !== false // Google Instant
- || strpos($this->userAgent, 'AdsBot-Google') !== false // Google Adwords landing pages
- || strpos($this->userAgent, 'Google Page Speed Insights') !== false // #4049
- || strpos($this->userAgent, 'Google (+https://developers.google.com') !== false // Google Snippet https://developers.google.com/+/web/snippet/
- || strpos($this->userAgent, 'facebookexternalhit') !== false // http://www.facebook.com/externalhit_uatext.php
- || strpos($this->userAgent, 'baidu') !== false // Baidu
- || strpos($this->userAgent, 'bingbot') !== false // Bingbot
- || strpos($this->userAgent, 'BingPreview') !== false // BingPreview
- || strpos($this->userAgent, 'YottaaMonitor') !== false // Yottaa
- || strpos($this->userAgent, 'CloudFlare') !== false // CloudFlare-AlwaysOnline
+ $deviceDetector = DeviceDetectorFactory::getInstance($this->userAgent);
- // Added as they are popular bots
- || strpos($this->userAgent, 'pingdom') !== false // pingdom
- || strpos($this->userAgent, 'yandex') !== false // yandex
- || strpos($this->userAgent, 'exabot') !== false // Exabot
- || strpos($this->userAgent, 'sogou') !== false // Sogou
- || strpos($this->userAgent, 'soso') !== false // Soso
+ return !$allowBots
+ && ($deviceDetector->isBot()
|| IP::isIpInRange($this->ip, $this->getBotIpRanges()));
}
diff --git a/core/testMinimumPhpVersion.php b/core/testMinimumPhpVersion.php
index 206ebd08c0..589ffbaaa6 100644
--- a/core/testMinimumPhpVersion.php
+++ b/core/testMinimumPhpVersion.php
@@ -66,6 +66,8 @@ if ($minimumPhpInvalid) {
}
}
+define('PAGE_TITLE_WHEN_ERROR', 'Piwik &rsaquo; Error');
+
if (!function_exists('Piwik_ExitWithMessage')) {
/**
* Returns true if Piwik should print the backtrace with error messages.
@@ -111,7 +113,7 @@ if (!function_exists('Piwik_ExitWithMessage')) {
$headerPage = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/Morpheus/templates/simpleLayoutHeader.tpl');
$footerPage = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/Morpheus/templates/simpleLayoutFooter.tpl');
- $headerPage = str_replace('{$HTML_TITLE}', 'Piwik &rsaquo; Error', $headerPage);
+ $headerPage = str_replace('{$HTML_TITLE}', PAGE_TITLE_WHEN_ERROR, $headerPage);
$content = '<p>' . $message . '</p>
<p>'
diff --git a/lang/am.json b/lang/am.json
index 2066652168..45e288cc74 100644
--- a/lang/am.json
+++ b/lang/am.json
@@ -196,7 +196,6 @@
"ColumnConversions": "ልወጣዎች"
},
"Installation": {
- "CommunityNewsletter": "ከማህበረሰብ አልቅ ጋር ኢ-ሜይል አድርግልኝ(አዲስ ተሰኪዎች, አዲስ ባህርይዎች, ወዘተ.)",
"ConfirmDeleteExistingTables": "እርግጠኛ ነህ ይህንን ሰንጠረዥ ከውሂብ ጎታህ ውስጥ : %s መሰረዝ ትፈልጋለህ? ማስጠንቀቂያ: ከዚህ ሰንጠረዥ ውስጥ የጠፉ ውሂቦች ተመልሰው ሊገኙ አይችሉም!",
"Congratulations": "እንኳን ደስያለዎ",
"CongratulationsHelp": "<p>እንኳን ደስያለዎ! የፒዊክ መጫንዎ ተሳክቷል።<\/p><p>የጃቫ ስክሪፕትዎ ቾድ በሁሉ ገፆች ላይ መግባቱን ያረጋግጡና የመጀመሪያ ጎበኚዎችዎን ይጠብቁ!<\/p>",
@@ -209,7 +208,6 @@
"PasswordDoNotMatch": "የይለፍ ቃሉ አቻ አይደለም",
"PasswordRepeat": "የይለፍ ቃል (ድገም)",
"PercentDone": "%s %% አልቋል",
- "SecurityNewsletter": "ከዋነኛ የፒዊክ ማላቂያዎች እና የጥበቃ ማስጠንቀቂያዎች ጋር ኢ-ሜይል አድርግልኝ",
"SetupWebsite": "ድር ጣቢያ ጫን",
"SetupWebsiteError": "ድር ጣቢያውን በመጫን ጊዜ ስህተት አጋጥሟል",
"SuperUserLogin": "ሊቀ ተገልጋይ ግባ",
diff --git a/lang/ar.json b/lang/ar.json
index 230701c33f..826e89c6bf 100644
--- a/lang/ar.json
+++ b/lang/ar.json
@@ -683,7 +683,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "حيث تكون الصفحة تحتوي على استدعاء لجافاسكريبت piwikTracker.trackGoal() (%sتعرف على المزيد%s)"
},
"Installation": {
- "CommunityNewsletter": "راسلني عند وجود تحديثات (إضافات جديدة، خصائص جديدة، وغيرها)",
"ConfigurationHelp": "يبدو أن ملف الإعدادات الخاص بك به خطأ. يمكنك إما حذف config\/config.ini.php ومتابعة التثبيت أو تصحيح إعدادات الاتصال بقاعدة البيانات.",
"ConfirmDeleteExistingTables": "هل ترغب حقاً في حذف الجداول: %s من قاعدة بياناتك؟ تنبيه: لن يمكن إستعادة البيانات من هذه الجداول!",
"Congratulations": "مبروك",
@@ -713,7 +712,6 @@
"PleaseFixTheFollowingErrors": "الرجاء إصلاح الأخطاء التالية",
"PluginDescription": "عملية تثبيت Piwik. عملية التثبيت تتم مرة واحدة عادة. إذا تم حذف ملف الإعدادات config\/config.inc.php فستبدأ عملية التثبيت مرة أخرى.",
"Requirements": "متطلبات Piwik",
- "SecurityNewsletter": "راسلني عند وجود ترقيات وتنبيهات أمنية في Piwik",
"SetupWebsite": "إعداد موقع ويب",
"SetupWebsiteError": "حدث خطأ ما أثناء إضافة الموقع",
"SetupWebSiteName": "اسم موقع ويب",
diff --git a/lang/be.json b/lang/be.json
index 89aa18d13d..d0f450385a 100644
--- a/lang/be.json
+++ b/lang/be.json
@@ -583,7 +583,6 @@
"YouCanEnableEcommerceReports": "Вы можаце ўключыць %s для гэтага вэб-сайта ў %s старонкі."
},
"Installation": {
- "CommunityNewsletter": "паведамляць мне пра абнаўленні супольнасці (новыя ўбудовы, новыя функцыі і г.д.) па email",
"ConfigurationHelp": "Ваш Piwik канфігурацыйны файл, няправільна зканфігураваны. Вы можаце альбо выдаліць config\/config.ini.php і працягнуць усталёўку або правільна наладзіць злучэнне з базай дадзеных.",
"ConfirmDeleteExistingTables": "Вы сапраўды жадаеце выдаліць табліцы: %s з базы дадзеных? УВАГА: ВЫДАЛЕНЫЯ ДАДЗЕНЫЯ НЕМАГЧЫМА АДНАВІЦЬ!",
"Congratulations": "Віншуем",
@@ -613,7 +612,6 @@
"PleaseFixTheFollowingErrors": "Калі ласка, выпраўце наступныя памылкі",
"PluginDescription": "Працэс усталёўкі Piwik. Усталёўка звычайна адбывацца толькі адзін раз. Калі канфігурацыйны файл config\/config.inc.php выдалены, ўстаноўка пачнецца зноў.",
"Requirements": "Патрабаванні Piwik",
- "SecurityNewsletter": "паведамляць мяне пра значныя абнаўленні Piwik і памылках бяспекі па email",
"SetupWebsite": "Дадаць сайт",
"SetupWebsiteError": "Паўстала памылка пры даданні сайта",
"SetupWebSiteName": "імя вэб-сайта",
diff --git a/lang/bg.json b/lang/bg.json
index 0239c7e0d6..98e95f1757 100644
--- a/lang/bg.json
+++ b/lang/bg.json
@@ -103,6 +103,7 @@
"CustomLogoFeedbackInfo": "Ако модифицирате Piwik логото, може също да пожелаете да скриете %s връзката в главното меню. За да направите това, можете да изключите добавката за обратна връзка в страницата %sУправление на добавки%s.",
"CustomLogoHelpText": "Можете да модифицирате логото на Piwik, което да се показва в интерфейса на потребителя и имейлите с отчети.",
"EmailServerSettings": "Настройки сървър на е-поща",
+ "FaviconUpload": "Изберете Favicon за качване",
"ForBetaTestersOnly": "Само за бета тестери",
"ImageTracking": "Проследяване на изображенията",
"ImageTrackingIntro1": "Когато посетителят е изключил JavaScript или когато JavaScript не може да бъде използван, може да се използва проследяващата връзка към изображение, за да бъдат проследени посетителите.",
@@ -190,6 +191,8 @@
"InjectedHostSuperUserWarning": "Възможно е конфигурацията на Piwik да е неправилна (това се случва когато Piwik е бил изместен на нов сървър или друг адрес). Вие можете или %1$sда щракнете тук и да добавите %2$s като валиден Piwik адрес (ако сте сигурни в достоверността му)%3$s, или %4$sда щракнете тук и да посетите %5$s, за да достъпите Piwik безпасно%6$s.",
"InjectedHostWarningIntro": "В момента достъпвате Piwik от %1$s, но Piwik е настроен да работи чрез този адрес: %2$s.",
"JavascriptDisabled": "JavaScript трябва да бъде разрешен за да използвате Piwik в стандартен изглед.<br \/>Същото е ако JavaScript не е разрешен или браузъра не го поддържа.<br \/>За да използвате стандартен изглед разрешете JavaScript от настройките на Вашия браузър и %1$sопитайте отново%2$s.<br \/>",
+ "LongMonthFormat": "%longYear%, %longMonth%",
+ "LongWeekFormat": "%dayFrom% %longMonthFrom% - %dayTo% %longMonthTo% %longYearTo%",
"MakeADifference": "Открийте разликата: %1$sДарете%2$s за фонд Piwik 2.0!",
"MakeOneTimeDonation": "Направете еднократно дарение",
"NoPrivilegesAskPiwikAdmin": "Вие се логнахте в като '%s' но изглежда че нямате разрешение от Piwik. %s Попитайте Вашият Piwik администратор (клик на email)%s да Ви даде \"поглед\" достъп до сайта.",
@@ -209,6 +212,10 @@
"SharePiwikLong": "Здравейте! Туко-що открих прекрасен софтуер с отворен код: Piwik! Piwik позволява проследяването на посетителите на даден сайт безплатно. Задължително трябва да го пробвате!",
"SharePiwikShort": "Piwik! Софтуер с отворен код за уеб анализ. Притежавайте вашите собствени данни.",
"ShareThis": "Сподели това",
+ "ShortDateFormat": "%shortDay% %day% %shortMonth%",
+ "ShortDateFormatWithYear": "%day% %shortMonth% %shortYear%",
+ "ShortMonthFormat": "%shortMonth% %longYear%",
+ "ShortWeekFormat": "%dayFrom% %shortMonthFrom% - %dayTo% %shortMonthTo% %shortYearTo%",
"ShowJSCode": "Покажи JavaScript кода за вмъкване в сайта",
"SubscribeAndBecomePiwikSupporter": "Пристъпете към сигурната страница за плащане (PayPal) за да станете Piwik Supporter!",
"SupportPiwik": "Подкрепи Piwik!",
@@ -246,6 +253,7 @@
"Developer": "Разработчик",
"DoMoreContactPiwikAdmins": "За да се инсталира нова добавка или нова тема, трябва да се свържете с вашия администратор, който отговаря за Piwik.",
"DownloadAndInstallPluginsFromMarketplace": "Можете автоматично да свалите и инсталирате нови добавки от %sмагазина за приложения%s.",
+ "EmailToEnquireUpdatedVersion": "Моля, пишете до %1$s и изискайте актуална версия на %2$s.",
"EnjoyAnotherLookAndFeelOfThemes": "Насладете се на друг изглед и усещане",
"FeaturedPlugin": "Препоръчана добавка",
"GetEarlyAccessForPaidPlugins": "Забележка: всички от наличните добавки са безплатни за използване; в бъдеще ще има платена секция в магазина за приложения (%sсвържете се с нас%s за предварителен достъп).",
@@ -435,7 +443,8 @@
"SpecialRequest": "Имате ли специална молба към екипа на Piwik?",
"ThankYou": "Благодаря, че помогнахте да направим Piwik по-добър!",
"TopLinkTooltip": "Може да ни кажете какво мислите, както и да изискате професионална помощ.",
- "VisitTheForums": "Посетете нашият %sФорум%s"
+ "VisitTheForums": "Посетете нашият %sФорум%s",
+ "WantToThankConsiderDonating": "Смятате, че Piwik е страхотен и искате да ни благодарите?"
},
"General": {
"AbandonedCarts": "Отказани колички",
@@ -969,15 +978,16 @@
"PluginDescription": "Генерирайте красиви статични PNG графични изображения за всеки Piwik доклад."
},
"Insights": {
+ "ControlComparedToDescription": "Ръст спрямо",
"DayComparedToPreviousDay": "предишен ден",
"Filter": "Филтър",
"FilterOnlyNew": "Само нови",
+ "TitleRowDisappearedDetails": "'%1$s' намалял с %2$s и изчезна в %3$s сравнено с %4$s.",
"WeekComparedToPreviousWeek": "предишна седмица",
"YearComparedToPreviousYear": "предишна година"
},
"Installation": {
"CollaborativeProject": "Piwik е съвместен проект, изграден с много любов от хора от всички краища на света.",
- "CommunityNewsletter": "изпращай по пощата информация за нови добавки, функции и др.",
"ConfigurationHelp": "Вашият Piwik конфигурационен файл изглежда не добре конфигуриран. Можете да премахнете config\/config.ini.php и да започнете инсталирането, или да поправите настройките за връзка към БД-то.",
"ConfirmDeleteExistingTables": "Наистина ли искате да изтриете следните таблици: %s от базата от данни (БД)? ПРЕДУПРЕЖДЕНИЕ: ДАННИТЕ ОТ ТАЗИ ТАБЛИЦА НЕ МОГАТ ДА БЪДАТ ВЪЗСТАНОВЕНИ!!!",
"Congratulations": "Поздравления",
@@ -1009,6 +1019,7 @@
"NfsFilesystemWarning": "Вашият сървър ползва NFS файлова система.",
"NfsFilesystemWarningSuffixAdmin": "Това означава, че Piwik ще бъде изключително бавен, когато използвате файлови базирани сесии.",
"NoConfigFound": "Piwik конфигурационният файл не е открит.<br \/><b>  » Можете да <a href='index.php'>инсталирате Piwik сега<\/a><\/b><br \/><small>Ако преди това сте инсталирали Piwik и имате в базата от данни (БД) таблици - можете да запазите Вашите данни!<\/small>",
+ "NotSupported": "не се поддържа",
"Optional": "По избор",
"Password": "парола",
"PasswordDoNotMatch": "паролата не съвпада",
@@ -1018,7 +1029,6 @@
"PluginDescription": "Инсталационния процес на Piwik. Инсталацията обикновено се прави само веднъж. Ако конфигурационния файл config\/ config.inc.php е изтрит, инсталацията ще започне отново.",
"Requirements": "Piwik Изисквания",
"RestartWebServer": "След като направите промените, рестартирайте уеб сървара.",
- "SecurityNewsletter": "изпращай на имейл информация за обновленията и сигнали относно сигурността",
"SeeBelowForMoreInfo": "Вижте по-долу за повече информация.",
"SetupWebsite": "Настройки на сайт",
"SetupWebsiteError": "Възникнала е грешка при добавянето на сайт",
@@ -1170,6 +1180,7 @@
"HowtoDeleteAnAccount": "Натиснете продължително, за да изтриете профил.",
"HowtoDeleteAnAccountOniOS": "Плъзнете от ляво на дясно за да изтриете акаунта",
"HowtoLoginAnonymous": "Оставете потребителско име и парола празно за анонимен вход",
+ "HttpTimeout": "HTTP сесията изтече",
"IncompatiblePiwikVersion": "Piwik версията, която използвате не е съвместима с Piwik Mobile 2. Обновете вашата инсталация на Piwik и пробвайте отново или инсталирайте Piwik Mobile 1.",
"LastUpdated": "Последна актуализация: %s",
"LoadingReport": "Зарежда се %s",
@@ -1244,6 +1255,7 @@
"MultiSites": {
"Evolution": "Развитие",
"LoadingWebsites": "Зарежда сайтовете",
+ "Pagination": "%s - %s като %s",
"PluginDescription": "Показва обобщена статистика\/резюме. В момента се поддържа като основна добавка в Piwik.",
"TopLinkTooltip": "Сравнете статистиката за всички ваши уебсайтове."
},
diff --git a/lang/ca.json b/lang/ca.json
index ff8fad2447..cc3ac28576 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -777,7 +777,6 @@
"PluginDescription": "Generar belles imatges estàtiques en gràfic PNG per qualsevol informe del Piwik."
},
"Installation": {
- "CommunityNewsletter": "Envieu-me correus-e amb les actualitzacions de la comunitat (nous connectors, funcionalitats, etc.)",
"ConfigurationHelp": "Sembla que el vostre fitxer de configuració del Piwik no està definit correctament. Podeu eliminar el fitxer confi\/config.ini.php i torna a començar la instal·lació o corregir les preferències de connexió a la Base de dades.",
"ConfirmDeleteExistingTables": "Realment voleu esborrar les taules %s de la base de dades? AVÍS: NO ES PODRAN RECUPERAR LES DADES!",
"Congratulations": "Felicitats",
@@ -816,7 +815,6 @@
"PluginDescription": "Procès d'instal·lació del Piwik. El procès d'instal·lació només es dur a temre una vegada. Si el fitxer de configuració config\/config.inc.php s'esborrà es tornarà a iniciar la instal·lació.",
"Requirements": "Requeriments del Piwik",
"RestartWebServer": "Desprès de fer aquest canvi, reinicieu el vostre servidor web.",
- "SecurityNewsletter": "Envieu-me correus-e sobre les actualitzacions grans del Piwik i les alertes de seguretat",
"SeeBelowForMoreInfo": "Llegiu a continuació per més informació.",
"SetupWebsite": "Configura un lloc",
"SetupWebsiteError": "Hi ha hagut un problema en el moment d'afegir el lloc.",
diff --git a/lang/cs.json b/lang/cs.json
index 8b259f7ef9..3e5612f111 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -718,7 +718,6 @@
"PluginDescription": "Generuje nádherné statické PNG grafy pro jakékoli Piwik hlášení."
},
"Installation": {
- "CommunityNewsletter": "pošli mi e mail s komunitními aktualizacem (nové zásuvné moduly, nové funkce, atd.)",
"ConfigurationHelp": "Váš konfigurační soubor Piwiku je špatně nastavený. Můžete buď odstranit soubor config\/config.ini a znovu začít instalaci, nebo opravit nastavení databáze.",
"ConfirmDeleteExistingTables": "Jste si jistí, že chcete vymazat tabulky: %s z vaší databáze? UPOZORNĚNÍ: DATA Z TĚCHTO TABULEK NEPŮJDOU OBNOVIT!",
"Congratulations": "Gratulujeme",
@@ -752,7 +751,6 @@
"PluginDescription": "Instalační proces Piwiku. Instalace se obvykle používá jednou. V případě vymazání konfiguračního souboru config\/config.inc.php se instalace zahájí znovu",
"Requirements": "Požadavky Piwiku",
"RestartWebServer": "Po uložení změn restartujte Vás web server.",
- "SecurityNewsletter": "pošli mi e-mail při hlavních aktualizacích a bezpečnostních oznámeních Piwiku",
"SetupWebsite": "Nastavit Web",
"SetupWebsiteError": "Při přidávání Webu se vyskytla chyba",
"SetupWebSiteName": "jméno webu",
diff --git a/lang/da.json b/lang/da.json
index dc3f57fe5c..0bec0dcb26 100644
--- a/lang/da.json
+++ b/lang/da.json
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "Du kan tilpasse Piwik logo, der bliver vist i brugergrænsefladen og e-mail rapporter.",
"DevelopmentProcess": "Mens vores%s udviklingsproces%s omfatter tusindvis af automatiske tests, spiller betatestere en nøglerolle i at opnå \"ingen fejl politikken\" i Piwik.",
"EmailServerSettings": "E-mail-server indstillinger",
+ "FaviconUpload": "Vælg Favicon til overførelse",
"ForBetaTestersOnly": "Kun for beta testere",
"ImageTracking": "Sporing vha. et billede",
"ImageTrackingIntro1": "Når en besøgende har deaktiveret JavaScript, eller når JavaScript kan ikke bruges, kan sporing vha. et billede bruges til at spore besøgende.",
@@ -154,11 +155,12 @@
"PiwikIsInstalledAt": "Piwik er installeret på",
"PluginDescription": "Piwik administration.",
"PluginSettingChangeNotAllowed": "Du må ikke ændre værdien \"%s\" i udvidelse \"%s\"",
+ "PluginSettingReadNotAllowed": "Du har ikke tilladelse til at læse værdien af ​​indstillingen \"%s\" i udvidelsen \"%s\"",
"PluginSettings": "Programudvidelses indstilinger",
"PluginSettingsIntro": "Her kan du ændre indstillingerne for følgende 3. parts udvidelsesmoduler:",
"PluginSettingsValueNotAllowed": "Værdien for feltet \"%s\" i udvidelsen \"%s\" er ikke tilladt",
- "SendPluginUpdateCommunication": "Send mig en e-mail når der er en ny opdatering af denne plugin.",
- "SendPluginUpdateCommunicationHelp": "En e-mail vil blive sendt til Superbrugere, når der er en ny version tilgængelig for dette plugin.",
+ "SendPluginUpdateCommunication": "Send mig en e-mail når der er en ny opdatering af denne programudvidelse.",
+ "SendPluginUpdateCommunicationHelp": "En e-mail vil blive sendt til Superbrugere, når der er en ny version tilgængelig for denne programudvidelse.",
"StableReleases": "Hvis Piwik er en kritisk del af virksomheden, anbefaler vi at man bruger den nyeste stabile udgave. Hvis man bruger den nyeste beta, og finder en fejl eller har et forslag, %sse her%s.",
"TrackAGoal": "Spor et mål",
"TrackingCode": "Sporingskode",
@@ -188,6 +190,7 @@
"DonateCall3": "Synes du, at Piwik har tilføjet væsentlig merværdi til dig eller din virksomhed, %1$s overvej at donere!%2$s",
"DonateFormInstructions": "Klik på skyderen for at vælge et beløb, og klik derefter på vælg at donere.",
"ExcludeRowsWithLowPopulation": "Alle rækker vises %s Udeluk lav population",
+ "ExternalHelp": "Hjælp (åbnes i en ny fane)",
"FlattenDataTable": "Rapporten er hierarkisk %s lav den ikke hierakisk",
"HowMuchIsPiwikWorth": "Hvor meget er Piwik værd for dig?",
"IncludeRowsWithLowPopulation": "Rækker med lav population er skjult %s Vis alle rækker",
@@ -260,6 +263,7 @@
"Developer": "Udvikler",
"DoMoreContactPiwikAdmins": "For at installere en ny programudvidelse eller et nyt tema, kontakt Piwik administratoren.",
"DownloadAndInstallPluginsFromMarketplace": "Du kan automatisk hente og installere nye programudvidelser fra %smarkedspladsen%s.",
+ "EmailToEnquireUpdatedVersion": "Send e-mail til %1$s og forespørg om en opdateret version af %2$s.",
"EnjoyAnotherLookAndFeelOfThemes": "Nyd et andet udseende",
"FeaturedPlugin": "Udvalgte programudvidelser",
"GetEarlyAccessForPaidPlugins": "Bemærk: alle programudvidelser er tilgængelige gratis på nuværende tidspunkt; i fremtiden vil vi sætte betalte programudvidelser på markedspladsen (%skontakt os%s for tidlig adgang).",
@@ -297,6 +301,7 @@
"PluginKeywords": "Nøgleord",
"PluginNotCompatibleWith": "%1$s udvidelsesmodul er ikke kompatibelt med %2$s.",
"PluginNotWorkingAlternative": "Hvis du har brugt programudvidelsen,kan du måske finde en nyere version på markedspladen. Hvis ikke, kan du afinstallere den.",
+ "PluginRequirement": "%1$s kræver %2$s",
"PluginsManagement": "Udvidelsesmodul administration",
"PluginUpdateAvailable": "Du bruger version %s en ny version %s er tilgængelig.",
"PluginVersionInfo": "%1$s fra %2$s",
@@ -339,6 +344,7 @@
"CreatingBackupOfConfigurationFile": "Opretter sikkerhedskopi af konfigurationsfiler i %s",
"CriticalErrorDuringTheUpgradeProcess": "Kritisk fejl under opdateringen:",
"DatabaseUpgradeRequired": "Database opdatering er nødvendig",
+ "DisablingIncompatiblePlugins": "Deaktivere inkompatible programudvidelsen: %s",
"DownloadingUpdateFromX": "Henter opdatering fra %s",
"DownloadX": "Hent %s",
"EmptyDatabaseError": "Databasen %s er tom. Redigere eller fjern Piwiks konfigurationsfil.",
@@ -358,22 +364,23 @@
"HelpMessageIntroductionWhenError": "Ovenstående vises fejlmeddelelsen. Den bør hjælpe med at forklare årsagen, men hvis der behøves mere hjælp:",
"HelpMessageIntroductionWhenWarning": "Opdateringen er fuldført, men det var nogle småproblemer under processen. Læs detaljerne ovenfor. For yderligere hjælp:",
"HighTrafficPiwikServerEnableMaintenance": "Hvis du administrerer en Piwik server med høj trafik, anbefaler vi at du %s midlertidigt deaktivere sporing af besøgende og sætte Piwik brugergrænseflade i vedligeholdelsestilstand%s",
+ "IncompatbilePluginsWillBeDisabledInfo": "Bemærk: Nogle udvidelsesmoduler er ikke kompatible med Piwik %s. De vil blive deaktiveret, når du opgraderer:",
"InstallingTheLatestVersion": "Installerer den seneste version",
"MajorUpdateWarning1": "Dette er en stor opdatering! Den vil tage længere tid end normalt.",
"MajorUpdateWarning2": "Det følgende råd er især vigtigt for store installationer.",
"NoteForLargePiwikInstances": "Vigtig bemærkning til store Piwik installationer",
"NoteItIsExpectedThatQueriesFail": "Bemærk: Hvis du manuelt udfører disse forespørgsler, forventes det, at nogle af dem mislykkes. I så fald ignoreres fejlene blot, og køre den næste forespørgsel på listen.",
- "NotificationClickToUpdatePlugins": "Klik her for at opdatere dit plugins nu:",
+ "NotificationClickToUpdatePlugins": "Klik her for at opdatere dit programudvidelser nu:",
"NotificationClickToUpdateThemes": "Klik her for at opdatere dine temaer nu:",
"NotificationSubjectAvailableCoreUpdate": "Ny Piwik %s er nu tilgængelig",
- "NotificationSubjectAvailablePluginUpdate": "En opdatering til tilgængelig for dine Piwik plugins",
+ "NotificationSubjectAvailablePluginUpdate": "En opdatering til tilgængelig for dine Piwik programudvidelser",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik blev opdateret!",
"PiwikUpdatedSuccessfully": "Piwik er opdateret!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Piwik vil blive opgraderet fra version %1$s til den nye version %2$s.",
"PluginDescription": "Piwik ajourføringsmekanisme",
"ReadyToGo": "Klar, parat, start?",
"TheFollowingPluginsWillBeUpgradedX": "Følgende udvidelsesmoduler vil blive opgraderet: %s.",
- "ThereIsNewPluginVersionAvailableForUpdate": "Nogle plugins du bruger er blevet opdateret på markedspladsen:",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Nogle programudvidelser du bruger er blevet opdateret på markedspladsen:",
"ThereIsNewVersionAvailableForUpdate": "Ny version af Piwik er tilgængelig",
"TheUpgradeProcessMayFailExecuteCommand": "Hvis du har en stor Piwik database, kan opdateringer tage for lang tid at køre i browseren. I denne situation, kan du udføre opdateringen fra kommandolinjen: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Database opgraderingen kan tage lidt tid, vær tålmodig.",
@@ -442,6 +449,7 @@
"ContactThePiwikTeam": "Kontakt Piwik holdet",
"DoYouHaveBugReportOrFeatureRequest": "Har du en fejlrapport eller en anmodning om en funktion?",
"GetInTouch": "Vi værdsætter din feedback og læser altid alle meddelelser uanset om du har en forretningsidé, ønsker at finde en Piwik konsulent, fortæl os en succeshistorie eller blot sige hej!",
+ "HowToCreateIssue": "Læs anbefalingerne om at skrive en god %1$sfejlrapport%2$s eller %3$sfunktionsforslag%4$s. Derefter %5$sregister%6$s eller %7$slogind%8$s på vores emne tracker og opret en %9$snyt emne%10$s.",
"IWantTo": "Jeg ønsker at:",
"LearnWaysToParticipate": "Lær om alle de måder, du kan %s bidrage%s",
"ManuallySendEmailTo": "Send din besked manuelt til",
@@ -451,10 +459,13 @@
"RateFeatureLeaveMessageLike": "Vi er glad for du kan lide det! Fortæl os hvad du kan lide mest eller hvis du har forslag til en ny funktion.",
"RateFeatureSendFeedbackInformation": "Piwik vil sende Piwik holdet en e-mail (med din e-mail-adresse), så vi kan komme i kontakt med dig, hvis du har nogen spørgsmål.",
"RateFeatureThankYouTitle": "Tak for din bedømmelse '%s'!",
+ "RateFeatureTitle": "Kan du lide '%s' funktionen? Bedøm og efterlade en kommentar",
"SendFeedback": "Send tilbagemelding",
"SpecialRequest": "Har du en speciel anmodning til Piwik holdet?",
"ThankYou": "Tak, fordi du hjælper med at gøre Piwik bedre!",
"TopLinkTooltip": "Fortæl os hvad du mener eller anmod om professionel support",
+ "ViewAnswersToFAQ": "Se svarene på %sOfte stillede spørgsmål%s",
+ "ViewUserGuides": "Lær at konfigurere Piwik og hvordan man effektivt analyserer data med vores %1$sbrugervejledninger%2$s",
"VisitTheForums": "Besøg %s Forum%s",
"WantToThankConsiderDonating": "Synes du at Piwik er fantastisk og ønsker du at takke os?"
},
@@ -624,6 +635,7 @@
"ExceptionUnableToStartSession": "Kan ikke starte sessionen.",
"ExceptionUndeletableFile": "Kunne ikke slette %s",
"ExceptionUnreadableFileDisabledMethod": "Konfigurationsfilen (%s) kunne ikke læses. Udbyderen kan have deaktiveret %s.",
+ "ExpandDataTableFooter": "Ændre visualiseringen eller konfigurer rapporten",
"Export": "Eksporter",
"ExportAsImage": "Eksporter som billede",
"ExportThisReport": "Eksporter datasættet i andre formater",
@@ -757,6 +769,7 @@
"Password": "Adgangskode",
"Period": "Periode",
"Piechart": "Cirkeldiagram",
+ "PiwikIsACollaborativeProjectYouCanContributeAndDonate": "%1$sPiwik%2$s er et samarbejdsprojekt af %7$sPiwik holdets%8$s medlemmer samt mange andre bidragydere i hele verden. Hvis du er en fan af Piwik, kan du hjælpe med: at finde ud af %3$shvordan du hjælper Piwik%4$s eller %5$sdoner nu%6$s til at hjælpe med at finansiere Piwik 3.0!",
"PiwikXIsAvailablePleaseNotifyPiwikAdmin": "%1$s er tilængelig. Kontakt venligst %2$sPiwik administrator%3$s.",
"PiwikXIsAvailablePleaseUpdateNow": "Piwik %1$s er tilgængelig. %2$sOpdater nu!%3$s (se %4$sændringer%5$s).",
"PleaseSpecifyValue": "Angiv værdi for '%s'.",
@@ -840,6 +853,7 @@
"Table": "Tabel",
"TagCloud": "Emne sky",
"Tax": "Moms",
+ "TimeAgo": "%s siden",
"TimeOnPage": "Tid på siden",
"Today": "I dag",
"Total": "Total",
@@ -998,6 +1012,7 @@
"PluginDescription": "Generere flotte statiske PNG diagrammer til Piwik rapporter."
},
"Insights": {
+ "ControlComparedToDescription": "Vækst i forhold til",
"ControlFilterByDescription": "Vis alle, kun ændringer, kun nye eller kun forsvundne",
"DatePeriodCombinationNotSupported": "Det er ikke muligt at generere rapporter til disse datoer og kombination af perioder.",
"DayComparedToPreviousDay": "Foregående dag",
@@ -1012,11 +1027,24 @@
"FilterOnlyNew": "Kun nye",
"IgnoredChanges": "Ændringer, der påvirker mindre end %s besøgende bliver ignoreret",
"MonthComparedToPreviousMonth": "forrige måned",
- "MonthComparedToPreviousYear": "samme måned forrige år"
+ "MonthComparedToPreviousYear": "samme måned forrige år",
+ "MoversAndShakersWidgetTitle": "Op- og Nedgang",
+ "NoResultMatchesCriteria": "Ingen rækker svarer til kriteriet",
+ "OverviewWidgetTitle": "Indsigtsoversigt",
+ "TitleConsideredInsightsChanges": "Rækkerne steget eller faldet med mindst %1$s besøg (%2$s%% af %3$s samlede antal besøg).",
+ "TitleConsideredInsightsGrowth": "Følgende rækker har en vækst på mindst %1$s%% i forhold til %2$s.",
+ "TitleConsideredMoversAndShakersChanges": "Betragtes kun ændringer, hvis de voksede med mere end %1$s%% besøg eller faldt med mindre end %2$s%% besøg, nye poster hvis de er steget med mere end %3$s%% besøg (%4$s), og er forsvundne rækker, hvis de faldt med mindre end %5$s%% besøg (%6$s).",
+ "TitleConsideredMoversAndShakersGrowth": "%1$s ændret fra %2$s til %3$s i forhold til %4$s. Baseret på dette forventes en videreudvikling for hver række på %5$s%%.",
+ "TitleRowChangeDetails": "'%1$s' ændres fra %2$s (%3$s) til %4$s (%5$s) %6$s.",
+ "TitleRowDisappearedDetails": "'%1$s' faldt med %2$s og er forsvand i %3$s i forhold til %4$s.",
+ "TitleRowMoverAndShaker": "Denne række havde en større effekt end gennemsnittet.",
+ "TitleRowNewDetails": "'%1$s' øget med %2$s og er ny i forhold til %3$s.",
+ "WeekComparedToPreviousWeek": "forrige uge",
+ "WidgetCategory": "Indsigt",
+ "YearComparedToPreviousYear": "forrige år"
},
"Installation": {
"CollaborativeProject": "Piwik er et samarbejdsprojekt, bygget med kærlighed af folk fra hele verden.",
- "CommunityNewsletter": "send e-mail med opdateringer (nye udvidelsesmoduler, nye muligheder m.m.)",
"ConfigurationHelp": "Piwik konfigurationsfil synes at være konfigureret forkert. Fjern enten config\/config.ini.php og genoptage installation eller ret database forbindelsesindstillinger.",
"ConfirmDeleteExistingTables": "Bekræft sletning af tabellerne: %s fra databasen? ADVARSEL: DATA FRA DISSE TABELLER KAN IKKE GENSKABES!",
"Congratulations": "Tillykke",
@@ -1052,6 +1080,7 @@
"NfsFilesystemWarningSuffixAdmin": "Det betyder at Piwik vil være ekstremt langsom når der benyttes filbaserede sessioner.",
"NfsFilesystemWarningSuffixInstall": "Brug af filbaserede sessioner på et NFS filsystem er ekstrem langsomt, så Piwik vil benytte database sessioner. Hvis du har mange samtidige kontrolpanelsbrugere, vil du muligvis være nødt til at hæve det maksimale antal af klient forbindelser til database serveren.",
"NoConfigFound": "Piwik-konfigurationsfil blev ikke fundet og du prøver at få adgang til Piwik. <ul><li>Du kan <a href='index.php'>installere Piwik nu<\/a><\/b><small> Hvis du har installeret Piwik tidligere og har nogle tabeller i databasen, kan du genbruge tabellerne og holde dine eksisterende data!<\/small>",
+ "NotSupported": "Ikke supporteret",
"Optional": "Valgfri",
"Password": "Adgangskode",
"PasswordDoNotMatch": "adgangskoder stemmer ikke overens",
@@ -1062,7 +1091,6 @@
"Requirements": "Piwik krav",
"RestartWebServer": "Efter ændringen er have foretaget - genstart webserveren.",
"ReusingTables": "Genbrug tabellerne",
- "SecurityNewsletter": "send e-mail med vigtige Piwik opgraderinger og sikkerheds advarsler",
"SeeBelowForMoreInfo": "Se nedenfor for mere information.",
"SetupWebsite": "Tilføj en hjemmeside",
"SetupWebsiteError": "Fejl ved tilføjelse af hjemmeside",
@@ -1078,6 +1106,8 @@
"SystemCheck": "Systemcheck",
"SystemCheckAutoUpdateHelp": "Note: Piwik's ét klik opdatering kræver skrive-tilladelser til Piwik mappen og dens indhold.",
"SystemCheckCreateFunctionHelp": "Piwik bruger anonyme funktioner til tilbagekald.",
+ "SystemCheckCronArchiveProcess": "Arkiv Cron",
+ "SystemCheckCronArchiveProcessCLI": "Håndtering af processer via kommandolinie",
"SystemCheckDatabaseHelp": "Piwik behøver enten mysqli udvidelsen eller både PDO og pdo_mysql udvidelserne.",
"SystemCheckDebugBacktraceHelp": "View:: factory kan ikke oprette visninger for det modul.",
"SystemCheckError": "En fejl opstod - skal rettes før der fortsættes",
@@ -1091,8 +1121,10 @@
"SystemCheckGzcompressHelp": "zlib udvidelsen og gzcompress funktionen skal aktiveres.",
"SystemCheckGzuncompressHelp": "zlib udvidelsen og gzuncompress funktionen skal aktiveres.",
"SystemCheckIconvHelp": "PHP skal konfigureres og genstartes med \"iconv\" støtte aktiveret, --with-iconv.",
+ "SystemCheckJsonHelp": "php5-json udvidelsen er nødvendig for at Piwik kan læse og skrive JSON data.",
"SystemCheckMailHelp": "Tilbagemelding og Glemt adgangskode vil ikke blive sendt uden mail() funktion",
"SystemCheckMbstring": "mbstring",
+ "SystemCheckMbstringHelp": "Mbstring udvidelse er nødvendig for at håndtere multibytetegn i brugergrænsefladen og API-svar. Kontroller at mbstring.func_overload er indstillet til \"0\" i php.ini.",
"SystemCheckMemoryLimit": "Hukommelses grænse",
"SystemCheckMemoryLimitHelp": "På et stærkt trafikeret hjemmesider, kan arkiveringsprocessen kræve mere hukommelse end der er tilladt.<br \/>Se på memory_limit i php.ini filen hvis nødvendig.",
"SystemCheckOpenURL": "Åbn netadresse",
@@ -1307,6 +1339,7 @@
"MultiSites": {
"Evolution": "Udvikling",
"LoadingWebsites": "Loading websites",
+ "Pagination": "%s - %s af %s",
"PluginDescription": "Viser multi-websted resumé\/statistik. Vedligeholdes som et Piwik-kerne udvidelsesmodul.",
"TopLinkTooltip": "Sammenlign analyse statistik for alle hjemmesider."
},
@@ -1522,6 +1555,7 @@
"AutoArchivePreProcessed": "Segmenterede rapporter behandles på forhånd (er hurtigere, kræver archive.php cron)",
"AutoArchiveRealTime": "Segmenterede rapporter behandles tidstro",
"ChooseASegment": "Vælg et segment",
+ "DataAvailableAtLaterDate": "Dine segmenterede analyserapporter vil være tilgængelig senere. Vi undskylder ulejligheden.",
"DefaultAllVisits": "Alle besøg",
"DragDropCondition": "Træk og slip betingelse",
"LoadingSegmentedDataMayTakeSomeTime": "Behandling af segmenterede besøgsdata kan tage et par minutter...",
@@ -1532,10 +1566,13 @@
"SegmentDisplayedThisWebsiteOnly": "kun dette websted",
"SegmentIsDisplayedForWebsite": "og vises for",
"SegmentNotApplied": "Segment '%s' anvendes ikke",
+ "SegmentNotAppliedMessage": "Du beder om data til brugerdefineret segment '%s', Piwik konfigurationen forhindrer tidstro behandling af rapporter pga ydeevne grunde.",
"SelectSegmentOfVisitors": "Vælg et segment af besøgende:",
"ThisSegmentIsVisibleTo": "Segmentet er synligt for:",
"VisibleToAllUsers": "Alle brugere",
"VisibleToMe": "mig",
+ "YouDontHaveAccessToCreateSegments": "Du har ikke det nødvendige adgangsniveau til at oprette og redigere segmenter.",
+ "YouMayChangeSetting": "Alternativt kan du ændre indstillingen i konfigurationsfilen (%s), eller redigere dette segment og vælg '%s'.",
"YouMustBeLoggedInToCreateSegments": "Du skal være logget ind for at oprette og anvende brugerdefinerede besøgssegmenter."
},
"SEO": {
@@ -2304,6 +2341,7 @@
"ForAnonymousUsersReportDateToLoadByDefault": "Standard rapport dato for anonyme brugere",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Hvis du ønsker at ændre adgangskode skriv en ny. Ellers lad være blank.",
"InjectedHostCannotChangePwd": "Du besøger med en ukendt vært (%1$s). Du kan ikke ændre din adgangskode, før problemet er løst.",
+ "LastSeen": "Sidst set",
"MainDescription": "Bestem hvilke brugere der har hvilken Piwik adgang til hjemmesiderne. Adgang kan også sættes på alle hjemmesider på en gang.",
"ManageAccess": "Administrer adgang",
"MenuAnonymousUserSettings": "Anonym bruger indstilling",
diff --git a/lang/de.json b/lang/de.json
index 0f14b4e866..1ea591646a 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "Hier kann das Piwik-Logo angepasst werden, das in der Benutzeroberfläche sowie in E-Mail-Berichten verwendet wird.",
"DevelopmentProcess": "Auch wenn unser %sEntwicklungsprozess%s tausende an automatisierten Tests beinhaltet, haben Beta-Tester eine Schlüsselrolle um die \"No Bug Policy\" in Piwik zu gewährleisten.",
"EmailServerSettings": "E-Mail-Server-Einstellungen",
+ "FaviconUpload": "Wählen Sie ein Favicon für den Upload aus",
"ForBetaTestersOnly": "Nur für Beta-Tester",
"ImageTracking": "Tracking mit Hilfe eines Bildes",
"ImageTrackingIntro1": "Für den Fall, dass ein Besucher JavaScript deaktiviert hat, oder JavaScript nicht verwendet werden kann, können Sie das Tracking mit Hilfe eines Bildes nutzen um Besucher zu tracken.",
@@ -1026,7 +1027,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik ist ein gemeinschaftliches Projekt, geschaffen mit Liebe von Menschen aus der ganzen Welt.",
- "CommunityNewsletter": "Senden Sie mir per E-Mail Community-Aktualisierungen (neue Plugins, neue Funktionen usw.)",
"ConfigurationHelp": "Ihre Konfigurationsdatei enthält Fehler. Sie können entweder die config\/config.php löschen und neu installieren, oder die Einstellung zur Datenbankverbindung korrigieren.",
"ConfirmDeleteExistingTables": "Wollen Sie wirklich die Tabellen: %s aus der Datenbank löschen? WARNUNG: DATEN AUS DIESEN TABELLEN KÖNNEN NICHT WIEDERHERGESTELLT WERDEN!",
"Congratulations": "Glückwunsch",
@@ -1062,6 +1062,7 @@
"NfsFilesystemWarningSuffixAdmin": "Dies bedeutet, dass Piwik extrem langsam arbeitet wenn Dateibasierte Sessions genutzt werden.",
"NfsFilesystemWarningSuffixInstall": "Die Benutzung von dateibasierten Sessions auf NFS ist extrem langsam, deshalb wird Piwik datenbankbasierte Sessions nutzen. Falls es viele gleichzeitige Zugriffe auf das Dashboard gibt sollten Sie möglicherweise die maximal erlaubten Client-Zugriffe auf den Datenbankserver erhöhen.",
"NoConfigFound": "Die Piwik-Konfigurationsdatei konnte nicht gefunden werden und es wird versucht, eine Piwik-Seite aufzurufen.<br \/><b>  » Sie können <a href='index.php'>Piwik jetzt installieren<\/a><\/b><br \/><small>Wenn Sie Piwik zuvor schon installiert haben und noch Tabellen in der Datenbank vorhanden sind: Keine Angst, Sie können diese Tabellen und die enthaltenen Daten weiterhin verwenden!<\/small>",
+ "NotSupported": "nicht unterstützt",
"Optional": "Optional",
"Password": "Passwort",
"PasswordDoNotMatch": "Passwörter stimmen nicht überein",
@@ -1072,7 +1073,6 @@
"Requirements": "Anforderungen für die Piwik-Installation",
"RestartWebServer": "Nach dieser Änderung müssen Sie den Webserver neu starten.",
"ReusingTables": "Tabellen werden wiederverwendet",
- "SecurityNewsletter": "Senden Sie mir per E-Mail Informationen zu wichtigen Piwik-Aktualisierungen sowie Sicherheitswarnungen",
"SeeBelowForMoreInfo": "Unterhalb können Sie weitere Informationen finden.",
"SetupWebsite": "Webseite hinzufügen",
"SetupWebsiteError": "Beim Hinzufügen der Webseite ist ein Fehler aufgetreten",
@@ -1318,6 +1318,7 @@
"MultiSites": {
"Evolution": "Entwicklung",
"LoadingWebsites": "Lade Webseiten",
+ "Pagination": "%s - %s von %s",
"PluginDescription": "Zeigt eine Zusammenfassung über die Statistiken aller Webseiten. Wird derzeit als ein Piwik Core Plugin verwaltet",
"TopLinkTooltip": "Vergleichen Sie Webanalytikstatistiken für alle Ihre Webseiten."
},
@@ -1549,6 +1550,7 @@
"ThisSegmentIsVisibleTo": "Dieses Segment ist sichtbar für:",
"VisibleToAllUsers": "alle Benutzer",
"VisibleToMe": "mich",
+ "YouDontHaveAccessToCreateSegments": "Sie haben nicht die benötigten Berechtigungen um Segmente anzulegen und zu bearbeiten.",
"YouMayChangeSetting": "Alternativ können Sie die Einstellung in der Konfigurationsdatei (%s) ändern, oder ändern Sie dieses Segment und wählen '%s'.",
"YouMustBeLoggedInToCreateSegments": "Sie müssen sich anmelden um eigene Besuchersegmente anzulegen oder zu bearbeiten."
},
diff --git a/lang/el.json b/lang/el.json
index e56b1f309c..5fd1315868 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -103,6 +103,7 @@
"CustomLogoHelpText": "Μπορείτε να προσαρμόσετε το λογότυπο του Piwik που θα εμφανίζεται στο περιβάλλον εργασίας του χρήστη και στις αναφορές αλληλογραφίας.",
"DevelopmentProcess": "Παρόλο που η %sδιαδικασία μας ανάπτυξης%s περιλαμβάνει χιλιάδες αυτοματοποιημένων ελέγχων, οι χρήστες δοκιμαστές παίζουν ένα κύριο ρόλο στο να πετύχουμε την \"Χωρίς σφάλματα πολιτική\" του Piwik.",
"EmailServerSettings": "Ρυθμίσεις διακομιστή ηλεκτρονικής αλληλογραφίας",
+ "FaviconUpload": "Επιλέξτε ένα favicon για ανέβασμα",
"ForBetaTestersOnly": "Για χρήστες δοκιμαστές μόνο",
"ImageTracking": "Παρακολούθηση Εικόνων",
"ImageTrackingIntro1": "Όταν ένας επισκέπτης έχει απενεργοποιήσει την JavaScript ή όταν η JavaScript δεν μπορεί να χρησιμοποιηθεί, μπορείτε να χρησιμοποιήσετε ένα σύνδεσμο εντοπισμού εικόνων για να παρακολουθείτε τους επισκέπτες.",
@@ -153,6 +154,7 @@
"PiwikIsInstalledAt": "Το Piwik εγκαταστάθηκε στο",
"PluginDescription": "Περιοχή διαχείρισης του Piwik.",
"PluginSettingChangeNotAllowed": "Δεν επιτρέπεται να αλλάξετε την τιμή της ρύθμισης \"%s\" στο πρόσθετο \"%s\"",
+ "PluginSettingReadNotAllowed": "Απαγορεύεται να δείτε την τιμή της ρύθμισης \"%s\" στο πρόσθετο \"%s\"",
"PluginSettings": "Ρυθμίσεις πρόσθετου",
"PluginSettingsIntro": "Εδώ μπορείτε να αλλάξετε τις ρυθμίσεις των παρακάτω πρόσθετων από τρίτους:",
"PluginSettingsValueNotAllowed": "Η τιμή για το πεδίο \"%s\" στο πρόσθετο \"%s\" δεν είναι επιτρεπτή",
@@ -1041,7 +1043,6 @@
},
"Installation": {
"CollaborativeProject": "Το Piwik είναι ένα συνεργατικό έργο, δημιουργημένο με αγάπη από ανθρώπους από όλο τον κόσμο.",
- "CommunityNewsletter": "Ενεργοποίηση αλληλογραφίας για ενημερώσεις της κοινότητας (νέα πρόσθετα, νέα χαρακτηριστικά, κλπ.)",
"ConfigurationHelp": "Οι ρυθμίσεις του Piwik φαίνεται ότι έχουν πρόβλημα. Μπορείτε να απομακρύνετε το config\/config.ini.php και να συνεχίσετε την εγκατάσταση ή διορθώστε τις ρυθμίσεις σύνδεσης της βάσης δεδομένων.",
"ConfirmDeleteExistingTables": "Θέλετε σίγουρα να διαγράψετε τους πίνακες: %s από τη βάση δεδομένων σας; ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΤΑ ΔΕΔΟΜΕΝΑ ΑΠΟ ΑΥΤΟΥΣ ΤΟΥ ΠΙΝΑΚΕΣ ΔΕΝ ΘΑ ΜΠΟΡΟΥΝ ΝΑ ΑΝΑΚΤΗΘΟΥΝ!",
"Congratulations": "Συγχαρητήρια",
@@ -1077,6 +1078,7 @@
"NfsFilesystemWarningSuffixAdmin": "Αυτό σημαίνει ότι το Piwik θα είναι εξαιρετικά αργό, όταν χρησιμοποιεί το αρχείο συνεδρίες σε αρχεία (file based sessions).",
"NfsFilesystemWarningSuffixInstall": "Οι συνεδρίες αρχείων (file based sessions) στο NFS είναι εξαιρετικά αργές, έτσι το Piwik θα χρησιμοποιήσει συνεδρίες με βάση δεδομένων. Εάν έχετε πολλούς ταυτόχρονους χρήστες, μπορεί να χρειαστεί να αυξήσετε τον μέγιστο αριθμό συνδέσεων προς τον εξυπηρετητή της βάσης δεδομένων.",
"NoConfigFound": "Το αρχείο ρυθμίσεων του Piwik δεν βρέθηκε και προσπαθείτε να ανοίξετε μια σελίδα Piwik.<br \/><b>  » Μπορείτε να <a href=\"index.php\">εγκαταστήσετε το Piwik τώρα<\/a><\/b><br \/><small>αν έχετε εγκαταστήσει το Piwik προηγούμενα και έχετε κάποιους πίνακες στη βάση δεδομένων σας, μην ανησυχείτε, μπορείτε να χρησιμοποιήσετε ξανά τους ίδιους πίνακες και να διατηρήσετε τα υπάρχοντα δεδομένα σας!<\/small>",
+ "NotSupported": "δεν υποστηρίζεται",
"Optional": "Προαιρετικά",
"Password": "Κωδικός πρόσβασης",
"PasswordDoNotMatch": "ο κωδικός δεν ταιριάζει",
@@ -1087,7 +1089,6 @@
"Requirements": "Απαιτήσεις Piwik",
"RestartWebServer": "Μετά από αυτή την αλλαγή, επανεκκινήστε τον διακομιστή σας.",
"ReusingTables": "Γίνεται χρήση των Πινάκων",
- "SecurityNewsletter": "Ενεργοποίηση αλληλογραφίας για τις βασικές αναβαθμίσεις του Piwik και ειδοποιήσεις ασφάλειας",
"SeeBelowForMoreInfo": "Δείτε παρακάτω για περισσότερες πληροφορίες.",
"SetupWebsite": "Ρύθμιση μιας ιστοσελίδας",
"SetupWebsiteError": "Συνέβη ένα σφάλμα κατά της προσθήκη της ιστοσελίδας",
@@ -1103,6 +1104,8 @@
"SystemCheck": "Έλεγχος συστήματος",
"SystemCheckAutoUpdateHelp": "Σημείωση: Η αναβάθμιση με Ένα Πάτημα του Piwik απαιτεί δικαιώματα εγγραφής στο φάκελο Piwik και στα περιεχόμενά του.",
"SystemCheckCreateFunctionHelp": "Το Piwik χρησιμοποιεί ανώνυμες συναρτήσεις για ανακλήσεις.",
+ "SystemCheckCronArchiveProcess": "Cron αρχειοθέτησης",
+ "SystemCheckCronArchiveProcessCLI": "Διαχείριση εργασιών από CLI",
"SystemCheckDatabaseHelp": "Το Piwik απαιτεί είτε την επέκταση mysqli ή τις επεκτάσεις PDO και pdo_mysql.",
"SystemCheckDebugBacktraceHelp": "Η εντολή View::factory δεν θα μπορεί να δημιουργήσει προβολές για το κληθέν πρότυπο.",
"SystemCheckError": "Συνέβη ένα σφάλμα – πρέπει να διορθωθεί πριν συνεχίσετε",
@@ -1334,6 +1337,7 @@
"MultiSites": {
"Evolution": "Πρόοδος",
"LoadingWebsites": "Γίνεται φόρτωση των ιστοτόπων",
+ "Pagination": "%s - %s από %s",
"PluginDescription": "Προβάλει ενεργή περίληψη\/στατιστικά πολλών ιστοσελίδων. Προς το παρόν διατηρείτε ως πρόσθετο του πυρήνα του Piwik.",
"TopLinkTooltip": "Σύγκριση στατιστικών Ιστού για όλες τις ιστοσελίδες σας."
},
@@ -1565,6 +1569,7 @@
"ThisSegmentIsVisibleTo": "Το τμήμα αυτό είναι ορατό σε:",
"VisibleToAllUsers": "όλους τους χρήστες",
"VisibleToMe": "εμένα",
+ "YouDontHaveAccessToCreateSegments": "Δεν διαθέτετε την απαιτούμενη πρόσβαση ασφαλείας για να δημιουργείτε και να τροποποιείτε τμήματα.",
"YouMayChangeSetting": "Εναλλακτικά, μπορείτε να αλλάξετε τη ρύθμιση στο αρχείο ρυθμίσεων (%s), ή να τροποποιήσετε το Τμήμα αυτό και να επιλέξετε '%s'.",
"YouMustBeLoggedInToCreateSegments": "Θα πρέπει να έχετε κάνει είσοδο για να δημιουργήσετε και να επεξεργαστείτε προσαρμοσμένα τμήματα επισκεπτών."
},
diff --git a/lang/en.json b/lang/en.json
index 55b3e6872b..a44f85bbb7 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1045,7 +1045,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik is a collaborative project, built with love by people from all over the world.",
- "CommunityNewsletter": "email me with community updates (new plugins, new features, etc.)",
"ConfigurationHelp": "Your Piwik configuration file appears to be misconfigured. You can either remove config\/config.ini.php and resume installation, or correct the database connection settings.",
"ConfirmDeleteExistingTables": "Are you sure you want to delete the tables: %s from your database? WARNING: DATA FROM THESE TABLES CANNOT BE RECOVERED!",
"Congratulations": "Congratulations",
@@ -1091,7 +1090,8 @@
"Requirements": "Piwik Requirements",
"RestartWebServer": "After making this change, restart your web server.",
"ReusingTables": "Reusing the Tables",
- "SecurityNewsletter": "email me with major Piwik upgrades and security alerts",
+ "PiwikOrgNewsletter": "email me with major Piwik community updates",
+ "PiwikProNewsletter": "I am interested in %sPiwik PRO%s services (no more than 1 email a month)",
"SeeBelowForMoreInfo": "See below for more information.",
"SetupWebsite": "Setup a Website",
"SetupWebsiteError": "There was an error when adding the website",
@@ -1153,6 +1153,7 @@
"SystemCheckZlibHelp": "You need to configure and rebuild PHP with \"zlib\" support enabled, --with-zlib.",
"SystemCheckCronArchiveProcess": "Archive Cron",
"SystemCheckCronArchiveProcessCLI": "Managing processes via CLI",
+ "SystemCheckSessionAutostart": "To prevent some issues please set the following in your php.ini file: session.auto_start=0",
"NotSupported": "not supported",
"Tables": "Creating the Tables",
"TablesCreatedSuccess": "Tables created with success!",
diff --git a/lang/es.json b/lang/es.json
index 9448e79606..ed5b80b73f 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -1043,7 +1043,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik es un proyecto de colaboración, creado con amor por personas de todo el mundo",
- "CommunityNewsletter": "envíeme un email con las actualizaciones de la comunidad (nuevos plugins, nuevas características, etc.)",
"ConfigurationHelp": "Su archivo de configuración de Piwik parece estar desconfigurado. Puede remover el archivo config\/config.ini.php y seguir la instalación, o corregir la configuración de conexión de la base de datos.",
"ConfirmDeleteExistingTables": "¿Está seguro de que desea borrar las tablas: %s de su base de datos? ADVERTENCIA: ¡LOS DATOS DE ESTAS TABLAS NO SE PUEDEN RECUPERAR!",
"Congratulations": "Enhorabuena",
@@ -1087,7 +1086,6 @@
"Requirements": "Requisitos de Piwik",
"RestartWebServer": "Luego de realizar este cambio renicia tu servidor web.",
"ReusingTables": "Reutilizando las tablas",
- "SecurityNewsletter": "envíeme un email con las principales actualizaciones y alertas de seguridad de Piwik",
"SeeBelowForMoreInfo": "Véase más adelante para mayor información.",
"SetupWebsite": "Configurar una página web",
"SetupWebsiteError": "Se ha producido un error al añadir el sitio web",
diff --git a/lang/et.json b/lang/et.json
index 890725a9f3..f2adbedbb7 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -729,7 +729,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik on koostööprojekt, mis on valminud armastusega inimeste poolt üle kogu maailma.",
- "CommunityNewsletter": "saada mulle e-postiga kommuuni uuendusi (uued pluginad, lisavõimalused jne)",
"Congratulations": "Õnnitleme",
"CongratulationsHelp": "<p>Õnnitlused! Sinu Piwiku paigaldus on edukalt lõpuni viidud.<\/p><p>Sisesta JavaScript kood oma lehele ja jää külastusi ootama!<\/p>",
"DatabaseAbilities": "Andmebaasi võimalused",
@@ -766,7 +765,6 @@
"PluginDescription": "Piwiku paigaldusprotsess. Paigaldust tehakse tavaliselt ainult üks kord. Kui konfiguratsioonifail config\/config.ini.php kustutatakse, siis algab paigaldus uuesti.",
"Requirements": "Piwiku nõuded",
"RestartWebServer": "Peale selle muudatuse teostamist, palun taaskäivita oma veebiserver.",
- "SecurityNewsletter": "saada mulle e-postiga suuremad Piwiku uuendused ja turvahoiatused",
"SeeBelowForMoreInfo": "Vaata allapoole täpsema info jaoks.",
"SetupWebsite": "Seadista veebileht",
"SetupWebsiteError": "Veebilehe lisamisel tekkis viga",
diff --git a/lang/eu.json b/lang/eu.json
index 7e7d97ca1d..d9c225d886 100644
--- a/lang/eu.json
+++ b/lang/eu.json
@@ -310,7 +310,6 @@
"ViewAndEditGoals": "Ikusi eta editatu helburuak"
},
"Installation": {
- "CommunityNewsletter": "bidal iezadazu e-posta komunitateko eguneraketekin (plugin berriak, ezaugarri berriak, ...)",
"ConfirmDeleteExistingTables": "Ziur zaude ondorengo taulak: %s datu-basetik ezabatu nahi dituzula? OHARRA: TAULA HAUETAKO DATUAK EZINGO DIRA BERRESKURATU!",
"Congratulations": "Zorionak",
"CongratulationsHelp": "<p>Zorionak! Zure Piwik instalazioa osatu da.<\/p><p>Egiaztatu JavaScript kodea zure orrietan txertatuta dagoela eta ondoren itxaron lehenengo bisitei!<\/p>",
@@ -337,7 +336,6 @@
"PasswordRepeat": "pasahitza (errepikatu)",
"PercentDone": "%% %s eginda",
"Requirements": "Piwik-en beharrak",
- "SecurityNewsletter": "bidal iezadazu e-posta Piwik-en bertsio-berritze eta segurtasun-alerta nagusienekin",
"SetupWebsite": "Konfiguratu webgunea",
"SetupWebsiteError": "Errorea gertatu da webgunea gehitzean",
"SetupWebSiteName": "webgunearen izena",
diff --git a/lang/fa.json b/lang/fa.json
index b909a39a99..cb53d467bd 100644
--- a/lang/fa.json
+++ b/lang/fa.json
@@ -902,7 +902,6 @@
},
"Installation": {
"CollaborativeProject": "پیویک یک پروژه گروهی است که با عشق و علاقه توسط افرادی از سراسر دنیا ساخته شده است.",
- "CommunityNewsletter": "ایمیل من با به روز رسانی جامعه (پلاگین های جدید، ویژگی های جدید، و غیره)",
"ConfigurationHelp": "فایل پیکربندی Piwik شما به نظر می رسد بد باشد. شما هم می توانید پیکربندی \/ config.ini.php و حذف از سر نصب و راه اندازی و یا اصلاح تنظیمات اتصال پایگاه داده.",
"ConfirmDeleteExistingTables": "آیا شما مطمئن هستید که می خواهید این جدول ها را : %s از پایگاه داده تان حذف کنید؟ هشدار : داده های این جدول ها قابل بازیابی نخواهد بود!",
"Congratulations": "تبریک",
@@ -940,7 +939,6 @@
"PluginDescription": "روند نصب و راه اندازی Piwik. نصب و راه اندازی شده است معمولا فقط یک بار انجام می شود. اگر تنظیمات پیکربندی فایل \/ config.inc.php حذف شده، نصب و راه اندازی دوباره شروع خواهد شد.",
"Requirements": "نیازمندی های پیویک",
"RestartWebServer": "پس از این تغییر، وب سرورتان را دوباره راه اندازی (restart)کنید",
- "SecurityNewsletter": "هشدارهای بزرگ امنیتی و ارتقاهای بزرگ پیویک را به من ایمیل کن",
"SeeBelowForMoreInfo": "برای اطلاعات بیشتر پایین را ببینید.",
"SetupWebsite": "راه اندازی وبسایت",
"SetupWebsiteError": "خطا در هنگام اضافه کردن وب سایت",
diff --git a/lang/fi.json b/lang/fi.json
index fcf1e0e03a..d71fc5c13c 100644
--- a/lang/fi.json
+++ b/lang/fi.json
@@ -844,7 +844,7 @@
"TransitionsRowActionTooltip": "Näe mitä kävijät tekivät ennen ja jälkeen tällä sivulla käymistä",
"TransitionsRowActionTooltipTitle": "Avaa muutokset",
"TranslatorEmail": "olli@jarva.fi, sara@alennuskoodia.fi",
- "TranslatorName": "<a href=\"http:\/\/olli.jarva.fi\/\">Olli Jarva<\/a>, Sara",
+ "TranslatorName": "<a href=\"http:\/\/olli.jarva.fi\/\">Olli Jarva<\/a>, <a href=\"http:\/\/www.alennuskoodia.fi\/\">Sara Roshage<\/a>",
"UniquePurchases": "Uniikit ostot",
"Unknown": "Tuntematon",
"Upload": "Lähetä",
@@ -1015,7 +1015,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik on yhteistyöprojekti, jonka parissa ovat työskennelleet ihmiset ympäri maailmaa suurella sydämellä.",
- "CommunityNewsletter": "lähetä sähköpostia kaikista päivityksistä (uusista lisäosista, ominaisuuksista jne.)",
"ConfigurationHelp": "Piwikin asetustiedosto on luotu väärin. Voit joko poistaa tiedoston config\/config.ini.php ja käyttää asennusohjelmaa uudelleen tai korjata tietokannan asetukset.",
"ConfirmDeleteExistingTables": "Haluatko varmasti poistaa seuraavat taulut tietokannasta: %s? VAROITUS: TAULUJEN TIETOJA EI VOI PALAUTTAA EIKÄ POISTAMISTA VOI KUMOTA!",
"Congratulations": "Onnittelut",
@@ -1061,7 +1060,6 @@
"Requirements": "Piwikin vaatimukset",
"RestartWebServer": "Käynnistä web-palvelimesi uudelleen näiden muutosten jälkeen.",
"ReusingTables": "Taulukoiden uudelleenkäyttö",
- "SecurityNewsletter": "lähetä sähköpostia Piwikin suurista päivityksistä ja turvallisuushälytyksistä",
"SeeBelowForMoreInfo": "Katso alempaa lisätietoja.",
"SetupWebsite": "Lisää verkkosivu",
"SetupWebsiteError": "Virhe verkkosivun lisäämisessä",
diff --git a/lang/fr.json b/lang/fr.json
index 12ca43d02a..4292695d61 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -1010,7 +1010,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik est un projet collaboratif, construit avec amour par des personnes du monde entier.",
- "CommunityNewsletter": "Envoyez-moi un courriel pour les nouveautés de la communauté (nouveaux plugins, nouvelles fonctionnalités, etc.)",
"ConfigurationHelp": "Votre configuration de Piwik semble être erronée. Vous pouvez ou bien supprimer config\/config.inc.php et reprendre l'installation ou corriger les paramètres de connexion.",
"ConfirmDeleteExistingTables": "Êtes vous sûr de vouloir supprimer les tables : %s de votre base de données? ATTENTION: LES DONNÉES SERONT DÉFINITIVEMENT PERDUES!",
"Congratulations": "Félicitations",
@@ -1056,7 +1055,6 @@
"Requirements": "Pré requis Piwik",
"RestartWebServer": "Après avoir effectué ces modifications, redémarrez votre serveur web.",
"ReusingTables": "Réutilisation des Tables",
- "SecurityNewsletter": "Envoyez-moi un courriel pour les mises à jour de versions majeures de piwik ou pour les alertes de sécurité",
"SeeBelowForMoreInfo": "Voir ci-dessous pour plus d'informations.",
"SetupWebsite": "Paramétrer un site",
"SetupWebsiteError": "Une erreur a été rencontrée pendant l'ajout du site",
diff --git a/lang/hi.json b/lang/hi.json
index 0655d82a0c..4b7a222ac4 100644
--- a/lang/hi.json
+++ b/lang/hi.json
@@ -868,7 +868,6 @@
"PluginDescription": "किसी भी Piwik रिपोर्ट के लिए सुंदर स्थिर पीएनजी ग्राफ छवियों को उत्पन्न करता है."
},
"Installation": {
- "CommunityNewsletter": "(नए plugins, नई सुविधाओं, आदि) समुदाय अद्यतन के साथ मुझे ईमेल करें",
"ConfigurationHelp": "आपकी Piwik विन्यास फाइल गलत प्रतीत होता है. आप या तो विन्यास \/ config.ini.php हटाने और स्थापना को फिर से शुरू, या डेटाबेस कनेक्शन सेटिंग्स को सही कर सकते हैं.",
"ConfirmDeleteExistingTables": "अपने डेटाबेस से %s: क्या आप तालिकाओं को हटाना चाहते हैं? चेतावनी: इन तालिकाओं से डेटा बरामद नहीं किया जा सकता है!",
"Congratulations": "बधाई हो",
@@ -911,7 +910,6 @@
"PluginDescription": "Piwik की स्थापना की प्रक्रिया. स्थापना आमतौर पर केवल एक बार किया जाता है. विन्यास फाइल विन्यास \/ config.inc.php नष्ट कर दिया जाता है, तो स्थापना फिर से शुरू होगा.",
"Requirements": "Piwik आवश्यकताएँ",
"RestartWebServer": "यह परिवर्तन करने के बाद, अपने वेब सर्वर को पुनरारंभ करें.",
- "SecurityNewsletter": "प्रमुख Piwik उन्नयन और सुरक्षा अलर्ट के साथ मुझे ईमेल करें",
"SeeBelowForMoreInfo": "अधिक जानकारी के लिए नीचे देखें.",
"SetupWebsite": "एक वेबसाइट सेटअप करें",
"SetupWebsiteError": "वेबसाइट जोड़ते समय एक त्रुटि हुई थी",
diff --git a/lang/hu.json b/lang/hu.json
index 5e7a67649e..1a74caf044 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -526,7 +526,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "ahol a meglátogatott oldal tartalmaz egy JavaScript hívást a piwikTracker.trackGoal() funkció aktiválására (%stovábbi információ%s)"
},
"Installation": {
- "CommunityNewsletter": "e-mail küldése közösségi hírekről (új bővítmények, új funkciók, stb.)",
"ConfigurationHelp": "Úgy tűnik, a Piwik konfigurációs fájl hibás. Törölheted a config\/config.ini.php fájlt — újrakezdve a telepítést, vagy kijavíthatod az adatbázis-kapcsolathoz szükséges beállításokat.",
"ConfirmDeleteExistingTables": "Biztos vagy benne, hogy törölni akarod a %s táblákat az adatbázisból? FIGYELEM: A TÖRÖLT TÁBLÁK ADATAI NEM ÁLLÍTHATÓK VISSZA!",
"Congratulations": "Gratulálunk",
@@ -556,7 +555,6 @@
"PleaseFixTheFollowingErrors": "Kérjük, javítsd a következő hibákat",
"PluginDescription": "Piwik telepítése. Általában csak egyszer fut le, ha azonban a config\/config.inc.php konfigurációs fájl hiányzik, akkor a telepítés újból fog kezdődni.",
"Requirements": "Piwik Rendszerkövetelmények",
- "SecurityNewsletter": "e-mail küldése főbb Piwik verziók megjelenése és biztonsági riasztások esetén",
"SetupWebsite": "Weboldal beállítása",
"SetupWebsiteError": "Hiba a weboldal hozzáadása közben!",
"SetupWebSiteName": "weboldal neve",
diff --git a/lang/id.json b/lang/id.json
index 7fdf42d3d2..5ce616258a 100644
--- a/lang/id.json
+++ b/lang/id.json
@@ -866,7 +866,6 @@
"PluginDescription": "Bangkitkan grafik PNG statis indah untuk bermacam laporan Piwik."
},
"Installation": {
- "CommunityNewsletter": "kirimi saya surel atas pembaruan komunitas (pengaya baru, fitur baru, dsb.)",
"ConfigurationHelp": "Tampaknya berkas konfigurasi Piwik Anda terdapat kesalahan. Anda dapat menghapus config\/config.ini.php dan melanjutkan instalasi, atau memperbaiki pengaturan sambungan basisdata.",
"ConfirmDeleteExistingTables": "Apakan Anda yakin menghapus tabel: %s dari basisdata Anda? PERINGATAN: DATA DALAM TABEL TERSEBUT TAK DAPAT DIKEMBALIKAN!",
"Congratulations": "Selesai",
@@ -908,7 +907,6 @@
"PluginDescription": "Proses Instalasi Piwik. Instalasi ini biasanya dilakukan hanya sekali. Bila berkas konfigurasi di config\/config.inc.php terhapus, instalasi akan diulangi.",
"Requirements": "Persyaratan Piwik",
"RestartWebServer": "Setelah membuat perubahan tersebut, muat ulang peladen web Anda.",
- "SecurityNewsletter": "kirimi saya surel atas pembaruan besar Piwik dan peringatan keamanan",
"SeeBelowForMoreInfo": "Lihat di bawah untuk informasi selengkapnya.",
"SetupWebsite": "Atur Situs",
"SetupWebsiteError": "Terdapat galat ketika menambah situs",
diff --git a/lang/it.json b/lang/it.json
index 3a2b9bedd0..50b39708ae 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1,6 +1,6 @@
{
"Actions": {
- "AvgGenerationTimeTooltip": "Media basata su %s hit(s) %s tra %s e %s",
+ "AvgGenerationTimeTooltip": "Media basata su %s hits %s tra %s e %s",
"ColumnClickedURL": "URL Cliccate",
"ColumnClicks": "Clic",
"ColumnClicksDocumentation": "Numero di volte che questo link è stato cliccato",
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "È possibile personalizzare il logo Piwik che verrà visualizzato nell'interfaccia utente e nei reports e-mail.",
"DevelopmentProcess": "Poichè il nostro %sprocesso di sviluppo%s include migliaia di test automatizzati, i Beta Tester giocano un ruolo chiave nel raggiungimento in Piwik della \"Politica no bug\".",
"EmailServerSettings": "Impostazioni server e-mail",
+ "FaviconUpload": "Seleziona una Favicon da caricare",
"ForBetaTestersOnly": "Solo per beta tester",
"ImageTracking": "Rilevamento immagine",
"ImageTrackingIntro1": "Quando un visitatore ha disattivato JavaScript o quando JavaScript non può essere utilizzato, è possibile utilizzare un collegamento di tracciamento immagine per tracciare i visitatori.",
@@ -154,6 +155,7 @@
"PiwikIsInstalledAt": "Piwik è installato su",
"PluginDescription": "Area di amministrazione Piwik.",
"PluginSettingChangeNotAllowed": "Non sei abilitato a cambiare il valore dell'impostazione \"%s\" nel plugin \"%s\"",
+ "PluginSettingReadNotAllowed": "Non sei abilitato a leggere il valore dell'impostazione \"%s\" nel plugin \"%s\"",
"PluginSettings": "Impostazioni plugin",
"PluginSettingsIntro": "Qui puoi cambiare le impostazioni dei seguenti plugin di terze parti:",
"PluginSettingsValueNotAllowed": "Il valore del campo \"%s\" nel plugin \"%s\" non è consentito",
@@ -1041,7 +1043,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik è un progetto in collaborazione, costruito con amore da persone di tutto il mondo.",
- "CommunityNewsletter": "Informami via e-mail sugli aggiornamenti della community (nuovi plugin, caratteristiche, ecc.)",
"ConfigurationHelp": "Il tuo file di configurazioni Piwik sembra essere configurato male. Puoi rimuovere il file config\/config.ini.php e ricominciare l'installazione, o correggere i dati di connessione al database.",
"ConfirmDeleteExistingTables": "Sei sicuro di voler cancellare le tabelle %s dal tuo Database? ATTENZIONE: I DATI NON POTRANNO ESSERE RECUPERATI!",
"Congratulations": "Congratulazioni",
@@ -1077,6 +1078,7 @@
"NfsFilesystemWarningSuffixAdmin": "Questo significa che Piwik sarà estremamente lento quando utilizzerà delle sessioni basate sui files.",
"NfsFilesystemWarningSuffixInstall": "L'utilizzo di sessioni basate sui files è estremamente lento, così Piwik userà delle sessioni con database. Se hai molti utenti della dashboard, potresti avere la necessità di aumentare il numero massimo di connessioni dei client al server del database.",
"NoConfigFound": "Il file di configurazione di Piwik non è stato trovato e stai tentando l'accesso ad una pagina di Piwik.<br \/><b> » Puoi <a href='index.php'>installare Piwik ora.<\/a><\/b><br \/><small>Se hai già installato in precedenza Piwik e nel tuo Database sono presenti delle tabelle della vecchia installazione, non preoccuparti, puoi riutilizzarle e salvare i dati già esistenti!<\/small>",
+ "NotSupported": "non supportato",
"Optional": "Opzionale",
"Password": "Password",
"PasswordDoNotMatch": "Le Password non coincidono",
@@ -1087,7 +1089,6 @@
"Requirements": "Requisiti di Piwik",
"RestartWebServer": "Dopo aver fatto questa modifica, riavviare il server web.",
"ReusingTables": "Riutilizzo delle Tabelle",
- "SecurityNewsletter": "Informami via e-mail sugli aggiornamenti più importanti di Piwik",
"SeeBelowForMoreInfo": "Guarda sotto per altre informazioni.",
"SetupWebsite": "Configura un sito web",
"SetupWebsiteError": "C'è stato un errore durante l'aggiunta del sito web",
@@ -1103,6 +1104,8 @@
"SystemCheck": "Controllo del sistema",
"SystemCheckAutoUpdateHelp": "Nota: Lo \"One Click update\" di Piwik richiede i permessi di scrittura sulla cartella Piwik e il suo contenuto.",
"SystemCheckCreateFunctionHelp": "Piwik usa funzioni anonime per i callbacks.",
+ "SystemCheckCronArchiveProcess": "Cron-task Archivio",
+ "SystemCheckCronArchiveProcessCLI": "Gestione processi tramite CLI",
"SystemCheckDatabaseHelp": "Piwik necessita dell'estensione mysqli o in alternativa sia l'estensione PDO sia l'estensione pdo_mysql",
"SystemCheckDebugBacktraceHelp": "View::factory non può creare viste (view) per il modulo chiamante.",
"SystemCheckError": "Si è verificato un errore - deve essere corretto prima di proseguire",
@@ -1334,6 +1337,7 @@
"MultiSites": {
"Evolution": "Evoluzione",
"LoadingWebsites": "Caricamento siti web",
+ "Pagination": "%s - %s di %s",
"PluginDescription": "Mostra un sommario delle statistiche per il multi-sito. Attualmente mantenuto come un plugin Piwik del core.",
"TopLinkTooltip": "Compara le statistiche web di tutti i tuoi siti web."
},
@@ -1565,6 +1569,7 @@
"ThisSegmentIsVisibleTo": "Questo segmento è visibile a:",
"VisibleToAllUsers": "tutti gli utenti",
"VisibleToMe": "me",
+ "YouDontHaveAccessToCreateSegments": "Non hai un livello d'accesso adeguato per creare e modificare i segmenti.",
"YouMayChangeSetting": "In alternativa, puoi cambiare le impostazioni nel file di configurazione (%s) o modificare questo Segmento e scegliere '%s'.",
"YouMustBeLoggedInToCreateSegments": "Devi avere effettuato l'accesso per creare e modificare i segmenti personalizzati dei visitatori."
},
diff --git a/lang/ja.json b/lang/ja.json
index 1ecd282957..e5f49fe0ed 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -340,7 +340,7 @@
"YouCanUpgradeAutomaticallyOrDownloadPackage": "自動的にバージョン %s にアップデートするか、パッケージをダウンロードして手作業でインストールすることができます:",
"YouCouldManuallyExecuteSqlQueries": "データベースのタイムアウト、ブラウザのタイムアウト、あるいはその他の問題により Piwik がアップグレードに失敗し、さらにコマンドラインアップデータを使用することができない場合は、Piwik をアップデートするために手作業で SQL クエリーを実行することができます。",
"YouMustDownloadPackageOrFixPermissions": "Piwik が現在のインストールに上書きすることができません。 ディレクトリ/ファイルのパーミッションを修正するか、パッケージをダウンロードして手作業でバージョン %s をインストールすることができます:",
- "YourDatabaseIsOutOfDate": "Piwik データベースが旧式のため、継続する前にアップグレードが必要です。"
+ "YourDatabaseIsOutOfDate": "Piwik データベースが古いため、継続する前にアップグレードが必要です。"
},
"CustomVariables": {
"ColumnCustomVariableName": "カスタム変数名",
@@ -586,11 +586,13 @@
"JsTrackingTag": "JavaScript トラッキングタグ",
"Language": "言語",
"LastDays": "最後の %s 日間(今日を含む)",
+ "LastDaysShort": "最後の %s 日間",
"LayoutDirection": "ltr",
"Live": "ライブ",
"Loading": "読み込み中...",
"LoadingData": "データ読み込み中...",
"LoadingPopover": "ロード中 %s...",
+ "LoadingPopoverFor": "ロード中 %s のために",
"Locale": "ja_JP.UTF-8",
"Logout": "ログアウト",
"LongDay_1": "月曜日",
@@ -612,7 +614,7 @@
"LongMonth_7": "7月",
"LongMonth_8": "8月",
"LongMonth_9": "9月",
- "MainMetrics": "主メトリクス",
+ "MainMetrics": "メインメトリクス",
"Matches": "一致",
"MediumToHighTrafficItIsRecommendedTo": "比較的トラフィックの高いウェブサイトでは、今日のリポートの処理間隔を 30分(%s 秒) または 1時間(%s 秒) に設定することをお勧めします。",
"Metadata": "メタデータ",
@@ -623,6 +625,7 @@
"MinutesSeconds": "%1$s 分 %2$s 秒",
"Mobile": "モバイル",
"Monthly": "毎月",
+ "MonthlyReport": "毎月",
"MonthlyReports": "月次リポート",
"More": "以上",
"MoreDetails": "詳細",
@@ -630,6 +633,7 @@
"MultiSitesSummary": "全ウェブサイト",
"Name": "名前",
"NbActions": "アクション数",
+ "NbSearches": "内部検索数",
"NDays": "%s 日間",
"Never": "しない",
"NewReportsWillBeProcessedByCron": "Piwik アーカイブ処理がブラウザによる表示をトリガーとしない場合、新しいリポートは crontab によって処理されます。",
@@ -637,6 +641,7 @@
"NewVisitor": "新規ビジター",
"NewVisits": "新規ビジット",
"Next": "次へ",
+ "NMinutes": "%s 分",
"No": "いいえ",
"NoDataForGraph": "このグラフのデータはありません。",
"NoDataForTagCloud": "このタグクラウドのデータはありません。",
@@ -649,6 +654,7 @@
"NumberOfVisits": "訪問数",
"NVisits": "%s ビジット",
"Ok": "OK",
+ "OneAction": "1アクション",
"OneDay": "1日",
"OneMinute": "1分",
"OneVisit": "1ビジット",
@@ -659,8 +665,13 @@
"OperationAtLeast": "少なくとも",
"OperationAtMost": "最大で",
"OperationContains": "含む",
- "OperationIs": "で",
+ "OperationDoesNotContain": "含まれていない",
+ "OperationEquals": "等しい",
+ "OperationGreaterThan": "より大きい",
+ "OperationIs": "である",
"OperationIsNot": "ではありません",
+ "OperationLessThan": "以下",
+ "OperationNotEquals": "等しくない",
"OptionalSmtpPort": "オプションです。 非暗号化と TLS SMTP では 25 が、SSL SMTP では 465 がデフォルトになります。",
"Options": "オプション",
"OrCancel": "または %s キャンセル %s",
@@ -683,6 +694,7 @@
"PoweredBy": "Powered by",
"Previous": "前へ",
"PreviousDays": "以前の %s 日間(今日は含まない)",
+ "PreviousDaysShort": "以前の %s 日間",
"Price": "価格",
"ProductConversionRate": "製品のコンバージョン率",
"ProductRevenue": "製品の収益",
@@ -760,8 +772,8 @@
"TotalRevenue": "総収益",
"TransitionsRowActionTooltip": "訪問者が、このページの表示前後に何をしていたか見てください",
"TransitionsRowActionTooltipTitle": "トランジションを開く",
- "TranslatorEmail": "imagine@drupal.jp",
- "TranslatorName": "Takafumi\/Drupal Japan - http:\/\/drupal.jp",
+ "TranslatorEmail": "hello@piwik.org",
+ "TranslatorName": "Takafumi\/Drupal Japan - http:\/\/drupal.jp Takeshi Ueda\/Piwik Japan Team - http:\/\/piwikjapan.org",
"UniquePurchases": "ユニークな購入",
"Unknown": "不明",
"Upload": "アップロード",
@@ -901,10 +913,25 @@
"PluginDescription": "Piwikリポートの美しい静的PNGグラフ画像を生成します。"
},
"Insights": {
- "DayComparedToPreviousDay": "前の日"
+ "ControlComparedToDescription": "比較する実績値は",
+ "DayComparedToPreviousDay": "前の日",
+ "DayComparedToPreviousWeek": "前週の同じ日",
+ "DayComparedToPreviousYear": "去年の同じ日",
+ "Filter": "フィルター",
+ "FilterIncreaserAndDecreaser": "増加と減少した値",
+ "FilterOnlyDecreaser": "減少した値のみ",
+ "FilterOnlyDisappeared": "消失した値のみ",
+ "FilterOnlyIncreaser": "増加した値のみ",
+ "FilterOnlyMovers": "変化のあった値のみ",
+ "FilterOnlyNew": "新しい値のみ",
+ "MonthComparedToPreviousMonth": "前の月",
+ "MonthComparedToPreviousYear": "去年の同じ月",
+ "OverviewWidgetTitle": "インサイトの概要",
+ "WeekComparedToPreviousWeek": "前の週",
+ "WidgetCategory": "インサイト",
+ "YearComparedToPreviousYear": "前の年"
},
"Installation": {
- "CommunityNewsletter": "コミュニティアップデート(新しいプラグイン、新機能等)がある場合に、自分宛にメールを送信",
"ConfigurationHelp": "Piwik 設定ファイルが誤設定されているようです。 config\/config.ini.php を削除してインストールを再開するか、データベースの接続設定を修正してください。",
"ConfirmDeleteExistingTables": "本当にデータベースからテーブル %s を削除しますか? 警告: これらのテーブルのデータを復旧することはできません!",
"Congratulations": "おめでとうございます",
@@ -927,6 +954,7 @@
"LargePiwikInstances": "高トラフィック環境で Piwik を使用するためのヒント",
"Legend": "説明",
"NoConfigFound": "Piwik の設定ファイルを見つけることができませんでしたが、あなたは Piwik ページにアクセスしようとしています。<br \/><b>  »<a href='index.php'>ただちに Piwik をインストール<\/a>することができます。<\/b><br \/><small>以前に Piwik をインストールしたことがあり、DB に多少のデータがある場合でも心配しないでください。 既存のデータを保持したまま、同じテーブルを再利用することができます!<\/small>",
+ "NotSupported": "サポートされていません",
"Optional": "オプション",
"Password": "パスワード",
"PasswordDoNotMatch": "パスワードが一致しませんでした",
@@ -936,7 +964,6 @@
"PluginDescription": "Piwik のインストール処理を行います。 インストールは通常1回のみですが、設定ファイル(config\/config.inc.php)が削除された場合は、インストールが再度開始されます。",
"Requirements": "Piwik の動作環境",
"RestartWebServer": "この変更を行った後、ウェブサーバーを再起動してください。",
- "SecurityNewsletter": "Piwik にメジャーアップグレードやセキュリティ警告がある場合に、自分宛にメールを送信",
"SetupWebsite": "ウェブサイトのセットアップ",
"SetupWebsiteError": "ウェブサイトを追加する際にエラーが発生しました",
"SetupWebSiteName": "ウェブサイトの名前",
@@ -1141,6 +1168,7 @@
"SearchEngines": "検索エンジン",
"SearchEnginesDocumentation": "検索エンジンを参照してウェブサイトに来たビジター。詳細のリポートは %s こちら %s",
"SearchEnginesReportDocumentation": "このリポートは、どの検索エンジンがこのウェブサイトにユーザーを呼びこんだかを示しています。 %s テーブル内の行をクリックすると、ユーザーが特定の検索エンジンを使って何を検索していたかを確認できます。",
+ "Socials": "ソーシャルネットワーク",
"SubmenuSearchEngines": "検索エンジンとキーワード",
"SubmenuWebsites": "ウェブサイト",
"Type": "参照元タイプ",
@@ -1280,6 +1308,7 @@
"BouncesInline": "%s のバウンス"
},
"UserCountry": {
+ "City": "都市",
"Continent": "大陸",
"continent_afr": "アフリカ",
"continent_amc": "中央アメリカ",
@@ -1568,7 +1597,7 @@
"Geolocation": "ジオロケーション",
"ISPDatabase": "ISP データベース",
"Latitude": "緯度",
- "Location": "位置",
+ "Location": "場所",
"LocationDatabase": "ロケーションデータベース",
"LocationProvider": "ロケーションプロバイダ",
"Longitude": "経度",
@@ -1576,7 +1605,7 @@
"OrgDatabase": "組織のデータベース",
"PluginDescription": "ビジターの国をリポートします。",
"Region": "地域",
- "SubmenuLocations": "位置"
+ "SubmenuLocations": "場所"
},
"UserCountryMap": {
"Cities": "都市",
diff --git a/lang/ka.json b/lang/ka.json
index b0b8d0bc31..f2caf337e3 100644
--- a/lang/ka.json
+++ b/lang/ka.json
@@ -422,7 +422,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "როდესაც მონახულებული გვედი შეიცავს JavaScript piwikTracker.trackGoal() მეთოდის (%sდამატებითი ინფორმაცია%s) გამოძახებას"
},
"Installation": {
- "CommunityNewsletter": "მაცნობეთ ელ.ფოსტაზე სისტემის განახლებების (ახალი პლაგინები, ახალი ფუნქციები და სხვ.) შესახებ",
"ConfigurationHelp": "თქვენი Piwik კონფიგურაციის ფაილი როგორც ჩანს ცუდადაა კონფიგურირებული. თქვენ შეგიძლიათ ან წაშალოთ config\/config.ini.php და დაასრულოთ ინსტალირება, ან შესაწოროთ მონაცემთა ბაზასთან დაკავშირების პარამეტრები.",
"ConfirmDeleteExistingTables": "დარწმუნებული ხართ, რომ გსურთ ცხრილების წაშლა: %s თქვენი მონაცემთა ბაზიდან?",
"Congratulations": "მილოცვა",
@@ -452,7 +451,6 @@
"PleaseFixTheFollowingErrors": "გთხოვთ, შეასწოროთ შემდეგი შეცდომები",
"PluginDescription": "Piwik–ის დაინსტალირება. ინსტალირება ჩვეულებრივ ხდება მხოლოდ ერთხელ. თუ კონფიგურაციის ფაილი config\/config.inc.php წაიშლება, ინსტალირება თავიდან დაიწყება.",
"Requirements": "Piwik მოთხოვნები",
- "SecurityNewsletter": "მაცნობეთ ელ.ფოსტაზე Piwik–ის მნიშვნელოვანი განახლებების და უსაფრთხოების საკითხების შესახებ",
"SetupWebsite": "ვებ საიტის მოწყობა",
"SetupWebsiteError": "ვებ საიტის დამატების დროს მოხდა შეცდომა",
"SetupWebSiteName": "ვებ საიტის სახელი",
diff --git a/lang/ko.json b/lang/ko.json
index a3d941b828..deee4f01e5 100644
--- a/lang/ko.json
+++ b/lang/ko.json
@@ -792,7 +792,6 @@
"PluginDescription": "Piwik 보고서의 아름다운 정적 PNG 그래프 이미지를 생성합니다."
},
"Installation": {
- "CommunityNewsletter": "커뮤니티 업데이트를 이메일로 받기 (새로운 플러그인,새로운 기능 등등)",
"ConfigurationHelp": "Piwik 설정 파일이 잘못 설정되어있는 것 같습니다. config\/config.ini.php를 제거하고 설치를 다시 시작하거나 데이터베이스의 연결 설정을 수정하세요.",
"ConfirmDeleteExistingTables": "테이블 %s 을(를) 데이터베이스로부터 삭제하기를 원합니까? 경고: 이 테이블의 데이터는 복구되지 않습니다!",
"Congratulations": "축하합니다",
@@ -831,7 +830,6 @@
"PluginDescription": "Piwik 설치 작업을 수행합니다. 설치는 보통 한 번 하지만 설정 파일 (config\/config.inc.php)이 삭제된 경우 설치가 다시 시작됩니다.",
"Requirements": "Piwik 요구 사항",
"RestartWebServer": "변경한 후 웹서버를 다시 시작하세요.",
- "SecurityNewsletter": "Piwik의 주요 업그레이드 그리고 보안 경고를 이메일로 받기",
"SeeBelowForMoreInfo": "자세한 내용은 아래를 참조하세요.",
"SetupWebsite": "웹사이트 설정",
"SetupWebsiteError": "웹사이트 추가중에 에러가 있었습니다",
diff --git a/lang/lt.json b/lang/lt.json
index 12e8639767..f37678df6c 100644
--- a/lang/lt.json
+++ b/lang/lt.json
@@ -456,7 +456,6 @@
"WhereThe": "kur"
},
"Installation": {
- "CommunityNewsletter": "pranešti man apie bendruomenės atnaujinimus (naujus papildinius, naujas savybes ir pan.)",
"ConfigurationHelp": "Jūsų Piwik konfigūracijos failas sukonfigūruotas netinkamai. Jūs galite ištrinti config\/config.ini.php failą arba pakartoti diegimą, arba pakoreguoti susijungimo su duomenų baze nustatymus.",
"ConfirmDeleteExistingTables": "Ar tikrai norite ištrinti lenteles: %s duombazėje? ĮSPĖJIMAS: ŠIŲ LENTELIŲ DUOMENYS TAPS NEATKURIAMAIS!",
"Congratulations": "Sveikiname",
@@ -486,7 +485,6 @@
"PleaseFixTheFollowingErrors": "Prašome ištaisyti šias klaidas",
"PluginDescription": "Piwik diegimo procesas. Diegimas paprastai atliekamas vieną kartą. Jei konfigūracijos failas config\/config.inc.php ištrinamas, bus paleistas papildomas diegimas.",
"Requirements": "Piwik reikalavimai sistemai",
- "SecurityNewsletter": "pranešti man apie svarbesnius Piwik atnaujinimus bei saugos įspėjimus",
"SetupWebsite": "Svetainės nustatymai",
"SetupWebsiteError": "Rasta klaidų pridedant svetainę",
"SetupWebSiteName": "svetainės pavadinimas",
diff --git a/lang/lv.json b/lang/lv.json
index 6cb70c4490..39112bfe6a 100644
--- a/lang/lv.json
+++ b/lang/lv.json
@@ -487,7 +487,6 @@
"PluginDescription": "Ģenerējiet skaistus, statiskus PNG formāta grafikus jebkurai Piwik atskaitei."
},
"Installation": {
- "CommunityNewsletter": "sūtiet epastu par kopienas jaunumiem (jauniem spraudņiem, jaunām iespējām, utt.)",
"Congratulations": "Apsveicam",
"DatabaseCreation": "Datubāzes izveide",
"DatabaseErrorConnect": "Kļūda mēģinot sasniegt datubāzes serveri",
@@ -512,7 +511,6 @@
"PercentDone": "%s %% pabeigts",
"PleaseFixTheFollowingErrors": "Lūdzu izlabojiet sekojošās kļūdas",
"Requirements": "Piwik prasības",
- "SecurityNewsletter": "sūtiet e-pastu par svarīgiem Piwik atjauninājumiem un drošības paziņojumiem",
"SetupWebsite": "Iestatiet vietni",
"SetupWebsiteError": "Vietnes pievienošana izraisīja kļūdu",
"SetupWebSiteName": "vietnes nosaukums",
diff --git a/lang/nb.json b/lang/nb.json
index dddd650400..101e3ebb31 100644
--- a/lang/nb.json
+++ b/lang/nb.json
@@ -608,7 +608,6 @@
"YearComparedToPreviousYear": "forrige år"
},
"Installation": {
- "CommunityNewsletter": "send meg e-post med oppdatering fra Piwik-samfunnet (nye tillegg, nye egenskaper, osv)",
"ConfirmDeleteExistingTables": "Er du sikker på at du vil slette tabellene %s fra databasen din? ADVARSEL: DATA FRA DISSE TABELLENE KAN IKKE GJENOPPRETTES!",
"Congratulations": "Gratulerer",
"CongratulationsHelp": "<p>Gratulerer! Din Piwik installasjon er fullført.<\/p><p>Sørg for at JavaScript-koden er lagt inn på dine sider, og vent på dine første besøkende!<\/p>",
@@ -639,7 +638,6 @@
"PercentDone": "%s %% ferdig",
"PleaseFixTheFollowingErrors": "Fiks følgende feil",
"Requirements": "Krav for å kjøre Piwik",
- "SecurityNewsletter": "send meg e-post om viktige Piwik-oppgraderinger og sikkerhetsvarsler",
"SeeBelowForMoreInfo": "Se nedenfor for mer informasjon.",
"SetupWebsite": "Legg til et nettsted",
"SetupWebsiteError": "Det skjedde en feil da nettstedet ble lagt til.",
diff --git a/lang/nl.json b/lang/nl.json
index f853570513..6658bf3c4e 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -185,6 +185,7 @@
"DonateCall3": "Als u vindt dat Piwik een grote hulp is voor uw zaak, %1$s overweeg dan een donatie!%2$s",
"DonateFormInstructions": "Klik op de schuifbalk om een bedrag te selecteren, en klik dan subscribe om te doneren.",
"ExcludeRowsWithLowPopulation": "Alle rijen worden getoond %s Verberg de rijen met een lage populatie",
+ "ExternalHelp": "Help (opent in een nieuw tabblad)",
"FlattenDataTable": "De rapportweergave is hierarchisch %s Maak het vlak",
"HowMuchIsPiwikWorth": "Hoeveel is Piwik waard voor jouw?",
"IncludeRowsWithLowPopulation": "Rijen met een lage populatie zijn verborgen %s Laat alle rijen zien",
@@ -282,6 +283,7 @@
"OriginThirdParty": "Derden",
"PluginDescription": "Plugin admin interface",
"PluginHomepage": "Plugins",
+ "PluginKeywords": "Sleutelwoorden",
"PluginNotCompatibleWith": "%1$s plugin is niet compatibel met %2$s.",
"PluginsManagement": "Plugin manager",
"PluginUpdateAvailable": "U gebruikt versie %s en een nieuwe versie %s is beschikbaar.",
@@ -346,12 +348,16 @@
"NoteForLargePiwikInstances": "Belangrijke mededeling voor grote Piwik installaties",
"NoteItIsExpectedThatQueriesFail": "Opmerking: Als u deze query's handmatig uitvoert zullen sommigen niet kunnen worden uitgevoerd. In dat geval kunt u de fouten negeren en de volgende in de lijst uitvoeren.",
"NotificationClickToUpdatePlugins": "Klik hier om nu uw plugins bij te werken:",
+ "NotificationClickToUpdateThemes": "Klik hier om je thema's nu bij te werken:",
+ "NotificationSubjectAvailableCoreUpdate": "Nieuwe Piwik %s is beschikbaar",
+ "NotificationSubjectAvailablePluginUpdate": "Updates beschikbaar voor uw Piwik plugins",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik upgrade was succesvol!",
"PiwikUpdatedSuccessfully": "Piwik is succesvol geüpdatet!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Piwik Database zal ge-upgrade worden van versie %1$s naar de nieuwe versie %2$s",
"PluginDescription": "Piwik updating mechanisme",
"ReadyToGo": "Klaar om te starten?",
"TheFollowingPluginsWillBeUpgradedX": "De volgende plugins zullen ge-upgrade worden: %s.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Somige plugins die u gebruikt zijn bijgewerkt op de Marktplaats:",
"ThereIsNewVersionAvailableForUpdate": "Er is een nieuwe versie van Piwik beschikbaar als update",
"TheUpgradeProcessMayFailExecuteCommand": "Als u een grote Piwik database heeft, dan kunnen de updates te lang duren om in de browser te worden uitgevoerd. In dat geval, kunt u de updates uitvoeren vanaf de opdrachtprompt: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "De upgrade kan enige tijd in beslag nemen, graag uw geduld.",
@@ -770,6 +776,7 @@
"Seconds": "%ss",
"SeeAll": "Bekijk alles",
"SeeTheOfficialDocumentationForMoreInformation": "Zie de %sofficiële documentatie%s voor meer info.",
+ "Segment": "Segment",
"SelectYesIfYouWantToSendEmailsViaServer": "Selecteer \"Ja\" als u wilt dat mail verzonden wordt via een opgegeven server in plaats van de lokale mail functie.",
"Settings": "Instellingen",
"Shipping": "Verzending",
@@ -977,13 +984,13 @@
"MonthComparedToPreviousMonth": "vorige maand",
"MonthComparedToPreviousYear": "zelfde maand vorig jaar",
"NoResultMatchesCriteria": "Er komen geen rijen overeen met de criteria",
+ "TitleRowNewDetails": "'%1$s' is toegenomen met %2$s en is nieuw vergeleken met %3$s.",
"WeekComparedToPreviousWeek": "vorige week",
"WidgetCategory": "Inzichten",
"YearComparedToPreviousYear": "vorig jaar"
},
"Installation": {
"CollaborativeProject": "Piwik is een samenwerkingsproject, met liefde gebouwd door mensen van over de hele wereld.",
- "CommunityNewsletter": "stuur mij e-mails met community updates (nieuwe plugins, nieuwe features, enz.)",
"ConfigurationHelp": "Uw Piwik configuratie bestand is waarschijnlijk niet correct geconfigureerd. U kunt ofwel config\/config.ini.php verwijderen en de installatie vervolgen of de toegangsgegevens voor de database corrigeren.",
"ConfirmDeleteExistingTables": "Bent u zeker dat u de tabellen wilt verwijderen: %s uit uw datbase? WAARSCHUWING: DATA VAN DEZE TABELLEN KAN NIET WORDEN HERSTELD!",
"Congratulations": "Gefeliciteerd",
@@ -1017,6 +1024,7 @@
"NfsFilesystemWarningSuffixAdmin": "Dit betekent dat Piwik extreem traag zal zijn bij gebruik van bestands gebaseerde sessies.",
"NfsFilesystemWarningSuffixInstall": "Gebruik maken van bestands gebaseerde sessies op NFS is extreem traag, dus zal Piwik gebruik maken van database sessies. Indien je veel gelijktijdige dashboard gebruikers hebt, zul je mogelijk het maximum aantal client connecties naar de database server moeten verhogen.",
"NoConfigFound": "Het Piwik configuratiebestand werd niet gevonden.<br \/><b>  » U kunt <a href='index.php'>Piwik nu installeren<\/a><\/b><br \/><small>Wanneer u Piwik al eerder geïnstalleerd heeft en de Piwik tabellen reeds data bevatten: maakt u zich geen zorgen, u kunt dezelfde tabellen blijven gebruiken en uw bestaande data behouden!<\/small>',",
+ "NotSupported": "niet ondersteund",
"Optional": "Optioneel",
"Password": "wachtwoord",
"PasswordDoNotMatch": "wachtwoord komt niet overeen",
@@ -1027,7 +1035,6 @@
"Requirements": "Piwik vereisten",
"RestartWebServer": "Herstart uw webserver na deze aanpassing.",
"ReusingTables": "Hergebruik de tabellen",
- "SecurityNewsletter": "stuur mij e-mails over grote Piwik upgrades en beveiligingswaarschuwingen",
"SeeBelowForMoreInfo": "Zie hieronder voor meer informatie.",
"SetupWebsite": "Configureer een website",
"SetupWebsiteError": "Er heeft zich een fout voorgedaan tijdens het toevoegen van de website",
@@ -1071,7 +1078,7 @@
"SystemCheckSplHelp": "U moet PHP opnieuw configureren en compileren met de standard PHP LIbrary (SPL) ingeschakeld (standaard)",
"SystemCheckSummaryNoProblems": "Hoera! Er zijn geen problemen met je Piwik setup. Geef jezelf een schouderklopje.",
"SystemCheckSummaryThereWereErrors": "Oeps! Piwik heeft enkele %1$skritieke problemen%2$s gedetecteerd in je Piwik setup. %3$sDeze problemen zouden meteen gefixed moeten worden.%4$s",
- "SystemCheckSummaryThereWereWarnings": "Er zijn enkele problemeb met je systeem. Piwik zal werken, maar je kunt enkele kleine problemen ervaren.",
+ "SystemCheckSummaryThereWereWarnings": "Er zijn enkele problemen met je systeem. Piwik zal werken, maar je kunt enkele kleine problemen ervaren.",
"SystemCheckTimeLimitHelp": "Het meten van een website met veel bezoekers kan meer tijd in beslag nemen dan momenteel is toegestaan.<br \/>Controleer de directive max_execution_time in uw php.ini file indien noodzakelijk",
"SystemCheckTracker": "Tracker status",
"SystemCheckTrackerHelp": "GET request naar piwik.php mislukt. Probeer deze URL te whitelisten van HTTP Authentication en deactiveer mod_security (wellicht moet u dit vragen aan de beheerder van uw webserver).",
@@ -1265,6 +1272,7 @@
"MultiSites": {
"Evolution": "Evolutie",
"LoadingWebsites": "Websites laden",
+ "Pagination": "%s - %s van %s",
"PluginDescription": "Toont de multi-site uitvoering van de samenvatting\/statistieken. Momenteel onderhouden als een core plugin van Piwik.",
"TopLinkTooltip": "Vergelijk Website statistieken van al je websites."
},
@@ -1395,7 +1403,8 @@
"WidgetGetAll": "Alle Referers",
"WidgetKeywords": "Top zoektermen",
"WidgetSocials": "Lijst van sociale netwerken",
- "WidgetTopKeywordsForPages": "Top sleutelwoorden voor pagina URL"
+ "WidgetTopKeywordsForPages": "Top sleutelwoorden voor pagina URL",
+ "XPercentOfVisits": "%s%% van de bezoeken"
},
"RowEvolution": {
"AvailableMetrics": "Beschikbare gegevens",
@@ -1472,10 +1481,12 @@
"SegmentDisplayedAllWebsites": "alle websites",
"SegmentDisplayedThisWebsiteOnly": "alleen deze website",
"SegmentIsDisplayedForWebsite": "en getoond voor",
+ "SegmentNotApplied": "Segment '%s' niet toegepast",
"SelectSegmentOfVisitors": "Selecteer een segment van bezoekers:",
"ThisSegmentIsVisibleTo": "Dit segment is zichtbaar voor:",
"VisibleToAllUsers": "alle gebruikers",
"VisibleToMe": "mij",
+ "YouDontHaveAccessToCreateSegments": "U heeft niet het benodigde toegangsniveau om segmenten te maken en bewerken.",
"YouMustBeLoggedInToCreateSegments": "Je moet ingelogd zijn om Bezoekers segmenten te bewerken of aan te maken."
},
"SEO": {
@@ -1532,6 +1543,7 @@
"PiwikOffersEcommerceAnalytics": "In Piwik is een geavanceerde Ecommerce Analytics tracking & rapportage mogelijk. Leer meer over %s Ecommerce Analytics%s.",
"PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik sluit automatisch veelvoorkomende sessie parameters uit (%s).",
"PluginDescription": "Websitebeheer in Piwik: Voeg een nieuwe website toe, pas een bestaande aan, toon de javascript code om te integreren in uw pagina's. Alle acties zijn ook beschikbaar via de API.",
+ "SearchKeywordParametersDesc": "Voer een komma gescheiden lijst in van alle query parameter namen die het site zoek sleutelwoord bevatten.",
"SelectACity": "Selecteer een stad",
"SelectDefaultCurrency": "U kunt de standaard munteenheid voor nieuwe websites ingeven.",
"SelectDefaultTimezone": "U kunt de standaard tijdzone selecteren voor nieuwe websites.",
@@ -2179,6 +2191,7 @@
"ExcludeVisitsViaCookie": "Sluit uw bezoeken uit met een cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Voor anonieme gebruikers, Standaard rapport datum bij laden pagina.",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Als u het wachtwoord wilt wijzigen, geef dan een nieuwe op. Laat het anders leeg.",
+ "LastSeen": "Laatst gezien",
"MainDescription": "Stel in welke gebruikers toegang hebben tot de Piwik rapporten van deze website. U kan de toegangsrechten voor alle websites tegelijk bepalen door deze optie te kiezen in de dropdown.",
"ManageAccess": "Toegangsbeheer",
"MenuAnonymousUserSettings": "Anonieme gebruikers instellingen",
diff --git a/lang/nn.json b/lang/nn.json
index b257ba8130..eaa7b35198 100644
--- a/lang/nn.json
+++ b/lang/nn.json
@@ -578,7 +578,6 @@
"PluginDescription": "Opprett vakre statiske grafar som PNG-bilete for ein Piwik-rapport."
},
"Installation": {
- "CommunityNewsletter": "send meg epost når det kjem oppdateringar frå fellesskapet (nye innstikk, funksjonar osb.)",
"ConfirmDeleteExistingTables": "Er du sikker på at du vil sletta tabellane: %s frå databasen? ÅTVARING: DEI KAN IKKJE BLI GJENOPPRETTA!",
"Congratulations": "Gratulerer",
"CongratulationsHelp": "<p>Gratulerer! Piwik-installasjon er ferdig.<\/p><p>Sjå til at JavaScript-koden er lagt til på sidene dine, og vent på dine fyrste vitjarar!<\/p>",
@@ -607,7 +606,6 @@
"PluginDescription": "Installasjonsprosessen til Piwik. Installasjonen er vanlegvis utførd berre ein gong. Viss konfigurasjonsfila config\/config.inc.php er sletta, vil installasjonen starta på nytt.",
"Requirements": "Piwik-krav",
"RestartWebServer": "Etter denne endringa, start vevtenaren din på nytt.",
- "SecurityNewsletter": "send meg e-post når det kjem oppdateringar og tryggleiksvarslingar",
"SetupWebsite": "Sett opp ein nettstad",
"SetupWebsiteError": "Det skjedde ein feil då nettsiden vart lagt til",
"SetupWebSiteName": "nettstad-namn",
diff --git a/lang/pl.json b/lang/pl.json
index c453cff1cc..ca540ce55c 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -695,7 +695,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "gdzie odwiedzona strona zawiera wywołania do metody JavaScript piwikTracker.trackGoal() (%szobacz więcej%s)"
},
"Installation": {
- "CommunityNewsletter": "wysyłaj e-mail z aktualizacjami wprowadzanymi przez społeczność Piwik (z nowymi wtyczkami, z nowymi rozszerzeniami, itd.)",
"ConfigurationHelp": "Twój plik konfiguracyjny Piwik wydaje się nieskonfigurowany. Możesz również usunąć config\/config.ini.php i powtórzyć instalację, lub naprawić konfigurację połączenia z bazą danych.",
"ConfirmDeleteExistingTables": "Czy masz pewność, że chcesz skasować tabele: %s ze swojej bazy danych? OSTRZEŻENIE: DANE Z TYCH TABEL NIE ZOSTANĄ ODTWORZONE CZY ZABEZPIECZONE!",
"Congratulations": "Gratulacje",
@@ -725,7 +724,6 @@
"PleaseFixTheFollowingErrors": "Prosimy naprawić następujące błędy",
"PluginDescription": "Proces instalacji statystyk Piwik. Instalację wykonuje się zazwyczaj tylko raz. Jeżeli plik konfiguracyjny znajdujący się w config\/config.inc.php zostaje skasowany, proces instalacji rozpocznie się od nowa.",
"Requirements": "Wymagania systemu Piwik",
- "SecurityNewsletter": "wysyłaj e-mail z poważniejszą aktualizacją Piwik oraz w przypadku alertu bezpieczeństwa",
"SetupWebsite": "Konfiguracja portalu",
"SetupWebsiteError": "Pojawił się błąd podczas dodawania adresu strony",
"SetupWebSiteName": "nazwa portalu",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 91682d24e7..28204255cc 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -959,7 +959,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik é um projeto colaborativo, construído com amor por pessoas de todo o mundo.",
- "CommunityNewsletter": "envie-me um email com atualizações da comunidade (novos plugins, novas funções, etc.)",
"ConfigurationHelp": "Seu arquivo de configuração Piwik parece estar desconfigurado. Você pode ou remover config\/config.ini.php e fechar a instalação, ou corrigir as configurações de conexão com banco de dados.",
"ConfirmDeleteExistingTables": "Tem certeza que quer apagar as tabelas: %s do seu banco de dados? AVISO: DADOS DESTAS TABELAS NÃO PODERÃO SER RECUPERADOS!",
"Congratulations": "Parabéns",
@@ -1004,7 +1003,6 @@
"PluginDescription": "Processo de instalação do Piwik. A instalação normalmente é feita apenas uma vez. Se o arquivo de configuração config\/config.inc.php é deletado, a instalação começará novamente.",
"Requirements": "Requerimentos do Piwik",
"RestartWebServer": "Depois de fazer essa alteração, reinicie o seu servidor web.",
- "SecurityNewsletter": "envie-me um email quando houver alertas de segurança e atualizações importantes",
"SeeBelowForMoreInfo": "Veja abaixo para mais informações.",
"SetupWebsite": "Configurar um website",
"SetupWebsiteError": "Ocorreu um erro ao tentar adicionar o website",
diff --git a/lang/pt.json b/lang/pt.json
index aafcc01db3..22b5beac1e 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -605,7 +605,6 @@
"PluginDescription": "Gera uma imagem de gráfico PNG estática para qualquer relatório Piwik"
},
"Installation": {
- "CommunityNewsletter": "envie-me emails sobre actualizações da comunidade (novos plugins, funcionalidades, etc.)",
"ConfigurationHelp": "O seu ficheiro de configuração Piwik parece estar mal configurado. Pode remover config\/config.ini.php e continuar a instalação, ou corrigir as definições da ligação à base de dados.",
"ConfirmDeleteExistingTables": "Tem a certeza que deseja eliminar as tabelas: %s da sua base de dados? AVISO: DADOS DESTAS TABELAS NÃO PODEM SER RECUPERADOS!",
"Congratulations": "Parabéns",
@@ -635,7 +634,6 @@
"PleaseFixTheFollowingErrors": "Por favor corrija os seguintes erros",
"PluginDescription": "Processo de instalação de Piwik. A Instalação é executada só uma vez. Se o ficheiro de configuração config\/config.inc.php for eliminado, a instalação recomeça.",
"Requirements": "Requisitos do Piwik",
- "SecurityNewsletter": "envie-me emails sobre actualizações Piwik e alertas de segurança",
"SetupWebsite": "Configurar um Website",
"SetupWebsiteError": "Ocorreu um erro ao tentar adicionar o website",
"SetupWebSiteName": "nome do website",
diff --git a/lang/ro.json b/lang/ro.json
index 061032d015..fe5a30e981 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "Poţi personaliza logoul Piwik care va fi afişat în interfaţa de utilizator şi în rapoartele email.",
"DevelopmentProcess": "In timp ce %sprocesul de dezvoltare%s include mii de teste automate, Testerii Beta au un rol esential in a-si insusi \"No bug policy\" in Piwik.",
"EmailServerSettings": "Setările serverului email",
+ "FaviconUpload": "Alege un favicon pentru a fi încărcat",
"ForBetaTestersOnly": "Numai pentru beta-testeri",
"ImageTracking": "Urmărire prin imagine",
"ImageTrackingIntro1": "Cand un visitator are dezactivat JavaScript sau cand JavaScript nu poate fi folosit, poti folosi un link de tracking de tip imagine pentru a inregistra statisticile despre vizitatori.",
@@ -859,8 +860,8 @@
"TotalVisitsPageviewsRevenue": "Total: %s vizite, %s vizualizări de pagină, %s revenire)",
"TransitionsRowActionTooltip": "Vezi ce au făcut vizitatorii până la şi după vizionarea acestei pagini",
"TransitionsRowActionTooltipTitle": "Treceri Deschise",
- "TranslatorEmail": "astonsoftware@gmail.com",
- "TranslatorName": "astonsoftware",
+ "TranslatorEmail": "astonsoftware@gmail.com, flo[at]inboxtranslation[dot]com",
+ "TranslatorName": "astonsoftware, <a href=\"http:\/\/inboxtranslations.com\">Inbox Translation<\/a>",
"UniquePurchases": "Cumparaturi unice",
"Unknown": "Necunoscut",
"Upload": "Incarca",
@@ -1039,7 +1040,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik este un proiect colaborativ, construit cu dragoste de oameni de pe tot mapamondul.",
- "CommunityNewsletter": "da-mi un e-mail cu noutatile din comunitate (noi plugin-uri, caracteristici, etc)",
"ConfigurationHelp": "Fisierul de configurare Piwik pare să fie configurat greșit. Puteți fie să eliminați config \/ config.ini.php și reluati instalarea, sau a se corecta setările de conexiune de date.",
"ConfirmDeleteExistingTables": "Sigur doriți să ștergeți tabelele: %s din baza de date? AVERTISMENT: DATELE DIN ACESTE TABELE NU POT FI RECUPERATE",
"Congratulations": "Felicitari",
@@ -1073,6 +1073,7 @@
"NfsFilesystemWarningSuffixAdmin": "Acest lucru înseamnă că Piwik va fi extrem de lent atunci când se utilizează sesiuni bazate pe fișiere.",
"NfsFilesystemWarningSuffixInstall": "Folosind sesiuni bazate pe fișiere NFS sunt extrem de lente, astfel Piwik va folosi sesiuni de baze de date. Dacă aveți mai mulți utilizatori de tablou de bord, ar putea fi necesar sa se creasca numărul maxim de conexiuni client la serverul de baze de date.",
"NoConfigFound": "Fișierul de configurare Piwik nu a putut fi găsit și se încearcă să se acceseze o pagină Piwik.<br \/><b> » Puteți a href='index.php'> instala Piwik acum <\/a><\/b><br \/><mic> Dacă ați instalat Piwik înainte și au aveti unele tabele din DB , nu vă faceți griji, aveți posibilitatea să reutilizați aceleași tabele și să se păstreze datele existente!<\/mic>",
+ "NotSupported": "nu sunt acceptate",
"Optional": "Opţional",
"Password": "password",
"PasswordDoNotMatch": "Parola nu se potriveste",
@@ -1083,7 +1084,6 @@
"Requirements": "Piwik Cerințe",
"RestartWebServer": "Dupa ce faci aceasta schimbare, reporniți serverul de web.",
"ReusingTables": "Reutilizare Tabele",
- "SecurityNewsletter": "Trimite-mi e-mail cu upgrade-uri majore Piwik și alerte de securitate",
"SeeBelowForMoreInfo": "Vezi mai jos pentru mai multe informații.",
"SetupWebsite": "Setup a website",
"SetupWebsiteError": "A fost o eroare atunci când s-a adăugart website-ul",
@@ -1099,6 +1099,8 @@
"SystemCheck": "System check",
"SystemCheckAutoUpdateHelp": "Notă: Un singur click pe Piwik pentru actualizare se necesită scrie-permisiune la folderul Piwik și conținutul său.",
"SystemCheckCreateFunctionHelp": "Piwik foloseste functii anonime pentru callback.",
+ "SystemCheckCronArchiveProcess": "Arhiva Cron",
+ "SystemCheckCronArchiveProcessCLI": "Administrarea proceselor via CLI",
"SystemCheckDatabaseHelp": "Piwik necesită fie extensia mysqli sau ambele extensiile DOP și PDO_MYSQL .",
"SystemCheckDebugBacktraceHelp": "Vezi :: fabrica nu va fi capabila sa creeze vizualizări pentru modulul de asteptare.",
"SystemCheckError": "A apărut o eroare - trebuie să fie reparata înainte de a continua",
@@ -1329,6 +1331,7 @@
"MultiSites": {
"Evolution": "Evoluţie",
"LoadingWebsites": "încărcare site-uri web",
+ "Pagination": "%s - %s of %s",
"PluginDescription": "Afișează multi-site-ul rezumat executiv \/ statistici. În prezent, se menține o bază Piwik plugin.",
"TopLinkTooltip": "Compara statisticiLE Web Analytics pentru toate site-urile dvs.."
},
@@ -1558,6 +1561,7 @@
"ThisSegmentIsVisibleTo": "Acest segment este vizibil către:",
"VisibleToAllUsers": "tuturor utilizatorilor",
"VisibleToMe": "mie",
+ "YouDontHaveAccessToCreateSegments": "Nu ai nivelul de acces necesar pentru a crea și edita segmente.",
"YouMayChangeSetting": "Alternativ, puteți schimba setările în fișierul de configurare (%s), sau pentru a edita acest segment și alegeți '%s'.",
"YouMustBeLoggedInToCreateSegments": "Trebuie să fii logat pentru a crea și edita segmente de vizitatori personalizate."
},
diff --git a/lang/ru.json b/lang/ru.json
index d044b6fe94..48a60fc5bb 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -943,7 +943,6 @@
"PluginDescription": "Генерировать красивый статичный PNG-график для всех отчетов Piwik."
},
"Installation": {
- "CommunityNewsletter": "Сообщать мне о обновлениях сообщества (новые плагины, новые функции и т.д.) по email",
"ConfigurationHelp": "Похоже, конфигурационный файл Piwik не сконфигурирован надлежащим образом. Вы можете удалить config\/config.ini.php, и продолжить установку, или исправить настройки соединения с базой данных.",
"ConfirmDeleteExistingTables": "Вы действительно хотите удалить таблицы: %s из базы данных? ВНИМАНИЕ: УДАЛЕННЫЕ ДАННЫЕ НЕВОЗМОЖНО ВОССТАНОВИТЬ!",
"Congratulations": "Поздравляем",
@@ -983,7 +982,6 @@
"PluginDescription": "Процесс установки Piwik. Установка обычно осуществляется единожды. Если же конфигурационный файл config\/config.inc.php удален, установка начнется снова.",
"Requirements": "Требования Piwik",
"RestartWebServer": "После этих изменений перезапустите браузер.",
- "SecurityNewsletter": "Сообщать мне о значительных обновлениях Piwik и ошибках безопасности по email",
"SeeBelowForMoreInfo": "Смотрите ниже для получения дополнительной информации.",
"SetupWebsite": "Добавить сайт",
"SetupWebsiteError": "Возникла ошибка при добавлении сайта",
diff --git a/lang/sk.json b/lang/sk.json
index dfb2ab0034..65db98dbd8 100644
--- a/lang/sk.json
+++ b/lang/sk.json
@@ -605,7 +605,6 @@
"WhereThe": "kde"
},
"Installation": {
- "CommunityNewsletter": "posielať informácie o komunitných aktualizáciách (nové moduly, vlastnosti atď.)",
"ConfirmDeleteExistingTables": "Ste si istý, že chcete zmazať tabuľky: %s z Vašej databázy? VAROVANIE: DÁTA Z TÝCHTO TABULIEK NEBUDE MOŽNÉ OBNOVIŤ!",
"Congratulations": "Blahoželanie",
"CongratulationsHelp": "<p>Blahoželáme Vám! Inštalácia Piwik je dokončená.<\/p><p>Uistite sa, že Váš javascript kód je vložený od Vašich stránok a počkajte si na prvých návštevníkov!<\/p>",
@@ -619,7 +618,6 @@
"PasswordDoNotMatch": "heslo nie je zhodné",
"PasswordRepeat": "heslo (zopakovať)",
"PercentDone": "%s %% Dokončené",
- "SecurityNewsletter": "posielať informácie o hlavných aktualizáciách projektu Piwik a bezpečnostné varovania",
"SetupWebsite": "Nastavenie webstránky",
"SetupWebsiteError": "Vyskytla sa chyba pridávaní webstránky",
"SetupWebSiteName": "názov webovej stránky",
diff --git a/lang/sl.json b/lang/sl.json
index 906953068d..fcd1f5fba1 100644
--- a/lang/sl.json
+++ b/lang/sl.json
@@ -618,7 +618,6 @@
"PercentDone": "%s %% Končano",
"PleaseFixTheFollowingErrors": "Prosimo, odpravite sledeče napake",
"Requirements": "Piwik-ovi minimalni pogoji",
- "SecurityNewsletter": "obveščajte me o najpomembnejših varnostnih opozorilh Piwik-a",
"SetupWebsite": "Nastavite spletno stran",
"SetupWebsiteError": "Med dodajanjem spletne strani je prišlo do napake.",
"SetupWebSiteName": "ime spletne strani",
diff --git a/lang/sq.json b/lang/sq.json
index ad6c5f123a..dcd221e52f 100644
--- a/lang/sq.json
+++ b/lang/sq.json
@@ -663,7 +663,6 @@
"PluginDescription": "Prodhoni për çfarëdo raporti Piwik figura të mrekullueshme PNG statike Grafikësh."
},
"Installation": {
- "CommunityNewsletter": "njoftomë me email për përditësime nga bashkësia (shtojca të reja, veçori të reja, etj.)",
"ConfigurationHelp": "Kartela juaj për formësimin e Piwik-ut duket se është e keqformësuar. Ose mund të hiqni config\/config.ini.php dhe rinisni instalimin, ose ndreqni rregullimet për lidhjen me bazën e të dhënave.",
"ConfirmDeleteExistingTables": "Jeni i sigurt se doni të fshihen tabelat: %s prej bazës së të dhënave? KUJDES: NUK DO TË MUND TË RIKTHENI TË DHËNAT PREJ KËTYRE TABELAVE!",
"Congratulations": "Urime",
@@ -693,7 +692,6 @@
"PleaseFixTheFollowingErrors": "Ju lutem, ndreqni gabimet vijuese",
"PluginDescription": "Procesi i instalimit të Piwik-ut. Instalimi zakonisht bëhet vetëm një herë. Po u fshi kartela e formësimit config\/config.inc.php, instalimi duhet nisur nga e para.",
"Requirements": "Të domosdoshme për Piwik-un",
- "SecurityNewsletter": "njoftomë me email për përditësime të rëndësishme të Piwik-ut dhe njoftime lidhur me sigurinë",
"SetupWebsite": "Caktoni një \"site\" web",
"SetupWebsiteError": "Pati një gabim gjatë shtimit të një \"site\"-i web",
"SetupWebSiteName": "emër site-i web",
diff --git a/lang/sr.json b/lang/sr.json
index 30c2f233de..5f8306ae63 100644
--- a/lang/sr.json
+++ b/lang/sr.json
@@ -1042,7 +1042,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik je saradnički projekat, satkan od ljubavi od strane ljudi diljem celog sveta.",
- "CommunityNewsletter": "pošaljite mi elektronsko pismo sa nadogradnjama od strane Piwik zajednice (novi dodaci, nove opcije, itd.)",
"ConfigurationHelp": "Vaša Piwik podešavanja kao da nisu dobra. Možete ili ukloniti config\/config.ini.php datoteku i nastaviti sa instalacijom, ili ispraviti podešavanja u vezi sa povezivanjem na bazu podataka.",
"ConfirmDeleteExistingTables": "Da li zaista želite da obrišete tabele: %s iz vaše baze? Upozorenje: Podaci iz ovih tabela se ne mogu više povratiti!",
"Congratulations": "Čestitamo",
@@ -1088,7 +1087,6 @@
"Requirements": "Piwik zahtevi",
"RestartWebServer": "Nakon ovih izmena restartujte vaš web server",
"ReusingTables": "Ponovna upotreba tabela",
- "SecurityNewsletter": "pošaljite mi elektronsko pismo sa važnim Piwik nadogradnjama i sigurnosim upozorenjima",
"SeeBelowForMoreInfo": "Pogledajte ispod za više informacija.",
"SetupWebsite": "Podešavanje sajta",
"SetupWebsiteError": "Došlo je do greške prilikom dodavanja sajta",
diff --git a/lang/sv.json b/lang/sv.json
index 5539e62354..ed7e200dfe 100644
--- a/lang/sv.json
+++ b/lang/sv.json
@@ -1031,7 +1031,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik är ett projekt som arbetats fram av människor från hela världen, med samma mål och mycket kärlek!",
- "CommunityNewsletter": "maila mig angående community-uppdateringar (nya plugins, nya funktioner, etc.)",
"ConfigurationHelp": "Din Piwik konfigurationsfil verkar vara felkonfigurerad. Du kan antingen ta bort config \/ config.ini.php och återuppta installationen, eller korrigera inställningarna för databasanslutningen.",
"ConfirmDeleteExistingTables": "Är du säker på att du vill ta bort tabellerna: %s från din databas? Varning: Data från dessa tabeller kommer inte kunna återskapas!",
"Congratulations": "Grattis",
@@ -1077,7 +1076,6 @@
"Requirements": "Piwik Krav",
"RestartWebServer": "När du har gjort den här ändringen, starta om din webbserver.",
"ReusingTables": "Återanvänder tabellerna",
- "SecurityNewsletter": "maila mig angående stora Piwik uppgraderingar och säkerhetsvarningar",
"SeeBelowForMoreInfo": "Se nedan för mer information.",
"SetupWebsite": "Konfigurera en webbplats",
"SetupWebsiteError": "Det uppstod ett fel när webbplatsen försökte läggas till.",
diff --git a/lang/th.json b/lang/th.json
index 70b31695c6..1d7e555e46 100644
--- a/lang/th.json
+++ b/lang/th.json
@@ -635,7 +635,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "ในหน้าเว็บเพจเมื่อเข้าชมแล้ว จะประกอบไปด้วยวิธีการเรียก JavaScript piwikTracker.trackGoal() และวิธี (%s เรียนรู้เพิ่มเติม %s)"
},
"Installation": {
- "CommunityNewsletter": "ส่งอีเมล์ไปให้ฉัน ด้วยโปรแกรมอัพเดตชุมชน (ปลั๊กอินใหม่ คุณลักษณะใหม่ ฯลฯ)",
"ConfigurationHelp": "ไฟล์การกำหนดค่า Piwik ของคุณปรากฏเป็นผิดพลาด คุณสามารถเอาconfig\/config.ini.php ออกได และดำเนินการติดตั้งต่อ หรือแก้ไขการตั้งค่าการเชื่อมต่อฐานข้อมูล",
"ConfirmDeleteExistingTables": "คุณแน่ใจหรือไม่ว่าต้องการลบตาราง: %s จากฐานข้อมูล? คำเตือน: ข้อมูลในตารางเหล่านี้ไม่สามารถกู้คืนได้",
"Congratulations": "ขอแสดงความยินดี",
@@ -667,7 +666,6 @@
"PleaseFixTheFollowingErrors": "กรุณาแก้ไขข้อผิดพลาดต่อไปนี้",
"PluginDescription": "กระบวนการติดตั้งของ Piwik ที่การติดตั้งมักจะทำเพียงครั้งเดียวเท่านั้น ถ้า config\/config.inc.php ไฟล์การตั้งค่าคอนฟิกจะถูกลบออก การติดตั้งจะเริ่มทำงานอีกครั้ง",
"Requirements": "ความต้องการของ Piwik",
- "SecurityNewsletter": "ส่งอีเมล์ไปให้ฉัน ซึ่ง Piwik จะแจ้งเตือนในการอัพเกรดด้านความปลอดภัย",
"SeeBelowForMoreInfo": "ดูด้านล่างสำหรับรายละเอียดเพิ่มเติม",
"SetupWebsite": "ติดตั้งเว็บไซต์",
"SetupWebsiteError": "เกิดข้อผิดพลาดขณะเพิ่มเว็บไซต์",
diff --git a/lang/tr.json b/lang/tr.json
index 786cd5c038..cdaff970c3 100644
--- a/lang/tr.json
+++ b/lang/tr.json
@@ -602,7 +602,6 @@
"WhereThe": "Buraya"
},
"Installation": {
- "CommunityNewsletter": "Yeni eklentiler, yeni özellikler gibi güncellemeleri bana eposta ile bildir.",
"Congratulations": "Tebrikler",
"CongratulationsHelp": "<p>Tebrikler! Piwik Başarıyla kuruldu.<\/p><p>JavaScript kodunu sayfalarınıza yerleştirdiğinizden emin olun ve ilk ziyaretçilerinizi beklemeye başlayın!<\/p>",
"DatabaseCreation": "Veritabaı oluşturma",
@@ -624,7 +623,6 @@
"PasswordRepeat": "Şifre (tekrar)",
"PercentDone": "%s %% tamamlandı",
"Requirements": "Piwik gereklilikleri",
- "SecurityNewsletter": "Piwik yükseltmeleri ve güvenlik uyarılarını bana eposta ile bildir.",
"SetupWebsite": "Web sitesi ekle",
"SetupWebsiteError": "Web site eklenirken bir sorun oluştu.",
"SetupWebSiteName": "Web site adı",
diff --git a/lang/uk.json b/lang/uk.json
index 3b4c14a5d7..4fbf03600e 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -422,7 +422,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "де відвідана сторінка містить запит методу JavaScript piwikTracker.trackGoal()(%sдізнатись більше%s)"
},
"Installation": {
- "CommunityNewsletter": "Надішліть повідомлення з поновленнями від спільноти (нові плагіни, нові переваги, і т. д.)",
"ConfigurationHelp": "Файл конфігурації Piwik не налаштований. Видаліть файл config\/config.ini.php та перезапустіть інсталяцію, або виправте налаштування підєднання до бази даних.",
"ConfirmDeleteExistingTables": "Впевнені що хочете видалити таблиці: %s з бази даних? ЗАСТЕРЕЖЕННЯ: ДАНІ З ЦИХ ТАБЛИЦЬ НЕМОЖУТЬ БУТИ ВІДНОВЛЕНІ!",
"Congratulations": "Вітання!",
@@ -452,7 +451,6 @@
"PleaseFixTheFollowingErrors": "Виправте наступні помилки",
"PluginDescription": "Процес інсталяції Piwik. Інсталяція зазвичай виконується тільки один раз. Якщо файл конфігурації config\/config.inc.php видалено, інсталяція розпочнеться знову.",
"Requirements": "Системні вимоги Piwik",
- "SecurityNewsletter": "Надішліть повідомлення при виході нових версій Piwik та поновленнях безпеки",
"SetupWebsite": "Налаштувати веб-сайт",
"SetupWebsiteError": "Виникла помилка при додаванні веб-сайту",
"SetupWebSiteName": "назва веб-сайту",
diff --git a/lang/vi.json b/lang/vi.json
index c6406a9fe5..763d392a50 100644
--- a/lang/vi.json
+++ b/lang/vi.json
@@ -935,7 +935,6 @@
"PluginDescription": "Tạo ra hình ảnh đồ họa PNG tĩnh đẹp cho các báo cáo Piwik."
},
"Installation": {
- "CommunityNewsletter": "gửi email cho tôi với bản cập nhật chung (bổ sung mới, tính năng mới, vv)",
"ConfigurationHelp": "Tập tin cấu hình Piwik của bạn dường như là sai. Bạn có thể loại bỏ config\/config.ini.php và tiếp tục cài đặt, hoặc sửa chữa các thiết lập kết nối cơ sở dữ liệu.",
"ConfirmDeleteExistingTables": "Bạn có chắc chắn muốn xóa các table (bảng) sau khỏi database của bạn: %s? CHÚ Ý: DỮ LIỆU BỊ XÓA TỪ CÁC TABLE NÀY SẼ KHÔNG THỂ KHÔI PHỤC LẠI ĐƯỢC!",
"Congratulations": "Xin chúc mừng",
@@ -978,7 +977,6 @@
"PluginDescription": "Quá trình cài đặt của Piwik. Cài đặt thường được thực hiện một lần duy nhất. Nếu các tập tin cấu hình config\/config.inc.php bị xóa, việc cài đặt sẽ bắt đầu lại.",
"Requirements": "Piwik yêu cầu",
"RestartWebServer": "Sau khi tạo ra sự thay đổi này, khởi động lại máy chủ web của bạn",
- "SecurityNewsletter": "gửi email cho tôi khi có các bản cập nhật của Piwik và các thông báo về bảo mật",
"SeeBelowForMoreInfo": "Xêm thêm thông tin ở dưới đây",
"SetupWebsite": "Thiết lập một website",
"SetupWebsiteError": "Có lỗi xảy ra khi thêm website",
diff --git a/lang/zh-cn.json b/lang/zh-cn.json
index efd4661801..d7bf8471cd 100644
--- a/lang/zh-cn.json
+++ b/lang/zh-cn.json
@@ -103,6 +103,7 @@
"CustomLogoHelpText": "您可以定制 Piwik 图标,显示在用户界面和报表邮件上。",
"DevelopmentProcess": "虽然在%s开发过程%s中已进行过成千上万次的自动测试,Beta 版本测试仍然是实现 Piwik \"无错理念\"的很重要的一部分。",
"EmailServerSettings": "邮件服务器设置",
+ "FaviconUpload": "选择上传图标",
"ForBetaTestersOnly": "仅供测试",
"ImageTracking": "图片跟踪",
"ImageTrackingIntro1": "当访客禁用 JavaScript 或者无法使用 JavaScript 时,您也可以使用图片跟踪链接来统计访客。",
@@ -183,6 +184,7 @@
"DonateCall3": "如果 Piwik 对您的业务有很大帮助,%1$s 请考虑捐助!%2$s",
"DonateFormInstructions": "点击下面的滑动条设定金额,然后点 Subscribe 按钮捐款",
"ExcludeRowsWithLowPopulation": "显示了所有的数据 %s 不显示低密度数据",
+ "ExternalHelp": "帮助(在新标签页打开)",
"FlattenDataTable": "本报表已分级显示 %s 改为不分级显示",
"HowMuchIsPiwikWorth": "您觉得 Piwik 值多少?",
"IncludeRowsWithLowPopulation": "没有显示低密度数据 %s 显示所有数据",
@@ -291,6 +293,7 @@
"StepUnzippingPlugin": "正在解压插件",
"StepUnzippingTheme": "正在解压布景",
"Support": "支持",
+ "TeaserExtendPiwik": "使用插件主题来扩展Piwik",
"Theme": "主题",
"Themes": "主题",
"ThemesDescription": "主题可以改变Piwik外观,提供一个全新的视觉体验,让您享受分析报告。",
@@ -330,6 +333,7 @@
"MajorUpdateWarning2": "下面的建议对大型网站很重要。",
"NoteForLargePiwikInstances": "大型 Piwik 网站重要注意事项",
"NoteItIsExpectedThatQueriesFail": "注意: 如果您手动执行这些查询,预计当中会有一些错误。在此情況下,只需忽略错误,然后执行以下列表。",
+ "NotificationClickToUpdatePlugins": "点击这里更新你的插件:",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik 升级成功!",
"PiwikUpdatedSuccessfully": "Piwik 升级成功!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Piwik 数据库将从版本 %1$s 升级到新版本 %2$s。",
@@ -945,7 +949,6 @@
"PluginDescription": "为 Piwik 统计报表生成漂亮的PNG图片。"
},
"Installation": {
- "CommunityNewsletter": "订阅社区更新的邮件通知(如: 新插件、新功能等。)",
"ConfigurationHelp": "您的 Piwik 配置文件可能出错了,您可以删除 config\/config.ini.php 然后继续安裝,或者改正数据库的参数设定。",
"ConfirmDeleteExistingTables": "您确定要从您的数据库中删除表: %s吗?警告: 删除的表中的数据无法恢复!",
"Congratulations": "恭喜您",
@@ -988,7 +991,6 @@
"PluginDescription": "Piwik 的安裝程序。通常只需要安裝一次。如果配置文件 config\/config.inc.php 被刪除,那么将会重新安裝。",
"Requirements": "Piwik 需求",
"RestartWebServer": "做过这个改动之后,请重新启动网络服务器。",
- "SecurityNewsletter": "寄给我重要的 Piwik 更新与安全性警告电子邮件通知",
"SeeBelowForMoreInfo": "更详细的信息请看下面",
"SetupWebsite": "设定一个网站",
"SetupWebsiteError": "增加此网站时出现错误",
diff --git a/lang/zh-tw.json b/lang/zh-tw.json
index d7bfd439aa..52ab18a018 100644
--- a/lang/zh-tw.json
+++ b/lang/zh-tw.json
@@ -464,7 +464,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "在被訪問的頁面包含一個 JavaScript piwikTracker.trackGoal() 方法(%s知道更多%s)"
},
"Installation": {
- "CommunityNewsletter": "寄給我社群更新的電子郵件通知(如:新外掛、新功能等等。)",
"ConfigurationHelp": "你的 Piwik 設定檔看起來似乎損毀了。你可以移除 config\/config.ini.php 然後重新安裝,或是修正資料庫的連結設定。",
"ConfirmDeleteExistingTables": "你確定要從你的資料庫刪除資料表 %s 嗎? 警告: 這些資料表刪除後將無法復原!",
"Congratulations": "恭喜你",
@@ -493,7 +492,6 @@
"PleaseFixTheFollowingErrors": "請修復以下錯誤",
"PluginDescription": "Piwik 的安裝程式。通常只需要安裝一次。如果設定檔 config\/config.inc.php 被刪除,那麼將會重新安裝。",
"Requirements": "Piwik 需求",
- "SecurityNewsletter": "寄給我重要的 Piwik 更新與安全性警告電子郵件通知",
"SetupWebsite": "設定一個網站",
"SetupWebsiteError": "當增加此網站時發生了一個錯誤",
"SetupWebSiteName": "網站名稱",
diff --git a/libs/UserAgentParser/UserAgentParser.php b/libs/UserAgentParser/UserAgentParser.php
index a57554e4da..009bc5a785 100644
--- a/libs/UserAgentParser/UserAgentParser.php
+++ b/libs/UserAgentParser/UserAgentParser.php
@@ -655,9 +655,10 @@ class UserAgentParser
if (isset(self::$browserIdToName[$browserId])) {
return self::$browserIdToName[$browserId];
}
- if(class_exists('DeviceDetector')) {
- if( !empty(DeviceDetector::$browsers[$browserId])) {
- return DeviceDetector::$browsers[$browserId];
+ if(class_exists('DeviceDetector\\Parser\\Client\\Browser')) {
+ $browsers = DeviceDetector\Parser\Client\Browser::getAvailableBrowsers();
+ if( array_key_exists($browserId, $browsers)) {
+ return $browsers[$browserId];
}
}
return false;
@@ -692,8 +693,11 @@ class UserAgentParser
return self::$operatingSystemsIdToName[$osId];
}
- if(class_exists('DeviceDetector')) {
- return DeviceDetector::getOsNameFromId($osId);
+ if(class_exists('DeviceDetector\\Parser\\OperatingSystem')) {
+ if ($osId == 'BOT') {
+ return 'Bot';
+ }
+ return DeviceDetector\Parser\OperatingSystem::getNameFromId($osId);
}
return false;
}
diff --git a/libs/upgradephp/upgrade.php b/libs/upgradephp/upgrade.php
index c45ee1ca95..5ab68078a8 100644
--- a/libs/upgradephp/upgrade.php
+++ b/libs/upgradephp/upgrade.php
@@ -127,7 +127,11 @@ if (in_array('mysqli', @get_loaded_extensions()) && !function_exists('mysqli_set
if(function_exists('parse_ini_file')) {
// provide a wrapper
function _parse_ini_file($filename, $process_sections = false) {
- return file_exists($filename) ? parse_ini_file($filename, $process_sections) : false;
+ if(!file_exists($filename)) {
+ return false;
+ }
+ // Note: INI_SCANNER_RAW is important here!
+ return parse_ini_file($filename, $process_sections, INI_SCANNER_RAW);
}
} else {
// we can't redefine parse_ini_file() if it has been disabled
diff --git a/piwik.php b/piwik.php
index 3e5ef800be..d992ef56a5 100644
--- a/piwik.php
+++ b/piwik.php
@@ -40,6 +40,13 @@ if (!defined('PIWIK_INCLUDE_PATH')) {
@ignore_user_abort(true);
+if (file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')) {
+ $vendorDirectory = PIWIK_INCLUDE_PATH . '/vendor';
+} else {
+ $vendorDirectory = PIWIK_INCLUDE_PATH . '/../..';
+}
+require_once $vendorDirectory . '/autoload.php';
+
require_once PIWIK_INCLUDE_PATH . '/core/Plugin/Controller.php';
require_once PIWIK_INCLUDE_PATH . '/core/Plugin/ControllerAdmin.php';
@@ -78,18 +85,6 @@ require_once PIWIK_INCLUDE_PATH . '/core/Filesystem.php';
require_once PIWIK_INCLUDE_PATH . '/core/Cookie.php';
require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
-/*
- * Manually require needed vendor libraries, as composers autorequire would do too much
- */
-if (file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')) {
- $vendorDirectory = PIWIK_INCLUDE_PATH . '/vendor';
-} else {
- $vendorDirectory = PIWIK_INCLUDE_PATH . '/../..';
-}
-require_once $vendorDirectory . '/autoload.php';
-require_once $vendorDirectory . '/mustangostang/spyc/Spyc.php';
-require_once $vendorDirectory . '/piwik/device-detector/DeviceDetector.php';
-
session_cache_limiter('nocache');
@date_default_timezone_set('UTC');
diff --git a/plugins/API/API.php b/plugins/API/API.php
index b0a9147b47..e04d3fea4e 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -54,6 +54,7 @@ class API extends \Piwik\Plugin\API
public function getPiwikVersion()
{
Piwik::checkUserHasSomeViewAccess();
+ Piwik::checkUserIsNotAnonymous();
return Version::VERSION;
}
diff --git a/plugins/API/Menu.php b/plugins/API/Menu.php
index d9048617ed..a76f87ee0e 100644
--- a/plugins/API/Menu.php
+++ b/plugins/API/Menu.php
@@ -11,9 +11,12 @@ namespace Piwik\Plugins\API;
use Piwik\Menu\MenuTop;
use Piwik\Menu\MenuUser;
use Piwik\Piwik;
+use DeviceDetector\Parser\OperatingSystem;
class Menu extends \Piwik\Plugin\Menu
{
+ const DD_SHORT_NAME_ANDROID = 'AND';
+ const DD_SHORT_NAME_IOS = 'IOS';
public function configureTopMenu(MenuTop $menu)
{
@@ -34,14 +37,13 @@ class Menu extends \Piwik\Plugin\Menu
return;
}
- if (!class_exists("DeviceDetector")) {
+ if (!class_exists("DeviceDetector\\DeviceDetector")) {
throw new \Exception("DeviceDetector could not be found, maybe you are using Piwik from git and need to have update Composer. <br>php composer.phar update");
}
- $ua = new \DeviceDetector($_SERVER['HTTP_USER_AGENT']);
- $ua->parse();
- $os = $ua->getOs('short_name');
- if ($os && in_array($os, array('AND', 'IOS'))) {
+ $ua = new OperatingSystem($_SERVER['HTTP_USER_AGENT']);
+ $parsedOS = $ua->parse();
+ if (!empty($parsedOS['short_name']) && in_array($parsedOS['short_name'], array(self::DD_SHORT_NAME_ANDROID, self::DD_SHORT_NAME_IOS))) {
$menu->add('Piwik Mobile App', null, array('module' => 'Proxy', 'action' => 'redirect', 'url' => 'http://piwik.org/mobile/'), true, 4);
}
}
diff --git a/plugins/CoreConsole/Commands/GenerateWidget.php b/plugins/CoreConsole/Commands/GenerateWidget.php
index 836ea3970a..c3360e10fe 100644
--- a/plugins/CoreConsole/Commands/GenerateWidget.php
+++ b/plugins/CoreConsole/Commands/GenerateWidget.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/CoreHome/Controller.php b/plugins/CoreHome/Controller.php
index 3c90049ca2..487f30883e 100644
--- a/plugins/CoreHome/Controller.php
+++ b/plugins/CoreHome/Controller.php
@@ -241,7 +241,7 @@ class Controller extends \Piwik\Plugin\Controller
$view = new View('@CoreHome/getPromoVideo');
$view->shareText = Piwik::translate('CoreHome_SharePiwikShort');
$view->shareTextLong = Piwik::translate('CoreHome_SharePiwikLong');
- $view->promoVideoUrl = 'http://www.youtube.com/watch?v=OslfF_EH81g';
+ $view->promoVideoUrl = 'https://www.youtube.com/watch?v=OslfF_EH81g';
return $view->render();
}
diff --git a/plugins/CoreHome/DataTableRowAction/RowEvolution.php b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
index 2fb65b40b4..915139d300 100644
--- a/plugins/CoreHome/DataTableRowAction/RowEvolution.php
+++ b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
@@ -86,6 +86,9 @@ class RowEvolution
if (empty($this->apiMethod)) throw new Exception("Parameter apiMethod not set.");
$this->label = ResponseBuilder::getLabelFromRequest($_GET);
+ if(!is_array($this->label)) {
+ throw new Exception("Expected label to be an array, got instead: " . $this->label);
+ }
$this->label = $this->label[0];
if ($this->label === '') throw new Exception("Parameter label not set.");
diff --git a/plugins/CoreHome/Widgets.php b/plugins/CoreHome/Widgets.php
index 5aba86a2cd..c2bfc76448 100644
--- a/plugins/CoreHome/Widgets.php
+++ b/plugins/CoreHome/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/CoreHome/templates/getPromoVideo.twig b/plugins/CoreHome/templates/getPromoVideo.twig
index 0fa24bc5cb..36d94381a9 100755
--- a/plugins/CoreHome/templates/getPromoVideo.twig
+++ b/plugins/CoreHome/templates/getPromoVideo.twig
@@ -42,7 +42,7 @@
var promoEmbed = $('#piwik-promo-embed'),
widgetWidth = $(this).closest('.widgetContent').width(),
height = (266 * widgetWidth) / 421,
- embedHtml = '<iframe width="100%" height="' + height + '" src="http://www.youtube.com/embed/OslfF_EH81g?autoplay=1&vq=hd720&wmode=transparent" frameborder="0" wmode="Opaque"></iframe>';
+ embedHtml = '<iframe width="100%" height="' + height + '" src="https://www.youtube-nocookie.com/embed/OslfF_EH81g?autoplay=1&vq=hd720&wmode=transparent" frameborder="0" wmode="Opaque"></iframe>';
$(this).hide();
promoEmbed.height(height).html(embedHtml);
diff --git a/plugins/Dashboard/Menu.php b/plugins/Dashboard/Menu.php
index 95d5a618d4..e972ae7dfd 100644
--- a/plugins/Dashboard/Menu.php
+++ b/plugins/Dashboard/Menu.php
@@ -15,6 +15,7 @@ use Piwik\Menu\MenuAbstract;
use Piwik\Menu\MenuReporting;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
+use Piwik\Plugins\UsersManager\UserPreferences;
use Piwik\Site;
/**
@@ -41,16 +42,18 @@ class Menu extends \Piwik\Plugin\Menu
public function configureTopMenu(MenuTop $menu)
{
- $tooltip = false;
- try {
- $idSite = Common::getRequestVar('idSite');
- $tooltip = Piwik::translate('Dashboard_TopLinkTooltip', Site::getNameFor($idSite));
- } catch (Exception $ex) {
- // if no idSite parameter, show no tooltip
- }
+ $userPreferences = new UserPreferences();
+ $idSite = $userPreferences->getDefaultWebsiteId();
+
+ $tooltip = Piwik::translate('Dashboard_TopLinkTooltip', Site::getNameFor($idSite));
- $urlParams = array('module' => 'CoreHome', 'action' => 'index');
+ $urlParams = array(
+ 'module' => 'CoreHome',
+ 'action' => 'index',
+ 'idSite' => $idSite,
+ );
$menu->add('Dashboard_Dashboard', null, $urlParams, true, 1, $tooltip);
}
}
+
diff --git a/plugins/DevicesDetection/Controller.php b/plugins/DevicesDetection/Controller.php
index e42006fa65..57196991fa 100644
--- a/plugins/DevicesDetection/Controller.php
+++ b/plugins/DevicesDetection/Controller.php
@@ -8,7 +8,7 @@
*/
namespace Piwik\Plugins\DevicesDetection;
-use DeviceDetector;
+use DeviceDetector\DeviceDetector;
use Piwik\Common;
use Piwik\Db;
use Piwik\Piwik;
@@ -74,26 +74,27 @@ class Controller extends \Piwik\Plugin\Controller
$userAgent = Common::getRequestVar('ua', $_SERVER['HTTP_USER_AGENT'], 'string');
- $parsedUA = DeviceDetector::getInfoFromUserAgent($userAgent);
+ $uaParser = new DeviceDetector($userAgent);
+ $uaParser->parse();
$view->userAgent = $userAgent;
- $view->browser_name = $parsedUA['browser']['name'];
- $view->browser_short_name = $parsedUA['browser']['short_name'];
- $view->browser_version = $parsedUA['browser']['version'];
- $view->browser_logo = getBrowserLogoExtended($parsedUA['browser']['short_name']);
- $view->browser_family = $parsedUA['browser_family'];
- $view->browser_family_logo = getBrowserFamilyLogoExtended($parsedUA['browser_family']);
- $view->os_name = $parsedUA['os']['name'];
- $view->os_logo = getOsLogoExtended($parsedUA['os']['short_name']);
- $view->os_short_name = $parsedUA['os']['short_name'];
- $view->os_family = $parsedUA['os_family'];
- $view->os_family_logo = getOsFamilyLogoExtended($parsedUA['os_family']);
- $view->os_version = $parsedUA['os']['version'];
- $view->device_type = getDeviceTypeLabel($parsedUA['device']['type']);
- $view->device_type_logo = getDeviceTypeLogo($parsedUA['device']['type']);
- $view->device_model = $parsedUA['device']['model'];
- $view->device_brand = getDeviceBrandLabel($parsedUA['device']['brand']);
- $view->device_brand_logo = getBrandLogo($view->device_brand);
+ $view->browser_name = $uaParser->getClient('name');
+ $view->browser_short_name = $uaParser->getClient('short_name');
+ $view->browser_version = $uaParser->getClient('version');
+ $view->browser_logo = getBrowserLogoExtended($uaParser->getClient('short_name'));
+ $view->browser_family = \DeviceDetector\Parser\Client\Browser::getBrowserFamily($uaParser->getClient('short_name'));
+ $view->browser_family_logo = getBrowserFamilyLogoExtended($view->browser_family);
+ $view->os_name = $uaParser->getOs('name');
+ $view->os_logo = getOsLogoExtended($uaParser->getOs('short_name'));
+ $view->os_short_name = $uaParser->getOs('short_name');
+ $view->os_family = \DeviceDetector\Parser\OperatingSystem::getOsFamily($uaParser->getOs('short_name'));
+ $view->os_family_logo = getOsFamilyLogoExtended($view->os_family);
+ $view->os_version = $uaParser->getOs('version');
+ $view->device_type = getDeviceTypeLabel($uaParser->getDeviceName());
+ $view->device_type_logo = getDeviceTypeLogo($uaParser->getDeviceName());
+ $view->device_model = $uaParser->getModel();
+ $view->device_brand = getDeviceBrandLabel($uaParser->getBrand());
+ $view->device_brand_logo = getBrandLogo($uaParser->getBrand());
return $view->render();
}
@@ -110,7 +111,7 @@ class Controller extends \Piwik\Plugin\Controller
switch ($type) {
case 'brands':
- $availableBrands = DeviceDetector::$deviceBrands;
+ $availableBrands = \DeviceDetector\Parser\Device\DeviceParserAbstract::$deviceBrands;
foreach ($availableBrands AS $short => $name) {
if ($name != 'Unknown') {
@@ -120,7 +121,7 @@ class Controller extends \Piwik\Plugin\Controller
break;
case 'browsers':
- $availableBrowsers = DeviceDetector::$browsers;
+ $availableBrowsers = \DeviceDetector\Parser\Client\Browser::getAvailableBrowsers();
foreach ($availableBrowsers AS $short => $name) {
$list[$name] = getBrowserLogoExtended($short);
@@ -128,7 +129,7 @@ class Controller extends \Piwik\Plugin\Controller
break;
case 'browserfamilies':
- $availableBrowserFamilies = DeviceDetector::$browserFamilies;
+ $availableBrowserFamilies = \DeviceDetector\Parser\Client\Browser::getAvailableBrowserFamilies();
foreach ($availableBrowserFamilies AS $name => $browsers) {
$list[$name] = getBrowserFamilyLogoExtended($name);
@@ -136,29 +137,25 @@ class Controller extends \Piwik\Plugin\Controller
break;
case 'os':
- $availableOSs = DeviceDetector::$osShorts;
+ $availableOSs = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystems();
- foreach ($availableOSs AS $name => $short) {
- if ($name != 'Bot') {
- $list[$name] = getOsLogoExtended($short);
- }
+ foreach ($availableOSs AS $short => $name) {
+ $list[$name] = getOsLogoExtended($short);
}
break;
case 'osfamilies':
- $osFamilies = DeviceDetector::$osFamilies;
+ $osFamilies = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystemFamilies();
foreach ($osFamilies AS $name => $oss) {
- if ($name != 'Bot') {
- $list[$name] = getOsFamilyLogoExtended($name);
- }
+ $list[$name] = getOsFamilyLogoExtended($name);
}
break;
case 'devicetypes':
- $deviceTypes = DeviceDetector::$deviceTypes;
+ $deviceTypes = \DeviceDetector\Parser\Device\DeviceParserAbstract::getAvailableDeviceTypes();
- foreach ($deviceTypes AS $name) {
+ foreach ($deviceTypes AS $name => $id) {
$list[$name] = getDeviceTypeLogo($name);
}
break;
diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php
index 1cf8c87e95..af76162f01 100644
--- a/plugins/DevicesDetection/functions.php
+++ b/plugins/DevicesDetection/functions.php
@@ -9,8 +9,10 @@
namespace Piwik\Plugins\DevicesDetection;
-use DeviceDetector;
use Piwik\Piwik;
+use DeviceDetector\Parser\OperatingSystem AS OperatingSystemParser;
+use DeviceDetector\Parser\Device\DeviceParserAbstract AS DeviceParser;
+use DeviceDetector\Parser\Client\Browser AS BrowserParser;
function getBrandLogo($label)
{
@@ -25,7 +27,7 @@ function getBrandLogo($label)
function getBrowserFamilyFullNameExtended($label)
{
- foreach (DeviceDetector::$browserFamilies as $name => $family) {
+ foreach (BrowserParser::getAvailableBrowserFamilies() as $name => $family) {
if (in_array($label, $family)) {
return $name;
}
@@ -35,8 +37,9 @@ function getBrowserFamilyFullNameExtended($label)
function getBrowserFamilyLogoExtended($label)
{
- if (array_key_exists($label, DeviceDetector::$browserFamilies)) {
- return getBrowserLogoExtended(DeviceDetector::$browserFamilies[$label][0]);
+ $browserFamilies = BrowserParser::getAvailableBrowserFamilies();
+ if (!empty($label) && array_key_exists($label, $browserFamilies)) {
+ return getBrowserLogoExtended($browserFamilies[$label][0]);
}
return getBrowserLogoExtended($label);
}
@@ -45,8 +48,9 @@ function getBrowserNameExtended($label)
{
$short = substr($label, 0, 2);
$ver = substr($label, 3, 10);
- if (array_key_exists($short, DeviceDetector::$browsers)) {
- return trim(ucfirst(DeviceDetector::$browsers[$short]) . ' ' . $ver);
+ $browsers = BrowserParser::getAvailableBrowsers();
+ if (array_key_exists($short, $browsers)) {
+ return trim(ucfirst($browsers[$short]) . ' ' . $ver);
} else {
return Piwik::translate('General_Unknown');
}
@@ -70,8 +74,8 @@ function getBrowserLogoExtended($short)
// If name is given instead of short code, try to find matching shortcode
if (strlen($short) > 2) {
- if (in_array($short, DeviceDetector::$browsers)) {
- $flippedBrowsers = array_flip(DeviceDetector::$browsers);
+ if (in_array($short, BrowserParser::getAvailableBrowsers())) {
+ $flippedBrowsers = array_flip(BrowserParser::getAvailableBrowsers());
$short = $flippedBrowsers[$short];
} else {
$short = substr($short, 0, 2);
@@ -80,18 +84,27 @@ function getBrowserLogoExtended($short)
$family = getBrowserFamilyFullNameExtended($short);
- if (array_key_exists($short, DeviceDetector::$browsers) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
+ $browserFamilies = BrowserParser::getAvailableBrowserFamilies();
+
+ if (!empty($short) &&
+ array_key_exists($short, BrowserParser::getAvailableBrowsers()) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
+
return sprintf($path, $short);
- } elseif (array_key_exists($family, DeviceDetector::$browserFamilies) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, DeviceDetector::$browserFamilies[$family][0]))) {
- return sprintf($path, DeviceDetector::$browserFamilies[$family][0]);
+
+ } elseif (!empty($short) &&
+ array_key_exists($family, $browserFamilies) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $browserFamilies[$family][0]))) {
+
+ return sprintf($path, $browserFamilies[$family][0]);
}
return sprintf($path, 'UNK');
}
function getDeviceBrandLabel($label)
{
- if (array_key_exists($label, DeviceDetector::$deviceBrands)) {
- return ucfirst(DeviceDetector::$deviceBrands[$label]);
+ if (array_key_exists($label, DeviceParser::$deviceBrands)) {
+ return ucfirst(DeviceParser::$deviceBrands[$label]);
} else {
return Piwik::translate('General_Unknown');
}
@@ -110,8 +123,14 @@ function getDeviceTypeLabel($label)
'smart display' => 'DevicesDetection_SmartDisplay',
'camera' => 'DevicesDetection_Camera'
);
- if (isset(DeviceDetector::$deviceTypes[$label]) && isset($translations[DeviceDetector::$deviceTypes[$label]])) {
- return Piwik::translate($translations[DeviceDetector::$deviceTypes[$label]]);
+
+ $deviceTypes = DeviceParser::getAvailableDeviceTypes();
+
+ if (is_numeric($label) &&
+ in_array($label, $deviceTypes) &&
+ isset($translations[array_search($label, $deviceTypes)])) {
+
+ return Piwik::translate($translations[array_search($label, $deviceTypes)]);
} else if (isset($translations[$label])) {
return Piwik::translate($translations[$label]);
} else {
@@ -121,8 +140,8 @@ function getDeviceTypeLabel($label)
function getDeviceTypeLogo($label)
{
- if (is_numeric($label) && isset(DeviceDetector::$deviceTypes[$label])) {
- $label = DeviceDetector::$deviceTypes[$label];
+ if (is_numeric($label) && in_array($label, DeviceParser::getAvailableDeviceTypes())) {
+ $label = array_search($label, DeviceParser::getAvailableDeviceTypes());
}
$label = strtolower($label);
@@ -156,7 +175,10 @@ function getModelName($label)
function getOSFamilyFullNameExtended($label)
{
- $label = DeviceDetector::getOsFamily($label);
+ if ($label == \Piwik\Tracker\Settings::OS_BOT) {
+ return 'Bot';
+ }
+ $label = OperatingSystemParser::getOsFamily($label);
if($label !== false) {
return $label;
}
@@ -165,18 +187,22 @@ function getOSFamilyFullNameExtended($label)
function getOsFamilyLogoExtended($label)
{
- if (array_key_exists($label, DeviceDetector::$osFamilies)) {
- return getOsLogoExtended(DeviceDetector::$osFamilies[$label][0]);
+ $osFamilies = OperatingSystemParser::getAvailableOperatingSystemFamilies();
+ if (!empty($label) && array_key_exists($label, $osFamilies)) {
+ return getOsLogoExtended($osFamilies[$label][0]);
}
return getOsLogoExtended($label);
}
function getOsFullNameExtended($label)
{
+ if (substr($label, 0, 3) == \Piwik\Tracker\Settings::OS_BOT) {
+ return 'Bot';
+ }
if (!empty($label) && $label != ";") {
$os = substr($label, 0, 3);
$ver = substr($label, 4, 15);
- $name = DeviceDetector::getOsNameFromId($os, $ver);
+ $name = OperatingSystemParser::getNameFromId($os, $ver);
if (!empty($name)) {
return $name;
}
@@ -202,19 +228,27 @@ function getOsLogoExtended($short)
// If name is given instead of short code, try to find matching shortcode
if (strlen($short) > 3) {
- if (array_key_exists($short, DeviceDetector::$osShorts)) {
- $short = DeviceDetector::$osShorts[$short];
+ if (in_array($short, OperatingSystemParser::getAvailableOperatingSystems())) {
+ $short = array_search($short, OperatingSystemParser::getAvailableOperatingSystems());
} else {
$short = substr($short, 0, 3);
}
}
$family = getOsFamilyFullNameExtended($short);
+ $osFamilies = OperatingSystemParser::getAvailableOperatingSystemFamilies();
+
+ if (!empty($short) &&
+ array_key_exists($short, OperatingSystemParser::getAvailableOperatingSystems()) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
- if (in_array($short, DeviceDetector::$osShorts) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
return sprintf($path, $short);
- } elseif (array_key_exists($family, DeviceDetector::$osFamilies) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, DeviceDetector::$osFamilies[$family][0]))) {
- return sprintf($path, DeviceDetector::$osFamilies[$family][0]);
+
+ } elseif (!empty($family) &&
+ array_key_exists($family, $osFamilies) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $osFamilies[$family][0]))) {
+
+ return sprintf($path, $osFamilies[$family][0]);
}
return sprintf($path, 'UNK');
}
diff --git a/plugins/Events/lang/bg.json b/plugins/Events/lang/bg.json
index 5d62094f7f..54c4b959c4 100644
--- a/plugins/Events/lang/bg.json
+++ b/plugins/Events/lang/bg.json
@@ -1,5 +1,6 @@
{
"Events": {
+ "AvgValue": "Средна стойност",
"Event": "Събитие",
"EventAction": "Действие на събитието",
"EventCategory": "Категория на събитие",
@@ -10,6 +11,8 @@
"MaxValueDocumentation": "Максималната стойност за това събитие",
"MinValue": "Минимална стойност",
"MinValueDocumentation": "Минималната стойност за това събитие",
+ "SecondaryDimension": "Второстепенното измерение е %s.",
+ "SwitchToSecondaryDimension": "Превключване към %s",
"TopEvents": "Най-важните събития",
"TotalEvents": "Общо събития",
"TotalEventsDocumentation": "Общ брой събития",
diff --git a/plugins/Events/lang/da.json b/plugins/Events/lang/da.json
index a1f8b54c75..db8849014f 100644
--- a/plugins/Events/lang/da.json
+++ b/plugins/Events/lang/da.json
@@ -1,10 +1,31 @@
{
"Events": {
+ "AvgEventValue": "Genomsnitlig værdi for hændelsen er: %s",
+ "AvgValue": "Gennemsnitsværdi",
+ "AvgValueDocumentation": "Gennemsnittet af alle værdier for denne hændelse",
"Event": "Hændelse",
"EventAction": "Hændelsesaktion",
+ "EventActions": "Hændelsesforløb",
+ "EventCategories": "Hændelseskategorier",
"EventCategory": "Hændelseskategori",
"EventName": "Hændelsesnavn",
+ "EventNames": "Hændelsesnavn",
"Events": "Hændelser",
- "EventValue": "Hændelsesværdi"
+ "EventsWithValue": "Hændelser med en værdi",
+ "EventsWithValueDocumentation": "Antal hændelser, hvor en hændelseværdi blev fastsat",
+ "EventValue": "Hændelsesværdi",
+ "EventValueTooltip": "Samlet hændelsesværdi er summen af ​​%s hændelsesværdier %s mellem mindst %s og maksimalt %s.",
+ "MaxValue": "Max værdi",
+ "MaxValueDocumentation": "Den maksimale værdi for hændelsen",
+ "MinValue": "Min værdi",
+ "MinValueDocumentation": "Den mindste værdi for hændelsen",
+ "SecondaryDimension": "Sekundær dimension er %s.",
+ "SwitchToSecondaryDimension": "Skift til %s",
+ "TopEvents": "Tophændelser",
+ "TotalEvents": "Totale hændelser",
+ "TotalEventsDocumentation": "Total antal hændelser",
+ "TotalValue": "Total værdi",
+ "TotalValueDocumentation": "Summen af hændelserværdier",
+ "ViewEvents": "Vis hændelser"
}
} \ No newline at end of file
diff --git a/plugins/Events/lang/nl.json b/plugins/Events/lang/nl.json
index 038730d299..f04206e860 100644
--- a/plugins/Events/lang/nl.json
+++ b/plugins/Events/lang/nl.json
@@ -16,6 +16,7 @@
"MaxValueDocumentation": "De maximale waarde voor deze gebeurtenis",
"MinValue": "Minimale waarde",
"MinValueDocumentation": "De minimale waarde voor deze gebeurtenis",
+ "SwitchToSecondaryDimension": "Omschakelen naar %s",
"TopEvents": "Top Gebeurtenissen",
"TotalEvents": "Totaal gebeurtenissen",
"TotalEventsDocumentation": "Totaal aantal gebeurtenissen",
diff --git a/plugins/ExampleAPI/API.php b/plugins/ExampleAPI/API.php
index 27dc2f59aa..f7cb0424ce 100644
--- a/plugins/ExampleAPI/API.php
+++ b/plugins/ExampleAPI/API.php
@@ -28,6 +28,7 @@ class API extends \Piwik\Plugin\API
public function getPiwikVersion()
{
Piwik::checkUserHasSomeViewAccess();
+ Piwik::checkUserIsNotAnonymous();
return Version::VERSION;
}
diff --git a/plugins/ExamplePlugin/Widgets.php b/plugins/ExamplePlugin/Widgets.php
index 6ce0c590dc..c213d91ee8 100644
--- a/plugins/ExamplePlugin/Widgets.php
+++ b/plugins/ExamplePlugin/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/ExampleRssWidget/Widgets.php b/plugins/ExampleRssWidget/Widgets.php
index 56444cd9c5..cd31ef95e0 100644
--- a/plugins/ExampleRssWidget/Widgets.php
+++ b/plugins/ExampleRssWidget/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/Goals/Widgets.php b/plugins/Goals/Widgets.php
index d7a90c9645..bdfa47a924 100644
--- a/plugins/Goals/Widgets.php
+++ b/plugins/Goals/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/Insights/Widgets.php b/plugins/Insights/Widgets.php
index 3c2f75f0b7..6ce632d8bc 100644
--- a/plugins/Insights/Widgets.php
+++ b/plugins/Insights/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php
index 377783f604..c0e7fd2be1 100644
--- a/plugins/Installation/Controller.php
+++ b/plugins/Installation/Controller.php
@@ -279,9 +279,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$form->getSubmitValue('email'));
$email = $form->getSubmitValue('email');
- $newsletterSecurity = $form->getSubmitValue('subscribe_newsletter_security');
- $newsletterCommunity = $form->getSubmitValue('subscribe_newsletter_community');
- $this->registerNewsletter($email, $newsletterSecurity, $newsletterCommunity);
+ $newsletterPiwikORG = $form->getSubmitValue('subscribe_newsletter_piwikorg');
+ $newsletterPiwikPRO = $form->getSubmitValue('subscribe_newsletter_piwikpro');
+ $this->registerNewsletter($email, $newsletterPiwikORG, $newsletterPiwikPRO);
$this->redirectToNextStep(__FUNCTION__);
} catch (Exception $e) {
@@ -625,6 +625,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
'gzuncompress' => 'Installation_SystemCheckGzuncompressHelp',
'pack' => 'Installation_SystemCheckPackHelp',
'php5-json' => 'Installation_SystemCheckJsonHelp',
+ 'session.auto_start' => 'Installation_SystemCheckSessionAutostart',
);
$view->problemWithSomeDirectories = (false !== array_search(false, $view->infos['directories']));
@@ -665,27 +666,27 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
/**
* @param $email
- * @param $newsletterSecurity
- * @param $newsletterCommunity
+ * @param $newsletterPiwikORG
+ * @param $newsletterPiwikPRO
*/
- protected function registerNewsletter($email, $newsletterSecurity, $newsletterCommunity)
+ protected function registerNewsletter($email, $newsletterPiwikORG, $newsletterPiwikPRO)
{
$url = Config::getInstance()->General['api_service_url'];
$url .= '/1.0/subscribeNewsletter/';
$params = array(
'email' => $email,
- 'security' => $newsletterSecurity,
- 'community' => $newsletterCommunity,
+ 'piwikorg' => $newsletterPiwikORG,
+ 'piwikpro' => $newsletterPiwikPRO,
'url' => Url::getCurrentUrlWithoutQueryString(),
);
- if ($params['security'] == '1'
- || $params['community'] == '1'
+ if ($params['piwikorg'] == '1'
+ || $params['piwikpro'] == '1'
) {
- if (!isset($params['security'])) {
- $params['security'] = '0';
+ if (!isset($params['piwikorg'])) {
+ $params['piwikorg'] = '0';
}
- if (!isset($params['community'])) {
- $params['community'] = '0';
+ if (!isset($params['piwikpro'])) {
+ $params['piwikpro'] = '0';
}
$url .= '?' . http_build_query($params, '', '&');
try {
diff --git a/plugins/Installation/FormSuperUser.php b/plugins/Installation/FormSuperUser.php
index 68d9dcad14..aef40d6a40 100644
--- a/plugins/Installation/FormSuperUser.php
+++ b/plugins/Installation/FormSuperUser.php
@@ -53,21 +53,25 @@ class FormSuperUser extends QuickForm2
$email->addRule('required', Piwik::translate('General_Required', Piwik::translate('Installation_Email')));
$email->addRule('checkEmail', Piwik::translate('UsersManager_ExceptionInvalidEmail'));
- $this->addElement('checkbox', 'subscribe_newsletter_security', null, array(
- 'content' => '&nbsp;&nbsp;' . Piwik::translate('Installation_SecurityNewsletter'),
- ));
+ $this->addElement('checkbox', 'subscribe_newsletter_piwikorg', null,
+ array(
+ 'content' => '&nbsp;&nbsp;' . Piwik::translate('Installation_PiwikOrgNewsletter'),
+ ));
- $this->addElement('checkbox', 'subscribe_newsletter_community', null, array(
- 'content' => '&nbsp;&nbsp;' . Piwik::translate('Installation_CommunityNewsletter'),
- ));
+ $this->addElement('checkbox', 'subscribe_newsletter_piwikpro', null,
+ array(
+ 'content' => '&nbsp;&nbsp;' . Piwik::translate('Installation_PiwikProNewsletter',
+ array("<a href='http://piwik.pro' style='color:#444;' target='_blank'>", "</a>")
+ ),
+ ));
$this->addElement('submit', 'submit', array('value' => Piwik::translate('General_Next') . ' »', 'class' => 'submit'));
// default values
$this->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
- 'subscribe_newsletter_community' => 1,
- 'subscribe_newsletter_security' => 1,
- )));
+ 'subscribe_newsletter_piwikorg' => 1,
+ 'subscribe_newsletter_piwikpro' => 0,
+ )));
}
}
diff --git a/plugins/Installation/SystemCheck.php b/plugins/Installation/SystemCheck.php
index 60585cf80a..c017a19d41 100644
--- a/plugins/Installation/SystemCheck.php
+++ b/plugins/Installation/SystemCheck.php
@@ -8,6 +8,7 @@
*/
namespace Piwik\Plugins\Installation;
+use Piwik\CliMulti;
use Piwik\CliMulti\Process;
use Piwik\Common;
use Piwik\Config;
@@ -59,7 +60,7 @@ class SystemCheck
$infos['phpVersion_minimum'] = $piwik_minimumPHPVersion;
$infos['phpVersion'] = PHP_VERSION;
- $infos['phpVersion_ok'] = version_compare($piwik_minimumPHPVersion, $infos['phpVersion']) === -1;
+ $infos['phpVersion_ok'] = self::isPhpVersionValid($infos['phpVersion']);
// critical errors
$extensions = @get_loaded_extensions();
@@ -131,7 +132,6 @@ class SystemCheck
'parse_ini_file',
'glob',
);
- $infos['desired_functions'] = $desired_functions;
$infos['missing_desired_functions'] = array();
foreach ($desired_functions as $desired_function) {
if (!self::functionExists($desired_function)) {
@@ -139,11 +139,20 @@ class SystemCheck
}
}
+ $sessionAutoStarted = (int)ini_get('session.auto_start');
+ if($sessionAutoStarted) {
+ $infos['missing_desired_functions'][] = 'session.auto_start';
+ }
+
+ $desired_settings = array(
+ 'session.auto_start',
+ );
+ $infos['desired_functions'] = array_merge($desired_functions, $desired_settings);
+
$infos['openurl'] = Http::getTransportMethod();
$infos['gd_ok'] = SettingsServer::isGdExtensionEnabled();
-
$serverSoftware = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '';
$infos['serverVersion'] = addslashes($serverSoftware);
$infos['serverOs'] = @php_uname();
@@ -174,7 +183,9 @@ class SystemCheck
}
$infos['timezone'] = SettingsServer::isTimezoneSupportEnabled();
- $infos['cli_process_ok'] = Process::isSupported();
+
+ $process = new CliMulti();
+ $infos['cli_process_ok'] = $process->supportsAsync();
$infos['tracker_status'] = Common::getRequestVar('trackerStatus', 0, 'int');
@@ -182,6 +193,7 @@ class SystemCheck
$infos['is_nfs'] = Filesystem::checkIfFileSystemIsNFS();
$infos = self::enrichSystemChecks($infos);
+
return $infos;
}
@@ -315,4 +327,15 @@ class SystemCheck
ServerFilesGenerator::createWebRootFiles();
}
+ /**
+ * @param $piwik_minimumPHPVersion
+ * @param $infos
+ * @return bool
+ */
+ public static function isPhpVersionValid($phpVersion)
+ {
+ global $piwik_minimumPHPVersion;
+ return version_compare($piwik_minimumPHPVersion, $phpVersion) === -1;
+ }
+
} \ No newline at end of file
diff --git a/plugins/LeftMenu/lang/bg.json b/plugins/LeftMenu/lang/bg.json
new file mode 100644
index 0000000000..4c5cc8fc36
--- /dev/null
+++ b/plugins/LeftMenu/lang/bg.json
@@ -0,0 +1,5 @@
+{
+ "LeftMenu": {
+ "UserSettingTitle": "Активиране на лявото меню за отчет"
+ }
+} \ No newline at end of file
diff --git a/plugins/LeftMenu/lang/da.json b/plugins/LeftMenu/lang/da.json
new file mode 100644
index 0000000000..537645be76
--- /dev/null
+++ b/plugins/LeftMenu/lang/da.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definerer systemets standard indstillinger for alle brugerne.",
+ "GlobalSettingInlineHelp": "Brugerne er i stand til at aktivere\/deaktivere venstremenuen uafhængigt af systemets standard indstillinger.",
+ "GlobalSettingTitle": "Venstre menu aktiveret som standard",
+ "SettingsIntroduction": "Venstre menu udvidelsen vil flytte rapportmenuen fra toppen til venstre, hvis aktiveret. Dette er især nyttigt for store skærme.",
+ "UserSettingInlineHelp": "Dette vil kun aktivere eller deaktivere venstre menuen for dig og påvirker ikke andre brugere. En superbruger kan ændre standardindstillingen for alle brugere.",
+ "UserSettingTitle": "Aktiver rapportmenu til venstre"
+ }
+} \ No newline at end of file
diff --git a/plugins/LeftMenu/lang/el.json b/plugins/LeftMenu/lang/el.json
new file mode 100644
index 0000000000..1c8989026f
--- /dev/null
+++ b/plugins/LeftMenu/lang/el.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Ορίζει την προεπιλογή για όλους τους χρήστες.",
+ "GlobalSettingInlineHelp": "Οι χρήστες μπορούν να απενεργοποιούν\/ενεργοποιούν το αριστερό μενού ανεξάρτητα από την προεπιλεγμένη ρύθμιση του συστήματος.",
+ "GlobalSettingTitle": "Το αριστερό μενού είναι εξ' ορισμού ενεργοποιημένο.",
+ "SettingsIntroduction": "Το πρόσθετο για το αριστερό μενού θα μετακινήσει το μενού αναφορών από την κορυφή προς τα αριστερά αν ενεργοποιηθεί. Αυτό είναι ιδιαίτερα χρήσιμο για μεγάλες οθόνες.",
+ "UserSettingInlineHelp": "Αυτό θα ενεργοποιήσει ή απενεργοποιήσει το αριστερό μενού μόνο για εσάς και δε θα επηρεάσει άλλους χρήστες. Ένας Υπερχρήστης μπορεί να αλλάξει την προκαθορισμένη ρύθμιση για όλους τους χρήστες.",
+ "UserSettingTitle": "Ενεργοποίηση του αριστερού μενού αναφορών"
+ }
+} \ No newline at end of file
diff --git a/plugins/LeftMenu/lang/it.json b/plugins/LeftMenu/lang/it.json
new file mode 100644
index 0000000000..0b305449d9
--- /dev/null
+++ b/plugins/LeftMenu/lang/it.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definisce le impostazioni predefinite di sistema per tutti gli utenti.",
+ "GlobalSettingInlineHelp": "Gli utenti possono disabilitare o abilitare il menù di sinistra indipendentemente dalle impostazioni predefinite del sistema.",
+ "GlobalSettingTitle": "Il menù di sinistra è abilitato di default",
+ "SettingsIntroduction": "Il plugin menù di sinistra sposta il menu di segnalazione dalla parte superiore a sinistra, se abilitato. Ciò è particolarmente utile per i display di grandi dimensioni.",
+ "UserSettingInlineHelp": "Questo abilita o disabilita il menù di sinistra solo per te e non ha effetto per gli altri utenti. Un Super User può cambiare per tutti gli utenti le impostazioni predefinite.",
+ "UserSettingTitle": "Abilita il menù di segnalazione di sinistra"
+ }
+} \ No newline at end of file
diff --git a/plugins/LeftMenu/lang/nl.json b/plugins/LeftMenu/lang/nl.json
new file mode 100644
index 0000000000..e0fa59a255
--- /dev/null
+++ b/plugins/LeftMenu/lang/nl.json
@@ -0,0 +1,6 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definieert het systeem standaard voor al uw gebruikers.",
+ "GlobalSettingTitle": "Linker menu standaard ingeschakeld"
+ }
+} \ No newline at end of file
diff --git a/plugins/Live/Widgets.php b/plugins/Live/Widgets.php
index bb07f55397..c216a54841 100644
--- a/plugins/Live/Widgets.php
+++ b/plugins/Live/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/PrivacyManager/DoNotTrackHeaderChecker.php b/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
index 93c0e79fca..5ee5642fdd 100644
--- a/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
+++ b/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
@@ -37,9 +37,9 @@ class DoNotTrackHeaderChecker
) {
$request = new Request($_REQUEST);
$ua = $request->getUserAgent();
- if (strpos($ua, 'MSIE 10') !== false
- || strpos($ua, 'Trident/7') !== false) {
- Common::printDebug("INTERNET EXPLORER 10 and 11 enable DoNotTrack by default; so Piwik ignores DNT for all IE10 + IE11 browsers...");
+ if (strpos($ua, 'MSIE') !== false
+ || strpos($ua, 'Trident') !== false) {
+ Common::printDebug("INTERNET EXPLORER enable DoNotTrack by default; so Piwik ignores DNT IE browsers...");
return;
}
diff --git a/plugins/Referrers/Widgets.php b/plugins/Referrers/Widgets.php
index f1e78ac783..0a565ddb8c 100644
--- a/plugins/Referrers/Widgets.php
+++ b/plugins/Referrers/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/SEO/Widgets.php b/plugins/SEO/Widgets.php
index 9e65a0185c..969c918eb3 100644
--- a/plugins/SEO/Widgets.php
+++ b/plugins/SEO/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/UserCountry/LocationProvider/GeoIp/ServerBased.php b/plugins/UserCountry/LocationProvider/GeoIp/ServerBased.php
index 3e9b51488b..b7df996637 100755
--- a/plugins/UserCountry/LocationProvider/GeoIp/ServerBased.php
+++ b/plugins/UserCountry/LocationProvider/GeoIp/ServerBased.php
@@ -28,6 +28,7 @@ class ServerBased extends GeoIp
const TITLE = 'GeoIP (%s)';
const TEST_SERVER_VAR = 'GEOIP_ADDR';
const TEST_SERVER_VAR_ALT = 'GEOIP_COUNTRY_CODE';
+ const TEST_SERVER_VAR_ALT_IPV6 = 'GEOIP_COUNTRY_CODE_V6';
private static $geoIpServerVars = array(
parent::COUNTRY_CODE_KEY => 'GEOIP_COUNTRY_CODE',
@@ -96,6 +97,11 @@ class ServerBased extends GeoIp
if (!empty($_SERVER[$geoipVarName])) {
$result[$resultKey] = $_SERVER[$geoipVarName];
}
+
+ $geoipVarNameV6 = $geoipVarName . '_V6';
+ if (!empty($_SERVER[$geoipVarNameV6])) {
+ $result[$resultKey] = $_SERVER[$geoipVarNameV6];
+ }
}
foreach (self::$geoIpUtfServerVars as $resultKey => $geoipVarName) {
if (!empty($_SERVER[$geoipVarName])) {
@@ -150,25 +156,27 @@ class ServerBased extends GeoIp
}
$available = !empty($_SERVER[self::TEST_SERVER_VAR])
- || !empty($_SERVER[self::TEST_SERVER_VAR_ALT]);
+ || !empty($_SERVER[self::TEST_SERVER_VAR_ALT])
+ || !empty($_SERVER[self::TEST_SERVER_VAR_ALT_IPV6])
+ ;
if ($available) {
return true;
- } else // if not available return message w/ extra info
- {
- if (!function_exists('apache_get_modules')) {
- return Piwik::translate('General_Note') . ':&nbsp;' . Piwik::translate('UserCountry_AssumingNonApache');
- }
+ }
- $message = "<strong><em>" . Piwik::translate('General_Note') . ':&nbsp;'
- . Piwik::translate('UserCountry_FoundApacheModules')
- . "</em></strong>:<br/><br/>\n<ul style=\"list-style:disc;margin-left:24px\">\n";
- foreach (apache_get_modules() as $name) {
- $message .= "<li>$name</li>\n";
- }
- $message .= "</ul>";
- return $message;
+ // if not available return message w/ extra info
+ if (!function_exists('apache_get_modules')) {
+ return Piwik::translate('General_Note') . ':&nbsp;' . Piwik::translate('UserCountry_AssumingNonApache');
+ }
+
+ $message = "<strong><em>" . Piwik::translate('General_Note') . ':&nbsp;'
+ . Piwik::translate('UserCountry_FoundApacheModules')
+ . "</em></strong>:<br/><br/>\n<ul style=\"list-style:disc;margin-left:24px\">\n";
+ foreach (apache_get_modules() as $name) {
+ $message .= "<li>$name</li>\n";
}
+ $message .= "</ul>";
+ return $message;
}
/**
@@ -180,6 +188,7 @@ class ServerBased extends GeoIp
{
if (empty($_SERVER[self::TEST_SERVER_VAR])
&& empty($_SERVER[self::TEST_SERVER_VAR_ALT])
+ && empty($_SERVER[self::TEST_SERVER_VAR_ALT_IPV6])
) {
return Piwik::translate("UserCountry_CannotFindGeoIPServerVar", self::TEST_SERVER_VAR . ' $_SERVER');
}
diff --git a/plugins/VisitFrequency/Widgets.php b/plugins/VisitFrequency/Widgets.php
index cea4a4348d..1b132c9f45 100644
--- a/plugins/VisitFrequency/Widgets.php
+++ b/plugins/VisitFrequency/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/plugins/VisitsSummary/Widgets.php b/plugins/VisitsSummary/Widgets.php
index b51d855106..3e1b5cfbfe 100644
--- a/plugins/VisitsSummary/Widgets.php
+++ b/plugins/VisitsSummary/Widgets.php
@@ -1,6 +1,6 @@
<?php
/**
- * Piwik - Open source web analytics
+ * Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
diff --git a/tests/PHPUnit/Core/DeprecatedMethodsTest.php b/tests/PHPUnit/Core/DeprecatedMethodsTest.php
index 1e170bd814..ce496684ba 100644
--- a/tests/PHPUnit/Core/DeprecatedMethodsTest.php
+++ b/tests/PHPUnit/Core/DeprecatedMethodsTest.php
@@ -17,7 +17,7 @@ class DeprecatedMethodsTest extends PHPUnit_Framework_TestCase
public function test_version2_0_4()
{
- $validTill = '2014-06-15';
+ $validTill = '2014-09-15';
$this->assertDeprecatedMethodIsRemoved('\Piwik\Period', 'factory', $validTill);
$validTill = '2014-10-01';
diff --git a/tests/PHPUnit/Core/ReleaseCheckListTest.php b/tests/PHPUnit/Core/ReleaseCheckListTest.php
index cb53dde0dc..67dc9efe28 100644
--- a/tests/PHPUnit/Core/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Core/ReleaseCheckListTest.php
@@ -211,10 +211,10 @@ class ReleaseCheckListTest extends PHPUnit_Framework_TestCase
foreach($paths as $pathToTest) {
$chmod = substr(decoct(fileperms($pathToTest)), -3);
- $valid = array('775', '755');
+ $valid = array('777', '775', '755');
$command = "find $pluginsPath -type d -exec chmod 755 {} +";
$this->assertTrue(in_array($chmod, $valid),
- "Some directories within plugins/ are not chmod 755. \n For example: $pathToTest \n\n".
+ "Some directories within plugins/ are not chmod 755 \n\nGot: $chmod for : $pathToTest \n\n".
"Run this command to set all directories to 755: \n$command\n");;
}
}
diff --git a/tests/PHPUnit/Fixture.php b/tests/PHPUnit/Fixture.php
index 3c1651757b..f651dd1d75 100644
--- a/tests/PHPUnit/Fixture.php
+++ b/tests/PHPUnit/Fixture.php
@@ -67,6 +67,8 @@ class Fixture extends PHPUnit_Framework_Assert
public $resetPersistedFixture = false;
public $printToScreen = false;
+ public $testCaseClass = false;
+
public $testEnvironment = null;
/**
@@ -173,7 +175,7 @@ class Fixture extends PHPUnit_Framework_Assert
Cache::deleteTrackerCache();
- static::loadAllPlugins();
+ static::loadAllPlugins($this->getTestEnvironment(), $this->testCaseClass);
$_GET = $_REQUEST = array();
$_SERVER['HTTP_REFERER'] = '';
@@ -265,11 +267,31 @@ class Fixture extends PHPUnit_Framework_Assert
Translate::unloadEnglishTranslation();
}
- public static function loadAllPlugins()
+ public static function loadAllPlugins($testEnvironment = null, $testCaseClass = false)
{
DbHelper::createTables();
$pluginsManager = \Piwik\Plugin\Manager::getInstance();
+
$plugins = $pluginsManager->getPluginsToLoadDuringTests();
+
+ // make sure the plugin that executed this method is included in the plugins to load
+ $extraPlugins = array(
+ \Piwik\Plugin::getPluginNameFromBacktrace(debug_backtrace()),
+ \Piwik\Plugin::getPluginNameFromNamespace($testCaseClass)
+ );
+ foreach ($extraPlugins as $pluginName) {
+ if (empty($pluginName)) {
+ continue;
+ }
+
+ $plugins[] = $pluginName;
+ if ($testEnvironment) {
+ $testEnvironment->pluginsToLoad = array_merge($testEnvironment->pluginsToLoad ?: array(), array($pluginName));
+ }
+ }
+
+ Log::info("Plugins to load during tests: " . implode(', ', $plugins));
+
$pluginsManager->loadPlugins($plugins);
// Install plugins
@@ -722,7 +744,7 @@ class Fixture extends PHPUnit_Framework_Assert
public function dropDatabase($dbName = null)
{
- $dbName = $dbName ?: $this->dbName;
+ $dbName = $dbName ?: $this->dbName ?: Config::getInstance()->database_tests['dbname'];
$this->log("Dropping database '$dbName'...");
diff --git a/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php b/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php
index 5c50a8b071..9ddf6647e4 100644
--- a/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php
@@ -170,6 +170,7 @@ class Core_Tracker_VisitTest extends DatabaseTestCase
$this->assertSame($expectedIsReferrerSpam, $excluded->public_isReferrerSpamExcluded(), $spamUrl);
}
}
+
/**
* @group Core
* @group IpIsKnownBot
@@ -199,6 +200,58 @@ class Core_Tracker_VisitTest extends DatabaseTestCase
$this->assertSame($isBot, $excluded->public_isNonHumanBot(), $ip);
}
}
+
+ /**
+ * @group Core
+ * @group UserAgentIsKnownBot
+ */
+ public function testIsVisitor_userAgentIsKnownBot()
+ {
+ $isUserAgentBot = array(
+ 'baiduspider' => true,
+ 'bingbot' => true,
+ 'BINGBOT' => true,
+ 'x BingBot x' => true,
+ 'BingPreview' => true,
+ 'facebookexternalhit' => true,
+ 'YottaaMonitor' => true,
+ 'Mozilla/5.0 (compatible; CloudFlare-AlwaysOnline/1.0; +http://www.cloudflare.com/always-online) XXXX' => true,
+ 'Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)' => true,
+ 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)' => true,
+ 'Exabot/2.0' => true,
+ 'sogou spider' => true,
+ 'Mozilla/5.0(compatible;Sosospider/2.0;+http://help.soso.com/webspider.htm)' => true,
+
+
+ 'AdsBot-Google (+http://www.google.com/adsbot.html)' => true,
+ 'Google Page Speed Insights' => true,
+ // Web snippets
+ 'Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0 Google (+https://developers.google.com/+/web/snippet/)' => true,
+ // Google Web Preview
+ 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.51 (KHTML, like Gecko; Google Web Preview) Chrome/12.0.742 Safari/534.51' => true,
+ 'Googlebot-Video/1.0' => true,
+ 'Googlebot' => true,
+
+ 'random' => false,
+ 'hello world' => false,
+ 'this is a user agent' => false,
+ 'Mozilla' => false,
+ );
+
+ $idsite = API::getInstance()->addSite("name", "http://piwik.net/");
+
+ foreach ($isUserAgentBot as $userAgent => $isBot) {
+ $request = new Request(array(
+ 'idsite' => $idsite,
+ 'bots' => 0,
+ 'ua' => $userAgent,
+ ));
+
+ $excluded = new VisitExcluded_public($request);
+
+ $this->assertSame($isBot, $excluded->public_isNonHumanBot(), $userAgent);
+ }
+ }
}
class VisitExcluded_public extends VisitExcluded
diff --git a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
index 8410546408..247d5fbf7a 100644
--- a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
@@ -1713,9 +1713,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
@@ -1961,9 +1961,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
@@ -2263,9 +2263,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
@@ -2511,9 +2511,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
@@ -2917,9 +2917,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
@@ -3427,9 +3427,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
@@ -4008,9 +4008,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
diff --git a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest_browserVersion__API.getSuggestedValuesForSegment.xml b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest_browserVersion__API.getSuggestedValuesForSegment.xml
index 0896346301..abcc43c819 100644
--- a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest_browserVersion__API.getSuggestedValuesForSegment.xml
+++ b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest_browserVersion__API.getSuggestedValuesForSegment.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>3.6</row>
- <row>UNK</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_ImportLogs__DevicesDetection.getType_month.xml b/tests/PHPUnit/Integration/expected/test_ImportLogs__DevicesDetection.getType_month.xml
index bc13cbdb12..524f43508d 100644
--- a/tests/PHPUnit/Integration/expected/test_ImportLogs__DevicesDetection.getType_month.xml
+++ b/tests/PHPUnit/Integration/expected/test_ImportLogs__DevicesDetection.getType_month.xml
@@ -2,16 +2,27 @@
<result>
<row>
<label>Desktop</label>
- <nb_visits>25</nb_visits>
- <nb_actions>28</nb_actions>
+ <nb_visits>23</nb_visits>
+ <nb_actions>26</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>305</sum_visit_length>
- <bounce_count>23</bounce_count>
- <nb_visits_converted>23</nb_visits_converted>
- <sum_daily_nb_uniq_visitors>25</sum_daily_nb_uniq_visitors>
+ <bounce_count>21</bounce_count>
+ <nb_visits_converted>22</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>23</sum_daily_nb_uniq_visitors>
<logo>plugins/DevicesDetection/images/screens/normal.gif</logo>
</row>
<row>
+ <label>Unknown</label>
+ <nb_visits>2</nb_visits>
+ <nb_actions>2</nb_actions>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>2</bounce_count>
+ <nb_visits_converted>1</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <logo>plugins/DevicesDetection/images/screens/unknown.gif</logo>
+ </row>
+ <row>
<label>Smartphone</label>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
diff --git a/tests/PHPUnit/Integration/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/Integration/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
index 923b92e3f2..14213e25ad 100644
--- a/tests/PHPUnit/Integration/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/Integration/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
@@ -983,7 +983,7 @@
<browserCode>FF</browserCode>
<browserVersion>27.0</browserVersion>
<screenType>mobile</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>360x640</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/mobile.gif</screenTypeIcon>
<plugins>flash</plugins>
@@ -1787,9 +1787,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>unknown</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>unknown</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/unknown.gif</screenTypeIcon>
<plugins />
@@ -2512,9 +2512,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>unknown</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>unknown</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/unknown.gif</screenTypeIcon>
<plugins />
@@ -2716,9 +2716,9 @@
<browserName>Unknown</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>unknown</screenType>
- <deviceType>Desktop</deviceType>
+ <deviceType>Unknown</deviceType>
<resolution>unknown</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/unknown.gif</screenTypeIcon>
<plugins />
diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml
index a9ba35c127..0e713de68a 100644
--- a/tests/PHPUnit/Integration/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml
+++ b/tests/PHPUnit/Integration/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml
@@ -74,9 +74,9 @@
<browserName>Inconnu</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Bureau</deviceType>
+ <deviceType>Inconnu</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
@@ -180,9 +180,9 @@
<browserName>Inconnu</browserName>
<browserIcon>plugins/UserSettings/images/browsers/UNK.gif</browserIcon>
<browserCode>UNK</browserCode>
- <browserVersion>UNK</browserVersion>
+ <browserVersion />
<screenType>normal</screenType>
- <deviceType>Bureau</deviceType>
+ <deviceType>Inconnu</deviceType>
<resolution>1024x768</resolution>
<screenTypeIcon>plugins/UserSettings/images/screens/normal.gif</screenTypeIcon>
<plugins>flash, java</plugins>
diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
index 7df9d36979..ba5dafe722 100644
--- a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
+++ b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
@@ -319,7 +319,8 @@ Unknown,10,43,0%,4.3,00:12:37,10%
Device type
label,nb_visits,nb_actions,conversion_rate,nb_actions_per_visit,avg_time_on_site,bounce_rate
-Desktop,10,43,0%,4.3,00:12:37,10%
+Unknown,8,40,0%,5,00:15:01,0%
+Desktop,2,3,0%,1.5,00:03:01,50%
Device brand
label,nb_visits,nb_actions,conversion_rate,nb_actions_per_visit,avg_time_on_site,bounce_rate
diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_and_graph__ScheduledReports.generateReport_month.original.html b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_and_graph__ScheduledReports.generateReport_month.original.html
index 656a1dfc64..9115282428 100644
--- a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_and_graph__ScheduledReports.generateReport_month.original.html
+++ b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_and_graph__ScheduledReports.generateReport_month.original.html
@@ -5063,7 +5063,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAJd0lEQVR4nO3dS09c5x3A4TP3YW5gu2AwsaKKxG4bS63kRGk3XbTbqlKXXXTVD1GpH6DfovuuuunXqLtJ3VRKSJwYMLa5ZRiuczld4JLJAPYfDBkGnmdhMTPnDC+L4fz8nvccMmmaJgAAb5Id9gAAgNEgGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoON7c3NyxTx77/Ov3AoCrQTSczvz8fPxVDQHAVZIf9gCG4y9//efAM3/+44f9D+fn5+fm5vojYOAhAFw31zQaPnvabLfbhw8LhcLi4uLs7OwbdzxaEodfD3TGwUuHGxy82r/x2/0EAPB9u6bRkCTJ9vb24dfj4+NLS0uRaOj3moBIjmsI8xYAjDRrGk7UPzcQOcafKgIUAwAjRzSc3UFVBFc7nmpjALiEru/piUql8vZvcjBhcJACwamI4MYAcNlc02j43a/mlhYX37jZ4RmKyJWW8SmHxJoGAEbQNY2G3/7y3SR59y3f5FQHfpUAwKi7ptFwLo5eRXnsBRQnbfz9DBIAzksmTdNhjwEAGAGungAAQkQDABAiGgCAENEAAISIBgAgRDQAACHu0wBcoKN3SnWTEhhdVzAa3EMJLhUfQ7gkBv4wwhkOl1ctGgbu1uzmzQCQ/P+AeBgKZztcXrVoAC4bk39wGZzLp080ABdo4PeUyT8Yaa6eAABCRAMAECIagAt09JJLYHRZ0wBcoP7V2omFkDDiMmmaDnsM58xvKAAYMDDtd7agv4LRAABcBGsaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAyJWNhkePHg17CMC3fCThUjnbR/LKRgMAcL5EAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIyQ97ABdob78z7CEAr7Q7PR9JuDzand4Z9rrK0fD7P/1j2EMA+vxtYdgjAL71948/Ou0uTk8AACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAITkhz2AN0jT9OCLdrvd66XtTqfb6XS7nWazufHNepJmpqenJycnc7lckiSZTGaogwWAq+yyR8PmZmtze3trZ39ts9Xa2trc2Fh5+aLdzpWTVr6Qz2azL14sP3z44c2btxQDAFyoc4iGubm5+fn5t3+fY33yn0+b23sLq5ut/V6SJJViYfIHM7cnxiqVYqGQXVtbe/H85ZMnX1artXK5fEFjAACS/miYm5vrf+EtO+C8SmJ56dmN6bur263dwkSjURu/UZm7M/7+7Xwm6SRJUq/n19aeP134anb27vT09Nt/OwDgJN+Zaeg/zF/o/EFce3+nkM+lxcZu/la5VMtUCuVatdXrVXO7SWa/XM2Wq6UnXyyvrK5MTk7m85f9bAsAjK4Tj7Lz8/OH3dA/CTHwzEBYHOxy8OrBv4cPB3bvf/41dZLP57ud/bFy4dl2O7PT3dnPt9NMkiRbnWya5PYy1VJpqrmztLy88v57XdEAAGdweMjuf3ig/xj95qPswJTDwPseu+VAcBw7gdH//GtmNaanp9vdvfpYaWd1eydTuVUtbmwlY7lir9Npd/NJkuRuzNamWs1mc3d3t1wuvfHHAQD6DfxP/qQDd3KO92k47emM4MbjE+PbW616uZAkycZu8qyVfrmy/3S9+6KVXW8l662k3U7q5fzi8srz58/POHQAuMbih+/QfP7RNZJH5zEuaAHEeH08SRZrhVIh097cbS+1ssVn7c1OcaKYlnp7pbSTae9UyvnVtP1y5eX9+/cuYgwAQBKMhqNBMHCKof98xPmq1evFfGk/aY9l2vuttWZSXEnTQprvlLLVZL+a7LW3Nna3mtWxUq1eP/fvDgAcOvH0xEkRMDDrcGhgweN5yefzuVw23WlO5LZv9VZvJ9/MZvcmdlbz68/2Fr948sm/nn7+adLZ+8mPfnzvvdlz/+4AwKHvzDQcu1ry6OUPJ1310D/f0H8K49i3PWll5oBisTg1NT7/1dL7U7VqKSmn7Vx3vZLNFLKZTqGzvtucuHnjFx9/9O67PyyVxk73owMAp/FtNLzmyH00Dk56eOzXx75z8FxGqVRs1G7uNP+7svb1/l6nWMrffWdmamqy2+1ubHyzuz+dzWQqY5XK2Fg26zbSAHCBRuDGBpNTkx88+ODzzz5/urBQLuartVq3l2zv7Ha63XqttrK6urS0NDMz4zbSAHAG/RdbJiefIkiGFQ2nWjJZLpfv37s/NTn1+PG/e71eo1HP5Yq5XK4yVm4Wt9aba9ls9uCvXAIAp3XS5Q5Hndt9Gi5UoVBoNBozM3fGKvVqtV6pVBqNRi/NLC0u5vJjMzMzhUJh2GMEgCtuBE5PHCiXy7dvT79cefb48UKn02m1Wq1Wq1ar/fzjD2dm7gx7dABw9Y1MNCRJcuPGxM9++tHXX3+1vPysPjFx5/b03bvvNBoN0wwA8D247NGQyXznmohGo/7gwYMHDx4MazwAcG2NxpoGAGDoRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIyQ97ABfoD7/5YNhDAF5ZWFx8Z3Z22KMAXllYXDzDXlc5Gn7363vDHgLwyqNHmw8f+kjCZfHo0eYZ9nJ6AgAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAICSTpumwxwAAjAAzDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACPkfWPj2SSDbvxAAAAAASUVORK5CYII="
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAKUklEQVR4nO3dS29b6X3A4cM7RZGUPBPJkh1jEDAzk4uBBJgJkm666KJANwVmEQRZ5yME3XSfbOcTZNcuO0AX3fUjxKvUTZCEyVwsWrZlWUNRF4uUThYSZIa6/SVLOqT0PAuDPDwUXwHGeX96zyGZS9M0AQA4Sz7rAQAAk0E0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEQ1Wq1jt147PbTnwUAk0g0vK12ux1/VEMAMLmKWQ9gXPz6N78d2fLvv/h4+G673W61WsMRMHIXAG420XDgT191+/3+4d1SqbS0tHT//v0zn3i0JA5vj3TG/kOHO+w/Orzz2/0GAHC1RMMbm5ubh7dnZmY6nU4kGoadEhDJcQ1h3QKACeKahnMYXhuIzPHnigDFAMCYEw2Xab8qglc7nmtnAMic0xNv1Gq1t/8h+wsG+ykQXIoI7gwA2RINBz75p1ZnaenM3Q7PUETeaRlfckhc0wDA2BMNB/71H99Lkvfe8oeca+JXCQBMFtFwmY6+i/LYN1CctPP1DBIALiaXpmnWYwAAJoB3TwAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACE3IoPd/IZSjC2fDQqjInIXHnzo2HkkOQIBePDt7zCmAjOlU5PANlQ8DBxRAOQAcUAk+jmn54Axo1igHET/A5F0QBkYPjwpCEgc8FrGkQDcN1cmwwTyjUNAEDIzV9pCJ6nAYBbKzhX5tI0va4hAQATzOkJACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQcoui4dGjR1kPAXij0+l0Op2sRwG8ceZEeYuiAQB4G6IBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEFLMewLX6z/95nPUQgAO9Xi9Jknr9VdYDAQ4sL6999NFpO9yuaPiv//1j1kMAgPH1y1MfdXoCAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhFwkGlqt1qWPAwAYc2+i4WgKiAMAuLVaQ/a3FLMdEAAwhlqtVrvdHrl79umJ/b4YaY2jjx7dZ6RQhp87cvv0lwAAxkFopWE4N0bm++HtI/uMFMq5XmL4uQDAOAhdCHnsFD4ytZ85zbfb7cMVhZHbkacDANdmf6Y+tD9NX/CaBosBAHCDXfCahmMdLhUAALfEm2gY6YAz1xIu0A37Tzk8H2G5AgAmyN+dnhjugMh0fsrEP5IU4gAAJsix83guTdPshnStHj169Kv/+DLrUQDA+Prs009OedR3TwAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhBSzHsC1+vm/fDfrIQAHut31JEmazUbWAwEOLHU6p+9wu6Lhp//8nayHABzodDpJkty7dy/rgQAHHj3aOH0HpycAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIuV3fctkf7GU9BC5BqSh2ATJwu6LhZ//231kPgUvw2aefZD0EgNvIX2wAQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABBSzHoA55Om6f6Nfr+/t5f2B4PdwWB3d9Dtdte+fpWkuYWFhbm5uUKhkCRJLpfLdLAAcKNMWDSsr/fWNzc3tnZW13u9jY31tbWVF8/7/UI16RVLxXw+//z58kcfffzOO+8qBgC4XFcSDa1Wq91uX8VP/t3//767+frJy/Xezl6SJLVyae4bi3dnp2q1cqmUX11dff7sxeef/3V6ul6tVq9iAABwa50WDa1Wa/juW3bApZTEcufpnYUHLzd726XZZrM+c6fWujfz/t1iLhkkSdJoFFdXn3315Iv79x8sLCy85WsBAMPOWGkYnuavbv0grr+zVSoW0nJzu/hutVLP1UrV+nRvb2+6sJ3kdqrT+ep05fO/LK+8XJmbmysWJ+zkC+c13LWZ/+cEuPHOMa222+3Dbjh6sD7cMnLs3n/K/qP7/x7eHXn68PaTJoBisbg72Jmqlp5u9nNbu1s7xX6aS5JkY5BPk8Lr3HSlMt/d6iwvr7z/7V3RcLONVOw4RC3AzXaRafXowTo5YZo/3HMkOI491g9vP2kCWFhY6O++bkxVtl5ubuVq706X1zaSqUJ5bzDo7xaTJCncuV+f73W73e3t7Wq1coHfjkkhEQCu2RV+TsN5//KL7DwzO7O50WtUS0mSrG0nT3vpX1d2vnq1+7yXf9VLXvWSfj9pVItLyyvPnj27+NABgCMuuIB/9BrJkfWGK1ornmnMJMlSvVQp5frr2/1OL19+2l8flGfLaWXvdSUd5PpbtWrxZdp/sfLiww8/uPQBMJ6cmwC4BheMhqMH6JFTDMPnIy5RvdEoFys7SX8q19/prXaT8kqaltLioJKfTnamk9f9jbXtje70VKXeaFzuSzOeTjk7BsDlOkc0nBQBJ22/im4oFouFQj7d6s4Wtt/d22oktfv5SnPr6+Lm4PXm1y9Wn+3tvZ6b+8b3vvPdD759/xJfl/FkgQHgOp0RDce+pe3o2x9OetfDcDcMn8I49sdG3j5XLpfn52faX3Ten69PV5Jq2i/svqrlc6V8blAavNruzr5z5x9+/KP33vtWpTJ1xq/OhFMMANfstGg45Yh8NA5Ounvs7ZNWJk4dapIkSaVSbtbf2er+YWX1y53Xg3Kl+OCbi/Pzc7u7u2trX2/vLORzudpUrTY1lc/7GOmb73I/fwyA003eJxnMzc99/+H3//ynP3/15Em1XJyu13f3ks2t7cHubqNeX3n5stPpLC4u+hjpG08iAFyzcYmG+ARQrVY//ODD+bn5x4//b29vr9lsFArlQqFQm6p2yxuvuqv5fH7/Wy4BgEt0hZ/TcHVKpVKz2VxcvDdVa0xPN2q1WrPZ3EtznaWlQnFqcXGxVCplPUYAuGnGZaXhvKrV6t27Cy9Wnj5+/GQwGPR6vV6vV6/Xf/LjjxcX72U9OgC4gSY1GpIkuXNn9oc/+NGXX36xvPy0MTt77+7CgwffbDablhkA4CpMWDTkcn/3nohms/Hw4cOHDx9mNR4AuD0m8poGAOD6iQYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACCkmPUArtVnn36S9RAAYFJZaQAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQEguTdOsxwAATAArDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACPkbSa+Ab4QsX88AAAAASUVORK5CYII="
height="200"
width="700"/>
@@ -5098,23 +5098,48 @@
<tr style="">
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ <img src='plugins/DevicesDetection/images/screens/unknown.gif'>
+ &nbsp;
+ Unknown </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 8
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 40
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 5
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 00:15:01
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 0%
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 0%
+ </td>
+ </tr>
+
+ <tr style="background-color: rgb(249,250,250)">
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
<img src='plugins/DevicesDetection/images/screens/normal.gif'>
&nbsp;
Desktop </td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 10
+ 2
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 43
+ 3
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 4.3
+ 1.5
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 00:12:37
+ 00:03:01
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 10%
+ 50%
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
0%
diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
index e2fc4d6505..f4e7a9afb5 100644
--- a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
+++ b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
@@ -4870,23 +4870,48 @@
<tr style="">
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ <img src='plugins/DevicesDetection/images/screens/unknown.gif'>
+ &nbsp;
+ Unknown </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 8
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 40
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 5
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 00:15:01
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 0%
+ </td>
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+ 0%
+ </td>
+ </tr>
+
+ <tr style="background-color: rgb(249,250,250)">
+ <td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
<img src='plugins/DevicesDetection/images/screens/normal.gif'>
&nbsp;
Desktop </td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 10
+ 2
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 43
+ 3
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 4.3
+ 1.5
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 00:12:37
+ 00:03:01
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
- 10%
+ 50%
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
0%
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index f51bc3e35f..8ca26efcff 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -78,6 +78,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
$fixture = static::$fixture;
}
+ $fixture->testCaseClass = get_called_class();
+
try {
$fixture->performSetUp();
} catch (Exception $e) {
diff --git a/tests/PHPUnit/TestingEnvironment.php b/tests/PHPUnit/TestingEnvironment.php
index df7538c63a..363c8a89b9 100644
--- a/tests/PHPUnit/TestingEnvironment.php
+++ b/tests/PHPUnit/TestingEnvironment.php
@@ -3,6 +3,7 @@
use Piwik\Common;
use Piwik\Config;
use Piwik\Piwik;
+use Piwik\Option;
require_once PIWIK_INCLUDE_PATH . "/core/Config.php";
@@ -61,6 +62,11 @@ class Piwik_TestingEnvironment
$this->behaviorOverrideProperties[$key] = $value;
}
+ public function __isset($name)
+ {
+ return isset($this->behaviorOverrideProperties[$name]);
+ }
+
public function save()
{
$overridePath = PIWIK_INCLUDE_PATH . '/tmp/testingPathOverride.json';
@@ -123,6 +129,12 @@ class Piwik_TestingEnvironment
$manager = \Piwik\Plugin\Manager::getInstance();
$pluginsToLoad = $manager->getPluginsToLoadDuringTests();
+ if (!empty($testingEnvironment->pluginsToLoad)) {
+ $pluginsToLoad = array_unique(array_merge($pluginsToLoad, $testingEnvironment->pluginsToLoad));
+ }
+
+ sort($pluginsToLoad);
+
$config->Plugins = array('Plugins' => $pluginsToLoad);
$trackerPluginsToLoad = array_filter($pluginsToLoad, function ($plugin) use ($manager) {
@@ -151,7 +163,13 @@ class Piwik_TestingEnvironment
}
});
}
- Piwik::addAction('Request.dispatch', function() {
+ Piwik::addAction('Request.dispatch', function() use ($testingEnvironment) {
+ if ($testingEnvironment->optionsOverride) {
+ foreach ($testingEnvironment->optionsOverride as $name => $value) {
+ Option::set($name, $value);
+ }
+ }
+
\Piwik\Plugins\CoreVisualizations\Visualizations\Cloud::$debugDisableShuffle = true;
\Piwik\Visualization\Sparkline::$enableSparklineImages = false;
\Piwik\Plugins\ExampleUI\API::$disableRandomness = true;
diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI
-Subproject 06b7215cfeda6fabd3acee2db22dd7805e14ad5
+Subproject ae51df2e125f4fad3c59ddf623f98dd5251d849
diff --git a/tests/PHPUnit/bootstrap.php b/tests/PHPUnit/bootstrap.php
index 429b3d17e6..ea2d0aa3aa 100644
--- a/tests/PHPUnit/bootstrap.php
+++ b/tests/PHPUnit/bootstrap.php
@@ -27,6 +27,9 @@ if (!defined('PIWIK_INCLUDE_SEARCH_PATH')) {
error_reporting(E_ALL | E_NOTICE);
@date_default_timezone_set('UTC');
+require_once file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
+ ? PIWIK_INCLUDE_PATH . '/vendor/autoload.php' // Piwik is the main project
+ : PIWIK_INCLUDE_PATH . '/../../autoload.php'; // Piwik is installed as a dependency
require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
require_once PIWIK_INCLUDE_PATH . '/core/testMinimumPhpVersion.php';
@@ -38,9 +41,6 @@ require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/ConsoleCommandTestCase.php';
require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/FakeAccess.php';
require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/MockPiwikOption.php';
require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/TestingEnvironment.php';
-require_once file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
- ? PIWIK_INCLUDE_PATH . '/vendor/autoload.php' // Piwik is the main project
- : PIWIK_INCLUDE_PATH . '/../../autoload.php'; // Piwik is installed as a dependency
\Piwik\Profiler::setupProfilerXHProf( $mainRun = true );
diff --git a/tests/PHPUnit/proxy/includes.php b/tests/PHPUnit/proxy/includes.php
index 905fbd0d13..3530b26934 100644
--- a/tests/PHPUnit/proxy/includes.php
+++ b/tests/PHPUnit/proxy/includes.php
@@ -9,6 +9,10 @@ if (!defined('PIWIK_USER_PATH')) {
define('PIWIK_USER_PATH', PIWIK_INCLUDE_PATH);
}
+require_once file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
+ ? PIWIK_INCLUDE_PATH . '/vendor/autoload.php' // Piwik is the main project
+ : PIWIK_INCLUDE_PATH . '/../../autoload.php'; // Piwik is installed as a dependency
+
require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
require_once PIWIK_INCLUDE_PATH . '/core/EventDispatcher.php';
require_once PIWIK_INCLUDE_PATH . '/core/Piwik.php';
diff --git a/tests/PHPUnit/travis.sh b/tests/PHPUnit/travis.sh
index 2ba14958d5..90eff64905 100755
--- a/tests/PHPUnit/travis.sh
+++ b/tests/PHPUnit/travis.sh
@@ -16,6 +16,9 @@ fi
if [ -n "$TEST_SUITE" ]
then
+ echo "Executing tests in test suite $TEST_SUITE..."
+ echo " [ plugin name = $PLUGIN_NAME ]"
+
if [ "$TEST_SUITE" = "AngularJSTests" ]
then
sh ./../angularjs/scripts/travis.sh
diff --git a/tests/lib/screenshot-testing/run-tests.js b/tests/lib/screenshot-testing/run-tests.js
index 62d7a56012..b907339577 100644
--- a/tests/lib/screenshot-testing/run-tests.js
+++ b/tests/lib/screenshot-testing/run-tests.js
@@ -27,6 +27,20 @@ require('./support/mocha-loader');
phantom.injectJs(chaiPath);
require('./support/chai-extras');
+// load & configure resemble (for comparison)
+phantom.injectJs(resemblePath);
+
+resemble.outputSettings({
+ errorColor: {
+ red: 255,
+ green: 0,
+ blue: 0,
+ alpha: 125
+ },
+ errorType: 'movement',
+ transparency: 0.3
+});
+
// run script
if (options['help']) {
app.printHelpAndExit();
diff --git a/tests/lib/screenshot-testing/support/chai-extras.js b/tests/lib/screenshot-testing/support/chai-extras.js
index 1253f8fb13..f2c7f0544d 100644
--- a/tests/lib/screenshot-testing/support/chai-extras.js
+++ b/tests/lib/screenshot-testing/support/chai-extras.js
@@ -108,6 +108,14 @@ function capture(screenName, compareAgainst, selector, pageSetupFn, done) {
done(error);
};
+ var pass = function () {
+ if (options['print-logs']) {
+ console.log(getPageLogsString(pageRenderer.pageLogs, " "));
+ }
+
+ done();
+ };
+
if (!testInfo.processed) {
fail("Failed to generate screenshot to " + screenshotFileName + ".");
return;
@@ -121,16 +129,20 @@ function capture(screenName, compareAgainst, selector, pageSetupFn, done) {
var expected = fs.read(expectedScreenshotPath),
processed = fs.read(processedScreenshotPath);
- if (expected != processed) {
- fail("Processed screenshot does not match expected for " + screenshotFileName + ".");
+ if (processed == expected) {
+ pass();
return;
}
- if (options['print-logs']) {
- console.log(getPageLogsString(pageRenderer.pageLogs, " "));
- }
+ // if the files are not exact, perform a diff to check if they are truly different
+ resemble("file://" + processedScreenshotPath).compareTo("file://" + expectedScreenshotPath).onComplete(function(data) {
+ if (data.misMatchPercentage != 0) {
+ fail("Processed screenshot does not match expected for " + screenshotFileName + ".");
+ return;
+ }
- done();
+ pass();
+ });
}, selector);
} catch (ex) {
var err = new Error(ex.message);
diff --git a/tests/lib/screenshot-testing/support/globals.js b/tests/lib/screenshot-testing/support/globals.js
index 1cd9b782fd..53d8d050e5 100644
--- a/tests/lib/screenshot-testing/support/globals.js
+++ b/tests/lib/screenshot-testing/support/globals.js
@@ -21,6 +21,8 @@ var mochaPath = path.join(testsLibDir, config.mocha, "mocha.js");
var chaiPath = path.join(testsLibDir, config.chai, "chai.js");
+var resemblePath = path.join(testsLibDir, 'resemblejs', 'resemble.js');
+
var expect = function () {
return chai.expect.apply(chai.expect, arguments);
};
diff --git a/tests/lib/screenshot-testing/support/test-environment.js b/tests/lib/screenshot-testing/support/test-environment.js
index e7a0f1f44e..375408e562 100644
--- a/tests/lib/screenshot-testing/support/test-environment.js
+++ b/tests/lib/screenshot-testing/support/test-environment.js
@@ -118,6 +118,13 @@ TestingEnvironment.prototype.executeConsoleCommand = function (command, args, ca
child.on("exit", callback);
};
+TestingEnvironment.prototype.addPluginOnCmdLineToTestEnv = function () {
+ if (options.plugin) {
+ this.pluginsToLoad = [options.plugin];
+ this.save();
+ }
+};
+
var droppedOnce = false;
TestingEnvironment.prototype.setupFixture = function (fixtureClass, done) {
console.log(" Setting up fixture " + fixtureClass + "...");
@@ -140,6 +147,7 @@ TestingEnvironment.prototype.setupFixture = function (fixtureClass, done) {
var self = this;
this.executeConsoleCommand('tests:setup-fixture', args, function (code) {
self.reload();
+ self.addPluginOnCmdLineToTestEnv();
console.log();
diff --git a/tests/resources/Config/common.config.ini.php b/tests/resources/Config/common.config.ini.php
index 572f1a937a..db8cb53d41 100644
--- a/tests/resources/Config/common.config.ini.php
+++ b/tests/resources/Config/common.config.ini.php
@@ -1,6 +1,9 @@
[Category]
key2 = valueCommon
+; This should not trigger an error if INI_SCANNER_RAW is used
+key3 = "${@piwik(crash))}"
+
[GeneralSection]
password = passwordCommonShouldNotBeOverriden
diff --git a/tests/travis/setup_webserver.sh b/tests/travis/setup_webserver.sh
index 6ab7767d80..66916f6f30 100755
--- a/tests/travis/setup_webserver.sh
+++ b/tests/travis/setup_webserver.sh
@@ -27,6 +27,8 @@ fi
USER=$(whoami)
+echo "php-fpm user = $USER"
+
touch "$PHP_FPM_LOG"
# Adjust php-fpm.ini
@@ -46,5 +48,6 @@ sudo cp "$DIR/piwik_nginx.conf" $NGINX_CONF
# Start daemons
echo "Starting php-fpm"
sudo $PHP_FPM_BIN --fpm-config "$DIR/php-fpm.ini"
+sudo chown www-data:www-data ./tests/travis/php-fpm.sock
echo "Starting nginx"
sudo service nginx start
diff --git a/tests/travis/upload_artifacts.sh b/tests/travis/upload_artifacts.sh
index 991b18b515..98a3f4fffa 100755
--- a/tests/travis/upload_artifacts.sh
+++ b/tests/travis/upload_artifacts.sh
@@ -30,7 +30,11 @@ else
base_dir=`pwd`
if [ -n "$PLUGIN_NAME" ];
then
- cd "./plugins/$PLUGIN_NAME/Test/UI"
+ if [ -d "./plugins/$PLUGIN_NAME/Test/UI" ]; then
+ cd "./plugins/$PLUGIN_NAME/Test/UI"
+ else
+ cd "./plugins/$PLUGIN_NAME/tests/UI"
+ fi
else
cd ./tests/PHPUnit/UI
fi