update Piwik to version 2.16 (fixes #91)

This commit is contained in:
oliver 2016-04-10 18:55:57 +02:00
commit 47263617c5
58 changed files with 418860 additions and 226988 deletions

View file

@ -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
@ -27,10 +27,10 @@ use Piwik\Tracker\Cache;
class Config
{
private $properties = array(
'useAnonymizedIpForVisitEnrichment' => array('type' => 'boolean', 'default' => true),
'ipAddressMaskLength' => array('type' => 'integer', 'default' => 1),
'useAnonymizedIpForVisitEnrichment' => array('type' => 'boolean', 'default' => false),
'ipAddressMaskLength' => array('type' => 'integer', 'default' => 2),
'doNotTrackEnabled' => array('type' => 'boolean', 'default' => true),
'ipAnonymizerEnabled' => array('type' => 'boolean', 'default' => false),
'ipAnonymizerEnabled' => array('type' => 'boolean', 'default' => true),
);
public function __set($name, $value)
@ -64,6 +64,7 @@ class Config
if (array_key_exists($name, $cache)) {
$value = $cache[$name];
settype($value, $config['type']);
return $value;
}

View file

@ -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
@ -10,16 +10,16 @@ namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\Config as PiwikConfig;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
use Piwik\MetricsFormatter;
use Piwik\Metrics\Formatter;
use Piwik\Nonce;
use Piwik\Notification;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\DBStats\MySQLMetadataProvider;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\TaskScheduler;
use Piwik\Scheduler\Scheduler;
use Piwik\View;
/**
@ -133,7 +133,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
if (Piwik::hasUserSuperUserAccess()) {
$view->deleteData = $this->getDeleteDataInfo();
$view->anonymizeIP = $this->getAnonymizeIPInfo();
$view->dntSupport = DoNotTrackHeaderChecker::isActive();
$dntChecker = new DoNotTrackHeaderChecker();
$view->dntSupport = $dntChecker->isActive();
$view->canDeleteLogActions = Db::isLockPrivilegeGranted();
$view->dbUser = PiwikConfig::getInstance()->database['username'];
$view->deactivateNonce = Nonce::getNonce(self::DEACTIVATE_DNT_NONCE);
@ -150,6 +151,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
*/
public function executeDataPurge()
{
$this->checkDataPurgeAdminSettingsIsEnabled();
Piwik::checkUserHasSuperUserAccess();
$this->checkTokenInUrl();
@ -163,8 +166,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$settings = PrivacyManager::getPurgeDataSettings();
if ($settings['delete_logs_enable']) {
$logDataPurger = LogDataPurger::make($settings);
$logDataPurger->purgeData();
/** @var LogDataPurger $logDataPurger */
$logDataPurger = StaticContainer::get('Piwik\Plugins\PrivacyManager\LogDataPurger');
$logDataPurger->purgeData($settings['delete_logs_older_than']);
}
if ($settings['delete_reports_enable']) {
$reportsPurger = ReportsPurger::make($settings, PrivacyManager::getAllMetricsToKeep());
@ -186,7 +190,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$doDatabaseSizeEstimate = PiwikConfig::getInstance()->Deletelogs['enable_auto_database_size_estimate'];
// determine the DB size & purged DB size
$metadataProvider = new MySQLMetadataProvider();
$metadataProvider = StaticContainer::get('Piwik\Plugins\DBStats\MySQLMetadataProvider');
$tableStatuses = $metadataProvider->getAllTablesStatus();
$totalBytes = 0;
@ -194,8 +198,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$totalBytes += $status['Data_length'] + $status['Index_length'];
}
$formatter = new Formatter();
$result = array(
'currentSize' => MetricsFormatter::getPrettySizeFromBytes($totalBytes)
'currentSize' => $formatter->getPrettySizeFromBytes($totalBytes)
);
// if the db size estimate feature is enabled, get the estimate
@ -222,8 +227,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
}
}
$result['sizeAfterPurge'] = MetricsFormatter::getPrettySizeFromBytes($totalAfterPurge);
$result['spaceSaved'] = MetricsFormatter::getPrettySizeFromBytes($totalBytes - $totalAfterPurge);
$result['sizeAfterPurge'] = $formatter->getPrettySizeFromBytes($totalAfterPurge);
$result['spaceSaved'] = $formatter->getPrettySizeFromBytes($totalBytes - $totalAfterPurge);
}
return $result;
@ -246,12 +251,14 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
{
Piwik::checkUserHasSuperUserAccess();
$deleteDataInfos = array();
$taskScheduler = new TaskScheduler();
$deleteDataInfos["config"] = PrivacyManager::getPurgeDataSettings();
$deleteDataInfos["deleteTables"] =
"<br/>" . implode(", ", LogDataPurger::getDeleteTableLogTables());
$scheduleTimetable = $taskScheduler->getScheduledTimeForMethod("PrivacyManager", "deleteLogTables");
/** @var Scheduler $scheduler */
$scheduler = StaticContainer::getContainer()->get('Piwik\Scheduler\Scheduler');
$scheduleTimetable = $scheduler->getScheduledTimeForMethod("PrivacyManager", "deleteLogTables");
$optionTable = Option::get(self::OPTION_LAST_DELETE_PIWIK_LOGS);
@ -272,7 +279,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$deleteDataInfos["nextScheduleTime"] = $nextPossibleSchedule;
} else {
$deleteDataInfos["lastRun"] = $optionTable;
$deleteDataInfos["lastRunPretty"] = Date::factory((int)$optionTable)->getLocalized('%day% %shortMonth% %longYear%');
$deleteDataInfos["lastRunPretty"] = Date::factory((int)$optionTable)->getLocalized(Date::DATE_FORMAT_SHORT);
//Calculate next run based on last run + interval
$nextScheduleRun = (int)($deleteDataInfos["lastRun"] + $deleteDataInfos["config"]["delete_logs_schedule_lowest_interval"] * 24 * 60 * 60);
@ -285,7 +292,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
}
}
$deleteDataInfos["nextRunPretty"] = MetricsFormatter::getPrettyTimeFromSeconds($deleteDataInfos["nextScheduleTime"] - time());
$formatter = new Formatter();
$deleteDataInfos["nextRunPretty"] = $formatter->getPrettyTimeFromSeconds($deleteDataInfos["nextScheduleTime"] - time());
return $deleteDataInfos;
}
@ -295,7 +304,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
Piwik::checkUserHasSuperUserAccess();
Nonce::checkNonce(self::DEACTIVATE_DNT_NONCE);
DoNotTrackHeaderChecker::deactivate();
$dntChecker = new DoNotTrackHeaderChecker();
$dntChecker->deactivate();
$this->redirectToIndex('PrivacyManager', 'privacySettings');
}
@ -305,7 +315,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
Piwik::checkUserHasSuperUserAccess();
Nonce::checkNonce(self::ACTIVATE_DNT_NONCE);
DoNotTrackHeaderChecker::activate();
$dntChecker = new DoNotTrackHeaderChecker();
$dntChecker->activate();
$this->redirectToIndex('PrivacyManager', 'privacySettings');
}

View file

@ -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
@ -14,37 +14,35 @@ use Piwik\Tracker\Request;
/**
* Excludes visits where user agent's request contains either:
*
*
* - X-Do-Not-Track header (used by AdBlockPlus and NoScript)
* - DNT header (used by Mozilla)
*
*
* Note: visits from Internet Explorer and other browsers that have DoNoTrack enabled by default will be tracked anyway.
*/
class DoNotTrackHeaderChecker
{
/**
* @param Config $config
*/
public function __construct($config = null)
{
$this->config = $config ?: new Config();
}
/**
* Checks for DoNotTrack headers and if found, sets `$exclude` to `true`.
*/
public function checkHeaderInTracker(&$exclude)
{
if (!$this->isActive()
|| $exclude
) {
if ($exclude) {
Common::printDebug("Visit is already excluded, no need to check DoNotTrack support.");
return;
}
if ((isset($_SERVER['HTTP_X_DO_NOT_TRACK']) && $_SERVER['HTTP_X_DO_NOT_TRACK'] === '1')
|| (isset($_SERVER['HTTP_DNT']) && substr($_SERVER['HTTP_DNT'], 0, 1) === '1')
) {
$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...");
return;
}
$exclude = $this->isDoNotTrackFound();
$exclude = true;
Common::printDebug("DoNotTrack found.");
if($exclude) {
$trackingCookie = IgnoreCookie::getTrackingCookie();
$trackingCookie->delete();
@ -56,22 +54,47 @@ class DoNotTrackHeaderChecker
}
}
/**
* @return bool
*/
public function isDoNotTrackFound()
{
if (!$this->isActive()) {
Common::printDebug("DoNotTrack support is not enabled, skip check");
return false;
}
if (!$this->isHeaderDntFound()) {
Common::printDebug("DoNotTrack header not found");
return false;
}
$request = new Request($_REQUEST);
$userAgent = $request->getUserAgent();
if ($this->isUserAgentWithDoNotTrackAlwaysEnabled($userAgent)) {
Common::printDebug("INTERNET EXPLORER enable DoNotTrack by default; so Piwik ignores DNT IE browsers...");
return false;
}
Common::printDebug("DoNotTrack header found!");
return true;
}
/**
* Deactivates DoNotTrack header checking. This function will not be called by the Tracker.
*/
public static function deactivate()
public function deactivate()
{
$config = new Config();
$config->doNotTrackEnabled = false;
$this->config->doNotTrackEnabled = false;
}
/**
* Activates DoNotTrack header checking. This function will not be called by the Tracker.
*/
public static function activate()
public function activate()
{
$config = new Config();
$config->doNotTrackEnabled = true;
$this->config->doNotTrackEnabled = true;
}
/**
@ -79,9 +102,53 @@ class DoNotTrackHeaderChecker
*
* @return bool
*/
public static function isActive()
public function isActive()
{
$config = new Config();
return $config->doNotTrackEnabled;
return $this->config->doNotTrackEnabled;
}
/**
* @return bool
*/
protected function isHeaderDntFound()
{
return (isset($_SERVER['HTTP_X_DO_NOT_TRACK']) && $_SERVER['HTTP_X_DO_NOT_TRACK'] === '1')
|| (isset($_SERVER['HTTP_DNT']) && substr($_SERVER['HTTP_DNT'], 0, 1) === '1');
}
/**
*
* @param $userAgent
* @return bool
*/
protected function isUserAgentWithDoNotTrackAlwaysEnabled($userAgent)
{
$browsersWithDnt = $this->getBrowsersWithDNTAlwaysEnabled();
foreach($browsersWithDnt as $userAgentBrowserFragment) {
if (stripos($userAgent, $userAgentBrowserFragment) !== false) {
return true;
}
}
return false;
}
/**
* Some browsers have DNT enabled by default. For those we will ignore DNT and always track those users.
*
* @return array
*/
protected function getBrowsersWithDNTAlwaysEnabled()
{
return array(
// IE
'MSIE',
'Trident',
// Maxthon
'Maxthon',
// Epiphany - https://github.com/piwik/piwik/issues/8682
'Epiphany',
);
}
}

View file

@ -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
@ -9,7 +9,7 @@
namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\IP;
use Piwik\Network\IP;
/**
* Anonymize visitor IP addresses to comply with the privacy laws/guidelines in countries, such as Germany.
@ -19,50 +19,36 @@ class IPAnonymizer
/**
* Internal function to mask portions of the visitor IP address
*
* @param string $ip IP address in network address format
* @param IP $ip
* @param int $maskLength Number of octets to reset
* @return string
* @return IP
*/
public static function applyIPMask($ip, $maskLength)
public static function applyIPMask(IP $ip, $maskLength)
{
// IPv4 or mapped IPv4 in IPv6
if (IP::isIPv4($ip)) {
$i = strlen($ip);
if ($maskLength > $i) {
$maskLength = $i;
}
$newIpObject = $ip->anonymize($maskLength);
while ($maskLength-- > 0) {
$ip[--$i] = chr(0);
}
} else {
$masks = array(
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
'ffff:ffff:ffff:ffff::',
'ffff:ffff:ffff:0000::',
'ffff:ff00:0000:0000::'
);
$ip = $ip & pack('a16', inet_pton($masks[$maskLength]));
}
return $ip;
return $newIpObject;
}
/**
* Hook on Tracker.Visit.setVisitorIp to anomymize visitor IP addresses
* @param string $ip IP address in binary format (network format)
*/
public function setVisitorIpAddress(&$ip)
{
$ipObject = IP::fromBinaryIP($ip);
if (!$this->isActive()) {
Common::printDebug("Visitor IP was _not_ anonymized: ". IP::N2P($ip));
Common::printDebug("Visitor IP was _not_ anonymized: ". $ipObject->toString());
return;
}
$originalIp = $ip;
$privacyConfig = new Config();
$ip = self::applyIPMask($ip, $privacyConfig->ipAddressMaskLength);
Common::printDebug("Visitor IP (was: ". IP::N2P($originalIp) .") has been anonymized: ". IP::N2P($ip));
$newIpObject = self::applyIPMask($ipObject, $privacyConfig->ipAddressMaskLength);
$ip = $newIpObject->toBinary();
Common::printDebug("Visitor IP (was: ". $ipObject->toString() .") has been anonymized: ". $newIpObject->toString());
}
/**

View file

@ -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
@ -9,46 +9,43 @@
namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\DataAccess\RawLogDao;
use Piwik\Date;
use Piwik\Db;
use Piwik\Log;
use Piwik\Piwik;
use Piwik\LogDeleter;
/**
* Purges the log_visit, log_conversion and related tables of old visit data.
*/
class LogDataPurger
{
const TEMP_TABLE_NAME = 'tmp_log_actions_to_keep';
/**
* The max set of rows each table scan select should query at one time.
*/
public static $selectSegmentSize = 100000;
/**
* The number of days after which log entries are considered old.
* LogDeleter service used to delete visits.
*
* @var LogDeleter
*/
private $deleteLogsOlderThan;
private $logDeleter;
/**
* The number of rows to delete per DELETE query.
* DAO class that is used to delete unused actions.
*
* @var RawLogDao
*/
private $maxRowsToDeletePerQuery;
private $rawLogDao;
/**
* Constructor.
*
* @param int $deleteLogsOlderThan The number of days after which log entires are considered old.
* Visits and related data whose age is greater than this number
* will be purged.
* @param int $maxRowsToDeletePerQuery The maximum number of rows to delete in one query. Used to
* make sure log tables aren't locked for too long.
*/
public function __construct($deleteLogsOlderThan, $maxRowsToDeletePerQuery)
public function __construct(LogDeleter $logDeleter, RawLogDao $rawLogDao)
{
$this->deleteLogsOlderThan = $deleteLogsOlderThan;
$this->maxRowsToDeletePerQuery = $maxRowsToDeletePerQuery;
$this->logDeleter = $logDeleter;
$this->rawLogDao = $rawLogDao;
}
/**
@ -58,30 +55,21 @@ class LogDataPurger
* - log_conversion
* - log_conversion_item
* - log_action
*
* @param int $deleteLogsOlderThan The number of days after which log entires are considered old.
* Visits and related data whose age is greater than this number
* will be purged.
*/
public function purgeData()
public function purgeData($deleteLogsOlderThan)
{
$maxIdVisit = $this->getDeleteIdVisitOffset();
// break if no ID was found (nothing to delete for given period)
if (empty($maxIdVisit)) {
return;
}
$dateUpperLimit = Date::factory("today")->subDay($deleteLogsOlderThan);
$this->logDeleter->deleteVisitsFor($start = null, $dateUpperLimit->getDatetime());
$logTables = self::getDeleteTableLogTables();
// delete data from log tables
$where = "WHERE idvisit <= ?";
foreach ($logTables as $logTable) {
// deleting from log_action must be handled differently, so we do it later
if ($logTable != Common::prefixTable('log_action')) {
Db::deleteAllRows($logTable, $where, "idvisit ASC", $this->maxRowsToDeletePerQuery, array($maxIdVisit));
}
}
// delete unused actions from the log_action table (but only if we can lock tables)
if (Db::isLockPrivilegeGranted()) {
$this->purgeUnusedLogActions();
$this->rawLogDao->deleteUnusedLogActions();
} else {
$logMessage = get_class($this) . ": LOCK TABLES privilege not granted; skipping unused actions purge";
Log::warning($logMessage);
@ -97,14 +85,20 @@ class LogDataPurger
* This function returns an array that maps table names with the number of rows
* that will be deleted.
*
* @param int $deleteLogsOlderThan The number of days after which log entires are considered old.
* Visits and related data whose age is greater than this number
* will be purged.
* @return array
*
* TODO: purge estimate uses max idvisit w/ time, but purge does not, so estimate may be less accurate.
* to be more accurate, it should use the same strategy as purgeData(), but this could be very slow.
*/
public function getPurgeEstimate()
public function getPurgeEstimate($deleteLogsOlderThan)
{
$result = array();
// deal w/ log tables that will be purged
$maxIdVisit = $this->getDeleteIdVisitOffset();
$maxIdVisit = $this->getDeleteIdVisitOffset($deleteLogsOlderThan);
if (!empty($maxIdVisit)) {
foreach ($this->getDeleteTableLogTables() as $table) {
// getting an estimate for log_action is not supported since it can take too long
@ -120,34 +114,11 @@ class LogDataPurger
return $result;
}
/**
* Safely delete all unused log_action rows.
*/
private function purgeUnusedLogActions()
{
$this->createTempTable();
// get current max ID in log tables w/ idaction references.
$maxIds = $this->getMaxIdsInLogTables();
// do large insert (inserting everything before maxIds) w/o locking tables...
$this->insertActionsToKeep($maxIds, $deleteOlderThanMax = true);
// ... then do small insert w/ locked tables to minimize the amount of time tables are locked.
$this->lockLogTables();
$this->insertActionsToKeep($maxIds, $deleteOlderThanMax = false);
// delete before unlocking tables so there's no chance a new log row that references an
// unused action will be inserted.
$this->deleteUnusedActions();
Db::unlockAllTables();
}
/**
* get highest idVisit to delete rows from
* @return string
*/
private function getDeleteIdVisitOffset()
private function getDeleteIdVisitOffset($deleteLogsOlderThan)
{
$logVisit = Common::prefixTable("log_visit");
@ -158,7 +129,7 @@ class LogDataPurger
}
// select highest idvisit to delete from
$dateStart = Date::factory("today")->subDay($this->deleteLogsOlderThan);
$dateStart = Date::factory("today")->subDay($deleteLogsOlderThan);
$sql = "SELECT idvisit
FROM $logVisit
WHERE '" . $dateStart->toString('Y-m-d H:i:s') . "' > visit_last_action_time
@ -173,129 +144,7 @@ class LogDataPurger
private function getLogTableDeleteCount($table, $maxIdVisit)
{
$sql = "SELECT COUNT(*) FROM $table WHERE idvisit <= ?";
return (int)Db::fetchOne($sql, array($maxIdVisit));
}
private function createTempTable()
{
$sql = "CREATE TEMPORARY TABLE " . Common::prefixTable(self::TEMP_TABLE_NAME) . " (
idaction INT(11),
PRIMARY KEY (idaction)
)";
Db::query($sql);
}
private function getMaxIdsInLogTables()
{
$tables = array('log_conversion', 'log_link_visit_action', 'log_visit', 'log_conversion_item');
$idColumns = $this->getTableIdColumns();
$result = array();
foreach ($tables as $table) {
$idCol = $idColumns[$table];
$result[$table] = Db::fetchOne("SELECT MAX($idCol) FROM " . Common::prefixTable($table));
}
return $result;
}
private function insertActionsToKeep($maxIds, $olderThan = true)
{
$tempTableName = Common::prefixTable(self::TEMP_TABLE_NAME);
$idColumns = $this->getTableIdColumns();
foreach ($this->getIdActionColumns() as $table => $columns) {
$idCol = $idColumns[$table];
foreach ($columns as $col) {
$select = "SELECT $col FROM " . Common::prefixTable($table) . " WHERE $idCol >= ? AND $idCol < ?";
$sql = "INSERT IGNORE INTO $tempTableName $select";
if ($olderThan) {
$start = 0;
$finish = $maxIds[$table];
} else {
$start = $maxIds[$table];
$finish = Db::fetchOne("SELECT MAX($idCol) FROM " . Common::prefixTable($table));
}
Db::segmentedQuery($sql, $start, $finish, self::$selectSegmentSize);
}
}
// allow code to be executed after data is inserted. for concurrency testing purposes.
if ($olderThan) {
/**
* @ignore
*/
Piwik::postEvent("LogDataPurger.ActionsToKeepInserted.olderThan");
} else {
/**
* @ignore
*/
Piwik::postEvent("LogDataPurger.ActionsToKeepInserted.newerThan");
}
}
private function lockLogTables()
{
Db::lockTables(
$readLocks = Common::prefixTables('log_conversion',
'log_link_visit_action',
'log_visit',
'log_conversion_item'),
$writeLocks = Common::prefixTables('log_action')
);
}
private function deleteUnusedActions()
{
list($logActionTable, $tempTableName) = Common::prefixTables("log_action", self::TEMP_TABLE_NAME);
$deleteSql = "DELETE LOW_PRIORITY QUICK IGNORE $logActionTable
FROM $logActionTable
LEFT JOIN $tempTableName tmp ON tmp.idaction = $logActionTable.idaction
WHERE tmp.idaction IS NULL";
Db::query($deleteSql);
}
private function getIdActionColumns()
{
return array(
'log_link_visit_action' => array('idaction_url',
'idaction_url_ref',
'idaction_name',
'idaction_name_ref',
'idaction_event_category',
'idaction_event_action'
),
'log_conversion' => array('idaction_url'),
'log_visit' => array('visit_exit_idaction_url',
'visit_exit_idaction_name',
'visit_entry_idaction_url',
'visit_entry_idaction_name'),
'log_conversion_item' => array('idaction_sku',
'idaction_name',
'idaction_category',
'idaction_category2',
'idaction_category3',
'idaction_category4',
'idaction_category5')
);
}
private function getTableIdColumns()
{
return array(
'log_link_visit_action' => 'idlink_va',
'log_conversion' => 'idvisit',
'log_visit' => 'idvisit',
'log_conversion_item' => 'idvisit'
);
return (int) Db::fetchOne($sql, array($maxIdVisit));
}
// let's hardcode, since these are not dynamically created tables
@ -310,25 +159,4 @@ class LogDataPurger
}
return $result;
}
/**
* Utility function. Creates a new instance of LogDataPurger with the supplied array
* of settings.
*
* $settings must contain values for the following keys:
* - 'delete_logs_older_than': The number of days after which log entries are considered
* old.
* - 'delete_logs_max_rows_per_query': Max number of rows to DELETE in one query.
*
* @param array $settings Array of settings
* @param bool $useRealTable
* @return \Piwik\Plugins\PrivacyManager\LogDataPurger
*/
public static function make($settings, $useRealTable = false)
{
return new LogDataPurger(
$settings['delete_logs_older_than'],
$settings['delete_logs_max_rows_per_query']
);
}
}

View file

@ -0,0 +1,24 @@
<?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\Plugins\PrivacyManager;
use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
class Menu extends \Piwik\Plugin\Menu
{
public function configureAdminMenu(MenuAdmin $menu)
{
if (Piwik::isUserHasSomeAdminAccess()) {
$menu->addSettingsItem('PrivacyManager_MenuPrivacySettings',
$this->urlForAction('privacySettings'),
$order = 9);
}
}
}

View file

@ -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
@ -8,28 +8,24 @@
*/
namespace Piwik\Plugins\PrivacyManager;
use Exception;
use HTML_QuickForm2_DataSource_Array;
use Piwik\Common;
use Piwik\Config as PiwikConfig;
use Piwik\Container\StaticContainer;
use Piwik\DataTable\DataTableInterface;
use Piwik\Date;
use Piwik\Db;
use Piwik\Menu\MenuAdmin;
use Piwik\Metrics;
use Piwik\Option;
use Piwik\Period\Range;
use Piwik\Period;
use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugins\Goals\Archiver;
use Piwik\ScheduledTask;
use Piwik\ScheduledTime;
use Piwik\Plugins\Installation\FormDefaultSettings;
use Piwik\Site;
use Piwik\Tracker\GoalManager;
require_once PIWIK_INCLUDE_PATH . '/plugins/PrivacyManager/LogDataPurger.php';
require_once PIWIK_INCLUDE_PATH . '/plugins/PrivacyManager/ReportsPurger.php';
/**
* Specifically include this for Tracker API (which does not use autoloader)
*/
@ -38,7 +34,7 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/PrivacyManager/IPAnonymizer.php';
/**
*/
class PrivacyManager extends \Piwik\Plugin
class PrivacyManager extends Plugin
{
const OPTION_LAST_DELETE_PIWIK_LOGS = "lastDelete_piwik_logs";
const OPTION_LAST_DELETE_PIWIK_REPORTS = 'lastDelete_piwik_reports';
@ -134,17 +130,17 @@ class PrivacyManager extends \Piwik\Plugin
}
/**
* @see Piwik\Plugin::getListHooksRegistered
* @see Piwik\Plugin::registerEvents
*/
public function getListHooksRegistered()
public function registerEvents()
{
return array(
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'Menu.Admin.addItems' => 'addMenu',
'TaskScheduler.getScheduledTasks' => 'getScheduledTasks',
'Tracker.setTrackerCacheGeneral' => 'setTrackerCacheGeneral',
'Tracker.isExcludedVisit' => array($this->dntChecker, 'checkHeaderInTracker'),
'Tracker.setVisitorIp' => array($this->ipAnonymizer, 'setVisitorIpAddress'),
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'Tracker.setTrackerCacheGeneral' => 'setTrackerCacheGeneral',
'Tracker.isExcludedVisit' => array($this->dntChecker, 'checkHeaderInTracker'),
'Tracker.setVisitorIp' => array($this->ipAnonymizer, 'setVisitorIpAddress'),
'Installation.defaultSettingsForm.init' => 'installationFormInit',
'Installation.defaultSettingsForm.submit' => 'installationFormSubmit',
);
}
@ -154,33 +150,55 @@ class PrivacyManager extends \Piwik\Plugin
$cacheContent = $config->setTrackerCacheGeneral($cacheContent);
}
public function getScheduledTasks(&$tasks)
{
// both tasks are low priority so they will execute after most others, but not lowest, so
// they will execute before the optimize tables task
$purgeReportDataTask = new ScheduledTask(
$this, 'deleteReportData', null, ScheduledTime::factory('daily'), ScheduledTask::LOW_PRIORITY
);
$tasks[] = $purgeReportDataTask;
$purgeLogDataTask = new ScheduledTask(
$this, 'deleteLogData', null, ScheduledTime::factory('daily'), ScheduledTask::LOW_PRIORITY
);
$tasks[] = $purgeLogDataTask;
}
public function getJsFiles(&$jsFiles)
{
$jsFiles[] = "plugins/PrivacyManager/javascripts/privacySettings.js";
}
function addMenu()
/**
* Customize the Installation "default settings" form.
*
* @param FormDefaultSettings $form
*/
public function installationFormInit(FormDefaultSettings $form)
{
MenuAdmin::addEntry('PrivacyManager_MenuPrivacySettings',
array('module' => 'PrivacyManager', 'action' => 'privacySettings'),
Piwik::isUserHasSomeAdminAccess(),
$order = 7);
$form->addElement('checkbox', 'do_not_track', null,
array(
'content' => '<div class="form-help">' . Piwik::translate('PrivacyManager_DoNotTrack_EnabledMoreInfo') . '</div> &nbsp;&nbsp;' . Piwik::translate('PrivacyManager_DoNotTrack_Enable')
));
$form->addElement('checkbox', 'anonymise_ip', null,
array(
'content' => '<div class="form-help">' . Piwik::translate('PrivacyManager_AnonymizeIpExtendedHelp', array('213.34.51.91', '213.34.0.0')) . '</div> &nbsp;&nbsp;' . Piwik::translate('PrivacyManager_AnonymizeIpInlineHelp')
));
// default values
$form->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
'do_not_track' => $this->dntChecker->isActive(),
'anonymise_ip' => IPAnonymizer::isActive(),
)));
}
/**
* Process the submit on the Installation "default settings" form.
*
* @param FormDefaultSettings $form
*/
public function installationFormSubmit(FormDefaultSettings $form)
{
$doNotTrack = (bool) $form->getSubmitValue('do_not_track');
$dntChecker = new DoNotTrackHeaderChecker();
if ($doNotTrack) {
$dntChecker->activate();
} else {
$dntChecker->deactivate();
}
$anonymiseIp = (bool) $form->getSubmitValue('anonymise_ip');
if ($anonymiseIp) {
IPAnonymizer::activate();
} else {
IPAnonymizer::deactivate();
}
}
/**
@ -304,7 +322,9 @@ class PrivacyManager extends \Piwik\Plugin
Option::set(self::OPTION_LAST_DELETE_PIWIK_LOGS, $lastDeleteDate);
// execute the purge
LogDataPurger::make($settings)->purgeData();
/** @var LogDataPurger $logDataPurger */
$logDataPurger = StaticContainer::get('Piwik\Plugins\PrivacyManager\LogDataPurger');
$logDataPurger->purgeData($settings['delete_logs_older_than']);
return true;
}
@ -329,8 +349,9 @@ class PrivacyManager extends \Piwik\Plugin
$result = array();
if ($settings['delete_logs_enable']) {
$logDataPurger = LogDataPurger::make($settings);
$result = array_merge($result, $logDataPurger->getPurgeEstimate());
/** @var LogDataPurger $logDataPurger */
$logDataPurger = StaticContainer::get('Piwik\Plugins\PrivacyManager\LogDataPurger');
$result = array_merge($result, $logDataPurger->getPurgeEstimate($settings['delete_logs_older_than']));
}
if ($settings['delete_reports_enable']) {
@ -383,7 +404,7 @@ class PrivacyManager extends \Piwik\Plugin
*/
private static function getMetricsToKeep()
{
return array('nb_uniq_visitors', 'nb_visits', 'nb_actions', 'max_actions',
return array('nb_uniq_visitors', 'nb_visits', 'nb_users', 'nb_actions', 'max_actions',
'sum_visit_length', 'bounce_count', 'nb_visits_converted', 'nb_conversions',
'revenue', 'quantity', 'price', 'orders');
}

View file

@ -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
@ -8,6 +8,7 @@
*/
namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
use Piwik\Db;
@ -80,12 +81,12 @@ class ReportsPurger
public function __construct($deleteReportsOlderThan, $keepBasicMetrics, $reportPeriodsToKeep,
$keepSegmentReports, $metricsToKeep, $maxRowsToDeletePerQuery)
{
$this->deleteReportsOlderThan = $deleteReportsOlderThan;
$this->keepBasicMetrics = $keepBasicMetrics;
$this->deleteReportsOlderThan = (int) $deleteReportsOlderThan;
$this->keepBasicMetrics = (bool) $keepBasicMetrics;
$this->reportPeriodsToKeep = $reportPeriodsToKeep;
$this->keepSegmentReports = $keepSegmentReports;
$this->keepSegmentReports = (bool) $keepSegmentReports;
$this->metricsToKeep = $metricsToKeep;
$this->maxRowsToDeletePerQuery = $maxRowsToDeletePerQuery;
$this->maxRowsToDeletePerQuery = (int) $maxRowsToDeletePerQuery;
}
/**
@ -102,44 +103,50 @@ class ReportsPurger
*/
public function purgeData($optimize = false)
{
// find archive tables to purge
list($oldNumericTables, $oldBlobTables) = $this->getArchiveTablesToPurge();
// process blob tables first, since archive status is stored in the numeric archives
if (!empty($oldBlobTables)) {
// if no reports should be kept, drop tables, otherwise drop individual reports
if (empty($this->reportPeriodsToKeep) && !$this->keepSegmentReports) {
Db::dropTables($oldBlobTables);
} else {
foreach ($oldBlobTables as $table) {
$where = $this->getBlobTableWhereExpr($oldNumericTables, $table);
if (!empty($where)) {
$where = "WHERE $where";
}
Db::deleteAllRows($table, $where, "idarchive ASC", $this->maxRowsToDeletePerQuery);
foreach ($oldBlobTables as $table) {
$where = $this->getBlobTableWhereExpr($oldNumericTables, $table);
if (!empty($where)) {
$where = "WHERE $where";
}
if ($optimize) {
Db::optimizeTables($oldBlobTables);
}
Db::deleteAllRows($table, $where, "idarchive ASC", $this->maxRowsToDeletePerQuery);
}
if ($optimize) {
Db::optimizeTables($oldBlobTables);
}
}
// deal with numeric tables
$this->segmentArchiveIds = null;
if (!empty($oldNumericTables)) {
// if keep_basic_metrics is set, empty all numeric tables of metrics to purge
if ($this->keepBasicMetrics == 1 && !empty($this->metricsToKeep)) {
$where = "WHERE name NOT IN ('" . implode("','", $this->metricsToKeep) . "') AND name NOT LIKE 'done%'";
foreach ($oldNumericTables as $table) {
Db::deleteAllRows($table, $where, "idarchive ASC", $this->maxRowsToDeletePerQuery);
foreach ($oldNumericTables as $table) {
$conditions = array("name NOT LIKE 'done%'");
$bind = array();
if ($this->keepBasicMetrics && !empty($this->metricsToKeep)) {
$metricFields = Common::getSqlStringFieldsArray($this->metricsToKeep);
$bind = $this->metricsToKeep;
$conditions[] = sprintf("name NOT IN (%s)", $metricFields);
}
if ($optimize) {
Db::optimizeTables($oldNumericTables);
$keepWhere = $this->getBlobTableWhereExpr($oldNumericTables, $table);
if (!empty($keepWhere)) {
$conditions[] = $keepWhere;
}
} else // drop numeric tables
{
Db::dropTables($oldNumericTables);
$where = 'WHERE ' . implode(' AND ', $conditions);
Db::deleteAllRows($table, $where, "idarchive ASC", $this->maxRowsToDeletePerQuery, $bind);
}
if ($optimize) {
Db::optimizeTables($oldNumericTables);
}
}
}
@ -177,7 +184,7 @@ class ReportsPurger
}
// deal w/ numeric tables
if ($this->keepBasicMetrics == 1) {
if ($this->keepBasicMetrics) {
// figure out which rows will be deleted
foreach ($oldNumericTables as $table) {
$rowCount = $this->getNumericTableDeleteCount($table);
@ -253,12 +260,11 @@ class ReportsPurger
{
$maxIdArchive = Db::fetchOne("SELECT MAX(idarchive) FROM $table");
$sql = "SELECT COUNT(*)
FROM $table
WHERE name NOT IN ('" . implode("','", $this->metricsToKeep) . "')
AND name NOT LIKE 'done%'
AND idarchive >= ?
AND idarchive < ?";
$sql = "SELECT COUNT(*) FROM $table
WHERE name NOT IN ('" . implode("','", $this->metricsToKeep) . "')
AND name NOT LIKE 'done%'
AND idarchive >= ?
AND idarchive < ?";
$segments = Db::segmentedFetchOne($sql, 0, $maxIdArchive, self::$selectSegmentSize);
return array_sum($segments);
@ -268,11 +274,10 @@ class ReportsPurger
{
$maxIdArchive = Db::fetchOne("SELECT MAX(idarchive) FROM $table");
$sql = "SELECT COUNT(*)
FROM $table
WHERE " . $this->getBlobTableWhereExpr($oldNumericTables, $table) . "
AND idarchive >= ?
AND idarchive < ?";
$sql = "SELECT COUNT(*) FROM $table
WHERE " . $this->getBlobTableWhereExpr($oldNumericTables, $table) . "
AND idarchive >= ?
AND idarchive < ?";
$segments = Db::segmentedFetchOne($sql, 0, $maxIdArchive, self::$selectSegmentSize);
return array_sum($segments);
@ -289,10 +294,12 @@ class ReportsPurger
// if not keeping segments make sure segments w/ kept periods are also deleted
if (!$this->keepSegmentReports) {
$this->findSegmentArchives($oldNumericTables);
$archiveIds = $this->segmentArchiveIds[ArchiveTableCreator::getDateFromTableName($table)];
if (!empty($archiveIds)) {
$where .= " OR idarchive IN (" . implode(',', $archiveIds) . ")";
$dateFromTable = ArchiveTableCreator::getDateFromTableName($table);
if (!empty($this->segmentArchiveIds[$dateFromTable])) {
$archiveIds = $this->segmentArchiveIds[$dateFromTable];
$where .= " OR idarchive IN (" . implode(',', $archiveIds) . ")";
}
}
@ -307,7 +314,7 @@ class ReportsPurger
*/
private function findSegmentArchives($numericTables)
{
if (!is_null($this->segmentArchiveIds)) {
if (!is_null($this->segmentArchiveIds) || empty($numericTables)) {
return;
}
@ -316,12 +323,15 @@ class ReportsPurger
$maxIdArchive = Db::fetchOne("SELECT MAX(idarchive) FROM $table");
$sql = "SELECT idarchive
FROM $table
WHERE name != 'done'
AND name LIKE 'done_%.%'
AND idarchive >= ?
AND idarchive < ?";
$sql = "SELECT idarchive FROM $table
WHERE name != 'done'
AND name LIKE 'done_%.%'
AND idarchive >= ?
AND idarchive < ?";
if (is_null($this->segmentArchiveIds)) {
$this->segmentArchiveIds = array();
}
$this->segmentArchiveIds[$tableDate] = array();
foreach (Db::segmentedFetchAll($sql, 0, $maxIdArchive, self::$selectSegmentSize) as $row) {

View file

@ -0,0 +1,31 @@
<?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\Plugins\PrivacyManager;
class Tasks extends \Piwik\Plugin\Tasks
{
public function schedule()
{
$this->daily('deleteReportData', null, self::LOW_PRIORITY);
$this->daily('deleteLogData', null, self::LOW_PRIORITY);
}
public function deleteReportData()
{
$privacyManager = new PrivacyManager();
$privacyManager->deleteReportData();
}
public function deleteLogData()
{
$privacyManager = new PrivacyManager();
$privacyManager->deleteLogData();
}
}

View file

@ -1,5 +1,5 @@
/*!
* Piwik - 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
@ -18,6 +18,8 @@ $(document).ready(function () {
function toggleOtherDeleteSections() {
var showSection = isEitherDeleteSectionEnabled();
toggleBlock('deleteDataEstimateSect', showSection);
toggleBlock('scheduleSettingsHeadline', showSection);
toggleBlock('databaseSizeHeadline', showSection);
toggleBlock('deleteSchedulingSettings', showSection);
}
@ -73,16 +75,16 @@ $(document).ready(function () {
}
// make sure certain sections only display if their corresponding features are enabled
$('input[name=anonymizeIPEnable]').click(function () {
$('input[name=anonymizeIPEnable]').change(function () {
toggleBlock("anonymizeIPenabled", $(this).val());
});
$('input[name=deleteEnable]').click(function () {
$('input[name=deleteEnable]').change(function () {
toggleBlock("deleteLogSettings", $(this).val());
toggleOtherDeleteSections();
}).change(reloadDbStats);
$('input[name=deleteReportsEnable]').click(function () {
$('input[name=deleteReportsEnable]').change(function () {
toggleBlock("deleteReportsSettings", $(this).val());
toggleBlock("deleteOldReportsMoreInfo", $(this).val());
toggleOtherDeleteSections();
@ -93,7 +95,10 @@ $(document).ready(function () {
toggleBlock("deleteLogSettings", $("input[name=deleteEnable]:checked").val());
toggleBlock("anonymizeIPenabled", $("input[name=anonymizeIPEnable]:checked").val());
toggleBlock("deleteReportsSettings", $("input[name=deleteReportsEnable]:checked").val());
toggleBlock("deleteOldReportsMoreInfo", $("input[name=deleteReportsEnable]:checked").val());
// This one is in an AngularJS directive, so is generated later
setTimeout(function () {
toggleBlock("deleteOldReportsMoreInfo", $("input[name=deleteReportsEnable]:checked").val());
}, 500);
toggleOtherDeleteSections();
});

View file

@ -0,0 +1,5 @@
{
"PrivacyManager": {
"AnonymizeIpInlineHelp": "قم بتشفير آخر بايت من عناوين IP للزوار للإلتزام بقوانين\/إرشادات الخصوصية المحلية."
}
}

View file

@ -0,0 +1,20 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Абярыце \"Так\", калі вы хочаце, каб Piwik не адсочваў поўны IP-адрас.",
"AnonymizeIpInlineHelp": "Схаваць апошні байт(ы) IP-адрасоў наведвальнікаў, каб выканаць вашы мясцовыя законы кіруючых органаў.",
"AnonymizeIpMaskLengtDescription": "Выбраць, колькі байтаў IP-адрасоў наведвальнікаў павінны быць схаваныя.",
"AnonymizeIpMaskLength": "%s байт(ы) - напр., %s",
"ClickHereSettings": "Націсніце тут, каб атрымаць доступ да %s наладак.",
"DeleteLogDescription2": "Калі вы ўключыце аўтаматычнае выдаленне запісаў, вы павінны пераканацца, што ўсе папярэднія штодзённыя справаздачы былі апрацаваны, каб пазбегнуць гублення дадзеных.",
"DeleteLogInfo": "Запісы з наступнай табліцы будуць выдаленыя: %s",
"DeleteLogsOlderThan": "Выдаліць запісы старэй чым",
"DeleteMaxRows": "Максімальная колькасць радкоў для выдалення за адзін праход:",
"LastDelete": "Апошняе выдаленне было",
"LeastDaysInput": "Калі ласка, пазначце колькасць дзён больш, чым %s.",
"MenuPrivacySettings": "Прыватнасць",
"NextDelete": "Наступнае запланавана выдаленне",
"TeaserHeadline": "Наладкі прыватнасці",
"UseAnonymizeIp": "Ананімазаваць IP-адрасы наведвальнікаў",
"UseDeleteLog": "Рэгулярна выдаляць старыя запісы наведвальнікаў з базы дадзеных"
}
}

View file

@ -0,0 +1,56 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Изберете \"Да\", ако желаете Piwik да не проследява напълно квалифицирани IP адреси.",
"AnonymizeIpInlineHelp": "Скрива последните цифри на IP адреса на посетителя, за да бъде спазен закона за поверителност.",
"AnonymizeIpMaskLengtDescription": "Изберете колко байта от IP на посетителите да е маскирано.",
"AnonymizeIpMaskLength": "%s байта - пример %s",
"ClickHereSettings": "Натиснете тук, за да влезете в %s настройките.",
"CurrentDBSize": "Настоящ размер на базата данни",
"DBPurged": "Базата от данни е изтрита.",
"DeleteBothConfirm": "На път сте да включите заедно изтриването на лог информацията и изтриването на отчетите. Това перманентно ще премахне възможността да видите анализите за минали периоди. Сигурни ли сте, че искате да направите това?",
"DeleteDataDescription": "Можете да настроите Piwik периодично да изтрива старите потребителски логове и\/или преработените отчети, за да пазите базата си данни малка.",
"DeleteDataDescription2": "Ако желаете, може предварително преработените отчети да не бъдат изтрити, само посещенията, гледаните страници и конверсионния лог да бъдат изтрити. Или обратно, предварително преработените логове да бъдат изтрити, а логовете с данни да бъдат запазени.",
"DeleteDataInterval": "Изтрий стара информация на всеки",
"DeleteLogDescription2": "Ако включите автоматичното изтриване на логове, трябва да сте сигурни, че всичките предишни дневни отчети са били преработени, за да не се изгуби информация.",
"DeleteLogInfo": "Логове от дадените таблици ще бъдат изтрити: %s",
"DeleteLogsConfirm": "На път сте да включите изтриването на лог информацията. Ако старата лог информация е изтрита и не са били създадени отчети за нея, вие няма да можете да видите информацията за минал период. Сигурни ли сте, че искате да направите това?",
"DeleteLogsOlderThan": "Изтрий отчети по-стари от",
"DeleteMaxRows": "Максималният брой редове, които да бъдат изтрити на един път:",
"DeleteMaxRowsNoLimit": "без лимит",
"DeleteReportsConfirm": "На път сте да включите изтриване на отчетите. Ако старите отчети са изтрити, вие ще трябвате да ги изготвите наново за да ги видите. Сигурни ли сте, че искате да направите това?",
"DeleteReportsDetailedInfo": "Информацията от базата данни за цифровите архивни таблици (%s) и текстовите архивни таблици (%s) ще бъде изтрита.",
"DeleteReportsInfo": "Ако е включено, старите отчети ще бъдат изтрити. %sПрепоръчваме да включвате само когато мястото за база данни е ограничено.%s",
"DeleteReportsInfo2": "Ако не сте включили \"%s\", старите отчети ще се създават автоматично при поискване.",
"DeleteReportsInfo3": "Ако сте включили \"%s\", информацията ще бъде изгубена завинаги.",
"DeleteReportsOlderThan": "Изтрива отчети по-стари от",
"DeleteDataSettings": "Изтриване на старите потребителски логове и отчети",
"DoNotTrack_Description": "Не проследявай е технология и предложение, което позволява отказ от проследяване на сайтове, които те не посещават; включително инструменти за анализ, рекламни мрежи и социални платформи.",
"DoNotTrack_Disable": "Изключете \"Не проследявай\" поддръжката.",
"DoNotTrack_Disabled": "Piwik понястоящем проследява всички постетители, дори и те да са включили \"Не искам да бъда проследяван\" в техният уеб браузър.",
"DoNotTrack_DisabledMoreInfo": "Препоръчваме да уважавате поверителността на вашите посетители и да включите \"Не проследявай\" поддръжката.",
"DoNotTrack_Enable": "Включете \"Не проследявай\" поддръжката.",
"DoNotTrack_Enabled": "Понастоящем вие уважавате поверителността на вашите потребители. Браво!",
"DoNotTrack_EnabledMoreInfo": "Когато потребителите са настроили техният уеб браузър на \"Аз не искам да бъда проследяван\" (Не проследявай е включено), Piwik няма да отчита техните посещения.",
"DoNotTrack_SupportDNTPreference": "Поддръжка на \"Не проследявай\" настройки.",
"EstimatedDBSizeAfterPurge": "Изчислен размер на базата данни след изтриване",
"EstimatedSpaceSaved": "Изчислено спестено място",
"GetPurgeEstimate": "Изчисляване на времето за изтриване",
"KeepBasicMetrics": "Запазване на основните данни (посещения, посещения на страници, степен на отпадане, цели, конверсия при електронна търговия и др.)",
"KeepReportSegments": "За да запазите горната информация, също запазете сегментите на отчета.",
"LastDelete": "Последното изтриване е било на",
"LeastDaysInput": "Моля укажете номер на дни по голям от %s.",
"LeastMonthsInput": "Моля укажете номер на месеци по-голям от %s.",
"MenuPrivacySettings": "Поверителност",
"NextDelete": "Следващото планирано изтриване е на",
"PurgeNow": "Изтриване на базата данни СЕГА",
"PurgeNowConfirm": "Вие сте на път перманентно да изтриете информацията от вашата база данни. Сигурни ли сте, че искате да продължите?",
"PurgingData": "Изтриване на базата данни...",
"ReportsDataSavedEstimate": "Размер на базата данни",
"SaveSettingsBeforePurge": "Вие променихте настройките за изтриване на информация. Моля запазете ги, преди да започнете изтриване.",
"Teaser": "На тази страница можете да персонализирате Piwik, за да съгласувате поверителността със съществуващото законодателство, чрез: %s правейки посетителското IP анонимно %s, %s автоматично премахване на стари посетителски логове от базата данни %s, и %s даване на възможност за отказ от услуги за вашият уеб сайт%s.",
"TeaserHeadline": "Настройки на поверителността",
"UseAnonymizeIp": "Правене на IP-тата на посетителите анонимни",
"UseDeleteLog": "Периодично изтриване на старите посетителски логове от базата данни",
"UseDeleteReports": "Периодично изтрива старите посетителски отчети от базата данни"
}
}

View file

@ -0,0 +1,58 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Seleccioneu \"Sí\" si voleu que el Piwik no registri l'adreça IP complerta.",
"AnonymizeIpInlineHelp": "Anonimitzar el(s) últim(s) de la IP de les adreces dels visitants per complir amb la vostra política de privacitat\/llei.",
"AnonymizeIpMaskLengtDescription": "Seleccioneu quans bytes de l'adreça IP del visitant voleu enmascarar.",
"AnonymizeIpMaskLength": "%s byte(s) - p.e. %s",
"CannotLockSoDeleteLogActions": "La taula log_action no es purgarà: siusplau doneu el privilegi LOCK TABLES a l'ususair de MySQL '%s'.",
"ClickHereSettings": "Feu click aquí per entrar a %s la configuració",
"CurrentDBSize": "Tamany actual de la Base de dades",
"DBPurged": "Base de dades purgada",
"DeleteBothConfirm": "Esteu apunt d'activar l'eliminació del registre i dels informes. Això esborrarà de forma permanent la posibilitat de veure informació analítica antiga. Esteu segurs que voleu fer això?",
"DeleteDataDescription": "POdeu configurar el Piwik per esborar de forma periòdica els registres de visitants i\/o procesars el informes de forma períodica. Això permet reduïr la mida de la Base de dades.",
"DeleteDataDescription2": "Si ho voleu, els informes pre-processat no s'esborraran Només el registre de visiites, d vistes de pàgines i de conversió seràn esborrat. També podeu esborrar els informes pre-processats i mantenir la informació del registre.",
"DeleteDataInterval": "Esborrar la informació antiga cada",
"DeleteLogDescription2": "Quan activeu l'eliminació automàtica us heu d'asegurar que tots els informes diaris han estat processats, així no perdeu informació.",
"DeleteLogInfo": "S'esborraran els regsitres de les següents taules: %s",
"DeleteLogsConfirm": "Esteu a punt d'activar l'eliminació d'informació. Si els registres anterior s'esborren i els informes no han estat creats no podreu veure la informació històrica. Esteu segurs que voleu fer això?",
"DeleteLogsOlderThan": "Eliminar elsb registres anterior a",
"DeleteMaxRows": "Nombre màxim de files per eliminar en una sola execució:",
"DeleteMaxRowsNoLimit": "sense límit",
"DeleteReportsConfirm": "Esteu a punt d'activar l'eliminació de la informació dels informes. Si els informes antics s'eliminen, haure de tornar-los a procesar per veure'ls. Esteu segur que voleu fer això?",
"DeleteReportsDetailedInfo": "S'eliminarà la informació de les taules númeriques (%s) i de les taules binàries (%s).",
"DeleteReportsInfo": "Si s'activa els informes antic s'esborraran. %s Recomanem que només ho activeu quan l'espai de la BD es limitat. %s",
"DeleteReportsInfo2": "Si no heu activat \"%s\", els informes anteriors es recrearan de forma automàtica quan es demanin.",
"DeleteReportsInfo3": "Si heu activat \"%s\", la informació s'esborrarà permanentment.",
"DeleteReportsOlderThan": "Elmina els informes anteriors a",
"DeleteDataSettings": "Eliminar el registre de visitants i informes antics",
"DoNotTrack_Description": "La tecnologia de no traquejar permet als usuris donar-se de baixa de les estadístiques pels llocs web que ells no visiten, incloïent els serveis analítiques, les xarxes públicitaries i els xarxes socials.",
"DoNotTrack_Disable": "Desactiveu el suport per a la desactivació del rastreig.",
"DoNotTrack_Disabled": "El Piwik actualment gestiona tots els visitants, encara que ells haigin especificat \"No vull ser rastrejat\" en els seus navegadors web.",
"DoNotTrack_DisabledMoreInfo": "Recomanem respectar la privacitat dels vostres visitants i activar el suport per la desactivació del rastreig.",
"DoNotTrack_Enable": "Activeu el suport per la desactivació del restreig",
"DoNotTrack_Enabled": "Bravo! Esteu respectant la privacitat dels vostres usuaris.",
"DoNotTrack_EnabledMoreInfo": "Quan els usuaris han configurat el seu navegador per a a no ser rastrejats (La tecnologia de no rastreig esta activada) el Piwik no registrarà aquestes visites.",
"DoNotTrack_SupportDNTPreference": "Suportar la configuració de No Rastreig",
"EstimatedDBSizeAfterPurge": "Tamany de la base de dades desprès de la purga",
"EstimatedSpaceSaved": "Tamany estalviat (estimació)",
"GeolocationAnonymizeIpNote": "Nota: La geocalitazció tindrà els mateixos resultats amb 1 bit anònim. Amb 2 bits o més, la geocalització no serà acurada.",
"GetPurgeEstimate": "Obtenir l'estimació de la purga",
"KeepBasicMetrics": "Conserveu les mètriques bàsiques ( visites, pàgines vistes, raó de rebot, conversió d'objectius, conversións ecommerce, etc.)",
"KeepReportSegments": "Per mantenir aquesta informació també heu de mantenir els informes segmentats.",
"LastDelete": "La última eliminació va ser el",
"LeastDaysInput": "Siusplau especifieu un nombre de díes més gran que %s.",
"LeastMonthsInput": "Siusplau, especifiqueu un nombre de dies més gran que %s.",
"MenuPrivacySettings": "Privacitat",
"NextDelete": "La pròxima eliminació programada el",
"PurgeNow": "Purga la BD ara",
"PurgeNowConfirm": "Esteu a punt d'esborrar tota la informació de la vostra base de ades. Esteu segur que voleu continuar?",
"PurgingData": "Prugant la informació...",
"ReportsDataSavedEstimate": "Mida de la Base de dades",
"SaveSettingsBeforePurge": "Heu canviat la configuració d'esborrament. Sisplau, guardeu les vostres preferències abans de començar la purga.",
"Teaser": "En aquesta pàgina podeu personalitzar el Piwik per tal de que compleixi amb les legislacions actuals. Podeu: %sconvertir la IP del visitant en anònima%s, %sesborrar automàticmant els registres antics de la base de dades%s i %s proporcionar un mecanisme per a que els vostreus usuaris puguin triar de no ser rastrejats %s.",
"TeaserHeadline": "Preferències de Privacitat",
"UseAnonymizeIp": "Convertir la IP dels vostres visitants en anònima",
"UseDeleteLog": "Esborrar de forma períodica el registres de visitants.",
"UseDeleteReports": "Esobrreu els informes de la base de dades de forma períodica"
}
}

View file

@ -0,0 +1,68 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Zvolte \"ano\", pokud nemá Piwik sledovat plně kvalifikované IP adresy.",
"AnonymizeIpInlineHelp": "Skryje poslední byte IP adresy návštěvníka, aby souhlasila se zákony vaší země.",
"AnonymizeIpExtendedHelp": "Když uživatelé navštíví vaše stránky, Piwik neuloží jejich plnou IP adresu (jako %s), ale nejprve bude anonymizována (na %s). Anonymizace IP adres je jedním z požadavků práva na ochranu soukromí v některých zemí, jako je třeba Německo.",
"AnonymizeIpMaskLengtDescription": "Zvolte, kolik bitů z návštěvníkovy IP adresy má být maskováno.",
"AnonymizeIpMaskLength": "%s bitů - např. %s",
"CannotLockSoDeleteLogActions": "Tabulka log_action nebude vyprázdněna: dejte Mysql uživateli %s privilegium LOCK TABLES.",
"ClickHereSettings": "Pro přístup k nastavení %s klikněte zde.",
"CurrentDBSize": "Aktuální velikost databáze",
"DBPurged": "Databáze vyprázdněna.",
"DeleteBothConfirm": "Chystáte se povolit mazání dat logů i mazání dat hlášení. Tato operace trvale odstraní stará data. Opravdu to chcete provést?",
"DeleteDataDescription": "Můžete Piwik nastavit tak, aby po určitém čase mazal stará data logů nebo zpracovaná data hlášení. To pomáhá udržet malou databázi.",
"DeleteDataDescription2": "Pokud si to přejete, zpracovaná hlášení mohou zůstat a budou odstraněna jen data logů (zobrazení stránek (návštěvy a konverze). Nebo mohou být smazána hlášení a data logů mohou být zachována.",
"DeleteDataInterval": "Smazat stará data každých",
"DeleteOldVisitorLogs": "Smazat staré záznamy o návštěvnících",
"DeleteOldArchivedReports": "Smazat stará archivovaná hlášení",
"DeleteLogDescription2": "Pokud povolíte automatické mazání logů, musíte zajistit, že jsou zpracována všechna denní hlášení, aby nedošlo ke ztrátě dat.",
"DeleteLogInfo": "Logy z následujících tabulek budou smazány: %s",
"DeleteLogsConfirm": "Chystáte se povolit mazání dat logů. Pokud budou odstraněna stará data logů a nebyla vytvořena historická hlášení, nebudete schopen zobrazit stará analytická data. Oprav",
"DeleteLogsOlderThan": "Vymazat logy starší než",
"DeleteMaxRows": "Maximální počet řádků, které se mají smazat při jednom běhu:",
"DeleteMaxRowsNoLimit": "bez limitu",
"DeleteReportsConfirm": "Chystáte se povolit mazání starých hlášení. Pokud je budete chtít zobrazit, budou muset být znovu vytvořena. Opravdu to chcete provést?",
"DeleteReportsDetailedInfo": "Data z databázových archivních číselných tabulek (%s) a archivních tabulek syrových dat (%s) budou odstraněna.",
"DeleteReportsInfo": "Pokud je povoleno, stará hlášení budou smazána. %sDoporučujeme použít tuto možnost pouze, je-li velikost vaší databáze omezená.%s",
"DeleteReportsInfo2": "Pokud není povoleno \"%s\", stará hlášení budou na požádání znovu vytvořena.",
"DeleteReportsInfo3": "Pokud je povoleno \"%s\", data budou nevratně ztracena.",
"DeleteReportsOlderThan": "Smazat hlášení starší než",
"DeleteSchedulingSettings": "Maplánovat výmaz starých dat",
"DeleteDataSettings": "Smazat staré logy návštěvníků a hlášení",
"DoNotTrack_Description": "Do not track je návrh technologie a politiky, která umožňuje uživatelům indikovat, že si nepřejí být stránkami, které navštěvují a to včetně služeb webové analýzi, reklamních služeb a sociálních platforem.",
"DoNotTrack_Disable": "Zakázat podporu Do not track",
"DoNotTrack_Disabled": "Piwik sleduje všechny návštěvníky včetně těch, kteří v možnostech svého webového prohlížeče nastavili, že si nepřejí být sledováni.",
"DoNotTrack_DisabledMoreInfo": "Doporučujeme respektovat soukromí vašich návštěvníků a podporu Do not track povolit.",
"DoNotTrack_Enable": "Povolit podporu Do not track",
"DoNotTrack_Enabled": "Aktuálně respektujete soukromí vašich návštěvníků, víborně!",
"DoNotTrack_EnabledMoreInfo": "Pokud uživatelé nastavili \"nepřeji si být sledován\" (Donottrack je povolen), Piwik nebude sledovat tyto návštěvy.",
"DoNotTrack_SupportDNTPreference": "Podporovat předvolbu Do not track",
"EstimatedDBSizeAfterPurge": "Odhadovaná velikost databáze po vyprázdnění",
"EstimatedSpaceSaved": "Odhadované ušetřené místo",
"GeolocationAnonymizeIpNote": "Poznámka: Geolokace bude mít přibližně stejnou přesnost, když je anonymizován 1 bit. Pokud jsou anonymizovány 2 bity a více, geolokace bude nepřesná.",
"GetPurgeEstimate": "Získat odhad po vyprázdnění",
"KeepBasicMetrics": "Uchovat základní měření (návštěvy, zobrazení stránek, odchody, cíle, atd.)",
"KeepDataFor": "Uchovávat všechna data po",
"KeepReportSegments": "Pro výše uchovávaná data také zachovat segmentovaná hlášení",
"LastDelete": "Poslední mazání bylo v",
"LeastDaysInput": "Prosím, uveďte počet dní větší než %s.",
"LeastMonthsInput": "Prosím, uveďte počet měsíců větší než %s.",
"MenuPrivacySettings": "Ochrana soukromí",
"NextDelete": "Následující plánované mazání za",
"PluginDescription": "Zlepšete soukromí pro vaše uživatele a zajistěte soulad vaší instance Piwiku s místní legislativou týkající se soukromí.",
"PurgeNow": "Vyprázdnit databázi nyní",
"PurgeNowConfirm": "Chystáte se natrvalo odstranit data z vaší databáze. Opravdu chcete pokračovat?",
"PurgingData": "Promazávání dat...",
"RecommendedForPrivacy": "Doporučeno pro soukromí",
"ReportsDataSavedEstimate": "Velikost databáze",
"SaveSettingsBeforePurge": "Nastavení mazání dat byla změněna. Uložte je před promazáním.",
"SeeAlsoOurOfficialGuidePrivacy": "Podívejte se také na náš oficiální návod: %ssoukromí webové analýzy%s",
"Teaser": "Na této stránce můžete Piwik nastavit tak, aby splňoval zákony o soukromí s použitím %s anonymizování IP adresy návštěvníků%s, %s automatického odstraňování starých logů návštěvníků z databáze%s a %s poskytováním mechanismu vyloučení pro vaše webové stránky%s.",
"TeaserHeadline": "Nastavení ochrany soukromí",
"UseAnonymizedIpForVisitEnrichment": "Anonymizované IP adresy použít i při obohacování návštěv.",
"UseAnonymizedIpForVisitEnrichmentNote": "Zásuvné moduly jako geolokace podle IP a poskytovatel vylepšují metadata o návštěvnících. Ve výchozím stavu tyto zásuvné moduly používají anonymizované IP adresy. Pokud vyberete \"ne\", pak tyto zásuvné moduly budou používat plné adresy, což způsobí omezení soukromí ale zlepšení výsledků.",
"UseAnonymizeIp": "Anonymizovat IP adresy návštěvníků",
"UseDeleteLog": "Průběžně mazat staré logy návštěvníků z databáze",
"UseDeleteReports": "Průběžně mazat stará hlášení z databáze"
}
}

View file

@ -0,0 +1,62 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Vælg \"Ja\", hvis Piwik ikke skal spore fuldt kvalificerede IP-adresser.",
"AnonymizeIpInlineHelp": "Anonymiser besøgendes IP-adresser for at efterkomme den lokale lovgivning om privatlivets fred\/retningslinjer.",
"AnonymizeIpExtendedHelp": "Når brugerne besøger hjemmesiden, vil Piwik ikke bruge den fulde IP-adresse (f.eks %s), men i stedet vil Piwik anonymisere det først (til %s). IP-adresse anonymisering er et af de krav, som lovgivningen om privatlivets fred i visse lande som fx. Tyskland.",
"AnonymizeIpMaskLengtDescription": "Vælg hvor mange bytes af de besøgendes IP-adresser der skal maskeres.",
"AnonymizeIpMaskLength": "%s bytes - f.eks %s",
"CannotLockSoDeleteLogActions": "log_action tabellen vil ikke blive slettet: giv LOCK TABELLER privilegium til '%s' MYSQL brugeren.",
"ClickHereSettings": "Klik her for at få adgang til %s indstillinger.",
"CurrentDBSize": "Nuværende database størrelse",
"DBPurged": "Databasen er opryddet.",
"DeleteBothConfirm": "Aktiver både logdata sletning og rapportdata sletning. Dette vil permanent fjerne muligheden for at få vist gamle analysedata. Bekræft sletning.",
"DeleteDataDescription": "Piwik kan konfigureres til regelmæssigt at slette gamle besøgs logfiler og\/eller allerede behandlede rapporter for at holde database lille. Hvis det ønskes, kan allerede behandlede rapporter beholdes og kun besøgs-, sidevisning- og konverteringslog data vil blive slettet. Eller, allerede behandlede rapporter kan slettes og logdata kan beholdes.",
"DeleteDataDescription2": "Hvis det ønskes, kan præ-forarbejdede rapporter gemmes, kun besøg, sidevisning og konvertering log data vil blive slettet. Eller, de præ-behandlede rapporter slettes, og logdata biholdes.",
"DeleteDataInterval": "Slet gamle data hver",
"DeleteLogDescription2": "Når automatisk log sletning aktiveres, så sørg for, at alle tidligere daglige rapporter er blevet behandlet, således at ingen data går tabt.",
"DeleteLogInfo": "Logfiler fra følgende tabeller vil blive slettet: %s",
"DeleteLogsConfirm": "Aktiver logdata sletning. Hvis gamle logdata fjernes, og rapporter ikke allerede er blevet oprettet, kan man ikke kunne se historiske data. Bekræft logdata sletning.",
"DeleteLogsOlderThan": "Slet logfiler ældre end",
"DeleteMaxRows": "Maksimale antal rækker der slettes på én gang:",
"DeleteMaxRowsNoLimit": "ingen begrænsning",
"DeleteReportsConfirm": "Aktiver rapportdata sletning. Hvis gamle rapporter fjernes, skal de forarbejdes igen dem med henblik på se dem. Bekræft sletning.",
"DeleteReportsDetailedInfo": "Data fra de numeriske arkiv tabeller (%s) og blob arkiv tabeller (%s) i databasen vil blive slettet.",
"DeleteReportsInfo": "Hvis aktiveret, vil gamle rapporter blive slettet. %sVi anbefaler kun at aktivere dette, når din database-plads er begrænset.%s",
"DeleteReportsInfo2": "Hvis ikke \"%s\" er aktiveret , vil gamle rapporter genskabes automatisk når det anmodes.",
"DeleteReportsInfo3": "Hvis du har aktiveret \"%s\", slettes data permanent.",
"DeleteReportsOlderThan": "Slet rapporter ældre end",
"DeleteDataSettings": "Slet gamle besøgs logfiler og rapporter fra databasen",
"DoNotTrack_Description": "Spor ikke er en teknologi og politisk forslag, der giver brugerne mulighed for at fravælge sporing af websteder, de ikke besøger, herunder analyse-tjenester, reklame netværk og sociale platforme.",
"DoNotTrack_Disable": "Deaktiver spor ikke understøttelse",
"DoNotTrack_Disabled": "Piwik sporer i øjeblikket alle besøgende, selv når de har angivet \"Jeg ønsker ikke at blive sporet\" i deres webbrowser.",
"DoNotTrack_DisabledMoreInfo": "Vi anbefaler at respektere dine besøgende privatliv og muliggøre spor ikke understøttelse.",
"DoNotTrack_Enable": "Aktiver spor ikke understøttelse",
"DoNotTrack_Enabled": "Du respekterer beskyttelse af dine brugeres personlige oplysninger, bravo!",
"DoNotTrack_EnabledMoreInfo": "Når brugere har sat deres web-browser til \"Jeg ønsker ikke at blive sporet\" (spor ikke er aktiveret), vil Piwik ikke spore disse besøg.",
"DoNotTrack_SupportDNTPreference": "Understøt spor ikke præference",
"EstimatedDBSizeAfterPurge": "Anslået database størrelse efter oprydning",
"EstimatedSpaceSaved": "Anslået sparet plads",
"GeolocationAnonymizeIpNote": "Bemærk: geolokalisering vil have omtrent de samme resultater med 1 byte anonymiseret. Med 2 byte eller mere, vil geolokalisering være unøjagtig.",
"GetPurgeEstimate": "Overslag på rensning",
"KeepBasicMetrics": "Behold grundlæggende målinger (besøg, sidevisninger, afvisningsprocent, mål konverteringer, eHandel konverteringer osv.)",
"KeepReportSegments": "For beholdte data ovenfor, beholdes desuden segmenterede rapporter",
"LastDelete": "Sidste sletningen var d.",
"LeastDaysInput": "Angiv et antal dage større end %s.",
"LeastMonthsInput": "Angiv et antal måneder større end %s.",
"MenuPrivacySettings": "Privatliv",
"NextDelete": "Næste planlagt sletning på",
"PurgeNow": "Ryd op i databasen nu",
"PurgeNowConfirm": "Permanent sletning af data fra databasen. Bekræft for at fortsætte?",
"PurgingData": "Rydder op i data...",
"ReportsDataSavedEstimate": "Database størrelse",
"SaveSettingsBeforePurge": "Indstillinger for datasletning er ændret. Gem før oprydning.",
"SeeAlsoOurOfficialGuidePrivacy": "Se også vores officielle vejledning: %sWeb Analytics Privacy%s",
"Teaser": "Tilpas Piwik til at beskytte personlige oplysninger i overensstemmelse med gældende lovgivning, ved at: %s anonymisere den besøgendes IP%s, %s automatisk fjerne gamle besøgs logfiler fra databasen%s og %s giver en frameld mekanisme til hjemmesiden%s.",
"TeaserHeadline": "Privatlivsindstillinger",
"UseAnonymizedIpForVisitEnrichment": "Brug også anonymiseret IP-adresser, når beriger besøg.",
"UseAnonymizedIpForVisitEnrichmentNote": "Programudvidelser som Geo Location via IP og udbyder forbedrer besøgendes metadata. Som standard bruger disse udvidelsesmoduler anonyme IP-adresser. Hvis du vælger 'Nej', så vil den ikke-anonymiseret fulde IP-adresse blive brugt i stedet for, hvilket resulterer i mindre privatliv, men bedre data nøjagtighed.",
"UseAnonymizeIp": "Anonymisere besøgendes IP-adresser",
"UseDeleteLog": "Slet regelmæssigt gamle logfiler fra databasen",
"UseDeleteReports": "Slet regelmæssigt gamle rapporter fra databasen"
}
}

View file

@ -0,0 +1,68 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Wählen Sie \"Ja\", wenn Piwik keine vollständigen IP-Adressen speichern soll.",
"AnonymizeIpInlineHelp": "Um den Datenschutzbestimmungen Ihres Landes gerecht zu werden, können Sie mit diesem Plugin die letzten Bytes der IP-Adresse Ihrer Besucher anonymisieren.",
"AnonymizeIpExtendedHelp": "Wenn Benutzer Ihre Website besuchen, wird Piwik nicht die komplette IP Adresse (so wie %s) benützen, sondern sie stattdessen zuerst anonymisieren (zu %s). Die Anonymisierung der IP Adresse ist in einigen Ländern eine gesetzliche Pflicht, zum Beispiel in Deutschland vorgegeben durch das Datenschutzrecht.",
"AnonymizeIpMaskLengtDescription": "Wählen Sie aus, wieviele Bytes der Besucher-IP maskiert werden sollen.",
"AnonymizeIpMaskLength": "%s byte(s) - z.B. %s",
"CannotLockSoDeleteLogActions": "Die log_action Tabelle wird nicht geleert: bitte geben Sie dem MySQL User '%s' das LOCK TABLES Privileg.",
"ClickHereSettings": "Hier klicken, um die %s Einstellungen zu bearbeiten.",
"CurrentDBSize": "Aktuelle Größe der Datenbank",
"DBPurged": "Datenbank bereinigt.",
"DeleteBothConfirm": "Sie sind dabei, das Löschen von sowohl Log- als auch Berichtsdaten zu aktivieren. Das wird Ihnen dauerhaft die Möglichkeit nehmen, auf alte Analyticsdaten zuzugreifen. Sind Sie sicher, dass Sie das wollen?",
"DeleteDataDescription": "Sie können Piwik so konfigurieren, dass regelmäßig alte Besucher-Logs und\/oder generierte Berichte gelöscht werden, um die Größe der Datenbank klein zu halten.",
"DeleteDataDescription2": "Falls gewünscht, können generierte Berichte behalten werden, während Besuchs-, Seitenansichten- und Konversions-Logdaten gelöscht werden. Oder die generierten Berichte können gelöscht werden, während die Logdaten behalten werden.",
"DeleteDataInterval": "Lösche alte Daten alle",
"DeleteOldVisitorLogs": "Alte Besucher-Logs löschen",
"DeleteOldArchivedReports": "Alte archivierte Berichte löschen",
"DeleteLogDescription2": "Wenn Sie das automatische Leeren von Logs aktivieren, müssen Sie sicherstellen, dass alle (Tages-)Berichte bereits berechnet wurden, um Datenverlust zu vermeiden.",
"DeleteLogInfo": "Es werden Daten aus den folgenden Tabellen gelöscht: %s",
"DeleteLogsConfirm": "Sie sind dabei, das Löschen von Logdaten zu aktivieren. Wenn alte Logdaten gelöscht werden und die entsprechenden Berichte noch nicht generiert worden sind, können Sie auf die historischen Analyticsdaten später nicht mehr zugreifen. Sind Sie sicher, dass Sie das wollen?",
"DeleteLogsOlderThan": "Logs löschen, die älter sind als",
"DeleteMaxRows": "Maximale Anzahl der Datensätze, die pro Durchlauf gelöscht werden dürfen:",
"DeleteMaxRowsNoLimit": "Keine Begrenzung",
"DeleteReportsConfirm": "Sie sind dabei, das Löschen von Berichtsdaten zu aktivieren. Wenn alte Berichte entfernt wurden, müssen Sie diese neu generieren, um Sie anzusehen. Sind Sie sicher, dass Sie das wollen?",
"DeleteReportsDetailedInfo": "Daten aus den Numerischen Archiv Tabellen (%s) und Blob Archiv Tabellen (%s) werden aus der Datenbank gelöscht.",
"DeleteReportsInfo": "Wenn aktiviert, dann werden alte Berichte gelöscht. %sWir empfehlen dies nur, wenn die maximale Größe der Datenbank begrenzt ist%s.",
"DeleteReportsInfo2": "Wenn Sie \"%s\" nicht aktiviert haben, dann werden alte Berichte automatisch bei Bedarf neu generiert.",
"DeleteReportsInfo3": "Wenn Sie \"%s\" aktiviert haben, sind die Daten dauerhaft gelöscht.",
"DeleteReportsOlderThan": "Lösche Berichte, die älter sind als",
"DeleteSchedulingSettings": "Löschung alter Daten planen",
"DeleteDataSettings": "Alte Besucher-Logs und Berichte löschen",
"DoNotTrack_Description": "Do-not-Track ist eine Technologie und ein Richtlinienvorschlag, der es Benutzern ermöglichen soll, selbständig zu entscheiden, ob ihr Verhalten von Websites, Werbenetzwerken und Sozialen Netzwerken verfolgt wird.",
"DoNotTrack_Disable": "Do-not-Track Unterstützung deaktivieren",
"DoNotTrack_Disabled": "Piwik verfolgt derzeit das Verhalten aller Besucher, auch derjenigen, die explizit in ihrem Browser \"Ich möchte nicht getrackt werden\" eingestellt haben.",
"DoNotTrack_DisabledMoreInfo": "Wir empfehlen, die Privatsphäre Ihrer Besucher zu respektieren und die Do-not-Track Unterstützung zu aktivieren.",
"DoNotTrack_Enable": "Do-not-Track Unterstützung aktivieren",
"DoNotTrack_Enabled": "Sie respektieren die Privatsphäre Ihrer Besucher, Bravo!",
"DoNotTrack_EnabledMoreInfo": "Wenn Benutzer in ihrem Browser \"Ich möchte nicht getrackt werden\" eingestellt haben (Do-not-Track aktiviert), dann wird Piwik diese Besuche nicht tracken.",
"DoNotTrack_SupportDNTPreference": "Do-not-Track Einstellungen",
"EstimatedDBSizeAfterPurge": "Erwartete Größe der Datenbank nach dem Löschen",
"EstimatedSpaceSaved": "Geschätzte Speichereinsparung",
"GeolocationAnonymizeIpNote": "Hinweis: Standorterkennung wird ungefähr das gleiche Ergebnis haben wenn 1 Byte anonymisiert ist. Bei 2 Bytes oder mehr wird Geolokalisierung sehr ungenau werden.",
"GetPurgeEstimate": "Hochrechnung der Auswirkungen anzeigen",
"KeepBasicMetrics": "Behalte Basismetriken (Besuche, Seitenansichten, Absprungrate, Ziel-Konversionen, Ecommerce-Konversionen, etc.)",
"KeepDataFor": "Behalte alle Daten für",
"KeepReportSegments": "Für die behaltenen Daten oben, auch segmentierte Berichte behalten",
"LastDelete": "Letzter Löschvorgang war am",
"LeastDaysInput": "Bitte geben Sie eine Anzahl an Tagen an, die größer als %s ist.",
"LeastMonthsInput": "Bitte spezifizieren Sie eine Anzahl Monate größer als %s.",
"MenuPrivacySettings": "Privatsphäre",
"NextDelete": "Nächste Löschung geplant in",
"PluginDescription": "Berücksichtigen Sie den Datenschutz für Ihre Benutzer und machen Sie Ihre Piwik Installation datenschutzkonform gemäss Ihren lokalen Datenschutzbestimmungen.",
"PurgeNow": "Datenbank jetzt leeren",
"PurgeNowConfirm": "Sie sind dabei, Daten dauerhaft aus der Datenbank zu entfernen. Sind Sie sicher?",
"PurgingData": "Daten werden bereinigt...",
"RecommendedForPrivacy": "Für den Datenschutz empfohlen",
"ReportsDataSavedEstimate": "Größe der Datenbank",
"SaveSettingsBeforePurge": "Sie haben die Einstellungen für das Löschen von Daten geändert. Bitte erst speichern, bevor Sie einen Löschvorgang starten.",
"SeeAlsoOurOfficialGuidePrivacy": "Siehe auch unser offizielles Handbuch: %sWebanalyse Privatsphäre%s",
"Teaser": "Auf dieser Seite können Sie Piwik so anpassen, dass es die bei Ihnen herrschenden Datenschutzbestimmungen einhält. Sie können %sBenutzer-IPs anonymisieren%s, %sautomatisch alte Logs aus der Datenbank löschen%s und %seinen Opt-out Mechanismus auf Ihrer Website anbieten%s.",
"TeaserHeadline": "Privatsphäreeinstellungen",
"UseAnonymizedIpForVisitEnrichment": "Benutze die anonymisierte IP-Adresse auch für die Aufbereitung der Besuche.",
"UseAnonymizedIpForVisitEnrichmentNote": "Plugins wie Geolokalisierung anhand IP und Provider verbessern die Metadaten eines Besuchers. Normalerweise verwenden diese Plugins die anonymisierte IP Adresse. Wenn sie 'Nein' auswählen wird stattdessen die nicht anonymisierte volle IP Adresse verwendet. Daraus resultiert eine größere Genauigkeit, jedoch weniger Privatsphäre.",
"UseAnonymizeIp": "Anonymisiere die IP-Adresse von Besuchern",
"UseDeleteLog": "Alte Besucher-Logs automatisch aus der Datenbank entfernen",
"UseDeleteReports": "Lösche regelmäßig alte Berichte aus der Datenbank"
}
}

View file

@ -0,0 +1,68 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Επιλέξτε «Ναι» αν θέλετε το Piwik να μην ανιχνεύει πλήρως ταυτοποιημένες διευθύνσεις IP.",
"AnonymizeIpInlineHelp": "Αποκρύπτει το τελευταίο byte των διευθύνσεων IP των επισκεπτών σας για συμμόρφωση με την τοπική νομοθεσία περί Ιδιωτικού Απορρήτου.",
"AnonymizeIpExtendedHelp": "Όταν οι χρήστες επισκέπτονται τον ιστοτόπο σας, το Piwik δε θα χρησιμοποιεί την πλήρη διεύθυνση IP (όπως το %s), αλλά αντίθετα θα το κάνει πρώτα ανώνυμο (σε %s). Η μετατροπή των διευθύνσεων IP σε ανώνυμες είναι μία από τις απαιτήσεις που ορίζει η νομοθεσία γύρω από την ιδιωτικότητα σε ορισμένες χώρες όπως η Γερμανία.",
"AnonymizeIpMaskLengtDescription": "Επιλέξτε πόσα bytes από τις διευθύνσεις IP των επισκεπτών πρέπει να κρύβονται.",
"AnonymizeIpMaskLength": "%s byte(s) - π.χ.. %s",
"CannotLockSoDeleteLogActions": "Ο πίκανας log_action δεν θα διαγραφεί: δώστε δικαιώματα LOCK TABLES στον χρήστη MYSQL «%s».",
"ClickHereSettings": "Πατήστε εδώ για να έχετε πρόσβαση στις ρυθμίσεις %s.",
"CurrentDBSize": "Τρέχον μέγεθος βάσης δεδομένων",
"DBPurged": "Η βάση δεδομένων διαγράφτηκε.",
"DeleteBothConfirm": "Πρόκειται να ενεργοποιήσετε τη διαγραφή δεδομένων καταγραφής και αναφορών. Αυτό θα απομακρύνει μόνιμα τη δυνατότητα να βλέπετε παλαιά αναλυτικά δεδομένα. Θέλετε, σίγουρα, να συνεχίσετε;",
"DeleteDataDescription": "Μπορείτε να ρυθμίσετε το Piwik να διαγράφει τακτικά τις παλαιές καταγραφές επισκεπτών και\/ή των προωθημένων αναφορών για διατήρηση της βάσης δεδομένων σας σε μικρό μέγεθος.",
"DeleteDataDescription2": "Αν επιθυμείτε, οι προεπεξεργασμένες αναφορές δε θα διαγραφούν, μόνο τα δεδομένα καταγραφής επίσκεψης, προβολής σελίδας και μετατροπής θα διαγραφούν. Ή, οι προεπεξεργασμένες αναφορές μπορεί να διαγραφούν και τα δεδομένα καταγραφής μπορεί να κρατηθούν.",
"DeleteDataInterval": "Διαγραφή παλαιών δεδομένων κάθε",
"DeleteOldVisitorLogs": "Διαγραφή παλιών εγγραφών ημερολογίου επισκεπτών",
"DeleteOldArchivedReports": "Διαγραφή παλιών αρχειοθετημένων αναφορών",
"DeleteLogDescription2": "Όταν ενεργοποιήσετε την αυτόματη διαγραφή καταγραφών, πρέπει να είστε σίγουροι ότι όλες οι προηγούμενες ημερήσιες αναφορές έχουν καταχωρηθεί για να μην χαθούν δεδομένα.",
"DeleteLogInfo": "Οι καταγραφές από τους ακόλουθους πίνακες θα διαγραφούν: %s",
"DeleteLogsConfirm": "Πρόκειται να ενεργοποιήσετε τη διαγραφή καταγραφών. Αν απομακρυνθούν παλαιά δεδομένα καταγραφής και δεν έχουν δημιουργηθεί αναφορές, δεν θα μπορείτε να δείτε αναλυτικά δεδομένα του ιστορικού παρελθόντος. Θέλετε, σίγουρα, να συνεχίσετε;",
"DeleteLogsOlderThan": "Διαγραφή καταγραφών παλαιοτέρων από",
"DeleteMaxRows": "Μέγιστος αριθμός εγγραφών για διαγραφή κάθε φορά:",
"DeleteMaxRowsNoLimit": "χωρίς περιορισμό",
"DeleteReportsConfirm": "Πρόκειται να ενεργοποιήσετε τη διαγραφή δεδομένων αναφορών. Αν οι παλαιές αναφορές απομακρυνθούν, θα πρέπει να τις ξαναδημιουργήσετε ώστε να τις δείτε. Θέλετε, σίγουρα, να συνεχίσετε;",
"DeleteReportsDetailedInfo": "Τα δεδομένα από τους πίνακες αριθμητικής αρχειοθέτησης της βάσης δεδομένων (%s) και οι πίνακες αρχειοθέτησης blob (%s) θα διαγραφούν.",
"DeleteReportsInfo": "Αν ενεργοποιηθεί, οι παλαιές αναφορές θα διαγραφούν. %sΠροτείνουμε να ενεργοποιήσετε την επιλογή αυτή μόνο όταν ο διαθέσιμος χώρος της βάσης δεδομένων σας είναι περιορισμένος.%s",
"DeleteReportsInfo2": "Αν δεν ενεργοποιήσατε το «%s», οι παλαιές αναφορές θα επαναδημιουργηθούν όταν ζητηθεί.",
"DeleteReportsInfo3": "Αν έχετε ενεργοποιήσει το «%s», τα δεδομένα θα χαθούν.",
"DeleteReportsOlderThan": "Διαγραφή αναφορών παλαιότερων από",
"DeleteSchedulingSettings": "Προγραμματισμός διαγραφής παλιών δεδομένων",
"DeleteDataSettings": "Διαγραφή παλαιών καταγραφών επισκεπτών και αναφορών",
"DoNotTrack_Description": "Το Do Not Track είναι μια τεχνολογική και πολιτική πρόταση που δίνει τη δυνατότητα στους χρήστες να απενεργοποιούν την καταγραφή από ιστοσελίδες που δεν επισκέπτονται, όπως υπηρεσίες ανάλυσης, διαφημιστικά δίκτυα και κοινωνικές πλατφόρμες.",
"DoNotTrack_Disable": "Απενεργοποίηση Υποστήριξης Μη Καταγραφής",
"DoNotTrack_Disabled": "Το Piwik καταγράφει όλους τους επισκέπτες, ακόμα και αυτούς που δηλώνουν ότι «Δεν θέλουν να καταγράφονται» στους φυλλομετρητές τους.",
"DoNotTrack_DisabledMoreInfo": "Προτείνουμε να σεβαστείτε την ιδιωτικότητα των επισκεπτών σας και να ενεργοποιήσετε την υποστήριξη του DoNotTrack.",
"DoNotTrack_Enable": "Ενεργοποίηση Υποστήριξης Μη Καταγραφής",
"DoNotTrack_Enabled": "Σέβεστε την Ιδιωτικότητα των χρηστών σας. Μπράβο!",
"DoNotTrack_EnabledMoreInfo": "Όταν οι χρήστες έχουν ορίσει στον φυλλομετρητή τους ότι «Δεν επιθυμούν να καταγράφονται» (το DoNotTrack είναι ενεργό) τότε το Piwik δεν θα καταγράφει αυτές τις επισκέψεις.",
"DoNotTrack_SupportDNTPreference": "Υποστήριξη επιλογής Μη Καταγραφής",
"EstimatedDBSizeAfterPurge": "Εκτιμώμενο μέγεθος βάσης δεδομένων μετά την εκκαθάριση",
"EstimatedSpaceSaved": "Εκτιμώμενος χώρος που εξοικονομήθηκε",
"GeolocationAnonymizeIpNote": "Σημείωση: Η Γεωτοποθεσία θα έχει περίπου τα ίδια αποτελέσματα με 1 byte ανώνυμο. Με 2 bytes ή περισσότερο, η Γεωτοποθεσία θα είναι ανακριβής.",
"GetPurgeEstimate": "Λάβετε εκτίμηση διαγραφής",
"KeepBasicMetrics": "Διατήρηση βασικών μετρήσεων (επισκέψεις, προβολές σελίδας, βαθμός αναπήδησης, μετατροπή στόχου, μετατροπές ηλεκτρονικού εμπορίου, κλπ.)",
"KeepDataFor": "Να διατηρούνται όλα τα δεδομένα για",
"KeepReportSegments": "Για να διατηρήσετε τα παραπάνω δεδομένα, κρατείστε, επίσης, και τις τεμαχισμένες αναφορές",
"LastDelete": "Η τελευταία διαγραφή ήταν την",
"LeastDaysInput": "Ορίστε ένα αριθμό ημερών μεγαλύτερο από %s.",
"LeastMonthsInput": "Ορίστε έναν αριθμό μηνών μεγαλύτερο από %s.",
"MenuPrivacySettings": "Ιδιωτικό απόρρητο",
"NextDelete": "Η επόμενη προγραμματισμένη διαγραφή σε",
"PluginDescription": "Αυξάνει την Ιδιωτικότητα των χρηστών σας και κάνει συμβατή την εγκατάσταση του Piwik σας με την τοπική νομοθεσία.",
"PurgeNow": "Εκκαθάριση Βάσης Δεδομένων Τώρα",
"PurgeNowConfirm": "Πρόκειται να διαγράψετε μόνιμα δεδομένα από τη βάση δεδομένων σας. Θέλετε, σίγουρα, να συνεχίσετε;",
"PurgingData": "Εκκαθάριση δεδομενων...",
"RecommendedForPrivacy": "Προτείνεται για λόγους ιδιωτικότητας",
"ReportsDataSavedEstimate": "Μέγεθος βάσης δεδομένων",
"SaveSettingsBeforePurge": "Έχετε αλλάξει τις ρυθμίσεις διαγραφής δεδομένων. Αποθηκεύστε τες πριν αρχίσετε μια εκκαθάριση.",
"SeeAlsoOurOfficialGuidePrivacy": "Δείτε ακόμη τον επίσημο οδηγό μας: %sΙδιωτικότητα Αναλυτικών Ιστού%s",
"Teaser": "Σε αυτή τη σελίδα, μπορείτε να προσαρμόσετε το Piwik ώστε να είναι συμβατό με την ισχύουσα νομοθεσία όσο αφορά τα προσωπικά δεδομένα, %sκάνοντας ανώνυμες τις διευθύνσεις IP των επισκεπτών%s, %sαπομακρύνοντας αυτόματα τις παλαιές καταγραφές επισκεπτών από τη βάση δεδομένων%s και %sπαρέχοντας ένα μηχανισμό απενεργοποίησης για την ιστοσελίδα σας%s.",
"TeaserHeadline": "Ρυθμίσεις ιδιωτικού απορρήτου",
"UseAnonymizedIpForVisitEnrichment": "Χρησιμοποιήστε παράλληλα και τις Ανώνυμες Διευθύνσεις IP κατά τον εμπλουτισμό των επισκέψεων.",
"UseAnonymizedIpForVisitEnrichmentNote": "Πρόσθετα όπως αυτό της Γεωτοποθεσίας και του Παρόχου βελτιώνουν τα μεταδεδομένα για τους επισκέπτες. Εξ' ορισμού τα πρόσθετα αυτά χρησιμοποιούν ανώνυμες διευθύνσεις IP. Αν επιλέξετε 'Όχι', τότε θα χρησιμοποιηθούν οι πλήρεις διευθύνσεις IP, έχοντας ως αποτέλεσμα λιγότερη ιδιωτικότητα, αλλά καλύτερη ακρίβεια δεδομένων.",
"UseAnonymizeIp": "Κάντε ανώνυμες τις διευθύνσεις IP Επισκεπτών",
"UseDeleteLog": "Τακτική διαγραφή παλαιών καταγραφών επισκεπτών από τη βάση δεδομένων",
"UseDeleteReports": "Τακτική διαγραφή παλαιών αναφορών από τη βάση δεδομένων"
}
}

View file

@ -0,0 +1,68 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Select \"Yes\" if you want Piwik not to track fully qualified IP-Addresses.",
"AnonymizeIpInlineHelp": "Anonymize the last byte(s) of visitors IP addresses to comply with your local privacy laws\/guidelines.",
"AnonymizeIpExtendedHelp": "When users visit your website, Piwik will not use the full IP address (such as %1$s) but instead Piwik will anonymise it first (to %2$s). IP address anonymisation is one of the requirements set by the privacy laws in some countries such as Germany.",
"AnonymizeIpMaskLengtDescription": "Select how many bytes of the visitors' IPs should be masked.",
"AnonymizeIpMaskLength": "%1$s byte(s) - e.g. %2$s",
"CannotLockSoDeleteLogActions": "The log_action table will not be purged: please grant the LOCK TABLES privilege to the '%s' MYSQL user.",
"ClickHereSettings": "Click here to access the %s settings.",
"CurrentDBSize": "Current database size",
"DBPurged": "DB purged.",
"DeleteBothConfirm": "You are about to enable both log data deletion & report data deletion. This will permanently remove your ability to view old analytics data. Are you sure you want to do this?",
"DeleteDataDescription": "You can configure Piwik to regularly delete old visitor logs and\/or processed reports to keep your database size small.",
"DeleteDataDescription2": "If desired, pre-processed reports will not be deleted, only visit, pageview and conversion log data will be deleted. Or, the pre-processed reports can be deleted and the log data can be kept.",
"DeleteDataInterval": "Delete old data every",
"DeleteOldVisitorLogs": "Delete old visitor logs",
"DeleteOldArchivedReports": "Delete old archived reports",
"DeleteLogDescription2": "When you enable automatic log deletion, you must ensure that all previous daily reports have been processed, so that no data is lost.",
"DeleteLogInfo": "Logs from the following tables will be deleted: %s",
"DeleteLogsConfirm": "You are about to enable log data deletion. If old log data is removed, and reports haven't already been created, you will not be able to see historical past analytics data. Are you sure you want to do this?",
"DeleteLogsOlderThan": "Delete logs older than",
"DeleteMaxRows": "Maximum number of rows to delete in one run:",
"DeleteMaxRowsNoLimit": "no limit",
"DeleteReportsConfirm": "You are about to enable report data deletion. If old reports are removed, you will have to re-process them in order view them. Are you sure you want to do this?",
"DeleteReportsDetailedInfo": "Data from the database numeric archive tables (%1$s) and blob archive tables (%2$s) will be deleted.",
"DeleteReportsInfo": "If enabled, old reports will be deleted. %1$sWe recommend to enable only when your database space is limited.%2$s",
"DeleteReportsInfo2": "If you have not enabled \"%s\", old reports will be recreated automatically when requested.",
"DeleteReportsInfo3": "If you have enabled \"%s\", the data will be permanently lost.",
"DeleteReportsOlderThan": "Delete reports older than",
"DeleteSchedulingSettings": "Schedule old data deletion",
"DeleteDataSettings": "Delete old visitor logs and reports",
"DoNotTrack_Description": "Do Not Track is a technology and policy proposal that enables users to opt out of tracking by websites they do visit, including analytics services, advertising networks, and social platforms.",
"DoNotTrack_Disable": "Disable Do Not Track support",
"DoNotTrack_Disabled": "Piwik is currently tracking all visitors, even when they specified \"I do not want to be tracked\" in their web browsers.",
"DoNotTrack_DisabledMoreInfo": "We recommend to respect your visitors privacy and enable DoNotTrack support.",
"DoNotTrack_Enable": "Enable Do Not Track support",
"DoNotTrack_Enabled": "You are currently respecting your users Privacy, Bravo!",
"DoNotTrack_EnabledMoreInfo": "When users have set their web browser to \"I do not want to be tracked\" (DoNotTrack is enabled) then Piwik will not track these visits.",
"DoNotTrack_SupportDNTPreference": "Support Do Not Track preference",
"EstimatedDBSizeAfterPurge": "Estimated database size after purge",
"EstimatedSpaceSaved": "Estimated space saved",
"GeolocationAnonymizeIpNote": "Note: Geolocation will have approximately the same results with 1 byte anonymized. With 2 bytes or more, Geolocation will be inaccurate.",
"GetPurgeEstimate": "Get purge estimate",
"KeepBasicMetrics": "Keep basic metrics (visits, page views, bounce rate, goal conversions, ecommerce conversions, etc.)",
"KeepDataFor": "Keep all data for",
"KeepReportSegments": "For kept data above, also keep segmented reports",
"LastDelete": "Last deletion was on",
"LeastDaysInput": "Please specify a number of days greater than %s.",
"LeastMonthsInput": "Please specify a number of months greater than %s.",
"MenuPrivacySettings": "Privacy",
"NextDelete": "Next scheduled deletion in",
"PluginDescription": "Increase Privacy for your users and make your Piwik instance privacy compliant with your local legislation. ",
"PurgeNow": "Purge DB Now",
"PurgeNowConfirm": "You are about to permanently delete data from your database. Are you sure you want to continue?",
"PurgingData": "Purging data...",
"RecommendedForPrivacy": "Recommended for privacy",
"ReportsDataSavedEstimate": "Database size",
"SaveSettingsBeforePurge": "You have changed the data deletion settings. Please save them before starting a purge.",
"SeeAlsoOurOfficialGuidePrivacy": "See also our official guide: %1$sWeb Analytics Privacy%2$s",
"Teaser": "On this page, you can customize Piwik to make it privacy compliant with existing legislations, by: %1$s anonymizing the visitor IP%2$s, %3$s automatically remove old visitor logs from the database%4$s, and %5$s providing an Opt-out mechanism for your website%6$s.",
"TeaserHeadline": "Privacy Settings",
"UseAnonymizedIpForVisitEnrichment": "Also use the Anonymized IP addresses when enriching visits.",
"UseAnonymizedIpForVisitEnrichmentNote": "Plugins such as Geo Location via IP and Provider improve visitor's metadata. By default these plugins use the anonymized IP addresses. If you select 'No', then the non-anonymized full IP address will be used instead, resulting in less privacy but better data accuracy.",
"UseAnonymizeIp": "Anonymize Visitors' IP addresses",
"UseDeleteLog": "Regularly delete old visitor logs from the database",
"UseDeleteReports": "Regularly delete old reports from the database"
}
}

View file

@ -0,0 +1,68 @@
{
"PrivacyManager": {
"AnonymizeIpDescription": "Seleccione \"Si\" si desea que Piwik no registre direcciones IP completas.",
"AnonymizeIpInlineHelp": "Ocultar los últimos bit(s) de la dirección IP del visitante para cumplir con las leyes\/directrices de privacidad de su jurisdicción.",
"AnonymizeIpExtendedHelp": "Cuando los usuarios visiten su sitio de internet, Piwik no usará la dirección completa IP (tales como %s) sino que Piwik las mantendrá anónimas primeramente (como %s). El anonimato de una dirección IP es uno de los requerimientos dispuesto por leyes de privacidad en algunos países tales como Alemania.",
"AnonymizeIpMaskLengtDescription": "Seleccione cuantos bytes de las direcciones IP de los visitantes deben ser enmascaradas.",
"AnonymizeIpMaskLength": "%s byte(s) - ej. %s",
"CannotLockSoDeleteLogActions": "La tabla log_action no será purgada: por favor, conceda el privilegio LOCK TABLES al usuario MYSQL '%s'.",
"ClickHereSettings": "Haga clic aquí para acceder a la configuración de %s",
"CurrentDBSize": "Tamaño de la actual base de datos",
"DBPurged": "Base de datos purgada.",
"DeleteBothConfirm": "Está a punto de habilitar la eliminación de datos de informes y de registros. Esta acción permanentemente quitará la posibilidad de disponer de información analítica añeja. <¡Está seguro que desea llevarlo a cabo?",
"DeleteDataDescription": "Puede configurar Piwik para que elimine regularmente registros antiguos de los visitantes y\/o procesar informes para mantener el tamaño de la base de datos lo más pequeña posible",
"DeleteDataDescription2": "Si es habilitado, los informes pre-procesados no serán borrados; solo las visitas, las vistas de página y datos de registro de conversiones serán eliminados. O, estos informes pre-procesados pueden ser borrados y los registros mantenidos.",
"DeleteDataInterval": "Eliminar información antigua cada",
"DeleteOldVisitorLogs": "Borrar los antiguos registros de visitantes",
"DeleteOldArchivedReports": "Borrar los antiguos informes archivados",
"DeleteLogDescription2": "Cuando habilite la eliminación automática de registros, debe comprobar que todos los informes diarios previos han sido procesados, de modo que ningún dato sea perdido.",
"DeleteLogInfo": "Registros de las siguientes tablas serán eliminados: %s",
"DeleteLogsConfirm": "Está por habilitar la eliminación de datos de registro. Si dicha información es removida, y los informes no se han creado, no podrá ver datos analíticos históricos. ¿Desea continuar?",
"DeleteLogsOlderThan": "Eliminar registros más antiguos que",
"DeleteMaxRows": "Número máximo de filas que serán eliminadas en cada ejecución:",
"DeleteMaxRowsNoLimit": "sin límites",
"DeleteReportsConfirm": "Está disponiendo la eliminación de datos de informes. Si un antiguo informe es borrado, tendrá que reprocesarlos nuevamente para visualizarlos. ¿Está seguro que desea hacer esto?",
"DeleteReportsDetailedInfo": "Información desde las tablas numéricas de los archivos de la base de datos (%s) y borradores de archivos de tablas (%s) serán eliminados.",
"DeleteReportsInfo": "Si es habilitado, todos los antiguos informes serán eliminados. %sRecomendamos habilitarlo solo cuando el espacio de la base de datos sea limitado.%s",
"DeleteReportsInfo2": "Si no ha habilitado \"%s\", los antiguos informes serán recreados automáticamente cuando sean solicitados.",
"DeleteReportsInfo3": "Si ha habilitado \"%s\", la información será eliminada de forma permanente.",
"DeleteReportsOlderThan": "Borrar informes anteriores a",
"DeleteSchedulingSettings": "Programar el borrado de datos añejos",
"DeleteDataSettings": "Borrar los registros y reportes de los antiguos visitantes",
"DoNotTrack_Description": "Do Not Track es una tecnología y una propuesta política que permite a los usuarios decidir no ser rastreados por sitios de internet que no visitan, incluyendo servicios analíticos, redes de publicidad y plataformas sociales.",
"DoNotTrack_Disable": "Deshabilitar respaldo a Do Not Track",
"DoNotTrack_Disabled": "Piwik está actualmente rastreando a todos los visitantes; incluso aunque hayan habilitado en sus navegadores de internet la opción \"No quiero ser rastreado\".",
"DoNotTrack_DisabledMoreInfo": "Recomendamos respetar la privacidad de sus visitantes y habilitar la opción DoNotTrack.",
"DoNotTrack_Enable": "Habilitar soporte a Do Not Track",
"DoNotTrack_Enabled": "Actualmente está respetando la privacidad de sus visitantes, ¡Bravo!",
"DoNotTrack_EnabledMoreInfo": "Cuando los usuarios han dispuesto en sus navegadores de internet que \"No deseo ser rastreado\" (DoNotTrack está habilitado), Piwik no rastreará a estos visitantes.",
"DoNotTrack_SupportDNTPreference": "Soporte a la preferencia Do Not Track",
"EstimatedDBSizeAfterPurge": "Tamaño aproximado de la base de datos después de la purga",
"EstimatedSpaceSaved": "Espacio estimado guardado",
"GeolocationAnonymizeIpNote": "Nota: Geolocalización tendrá aproximadamente los mismos resultados con 1 byte anónimo. Con 2 bytes o más, la Geolocalización será imprecisa.",
"GetPurgeEstimate": "Obtener estimación de purga",
"KeepBasicMetrics": "Mantener métricas básicas (visitantes, vistas de páginas, tasa de rebote, conversiones de meta, conversiones de comercio electrónico, etc.)",
"KeepDataFor": "Mantener toda la información para",
"KeepReportSegments": "Para mantener la información superior, también mantenga informes segmentados",
"LastDelete": "La última eliminación fue en",
"LeastDaysInput": "Por favor, especifique un número de días superior a %s.",
"LeastMonthsInput": "Por favor, especifique un número de meses mayor que %s.",
"MenuPrivacySettings": "Privacidad",
"NextDelete": "La próxima eliminación programada es en",
"PluginDescription": "Aumente la privacidad de sus usuarios y haga que la modalidad de seguridad de Piwik sea adecuada con su legislación local.",
"PurgeNow": "Purgar base de datos ahora",
"PurgeNowConfirm": "Está a punto de borrar información permanentemente de su base de datos. ¿Está seguro que desea continuar?",
"PurgingData": "Purgando información...",
"RecommendedForPrivacy": "Recomendado por privacidad",
"ReportsDataSavedEstimate": "Tamaño de la base de datos",
"SaveSettingsBeforePurge": "Ha cambiado la configuración de borrado de información. Por favor, guárdelas antes de iniciar la purga.",
"SeeAlsoOurOfficialGuidePrivacy": "Lee también nuestra guía oficial: %sPrivacidad del análisis de internet%s",
"Teaser": "En esta página, puede personalizar Piwik para hacer que cumpla con la privacidad de las legislaciones existentes: %s haciendo anónima la IP del visitante%s, %s eliminar automáticamente los antiguos registros de los visitantes de la base de datos%s. y %s proporcionando un mecanismo de opción de desconectarse de su sitio de internet (para que los visitantes no sean seguidos)%s",
"TeaserHeadline": "Configuración de privacidad",
"UseAnonymizedIpForVisitEnrichment": "Usa también direcciones IP anónimas para enriquecer las visitas.",
"UseAnonymizedIpForVisitEnrichmentNote": "Los complementos Geo Location a través de IP y Provider mejoran los metadatos de los visitantes. Por defecto estos complementos utilizan las direcciones IP anónimas. Si elige 'No' será utilizada una dirección completa de forma no anónima lo que resulta en una menor privacidad pero una mayor precisión de datos.",
"UseAnonymizeIp": "Hacer anónimas las direcciones IP de los visitantes",
"UseDeleteLog": "Eliminar regularmente registros antiguos de la base de datos",
"UseDeleteReports": "Regularmente borrar los antiguos informes de la base de datos"
}
}

Some files were not shown because too many files have changed in this diff Show more