PDF rausgenommen
This commit is contained in:
418
msd2/tracking/piwik/plugins/UserCountry/API.php
Normal file
418
msd2/tracking/piwik/plugins/UserCountry/API.php
Normal file
@ -0,0 +1,418 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Exception;
|
||||
use Piwik\Archive;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\DataTable;
|
||||
use Piwik\Date;
|
||||
use Piwik\Option;
|
||||
use Piwik\Period;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\GeoIp2\Commands\ConvertRegionCodesToIso;
|
||||
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
|
||||
use Piwik\Tracker\Visit;
|
||||
|
||||
/**
|
||||
* @see plugins/UserCountry/functions.php
|
||||
*/
|
||||
require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/functions.php';
|
||||
|
||||
/**
|
||||
* The UserCountry API lets you access reports about your visitors' Countries and Continents.
|
||||
* @method static \Piwik\Plugins\UserCountry\API getInstance()
|
||||
*/
|
||||
class API extends \Piwik\Plugin\API
|
||||
{
|
||||
public function getCountry($idSite, $period, $date, $segment = false)
|
||||
{
|
||||
$dataTable = $this->getDataTable(Archiver::COUNTRY_RECORD_NAME, $idSite, $period, $date, $segment);
|
||||
|
||||
$dataTables = [$dataTable];
|
||||
|
||||
if ($dataTable instanceof DataTable\Map) {
|
||||
$dataTables = $dataTable->getDataTables();
|
||||
}
|
||||
|
||||
foreach ($dataTables as $dt) {
|
||||
if ($dt->getRowFromLabel('ti')) {
|
||||
$dt->filter('GroupBy', array(
|
||||
'label',
|
||||
function ($label) {
|
||||
if ($label == 'ti') {
|
||||
return 'cn';
|
||||
}
|
||||
return $label;
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
// apply filter on the whole datatable in order the inline search to work (searches are done on "beautiful" label)
|
||||
$dataTable->filter('AddSegmentValue');
|
||||
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'code'));
|
||||
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getFlagFromCode'));
|
||||
$dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\countryTranslate'));
|
||||
|
||||
$dataTable->queueFilter('ColumnCallbackAddMetadata', array(array(), 'logoHeight', function () { return 16; }));
|
||||
|
||||
return $dataTable;
|
||||
}
|
||||
|
||||
public function getContinent($idSite, $period, $date, $segment = false)
|
||||
{
|
||||
$dataTable = $this->getDataTable(Archiver::COUNTRY_RECORD_NAME, $idSite, $period, $date, $segment);
|
||||
|
||||
$getContinent = array('Piwik\Common', 'getContinent');
|
||||
$dataTable->filter('GroupBy', array('label', $getContinent));
|
||||
|
||||
$dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\continentTranslate'));
|
||||
$dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'code'));
|
||||
|
||||
return $dataTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns visit information for every region with at least one visit.
|
||||
*
|
||||
* @param int|string $idSite
|
||||
* @param string $period
|
||||
* @param string $date
|
||||
* @param string|bool $segment
|
||||
* @return DataTable
|
||||
*/
|
||||
public function getRegion($idSite, $period, $date, $segment = false)
|
||||
{
|
||||
$dataTable = $this->getDataTable(Archiver::REGION_RECORD_NAME, $idSite, $period, $date, $segment);
|
||||
|
||||
$separator = Archiver::LOCATION_SEPARATOR;
|
||||
$unk = Visit::UNKNOWN_CODE;
|
||||
|
||||
$dataTables = [$dataTable];
|
||||
|
||||
if ($dataTable instanceof DataTable\Map) {
|
||||
$dataTables = $dataTable->getDataTables();
|
||||
}
|
||||
|
||||
foreach ($dataTables as $dt) {
|
||||
$archiveDate = $dt->getMetadata(DataTable::ARCHIVED_DATE_METADATA_NAME);
|
||||
|
||||
// convert fips region codes to iso if required
|
||||
if ($this->shouldRegionCodesBeConvertedToIso($archiveDate, $date, $period)) {
|
||||
$dt->filter('GroupBy', array(
|
||||
'label',
|
||||
function ($label) use ($separator, $unk) {
|
||||
$regionCode = getElementFromStringArray($label, $separator, 0, '');
|
||||
$countryCode = getElementFromStringArray($label, $separator, 1, '');
|
||||
|
||||
list($countryCode, $regionCode) = GeoIp2::convertRegionCodeToIso($countryCode,
|
||||
$regionCode, true);
|
||||
|
||||
$splitLabel = explode($separator, $label);
|
||||
|
||||
if (isset($splitLabel[0])) {
|
||||
$splitLabel[0] = $regionCode;
|
||||
}
|
||||
|
||||
if (isset($splitLabel[1])) {
|
||||
$splitLabel[1] = strtolower($countryCode);
|
||||
}
|
||||
|
||||
return implode($separator, $splitLabel);
|
||||
}
|
||||
));
|
||||
} else if ($dt->getRowFromLabel('1|ti')) {
|
||||
$dt->filter('GroupBy', array(
|
||||
'label',
|
||||
function ($label) {
|
||||
if ($label == '1|ti') {
|
||||
return '14|cn';
|
||||
}
|
||||
return $label;
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$segments = array('regionCode', 'countryCode');
|
||||
$dataTable->filter('AddSegmentByLabel', array($segments, Archiver::LOCATION_SEPARATOR));
|
||||
|
||||
// split the label and put the elements into the 'region' and 'country' metadata fields
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'region', __NAMESPACE__ . '\getElementFromStringArray', array($separator, 0, $unk)));
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'country', __NAMESPACE__ . '\getElementFromStringArray', array($separator, 1, $unk)));
|
||||
|
||||
// add country name metadata
|
||||
$dataTable->filter('MetadataCallbackAddMetadata',
|
||||
array('country', 'country_name', __NAMESPACE__ . '\CountryTranslate', $applyToSummaryRow = false));
|
||||
|
||||
// get the region name of each row and put it into the 'region_name' metadata
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'region_name', __NAMESPACE__ . '\getRegionName', $params = null,
|
||||
$applyToSummaryRow = false));
|
||||
|
||||
// add the country flag as a url to the 'logo' metadata field
|
||||
$dataTable->filter('MetadataCallbackAddMetadata', array('country', 'logo', __NAMESPACE__ . '\getFlagFromCode'));
|
||||
|
||||
// prettify the region label
|
||||
$dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\getPrettyRegionName'));
|
||||
|
||||
$dataTable->queueFilter('ReplaceSummaryRowLabel');
|
||||
|
||||
return $dataTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns visit information for every city with at least one visit.
|
||||
*
|
||||
* @param int|string $idSite
|
||||
* @param string $period
|
||||
* @param string $date
|
||||
* @param string|bool $segment
|
||||
* @return DataTable
|
||||
*/
|
||||
public function getCity($idSite, $period, $date, $segment = false)
|
||||
{
|
||||
$dataTable = $this->getDataTable(Archiver::CITY_RECORD_NAME, $idSite, $period, $date, $segment);
|
||||
|
||||
$separator = Archiver::LOCATION_SEPARATOR;
|
||||
$unk = Visit::UNKNOWN_CODE;
|
||||
|
||||
$dataTables = [$dataTable];
|
||||
|
||||
if ($dataTable instanceof DataTable\Map) {
|
||||
$dataTables = $dataTable->getDataTables();
|
||||
}
|
||||
|
||||
foreach ($dataTables as $dt) {
|
||||
$archiveDate = $dt->getMetadata(DataTable::ARCHIVED_DATE_METADATA_NAME);
|
||||
|
||||
// convert fips region codes to iso if required
|
||||
if ($this->shouldRegionCodesBeConvertedToIso($archiveDate, $date, $period)) {
|
||||
$dt->filter('GroupBy', array(
|
||||
'label',
|
||||
function ($label) use ($separator, $unk) {
|
||||
$regionCode = getElementFromStringArray($label, $separator, 1, '');
|
||||
$countryCode = getElementFromStringArray($label, $separator, 2, '');
|
||||
|
||||
list($countryCode, $regionCode) = GeoIp2::convertRegionCodeToIso($countryCode,
|
||||
$regionCode, true);
|
||||
|
||||
$splitLabel = explode($separator, $label);
|
||||
|
||||
if (isset($splitLabel[1])) {
|
||||
$splitLabel[1] = $regionCode;
|
||||
}
|
||||
|
||||
if (isset($splitLabel[2])) {
|
||||
$splitLabel[2] = strtolower($countryCode);
|
||||
}
|
||||
|
||||
return implode($separator, $splitLabel);
|
||||
}
|
||||
));
|
||||
} else {
|
||||
$dt->filter('GroupBy', array(
|
||||
'label',
|
||||
function ($label) {
|
||||
if (substr($label, -5) == '|1|ti') {
|
||||
return substr($label, 0, -5) . '|14|cn';
|
||||
}
|
||||
return $label;
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$segments = array('city', 'regionCode', 'countryCode');
|
||||
$dataTable->filter('AddSegmentByLabel', array($segments, Archiver::LOCATION_SEPARATOR));
|
||||
|
||||
// split the label and put the elements into the 'city_name', 'region', 'country',
|
||||
// 'lat' & 'long' metadata fields
|
||||
$strUnknown = Piwik::translate('General_Unknown');
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'city_name', __NAMESPACE__ . '\getElementFromStringArray',
|
||||
array($separator, 0, $strUnknown)));
|
||||
$dataTable->filter('MetadataCallbackAddMetadata',
|
||||
array('city_name', 'city', function ($city) use ($strUnknown) {
|
||||
if ($city == $strUnknown) {
|
||||
return "xx";
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}));
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'region', __NAMESPACE__ . '\getElementFromStringArray', array($separator, 1, $unk)));
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'country', __NAMESPACE__ . '\getElementFromStringArray', array($separator, 2, $unk)));
|
||||
|
||||
// backwards compatibility: for reports that have lat|long in label
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'lat', __NAMESPACE__ . '\getElementFromStringArray', array($separator, 3, false)));
|
||||
$dataTable->filter('ColumnCallbackAddMetadata',
|
||||
array('label', 'long', __NAMESPACE__ . '\getElementFromStringArray', array($separator, 4, false)));
|
||||
|
||||
// add country name & region name metadata
|
||||
$dataTable->filter('MetadataCallbackAddMetadata',
|
||||
array('country', 'country_name', __NAMESPACE__ . '\countryTranslate', $applyToSummaryRow = false));
|
||||
|
||||
$getRegionName = '\\Piwik\\Plugins\\UserCountry\\getRegionNameFromCodes';
|
||||
$dataTable->filter('MetadataCallbackAddMetadata', array(
|
||||
array('country', 'region'), 'region_name', $getRegionName, $applyToSummaryRow = false));
|
||||
|
||||
// add the country flag as a url to the 'logo' metadata field
|
||||
$dataTable->filter('MetadataCallbackAddMetadata', array('country', 'logo', __NAMESPACE__ . '\getFlagFromCode'));
|
||||
|
||||
// prettify the label
|
||||
$dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\getPrettyCityName'));
|
||||
|
||||
$dataTable->queueFilter('ReplaceSummaryRowLabel');
|
||||
|
||||
return $dataTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* if no switch to ISO was done --> no conversion as only FIPS codes are in use and handled correctly
|
||||
* if there has been a switch to ISO, we need to check the date:
|
||||
* - if the start date of the period is after the date we switched to ISO: no conversion needed
|
||||
* - if not we need to convert the codes to ISO, if the code is mappable
|
||||
* Note: as all old codes are mapped, not mappable codes need to be iso codes already, so we leave them
|
||||
* @param $date
|
||||
* @param $period
|
||||
* @return bool
|
||||
*/
|
||||
private function shouldRegionCodesBeConvertedToIso($archiveDate, $date, $period)
|
||||
{
|
||||
$timeOfSwitch = Option::get(GeoIp2::SWITCH_TO_ISO_REGIONS_OPTION_NAME);
|
||||
|
||||
if (empty($timeOfSwitch)) {
|
||||
return false; // if option was not set, all codes are fips codes, so leave them
|
||||
}
|
||||
|
||||
try {
|
||||
$dateOfSwitch = Date::factory((int)$timeOfSwitch);
|
||||
$period = Period\Factory::build($period, $date);
|
||||
$periodStart = $period->getDateStart();
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// if all region codes in log tables have been converted, check if archiving date was after the date of switch to iso
|
||||
// this check might not be fully correct in cases were only periods > day get recreated, but it should avoid some
|
||||
// double conversion if all archives have been recreated after converting all region codes
|
||||
$codesConverted = Option::get(ConvertRegionCodesToIso::OPTION_NAME);
|
||||
|
||||
if ($codesConverted && $archiveDate) {
|
||||
try {
|
||||
$dateOfArchive = Date::factory($archiveDate);
|
||||
|
||||
if ($dateOfArchive->isLater($dateOfSwitch)) {
|
||||
return false;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($dateOfSwitch->isEarlier($periodStart)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a simple mapping from country code to country name
|
||||
*
|
||||
* @return \string[]
|
||||
*/
|
||||
public function getCountryCodeMapping()
|
||||
{
|
||||
$regionDataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\RegionDataProvider');
|
||||
|
||||
$countryCodeList = $regionDataProvider->getCountryList();
|
||||
|
||||
array_walk($countryCodeList, function(&$item, $key) {
|
||||
$item = Piwik::translate('Intl_Country_'.strtoupper($key));
|
||||
});
|
||||
|
||||
return $countryCodeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses a location provider to find/guess the location of an IP address.
|
||||
*
|
||||
* See LocationProvider::getLocation to see the details
|
||||
* of the result of this function.
|
||||
*
|
||||
* @param string $ip The IP address.
|
||||
* @param bool|string $provider The ID of the provider to use or false to use the
|
||||
* currently configured one.
|
||||
* @throws Exception
|
||||
* @return array|false
|
||||
*/
|
||||
public function getLocationFromIP($ip, $provider = false)
|
||||
{
|
||||
Piwik::checkUserHasSomeViewAccess();
|
||||
|
||||
if (empty($provider)) {
|
||||
$provider = LocationProvider::getCurrentProviderId();
|
||||
}
|
||||
|
||||
$oProvider = LocationProvider::getProviderById($provider);
|
||||
if (empty($oProvider)) {
|
||||
throw new Exception("Cannot find the '$provider' provider. It is either an invalid provider "
|
||||
. "ID or the ID of a provider that is not working.");
|
||||
}
|
||||
|
||||
$location = $oProvider->getLocation(array('ip' => $ip));
|
||||
if (empty($location)) {
|
||||
throw new Exception("Could not geolocate '$ip'!");
|
||||
}
|
||||
$location['ip'] = $ip;
|
||||
return $location;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the location provider
|
||||
*
|
||||
* @param string $providerId The ID of the provider to use eg 'default', 'geoip2_php', ...
|
||||
* @throws Exception if ID is invalid
|
||||
*/
|
||||
public function setLocationProvider($providerId)
|
||||
{
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
|
||||
if (!UserCountry::isGeoLocationAdminEnabled()) {
|
||||
throw new \Exception('Setting geo location has been disabled in config.');
|
||||
}
|
||||
|
||||
$provider = LocationProvider::setCurrentProvider($providerId);
|
||||
if ($provider === false) {
|
||||
throw new Exception("Invalid provider ID: '$providerId'.");
|
||||
}
|
||||
}
|
||||
|
||||
protected function getDataTable($name, $idSite, $period, $date, $segment)
|
||||
{
|
||||
Piwik::checkUserHasViewAccess($idSite);
|
||||
$archive = Archive::build($idSite, $period, $date, $segment);
|
||||
$dataTable = $archive->getDataTable($name);
|
||||
$dataTable->queueFilter('ReplaceColumnNames');
|
||||
return $dataTable;
|
||||
}
|
||||
|
||||
public function getNumberOfDistinctCountries($idSite, $period, $date, $segment = false)
|
||||
{
|
||||
Piwik::checkUserHasViewAccess($idSite);
|
||||
$archive = Archive::build($idSite, $period, $date, $segment);
|
||||
return $archive->getDataTableFromNumeric(Archiver::DISTINCT_COUNTRIES_METRIC);
|
||||
}
|
||||
}
|
188
msd2/tracking/piwik/plugins/UserCountry/Archiver.php
Normal file
188
msd2/tracking/piwik/plugins/UserCountry/Archiver.php
Normal file
@ -0,0 +1,188 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Piwik\ArchiveProcessor;
|
||||
use Piwik\DataArray;
|
||||
use Piwik\DataTable;
|
||||
use Piwik\Metrics;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
|
||||
class Archiver extends \Piwik\Plugin\Archiver
|
||||
{
|
||||
const COUNTRY_RECORD_NAME = 'UserCountry_country';
|
||||
const REGION_RECORD_NAME = 'UserCountry_region';
|
||||
const CITY_RECORD_NAME = 'UserCountry_city';
|
||||
const DISTINCT_COUNTRIES_METRIC = 'UserCountry_distinctCountries';
|
||||
|
||||
// separate region, city & country info in stored report labels
|
||||
const LOCATION_SEPARATOR = '|';
|
||||
|
||||
private $latLongForCities = array();
|
||||
|
||||
protected $maximumRows;
|
||||
|
||||
const COUNTRY_FIELD = 'location_country';
|
||||
|
||||
const REGION_FIELD = 'location_region';
|
||||
|
||||
const CITY_FIELD = 'location_city';
|
||||
|
||||
protected $dimensions = array(self::COUNTRY_FIELD, self::REGION_FIELD, self::CITY_FIELD);
|
||||
|
||||
/**
|
||||
* @var DataArray[] $arrays
|
||||
*/
|
||||
protected $arrays;
|
||||
const LATITUDE_FIELD = 'location_latitude';
|
||||
const LONGITUDE_FIELD = 'location_longitude';
|
||||
|
||||
public function aggregateDayReport()
|
||||
{
|
||||
foreach ($this->dimensions as $dimension) {
|
||||
$this->arrays[$dimension] = new DataArray();
|
||||
}
|
||||
$this->aggregateFromVisits();
|
||||
$this->aggregateFromConversions();
|
||||
$this->insertDayReports();
|
||||
}
|
||||
|
||||
public function aggregateMultipleReports()
|
||||
{
|
||||
$dataTableToSum = array(
|
||||
self::COUNTRY_RECORD_NAME,
|
||||
self::REGION_RECORD_NAME,
|
||||
self::CITY_RECORD_NAME,
|
||||
);
|
||||
$columnsAggregationOperation = null;
|
||||
|
||||
$nameToCount = $this->getProcessor()->aggregateDataTableRecords(
|
||||
$dataTableToSum,
|
||||
$maximumRowsInDataTableLevelZero = null,
|
||||
$maximumRowsInSubDataTable = null,
|
||||
$columnToSortByBeforeTruncation = null,
|
||||
$columnsAggregationOperation,
|
||||
$columnsToRenameAfterAggregation = null,
|
||||
$countRowsRecursive = array()
|
||||
);
|
||||
$this->getProcessor()->insertNumericRecord(self::DISTINCT_COUNTRIES_METRIC,
|
||||
$nameToCount[self::COUNTRY_RECORD_NAME]['level0']);
|
||||
}
|
||||
|
||||
protected function aggregateFromVisits()
|
||||
{
|
||||
$additionalSelects = array('MAX(log_visit.location_latitude) as location_latitude',
|
||||
'MAX(log_visit.location_longitude) as location_longitude');
|
||||
$query = $this->getLogAggregator()->queryVisitsByDimension($this->dimensions, $where = false, $additionalSelects);
|
||||
if ($query === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
while ($row = $query->fetch()) {
|
||||
$this->makeRegionCityLabelsUnique($row);
|
||||
$this->rememberCityLatLong($row);
|
||||
|
||||
foreach ($this->arrays as $dimension => $dataArray) {
|
||||
$dataArray->sumMetricsVisits($row[$dimension], $row);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes sure the region and city of a query row are unique.
|
||||
*
|
||||
* @param array $row
|
||||
*/
|
||||
private function makeRegionCityLabelsUnique(&$row)
|
||||
{
|
||||
// remove the location separator from the region/city/country we get from the query
|
||||
foreach ($this->dimensions as $column) {
|
||||
$row[$column] = str_replace(self::LOCATION_SEPARATOR, '', $row[$column]);
|
||||
}
|
||||
|
||||
if (!empty($row[self::REGION_FIELD])) {
|
||||
$row[self::REGION_FIELD] = $row[self::REGION_FIELD] . self::LOCATION_SEPARATOR . $row[self::COUNTRY_FIELD];
|
||||
}
|
||||
|
||||
if (!empty($row[self::CITY_FIELD])) {
|
||||
$row[self::CITY_FIELD] = $row[self::CITY_FIELD] . self::LOCATION_SEPARATOR . $row[self::REGION_FIELD];
|
||||
}
|
||||
}
|
||||
|
||||
protected function rememberCityLatLong($row)
|
||||
{
|
||||
if (!empty($row[self::CITY_FIELD])
|
||||
&& !empty($row[self::LATITUDE_FIELD])
|
||||
&& !empty($row[self::LONGITUDE_FIELD])
|
||||
&& empty($this->latLongForCities[$row[self::CITY_FIELD]])
|
||||
) {
|
||||
$this->latLongForCities[$row[self::CITY_FIELD]] = array($row[self::LATITUDE_FIELD], $row[self::LONGITUDE_FIELD]);
|
||||
}
|
||||
}
|
||||
|
||||
protected function aggregateFromConversions()
|
||||
{
|
||||
$query = $this->getLogAggregator()->queryConversionsByDimension($this->dimensions);
|
||||
|
||||
if ($query === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
while ($row = $query->fetch()) {
|
||||
$this->makeRegionCityLabelsUnique($row);
|
||||
|
||||
foreach ($this->arrays as $dimension => $dataArray) {
|
||||
$dataArray->sumMetricsGoals($row[$dimension], $row);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($this->arrays as $dataArray) {
|
||||
$dataArray->enrichMetricsWithConversions();
|
||||
}
|
||||
}
|
||||
|
||||
protected function insertDayReports()
|
||||
{
|
||||
$tableCountry = $this->arrays[self::COUNTRY_FIELD]->asDataTable();
|
||||
$this->getProcessor()->insertNumericRecord(self::DISTINCT_COUNTRIES_METRIC, $tableCountry->getRowsCount());
|
||||
$report = $tableCountry->getSerialized();
|
||||
$this->getProcessor()->insertBlobRecord(self::COUNTRY_RECORD_NAME, $report);
|
||||
|
||||
$tableRegion = $this->arrays[self::REGION_FIELD]->asDataTable();
|
||||
$report = $tableRegion->getSerialized($this->maximumRows, $this->maximumRows, Metrics::INDEX_NB_VISITS);
|
||||
$this->getProcessor()->insertBlobRecord(self::REGION_RECORD_NAME, $report);
|
||||
|
||||
$tableCity = $this->arrays[self::CITY_FIELD]->asDataTable();
|
||||
$this->setLatitudeLongitude($tableCity);
|
||||
$report = $tableCity->getSerialized($this->maximumRows, $this->maximumRows, Metrics::INDEX_NB_VISITS);
|
||||
$this->getProcessor()->insertBlobRecord(self::CITY_RECORD_NAME, $report);
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility method, appends latitude/longitude pairs to city table labels, if that data
|
||||
* exists for the city.
|
||||
*/
|
||||
private function setLatitudeLongitude(DataTable $tableCity)
|
||||
{
|
||||
foreach ($tableCity->getRows() as $row) {
|
||||
$label = $row->getColumn('label');
|
||||
if (isset($this->latLongForCities[$label])) {
|
||||
// get lat/long for city
|
||||
list($lat, $long) = $this->latLongForCities[$label];
|
||||
$lat = round($lat, LocationProvider::GEOGRAPHIC_COORD_PRECISION);
|
||||
$long = round($long, LocationProvider::GEOGRAPHIC_COORD_PRECISION);
|
||||
|
||||
// set latitude + longitude metadata
|
||||
$row->setMetadata('lat', $lat);
|
||||
$row->setMetadata('long', $long);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
<?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\UserCountry\Categories;
|
||||
|
||||
use Piwik\Category\Category;
|
||||
|
||||
class LocationsCategory extends Category
|
||||
{
|
||||
protected $id = 'UserCountry_VisitLocation';
|
||||
protected $order = 7;
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
<?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\UserCountry\Categories;
|
||||
|
||||
use Piwik\Category\Subcategory;
|
||||
|
||||
class LocationsSubcategory extends Subcategory
|
||||
{
|
||||
protected $categoryId = 'General_Visitors';
|
||||
protected $id = 'UserCountry_SubmenuLocations';
|
||||
protected $order = 10;
|
||||
|
||||
}
|
92
msd2/tracking/piwik/plugins/UserCountry/Columns/Base.php
Normal file
92
msd2/tracking/piwik/plugins/UserCountry/Columns/Base.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Common;
|
||||
use Piwik\Exception\InvalidRequestParameterException;
|
||||
use Piwik\Network\IPUtils;
|
||||
use Piwik\Plugin\Dimension\VisitDimension;
|
||||
use Piwik\Plugins\UserCountry\VisitorGeolocator;
|
||||
use Piwik\Plugins\PrivacyManager\Config as PrivacyManagerConfig;
|
||||
use Piwik\Tracker\Visitor;
|
||||
use Piwik\Tracker\Request;
|
||||
|
||||
abstract class Base extends VisitDimension
|
||||
{
|
||||
/**
|
||||
* @var VisitorGeolocator
|
||||
*/
|
||||
private $visitorGeolocator;
|
||||
|
||||
protected function getUrlOverrideValueIfAllowed($urlParamToOverride, Request $request)
|
||||
{
|
||||
$value = Common::getRequestVar($urlParamToOverride, false, 'string', $request->getParams());
|
||||
|
||||
if (!empty($value)) {
|
||||
if (!$request->isAuthenticated()) {
|
||||
Common::printDebug("WARN: Tracker API '$urlParamToOverride' was used with invalid token_auth");
|
||||
throw new InvalidRequestParameterException("Tracker API '$urlParamToOverride' was used, requires valid token_auth");
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getRequiredVisitFields()
|
||||
{
|
||||
return array('location_ip', 'location_browser_lang');
|
||||
}
|
||||
|
||||
protected function getLocationDetail($userInfo, $locationKey)
|
||||
{
|
||||
$useLocationCache = empty($GLOBALS['PIWIK_TRACKER_LOCAL_TRACKING']);
|
||||
$location = $this->getVisitorGeolocator()->getLocation($userInfo, $useLocationCache);
|
||||
|
||||
if (!isset($location[$locationKey])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $location[$locationKey];
|
||||
}
|
||||
|
||||
protected function getVisitorGeolocator()
|
||||
{
|
||||
if ($this->visitorGeolocator === null) {
|
||||
$this->visitorGeolocator = new VisitorGeolocator();
|
||||
}
|
||||
|
||||
return $this->visitorGeolocator;
|
||||
}
|
||||
|
||||
protected function getUserInfo(Request $request, Visitor $visitor)
|
||||
{
|
||||
$ipAddress = $this->getIpAddress($visitor->getVisitorColumn('location_ip'), $request);
|
||||
$language = $request->getBrowserLanguage();
|
||||
|
||||
$userInfo = array('lang' => $language, 'ip' => $ipAddress);
|
||||
|
||||
return $userInfo;
|
||||
}
|
||||
|
||||
private function getIpAddress($anonymizedIp, \Piwik\Tracker\Request $request)
|
||||
{
|
||||
$privacyConfig = new PrivacyManagerConfig();
|
||||
|
||||
$ip = $request->getIp();
|
||||
|
||||
if ($privacyConfig->useAnonymizedIpForVisitEnrichment) {
|
||||
$ip = $anonymizedIp;
|
||||
}
|
||||
|
||||
$ipAddress = IPUtils::binaryToStringIP($ip);
|
||||
|
||||
return $ipAddress;
|
||||
}
|
||||
}
|
67
msd2/tracking/piwik/plugins/UserCountry/Columns/City.php
Normal file
67
msd2/tracking/piwik/plugins/UserCountry/Columns/City.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
use Piwik\Tracker\Action;
|
||||
|
||||
class City extends Base
|
||||
{
|
||||
protected $columnName = 'location_city';
|
||||
protected $columnType = 'varchar(255) DEFAULT NULL';
|
||||
protected $type = self::TYPE_TEXT;
|
||||
protected $segmentName = 'city';
|
||||
protected $nameSingular = 'UserCountry_City';
|
||||
protected $namePlural = 'UserCountryMap_Cities';
|
||||
protected $acceptValues = 'Sydney, Sao Paolo, Rome, etc.';
|
||||
protected $category = 'UserCountry_VisitLocation';
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$value = $this->getUrlOverrideValueIfAllowed('city', $request);
|
||||
|
||||
if ($value !== false) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$userInfo = $this->getUserInfo($request, $visitor);
|
||||
|
||||
return $this->getLocationDetail($userInfo, LocationProvider::CITY_NAME_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $this->getUrlOverrideValueIfAllowed('city', $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onAnyGoalConversion(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $visitor->getVisitorColumn($this->columnName);
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Columns\Dimension;
|
||||
use Piwik\Common;
|
||||
use Piwik\Metrics\Formatter;
|
||||
|
||||
class Continent extends Dimension
|
||||
{
|
||||
protected $dbTableName = 'log_visit';
|
||||
protected $columnName = 'location_country';
|
||||
protected $type = self::TYPE_TEXT;
|
||||
protected $category = 'UserCountry_VisitLocation';
|
||||
protected $nameSingular = 'UserCountry_Continent';
|
||||
protected $namePlural = 'UserCountry_Continents';
|
||||
protected $segmentName = 'continentCode';
|
||||
protected $acceptValues = 'eur, asi, amc, amn, ams, afr, ant, oce';
|
||||
protected $sqlFilter = 'Piwik\Plugins\UserCountry\UserCountry::getCountriesForContinent';
|
||||
|
||||
public function groupValue($value, $idSite)
|
||||
{
|
||||
return Common::getContinent($value);
|
||||
}
|
||||
|
||||
public function formatValue($value, $idSite, Formatter $formatter)
|
||||
{
|
||||
return \Piwik\Plugins\UserCountry\continentTranslate($value);
|
||||
}
|
||||
|
||||
}
|
147
msd2/tracking/piwik/plugins/UserCountry/Columns/Country.php
Normal file
147
msd2/tracking/piwik/plugins/UserCountry/Columns/Country.php
Normal file
@ -0,0 +1,147 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Common;
|
||||
use Piwik\Config;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\Intl\Data\Provider\RegionDataProvider;
|
||||
use Piwik\Metrics\Formatter;
|
||||
use Piwik\Network\IP;
|
||||
use Piwik\Plugin\Manager;
|
||||
use Piwik\Plugins\Provider\Provider as ProviderProvider;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Tracker\Visit;
|
||||
use Piwik\Tracker\Visitor;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\Request;
|
||||
|
||||
require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/functions.php';
|
||||
|
||||
class Country extends Base
|
||||
{
|
||||
protected $columnName = 'location_country';
|
||||
protected $columnType = 'CHAR(3) NULL';
|
||||
protected $type = self::TYPE_TEXT;
|
||||
|
||||
protected $category = 'UserCountry_VisitLocation';
|
||||
protected $nameSingular = 'UserCountry_Country';
|
||||
protected $namePlural = 'UserCountryMap_Countries';
|
||||
protected $segmentName = 'countryCode';
|
||||
protected $acceptValues = 'de, us, fr, in, es, etc.';
|
||||
|
||||
public function formatValue($value, $idSite, Formatter $formatter)
|
||||
{
|
||||
return \Piwik\Plugins\UserCountry\countryTranslate($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$value = $this->getUrlOverrideValueIfAllowed('country', $request);
|
||||
|
||||
if ($value !== false) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$userInfo = $this->getUserInfo($request, $visitor);
|
||||
$country = $this->getLocationDetail($userInfo, LocationProvider::COUNTRY_CODE_KEY);
|
||||
|
||||
if (!empty($country) && $country != Visit::UNKNOWN_CODE) {
|
||||
return strtolower($country);
|
||||
}
|
||||
|
||||
$country = $this->getCountryUsingProviderExtensionIfValid($userInfo['ip']);
|
||||
|
||||
if (!empty($country)) {
|
||||
return $country;
|
||||
}
|
||||
|
||||
return Visit::UNKNOWN_CODE;
|
||||
}
|
||||
|
||||
private function getCountryUsingProviderExtensionIfValid($ipAddress)
|
||||
{
|
||||
if (!Manager::getInstance()->isPluginInstalled('Provider')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$hostname = $this->getHost($ipAddress);
|
||||
$hostnameExtension = ProviderProvider::getCleanHostname($hostname);
|
||||
|
||||
$hostnameDomain = substr($hostnameExtension, 1 + strrpos($hostnameExtension, '.'));
|
||||
if ($hostnameDomain == 'uk') {
|
||||
$hostnameDomain = 'gb';
|
||||
}
|
||||
|
||||
/** @var RegionDataProvider $regionDataProvider */
|
||||
$regionDataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\RegionDataProvider');
|
||||
|
||||
if (array_key_exists($hostnameDomain, $regionDataProvider->getCountryList())) {
|
||||
return $hostnameDomain;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the hostname given the IP address string
|
||||
*
|
||||
* @param string $ipStr IP Address
|
||||
* @return string hostname (or human-readable IP address)
|
||||
*/
|
||||
private function getHost($ipStr)
|
||||
{
|
||||
$ip = IP::fromStringIP($ipStr);
|
||||
|
||||
$host = $ip->getHostname();
|
||||
$host = ($host === null ? $ipStr : $host);
|
||||
|
||||
return trim(strtolower($host));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $this->getUrlOverrideValueIfAllowed('country', $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onAnyGoalConversion(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$country = $visitor->getVisitorColumn($this->columnName);
|
||||
|
||||
if (isset($country) && false !== $country) {
|
||||
return $country;
|
||||
}
|
||||
|
||||
$browserLanguage = $request->getBrowserLanguage();
|
||||
$enableLanguageToCountryGuess = Config::getInstance()->Tracker['enable_language_to_country_guess'];
|
||||
$locationIp = $visitor->getVisitorColumn('location_ip');
|
||||
|
||||
$country = Common::getCountry($browserLanguage, $enableLanguageToCountryGuess, $locationIp);
|
||||
|
||||
return $country;
|
||||
}
|
||||
}
|
69
msd2/tracking/piwik/plugins/UserCountry/Columns/Latitude.php
Normal file
69
msd2/tracking/piwik/plugins/UserCountry/Columns/Latitude.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
use Piwik\Tracker\Action;
|
||||
|
||||
class Latitude extends Base
|
||||
{
|
||||
protected $columnName = 'location_latitude';
|
||||
protected $columnType = 'decimal(9, 6) DEFAULT NULL';
|
||||
protected $type = self::TYPE_TEXT;
|
||||
protected $category = 'UserCountry_VisitLocation';
|
||||
protected $segmentName = 'latitude';
|
||||
protected $nameSingular = 'UserCountry_Latitude';
|
||||
protected $namePlural = 'UserCountry_Latitudes';
|
||||
protected $acceptValues = '-33.578, 40.830, etc.<br/>You can select visitors within a lat/long range using &segment=lat>X;lat<Y;long>M;long<N.';
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$value = $this->getUrlOverrideValueIfAllowed('lat', $request);
|
||||
|
||||
if ($value !== false) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$userInfo = $this->getUserInfo($request, $visitor);
|
||||
|
||||
$latitude = $this->getLocationDetail($userInfo, LocationProvider::LATITUDE_KEY);
|
||||
|
||||
return $latitude;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $this->getUrlOverrideValueIfAllowed('lat', $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onAnyGoalConversion(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $visitor->getVisitorColumn($this->columnName);
|
||||
}
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
use Piwik\Tracker\Action;
|
||||
|
||||
class Longitude extends Base
|
||||
{
|
||||
protected $columnName = 'location_longitude';
|
||||
protected $columnType = 'decimal(9, 6) DEFAULT NULL';
|
||||
protected $type = self::TYPE_TEXT;
|
||||
protected $category = 'UserCountry_VisitLocation';
|
||||
protected $acceptValues = '-70.664, 14.326, etc.';
|
||||
protected $segmentName = 'longitude';
|
||||
protected $nameSingular = 'UserCountry_Longitude';
|
||||
protected $namePlural = 'UserCountry_Longitudes';
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$value = $this->getUrlOverrideValueIfAllowed('long', $request);
|
||||
|
||||
if ($value !== false) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$userInfo = $this->getUserInfo($request, $visitor);
|
||||
|
||||
$longitude = $this->getLocationDetail($userInfo, LocationProvider::LONGITUDE_KEY);
|
||||
|
||||
return $longitude;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $this->getUrlOverrideValueIfAllowed('long', $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onAnyGoalConversion(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $visitor->getVisitorColumn($this->columnName);
|
||||
}
|
||||
}
|
58
msd2/tracking/piwik/plugins/UserCountry/Columns/Provider.php
Normal file
58
msd2/tracking/piwik/plugins/UserCountry/Columns/Provider.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Plugin\Manager;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Tracker\Visitor;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\Request;
|
||||
|
||||
class Provider extends Base
|
||||
{
|
||||
protected $columnName = 'location_provider';
|
||||
protected $type = self::TYPE_TEXT;
|
||||
protected $category = 'UserCountry_VisitLocation';
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
if (!Manager::getInstance()->isPluginInstalled('Provider')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$userInfo = $this->getUserInfo($request, $visitor);
|
||||
|
||||
$isp = $this->getLocationDetail($userInfo, LocationProvider::ISP_KEY);
|
||||
$org = $this->getLocationDetail($userInfo, LocationProvider::ORG_KEY);
|
||||
|
||||
// if the location has provider/organization info, set it
|
||||
if (!empty($isp)) {
|
||||
$providerValue = $isp;
|
||||
|
||||
// if the org is set and not the same as the isp, add it to the provider value
|
||||
if (!empty($org) && $org != $providerValue) {
|
||||
$providerValue .= ' - ' . $org;
|
||||
}
|
||||
|
||||
return $providerValue;
|
||||
}
|
||||
|
||||
if (!empty($org)) {
|
||||
return $org;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
66
msd2/tracking/piwik/plugins/UserCountry/Columns/Region.php
Normal file
66
msd2/tracking/piwik/plugins/UserCountry/Columns/Region.php
Normal file
@ -0,0 +1,66 @@
|
||||
<?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\UserCountry\Columns;
|
||||
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Tracker\Request;
|
||||
use Piwik\Tracker\Visitor;
|
||||
use Piwik\Tracker\Action;
|
||||
|
||||
class Region extends Base
|
||||
{
|
||||
protected $columnName = 'location_region';
|
||||
protected $type = self::TYPE_TEXT;
|
||||
protected $category = 'UserCountry_VisitLocation';
|
||||
protected $segmentName = 'regionCode';
|
||||
protected $nameSingular = 'UserCountry_Region';
|
||||
protected $namePlural = 'UserCountryMap_Regions';
|
||||
protected $acceptValues = '01 02, OR, P8, etc.<br/>eg. region=BFC;country=fr';
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onNewVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
$value = $this->getUrlOverrideValueIfAllowed('region', $request);
|
||||
|
||||
if ($value !== false) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$userInfo = $this->getUserInfo($request, $visitor);
|
||||
|
||||
return $this->getLocationDetail($userInfo, LocationProvider::REGION_CODE_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return int
|
||||
*/
|
||||
public function onExistingVisit(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $this->getUrlOverrideValueIfAllowed('region', $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Visitor $visitor
|
||||
* @param Action|null $action
|
||||
* @return mixed
|
||||
*/
|
||||
public function onAnyGoalConversion(Request $request, Visitor $visitor, $action)
|
||||
{
|
||||
return $visitor->getVisitorColumn($this->columnName);
|
||||
}
|
||||
}
|
@ -0,0 +1,202 @@
|
||||
<?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\UserCountry\Commands;
|
||||
|
||||
use Piwik\Plugin\ConsoleCommand;
|
||||
use Piwik\Plugins\UserCountry\VisitorGeolocator;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\DataAccess\RawLogDao;
|
||||
use Piwik\Timer;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class AttributeHistoricalDataWithLocations extends ConsoleCommand
|
||||
{
|
||||
const DATES_RANGE_ARGUMENT = 'dates-range';
|
||||
const PERCENT_STEP_ARGUMENT = 'percent-step';
|
||||
const PERCENT_STEP_ARGUMENT_DEFAULT = 5;
|
||||
const PROVIDER_ARGUMENT = 'provider';
|
||||
const SEGMENT_LIMIT_OPTION = 'segment-limit';
|
||||
const SEGMENT_LIMIT_OPTION_DEFAULT = 1000;
|
||||
const FORCE_OPTION = 'force';
|
||||
|
||||
/**
|
||||
* @var RawLogDao
|
||||
*/
|
||||
protected $dao;
|
||||
|
||||
/**
|
||||
* @var VisitorGeolocator
|
||||
*/
|
||||
protected $visitorGeolocator;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $processed = 0;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $amountOfVisits;
|
||||
|
||||
/**
|
||||
* @var Timer
|
||||
*/
|
||||
private $timer;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $percentStep;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $processedPercent = 0;
|
||||
|
||||
public function __construct(RawLogDao $dao = null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->dao = $dao ?: new RawLogDao();
|
||||
}
|
||||
|
||||
protected function configure()
|
||||
{
|
||||
$this->setName('usercountry:attribute');
|
||||
$this->setDescription("Re-attribute existing raw data (visits & conversions) with geolocated location data, using the specified or configured location provider.");
|
||||
$this->addArgument(self::DATES_RANGE_ARGUMENT, InputArgument::REQUIRED, 'Attribute visits in this date range. Eg, 2012-01-01,2013-01-01');
|
||||
$this->addOption(self::PERCENT_STEP_ARGUMENT, null, InputArgument::OPTIONAL,
|
||||
'How often to display the command progress. A status update will be printed after N percent of visits are processed, '
|
||||
. 'where N is the value of this option.', self::PERCENT_STEP_ARGUMENT_DEFAULT);
|
||||
$this->addOption(self::PROVIDER_ARGUMENT, null, InputOption::VALUE_REQUIRED, 'Provider id which should be used to attribute visits. If empty then'
|
||||
. ' Piwik will use the currently configured provider. If no provider is configured, the default provider is used.');
|
||||
$this->addOption(self::SEGMENT_LIMIT_OPTION, null, InputOption::VALUE_OPTIONAL, 'Number of visits to process at a time.', self::SEGMENT_LIMIT_OPTION_DEFAULT);
|
||||
$this->addOption(self::FORCE_OPTION, null, InputOption::VALUE_NONE, "Force geolocation, even if the requested provider does not appear to work. It is not "
|
||||
. "recommended to use this option.");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param InputInterface $input
|
||||
* @param OutputInterface $output
|
||||
* @return void|int
|
||||
*/
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
list($from, $to) = $this->getDateRangeToAttribute($input);
|
||||
|
||||
$this->visitorGeolocator = $this->createGeolocator($output, $input);
|
||||
|
||||
$this->percentStep = $this->getPercentStep($input);
|
||||
$this->amountOfVisits = $this->dao->countVisitsWithDatesLimit($from, $to);
|
||||
|
||||
$output->writeln(
|
||||
sprintf('Re-attribution for date range: %s to %s. %d visits to process with provider "%s".',
|
||||
$from, $to, $this->amountOfVisits, $this->visitorGeolocator->getProvider()->getId())
|
||||
);
|
||||
|
||||
$this->timer = new Timer();
|
||||
|
||||
$this->processSpecifiedLogsInChunks($output, $from, $to, $input->getOption(self::SEGMENT_LIMIT_OPTION));
|
||||
|
||||
$output->writeln("Completed. <comment>" . $this->timer->__toString() . "</comment>");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected function processSpecifiedLogsInChunks(OutputInterface $output, $from, $to, $segmentLimit)
|
||||
{
|
||||
$self = $this;
|
||||
$this->visitorGeolocator->reattributeVisitLogs($from, $to, $idSite = null, $segmentLimit, function () use ($output, $self) {
|
||||
$self->onVisitProcessed($output);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param InputInterface $input
|
||||
* @return int
|
||||
*/
|
||||
protected function getPercentStep(InputInterface $input)
|
||||
{
|
||||
$percentStep = $input->getOption(self::PERCENT_STEP_ARGUMENT);
|
||||
|
||||
if (!is_numeric($percentStep)) {
|
||||
return self::PERCENT_STEP_ARGUMENT_DEFAULT;
|
||||
}
|
||||
|
||||
// Percent step should be between maximum percent value and minimum percent value (1-100)
|
||||
if ($percentStep > 99 || $percentStep < 1) {
|
||||
return 100;
|
||||
}
|
||||
|
||||
return $percentStep;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print information about progress.
|
||||
* @param OutputInterface $output
|
||||
*/
|
||||
public function onVisitProcessed(OutputInterface $output)
|
||||
{
|
||||
++$this->processed;
|
||||
|
||||
$percent = ceil($this->processed / $this->amountOfVisits * 100);
|
||||
|
||||
if ($percent > $this->processedPercent
|
||||
&& $percent % $this->percentStep === 0
|
||||
) {
|
||||
$output->writeln(sprintf('%d%% processed. <comment>%s</comment>', $percent, $this->timer->__toString()));
|
||||
|
||||
$this->processedPercent = $percent;
|
||||
}
|
||||
}
|
||||
|
||||
private function getDateRangeToAttribute(InputInterface $input)
|
||||
{
|
||||
$dateRangeString = $input->getArgument(self::DATES_RANGE_ARGUMENT);
|
||||
|
||||
$dates = explode(',', $dateRangeString);
|
||||
$dates = array_map(array('Piwik\Date', 'factory'), $dates);
|
||||
|
||||
if (count($dates) != 2) {
|
||||
throw new \InvalidArgumentException('Invalid date range supplied: ' . $dateRangeString);
|
||||
}
|
||||
|
||||
return $dates;
|
||||
}
|
||||
|
||||
private function createGeolocator(OutputInterface $output, InputInterface $input)
|
||||
{
|
||||
$providerId = $input->getOption(self::PROVIDER_ARGUMENT);
|
||||
$geolocator = new VisitorGeolocator(LocationProvider::getProviderById($providerId) ?: null);
|
||||
|
||||
$usedProvider = $geolocator->getProvider();
|
||||
if (!$usedProvider->isAvailable()) {
|
||||
throw new \InvalidArgumentException("The provider '$providerId' is not currently available, please make sure it is configured correctly.");
|
||||
}
|
||||
|
||||
$isWorkingOrErrorMessage = $usedProvider->isWorking();
|
||||
if ($isWorkingOrErrorMessage !== true) {
|
||||
$errorMessage = "The provider '$providerId' does not appear to be working correctly. Details: $isWorkingOrErrorMessage";
|
||||
|
||||
$forceGeolocation = $input->getOption(self::FORCE_OPTION);
|
||||
if ($forceGeolocation) {
|
||||
$output->writeln("<error>$errorMessage</error>");
|
||||
$output->writeln("<comment>Ignoring location provider issue, geolocating anyway due to --force option.</comment>");
|
||||
} else {
|
||||
throw new \InvalidArgumentException($errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
return $geolocator;
|
||||
}
|
||||
}
|
485
msd2/tracking/piwik/plugins/UserCountry/Controller.php
Normal file
485
msd2/tracking/piwik/plugins/UserCountry/Controller.php
Normal file
@ -0,0 +1,485 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Exception;
|
||||
use Piwik\Common;
|
||||
use Piwik\DataTable\Renderer\Json;
|
||||
use Piwik\Http;
|
||||
use Piwik\IP;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\Manager;
|
||||
use Piwik\Plugins\GeoIp2\GeoIP2AutoUpdater;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
|
||||
use Piwik\SettingsPiwik;
|
||||
use Piwik\View;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Controller extends \Piwik\Plugin\ControllerAdmin
|
||||
{
|
||||
public function getDistinctCountries()
|
||||
{
|
||||
$view = new View('@UserCountry/getDistinctCountries');
|
||||
|
||||
$view->urlSparklineCountries = $this->getUrlSparkline('getLastDistinctCountriesGraph');
|
||||
$view->numberDistinctCountries = $this->getNumberOfDistinctCountries();
|
||||
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
public function adminIndex()
|
||||
{
|
||||
$this->dieIfGeolocationAdminIsDisabled();
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
$view = new View('@UserCountry/adminIndex');
|
||||
|
||||
$allProviderInfo = LocationProvider::getAllProviderInfo($newline = '<br/>', $includeExtra = true);
|
||||
$view->locationProviders = $allProviderInfo;
|
||||
$view->currentProviderId = LocationProvider::getCurrentProviderId();
|
||||
$view->thisIP = IP::getIpFromHeader();
|
||||
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
$geoIPDatabasesInstalled = GeoIp2::isDatabaseInstalled();
|
||||
} else {
|
||||
$geoIPDatabasesInstalled = GeoIp::isDatabaseInstalled();
|
||||
}
|
||||
|
||||
$view->geoIPDatabasesInstalled = $geoIPDatabasesInstalled;
|
||||
$view->updatePeriodOptions = $this->getPeriodUpdateOptions();
|
||||
|
||||
// check if there is a working provider (that isn't the default one)
|
||||
$isThereWorkingProvider = false;
|
||||
foreach ($allProviderInfo as $id => $provider) {
|
||||
if ($id != DefaultProvider::ID
|
||||
&& $provider['status'] == LocationProvider::INSTALLED
|
||||
) {
|
||||
$isThereWorkingProvider = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$view->isThereWorkingProvider = $isThereWorkingProvider;
|
||||
|
||||
// if using either the Apache, Nginx or PECL module, they are working and there are no databases
|
||||
// in misc, then the databases are located outside of Piwik, so we cannot update them
|
||||
$view->showGeoIPUpdateSection = true;
|
||||
$currentProviderId = LocationProvider::getCurrentProviderId();
|
||||
if (!$geoIPDatabasesInstalled
|
||||
&& in_array($currentProviderId, [GeoIp2\ServerModule::ID, GeoIp\ServerBased::ID, GeoIp\Pecl::ID])
|
||||
&& $allProviderInfo[$currentProviderId]['status'] == LocationProvider::INSTALLED
|
||||
) {
|
||||
$view->showGeoIPUpdateSection = false;
|
||||
}
|
||||
|
||||
$view->isInternetEnabled = SettingsPiwik::isInternetEnabled();
|
||||
|
||||
$this->setUpdaterManageVars($view);
|
||||
$this->setBasicVariablesView($view);
|
||||
$this->setBasicVariablesAdminView($view);
|
||||
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts or continues download of GeoLiteCity.dat.
|
||||
*
|
||||
* To avoid a server/PHP timeout & to show progress of the download to the user, we
|
||||
* use the HTTP Range header to download one chunk of the file at a time. After each
|
||||
* chunk, it is the browser's responsibility to call the method again to continue the download.
|
||||
*
|
||||
* Input:
|
||||
* 'continue' query param - if set to 1, will assume we are currently downloading & use
|
||||
* Range: HTTP header to get another chunk of the file.
|
||||
*
|
||||
* Output (in JSON):
|
||||
* 'current_size' - Current size of the partially downloaded file on disk.
|
||||
* 'expected_file_size' - The expected finished file size as returned by the HTTP server.
|
||||
* 'next_screen' - When the download finishes, this is the next screen that should be shown.
|
||||
* 'error' - When an error occurs, the message is returned in this property.
|
||||
*/
|
||||
public function downloadFreeGeoIPDB()
|
||||
{
|
||||
$this->dieIfGeolocationAdminIsDisabled();
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
return $this->downloadFreeGeoIP2DB();
|
||||
}
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
$this->checkTokenInUrl();
|
||||
Json::sendHeaderJSON();
|
||||
$outputPath = GeoIp::getPathForGeoIpDatabase('GeoIPCity.dat') . '.gz';
|
||||
try {
|
||||
$result = Http::downloadChunk(
|
||||
$url = GeoIp::GEO_LITE_URL,
|
||||
$outputPath,
|
||||
$continue = Common::getRequestVar('continue', true, 'int')
|
||||
);
|
||||
|
||||
// if the file is done
|
||||
if ($result['current_size'] >= $result['expected_file_size']) {
|
||||
GeoIPAutoUpdater::unzipDownloadedFile($outputPath, $unlink = true);
|
||||
|
||||
// setup the auto updater
|
||||
GeoIPAutoUpdater::setUpdaterOptions(array(
|
||||
'loc' => GeoIp::GEO_LITE_URL,
|
||||
'period' => GeoIPAutoUpdater::SCHEDULE_PERIOD_MONTHLY,
|
||||
));
|
||||
|
||||
// make sure to echo out the geoip updater management screen
|
||||
$result['settings'] = GeoIPAutoUpdater::getConfiguredUrls();
|
||||
}
|
||||
|
||||
return json_encode($result);
|
||||
} catch (Exception $ex) {
|
||||
return json_encode(array('error' => $ex->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts or continues download of GeoLite2-City.mmdb.
|
||||
*
|
||||
* To avoid a server/PHP timeout & to show progress of the download to the user, we
|
||||
* use the HTTP Range header to download one chunk of the file at a time. After each
|
||||
* chunk, it is the browser's responsibility to call the method again to continue the download.
|
||||
*
|
||||
* Input:
|
||||
* 'continue' query param - if set to 1, will assume we are currently downloading & use
|
||||
* Range: HTTP header to get another chunk of the file.
|
||||
*
|
||||
* Output (in JSON):
|
||||
* 'current_size' - Current size of the partially downloaded file on disk.
|
||||
* 'expected_file_size' - The expected finished file size as returned by the HTTP server.
|
||||
* 'next_screen' - When the download finishes, this is the next screen that should be shown.
|
||||
* 'error' - When an error occurs, the message is returned in this property.
|
||||
*/
|
||||
public function downloadFreeGeoIP2DB()
|
||||
{
|
||||
$this->dieIfGeolocationAdminIsDisabled();
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
$this->checkTokenInUrl();
|
||||
Json::sendHeaderJSON();
|
||||
$outputPath = GeoIp2::getPathForGeoIpDatabase('GeoLite2-City.tar') . '.gz';
|
||||
try {
|
||||
$result = Http::downloadChunk(
|
||||
$url = GeoIp2::GEO_LITE_URL,
|
||||
$outputPath,
|
||||
$continue = Common::getRequestVar('continue', true, 'int')
|
||||
);
|
||||
|
||||
// if the file is done
|
||||
if ($result['current_size'] >= $result['expected_file_size']) {
|
||||
try {
|
||||
GeoIP2AutoUpdater::unzipDownloadedFile($outputPath, 'loc', $unlink = true);
|
||||
} catch (\Exception $e) {
|
||||
// remove downloaded file on error
|
||||
unlink($outputPath);
|
||||
throw $e;
|
||||
}
|
||||
|
||||
// setup the auto updater
|
||||
GeoIP2AutoUpdater::setUpdaterOptions(array(
|
||||
'loc' => GeoIp2::GEO_LITE_URL,
|
||||
'period' => GeoIP2AutoUpdater::SCHEDULE_PERIOD_MONTHLY,
|
||||
));
|
||||
|
||||
$result['settings'] = GeoIP2AutoUpdater::getConfiguredUrls();
|
||||
}
|
||||
|
||||
return json_encode($result);
|
||||
} catch (Exception $ex) {
|
||||
return json_encode(array('error' => $ex->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function getPeriodUpdateOptions()
|
||||
{
|
||||
return array(
|
||||
'month' => Piwik::translate('Intl_PeriodMonth'),
|
||||
'week' => Piwik::translate('Intl_PeriodWeek')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets some variables needed by the _updaterManage.twig template.
|
||||
*
|
||||
* @param View $view
|
||||
*/
|
||||
private function setUpdaterManageVars($view)
|
||||
{
|
||||
$view->isGeoIp2Available = $this->isGeoIp2Enabled();
|
||||
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
// Get GeoIPLegacy Update information to show them
|
||||
$urls = GeoIPAutoUpdater::getConfiguredUrls();
|
||||
|
||||
$view->geoIPLegacyLocUrl = $urls['loc'];
|
||||
$view->geoIPLegacyIspUrl = $urls['isp'];
|
||||
$view->geoIPLegacyOrgUrl = $urls['org'];
|
||||
$view->geoIPLegacyUpdatePeriod = GeoIPAutoUpdater::getSchedulePeriod();
|
||||
|
||||
$urls = GeoIP2AutoUpdater::getConfiguredUrls();
|
||||
|
||||
$view->geoIPLocUrl = $urls['loc'];
|
||||
$view->geoIPIspUrl = $urls['isp'];
|
||||
$view->geoIPUpdatePeriod = GeoIP2AutoUpdater::getSchedulePeriod();
|
||||
|
||||
$view->geoLiteUrl = GeoIp2::GEO_LITE_URL;
|
||||
$view->geoLiteFilename = 'GeoLite2-City.mmdb';
|
||||
$view->nextRunTime = GeoIP2AutoUpdater::getNextRunTime();
|
||||
|
||||
$lastRunTime = GeoIP2AutoUpdater::getLastRunTime();
|
||||
} else {
|
||||
$urls = GeoIPAutoUpdater::getConfiguredUrls();
|
||||
|
||||
$view->geoIPLocUrl = $urls['loc'];
|
||||
$view->geoIPIspUrl = $urls['isp'];
|
||||
$view->geoIPOrgUrl = $urls['org'];
|
||||
$view->geoIPUpdatePeriod = GeoIPAutoUpdater::getSchedulePeriod();
|
||||
|
||||
$view->geoLiteUrl = GeoIp::GEO_LITE_URL;
|
||||
$view->geoLiteFilename = 'GeoLiteCity.dat';
|
||||
$view->nextRunTime = GeoIPAutoUpdater::getNextRunTime();
|
||||
|
||||
$lastRunTime = GeoIPAutoUpdater::getLastRunTime();
|
||||
}
|
||||
|
||||
if ($lastRunTime !== false) {
|
||||
$view->lastTimeUpdaterRun = '<strong>' . $lastRunTime->toString() . '</strong>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the URLs used to download new versions of the installed GeoIP databases.
|
||||
*
|
||||
* Input (query params):
|
||||
* 'loc_db' - URL for a GeoIP location database.
|
||||
* 'isp_db' - URL for a GeoIP ISP database (optional).
|
||||
* 'org_db' - URL for a GeoIP Org database (optional).
|
||||
* 'period' - 'weekly' or 'monthly'. Determines how often update is run.
|
||||
*
|
||||
* Output (json):
|
||||
* 'error' - if an error occurs its message is set as the resulting JSON object's
|
||||
* 'error' property.
|
||||
*/
|
||||
public function updateGeoIPLinks()
|
||||
{
|
||||
$this->dieIfGeolocationAdminIsDisabled();
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
Json::sendHeaderJSON();
|
||||
try {
|
||||
$this->checkTokenInUrl();
|
||||
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
GeoIP2AutoUpdater::setUpdaterOptionsFromUrl();
|
||||
} else {
|
||||
GeoIPAutoUpdater::setUpdaterOptionsFromUrl();
|
||||
}
|
||||
|
||||
// if there is a updater URL for a database, but its missing from the misc dir, tell
|
||||
// the browser so it can download it next
|
||||
$info = $this->getNextMissingDbUrlInfo();
|
||||
if ($info !== false) {
|
||||
return json_encode($info);
|
||||
} else {
|
||||
$view = new View("@UserCountry/_updaterNextRunTime");
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
$view->nextRunTime = GeoIP2AutoUpdater::getNextRunTime();
|
||||
} else {
|
||||
$view->nextRunTime = GeoIPAutoUpdater::getNextRunTime();
|
||||
}
|
||||
$nextRunTimeHtml = $view->render();
|
||||
return json_encode(array('nextRunTime' => $nextRunTimeHtml));
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
return json_encode(array('error' => $ex->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts or continues a download for a missing GeoIP database. A database is missing if
|
||||
* it has an update URL configured, but the actual database is not available in the misc
|
||||
* directory.
|
||||
*
|
||||
* Input:
|
||||
* 'url' - The URL to download the database from.
|
||||
* 'continue' - 1 if we're continuing a download, 0 if we're starting one.
|
||||
*
|
||||
* Output:
|
||||
* 'error' - If an error occurs this describes the error.
|
||||
* 'to_download' - The URL of a missing database that should be downloaded next (if any).
|
||||
* 'to_download_label' - The label to use w/ the progress bar that describes what we're
|
||||
* downloading.
|
||||
* 'current_size' - Size of the current file on disk.
|
||||
* 'expected_file_size' - Size of the completely downloaded file.
|
||||
*/
|
||||
public function downloadMissingGeoIpDb()
|
||||
{
|
||||
$this->dieIfGeolocationAdminIsDisabled();
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
try {
|
||||
$this->checkTokenInUrl();
|
||||
|
||||
Json::sendHeaderJSON();
|
||||
|
||||
// based on the database type (provided by the 'key' query param) determine the
|
||||
// url & output file name
|
||||
$key = Common::getRequestVar('key', null, 'string');
|
||||
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
$url = GeoIP2AutoUpdater::getConfiguredUrl($key);
|
||||
$ext = GeoIP2AutoUpdater::getGeoIPUrlExtension($url);
|
||||
$filename = GeoIp2::$dbNames[$key][0] . '.' . $ext;
|
||||
$outputPath = GeoIp2::getPathForGeoIpDatabase($filename);
|
||||
} else {
|
||||
$url = GeoIPAutoUpdater::getConfiguredUrl($key);
|
||||
$ext = GeoIPAutoUpdater::getGeoIPUrlExtension($url);
|
||||
$filename = GeoIp::$dbNames[$key][0] . '.' . $ext;
|
||||
|
||||
if (substr($filename, 0, 15) == 'GeoLiteCity.dat') {
|
||||
$filename = 'GeoIPCity.dat' . substr($filename, 15);
|
||||
}
|
||||
$outputPath = GeoIp::getPathForGeoIpDatabase($filename);
|
||||
}
|
||||
|
||||
// download part of the file
|
||||
$result = Http::downloadChunk(
|
||||
$url, $outputPath, Common::getRequestVar('continue', true, 'int'));
|
||||
|
||||
// if the file is done
|
||||
if ($result['current_size'] >= $result['expected_file_size']) {
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
GeoIP2AutoUpdater::unzipDownloadedFile($outputPath, $key, $unlink = true);
|
||||
} else {
|
||||
GeoIPAutoUpdater::unzipDownloadedFile($outputPath, $unlink = true);
|
||||
}
|
||||
|
||||
$info = $this->getNextMissingDbUrlInfo();
|
||||
if ($info !== false) {
|
||||
return json_encode($info);
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($result);
|
||||
} catch (Exception $ex) {
|
||||
return json_encode(array('error' => $ex->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Echo's a pretty formatted location using a specific LocationProvider.
|
||||
*
|
||||
* Input:
|
||||
* The 'id' query parameter must be set to the ID of the LocationProvider to use.
|
||||
*
|
||||
* Output:
|
||||
* The pretty formatted location that was obtained. Will be HTML.
|
||||
*/
|
||||
public function getLocationUsingProvider()
|
||||
{
|
||||
$providerId = Common::getRequestVar('id');
|
||||
$provider = LocationProvider::getProviderById($providerId);
|
||||
if (empty($provider)) {
|
||||
throw new Exception("Invalid provider ID: '$providerId'.");
|
||||
}
|
||||
|
||||
$location = $provider->getLocation(array('ip' => IP::getIpFromHeader(),
|
||||
'lang' => Common::getBrowserLanguage(),
|
||||
'disable_fallbacks' => true));
|
||||
$location = LocationProvider::prettyFormatLocation(
|
||||
$location, $newline = '<br/>', $includeExtra = true);
|
||||
|
||||
return $location;
|
||||
}
|
||||
|
||||
public function getNumberOfDistinctCountries()
|
||||
{
|
||||
return $this->getNumericValue('UserCountry.getNumberOfDistinctCountries');
|
||||
}
|
||||
|
||||
public function getLastDistinctCountriesGraph()
|
||||
{
|
||||
$view = $this->getLastUnitGraph('UserCountry', __FUNCTION__, "UserCountry.getNumberOfDistinctCountries");
|
||||
$view->config->columns_to_display = array('UserCountry_distinctCountries');
|
||||
return $this->renderView($view);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets information for the first missing GeoIP database (if any).
|
||||
*
|
||||
* @return array|bool
|
||||
*/
|
||||
private function getNextMissingDbUrlInfo()
|
||||
{
|
||||
if ($this->isGeoIp2Enabled()) {
|
||||
return $this->getNextMissingDbUrlInfoGeoIp2();
|
||||
}
|
||||
|
||||
$missingDbs = GeoIPAutoUpdater::getMissingDatabases();
|
||||
if (!empty($missingDbs)) {
|
||||
$missingDbKey = $missingDbs[0];
|
||||
$missingDbName = GeoIp::$dbNames[$missingDbKey][0];
|
||||
$url = GeoIPAutoUpdater::getConfiguredUrl($missingDbKey);
|
||||
|
||||
$link = '<a href="' . $url . '">' . $missingDbName . '</a>';
|
||||
|
||||
return array(
|
||||
'to_download' => $missingDbKey,
|
||||
'to_download_label' => Piwik::translate('UserCountry_DownloadingDb', $link) . '...',
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets information for the first missing GeoIP2 database (if any).
|
||||
*
|
||||
* @return array|bool
|
||||
*/
|
||||
private function getNextMissingDbUrlInfoGeoIp2()
|
||||
{
|
||||
$missingDbs = GeoIP2AutoUpdater::getMissingDatabases();
|
||||
if (!empty($missingDbs)) {
|
||||
$missingDbKey = $missingDbs[0];
|
||||
$missingDbName = GeoIp2::$dbNames[$missingDbKey][0];
|
||||
$url = GeoIP2AutoUpdater::getConfiguredUrl($missingDbKey);
|
||||
|
||||
$link = '<a href="' . $url . '">' . $missingDbName . '</a>';
|
||||
|
||||
return array(
|
||||
'to_download' => $missingDbKey,
|
||||
'to_download_label' => Piwik::translate('UserCountry_DownloadingDb', $link) . '...',
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function dieIfGeolocationAdminIsDisabled()
|
||||
{
|
||||
if (!UserCountry::isGeoLocationAdminEnabled()) {
|
||||
throw new \Exception('Geo location setting page has been disabled.');
|
||||
}
|
||||
}
|
||||
|
||||
private function isGeoIp2Enabled()
|
||||
{
|
||||
return Manager::getInstance()->isPluginActivated('GeoIp2');
|
||||
}
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
<?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\UserCountry\Diagnostic;
|
||||
|
||||
use Piwik\Config;
|
||||
use Piwik\Plugin\Manager;
|
||||
use Piwik\Plugins\Diagnostics\Diagnostic\Diagnostic;
|
||||
use Piwik\Plugins\Diagnostics\Diagnostic\DiagnosticResult;
|
||||
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Translation\Translator;
|
||||
|
||||
/**
|
||||
* Check the geolocation setup.
|
||||
*/
|
||||
class GeolocationDiagnostic implements Diagnostic
|
||||
{
|
||||
/**
|
||||
* @var Translator
|
||||
*/
|
||||
private $translator;
|
||||
|
||||
public function __construct(Translator $translator)
|
||||
{
|
||||
$this->translator = $translator;
|
||||
}
|
||||
|
||||
public function execute()
|
||||
{
|
||||
$isPiwikInstalling = !Config::getInstance()->existsLocalConfig();
|
||||
if ($isPiwikInstalling) {
|
||||
// Skip the diagnostic if Piwik is being installed
|
||||
return array();
|
||||
}
|
||||
|
||||
$label = $this->translator->translate('UserCountry_Geolocation');
|
||||
|
||||
$currentProviderId = LocationProvider::getCurrentProviderId();
|
||||
$allProviders = LocationProvider::getAllProviderInfo();
|
||||
$isNotRecommendedProvider = in_array($currentProviderId, array(
|
||||
LocationProvider\DefaultProvider::ID,
|
||||
LocationProvider\GeoIp\ServerBased::ID,
|
||||
GeoIp2\ServerModule::ID));
|
||||
$isProviderInstalled = (isset($allProviders[$currentProviderId]['status']) && $allProviders[$currentProviderId]['status'] == LocationProvider::INSTALLED);
|
||||
|
||||
if (!$isNotRecommendedProvider && $isProviderInstalled) {
|
||||
return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK));
|
||||
}
|
||||
|
||||
if ($isProviderInstalled) {
|
||||
$comment = $this->translator->translate('UserCountry_GeoIpLocationProviderNotRecomnended') . ' ';
|
||||
$message = Manager::getInstance()->isPluginActivated('GeoIp2') ? 'GeoIp2_LocationProviderDesc_ServerModule2' : 'UserCountry_GeoIpLocationProviderDesc_ServerBased2';
|
||||
$comment .= $this->translator->translate($message, array(
|
||||
'<a href="https://matomo.org/docs/geo-locate/" rel="noreferrer noopener" target="_blank">', '', '', '</a>'
|
||||
));
|
||||
} else {
|
||||
$comment = $this->translator->translate('UserCountry_DefaultLocationProviderDesc1') . ' ';
|
||||
$comment .= $this->translator->translate('UserCountry_DefaultLocationProviderDesc2', array(
|
||||
'<a href="https://matomo.org/docs/geo-locate/" rel="noreferrer noopener" target="_blank">', '', '', '</a>'
|
||||
));
|
||||
}
|
||||
|
||||
return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_WARNING, $comment));
|
||||
}
|
||||
}
|
731
msd2/tracking/piwik/plugins/UserCountry/GeoIPAutoUpdater.php
Normal file
731
msd2/tracking/piwik/plugins/UserCountry/GeoIPAutoUpdater.php
Normal file
@ -0,0 +1,731 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
require_once PIWIK_INCLUDE_PATH . "/core/ScheduledTask.php"; // for the tracker which doesn't include this file
|
||||
|
||||
use Exception;
|
||||
use Piwik\Common;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\Date;
|
||||
use Piwik\Http;
|
||||
use Piwik\Log;
|
||||
use Piwik\Option;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp\Php;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Scheduler\Scheduler;
|
||||
use Piwik\Scheduler\Task;
|
||||
use Piwik\Scheduler\Timetable;
|
||||
use Piwik\Scheduler\Schedule\Monthly;
|
||||
use Piwik\Scheduler\Schedule\Weekly;
|
||||
use Piwik\SettingsPiwik;
|
||||
use Piwik\Unzip;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Used to automatically update installed GeoIP databases, and manages the updater's
|
||||
* scheduled task.
|
||||
*/
|
||||
class GeoIPAutoUpdater extends Task
|
||||
{
|
||||
const SCHEDULE_PERIOD_MONTHLY = 'month';
|
||||
const SCHEDULE_PERIOD_WEEKLY = 'week';
|
||||
|
||||
const SCHEDULE_PERIOD_OPTION_NAME = 'geoip.updater_period';
|
||||
const LOC_URL_OPTION_NAME = 'geoip.loc_db_url';
|
||||
const ISP_URL_OPTION_NAME = 'geoip.isp_db_url';
|
||||
const ORG_URL_OPTION_NAME = 'geoip.org_db_url';
|
||||
|
||||
const LAST_RUN_TIME_OPTION_NAME = 'geoip.updater_last_run_time';
|
||||
|
||||
private static $urlOptions = array(
|
||||
'loc' => self::LOC_URL_OPTION_NAME,
|
||||
'isp' => self::ISP_URL_OPTION_NAME,
|
||||
'org' => self::ORG_URL_OPTION_NAME,
|
||||
);
|
||||
|
||||
/**
|
||||
* PHP Error caught through a custom error handler while trying to use a downloaded
|
||||
* GeoIP database. See catchGeoIPError for more info.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $unzipPhpError = null;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
if (!SettingsPiwik::isInternetEnabled()) {
|
||||
// no automatic updates possible if no internet available
|
||||
return;
|
||||
}
|
||||
|
||||
$schedulePeriodStr = self::getSchedulePeriod();
|
||||
|
||||
// created the scheduledtime instance, also, since GeoIP updates are done on tuesdays,
|
||||
// get new DBs on Wednesday
|
||||
switch ($schedulePeriodStr) {
|
||||
case self::SCHEDULE_PERIOD_WEEKLY:
|
||||
$schedulePeriod = new Weekly();
|
||||
$schedulePeriod->setDay(3);
|
||||
break;
|
||||
case self::SCHEDULE_PERIOD_MONTHLY:
|
||||
default:
|
||||
$schedulePeriod = new Monthly();
|
||||
$schedulePeriod->setDayOfWeek(3, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
parent::__construct($this, 'update', null, $schedulePeriod, Task::LOWEST_PRIORITY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to download new location, ISP & organization GeoIP databases and
|
||||
* replace the existing ones w/ them.
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
try {
|
||||
Option::set(self::LAST_RUN_TIME_OPTION_NAME, Date::factory('today')->getTimestamp());
|
||||
|
||||
$locUrl = Option::get(self::LOC_URL_OPTION_NAME);
|
||||
if (!empty($locUrl)) {
|
||||
$this->downloadFile('loc', $locUrl);
|
||||
}
|
||||
|
||||
$ispUrl = Option::get(self::ISP_URL_OPTION_NAME);
|
||||
if (!empty($ispUrl)) {
|
||||
$this->downloadFile('isp', $ispUrl);
|
||||
}
|
||||
|
||||
$orgUrl = Option::get(self::ORG_URL_OPTION_NAME);
|
||||
if (!empty($orgUrl)) {
|
||||
$this->downloadFile('org', $orgUrl);
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
// message will already be prefixed w/ 'GeoIPAutoUpdater: '
|
||||
StaticContainer::get(LoggerInterface::class)->error('Auto-update failed: {exception}', [
|
||||
'exception' => $ex,
|
||||
'ignoreInScreenWriter' => true,
|
||||
]);
|
||||
$this->performRedundantDbChecks();
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
$this->performRedundantDbChecks();
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads a GeoIP database archive, extracts the .dat file and overwrites the existing
|
||||
* old database.
|
||||
*
|
||||
* If something happens that causes the download to fail, no exception is thrown, but
|
||||
* an error is logged.
|
||||
*
|
||||
* @param string $dbType
|
||||
* @param string $url URL to the database to download. The type of database is determined
|
||||
* from this URL.
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function downloadFile($dbType, $url)
|
||||
{
|
||||
$url = trim($url);
|
||||
|
||||
if (strpos($url, 'GeoLite')) {
|
||||
Log::info('GeoLite databases have been discontinued. Skipping download of '.$url.'. Consider switching to GeoIP 2.');
|
||||
return;
|
||||
}
|
||||
|
||||
$ext = GeoIPAutoUpdater::getGeoIPUrlExtension($url);
|
||||
|
||||
// NOTE: using the first item in $dbNames[$dbType] makes sure GeoLiteCity will be renamed to GeoIPCity
|
||||
$zippedFilename = GeoIp::$dbNames[$dbType][0] . '.' . $ext;
|
||||
|
||||
$zippedOutputPath = GeoIp::getPathForGeoIpDatabase($zippedFilename);
|
||||
|
||||
$url = self::removeDateFromUrl($url);
|
||||
|
||||
// download zipped file to misc dir
|
||||
try {
|
||||
$success = Http::sendHttpRequest($url, $timeout = 3600, $userAgent = null, $zippedOutputPath);
|
||||
} catch (Exception $ex) {
|
||||
throw new Exception("GeoIPAutoUpdater: failed to download '$url' to "
|
||||
. "'$zippedOutputPath': " . $ex->getMessage());
|
||||
}
|
||||
|
||||
if ($success !== true) {
|
||||
throw new Exception("GeoIPAutoUpdater: failed to download '$url' to "
|
||||
. "'$zippedOutputPath'! (Unknown error)");
|
||||
}
|
||||
|
||||
Log::info("GeoIPAutoUpdater: successfully downloaded '%s'", $url);
|
||||
|
||||
try {
|
||||
self::unzipDownloadedFile($zippedOutputPath, $unlink = true);
|
||||
} catch (Exception $ex) {
|
||||
throw new Exception("GeoIPAutoUpdater: failed to unzip '$zippedOutputPath' after "
|
||||
. "downloading " . "'$url': " . $ex->getMessage());
|
||||
}
|
||||
|
||||
Log::info("GeoIPAutoUpdater: successfully updated GeoIP database '%s'", $url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unzips a downloaded GeoIP database. Only unzips .gz & .tar.gz files.
|
||||
*
|
||||
* @param string $path Path to zipped file.
|
||||
* @param bool $unlink Whether to unlink archive or not.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function unzipDownloadedFile($path, $unlink = false)
|
||||
{
|
||||
$parts = explode('.', basename($path));
|
||||
$filenameStart = $parts[0];
|
||||
|
||||
$dbFilename = $filenameStart . '.dat';
|
||||
$tempFilename = $filenameStart . '.dat.new';
|
||||
$outputPath = GeoIp::getPathForGeoIpDatabase($tempFilename);
|
||||
|
||||
// extract file
|
||||
if (substr($path, -7, 7) == '.tar.gz') {
|
||||
// find the .dat file in the tar archive
|
||||
$unzip = Unzip::factory('tar.gz', $path);
|
||||
$content = $unzip->listContent();
|
||||
|
||||
if (empty($content)) {
|
||||
throw new Exception(Piwik::translate('UserCountry_CannotListContent',
|
||||
array("'$path'", $unzip->errorInfo())));
|
||||
}
|
||||
|
||||
$datFile = null;
|
||||
foreach ($content as $info) {
|
||||
$archivedPath = $info['filename'];
|
||||
if (basename($archivedPath) === $dbFilename) {
|
||||
$datFile = $archivedPath;
|
||||
}
|
||||
}
|
||||
|
||||
if ($datFile === null) {
|
||||
throw new Exception(Piwik::translate('UserCountry_CannotFindGeoIPDatabaseInArchive',
|
||||
array($dbFilename, "'$path'")));
|
||||
}
|
||||
|
||||
// extract JUST the .dat file
|
||||
$unzipped = $unzip->extractInString($datFile);
|
||||
|
||||
if (empty($unzipped)) {
|
||||
throw new Exception(Piwik::translate('UserCountry_CannotUnzipDatFile',
|
||||
array("'$path'", $unzip->errorInfo())));
|
||||
}
|
||||
|
||||
// write unzipped to file
|
||||
$fd = fopen($outputPath, 'wb');
|
||||
fwrite($fd, $unzipped);
|
||||
fclose($fd);
|
||||
} else if (substr($path, -3, 3) == '.gz') {
|
||||
$unzip = Unzip::factory('gz', $path);
|
||||
$success = $unzip->extract($outputPath);
|
||||
|
||||
if ($success !== true) {
|
||||
throw new Exception(Piwik::translate('UserCountry_CannotUnzipDatFile',
|
||||
array("'$path'", $unzip->errorInfo())));
|
||||
}
|
||||
} else {
|
||||
$ext = end(explode(basename($path), '.', 2));
|
||||
throw new Exception(Piwik::translate('UserCountry_UnsupportedArchiveType', "'$ext'"));
|
||||
}
|
||||
|
||||
try {
|
||||
// test that the new archive is a valid GeoIP database
|
||||
$dbType = GeoIp::getGeoIPDatabaseTypeFromFilename($dbFilename);
|
||||
if ($dbType === false) // sanity check
|
||||
{
|
||||
throw new Exception("Unexpected GeoIP archive file name '$path'.");
|
||||
}
|
||||
|
||||
$customDbNames = array(
|
||||
'loc' => array(),
|
||||
'isp' => array(),
|
||||
'org' => array()
|
||||
);
|
||||
$customDbNames[$dbType] = array($tempFilename);
|
||||
|
||||
$phpProvider = new Php($customDbNames);
|
||||
|
||||
$location = self::getTestLocationCatchPhpErrors($phpProvider);
|
||||
|
||||
if (empty($location)
|
||||
|| self::$unzipPhpError !== null
|
||||
) {
|
||||
if (self::$unzipPhpError !== null) {
|
||||
list($errno, $errstr, $errfile, $errline) = self::$unzipPhpError;
|
||||
Log::info("GeoIPAutoUpdater: Encountered PHP error when testing newly downloaded" .
|
||||
" GeoIP database: %s: %s on line %s of %s.", $errno, $errstr, $errline, $errfile);
|
||||
}
|
||||
|
||||
throw new Exception(Piwik::translate('UserCountry_ThisUrlIsNotAValidGeoIPDB'));
|
||||
}
|
||||
|
||||
// delete the existing GeoIP database (if any) and rename the downloaded file
|
||||
$oldDbFile = GeoIp::getPathForGeoIpDatabase($dbFilename);
|
||||
if (file_exists($oldDbFile)) {
|
||||
unlink($oldDbFile);
|
||||
}
|
||||
|
||||
$tempFile = GeoIp::getPathForGeoIpDatabase($tempFilename);
|
||||
if (@rename($tempFile, $oldDbFile) !== true) {
|
||||
//In case the $tempfile cannot be renamed, we copy the file.
|
||||
copy($tempFile, $oldDbFile);
|
||||
unlink($tempFile);
|
||||
}
|
||||
|
||||
// delete original archive
|
||||
if ($unlink) {
|
||||
unlink($path);
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
// remove downloaded files
|
||||
if (file_exists($outputPath)) {
|
||||
unlink($outputPath);
|
||||
}
|
||||
unlink($path);
|
||||
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the options used by this class based on query parameter values.
|
||||
*
|
||||
* See setUpdaterOptions for query params used.
|
||||
*/
|
||||
public static function setUpdaterOptionsFromUrl()
|
||||
{
|
||||
$options = array(
|
||||
'loc' => Common::getRequestVar('loc_db', false, 'string'),
|
||||
'isp' => Common::getRequestVar('isp_db', false, 'string'),
|
||||
'org' => Common::getRequestVar('org_db', false, 'string'),
|
||||
'period' => Common::getRequestVar('period', false, 'string'),
|
||||
);
|
||||
|
||||
foreach (self::$urlOptions as $optionKey => $optionName) {
|
||||
$options[$optionKey] = Common::unsanitizeInputValue($options[$optionKey]); // URLs should not be sanitized
|
||||
}
|
||||
|
||||
self::setUpdaterOptions($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the options used by this class based on the elements in $options.
|
||||
*
|
||||
* The following elements of $options are used:
|
||||
* 'loc' - URL for location database.
|
||||
* 'isp' - URL for ISP database.
|
||||
* 'org' - URL for Organization database.
|
||||
* 'period' - 'weekly' or 'monthly'. When to run the updates.
|
||||
*
|
||||
* @param array $options
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function setUpdaterOptions($options)
|
||||
{
|
||||
// set url options
|
||||
foreach (self::$urlOptions as $optionKey => $optionName) {
|
||||
if (!isset($options[$optionKey])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$url = $options[$optionKey];
|
||||
$url = self::removeDateFromUrl($url);
|
||||
|
||||
Option::set($optionName, $url);
|
||||
}
|
||||
|
||||
// set period option
|
||||
if (!empty($options['period'])) {
|
||||
$period = $options['period'];
|
||||
|
||||
if ($period != self::SCHEDULE_PERIOD_MONTHLY
|
||||
&& $period != self::SCHEDULE_PERIOD_WEEKLY
|
||||
) {
|
||||
throw new Exception(Piwik::translate(
|
||||
'UserCountry_InvalidGeoIPUpdatePeriod',
|
||||
array("'$period'", "'" . self::SCHEDULE_PERIOD_MONTHLY . "', '" . self::SCHEDULE_PERIOD_WEEKLY . "'")
|
||||
));
|
||||
}
|
||||
|
||||
Option::set(self::SCHEDULE_PERIOD_OPTION_NAME, $period);
|
||||
|
||||
/** @var Scheduler $scheduler */
|
||||
$scheduler = StaticContainer::getContainer()->get('Piwik\Scheduler\Scheduler');
|
||||
|
||||
$scheduler->rescheduleTaskAndRunTomorrow(new GeoIPAutoUpdater());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all options to disable any configured automatic updates
|
||||
*/
|
||||
public static function clearOptions()
|
||||
{
|
||||
foreach (self::$urlOptions as $optionKey => $optionName) {
|
||||
Option::delete($optionName);
|
||||
}
|
||||
Option::delete(self::SCHEDULE_PERIOD_OPTION_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the auto-updater is setup to update at least one type of
|
||||
* database. False if otherwise.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isUpdaterSetup()
|
||||
{
|
||||
if (Option::get(self::LOC_URL_OPTION_NAME) !== false
|
||||
|| Option::get(self::ISP_URL_OPTION_NAME) !== false
|
||||
|| Option::get(self::ORG_URL_OPTION_NAME) !== false
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the URLs used to update various GeoIP database files.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getConfiguredUrls()
|
||||
{
|
||||
$result = array();
|
||||
foreach (self::$urlOptions as $key => $optionName) {
|
||||
$result[$key] = Option::get($optionName);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the confiured URL (if any) for a type of database.
|
||||
*
|
||||
* @param string $key 'loc', 'isp' or 'org'
|
||||
* @throws Exception
|
||||
* @return string|false
|
||||
*/
|
||||
public static function getConfiguredUrl($key)
|
||||
{
|
||||
if (empty(self::$urlOptions[$key])) {
|
||||
throw new Exception("Invalid key $key");
|
||||
}
|
||||
$url = Option::get(self::$urlOptions[$key]);
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a GeoIP database update.
|
||||
*/
|
||||
public static function performUpdate()
|
||||
{
|
||||
$instance = new GeoIPAutoUpdater();
|
||||
$instance->update();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the configured update period, either 'week' or 'month'. Defaults to
|
||||
* 'month'.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getSchedulePeriod()
|
||||
{
|
||||
$period = Option::get(self::SCHEDULE_PERIOD_OPTION_NAME);
|
||||
if ($period === false) {
|
||||
$period = self::SCHEDULE_PERIOD_MONTHLY;
|
||||
}
|
||||
return $period;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of strings for GeoIP databases that have update URLs configured, but
|
||||
* are not present in the misc directory. Each string is a key describing the type of
|
||||
* database (ie, 'loc', 'isp' or 'org').
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getMissingDatabases()
|
||||
{
|
||||
$result = array();
|
||||
foreach (self::getConfiguredUrls() as $key => $url) {
|
||||
if (!empty($url)) {
|
||||
// if a database of the type does not exist, but there's a url to update, then
|
||||
// a database is missing
|
||||
$path = GeoIp::getPathToGeoIpDatabase(
|
||||
GeoIp::$dbNames[$key]);
|
||||
if ($path === false) {
|
||||
$result[] = $key;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the extension of a URL used to update a GeoIP database, if it can be found.
|
||||
*/
|
||||
public static function getGeoIPUrlExtension($url)
|
||||
{
|
||||
// check for &suffix= query param that is special to MaxMind URLs
|
||||
if (preg_match('/suffix=([^&]+)/', $url, $matches)) {
|
||||
$ext = $matches[1];
|
||||
} else {
|
||||
// use basename of url
|
||||
$filenameParts = explode('.', basename($url), 2);
|
||||
if (count($filenameParts) > 1) {
|
||||
$ext = end($filenameParts);
|
||||
} else {
|
||||
$ext = reset($filenameParts);
|
||||
}
|
||||
}
|
||||
|
||||
self::checkForSupportedArchiveType($ext);
|
||||
|
||||
return $ext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Avoid downloading archive types we don't support. No point in downloading it,
|
||||
* if we can't unzip it...
|
||||
*
|
||||
* @param string $ext The URL file's extension.
|
||||
* @throws \Exception
|
||||
*/
|
||||
private static function checkForSupportedArchiveType($ext)
|
||||
{
|
||||
if ($ext != 'tar.gz'
|
||||
&& $ext != 'gz'
|
||||
&& $ext != 'dat.gz'
|
||||
&& $ext != 'mmdb.gz'
|
||||
) {
|
||||
throw new \Exception(Piwik::translate('UserCountry_UnsupportedArchiveType', "'$ext'"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a location provider using a test IP address and catches PHP errors
|
||||
* (ie, notices) if they occur. PHP error information is held in self::$unzipPhpError.
|
||||
*
|
||||
* @param LocationProvider $provider The provider to test.
|
||||
* @return array|false $location The result of geolocation. False if no location
|
||||
* can be found.
|
||||
*/
|
||||
private static function getTestLocationCatchPhpErrors($provider)
|
||||
{
|
||||
// note: in most cases where this will fail, the error will usually be a PHP fatal error/notice.
|
||||
// in order to delete the files in such a case (which can be caused by a man-in-the-middle attack)
|
||||
// we need to catch them, so we set a new error handler.
|
||||
self::$unzipPhpError = null;
|
||||
set_error_handler(array('Piwik\Plugins\UserCountry\GeoIPAutoUpdater', 'catchGeoIPError'));
|
||||
|
||||
$location = $provider->getLocation(array('ip' => GeoIp::TEST_IP));
|
||||
|
||||
restore_error_handler();
|
||||
|
||||
return $location;
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function that checks if geolocation works with each installed database,
|
||||
* and if one or more doesn't, they are renamed to make sure tracking will work.
|
||||
* This is a safety measure used to make sure tracking isn't affected if strange
|
||||
* update errors occur.
|
||||
*
|
||||
* Databases are renamed to ${original}.broken .
|
||||
*
|
||||
* Note: method is protected for testability.
|
||||
*
|
||||
* @param $logErrors - only used to hide error logs during tests
|
||||
*/
|
||||
protected function performRedundantDbChecks($logErrors = true)
|
||||
{
|
||||
$databaseTypes = array_keys(GeoIp::$dbNames);
|
||||
|
||||
foreach ($databaseTypes as $type) {
|
||||
$customNames = array(
|
||||
'loc' => array(),
|
||||
'isp' => array(),
|
||||
'org' => array()
|
||||
);
|
||||
$customNames[$type] = GeoIp::$dbNames[$type];
|
||||
|
||||
// create provider that only uses the DB type we're testing
|
||||
$provider = new Php($customNames);
|
||||
|
||||
// test the provider. on error, we rename the broken DB.
|
||||
self::getTestLocationCatchPhpErrors($provider);
|
||||
if (self::$unzipPhpError !== null) {
|
||||
list($errno, $errstr, $errfile, $errline) = self::$unzipPhpError;
|
||||
|
||||
if ($logErrors) {
|
||||
StaticContainer::get(LoggerInterface::class)->error("GeoIPAutoUpdater: Encountered PHP error when performing redundant tests on GeoIP "
|
||||
. "{type} database: {errno}: {errstr} on line {errline} of {errfile}.", [
|
||||
'ignoreInScreenWriter' => true,
|
||||
'type' => $type,
|
||||
'errno' => $errno,
|
||||
'errstr' => $errstr,
|
||||
'errline' => $errline,
|
||||
'errfile' => $errfile,
|
||||
]);
|
||||
}
|
||||
|
||||
// get the current filename for the DB and an available new one to rename it to
|
||||
list($oldPath, $newPath) = $this->getOldAndNewPathsForBrokenDb($customNames[$type]);
|
||||
|
||||
// rename the DB so tracking will not fail
|
||||
if ($oldPath !== false
|
||||
&& $newPath !== false
|
||||
) {
|
||||
if (file_exists($newPath)) {
|
||||
unlink($newPath);
|
||||
}
|
||||
|
||||
rename($oldPath, $newPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the path to a GeoIP database and a path to rename it to if it's broken.
|
||||
*
|
||||
* @param array $possibleDbNames The possible names of the database.
|
||||
* @return array Array with two elements, the path to the existing database, and
|
||||
* the path to rename it to if it is broken. The second will end
|
||||
* with something like .broken .
|
||||
*/
|
||||
private function getOldAndNewPathsForBrokenDb($possibleDbNames)
|
||||
{
|
||||
$pathToDb = GeoIp::getPathToGeoIpDatabase($possibleDbNames);
|
||||
$newPath = false;
|
||||
|
||||
if ($pathToDb !== false) {
|
||||
$newPath = $pathToDb . ".broken";
|
||||
}
|
||||
|
||||
return array($pathToDb, $newPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom PHP error handler used to catch any PHP errors that occur when
|
||||
* testing a downloaded GeoIP file.
|
||||
*
|
||||
* If we download a file that is supposed to be a GeoIP database, we need to make
|
||||
* sure it is one. This is done simply by attempting to use it. If this fails, it
|
||||
* will most of the time fail as a PHP error, which we catch w/ this function
|
||||
* after it is passed to set_error_handler.
|
||||
*
|
||||
* The PHP error is stored in self::$unzipPhpError.
|
||||
*
|
||||
* @param int $errno
|
||||
* @param string $errstr
|
||||
* @param string $errfile
|
||||
* @param int $errline
|
||||
*/
|
||||
public static function catchGeoIPError($errno, $errstr, $errfile, $errline)
|
||||
{
|
||||
self::$unzipPhpError = array($errno, $errstr, $errfile, $errline);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the time the auto updater was last run.
|
||||
*
|
||||
* @return Date|false
|
||||
*/
|
||||
public static function getLastRunTime()
|
||||
{
|
||||
$timestamp = Option::get(self::LAST_RUN_TIME_OPTION_NAME);
|
||||
return $timestamp === false ? false : Date::factory((int)$timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the &date=... query parameter if present in the URL. This query parameter
|
||||
* is in MaxMind URLs by default and will force the download of an old database.
|
||||
*
|
||||
* @param string $url
|
||||
* @return string
|
||||
*/
|
||||
private static function removeDateFromUrl($url)
|
||||
{
|
||||
return preg_replace("/&date=[^&#]*/", '', $url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the next scheduled time for the auto updater.
|
||||
*
|
||||
* @return Date|false
|
||||
*/
|
||||
public static function getNextRunTime()
|
||||
{
|
||||
$task = new GeoIPAutoUpdater();
|
||||
|
||||
$timetable = new Timetable();
|
||||
return $timetable->getScheduledTaskTime($task->getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* See {@link Piwik\Scheduler\Schedule\Schedule::getRescheduledTime()}.
|
||||
*/
|
||||
public function getRescheduledTime()
|
||||
{
|
||||
$nextScheduledTime = parent::getRescheduledTime();
|
||||
|
||||
// if a geoip database is out of date, run the updater as soon as possible
|
||||
if ($this->isAtLeastOneGeoIpDbOutOfDate($nextScheduledTime)) {
|
||||
return time();
|
||||
}
|
||||
|
||||
return $nextScheduledTime;
|
||||
}
|
||||
|
||||
private function isAtLeastOneGeoIpDbOutOfDate($rescheduledTime)
|
||||
{
|
||||
$previousScheduledRuntime = $this->getPreviousScheduledTime($rescheduledTime)->setTime("00:00:00")->getTimestamp();
|
||||
|
||||
foreach (GeoIp::$dbNames as $type => $dbNames) {
|
||||
$dbUrl = Option::get(self::$urlOptions[$type]);
|
||||
$dbPath = GeoIp::getPathToGeoIpDatabase($dbNames);
|
||||
|
||||
// if there is a URL for this DB type and the GeoIP DB file's last modified time is before
|
||||
// the time the updater should have been previously run, then **the file is out of date**
|
||||
if (!empty($dbUrl)
|
||||
&& filemtime($dbPath) < $previousScheduledRuntime
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function getPreviousScheduledTime($rescheduledTime)
|
||||
{
|
||||
$updaterPeriod = self::getSchedulePeriod();
|
||||
|
||||
if ($updaterPeriod == self::SCHEDULE_PERIOD_WEEKLY) {
|
||||
return Date::factory($rescheduledTime)->subWeek(1);
|
||||
} else if ($updaterPeriod == self::SCHEDULE_PERIOD_MONTHLY) {
|
||||
return Date::factory($rescheduledTime)->subMonth(1);
|
||||
}
|
||||
throw new Exception("Unknown GeoIP updater period found in database: %s", $updaterPeriod);
|
||||
}
|
||||
}
|
509
msd2/tracking/piwik/plugins/UserCountry/LocationProvider.php
Normal file
509
msd2/tracking/piwik/plugins/UserCountry/LocationProvider.php
Normal file
@ -0,0 +1,509 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Exception;
|
||||
use Piwik\Common;
|
||||
use Piwik\IP;
|
||||
use Piwik\Option;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
|
||||
use Piwik\Plugin\Manager as PluginManager;
|
||||
use Piwik\Tracker\Cache;
|
||||
|
||||
/**
|
||||
* @see plugins/UserCountry/functions.php
|
||||
*/
|
||||
require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/functions.php';
|
||||
|
||||
/**
|
||||
* The base class of all LocationProviders.
|
||||
*
|
||||
* LocationProviders attempt to determine a visitor's location using
|
||||
* visit information. All LocationProviders require a visitor's IP address, some
|
||||
* require more, such as the browser language.
|
||||
*/
|
||||
abstract class LocationProvider
|
||||
{
|
||||
const NOT_INSTALLED = 0;
|
||||
const INSTALLED = 1;
|
||||
const BROKEN = 2;
|
||||
|
||||
const CURRENT_PROVIDER_OPTION_NAME = 'usercountry.location_provider';
|
||||
|
||||
const GEOGRAPHIC_COORD_PRECISION = 3;
|
||||
|
||||
const CONTINENT_CODE_KEY = 'continent_code';
|
||||
const CONTINENT_NAME_KEY = 'continent_name';
|
||||
const COUNTRY_CODE_KEY = 'country_code';
|
||||
const COUNTRY_NAME_KEY = 'country_name';
|
||||
const REGION_CODE_KEY = 'region_code';
|
||||
const REGION_NAME_KEY = 'region_name';
|
||||
const CITY_NAME_KEY = 'city_name';
|
||||
const AREA_CODE_KEY = 'area_code';
|
||||
const LATITUDE_KEY = 'lat';
|
||||
const LONGITUDE_KEY = 'long';
|
||||
const POSTAL_CODE_KEY = 'postal_code';
|
||||
const ISP_KEY = 'isp';
|
||||
const ORG_KEY = 'org';
|
||||
|
||||
/**
|
||||
* An array of all provider instances. Access it through static methods.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $providers = null;
|
||||
|
||||
/**
|
||||
* Returns location information based on visitor information.
|
||||
*
|
||||
* The result of this function will be an array. The array can store some or all of
|
||||
* the following information:
|
||||
*
|
||||
* - Continent Code: The code of the visitor's continent.
|
||||
* (array key is self::CONTINENT_CODE_KEY)
|
||||
* - Continent Name: The name of the visitor's continent.
|
||||
* (array key is self::CONTINENT_NAME_KEY)
|
||||
* - Country Code: The code of the visitor's country.
|
||||
* (array key is self::COUNTRY_CODE_KEY)
|
||||
* - Country Name: The name of the visitor's country.
|
||||
* (array key is self::COUNTRY_NAME_KEY)
|
||||
* - Region Code: The code of the visitor's region.
|
||||
* (array key is self::REGION_CODE_KEY)
|
||||
* - Region Name: The name of the visitor's region.
|
||||
* (array key is self::REGION_NAME_KEY)
|
||||
* - City Name: The name of the visitor's city.
|
||||
* (array key is self::CITY_NAME_KEY)
|
||||
* - Area Code: The visitor's area code.
|
||||
* (array key is self::AREA_CODE_KEY)
|
||||
* - Latitude: The visitor's latitude.
|
||||
* (array key is self::LATITUDE_KEY)
|
||||
* - Longitude: The visitor's longitude.
|
||||
* (array key is self::LONGITUDE_KEY)
|
||||
* - Postal Code: The visitor's postal code.
|
||||
* (array key is self::POSTAL_CODE_KEY)
|
||||
* - ISP: The visitor's ISP.
|
||||
* (array key is self::ISP_KEY)
|
||||
* - Org: The company/organization of the visitor's IP.
|
||||
* (array key is self::ORG_KEY)
|
||||
*
|
||||
* All LocationProviders will attempt to return the country of the visitor.
|
||||
*
|
||||
* @param array $info What this must contain depends on the specific provider
|
||||
* implementation. All providers require an 'ip' key mapped
|
||||
* to the visitor's IP address.
|
||||
* @return array|false
|
||||
*/
|
||||
abstract public function getLocation($info);
|
||||
|
||||
/**
|
||||
* Returns true if this provider is available for use, false if otherwise.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
abstract public function isAvailable();
|
||||
|
||||
/**
|
||||
* Returns true if this provider is working, false if otherwise.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
abstract public function isWorking();
|
||||
|
||||
/**
|
||||
* Returns information about this location provider. Contains an id, title & description:
|
||||
*
|
||||
* array(
|
||||
* 'id' => 'geoip2php',
|
||||
* 'title' => '...',
|
||||
* 'description' => '...'
|
||||
* );
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
abstract public function getInfo();
|
||||
|
||||
/**
|
||||
* Returns an array mapping location result keys w/ bool values indicating whether
|
||||
* that information is supported by this provider. If it is not supported, that means
|
||||
* this provider either cannot get this information, or is not configured to get it.
|
||||
*
|
||||
* @return array eg. array(self::CONTINENT_CODE_KEY => true,
|
||||
* self::CONTINENT_NAME_KEY => true,
|
||||
* self::ORG_KEY => false)
|
||||
* The result is not guaranteed to have keys for every type of location
|
||||
* info.
|
||||
*/
|
||||
abstract public function getSupportedLocationInfo();
|
||||
|
||||
/**
|
||||
* Method called when a provider gets activated.
|
||||
*/
|
||||
public function activate()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns if location provider should be shown.
|
||||
*/
|
||||
public function isVisible()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns every available provider instance.
|
||||
*
|
||||
* @return LocationProvider[]
|
||||
*/
|
||||
public static function getAllProviders()
|
||||
{
|
||||
if (is_null(self::$providers)) {
|
||||
self::$providers = array();
|
||||
$plugins = PluginManager::getInstance()->getPluginsLoadedAndActivated();
|
||||
foreach ($plugins as $plugin) {
|
||||
foreach (self::getLocationProviders($plugin) as $instance) {
|
||||
self::$providers[] = $instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return self::$providers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all lo that are defined by the given plugin.
|
||||
*
|
||||
* @param Plugin $plugin
|
||||
* @return LocationProvider[]
|
||||
*/
|
||||
protected static function getLocationProviders(Plugin $plugin)
|
||||
{
|
||||
$locationProviders = $plugin->findMultipleComponents('LocationProvider', 'Piwik\\Plugins\\UserCountry\\LocationProvider');
|
||||
$instances = [];
|
||||
|
||||
foreach ($locationProviders as $locationProvider) {
|
||||
$instances[] = new $locationProvider();
|
||||
}
|
||||
|
||||
return $instances;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all provider instances that are 'available'. An 'available' provider
|
||||
* is one that is available for use. They may not necessarily be working.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getAvailableProviders()
|
||||
{
|
||||
$result = array();
|
||||
foreach (self::getAllProviders() as $provider) {
|
||||
if ($provider->isAvailable()) {
|
||||
$result[] = $provider;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array mapping provider IDs w/ information about the provider,
|
||||
* for each location provider.
|
||||
*
|
||||
* The following information is provided for each provider:
|
||||
* 'id' - The provider's unique string ID.
|
||||
* 'title' - The provider's title.
|
||||
* 'description' - A description of how the location provider works.
|
||||
* 'status' - Either self::NOT_INSTALLED, self::INSTALLED or self::BROKEN.
|
||||
* 'statusMessage' - If the status is self::BROKEN, then the message describes why.
|
||||
* 'location' - A pretty formatted location of the current IP address
|
||||
* (IP::getIpFromHeader()).
|
||||
*
|
||||
* An example result:
|
||||
* array(
|
||||
* 'geoip2php' => array('id' => 'geoip2php',
|
||||
* 'title' => '...',
|
||||
* 'desc' => '...',
|
||||
* 'status' => GeoIp2::BROKEN,
|
||||
* 'statusMessage' => '...',
|
||||
* 'location' => '...')
|
||||
* 'geoip_serverbased' => array(...)
|
||||
* )
|
||||
*
|
||||
* @param string $newline What to separate lines with in the pretty locations.
|
||||
* @param bool $includeExtra Whether to include ISP/Org info in formatted location.
|
||||
* @return array
|
||||
*/
|
||||
public static function getAllProviderInfo($newline = "\n", $includeExtra = false)
|
||||
{
|
||||
$allInfo = array();
|
||||
foreach (self::getAllProviders() as $provider) {
|
||||
|
||||
$info = $provider->getInfo();
|
||||
|
||||
$status = self::INSTALLED;
|
||||
$location = false;
|
||||
$statusMessage = false;
|
||||
|
||||
$availableOrMessage = $provider->isAvailable();
|
||||
if ($availableOrMessage !== true) {
|
||||
$status = self::NOT_INSTALLED;
|
||||
if (is_string($availableOrMessage)) {
|
||||
$statusMessage = $availableOrMessage;
|
||||
}
|
||||
} else {
|
||||
$workingOrError = $provider->isWorking();
|
||||
if ($workingOrError === true) // if the implementation is configured correctly, get the location
|
||||
{
|
||||
$locInfo = array('ip' => IP::getIpFromHeader(),
|
||||
'lang' => Common::getBrowserLanguage(),
|
||||
'disable_fallbacks' => true);
|
||||
|
||||
$location = $provider->getLocation($locInfo);
|
||||
$location = self::prettyFormatLocation($location, $newline, $includeExtra);
|
||||
} else // otherwise set an error message describing why
|
||||
{
|
||||
$status = self::BROKEN;
|
||||
$statusMessage = $workingOrError;
|
||||
}
|
||||
}
|
||||
|
||||
$info['status'] = $status;
|
||||
$info['statusMessage'] = $statusMessage;
|
||||
$info['location'] = $location;
|
||||
$info['isVisible'] = $provider->isVisible();
|
||||
|
||||
$allInfo[$info['order']] = $info;
|
||||
}
|
||||
|
||||
ksort($allInfo);
|
||||
|
||||
$result = array();
|
||||
foreach ($allInfo as $info) {
|
||||
$result[$info['id']] = $info;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ID of the currently used location provider.
|
||||
*
|
||||
* The used provider is stored in the 'usercountry.location_provider' option.
|
||||
*
|
||||
* This function should not be called by the Tracker.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getCurrentProviderId()
|
||||
{
|
||||
try {
|
||||
$optionValue = Option::get(self::CURRENT_PROVIDER_OPTION_NAME);
|
||||
} catch (\Exception $e) {
|
||||
$optionValue = false;
|
||||
}
|
||||
return $optionValue === false ? DefaultProvider::ID : $optionValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the provider instance of the current location provider.
|
||||
*
|
||||
* This function should not be called by the Tracker.
|
||||
*
|
||||
* @return \Piwik\Plugins\UserCountry\LocationProvider|null
|
||||
*/
|
||||
public static function getCurrentProvider()
|
||||
{
|
||||
return self::getProviderById(self::getCurrentProviderId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the provider to use when tracking.
|
||||
*
|
||||
* @param string $providerId The ID of the provider to use.
|
||||
* @return \Piwik\Plugins\UserCountry\LocationProvider The new current provider.
|
||||
* @throws Exception If the provider ID is invalid.
|
||||
*/
|
||||
public static function setCurrentProvider($providerId)
|
||||
{
|
||||
$provider = self::getProviderById($providerId);
|
||||
if (empty($provider)) {
|
||||
throw new Exception(
|
||||
"Invalid provider ID '$providerId'. The provider either does not exist or is not available");
|
||||
}
|
||||
|
||||
$provider->activate();
|
||||
|
||||
Option::set(self::CURRENT_PROVIDER_OPTION_NAME, $providerId);
|
||||
Cache::clearCacheGeneral();
|
||||
return $provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a provider instance by ID or false if the ID is invalid or unavailable.
|
||||
*
|
||||
* @param string $providerId
|
||||
* @return \Piwik\Plugins\UserCountry\LocationProvider|null
|
||||
*/
|
||||
public static function getProviderById($providerId)
|
||||
{
|
||||
foreach (self::getAllProviders() as $provider) {
|
||||
if ($provider->getId() == $providerId && $provider->isAvailable()) {
|
||||
return $provider;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getId()
|
||||
{
|
||||
$info = $this->getInfo();
|
||||
|
||||
return $info['id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to fill in any missing information in a location result.
|
||||
*
|
||||
* This method will try to set the continent code, continent name and country code
|
||||
* using other information.
|
||||
*
|
||||
* Note: This function must always be called by location providers in getLocation.
|
||||
*
|
||||
* @param array $location The location information to modify.
|
||||
*/
|
||||
public function completeLocationResult(&$location)
|
||||
{
|
||||
// fill in continent code if country code is present
|
||||
if (empty($location[self::CONTINENT_CODE_KEY])
|
||||
&& !empty($location[self::COUNTRY_CODE_KEY])
|
||||
) {
|
||||
$countryCode = strtolower($location[self::COUNTRY_CODE_KEY]);
|
||||
$location[self::CONTINENT_CODE_KEY] = Common::getContinent($countryCode);
|
||||
}
|
||||
|
||||
// fill in continent name if continent code is present
|
||||
if (empty($location[self::CONTINENT_NAME_KEY])
|
||||
&& !empty($location[self::CONTINENT_CODE_KEY])
|
||||
) {
|
||||
$continentCode = strtolower($location[self::CONTINENT_CODE_KEY]);
|
||||
$location[self::CONTINENT_NAME_KEY] = continentTranslate($continentCode);
|
||||
}
|
||||
|
||||
// fill in country name if country code is present
|
||||
if (empty($location[self::COUNTRY_NAME_KEY])
|
||||
&& !empty($location[self::COUNTRY_CODE_KEY])
|
||||
) {
|
||||
$countryCode = strtolower($location[self::COUNTRY_CODE_KEY]);
|
||||
$location[self::COUNTRY_NAME_KEY] = countryTranslate($countryCode);
|
||||
}
|
||||
|
||||
// deal w/ improper latitude/longitude & round proper values
|
||||
if (!empty($location[self::LATITUDE_KEY])) {
|
||||
if (is_numeric($location[self::LATITUDE_KEY])) {
|
||||
$location[self::LATITUDE_KEY] = round($location[self::LATITUDE_KEY], self::GEOGRAPHIC_COORD_PRECISION);
|
||||
} else {
|
||||
unset($location[self::LATITUDE_KEY]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($location[self::LONGITUDE_KEY])) {
|
||||
if (is_numeric($location[self::LONGITUDE_KEY])) {
|
||||
$location[self::LONGITUDE_KEY] = round($location[self::LONGITUDE_KEY], self::GEOGRAPHIC_COORD_PRECISION);
|
||||
} else {
|
||||
unset($location[self::LONGITUDE_KEY]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a prettified location result.
|
||||
*
|
||||
* @param array|false $locationInfo
|
||||
* @param string $newline The line separator (ie, \n or <br/>).
|
||||
* @param bool $includeExtra Whether to include ISP/Organization info.
|
||||
* @return string
|
||||
*/
|
||||
public static function prettyFormatLocation($locationInfo, $newline = "\n", $includeExtra = false)
|
||||
{
|
||||
if ($locationInfo === false) {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
// add latitude/longitude line
|
||||
$lines = array();
|
||||
if (!empty($locationInfo[self::LATITUDE_KEY])
|
||||
&& !empty($locationInfo[self::LONGITUDE_KEY])
|
||||
) {
|
||||
$lines[] = '(' . $locationInfo[self::LATITUDE_KEY] . ', ' . $locationInfo[self::LONGITUDE_KEY] . ')';
|
||||
}
|
||||
|
||||
// add city/state line
|
||||
$cityState = array();
|
||||
if (!empty($locationInfo[self::CITY_NAME_KEY])) {
|
||||
$cityState[] = $locationInfo[self::CITY_NAME_KEY];
|
||||
}
|
||||
|
||||
if (!empty($locationInfo[self::REGION_CODE_KEY])) {
|
||||
$cityState[] = $locationInfo[self::REGION_CODE_KEY];
|
||||
} else if (!empty($locationInfo[self::REGION_NAME_KEY])) {
|
||||
$cityState[] = $locationInfo[self::REGION_NAME_KEY];
|
||||
}
|
||||
|
||||
if (!empty($cityState)) {
|
||||
$lines[] = implode(', ', $cityState);
|
||||
}
|
||||
|
||||
// add postal code line
|
||||
if (!empty($locationInfo[self::POSTAL_CODE_KEY])) {
|
||||
$lines[] = $locationInfo[self::POSTAL_CODE_KEY];
|
||||
}
|
||||
|
||||
// add country line
|
||||
if (!empty($locationInfo[self::COUNTRY_NAME_KEY])) {
|
||||
$lines[] = $locationInfo[self::COUNTRY_NAME_KEY];
|
||||
} else if (!empty($locationInfo[self::COUNTRY_CODE_KEY])) {
|
||||
$lines[] = $locationInfo[self::COUNTRY_CODE_KEY];
|
||||
}
|
||||
|
||||
// add extra information (ISP/Organization)
|
||||
if ($includeExtra) {
|
||||
$lines[] = '';
|
||||
|
||||
$unknown = Piwik::translate('General_Unknown');
|
||||
|
||||
$org = !empty($locationInfo[self::ORG_KEY]) ? $locationInfo[self::ORG_KEY] : $unknown;
|
||||
$lines[] = "Org: $org";
|
||||
|
||||
$isp = !empty($locationInfo[self::ISP_KEY]) ? $locationInfo[self::ISP_KEY] : $unknown;
|
||||
$lines[] = "ISP: $isp";
|
||||
}
|
||||
|
||||
return implode($newline, $lines);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an IP address from an array that was passed into getLocation. This
|
||||
* will return an IPv4 address or IPv6 address.
|
||||
*
|
||||
* @param array $info Must have 'ip' key.
|
||||
* @return string|null
|
||||
*/
|
||||
protected function getIpFromInfo($info)
|
||||
{
|
||||
$ip = \Piwik\Network\IP::fromStringIP($info['ip']);
|
||||
|
||||
if ($ip instanceof \Piwik\Network\IPv6 && $ip->isMappedIPv4()) {
|
||||
return $ip->toIPv4String();
|
||||
} else {
|
||||
return $ip->toString();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
<?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\UserCountry\LocationProvider;
|
||||
|
||||
use Piwik\Common;
|
||||
use Piwik\Config;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
|
||||
/**
|
||||
* The default LocationProvider, this LocationProvider guesses a visitor's country
|
||||
* using the language they use. This provider is not very accurate.
|
||||
*
|
||||
*/
|
||||
class DefaultProvider extends LocationProvider
|
||||
{
|
||||
const ID = 'default';
|
||||
const TITLE = 'General_Default';
|
||||
|
||||
/**
|
||||
* Guesses a visitor's location using a visitor's browser language.
|
||||
*
|
||||
* @param array $info Contains 'ip' & 'lang' keys.
|
||||
* @return array Contains the guessed country code mapped to LocationProvider::COUNTRY_CODE_KEY.
|
||||
*/
|
||||
public function getLocation($info)
|
||||
{
|
||||
$enableLanguageToCountryGuess = Config::getInstance()->Tracker['enable_language_to_country_guess'];
|
||||
|
||||
if (empty($info['lang'])) {
|
||||
$info['lang'] = Common::getBrowserLanguage();
|
||||
}
|
||||
$country = Common::getCountry($info['lang'], $enableLanguageToCountryGuess, $info['ip']);
|
||||
|
||||
$location = array(parent::COUNTRY_CODE_KEY => $country);
|
||||
$this->completeLocationResult($location);
|
||||
|
||||
return $location;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this location provider is available.
|
||||
*
|
||||
* This implementation is always available.
|
||||
*
|
||||
* @return bool always true
|
||||
*/
|
||||
public function isAvailable()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this location provider is working correctly.
|
||||
*
|
||||
* This implementation is always working correctly.
|
||||
*
|
||||
* @return bool always true
|
||||
*/
|
||||
public function isWorking()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array describing the types of location information this provider will
|
||||
* return.
|
||||
*
|
||||
* This provider supports the following types of location info:
|
||||
* - continent code
|
||||
* - continent name
|
||||
* - country code
|
||||
* - country name
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getSupportedLocationInfo()
|
||||
{
|
||||
return array(self::CONTINENT_CODE_KEY => true,
|
||||
self::CONTINENT_NAME_KEY => true,
|
||||
self::COUNTRY_CODE_KEY => true,
|
||||
self::COUNTRY_NAME_KEY => true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information about this location provider. Contains an id, title & description:
|
||||
*
|
||||
* array(
|
||||
* 'id' => 'default',
|
||||
* 'title' => '...',
|
||||
* 'description' => '...'
|
||||
* );
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getInfo()
|
||||
{
|
||||
$desc = Piwik::translate('UserCountry_DefaultLocationProviderDesc1') . ' '
|
||||
. Piwik::translate('UserCountry_DefaultLocationProviderDesc2',
|
||||
array('<strong>', '', '', '</strong>'))
|
||||
. '<p><a href="https://matomo.org/faq/how-to/#faq_163" rel="noreferrer noopener" target="_blank">'
|
||||
. Piwik::translate('UserCountry_HowToInstallGeoIPDatabases')
|
||||
. '</a></p>';
|
||||
return array('id' => self::ID, 'title' => self::TITLE, 'description' => $desc, 'order' => 1);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,254 @@
|
||||
<?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\UserCountry\LocationProvider;
|
||||
|
||||
use Exception;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\Manager;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
|
||||
/**
|
||||
* Base type for all GeoIP LocationProviders.
|
||||
*
|
||||
*/
|
||||
abstract class GeoIp extends LocationProvider
|
||||
{
|
||||
/* For testing, use: 'http://piwik-team.s3.amazonaws.com/GeoLiteCity.dat.gz' */
|
||||
const GEO_LITE_URL = 'http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz';
|
||||
const TEST_IP = '194.57.91.215';
|
||||
|
||||
public static $geoIPDatabaseDir = 'misc';
|
||||
|
||||
/**
|
||||
* Stores possible database file names categorized by the type of information
|
||||
* GeoIP databases hold.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $dbNames = array(
|
||||
'loc' => array('GeoIPCity.dat', 'GeoLiteCity.dat', 'GeoIP.dat'),
|
||||
'isp' => array('GeoIPISP.dat'),
|
||||
'org' => array('GeoIPOrg.dat'),
|
||||
);
|
||||
|
||||
/**
|
||||
* Cached region name array. Data is from geoipregionvars.php.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $regionNames = null;
|
||||
|
||||
/**
|
||||
* Attempts to fill in some missing information in a GeoIP location.
|
||||
*
|
||||
* This method will call LocationProvider::completeLocationResult and then
|
||||
* try to set the region name of the location if the country code & region
|
||||
* code are set.
|
||||
*
|
||||
* @param array $location The location information to modify.
|
||||
*/
|
||||
public function completeLocationResult(&$location)
|
||||
{
|
||||
parent::completeLocationResult($location);
|
||||
|
||||
// set region name if region code is set
|
||||
if (empty($location[self::REGION_NAME_KEY])
|
||||
&& !empty($location[self::REGION_CODE_KEY])
|
||||
&& !empty($location[self::COUNTRY_CODE_KEY])
|
||||
) {
|
||||
$countryCode = $location[self::COUNTRY_CODE_KEY];
|
||||
$regionCode = (string)$location[self::REGION_CODE_KEY];
|
||||
$location[self::REGION_NAME_KEY] = self::getRegionNameFromCodes($countryCode, $regionCode);
|
||||
}
|
||||
}
|
||||
|
||||
public function isVisible()
|
||||
{
|
||||
return !Manager::getInstance()->isPluginActivated('GeoIp2') || self::getCurrentProvider() instanceof GeoIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this provider has been setup correctly, the error message if
|
||||
* otherwise.
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function isWorking()
|
||||
{
|
||||
// test with an example IP to make sure the provider is working
|
||||
// NOTE: At the moment only country, region & city info is tested.
|
||||
try {
|
||||
$supportedInfo = $this->getSupportedLocationInfo();
|
||||
|
||||
list($testIp, $expectedResult) = self::getTestIpAndResult();
|
||||
|
||||
// get location using test IP
|
||||
$location = $this->getLocation(array('ip' => $testIp));
|
||||
|
||||
// check that result is the same as expected
|
||||
$isResultCorrect = true;
|
||||
foreach ($expectedResult as $key => $value) {
|
||||
// if this provider is not configured to support this information type, skip it
|
||||
if (empty($supportedInfo[$key])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (empty($location[$key])
|
||||
|| $location[$key] != $value
|
||||
) {
|
||||
$isResultCorrect = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$isResultCorrect) {
|
||||
$unknown = Piwik::translate('General_Unknown');
|
||||
|
||||
$location = "'"
|
||||
. (empty($location[self::CITY_NAME_KEY]) ? $unknown : $location[self::CITY_NAME_KEY])
|
||||
. ", "
|
||||
. (empty($location[self::REGION_CODE_KEY]) ? $unknown : $location[self::REGION_CODE_KEY])
|
||||
. ", "
|
||||
. (empty($location[self::COUNTRY_CODE_KEY]) ? $unknown : $location[self::COUNTRY_CODE_KEY])
|
||||
. "'";
|
||||
|
||||
$expectedLocation = "'" . $expectedResult[self::CITY_NAME_KEY] . ", "
|
||||
. $expectedResult[self::REGION_CODE_KEY] . ", "
|
||||
. $expectedResult[self::COUNTRY_CODE_KEY] . "'";
|
||||
|
||||
$bind = array($testIp, $location, $expectedLocation);
|
||||
return Piwik::translate('UserCountry_TestIPLocatorFailed', $bind);
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (Exception $ex) {
|
||||
return $ex->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a region name for a country code + region code.
|
||||
*
|
||||
* @param string $countryCode
|
||||
* @param string $regionCode
|
||||
* @return string The region name or 'Unknown' (translated).
|
||||
*/
|
||||
public static function getRegionNameFromCodes($countryCode, $regionCode)
|
||||
{
|
||||
$regionNames = self::getRegionNames();
|
||||
|
||||
$countryCode = strtoupper($countryCode);
|
||||
$regionCode = strtoupper($regionCode);
|
||||
|
||||
// ensure tibet is shown as region of china
|
||||
if ($countryCode == 'TI' && $regionCode == '1') {
|
||||
$regionCode = '14';
|
||||
$countryCode = 'CN';
|
||||
}
|
||||
|
||||
if (isset($regionNames[$countryCode][$regionCode])) {
|
||||
return $regionNames[$countryCode][$regionCode];
|
||||
} else {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of region names mapped by country code & region code.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getRegionNames()
|
||||
{
|
||||
if (is_null(self::$regionNames)) {
|
||||
$GEOIP_REGION_NAME = array();
|
||||
require_once PIWIK_INCLUDE_PATH . '/libs/MaxMindGeoIP/geoipregionvars.php';
|
||||
self::$regionNames = $GEOIP_REGION_NAME;
|
||||
}
|
||||
|
||||
return self::$regionNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the path of an existing GeoIP database or false if none can be found.
|
||||
*
|
||||
* @param array $possibleFileNames The list of possible file names for the GeoIP database.
|
||||
* @return string|false
|
||||
*/
|
||||
public static function getPathToGeoIpDatabase($possibleFileNames)
|
||||
{
|
||||
foreach ($possibleFileNames as $filename) {
|
||||
$path = self::getPathForGeoIpDatabase($filename);
|
||||
if (file_exists($path)) {
|
||||
return $path;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns full path for a GeoIP database managed by Piwik.
|
||||
*
|
||||
* @param string $filename Name of the .dat file.
|
||||
* @return string
|
||||
*/
|
||||
public static function getPathForGeoIpDatabase($filename)
|
||||
{
|
||||
return PIWIK_INCLUDE_PATH . '/' . self::$geoIPDatabaseDir . '/' . $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns test IP used by isWorking and expected result.
|
||||
*
|
||||
* @return array eg. array('1.2.3.4', array(self::COUNTRY_CODE_KEY => ...))
|
||||
*/
|
||||
private static function getTestIpAndResult()
|
||||
{
|
||||
static $result = null;
|
||||
if (is_null($result)) {
|
||||
// TODO: what happens when IP changes? should we get this information from piwik.org?
|
||||
$expected = array(self::COUNTRY_CODE_KEY => 'FR',
|
||||
self::REGION_CODE_KEY => 'A6',
|
||||
self::CITY_NAME_KEY => 'Besançon');
|
||||
$result = array(self::TEST_IP, $expected);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if there is a GeoIP database in the 'misc' directory.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isDatabaseInstalled()
|
||||
{
|
||||
return self::getPathToGeoIpDatabase(self::$dbNames['loc'])
|
||||
|| self::getPathToGeoIpDatabase(self::$dbNames['isp'])
|
||||
|| self::getPathToGeoIpDatabase(self::$dbNames['org']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of GeoIP database ('loc', 'isp' or 'org') based on the
|
||||
* filename (eg, 'GeoLiteCity.dat', 'GeoIPISP.dat', etc).
|
||||
*
|
||||
* @param string $filename
|
||||
* @return string|false 'loc', 'isp', 'org', or false if cannot find a database
|
||||
* type.
|
||||
*/
|
||||
public static function getGeoIPDatabaseTypeFromFilename($filename)
|
||||
{
|
||||
foreach (self::$dbNames as $key => $names) {
|
||||
foreach ($names as $name) {
|
||||
if ($name === $filename) {
|
||||
return $key;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -0,0 +1,328 @@
|
||||
<?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\UserCountry\LocationProvider\GeoIp;
|
||||
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
|
||||
/**
|
||||
* A LocationProvider that uses the PECL implementation of GeoIP.
|
||||
*
|
||||
* FIXME: For some reason, if the PECL module is loaded & an organization DB is available, the PHP
|
||||
* module won't return organization info. If the PECL module is not loaded, organization info is returned.
|
||||
*
|
||||
*/
|
||||
class Pecl extends GeoIp
|
||||
{
|
||||
const ID = 'geoip_pecl';
|
||||
const TITLE = 'GeoIP Legacy (PECL)';
|
||||
|
||||
/**
|
||||
* For tests.
|
||||
*/
|
||||
public static $forceDisable = false;
|
||||
|
||||
/**
|
||||
* Uses the GeoIP PECL module to get a visitor's location based on their IP address.
|
||||
*
|
||||
* This function will return different results based on the data available. If a city
|
||||
* database can be detected by the PECL module, it may return the country code,
|
||||
* region code, city name, area code, latitude, longitude and postal code of the visitor.
|
||||
*
|
||||
* Alternatively, if only the country database can be detected, only the country code
|
||||
* will be returned.
|
||||
*
|
||||
* The GeoIP PECL module will detect the following filenames:
|
||||
* - GeoIP.dat
|
||||
* - GeoIPCity.dat
|
||||
* - GeoIPISP.dat
|
||||
* - GeoIPOrg.dat
|
||||
*
|
||||
* Note how GeoLiteCity.dat, the name for the GeoLite city database, is not detected
|
||||
* by the PECL module.
|
||||
*
|
||||
* @param array $info Must have an 'ip' field.
|
||||
* @return array
|
||||
*/
|
||||
public function getLocation($info)
|
||||
{
|
||||
$ip = $this->getIpFromInfo($info);
|
||||
|
||||
$result = array();
|
||||
|
||||
// get location data
|
||||
if (self::isCityDatabaseAvailable()) {
|
||||
// Must hide errors because missing IPV6:
|
||||
$location = @geoip_record_by_name($ip);
|
||||
if (!empty($location)) {
|
||||
$result[self::COUNTRY_CODE_KEY] = $location['country_code'];
|
||||
$result[self::REGION_CODE_KEY] = $location['region'];
|
||||
$result[self::CITY_NAME_KEY] = utf8_encode($location['city']);
|
||||
$result[self::AREA_CODE_KEY] = $location['area_code'];
|
||||
$result[self::LATITUDE_KEY] = $location['latitude'];
|
||||
$result[self::LONGITUDE_KEY] = $location['longitude'];
|
||||
$result[self::POSTAL_CODE_KEY] = $location['postal_code'];
|
||||
}
|
||||
} else if (self::isRegionDatabaseAvailable()) {
|
||||
$location = @geoip_region_by_name($ip);
|
||||
if (!empty($location)) {
|
||||
$result[self::REGION_CODE_KEY] = $location['region'];
|
||||
$result[self::COUNTRY_CODE_KEY] = $location['country_code'];
|
||||
}
|
||||
} else {
|
||||
$result[self::COUNTRY_CODE_KEY] = @geoip_country_code_by_name($ip);
|
||||
}
|
||||
|
||||
// get organization data if the org database is available
|
||||
if (self::isOrgDatabaseAvailable()) {
|
||||
$org = @geoip_org_by_name($ip);
|
||||
if ($org !== false) {
|
||||
$result[self::ORG_KEY] = utf8_encode($org);
|
||||
}
|
||||
}
|
||||
|
||||
// get isp data if the isp database is available
|
||||
if (self::isISPDatabaseAvailable()) {
|
||||
$isp = @geoip_isp_by_name($ip);
|
||||
if ($isp !== false) {
|
||||
$result[self::ISP_KEY] = utf8_encode($isp);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($result)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->completeLocationResult($result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module is installed and loaded, false if otherwise.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isAvailable()
|
||||
{
|
||||
return !self::$forceDisable && function_exists('geoip_db_avail');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module that is installed can be successfully used
|
||||
* to get the location of an IP address.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isWorking()
|
||||
{
|
||||
// if no no location database is available, this implementation is not setup correctly
|
||||
if (!self::isLocationDatabaseAvailable()) {
|
||||
$dbDir = dirname(geoip_db_filename(GEOIP_COUNTRY_EDITION)) . '/';
|
||||
$quotedDir = "'$dbDir'";
|
||||
|
||||
// check if the directory the PECL module is looking for exists
|
||||
if (!is_dir($dbDir)) {
|
||||
return Piwik::translate('UserCountry_PeclGeoIPNoDBDir', array($quotedDir, "'geoip.custom_directory'"));
|
||||
}
|
||||
|
||||
// check if the user named the city database GeoLiteCity.dat
|
||||
if (file_exists($dbDir . 'GeoLiteCity.dat')) {
|
||||
return Piwik::translate('UserCountry_PeclGeoLiteError',
|
||||
array($quotedDir, "'GeoLiteCity.dat'", "'GeoIPCity.dat'"));
|
||||
}
|
||||
|
||||
return Piwik::translate('UserCountry_CannotFindPeclGeoIPDb',
|
||||
array($quotedDir, "'GeoIP.dat'", "'GeoIPCity.dat'"));
|
||||
}
|
||||
|
||||
return parent::isWorking();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array describing the types of location information this provider will
|
||||
* return.
|
||||
*
|
||||
* The location info this provider supports depends on what GeoIP databases it can
|
||||
* find.
|
||||
*
|
||||
* This provider will always support country & continent information.
|
||||
*
|
||||
* If a region database is found, then region code & name information will be
|
||||
* supported.
|
||||
*
|
||||
* If a city database is found, then region code, region name, city name,
|
||||
* area code, latitude, longitude & postal code are all supported.
|
||||
*
|
||||
* If an organization database is found, organization information is
|
||||
* supported.
|
||||
*
|
||||
* If an ISP database is found, ISP information is supported.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getSupportedLocationInfo()
|
||||
{
|
||||
$result = array();
|
||||
|
||||
// country & continent info always available
|
||||
$result[self::CONTINENT_CODE_KEY] = true;
|
||||
$result[self::CONTINENT_NAME_KEY] = true;
|
||||
$result[self::COUNTRY_CODE_KEY] = true;
|
||||
$result[self::COUNTRY_NAME_KEY] = true;
|
||||
|
||||
if (self::isCityDatabaseAvailable()) {
|
||||
$result[self::REGION_CODE_KEY] = true;
|
||||
$result[self::REGION_NAME_KEY] = true;
|
||||
$result[self::CITY_NAME_KEY] = true;
|
||||
$result[self::AREA_CODE_KEY] = true;
|
||||
$result[self::LATITUDE_KEY] = true;
|
||||
$result[self::LONGITUDE_KEY] = true;
|
||||
$result[self::POSTAL_CODE_KEY] = true;
|
||||
} else if (self::isRegionDatabaseAvailable()) {
|
||||
$result[self::REGION_CODE_KEY] = true;
|
||||
$result[self::REGION_NAME_KEY] = true;
|
||||
}
|
||||
|
||||
// check if organization info is available
|
||||
if (self::isOrgDatabaseAvailable()) {
|
||||
$result[self::ORG_KEY] = true;
|
||||
}
|
||||
|
||||
// check if ISP info is available
|
||||
if (self::isISPDatabaseAvailable()) {
|
||||
$result[self::ISP_KEY] = true;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information about this location provider. Contains an id, title & description:
|
||||
*
|
||||
* array(
|
||||
* 'id' => 'geoip_pecl',
|
||||
* 'title' => '...',
|
||||
* 'description' => '...'
|
||||
* );
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getInfo()
|
||||
{
|
||||
$desc = Piwik::translate('UserCountry_GeoIpLocationProviderDesc_Pecl1') . '<br/><br/>'
|
||||
. Piwik::translate('UserCountry_GeoIpLocationProviderDesc_Pecl2');
|
||||
$installDocs = '<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/faq/how-to/#faq_164">'
|
||||
. Piwik::translate('UserCountry_HowToInstallGeoIpPecl')
|
||||
. '</a>';
|
||||
|
||||
$extraMessage = false;
|
||||
if ($this->isAvailable()) {
|
||||
$peclDir = ini_get('geoip.custom_directory');
|
||||
if ($peclDir === false) {
|
||||
$extraMessage = Piwik::translate('UserCountry_GeoIPPeclCustomDirNotSet', "'geoip.custom_directory'");
|
||||
} else {
|
||||
$extraMessage = 'The \'geoip.custom_directory\' PHP ini option is set to \'' . $peclDir . '\'.';
|
||||
}
|
||||
|
||||
$availableDatabaseTypes = array();
|
||||
if (self::isCityDatabaseAvailable()) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_City');
|
||||
}
|
||||
if (self::isRegionDatabaseAvailable()) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_Region');
|
||||
}
|
||||
if (self::isCountryDatabaseAvailable()) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_Country');
|
||||
}
|
||||
if (self::isISPDatabaseAvailable()) {
|
||||
$availableDatabaseTypes[] = 'ISP';
|
||||
}
|
||||
if (self::isOrgDatabaseAvailable()) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_Organization');
|
||||
}
|
||||
|
||||
$extraMessage .= '<br/><br/>' . Piwik::translate('UserCountry_GeoIPImplHasAccessTo') . ': <strong>'
|
||||
. implode(', ', $availableDatabaseTypes) . '</strong>.';
|
||||
|
||||
$extraMessage = '<strong>' . Piwik::translate('General_Note') . ': </strong>' . $extraMessage;
|
||||
}
|
||||
|
||||
return array('id' => self::ID,
|
||||
'title' => self::TITLE,
|
||||
'description' => $desc,
|
||||
'install_docs' => $installDocs,
|
||||
'extra_message' => $extraMessage,
|
||||
'order' => 13);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module can detect a location database (either a country,
|
||||
* region or city will do).
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isLocationDatabaseAvailable()
|
||||
{
|
||||
return self::isCityDatabaseAvailable()
|
||||
|| self::isRegionDatabaseAvailable()
|
||||
|| self::isCountryDatabaseAvailable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module can detect a city database.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isCityDatabaseAvailable()
|
||||
{
|
||||
return geoip_db_avail(GEOIP_CITY_EDITION_REV0)
|
||||
|| geoip_db_avail(GEOIP_CITY_EDITION_REV1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module can detect a region database.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isRegionDatabaseAvailable()
|
||||
{
|
||||
return geoip_db_avail(GEOIP_REGION_EDITION_REV0)
|
||||
|| geoip_db_avail(GEOIP_REGION_EDITION_REV1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module can detect a country database.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isCountryDatabaseAvailable()
|
||||
{
|
||||
return geoip_db_avail(GEOIP_COUNTRY_EDITION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module can detect an organization database.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isOrgDatabaseAvailable()
|
||||
{
|
||||
return geoip_db_avail(GEOIP_ORG_EDITION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the PECL module can detect an ISP database.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isISPDatabaseAvailable()
|
||||
{
|
||||
return geoip_db_avail(GEOIP_ISP_EDITION);
|
||||
}
|
||||
}
|
@ -0,0 +1,388 @@
|
||||
<?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\UserCountry\LocationProvider\GeoIp;
|
||||
|
||||
use Piwik\Log;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
|
||||
/**
|
||||
* A LocationProvider that uses the PHP implementation of GeoIP.
|
||||
*
|
||||
*/
|
||||
class Php extends GeoIp
|
||||
{
|
||||
const ID = 'geoip_php';
|
||||
const TITLE = 'GeoIP Legacy (Php)';
|
||||
|
||||
/**
|
||||
* The GeoIP database instances used. This array will contain at most three
|
||||
* of them: one for location info, one for ISP info and another for organization
|
||||
* info.
|
||||
*
|
||||
* Each instance is mapped w/ one of the following keys: 'loc', 'isp', 'org'
|
||||
*
|
||||
* @var array of GeoIP instances
|
||||
*/
|
||||
private $geoIpCache = array();
|
||||
|
||||
/**
|
||||
* Possible filenames for each type of GeoIP database. When looking for a database
|
||||
* file in the 'misc' subdirectory, files with these names will be looked for.
|
||||
*
|
||||
* This variable is an array mapping either the 'loc', 'isp' or 'org' strings with
|
||||
* an array of filenames.
|
||||
*
|
||||
* By default, this will be set to Php::$dbNames.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $customDbNames;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param array|bool $customDbNames The possible filenames for each type of GeoIP database.
|
||||
* eg array(
|
||||
* 'loc' => array('GeoLiteCity.dat'),
|
||||
* 'isp' => array('GeoIP.dat', 'GeoIPISP.dat')
|
||||
* 'org' => array('GeoIPOrg.dat')
|
||||
* )
|
||||
* If a key is missing (or the parameter not supplied), then the
|
||||
* default database names are used.
|
||||
*/
|
||||
public function __construct($customDbNames = false)
|
||||
{
|
||||
$this->customDbNames = parent::$dbNames;
|
||||
if ($customDbNames !== false) {
|
||||
foreach ($this->customDbNames as $key => $names) {
|
||||
if (isset($customDbNames[$key])) {
|
||||
$this->customDbNames[$key] = $customDbNames[$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes all open geoip instances.
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
foreach ($this->geoIpCache as $instance) {
|
||||
geoip_close($instance);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses a GeoIP database to get a visitor's location based on their IP address.
|
||||
*
|
||||
* This function will return different results based on the data used. If a city
|
||||
* database is used, it may return the country code, region code, city name, area
|
||||
* code, latitude, longitude and postal code of the visitor.
|
||||
*
|
||||
* Alternatively, if used with a country database, only the country code will be
|
||||
* returned.
|
||||
*
|
||||
* @param array $info Must have an 'ip' field.
|
||||
* @return array
|
||||
*/
|
||||
public function getLocation($info)
|
||||
{
|
||||
$ip = $this->getIpFromInfo($info);
|
||||
$isIPv6 = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6);
|
||||
|
||||
$result = array();
|
||||
|
||||
$locationGeoIp = $this->getGeoIpInstance($key = 'loc');
|
||||
if ($locationGeoIp) {
|
||||
switch ($locationGeoIp->databaseType) {
|
||||
case GEOIP_CITY_EDITION_REV0: // city database type
|
||||
case GEOIP_CITY_EDITION_REV1:
|
||||
case GEOIP_CITYCOMBINED_EDITION:
|
||||
if ($isIPv6) {
|
||||
$location = geoip_record_by_addr_v6($locationGeoIp, $ip);
|
||||
} else {
|
||||
$location = geoip_record_by_addr($locationGeoIp, $ip);
|
||||
}
|
||||
if (!empty($location)) {
|
||||
$result[self::COUNTRY_CODE_KEY] = $location->country_code;
|
||||
$result[self::REGION_CODE_KEY] = $location->region;
|
||||
$result[self::CITY_NAME_KEY] = utf8_encode($location->city);
|
||||
$result[self::AREA_CODE_KEY] = $location->area_code;
|
||||
$result[self::LATITUDE_KEY] = $location->latitude;
|
||||
$result[self::LONGITUDE_KEY] = $location->longitude;
|
||||
$result[self::POSTAL_CODE_KEY] = $location->postal_code;
|
||||
}
|
||||
break;
|
||||
case GEOIP_REGION_EDITION_REV0: // region database type
|
||||
case GEOIP_REGION_EDITION_REV1:
|
||||
if ($isIPv6) {
|
||||
// NOTE: geoip_region_by_addr_v6 does not exist (yet?), so we
|
||||
// return the country code and an empty region code
|
||||
$location = array(geoip_country_code_by_addr_v6($locationGeoIp, $ip), '');
|
||||
} else {
|
||||
$location = geoip_region_by_addr($locationGeoIp, $ip);
|
||||
}
|
||||
if (!empty($location)) {
|
||||
$result[self::COUNTRY_CODE_KEY] = $location[0];
|
||||
$result[self::REGION_CODE_KEY] = $location[1];
|
||||
}
|
||||
break;
|
||||
case GEOIP_COUNTRY_EDITION: // country database type
|
||||
if ($isIPv6) {
|
||||
$result[self::COUNTRY_CODE_KEY] = geoip_country_code_by_addr_v6($locationGeoIp, $ip);
|
||||
} else {
|
||||
$result[self::COUNTRY_CODE_KEY] = geoip_country_code_by_addr($locationGeoIp, $ip);
|
||||
}
|
||||
break;
|
||||
default: // unknown database type, log warning and fallback to country edition
|
||||
Log::warning("Found unrecognized database type: %s", $locationGeoIp->databaseType);
|
||||
|
||||
if ($isIPv6) {
|
||||
$result[self::COUNTRY_CODE_KEY] = geoip_country_code_by_addr_v6($locationGeoIp, $ip);
|
||||
} else {
|
||||
$result[self::COUNTRY_CODE_KEY] = geoip_country_code_by_addr($locationGeoIp, $ip);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: ISP & ORG require commercial dbs to test. The code has been tested manually,
|
||||
// but not by system tests.
|
||||
$ispGeoIp = $this->getGeoIpInstance($key = 'isp');
|
||||
if ($ispGeoIp) {
|
||||
if ($isIPv6) {
|
||||
$isp = geoip_name_by_addr_v6($ispGeoIp, $ip);
|
||||
} else {
|
||||
$isp = geoip_org_by_addr($ispGeoIp, $ip);
|
||||
}
|
||||
if (!empty($isp)) {
|
||||
$result[self::ISP_KEY] = utf8_encode($isp);
|
||||
}
|
||||
}
|
||||
|
||||
$orgGeoIp = $this->getGeoIpInstance($key = 'org');
|
||||
if ($orgGeoIp) {
|
||||
if ($isIPv6) {
|
||||
$org = geoip_name_by_addr_v6($orgGeoIp, $ip);
|
||||
} else {
|
||||
$org = geoip_org_by_addr($orgGeoIp, $ip);
|
||||
}
|
||||
if (!empty($org)) {
|
||||
$result[self::ORG_KEY] = utf8_encode($org);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($result)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->completeLocationResult($result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this location provider is available. Piwik ships w/ the MaxMind
|
||||
* PHP library, so this provider is available if a location GeoIP database can be found.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isAvailable()
|
||||
{
|
||||
$path = self::getPathToGeoIpDatabase($this->customDbNames['loc']);
|
||||
return $path !== false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this provider has been setup correctly, the error message if
|
||||
* otherwise.
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function isWorking()
|
||||
{
|
||||
if (!function_exists('mb_internal_encoding')) {
|
||||
return Piwik::translate('UserCountry_GeoIPCannotFindMbstringExtension',
|
||||
array('mb_internal_encoding', 'mbstring'));
|
||||
}
|
||||
|
||||
$geoIpError = false;
|
||||
$catchGeoIpError = function ($errno, $errstr, $errfile, $errline) use (&$geoIpError) {
|
||||
$filename = basename($errfile);
|
||||
if ($filename == 'geoip.inc'
|
||||
|| $filename == 'geoipcity.inc'
|
||||
) {
|
||||
$geoIpError = array($errno, $errstr, $errfile, $errline);
|
||||
} else {
|
||||
throw new \Exception("Error in PHP GeoIP provider: $errstr on line $errline of $errfile"); // unexpected
|
||||
}
|
||||
};
|
||||
|
||||
// catch GeoIP errors
|
||||
set_error_handler($catchGeoIpError);
|
||||
$result = parent::isWorking();
|
||||
restore_error_handler();
|
||||
|
||||
if ($geoIpError) {
|
||||
list($errno, $errstr, $errfile, $errline) = $geoIpError;
|
||||
Log::warning("Got GeoIP error when testing PHP GeoIP location provider: %s(%s): %s", $errfile, $errline, $errstr);
|
||||
|
||||
return Piwik::translate('UserCountry_GeoIPIncorrectDatabaseFormat');
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array describing the types of location information this provider will
|
||||
* return.
|
||||
*
|
||||
* The location info this provider supports depends on what GeoIP databases it can
|
||||
* find.
|
||||
*
|
||||
* This provider will always support country & continent information.
|
||||
*
|
||||
* If a region database is found, then region code & name information will be
|
||||
* supported.
|
||||
*
|
||||
* If a city database is found, then region code, region name, city name,
|
||||
* area code, latitude, longitude & postal code are all supported.
|
||||
*
|
||||
* If an organization database is found, organization information is
|
||||
* supported.
|
||||
*
|
||||
* If an ISP database is found, ISP information is supported.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getSupportedLocationInfo()
|
||||
{
|
||||
$result = array();
|
||||
|
||||
// country & continent info always available
|
||||
$result[self::CONTINENT_CODE_KEY] = true;
|
||||
$result[self::CONTINENT_NAME_KEY] = true;
|
||||
$result[self::COUNTRY_CODE_KEY] = true;
|
||||
$result[self::COUNTRY_NAME_KEY] = true;
|
||||
|
||||
$locationGeoIp = $this->getGeoIpInstance($key = 'loc');
|
||||
if ($locationGeoIp) {
|
||||
switch ($locationGeoIp->databaseType) {
|
||||
case GEOIP_CITY_EDITION_REV0: // city database type
|
||||
case GEOIP_CITY_EDITION_REV1:
|
||||
case GEOIP_CITYCOMBINED_EDITION:
|
||||
$result[self::REGION_CODE_KEY] = true;
|
||||
$result[self::REGION_NAME_KEY] = true;
|
||||
$result[self::CITY_NAME_KEY] = true;
|
||||
$result[self::AREA_CODE_KEY] = true;
|
||||
$result[self::LATITUDE_KEY] = true;
|
||||
$result[self::LONGITUDE_KEY] = true;
|
||||
$result[self::POSTAL_CODE_KEY] = true;
|
||||
break;
|
||||
case GEOIP_REGION_EDITION_REV0: // region database type
|
||||
case GEOIP_REGION_EDITION_REV1:
|
||||
$result[self::REGION_CODE_KEY] = true;
|
||||
$result[self::REGION_NAME_KEY] = true;
|
||||
break;
|
||||
default: // country or unknown database type
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// check if isp info is available
|
||||
if ($this->getGeoIpInstance($key = 'isp')) {
|
||||
$result[self::ISP_KEY] = true;
|
||||
}
|
||||
|
||||
// check of org info is available
|
||||
if ($this->getGeoIpInstance($key = 'org')) {
|
||||
$result[self::ORG_KEY] = true;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information about this location provider. Contains an id, title & description:
|
||||
*
|
||||
* array(
|
||||
* 'id' => 'geoip_php',
|
||||
* 'title' => '...',
|
||||
* 'description' => '...'
|
||||
* );
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getInfo()
|
||||
{
|
||||
$desc = Piwik::translate('UserCountry_GeoIpLocationProviderDesc_Php1') . '<br/><br/>'
|
||||
. Piwik::translate('UserCountry_GeoIpLocationProviderDesc_Php2',
|
||||
array('<strong>', '</strong>', '<strong>', '</strong>'));
|
||||
$installDocs = '<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/faq/how-to/#faq_163">'
|
||||
. Piwik::translate('UserCountry_HowToInstallGeoIPDatabases')
|
||||
. '</a>';
|
||||
|
||||
$availableDatabaseTypes = array();
|
||||
if (self::getPathToGeoIpDatabase(array('GeoIPCity.dat', 'GeoLiteCity.dat')) !== false) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_City');
|
||||
}
|
||||
if (self::getPathToGeoIpDatabase(array('GeoIPRegion.dat')) !== false) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_Region');
|
||||
}
|
||||
if (self::getPathToGeoIpDatabase(array('GeoIPCountry.dat')) !== false) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_Country');
|
||||
}
|
||||
if (self::getPathToGeoIpDatabase(array('GeoIPISP.dat')) !== false) {
|
||||
$availableDatabaseTypes[] = 'ISP';
|
||||
}
|
||||
if (self::getPathToGeoIpDatabase(array('GeoIPOrg.dat')) !== false) {
|
||||
$availableDatabaseTypes[] = Piwik::translate('UserCountry_Organization');
|
||||
}
|
||||
|
||||
if (!empty($availableDatabaseTypes)) {
|
||||
$extraMessage = '<strong>' . Piwik::translate('General_Note') . '</strong>: '
|
||||
. Piwik::translate('UserCountry_GeoIPImplHasAccessTo') . ': <strong>'
|
||||
. implode(', ', $availableDatabaseTypes) . '</strong>.';
|
||||
} else {
|
||||
$extraMessage = '<strong>' . Piwik::translate('General_Note') . '</strong>: '
|
||||
. Piwik::translate('UserCountry_GeoIPNoDatabaseFound') . '<strong>';
|
||||
}
|
||||
|
||||
return array('id' => self::ID,
|
||||
'title' => self::TITLE,
|
||||
'description' => $desc,
|
||||
'install_docs' => $installDocs,
|
||||
'extra_message' => $extraMessage,
|
||||
'order' => 12);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a GeoIP instance. Creates it if necessary.
|
||||
*
|
||||
* @param string $key 'loc', 'isp' or 'org'. Determines the type of GeoIP database
|
||||
* to load.
|
||||
* @return object|false
|
||||
*/
|
||||
private function getGeoIpInstance($key)
|
||||
{
|
||||
if (empty($this->geoIpCache[$key])) {
|
||||
// make sure region names are loaded & saved first
|
||||
parent::getRegionNames();
|
||||
require_once PIWIK_INCLUDE_PATH . '/libs/MaxMindGeoIP/geoipcity.inc';
|
||||
|
||||
$pathToDb = self::getPathToGeoIpDatabase($this->customDbNames[$key]);
|
||||
if ($pathToDb !== false) {
|
||||
$this->geoIpCache[$key] = geoip_open($pathToDb, GEOIP_STANDARD); // TODO support shared memory
|
||||
}
|
||||
}
|
||||
|
||||
return empty($this->geoIpCache[$key]) ? false : $this->geoIpCache[$key];
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,291 @@
|
||||
<?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\UserCountry\LocationProvider\GeoIp;
|
||||
|
||||
use Piwik\Common;
|
||||
use Piwik\IP;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
|
||||
/**
|
||||
* A LocationProvider that uses an GeoIP module installed in an HTTP Server.
|
||||
*
|
||||
* To make this provider available, make sure the GEOIP_ADDR server
|
||||
* variable is set.
|
||||
*
|
||||
*/
|
||||
class ServerBased extends GeoIp
|
||||
{
|
||||
const ID = 'geoip_serverbased';
|
||||
const TITLE = 'GeoIP Legacy (%s)';
|
||||
const TEST_SERVER_VAR = 'GEOIP_ADDR';
|
||||
const TEST_SERVER_VAR_ALT = 'GEOIP_COUNTRY_CODE';
|
||||
const TEST_SERVER_VAR_ALT_IPV6 = 'GEOIP_COUNTRY_CODE_V6';
|
||||
|
||||
private static $geoIpServerVars = array(
|
||||
parent::COUNTRY_CODE_KEY => 'GEOIP_COUNTRY_CODE',
|
||||
parent::COUNTRY_NAME_KEY => 'GEOIP_COUNTRY_NAME',
|
||||
parent::REGION_CODE_KEY => 'GEOIP_REGION',
|
||||
parent::REGION_NAME_KEY => 'GEOIP_REGION_NAME',
|
||||
parent::AREA_CODE_KEY => 'GEOIP_AREA_CODE',
|
||||
parent::LATITUDE_KEY => 'GEOIP_LATITUDE',
|
||||
parent::LONGITUDE_KEY => 'GEOIP_LONGITUDE',
|
||||
parent::POSTAL_CODE_KEY => 'GEOIP_POSTAL_CODE',
|
||||
);
|
||||
|
||||
private static $geoIpUtfServerVars = array(
|
||||
parent::CITY_NAME_KEY => 'GEOIP_CITY',
|
||||
parent::ISP_KEY => 'GEOIP_ISP',
|
||||
parent::ORG_KEY => 'GEOIP_ORGANIZATION',
|
||||
);
|
||||
|
||||
/**
|
||||
* Uses a GeoIP database to get a visitor's location based on their IP address.
|
||||
*
|
||||
* This function will return different results based on the data used and based
|
||||
* on how the GeoIP module is configured.
|
||||
*
|
||||
* If a region database is used, it may return the country code, region code,
|
||||
* city name, area code, latitude, longitude and postal code of the visitor.
|
||||
*
|
||||
* Alternatively, only the country code may be returned for another database.
|
||||
*
|
||||
* If your HTTP server is not configured to include all GeoIP information, some
|
||||
* information will not be available to Piwik.
|
||||
*
|
||||
* @param array $info Must have an 'ip' field.
|
||||
* @return array
|
||||
*/
|
||||
public function getLocation($info)
|
||||
{
|
||||
$ip = $this->getIpFromInfo($info);
|
||||
|
||||
// geoip modules that are built into servers can't use a forced IP. in this case we try
|
||||
// to fallback to another version.
|
||||
$myIP = IP::getIpFromHeader();
|
||||
if (!self::isSameOrAnonymizedIp($ip, $myIP)
|
||||
&& (!isset($info['disable_fallbacks'])
|
||||
|| !$info['disable_fallbacks'])
|
||||
) {
|
||||
Common::printDebug("The request is for IP address: " . $info['ip'] . " but your IP is: $myIP. GeoIP Server Module (apache/nginx) does not support this use case... ");
|
||||
$fallbacks = array(
|
||||
Pecl::ID,
|
||||
Php::ID
|
||||
);
|
||||
foreach ($fallbacks as $fallbackProviderId) {
|
||||
$otherProvider = LocationProvider::getProviderById($fallbackProviderId);
|
||||
if ($otherProvider) {
|
||||
Common::printDebug("Used $fallbackProviderId to detect this visitor IP");
|
||||
return $otherProvider->getLocation($info);
|
||||
}
|
||||
}
|
||||
Common::printDebug("FAILED to lookup the geo location of this IP address, as no fallback location providers is configured. We recommend to configure Geolocation PECL module to fix this error.");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$result = array();
|
||||
foreach (self::$geoIpServerVars as $resultKey => $geoipVarName) {
|
||||
if (!empty($_SERVER[$geoipVarName])) {
|
||||
$result[$resultKey] = $_SERVER[$geoipVarName];
|
||||
}
|
||||
|
||||
$geoipVarNameV6 = $geoipVarName . '_V6';
|
||||
if (!empty($_SERVER[$geoipVarNameV6])) {
|
||||
$result[$resultKey] = $_SERVER[$geoipVarNameV6];
|
||||
}
|
||||
}
|
||||
foreach (self::$geoIpUtfServerVars as $resultKey => $geoipVarName) {
|
||||
if (!empty($_SERVER[$geoipVarName])) {
|
||||
$result[$resultKey] = utf8_encode($_SERVER[$geoipVarName]);
|
||||
}
|
||||
}
|
||||
$this->completeLocationResult($result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array describing the types of location information this provider will
|
||||
* return.
|
||||
*
|
||||
* There's no way to tell exactly what database the HTTP server is using, so we just
|
||||
* assume country and continent information is available. This can make diagnostics
|
||||
* a bit more difficult, unfortunately.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getSupportedLocationInfo()
|
||||
{
|
||||
$result = array();
|
||||
|
||||
// assume country info is always available. it's an error if it's not.
|
||||
$result[self::COUNTRY_CODE_KEY] = true;
|
||||
$result[self::COUNTRY_NAME_KEY] = true;
|
||||
$result[self::CONTINENT_CODE_KEY] = true;
|
||||
$result[self::CONTINENT_NAME_KEY] = true;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if an HTTP server module has been installed. It checks by looking for
|
||||
* the GEOIP_ADDR server variable.
|
||||
*
|
||||
* There's a special check for the Apache module, but we can't check specifically
|
||||
* for anything else.
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function isAvailable()
|
||||
{
|
||||
// check if apache module is installed
|
||||
if (function_exists('apache_get_modules')) {
|
||||
foreach (apache_get_modules() as $name) {
|
||||
if (strpos($name, 'geoip') !== false) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$available = !empty($_SERVER[self::TEST_SERVER_VAR])
|
||||
|| !empty($_SERVER[self::TEST_SERVER_VAR_ALT])
|
||||
|| !empty($_SERVER[self::TEST_SERVER_VAR_ALT_IPV6])
|
||||
;
|
||||
|
||||
if ($available) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// if not available return message w/ extra info
|
||||
if (!function_exists('apache_get_modules')) {
|
||||
return Piwik::translate('General_Note') . ': ' . Piwik::translate('UserCountry_AssumingNonApache');
|
||||
}
|
||||
|
||||
$message = "<strong>" . Piwik::translate('General_Note') . ': '
|
||||
. Piwik::translate('UserCountry_FoundApacheModules')
|
||||
. "</strong>:<br/><br/>\n<ul style=\"list-style:disc;margin-left:24px\">\n";
|
||||
foreach (apache_get_modules() as $name) {
|
||||
$message .= "<li>$name</li>\n";
|
||||
}
|
||||
$message .= "</ul>";
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the GEOIP_ADDR server variable is defined.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isWorking()
|
||||
{
|
||||
if (empty($_SERVER[self::TEST_SERVER_VAR])
|
||||
&& empty($_SERVER[self::TEST_SERVER_VAR_ALT])
|
||||
&& empty($_SERVER[self::TEST_SERVER_VAR_ALT_IPV6])
|
||||
) {
|
||||
return Piwik::translate("UserCountry_CannotFindGeoIPServerVar", self::TEST_SERVER_VAR . ' $_SERVER');
|
||||
}
|
||||
|
||||
return true; // can't check for another IP
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information about this location provider. Contains an id, title & description:
|
||||
*
|
||||
* array(
|
||||
* 'id' => 'geoip_serverbased',
|
||||
* 'title' => '...',
|
||||
* 'description' => '...'
|
||||
* );
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getInfo()
|
||||
{
|
||||
if (function_exists('apache_note')) {
|
||||
$serverDesc = 'Apache';
|
||||
} else {
|
||||
$serverDesc = Piwik::translate('UserCountry_HttpServerModule');
|
||||
}
|
||||
|
||||
$title = sprintf(self::TITLE, $serverDesc);
|
||||
$desc = Piwik::translate('UserCountry_GeoIpLocationProviderDesc_ServerBased1', array('<strong>', '</strong>'))
|
||||
. '<br/><br/>'
|
||||
. Piwik::translate('UserCountry_GeoIpLocationProviderDesc_ServerBasedAnonWarn')
|
||||
. '<br/><br/>'
|
||||
. Piwik::translate('UserCountry_GeoIpLocationProviderDesc_ServerBased2',
|
||||
array('<strong>', '</strong>', '<strong>', '</strong>'));
|
||||
$installDocs =
|
||||
'<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/faq/how-to/#faq_165">'
|
||||
. Piwik::translate('UserCountry_HowToInstallApacheModule')
|
||||
. '</a><br/>'
|
||||
. '<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/faq/how-to/#faq_166">'
|
||||
. Piwik::translate('UserCountry_HowToInstallNginxModule')
|
||||
. '</a>';
|
||||
|
||||
$geoipServerVars = array();
|
||||
foreach ($_SERVER as $key => $value) {
|
||||
if (strpos($key, 'GEOIP') === 0) {
|
||||
$geoipServerVars[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($geoipServerVars)) {
|
||||
$extraMessage = '<strong>' . Piwik::translate('UserCountry_GeoIPNoServerVars', '$_SERVER') . '</strong>';
|
||||
} else {
|
||||
$extraMessage = '<strong>' . Piwik::translate('UserCountry_GeoIPServerVarsFound', '$_SERVER')
|
||||
. ":</strong><br/><br/>\n<ul style=\"list-style:disc;margin-left:24px\">\n";
|
||||
foreach ($geoipServerVars as $key) {
|
||||
$extraMessage .= '<li>' . $key . "</li>\n";
|
||||
}
|
||||
$extraMessage .= '</ul>';
|
||||
}
|
||||
|
||||
return array('id' => self::ID,
|
||||
'title' => $title,
|
||||
'description' => $desc,
|
||||
'order' => 14,
|
||||
'install_docs' => $installDocs,
|
||||
'extra_message' => $extraMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if two IP addresses are the same or if the first is the anonymized
|
||||
* version of the other.
|
||||
*
|
||||
* @param string $ip
|
||||
* @param string $currentIp This IP should not be anonymized.
|
||||
* @return bool
|
||||
*/
|
||||
public static function isSameOrAnonymizedIp($ip, $currentIp)
|
||||
{
|
||||
$ip = array_reverse(explode('.', $ip));
|
||||
$currentIp = array_reverse(explode('.', $currentIp));
|
||||
|
||||
if (count($ip) != count($currentIp)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach ($ip as $i => $byte) {
|
||||
if ($byte == 0) {
|
||||
$currentIp[$i] = 0;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($ip as $i => $byte) {
|
||||
if ($byte != $currentIp[$i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
24
msd2/tracking/piwik/plugins/UserCountry/Menu.php
Normal file
24
msd2/tracking/piwik/plugins/UserCountry/Menu.php
Normal 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\UserCountry;
|
||||
|
||||
use Piwik\Menu\MenuAdmin;
|
||||
use Piwik\Piwik;
|
||||
|
||||
class Menu extends \Piwik\Plugin\Menu
|
||||
{
|
||||
public function configureAdminMenu(MenuAdmin $menu)
|
||||
{
|
||||
if (UserCountry::isGeoLocationAdminEnabled() && Piwik::hasUserSuperUserAccess()) {
|
||||
$menu->addSystemItem('UserCountry_Geolocation',
|
||||
$this->urlForAction('adminIndex'),
|
||||
$order = 30);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
<?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\UserCountry\ProfileSummary;
|
||||
|
||||
use Piwik\Common;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\Live;
|
||||
use Piwik\Plugins\Live\ProfileSummary\ProfileSummaryAbstract;
|
||||
use Piwik\Url;
|
||||
use Piwik\View;
|
||||
|
||||
/**
|
||||
* Class LocationSummary
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
class LocationSummary extends ProfileSummaryAbstract
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return Piwik::translate('UserCountry_Location');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
if (empty($this->profile['countries'])) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$view = new View('@UserCountry/_profileSummary.twig');
|
||||
$view->visitorData = $this->profile;
|
||||
|
||||
if (Common::getRequestVar('showMap', 1) == 1
|
||||
&& !empty($view->visitorData['hasLatLong'])
|
||||
&& \Piwik\Plugin\Manager::getInstance()->isPluginLoaded('UserCountryMap')
|
||||
) {
|
||||
$view->userCountryMapUrl = $this->getUserCountryMapUrlForVisitorProfile();
|
||||
}
|
||||
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
private function getUserCountryMapUrlForVisitorProfile()
|
||||
{
|
||||
$params = array(
|
||||
'module' => 'UserCountryMap',
|
||||
'action' => 'realtimeMap',
|
||||
'segment' => Live\Live::getSegmentWithVisitorId(),
|
||||
'visitorId' => false,
|
||||
'changeVisitAlpha' => 0,
|
||||
'removeOldVisits' => 0,
|
||||
'realtimeWindow' => 'false',
|
||||
'showFooterMessage' => 0,
|
||||
'showDateTime' => 0,
|
||||
'doNotRefreshVisits' => 1
|
||||
);
|
||||
return Url::getCurrentQueryStringWithParametersModified($params);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getOrder()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
}
|
64
msd2/tracking/piwik/plugins/UserCountry/Reports/Base.php
Normal file
64
msd2/tracking/piwik/plugins/UserCountry/Reports/Base.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?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\UserCountry\Reports;
|
||||
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ViewDataTable;
|
||||
use Piwik\Plugins\UserCountry\UserCountry;
|
||||
use Piwik\Url;
|
||||
|
||||
abstract class Base extends \Piwik\Plugin\Report
|
||||
{
|
||||
protected function init()
|
||||
{
|
||||
$this->categoryId = 'General_Visitors';
|
||||
}
|
||||
|
||||
protected function getGeoIPReportDocSuffix()
|
||||
{
|
||||
return Piwik::translate('UserCountry_GeoIPDocumentationSuffix',
|
||||
array('<a rel="noreferrer noopener" target="_blank" href="http://www.maxmind.com/?rId=piwik">',
|
||||
'</a>',
|
||||
'<a rel="noreferrer noopener" target="_blank" href="http://www.maxmind.com/en/city_accuracy?rId=piwik">',
|
||||
'</a>')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a datatable for a view is empty and if so, displays a message in the footer
|
||||
* telling users to configure GeoIP.
|
||||
*/
|
||||
protected function checkIfNoDataForGeoIpReport(ViewDataTable $view)
|
||||
{
|
||||
$view->config->filters[] = function ($dataTable) use ($view) {
|
||||
// if there's only one row whose label is 'Unknown', display a message saying there's no data
|
||||
if ($dataTable->getRowsCount() == 1
|
||||
&& $dataTable->getFirstRow()->getColumn('label') == Piwik::translate('General_Unknown')
|
||||
) {
|
||||
$footerMessage = Piwik::translate('UserCountry_NoDataForGeoIPReport1');
|
||||
|
||||
$userCountry = new UserCountry();
|
||||
// if GeoIP is working, don't display this part of the message
|
||||
if (!$userCountry->isGeoIPWorking()) {
|
||||
$params = array('module' => 'UserCountry', 'action' => 'adminIndex');
|
||||
$footerMessage .= ' ' . Piwik::translate('UserCountry_NoDataForGeoIPReport2',
|
||||
array('<a target="_blank" href="' . Url::getCurrentQueryStringWithParametersModified($params) . '">',
|
||||
'</a>',
|
||||
'<a rel="noreferrer noopener" target="_blank" href="http://dev.maxmind.com/geoip/geolite?rId=piwik">',
|
||||
'</a>'));
|
||||
} else {
|
||||
$footerMessage .= ' ' . Piwik::translate('UserCountry_ToGeolocateOldVisits',
|
||||
array('<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/faq/how-to/#faq_167">', '</a>'));
|
||||
}
|
||||
|
||||
$view->config->show_footer_message = $footerMessage;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
40
msd2/tracking/piwik/plugins/UserCountry/Reports/GetCity.php
Normal file
40
msd2/tracking/piwik/plugins/UserCountry/Reports/GetCity.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?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\UserCountry\Reports;
|
||||
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ViewDataTable;
|
||||
use Piwik\Plugins\UserCountry\Columns\City;
|
||||
|
||||
class GetCity extends Base
|
||||
{
|
||||
protected function init()
|
||||
{
|
||||
parent::init();
|
||||
$this->dimension = new City();
|
||||
$this->name = Piwik::translate('UserCountry_City');
|
||||
$this->documentation = Piwik::translate('UserCountry_getCityDocumentation') . '<br/>' . $this->getGeoIPReportDocSuffix();
|
||||
$this->metrics = array('nb_visits', 'nb_uniq_visitors', 'nb_actions');
|
||||
$this->hasGoalMetrics = true;
|
||||
$this->order = 10;
|
||||
$this->subcategoryId = 'UserCountry_SubmenuLocations';
|
||||
}
|
||||
|
||||
public function configureView(ViewDataTable $view)
|
||||
{
|
||||
$view->config->show_exclude_low_population = false;
|
||||
$view->config->documentation = $this->documentation;
|
||||
$view->config->addTranslation('label', $this->dimension->getName());
|
||||
|
||||
$view->requestConfig->filter_limit = 5;
|
||||
|
||||
$this->checkIfNoDataForGeoIpReport($view);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
<?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\UserCountry\Reports;
|
||||
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ViewDataTable;
|
||||
use Piwik\Plugins\UserCountry\Columns\Continent;
|
||||
use Piwik\Report\ReportWidgetFactory;
|
||||
use Piwik\Widget\WidgetContainerConfig;
|
||||
use Piwik\Widget\WidgetsList;
|
||||
|
||||
class GetContinent extends Base
|
||||
{
|
||||
protected function init()
|
||||
{
|
||||
parent::init();
|
||||
$this->dimension = new Continent();
|
||||
$this->name = Piwik::translate('UserCountry_Continent');
|
||||
$this->documentation = Piwik::translate('UserCountry_getContinentDocumentation');
|
||||
$this->metrics = array('nb_visits', 'nb_uniq_visitors', 'nb_actions');
|
||||
$this->hasGoalMetrics = true;
|
||||
$this->order = 6;
|
||||
|
||||
$this->subcategoryId = 'UserCountry_SubmenuLocations';
|
||||
}
|
||||
|
||||
public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory)
|
||||
{
|
||||
$widgetsList->addWidgetConfig($factory->createContainerWidget('Continent'));
|
||||
|
||||
$widgetsList->addToContainerWidget('Continent', $factory->createWidget());
|
||||
|
||||
$widget = $factory->createWidget()->setAction('getDistinctCountries')->setName('');
|
||||
$widgetsList->addToContainerWidget('Continent', $widget);
|
||||
}
|
||||
|
||||
public function configureView(ViewDataTable $view)
|
||||
{
|
||||
$view->config->show_exclude_low_population = false;
|
||||
$view->config->show_search = false;
|
||||
$view->config->show_offset_information = false;
|
||||
$view->config->show_pagination_control = false;
|
||||
$view->config->show_limit_control = false;
|
||||
$view->config->documentation = $this->documentation;
|
||||
$view->config->addTranslation('label', $this->dimension->getName());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
<?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\UserCountry\Reports;
|
||||
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ViewDataTable;
|
||||
use Piwik\Plugins\UserCountry\Columns\Country;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
|
||||
class GetCountry extends Base
|
||||
{
|
||||
protected function init()
|
||||
{
|
||||
parent::init();
|
||||
$this->dimension = new Country();
|
||||
$this->name = Piwik::translate('UserCountry_Country');
|
||||
$this->documentation = Piwik::translate('UserCountry_getCountryDocumentation');
|
||||
$this->metrics = array('nb_visits', 'nb_uniq_visitors', 'nb_actions');
|
||||
$this->hasGoalMetrics = true;
|
||||
$this->order = 5;
|
||||
$this->subcategoryId = 'UserCountry_SubmenuLocations';
|
||||
}
|
||||
|
||||
public function configureView(ViewDataTable $view)
|
||||
{
|
||||
$view->config->show_exclude_low_population = false;
|
||||
$view->config->addTranslation('label', $this->dimension->getName());
|
||||
$view->config->documentation = $this->documentation;
|
||||
|
||||
$view->requestConfig->filter_limit = 5;
|
||||
|
||||
if (LocationProvider::getCurrentProviderId() == LocationProvider\DefaultProvider::ID) {
|
||||
// if we're using the default location provider, add a note explaining how it works
|
||||
$footerMessage = Piwik::translate("General_Note") . ': '
|
||||
. Piwik::translate('UserCountry_DefaultLocationProviderExplanation',
|
||||
array('<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/docs/geo-locate/">', '</a>'));
|
||||
|
||||
$view->config->show_footer_message = $footerMessage;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
<?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\UserCountry\Reports;
|
||||
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ViewDataTable;
|
||||
use Piwik\Plugins\UserCountry\Columns\Region;
|
||||
|
||||
class GetRegion extends Base
|
||||
{
|
||||
protected function init()
|
||||
{
|
||||
parent::init();
|
||||
$this->dimension = new Region();
|
||||
$this->name = Piwik::translate('UserCountry_Region');
|
||||
$this->documentation = Piwik::translate('UserCountry_getRegionDocumentation') . '<br/>' . $this->getGeoIPReportDocSuffix();
|
||||
$this->metrics = array('nb_visits', 'nb_uniq_visitors', 'nb_actions');
|
||||
$this->hasGoalMetrics = true;
|
||||
$this->order = 7;
|
||||
|
||||
$this->subcategoryId = 'UserCountry_SubmenuLocations';
|
||||
}
|
||||
|
||||
public function configureView(ViewDataTable $view)
|
||||
{
|
||||
$view->config->show_exclude_low_population = false;
|
||||
$view->config->documentation = $this->documentation;
|
||||
$view->config->addTranslation('label', $this->dimension->getName());
|
||||
|
||||
$view->requestConfig->filter_limit = 5;
|
||||
|
||||
$this->checkIfNoDataForGeoIpReport($view);
|
||||
}
|
||||
|
||||
}
|
21
msd2/tracking/piwik/plugins/UserCountry/Tasks.php
Normal file
21
msd2/tracking/piwik/plugins/UserCountry/Tasks.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Piwik\SettingsPiwik;
|
||||
class Tasks extends \Piwik\Plugin\Tasks
|
||||
{
|
||||
public function schedule()
|
||||
{
|
||||
// add the auto updater task if GeoIP admin is enabled
|
||||
if (UserCountry::isGeoLocationAdminEnabled() && SettingsPiwik::isInternetEnabled() === true) {
|
||||
$this->scheduleTask(new GeoIPAutoUpdater());
|
||||
}
|
||||
}
|
||||
}
|
115
msd2/tracking/piwik/plugins/UserCountry/UserCountry.php
Normal file
115
msd2/tracking/piwik/plugins/UserCountry/UserCountry.php
Normal file
@ -0,0 +1,115 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Piwik\ArchiveProcessor;
|
||||
use Piwik\Config;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\Intl\Data\Provider\RegionDataProvider;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Url;
|
||||
|
||||
/**
|
||||
* @see plugins/UserCountry/GeoIPAutoUpdater.php
|
||||
*/
|
||||
require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/GeoIPAutoUpdater.php';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class UserCountry extends \Piwik\Plugin
|
||||
{
|
||||
/**
|
||||
* @see Piwik\Plugin::registerEvents
|
||||
*/
|
||||
public function registerEvents()
|
||||
{
|
||||
return array(
|
||||
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
|
||||
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
|
||||
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
|
||||
'Tracker.setTrackerCacheGeneral' => 'setTrackerCacheGeneral',
|
||||
'Insights.addReportToOverview' => 'addReportToInsightsOverview',
|
||||
);
|
||||
}
|
||||
|
||||
public function addReportToInsightsOverview(&$reports)
|
||||
{
|
||||
$reports['UserCountry_getCountry'] = array();
|
||||
}
|
||||
|
||||
public function setTrackerCacheGeneral(&$cache)
|
||||
{
|
||||
$cache['currentLocationProviderId'] = LocationProvider::getCurrentProviderId();
|
||||
}
|
||||
|
||||
public function getStylesheetFiles(&$stylesheets)
|
||||
{
|
||||
$stylesheets[] = "plugins/UserCountry/stylesheets/userCountry.less";
|
||||
}
|
||||
|
||||
public function getJsFiles(&$jsFiles)
|
||||
{
|
||||
$jsFiles[] = "plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.controller.js";
|
||||
$jsFiles[] = "plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.directive.js";
|
||||
$jsFiles[] = "plugins/UserCountry/angularjs/location-provider-updater/location-provider-updater.controller.js";
|
||||
$jsFiles[] = "plugins/UserCountry/angularjs/location-provider-updater/location-provider-updater.directive.js";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of country codes for a given continent code.
|
||||
*
|
||||
* @param string $continent The continent code.
|
||||
* @return array
|
||||
*/
|
||||
public static function getCountriesForContinent($continent)
|
||||
{
|
||||
/** @var RegionDataProvider $regionDataProvider */
|
||||
$regionDataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\RegionDataProvider');
|
||||
|
||||
$result = array();
|
||||
$continent = strtolower($continent);
|
||||
foreach ($regionDataProvider->getCountryList() as $countryCode => $continentCode) {
|
||||
if ($continent == $continentCode) {
|
||||
$result[] = $countryCode;
|
||||
}
|
||||
}
|
||||
return array('SQL' => "'" . implode("', '", $result) . "', ?",
|
||||
'bind' => '-'); // HACK: SegmentExpression requires a $bind, even if there's nothing to bind
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if a GeoIP provider is installed & working, false if otherwise.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isGeoIPWorking()
|
||||
{
|
||||
$provider = LocationProvider::getCurrentProvider();
|
||||
return $provider instanceof GeoIp
|
||||
&& $provider->isAvailable() === true
|
||||
&& $provider->isWorking() === true;
|
||||
}
|
||||
|
||||
public function getClientSideTranslationKeys(&$translationKeys)
|
||||
{
|
||||
$translationKeys[] = "UserCountry_FatalErrorDuringDownload";
|
||||
$translationKeys[] = "UserCountry_SetupAutomaticUpdatesOfGeoIP";
|
||||
$translationKeys[] = "General_Done";
|
||||
$translationKeys[] = "General_Save";
|
||||
$translationKeys[] = "General_Continue";
|
||||
}
|
||||
|
||||
public static function isGeoLocationAdminEnabled()
|
||||
{
|
||||
return (bool) Config::getInstance()->General['enable_geolocation_admin'];
|
||||
}
|
||||
|
||||
}
|
194
msd2/tracking/piwik/plugins/UserCountry/VisitorDetails.php
Normal file
194
msd2/tracking/piwik/plugins/UserCountry/VisitorDetails.php
Normal file
@ -0,0 +1,194 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Piwik\Common;
|
||||
use Piwik\Plugins\Live\VisitorDetailsAbstract;
|
||||
use Piwik\Tracker\Visit;
|
||||
|
||||
require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/functions.php';
|
||||
|
||||
class VisitorDetails extends VisitorDetailsAbstract
|
||||
{
|
||||
public function extendVisitorDetails(&$visitor)
|
||||
{
|
||||
$visitor['continent'] = $this->getContinent();
|
||||
$visitor['continentCode'] = $this->getContinentCode();
|
||||
$visitor['country'] = $this->getCountryName();
|
||||
$visitor['countryCode'] = $this->getCountryCode();
|
||||
$visitor['countryFlag'] = $this->getCountryFlag();
|
||||
$visitor['region'] = $this->getRegionName();
|
||||
$visitor['regionCode'] = $this->getRegionCode();
|
||||
$visitor['city'] = $this->getCityName();
|
||||
$visitor['location'] = $this->getPrettyLocation();
|
||||
$visitor['latitude'] = $this->getLatitude();
|
||||
$visitor['longitude'] = $this->getLongitude();
|
||||
}
|
||||
|
||||
protected function getCountryCode()
|
||||
{
|
||||
return $this->details['location_country'];
|
||||
}
|
||||
|
||||
protected function getCountryName()
|
||||
{
|
||||
return countryTranslate($this->getCountryCode());
|
||||
}
|
||||
|
||||
protected function getCountryFlag()
|
||||
{
|
||||
return getFlagFromCode($this->getCountryCode());
|
||||
}
|
||||
|
||||
protected function getContinent()
|
||||
{
|
||||
return continentTranslate($this->getContinentCode());
|
||||
}
|
||||
|
||||
protected function getContinentCode()
|
||||
{
|
||||
return Common::getContinent($this->details['location_country']);
|
||||
}
|
||||
|
||||
protected function getCityName()
|
||||
{
|
||||
if (!empty($this->details['location_city'])) {
|
||||
return $this->details['location_city'];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function getRegionName()
|
||||
{
|
||||
$region = $this->getRegionCode();
|
||||
if ($region != '' && $region != Visit::UNKNOWN_CODE) {
|
||||
return getRegionNameFromCodes(
|
||||
$this->details['location_country'], $region);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function getRegionCode()
|
||||
{
|
||||
return $this->details['location_region'];
|
||||
}
|
||||
|
||||
protected function getPrettyLocation()
|
||||
{
|
||||
$parts = array();
|
||||
|
||||
$city = $this->getCityName();
|
||||
if (!empty($city)) {
|
||||
$parts[] = $city;
|
||||
}
|
||||
$region = $this->getRegionName();
|
||||
if (!empty($region)) {
|
||||
$parts[] = $region;
|
||||
}
|
||||
|
||||
// add country & return concatenated result
|
||||
$parts[] = $this->getCountryName();
|
||||
|
||||
return implode(', ', $parts);
|
||||
}
|
||||
|
||||
protected function getLatitude()
|
||||
{
|
||||
if (!empty($this->details['location_latitude'])) {
|
||||
return $this->details['location_latitude'];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function getLongitude()
|
||||
{
|
||||
if (!empty($this->details['location_longitude'])) {
|
||||
return $this->details['location_longitude'];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private $cities = array();
|
||||
private $countries = array();
|
||||
private $continents = array();
|
||||
|
||||
public function initProfile($visits, &$profile)
|
||||
{
|
||||
$this->cities = array();
|
||||
$this->continents = array();
|
||||
$this->countries = array();
|
||||
$profile['hasLatLong'] = false;
|
||||
}
|
||||
|
||||
public function handleProfileVisit($visit, &$profile)
|
||||
{
|
||||
// realtime map only checks for latitude
|
||||
$hasLatitude = $visit->getColumn('latitude') !== false;
|
||||
if ($hasLatitude) {
|
||||
$profile['hasLatLong'] = true;
|
||||
}
|
||||
|
||||
$countryCode = $visit->getColumn('countryCode');
|
||||
if (!isset($this->countries[$countryCode])) {
|
||||
$this->countries[$countryCode] = 0;
|
||||
}
|
||||
++$this->countries[$countryCode];
|
||||
|
||||
$continentCode = $visit->getColumn('continentCode');
|
||||
if (!isset($this->continents[$continentCode])) {
|
||||
$this->continents[$continentCode] = 0;
|
||||
}
|
||||
++$this->continents[$continentCode];
|
||||
|
||||
if ($countryCode && !array_key_exists($countryCode, $this->cities)) {
|
||||
$this->cities[$countryCode] = array();
|
||||
}
|
||||
$city = $visit->getColumn('city');
|
||||
if (!empty($city)) {
|
||||
$this->cities[$countryCode][] = $city;
|
||||
}
|
||||
}
|
||||
|
||||
public function finalizeProfile($visits, &$profile)
|
||||
{
|
||||
// transform country/continents/search keywords into something that will look good in XML
|
||||
$profile['countries'] = $profile['continents'] = array();
|
||||
|
||||
// sort by visit/action
|
||||
asort($this->continents);
|
||||
foreach ($this->continents as $continentCode => $nbVisits) {
|
||||
$profile['continents'][] = array(
|
||||
'continent' => $continentCode,
|
||||
'nb_visits' => $nbVisits,
|
||||
'prettyName' => \Piwik\Plugins\UserCountry\continentTranslate($continentCode)
|
||||
);
|
||||
}
|
||||
|
||||
// sort by visit/action
|
||||
asort($this->countries);
|
||||
|
||||
foreach ($this->countries as $countryCode => $nbVisits) {
|
||||
$countryInfo = array(
|
||||
'country' => $countryCode,
|
||||
'nb_visits' => $nbVisits,
|
||||
'flag' => \Piwik\Plugins\UserCountry\getFlagFromCode($countryCode),
|
||||
'prettyName' => \Piwik\Plugins\UserCountry\countryTranslate($countryCode)
|
||||
);
|
||||
if (!empty($this->cities[$countryCode])) {
|
||||
$countryInfo['cities'] = array_unique($this->cities[$countryCode]);
|
||||
}
|
||||
$profile['countries'][] = $countryInfo;
|
||||
}
|
||||
}
|
||||
}
|
312
msd2/tracking/piwik/plugins/UserCountry/VisitorGeolocator.php
Normal file
312
msd2/tracking/piwik/plugins/UserCountry/VisitorGeolocator.php
Normal file
@ -0,0 +1,312 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Piwik\Cache\Cache;
|
||||
use Piwik\Cache\Transient;
|
||||
use Piwik\Common;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\DataAccess\RawLogDao;
|
||||
use Piwik\Network\IPUtils;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
|
||||
use Piwik\Tracker\Visit;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
require_once PIWIK_INCLUDE_PATH . "/plugins/UserCountry/LocationProvider.php";
|
||||
|
||||
/**
|
||||
* Service that determines a visitor's location using visitor information.
|
||||
*
|
||||
* Individual locations are provided by a LocationProvider instance. By default,
|
||||
* the configured LocationProvider (as determined by
|
||||
* `Common::getCurrentLocationProviderId()` is used.
|
||||
*
|
||||
* If the configured location provider cannot provide a location for the visitor,
|
||||
* the default location provider (`DefaultProvider`) is used.
|
||||
*
|
||||
* A cache is used internally to speed up location retrieval. By default, an
|
||||
* in-memory cache is used, but another type of cache can be supplied during
|
||||
* construction.
|
||||
*
|
||||
* This service can be used from within the tracker.
|
||||
*/
|
||||
class VisitorGeolocator
|
||||
{
|
||||
const LAT_LONG_COMPARE_EPSILON = 0.0001;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
public static $logVisitFieldsToUpdate = array(
|
||||
'location_country' => LocationProvider::COUNTRY_CODE_KEY,
|
||||
'location_region' => LocationProvider::REGION_CODE_KEY,
|
||||
'location_city' => LocationProvider::CITY_NAME_KEY,
|
||||
'location_latitude' => LocationProvider::LATITUDE_KEY,
|
||||
'location_longitude' => LocationProvider::LONGITUDE_KEY
|
||||
);
|
||||
|
||||
/**
|
||||
* @var Cache
|
||||
*/
|
||||
protected static $defaultLocationCache = null;
|
||||
|
||||
/**
|
||||
* @var LocationProvider
|
||||
*/
|
||||
private $provider;
|
||||
|
||||
/**
|
||||
* @var LocationProvider
|
||||
*/
|
||||
private $backupProvider;
|
||||
|
||||
/**
|
||||
* @var Cache
|
||||
*/
|
||||
private $locationCache;
|
||||
|
||||
/**
|
||||
* @var RawLogDao
|
||||
*/
|
||||
protected $dao;
|
||||
|
||||
/**
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
protected $logger;
|
||||
|
||||
public function __construct(LocationProvider $provider = null, LocationProvider $backupProvider = null, Cache $locationCache = null,
|
||||
RawLogDao $dao = null, LoggerInterface $logger = null)
|
||||
{
|
||||
if ($provider === null) {
|
||||
// note: Common::getCurrentLocationProviderId() uses the tracker cache, which is why it's used here instead
|
||||
// of accessing the option table
|
||||
$provider = LocationProvider::getProviderById(Common::getCurrentLocationProviderId());
|
||||
|
||||
if (empty($provider)) {
|
||||
Common::printDebug("GEO: no current location provider sent, falling back to default '" . DefaultProvider::ID . "' one.");
|
||||
|
||||
$provider = $this->getDefaultProvider();
|
||||
}
|
||||
}
|
||||
$this->provider = $provider;
|
||||
|
||||
$this->backupProvider = $backupProvider ?: $this->getDefaultProvider();
|
||||
$this->locationCache = $locationCache ?: self::getDefaultLocationCache();
|
||||
$this->dao = $dao ?: new RawLogDao();
|
||||
$this->logger = $logger ?: StaticContainer::get('Psr\Log\LoggerInterface');
|
||||
}
|
||||
|
||||
public function getLocation($userInfo, $useClassCache = true)
|
||||
{
|
||||
$userInfoKey = md5(implode(',', $userInfo));
|
||||
if ($useClassCache
|
||||
&& $this->locationCache->contains($userInfoKey)
|
||||
) {
|
||||
return $this->locationCache->fetch($userInfoKey);
|
||||
}
|
||||
|
||||
$location = $this->getLocationObject($this->provider, $userInfo);
|
||||
|
||||
if (empty($location)) {
|
||||
$providerId = $this->provider->getId();
|
||||
Common::printDebug("GEO: couldn't find a location with Geo Module '$providerId'");
|
||||
|
||||
if ($providerId != $this->backupProvider->getId()) {
|
||||
Common::printDebug("Using default provider as fallback...");
|
||||
|
||||
$location = $this->getLocationObject($this->backupProvider, $userInfo);
|
||||
}
|
||||
}
|
||||
|
||||
$location = $location ?: array();
|
||||
if (empty($location['country_code'])) {
|
||||
$location['country_code'] = Visit::UNKNOWN_CODE;
|
||||
}
|
||||
|
||||
$this->locationCache->save($userInfoKey, $location);
|
||||
|
||||
return $location;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param LocationProvider $provider
|
||||
* @param array $userInfo
|
||||
* @return array|false
|
||||
*/
|
||||
private function getLocationObject(LocationProvider $provider, $userInfo)
|
||||
{
|
||||
$location = $provider->getLocation($userInfo);
|
||||
$providerId = $provider->getId();
|
||||
$ipAddress = $userInfo['ip'];
|
||||
|
||||
if ($location === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Common::printDebug("GEO: Found IP $ipAddress location (provider '" . $providerId . "'): " . var_export($location, true));
|
||||
|
||||
return $location;
|
||||
}
|
||||
|
||||
/**
|
||||
* Geolcates an existing visit and then updates it if it's current attributes are different than
|
||||
* what was geolocated. Also updates all conversions of a visit.
|
||||
*
|
||||
* **This method should NOT be used from within the tracker.**
|
||||
*
|
||||
* @param array $visit The visit information. Must contain an `"idvisit"` element and `"location_ip"` element.
|
||||
* @param bool $useClassCache
|
||||
* @return array|null The visit properties that were updated in the DB mapped to the updated values. If null,
|
||||
* required information was missing from `$visit`.
|
||||
*/
|
||||
public function attributeExistingVisit($visit, $useClassCache = true)
|
||||
{
|
||||
if (empty($visit['idvisit'])) {
|
||||
$this->logger->debug('Empty idvisit field. Skipping re-attribution..');
|
||||
return null;
|
||||
}
|
||||
|
||||
$idVisit = $visit['idvisit'];
|
||||
|
||||
if (empty($visit['location_ip'])) {
|
||||
$this->logger->debug('Empty location_ip field for idvisit = %s. Skipping re-attribution.', array('idvisit' => $idVisit));
|
||||
return null;
|
||||
}
|
||||
|
||||
$ip = IPUtils::binaryToStringIP($visit['location_ip']);
|
||||
$location = $this->getLocation(array('ip' => $ip), $useClassCache);
|
||||
|
||||
$valuesToUpdate = $this->getVisitFieldsToUpdate($visit, $location);
|
||||
|
||||
if (!empty($valuesToUpdate)) {
|
||||
$this->logger->debug('Updating visit with idvisit = {idVisit} (IP = {ip}). Changes: {changes}', array(
|
||||
'idVisit' => $idVisit,
|
||||
'ip' => $ip,
|
||||
'changes' => json_encode($valuesToUpdate)
|
||||
));
|
||||
|
||||
$this->dao->updateVisits($valuesToUpdate, $idVisit);
|
||||
$this->dao->updateConversions($valuesToUpdate, $idVisit);
|
||||
} else {
|
||||
$this->logger->debug('Nothing to update for idvisit = %s (IP = {ip}). Existing location info is same as geolocated.', array(
|
||||
'idVisit' => $idVisit,
|
||||
'ip' => $ip
|
||||
));
|
||||
}
|
||||
|
||||
return $valuesToUpdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns location log values that are different than the values currently in a log row.
|
||||
*
|
||||
* @param array $row The visit row.
|
||||
* @param array $location The location information.
|
||||
* @return array The location properties to update.
|
||||
*/
|
||||
private function getVisitFieldsToUpdate(array $row, $location)
|
||||
{
|
||||
if (isset($location[LocationProvider::COUNTRY_CODE_KEY])) {
|
||||
$location[LocationProvider::COUNTRY_CODE_KEY] = strtolower($location[LocationProvider::COUNTRY_CODE_KEY]);
|
||||
}
|
||||
|
||||
$valuesToUpdate = array();
|
||||
foreach (self::$logVisitFieldsToUpdate as $column => $locationKey) {
|
||||
if (empty($location[$locationKey])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$locationPropertyValue = $location[$locationKey];
|
||||
$existingPropertyValue = $row[$column];
|
||||
|
||||
if (!$this->areLocationPropertiesEqual($locationKey, $locationPropertyValue, $existingPropertyValue)) {
|
||||
$valuesToUpdate[$column] = $locationPropertyValue;
|
||||
}
|
||||
}
|
||||
return $valuesToUpdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-geolocate visits within a date range for a specified site (if any).
|
||||
*
|
||||
* @param string $from A datetime string to treat as the lower bound. Visits newer than this date are processed.
|
||||
* @param string $to A datetime string to treat as the upper bound. Visits older than this date are processed.
|
||||
* @param int|null $idSite If supplied, only visits for this site are re-attributed.
|
||||
* @param int $iterationStep The number of visits to re-attribute at the same time.
|
||||
* @param callable|null $onLogProcessed If supplied, this callback is called after every row is processed.
|
||||
* The processed visit and the updated values are passed to the callback.
|
||||
*/
|
||||
public function reattributeVisitLogs($from, $to, $idSite = null, $iterationStep = 1000, $onLogProcessed = null)
|
||||
{
|
||||
$visitFieldsToSelect = array_merge(array('idvisit', 'location_ip'), array_keys(VisitorGeolocator::$logVisitFieldsToUpdate));
|
||||
|
||||
$conditions = array(
|
||||
array('visit_last_action_time', '>=', $from),
|
||||
array('visit_last_action_time', '<', $to)
|
||||
);
|
||||
|
||||
if (!empty($idSite)) {
|
||||
$conditions[] = array('idsite', '=', $idSite);
|
||||
}
|
||||
|
||||
$self = $this;
|
||||
$this->dao->forAllLogs('log_visit', $visitFieldsToSelect, $conditions, $iterationStep, function ($logs) use ($self, $onLogProcessed) {
|
||||
foreach ($logs as $row) {
|
||||
$updatedValues = $self->attributeExistingVisit($row);
|
||||
|
||||
if (!empty($onLogProcessed)) {
|
||||
$onLogProcessed($row, $updatedValues);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @return LocationProvider
|
||||
*/
|
||||
public function getProvider()
|
||||
{
|
||||
return $this->provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return LocationProvider
|
||||
*/
|
||||
public function getBackupProvider()
|
||||
{
|
||||
return $this->backupProvider;
|
||||
}
|
||||
|
||||
private function areLocationPropertiesEqual($locationKey, $locationPropertyValue, $existingPropertyValue)
|
||||
{
|
||||
if (($locationKey == LocationProvider::LATITUDE_KEY
|
||||
|| $locationKey == LocationProvider::LONGITUDE_KEY)
|
||||
&& $existingPropertyValue != 0
|
||||
) {
|
||||
// floating point comparison
|
||||
return abs(($locationPropertyValue - $existingPropertyValue) / $existingPropertyValue) < self::LAT_LONG_COMPARE_EPSILON;
|
||||
} else {
|
||||
return $locationPropertyValue == $existingPropertyValue;
|
||||
}
|
||||
}
|
||||
|
||||
private function getDefaultProvider()
|
||||
{
|
||||
return LocationProvider::getProviderById(DefaultProvider::ID);
|
||||
}
|
||||
|
||||
public static function getDefaultLocationCache()
|
||||
{
|
||||
if (self::$defaultLocationCache === null) {
|
||||
self::$defaultLocationCache = new Transient();
|
||||
}
|
||||
return self::$defaultLocationCache;
|
||||
}
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
/*!
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
(function () {
|
||||
angular.module('piwikApp').controller('LocationProviderSelectionController', LocationProviderSelectionController);
|
||||
|
||||
LocationProviderSelectionController.$inject = ['piwikApi'];
|
||||
|
||||
function LocationProviderSelectionController(piwikApi) {
|
||||
var self = this;
|
||||
|
||||
this.isLoading = false;
|
||||
this.updateLoading = {};
|
||||
|
||||
// handle 'refresh location' link click
|
||||
this.refreshProviderInfo = function (providerId) {
|
||||
|
||||
this.updateLoading[providerId] = true;
|
||||
|
||||
// this should not be in a controller... ideally we fetch this data always from client side and do not
|
||||
// prefill it server side
|
||||
var $locationNode = $('.provider' + providerId + ' .location');
|
||||
$locationNode.css('visibility', 'hidden');
|
||||
|
||||
piwikApi.fetch({
|
||||
module: 'UserCountry',
|
||||
action: 'getLocationUsingProvider',
|
||||
id: providerId,
|
||||
format: 'html'
|
||||
}).then(function (response) {
|
||||
self.updateLoading[providerId] = false;
|
||||
$locationNode.html('<strong>' + response + '</strong>').css('visibility', 'visible');
|
||||
}, function () {
|
||||
self.updateLoading[providerId] = false;
|
||||
});
|
||||
};
|
||||
|
||||
this.save = function () {
|
||||
if (!this.selectedProvider) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.isLoading = true;
|
||||
|
||||
var parent = $(this).closest('p'),
|
||||
loading = $('.loadingPiwik', parent),
|
||||
ajaxSuccess = $('.success', parent);
|
||||
|
||||
piwikApi.withTokenInUrl();
|
||||
piwikApi.fetch({
|
||||
method: 'UserCountry.setLocationProvider',
|
||||
providerId: this.selectedProvider
|
||||
}).then(function () {
|
||||
self.isLoading = false;
|
||||
var UI = require('piwik/UI');
|
||||
var notification = new UI.Notification();
|
||||
notification.show(_pk_translate('General_Done'), {
|
||||
context: 'success',
|
||||
noclear: true,
|
||||
type: 'toast',
|
||||
id: 'userCountryLocationProvider'
|
||||
});
|
||||
notification.scrollToNotification();
|
||||
}, function () {
|
||||
self.isLoading = false;
|
||||
});
|
||||
};
|
||||
}
|
||||
})();
|
@ -0,0 +1,33 @@
|
||||
/*!
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
/**
|
||||
* Usage:
|
||||
* <div piwik-location-provider-selection>
|
||||
*/
|
||||
(function () {
|
||||
angular.module('piwikApp').directive('piwikLocationProviderSelection', piwikLocationProviderSelection);
|
||||
|
||||
piwikLocationProviderSelection.$inject = ['piwik'];
|
||||
|
||||
function piwikLocationProviderSelection(piwik){
|
||||
|
||||
return {
|
||||
restrict: 'A',
|
||||
transclude: true,
|
||||
controller: 'LocationProviderSelectionController',
|
||||
controllerAs: 'locationSelector',
|
||||
template: '<div ng-transclude></div>',
|
||||
compile: function (element, attrs) {
|
||||
|
||||
return function (scope, element, attrs, controller) {
|
||||
controller.selectedProvider = attrs.piwikLocationProviderSelection;
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
})();
|
@ -0,0 +1,149 @@
|
||||
/*!
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
(function () {
|
||||
angular.module('piwikApp').controller('LocationProviderUpdaterController', LocationProviderUpdaterController);
|
||||
|
||||
LocationProviderUpdaterController.$inject = ['piwikApi', '$window'];
|
||||
|
||||
function LocationProviderUpdaterController(piwikApi, $window) {
|
||||
// remember to keep controller very simple. Create a service/factory (model) if needed
|
||||
var self = this;
|
||||
|
||||
this.buttonUpdateSaveText = _pk_translate('General_Save');
|
||||
this.progressUpdateLabel = '';
|
||||
|
||||
// geoip database wizard
|
||||
var downloadNextChunk = function (action, thisId, progressBarId, cont, extraData, callback) {
|
||||
var data = {};
|
||||
for (var k in extraData) {
|
||||
data[k] = extraData[k];
|
||||
}
|
||||
|
||||
piwikApi.withTokenInUrl();
|
||||
piwikApi.post({
|
||||
module: 'UserCountry',
|
||||
action: action,
|
||||
'continue': cont ? 1 : 0
|
||||
}, data).then(function (response) {
|
||||
if (!response || response.error) {
|
||||
callback(response);
|
||||
} else {
|
||||
// update progress bar
|
||||
var newProgressVal = Math.floor((response.current_size / response.expected_file_size) * 100);
|
||||
self[progressBarId] = Math.min(newProgressVal, 100);
|
||||
|
||||
// if incomplete, download next chunk, otherwise, show updater manager
|
||||
if (newProgressVal < 100) {
|
||||
downloadNextChunk(action, thisId, progressBarId, true, extraData, callback);
|
||||
} else {
|
||||
callback(response);
|
||||
}
|
||||
}
|
||||
}, function () {
|
||||
callback({error: _pk_translate('UserCountry_FatalErrorDuringDownload')});
|
||||
});
|
||||
};
|
||||
|
||||
this.startDownloadFreeGeoIp = function () {
|
||||
this.showFreeDownload = true;
|
||||
this.showPiwikNotManagingInfo = false;
|
||||
|
||||
this.progressFreeDownload = 0;
|
||||
|
||||
// start download of free dbs
|
||||
downloadNextChunk(
|
||||
'downloadFreeGeoIPDB',
|
||||
'geoipdb-screen2-download',
|
||||
'progressFreeDownload',
|
||||
false,
|
||||
{},
|
||||
function (response) {
|
||||
if (response.error) {
|
||||
$('#geoipdb-update-info').html(response.error);
|
||||
self.geoipDatabaseInstalled = true;
|
||||
} else {
|
||||
$window.location.reload();
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
this.startAutomaticUpdateGeoIp = function () {
|
||||
this.buttonUpdateSaveText = _pk_translate('General_Continue');
|
||||
this.showGeoIpUpdateInfo();
|
||||
};
|
||||
|
||||
this.showGeoIpUpdateInfo = function () {
|
||||
this.geoipDatabaseInstalled = true;
|
||||
|
||||
// todo we need to replace this the proper way eventually
|
||||
$('#geoip-db-mangement .card-title').text(_pk_translate('UserCountry_SetupAutomaticUpdatesOfGeoIP'));
|
||||
}
|
||||
|
||||
this.saveGeoIpLinks = function () {
|
||||
var currentDownloading = null;
|
||||
var updateGeoIPSuccess = function (response) {
|
||||
if (response && response.error) {
|
||||
self.isUpdatingGeoIpDatabase = false;
|
||||
|
||||
var UI = require('piwik/UI');
|
||||
var notification = new UI.Notification();
|
||||
notification.show(response.error, {
|
||||
placeat: '#geoipdb-update-info-error',
|
||||
context: 'error',
|
||||
style: {display: 'inline-block'},
|
||||
id: 'userCountryGeoIpUpdate'
|
||||
});
|
||||
|
||||
} else if (response && response.to_download) {
|
||||
var continuing = currentDownloading == response.to_download;
|
||||
currentDownloading = response.to_download;
|
||||
|
||||
// show progress bar w/ message
|
||||
self.progressUpdateDownload = 0;
|
||||
self.progressUpdateLabel = response.to_download_label;
|
||||
self.isUpdatingGeoIpDatabase = true;
|
||||
|
||||
// start/continue download
|
||||
downloadNextChunk(
|
||||
'downloadMissingGeoIpDb', 'geoipdb-update-info', 'progressUpdateDownload',
|
||||
continuing, {key: response.to_download}, updateGeoIPSuccess);
|
||||
|
||||
} else {
|
||||
self.progressUpdateLabel = '';
|
||||
self.isUpdatingGeoIpDatabase = false;
|
||||
|
||||
var UI = require('piwik/UI');
|
||||
var notification = new UI.Notification();
|
||||
notification.show(_pk_translate('General_Done'), {
|
||||
placeat: '#done-updating-updater',
|
||||
context: 'success',
|
||||
noclear: true,
|
||||
type: 'toast',
|
||||
style: {display: 'inline-block'},
|
||||
id: 'userCountryGeoIpUpdate'
|
||||
});
|
||||
|
||||
$('#geoip-updater-next-run-time').html(response.nextRunTime).parent().effect('highlight', {color: '#FFFFCB'}, 2000);
|
||||
}
|
||||
};
|
||||
|
||||
piwikApi.withTokenInUrl();
|
||||
piwikApi.post({
|
||||
period: this.updatePeriod,
|
||||
module: 'UserCountry',
|
||||
action: 'updateGeoIPLinks'
|
||||
}, {
|
||||
loc_db: this.locationDbUrl,
|
||||
isp_db: this.ispDbUrl,
|
||||
org_db: this.orgDbUrl
|
||||
}).then(updateGeoIPSuccess);
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
})();
|
@ -0,0 +1,37 @@
|
||||
/*!
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
/**
|
||||
* Usage:
|
||||
* <div piwik-location-provider-selection>
|
||||
*/
|
||||
(function () {
|
||||
angular.module('piwikApp').directive('piwikLocationProviderUpdater', piwikLocationProviderUpdater);
|
||||
|
||||
piwikLocationProviderUpdater.$inject = ['piwik'];
|
||||
|
||||
function piwikLocationProviderUpdater(piwik){
|
||||
|
||||
return {
|
||||
restrict: 'A',
|
||||
transclude: true,
|
||||
controller: 'LocationProviderUpdaterController',
|
||||
controllerAs: 'locationUpdater',
|
||||
template: '<div ng-transclude></div>',
|
||||
compile: function (element, attrs) {
|
||||
|
||||
return function (scope, element, attrs, controller) {
|
||||
controller.geoipDatabaseInstalled = '0' !== attrs.geoipDatabaseInstalled;
|
||||
controller.showFreeDownload = false;
|
||||
controller.showPiwikNotManagingInfo = true;
|
||||
controller.progressFreeDownload = 0;
|
||||
controller.progressUpdateDownload = 0;
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
})();
|
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'diagnostics.optional' => DI\add(array(
|
||||
DI\get('Piwik\Plugins\UserCountry\Diagnostic\GeolocationDiagnostic'),
|
||||
)),
|
||||
);
|
222
msd2/tracking/piwik/plugins/UserCountry/functions.php
Normal file
222
msd2/tracking/piwik/plugins/UserCountry/functions.php
Normal file
@ -0,0 +1,222 @@
|
||||
<?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\UserCountry;
|
||||
|
||||
use Piwik\DataTable;
|
||||
use Piwik\Option;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\Manager;
|
||||
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Tracker\Visit;
|
||||
|
||||
/**
|
||||
* Return the flag image path for a given country
|
||||
*
|
||||
* @param string $code ISO country code
|
||||
* @return string Flag image path
|
||||
*/
|
||||
function getFlagFromCode($code)
|
||||
{
|
||||
if (strtolower($code) == 'ti') {
|
||||
$code = 'cn';
|
||||
}
|
||||
|
||||
$pathInPiwik = 'plugins/Morpheus/icons/dist/flags/%s.png';
|
||||
$pathWithCode = sprintf($pathInPiwik, $code);
|
||||
$absolutePath = PIWIK_INCLUDE_PATH . '/' . $pathWithCode;
|
||||
if (file_exists($absolutePath)) {
|
||||
return $pathWithCode;
|
||||
}
|
||||
return sprintf($pathInPiwik, Visit::UNKNOWN_CODE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the translated continent name for a given continent code
|
||||
*
|
||||
* @param string $label Continent code
|
||||
* @return string Continent name
|
||||
*/
|
||||
function continentTranslate($label)
|
||||
{
|
||||
if ($label == 'unk' || $label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
return Piwik::translate('Intl_Continent_' . $label);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the translated country name for a given country code
|
||||
*
|
||||
* @param string $label country code
|
||||
* @return string Country name
|
||||
*/
|
||||
function countryTranslate($label)
|
||||
{
|
||||
if ($label == Visit::UNKNOWN_CODE || $label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
if (strtolower($label) == 'ti') {
|
||||
$label = 'cn';
|
||||
}
|
||||
|
||||
// Try to get name from Intl plugin
|
||||
$key = 'Intl_Country_' . strtoupper($label);
|
||||
$country = Piwik::translate($key);
|
||||
|
||||
if ($country != $key) {
|
||||
return $country;
|
||||
}
|
||||
|
||||
// Handle special country codes
|
||||
$key = 'UserCountry_country_' . $label;
|
||||
$country = Piwik::translate($key);
|
||||
|
||||
if ($country != $key) {
|
||||
return $country;
|
||||
}
|
||||
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits a label by a certain separator and returns the N-th element.
|
||||
*
|
||||
* @param string $label
|
||||
* @param string $separator eg. ',' or '|'
|
||||
* @param int $index The element index to extract.
|
||||
* @param mixed $emptyValue The value to remove if the element is absent. Defaults to false,
|
||||
* so no new metadata/column is added.
|
||||
* @return string|false Returns false if $label == DataTable::LABEL_SUMMARY_ROW, otherwise
|
||||
* explode($separator, $label)[$index].
|
||||
*/
|
||||
function getElementFromStringArray($label, $separator, $index, $emptyValue = false)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return false; // so no metadata/column is added
|
||||
}
|
||||
|
||||
$segments = explode($separator, $label);
|
||||
return empty($segments[$index]) ? $emptyValue : $segments[$index];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns region name for the given regionCode / countryCode combination
|
||||
* using the currently set location provider
|
||||
*
|
||||
* @param string $countryCode
|
||||
* @param string $regionCode
|
||||
* @return string
|
||||
*/
|
||||
function getRegionNameFromCodes($countryCode, $regionCode)
|
||||
{
|
||||
if (!Manager::getInstance()->isPluginActivated('GeoIp2') ||
|
||||
LocationProvider::getCurrentProvider() instanceof GeoIp) {
|
||||
return GeoIp::getRegionNameFromCodes($countryCode, $regionCode);
|
||||
}
|
||||
|
||||
$name = GeoIp2::getRegionNameFromCodes($countryCode, $regionCode);
|
||||
|
||||
// fallback if no translation for with GeoIP2
|
||||
if ($name == Piwik::translate('General_Unknown')) {
|
||||
$name = GeoIp::getRegionNameFromCodes($countryCode, $regionCode);
|
||||
}
|
||||
|
||||
return $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the region name using the label of a Visits by Region report.
|
||||
*
|
||||
* @param string $label A label containing a region code followed by '|' and a country code, eg,
|
||||
* 'P3|GB'.
|
||||
* @return string|false The region name or false if $label == DataTable::LABEL_SUMMARY_ROW.
|
||||
*/
|
||||
function getRegionName($label)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return false; // so no metadata/column is added
|
||||
}
|
||||
|
||||
if ($label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
list($regionCode, $countryCode) = explode(Archiver::LOCATION_SEPARATOR, $label);
|
||||
return getRegionNameFromCodes($countryCode, $regionCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of a region + the name of the region's country using the label of
|
||||
* a Visits by Region report.
|
||||
*
|
||||
* @param string $label A label containing a region code followed by '|' and a country code, eg,
|
||||
* 'P3|GB'.
|
||||
* @return string|false eg. 'Ile de France, France' or false if $label == DataTable::LABEL_SUMMARY_ROW.
|
||||
*/
|
||||
function getPrettyRegionName($label)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return $label;
|
||||
}
|
||||
|
||||
if ($label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
list($regionCode, $countryCode) = explode(Archiver::LOCATION_SEPARATOR, $label);
|
||||
|
||||
$result = getRegionNameFromCodes($countryCode, $regionCode);
|
||||
if ($countryCode != Visit::UNKNOWN_CODE && $countryCode != '') {
|
||||
$result .= ', ' . countryTranslate($countryCode);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of a city + the name of its region + the name of its country using
|
||||
* the label of a Visits by City report.
|
||||
*
|
||||
* @param string $label A label containing a city name, region code + country code,
|
||||
* separated by two '|' chars: 'Paris|A8|FR'
|
||||
* @return string|false eg. 'Paris, Ile de France, France' or false if $label ==
|
||||
* DataTable::LABEL_SUMMARY_ROW.
|
||||
*/
|
||||
function getPrettyCityName($label)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return $label;
|
||||
}
|
||||
|
||||
if ($label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
// get city name, region code & country code
|
||||
$parts = explode(Archiver::LOCATION_SEPARATOR, $label);
|
||||
$cityName = $parts[0];
|
||||
$regionCode = $parts[1];
|
||||
$countryCode = @$parts[2];
|
||||
|
||||
if ($cityName == Visit::UNKNOWN_CODE || $cityName == '') {
|
||||
$cityName = Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
$result = $cityName;
|
||||
if ($countryCode != Visit::UNKNOWN_CODE && $countryCode != '') {
|
||||
if ($regionCode != '' && $regionCode != Visit::UNKNOWN_CODE) {
|
||||
$regionName = getRegionNameFromCodes($countryCode, $regionCode);
|
||||
$result .= ', ' . $regionName;
|
||||
}
|
||||
$result .= ', ' . countryTranslate($countryCode);
|
||||
}
|
||||
return $result;
|
||||
}
|
8
msd2/tracking/piwik/plugins/UserCountry/lang/am.json
Normal file
8
msd2/tracking/piwik/plugins/UserCountry/lang/am.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "አህጉር",
|
||||
"Country": "ሀገር",
|
||||
"DistinctCountries": "%s የተለዩ ሀገራት",
|
||||
"SubmenuLocations": "አቀማመጦች"
|
||||
}
|
||||
}
|
30
msd2/tracking/piwik/plugins/UserCountry/lang/ar.json
Normal file
30
msd2/tracking/piwik/plugins/UserCountry/lang/ar.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "لم أجد دالة apache_get_modules ، أفترض أن خادم ويب ليس Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "لم أجد ملف %1$s في الملف المضغوط %2$s الذي صيغته tar !",
|
||||
"CannotFindGeoIPServerVar": "لم يتم وضع قيمة للمتغير %s . يبدو أن الخادوم لديك ضبطه غير صحيح .",
|
||||
"CannotListContent": "لم أتمكن من سرد محتويات %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "عنوان IP %s هو عنوان محلي لايمكن تحديد موقعه الجغرافي.",
|
||||
"CannotUnzipDatFile": "لم أتمكن من فك ضغط ملف dat في %1$s : %2$s",
|
||||
"City": "المدينة",
|
||||
"CityAndCountry": "%1$s ، %2$s",
|
||||
"Continent": "القارة",
|
||||
"Country": "الدولة",
|
||||
"country_a1": "بروكسي مجهول",
|
||||
"country_a2": "مزود خدمة عبر الأقمار الصناعية",
|
||||
"country_cat": "المجتمعات الناطقة بالكاتالانية",
|
||||
"country_o1": "دولة أخرى",
|
||||
"CurrentLocationIntro": "طبقاً لهذا المزوّد فإن مكانك الحالي هو",
|
||||
"DefaultLocationProviderDesc1": "مقدم معلومات الأماكن الافتراضي يخمّن بلد الزائر بناءاً على اللغة التي يستخدمها.",
|
||||
"DistinctCountries": "%s دولة بارزة",
|
||||
"DownloadingDb": "سحب %s",
|
||||
"DownloadNewDatabasesEvery": "تحديث قاعدة البيانات كلّ",
|
||||
"FoundApacheModules": "وجد Matomo بريمجات Apache التالية",
|
||||
"FromDifferentCities": "مدن مختلفة",
|
||||
"GeoIPCannotFindMbstringExtension": "لم أجد دالة %1$s . فضلاً تأكد من أن إضافة %2$s مثبتة ومحمّلة في الذاكرة.",
|
||||
"GeoIPDatabases": "قواعد بيانات GeoIP",
|
||||
"GeoIPImplHasAccessTo": "إصدار GeoIP هذا يمكنه الوصول إلى الأنواع التالية من قواعد البيانات",
|
||||
"Location": "المكان",
|
||||
"SubmenuLocations": "الأماكن"
|
||||
}
|
||||
}
|
13
msd2/tracking/piwik/plugins/UserCountry/lang/be.json
Normal file
13
msd2/tracking/piwik/plugins/UserCountry/lang/be.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "Кантынент",
|
||||
"Country": "Краіна",
|
||||
"country_a1": "Ананімныя проксі",
|
||||
"country_a2": "Спадарожнікавы правайдар",
|
||||
"country_cat": "Абшчыны, якія гавораць па Каталонскі",
|
||||
"country_o1": "Іншыя краіны",
|
||||
"DistinctCountries": "%s унікальных краін",
|
||||
"Location": "Лакаця",
|
||||
"SubmenuLocations": "Лакацыі"
|
||||
}
|
||||
}
|
86
msd2/tracking/piwik/plugins/UserCountry/lang/bg.json
Normal file
86
msd2/tracking/piwik/plugins/UserCountry/lang/bg.json
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Не може да бъде намерена apache_get_modules функцията, което предполага, че това не е Apache сървър.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Файл %1$s не може да бъде намерен в tar архив %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Променливата %s не е зададена. Възможно е сървърът да не е настроен правилно.",
|
||||
"CannotListContent": "Съдържанието за %1$s: %2$s не може да бъде заредено",
|
||||
"CannotLocalizeLocalIP": "IP адрес %s е вътрешен (частен) адрес и не може да бъде определено местоположението му.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Изглежда, че GeoIP базата от данни се съхранява извън Matomo (няма бази от данни в папката \\\"misc\\\", но GeoIP работи). Matomo не може автоматично да обнови GeoIP базата от данни, ако те се намират извън директория \\\"misc\\\".",
|
||||
"CannotUnzipDatFile": "Не може да се разархивира dat файл в %1$s: %2$s",
|
||||
"City": "Град",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Континент",
|
||||
"Country": "Държава",
|
||||
"country_a1": "Анонимно прокси",
|
||||
"country_a2": "Сателитен доставчик",
|
||||
"country_cat": "Каталонски-говорящите общности",
|
||||
"country_o1": "Друга държава",
|
||||
"CurrentLocationIntro": "Според текущия доставчик, вашето местоположение е",
|
||||
"DefaultLocationProviderDesc1": "Доставчикът по подразбиране, определящ местоположението, отгатва държавата, от която е посетителят, на базата на използвания език.",
|
||||
"DefaultLocationProviderDesc2": "Този метод не е много точен, затова %1$sсе препоръчва инсталирането и използването на %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Използва се доставчикът по подразбиране, което означава, че Matomo ще определя местоположението на посетителите спрямо езика, който те използват. %1$sПрочетете това%2$s, за да научите как се настройва по-точен метод за определяне на местоположението.",
|
||||
"DistinctCountries": "%s отделни държави",
|
||||
"DownloadingDb": "Сваляне %s",
|
||||
"DownloadNewDatabasesEvery": "Обновяване на базата от данни на всеки",
|
||||
"FatalErrorDuringDownload": "Възникнала е фатална грешка при свалянето на този файл. Възможно е да има нещо нередно с интернет връзката, с базата данни на GeoIP, която е изтеглена или Matomo. Опитайте да изтеглите файла ръчно и да го инсталирате.",
|
||||
"FoundApacheModules": "Matomo откри следните Apache модули",
|
||||
"FromDifferentCities": "различни градове",
|
||||
"GeoIPCannotFindMbstringExtension": "Не може да бъде намерена %1$s функция. Уверете се, че разширение %2$s е инсталирано и заредено.",
|
||||
"GeoIPDatabases": "GeoIP база данни",
|
||||
"GeoIPImplHasAccessTo": "Тази реализация на GeoIP има достъп до следните типове бази данни",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Този доставчик използва GeoIP база данни и PECL модул, за да определи точно и ефективно местоположението на посетителите.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Няма ограничения с този доставчик. Поради тази причина, това е вариантът, който е препоръчително да бъде използван.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Този доставчик е най-лесен за инсталиране, тъй като не изисква сървърна конфигурация (идеален за споделен хостинг!). Той използва база данни GeoIP и MaxMind PHP API, за да определя точното местоположение на посетителите.",
|
||||
"GeoIpLocationProviderDesc_Php2": "В случай, че през вашия сайт преминава голямо количество трафик, може да се окаже, че този доставчик е твърде бавен. В този случай е най-добре да се инсталира %1$sPECL разширение%2$s или %3$sсървърен модул%4$s.",
|
||||
"GeoIPNoServerVars": "Matomo не може да намери GeoIP %s променливи.",
|
||||
"GeoIPPeclCustomDirNotSet": "Опцията %s PHP ini не е зададена.",
|
||||
"GeoIPServerVarsFound": "Matomo засече следните GeoIP %s променливи",
|
||||
"GeoIPUpdaterIntro": "Matomo до момента поддържа обновления за следните GeoIP бази данни",
|
||||
"GeoLiteCityLink": "Ако се използва GeoLite City база данни, е нужно да се използва тази връзка: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Геолокация",
|
||||
"GeolocationPageDesc": "В тази страница може да се промени начинът, по който Matomo определя местоположението на посетителите.",
|
||||
"getCityDocumentation": "Този отчет показва в кои градове са се намирали вашите посетители, при достъпването на сайта.",
|
||||
"getContinentDocumentation": "Този отчет показва кое съдържание са разглеждали вашите посетители, при достъпването на сайта.",
|
||||
"getCountryDocumentation": "Този отчет показва в коя държава са се намирали вашите посетители, при достъпването на сайта.",
|
||||
"getRegionDocumentation": "Този отчет показва къде са се намирали вашите посетители, при достъпването на сайта.",
|
||||
"HowToInstallApacheModule": "Как да инсталирам GeoIP модул за Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Как да взема GeoIP база данни?",
|
||||
"HowToInstallGeoIpPecl": "Как се инсталира GeoIP PECL разширение?",
|
||||
"HowToInstallNginxModule": "Как се инсталира GeoIP модул за Nginx?",
|
||||
"HowToSetupGeoIP": "Как се настройва точно местоположение с GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sСвалете%2$s GeoLite City базата данни от %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Разархивирайте файла и копирайте резултата, %1$s в Matomo поддиректорията %2$sразни%3$s (можете да направите това посредством FTP или SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Презареждане на този екран. Доставчикът на %1$sGeoIP (PHP)%2$s, ще бъде %3$sинсталиран%4$s. Избиране.",
|
||||
"HowToSetupGeoIP_Step4": "И сте готови! Вие току-що настроихте Matomo да използва GeoIP, което означава, че ще бъдете в състояние да видите регионите и градовете, от които посетителите достъпват вашия сайт, заедно с много точна информация за страната.",
|
||||
"HowToSetupGeoIPIntro": "Изглежда, че настройката, за определяне на местоположението, не е направена. Това е полезна функция и без нея няма да се вижда точна и пълна информация за местоположението на посетителите. Ето и начин, по който може бързо да започнете да го използвате:",
|
||||
"HttpServerModule": "HTTP сървърен модул",
|
||||
"InvalidGeoIPUpdatePeriod": "Невалиден период за обновяването на GeoIP: %1$s. Валидните стойности са %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Купих още %1$sпрецизни бази данни от MaxMind%2$s и искам да настроя автоматични актуализации.",
|
||||
"ISPDatabase": "ISP база данни",
|
||||
"IWantToDownloadFreeGeoIP": "Искам да изтегля безплатната GeoIP база данни...",
|
||||
"Latitude": "Географска ширина",
|
||||
"Location": "Място",
|
||||
"LocationDatabase": "Местоположение база данни",
|
||||
"LocationDatabaseHint": "Базата от данни указваща местоположение е или за държава, регион или град.",
|
||||
"LocationProvider": "Местоположение на доставчика",
|
||||
"Longitude": "Географска дължина",
|
||||
"NoDataForGeoIPReport1": "Няма данни за този доклад, защото или няма информация за местоположението, или IP адресът на посетителя не може да бъде определен къде се намира.",
|
||||
"NoDataForGeoIPReport2": "За да бъде активирано по-точно определяне на местоположението е нужно да се променят настройките %1$sтук%2$s и да се използва %3$sбази данни на ниво град%4$s.",
|
||||
"Organization": "Организация",
|
||||
"OrgDatabase": "Организация на базата данни",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo в момента не се управлява от никакви GeoIP база данни.",
|
||||
"Region": "Регион",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Настройка за автоматични актуализации на GeoIP бази данни",
|
||||
"SubmenuLocations": "Местонахождение",
|
||||
"TestIPLocatorFailed": "Matomo направи проверка на местоположението на известен IP адрес (%1$s), но вашият сървър показва %2$s. Ако този доставчик беше настроен правилно, трябваше да показва %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Сваленият файл не е валидна GeoIP база данни. Моля, проверете отново адреса или свалете файла ръчно.",
|
||||
"ToGeolocateOldVisits": "За да получите информация за предишни посещения, използвайте скриптът описан %1$sтук%2$s.",
|
||||
"UnsupportedArchiveType": "Типът архив %1$s не се поддържа.",
|
||||
"UpdaterHasNotBeenRun": "Не е пускана до момента задача за обновяване.",
|
||||
"UpdaterIsNotScheduledToRun": "Не е планирано да се изпълнява в бъдеще.",
|
||||
"UpdaterScheduledForNextRun": "Ще бъде пуснато при следващото изпълнение на archive.php cron.",
|
||||
"UpdaterWasLastRun": "Задача за проверка за обновления е стартирана последно на %s.",
|
||||
"UpdaterWillRunNext": "Следващото пускане е планирано за %s.",
|
||||
"WidgetLocation": "Местонахождение на посетителя"
|
||||
}
|
||||
}
|
86
msd2/tracking/piwik/plugins/UserCountry/lang/ca.json
Normal file
86
msd2/tracking/piwik/plugins/UserCountry/lang/ca.json
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "No s'ha pogut trobar la funció apache_get_modules, s'asumeix que s'utilitza un servidor web diferent del Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "No s'ha pogut trobar el fitxer %1$s al fitxer tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "La variable %s no està definida. Pot ser que el vostre servidor web no estigui configurat correctament.",
|
||||
"CannotFindPeclGeoIPDb": "No s'ha pogut trobar una base de dades de països, regions o ciutats pel modul GeoIP PECL. Assegureu-vos que la vostra base de dades GeoIP es troba a %1$s, i s'anomena %2$s o %3$s, sinó el mòdul PECL lo la detectarà.",
|
||||
"CannotListContent": "No s'ha pogut llistar el contingut de %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "L'adreça IP %s és una adreça local i no pot ser Geolocalitzada.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Sembla que esteu guardant la vostra base de dades de GeoIP fora del Matomo (ho podem assegurar perquè no hi ha bases de dades al directori misc, però la GeoIP està funcionant). El Matomo no podrà actualitzar automàticament les vostres bases de dades GeoIP si aquestes es troben fora del directori misc.",
|
||||
"CannotUnzipDatFile": "No s'ha pogut descomprimir el fitxer dat de %1$s: %2$s",
|
||||
"City": "Ciutat",
|
||||
"Continent": "Continent",
|
||||
"Country": "País",
|
||||
"country_a1": "Proxy Anònim",
|
||||
"country_a2": "Proveïdor per satelit",
|
||||
"country_cat": "Comunitats catalano-parlants",
|
||||
"country_o1": "Un altre pais",
|
||||
"CurrentLocationIntro": "Segons el proveïdor, la vostra localització actual és",
|
||||
"DefaultLocationProviderDesc1": "El proveïdor de localització per defecte suposa el país del visitant en funció del llenguatge que fan servir.",
|
||||
"DefaultLocationProviderDesc2": "Això no és molt precís, per tant %1$s recomanem instal·lar i utilitzar %2$sGeoIP%3$s.%4$s",
|
||||
"DistinctCountries": "Hi ha %s països diferents",
|
||||
"DownloadingDb": "Descarregant %s",
|
||||
"DownloadNewDatabasesEvery": "Actualitza la base de dades cada",
|
||||
"FatalErrorDuringDownload": "S'ha produït un error fatal mentre es descarregava el fitxer. Deu haver algun problema amb la vostra connexió a Internet o amb la base de dades GeoIP que heu Baixat. Proveu de descarregar-la instal·lar-la manualment.",
|
||||
"FoundApacheModules": "El Matomo ha trobat els següents mòduls d'Apache",
|
||||
"GeoIPCannotFindMbstringExtension": "No s'ha pogut trobar la funció %1$s. Assegureu-vos que l'extensió %2$s està instal·lada i carregada.",
|
||||
"GeoIPDatabases": "Base de dades GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Per a veure informació d'aquest informe, heu de configurar la GeoIP a la pestanya Geolocalització. Les bases de dades comercials de %1$sMaxmind%2$s són més acurades que les gratuïtes. Podeu veure com són d'acurades fent click %3$saquí%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Aquesta implementació de GeoIP té accés als següents tipus de bases de dades",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Aquest proveïdor de localització utilitza una base de dades GeoIP i un mòdul PECL per determinar de forma eficient i acurada la localització dels vostres visitants.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "No hi ha cap limitació amb aquest proveïdor, per tant és el que recomanem que utilzeu.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Aquest proveïdor és el més simple d'instal·lar i no requereix cap configuració del servidor (ideal per a hosting compartit!). Utiltiza una base de dades GeoIP i la api PHP de MaxMind per determinar de forma acurada la localització dels vostres visitants.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Si el vostre lloc web té molt tràfic trobareu que aquest proveïdor de localització és massa lent. En aquest cas podeu instalar la %1$s Extensió PECL %2$s o un %3$s mòdul del serviro %4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Aquest proveïdor de localització utiltiza el modul GeoIP que ha estat instal·lat al vostre servidor HTTP. Aquest proveïdor es ràpid i acurat, però %1$s només es pot fer servir l'escaneig amb el rastreig de webs normal .%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Si heu d'importar els fitxers de Log o alguna altra cosa que requereixi utilizar addreces IP, utilitzeu la %1$sImplementació GeoIP PECL (recomanada)%2$s o la %3$s implementació GeoIP PHP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Nota: L'anonimització IP no té cap efecte amb les localitzacions reportades per aquest proveïdor. Abans d'utilitzar amb l'anonimització IP, assegureu-vos que no viola cap llei de privacitat a la que podeu estar subjectes.",
|
||||
"GeoIPNoServerVars": "El Matomo no ho pogut trobar cap variable GeoIP a %s",
|
||||
"GeoIPPeclCustomDirNotSet": "L'opció %s del PHP ini no està definida",
|
||||
"GeoIPServerVarsFound": "El Matomo detecta les següents variables GeoIP a %s",
|
||||
"GeoIPUpdaterInstructions": "Introduïu els enllaços de descàrrega de les vostres bases de dades a continuació. Si heu comprat bases de dades de %3$sMaxMind%4$s podeu trobar els enllaços %1$saquí%2$s. Poseu-vos amb contacte amb %3$sMaxMind%4$s si teniu problemes per accedir-hi.",
|
||||
"GeoIPUpdaterIntro": "El Matomo està gestionant les actualitzacions de les següents bases de dades GeoIP",
|
||||
"GeoLiteCityLink": "Si esteu fent servir la Base de dades de ciutats GeoLite feu servir aquest enllaç: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocalització",
|
||||
"GeolocationPageDesc": "En aquesta pàgina podeu canviar com el Matomo determina la localització dels vostres visitants.",
|
||||
"getCityDocumentation": "Aquest informe mostra les ciutats on estaven els vostres visitants quan van accedir el vostre lloc web.",
|
||||
"getContinentDocumentation": "Aquest informe mostra el continent on eren els vostres visitants quan van accedir al vostre lloc web.",
|
||||
"getCountryDocumentation": "Aquest informe mostra el país on estaven els vostres visitants quan van accedir al vostre lloc web.",
|
||||
"getRegionDocumentation": "Aquest informe mostra la regió on estaven els vostres visitants quan van accedir al vostre lloc web.",
|
||||
"HowToInstallApacheModule": "Com instal·lo el módul GeoIP per l'Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Com puc obtenir una base de dades GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Com instal·lo l'extensió GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Com instal·lo el modul GeoIP per Nginx?",
|
||||
"HowToSetupGeoIP": "Com configuració la geocalitazció acurada amb GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sDescàrrega%2$s la base de dades GeoLite City de %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extraieu el aquest fitxer i copieu el resultat, %1$s al subdirectori %2$smisc%3$s del Matomo (ho podeu fer per FTP o per SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Recàrrega aquesta pantalla. El proveïdor %1$sGeoIP (PHP)%2$s està ara %3$s instal·lat %4$s. Seleccioneu-lo.",
|
||||
"HowToSetupGeoIP_Step4": "I ja esta tot! Acabeu de configurar el Matomo per utilitzar GeoIP que vol dir que podeu veure les regions i les ciutats dels vostres visitants i una informació molt acurada dels seus països.",
|
||||
"HowToSetupGeoIPIntro": "Sembla que no teniu configurada la Geolocalització. Es tracta d'una característica molt útil, i sense ella no podreu veure de forma acurada la localització completa dels vostres visitants. Tot seguit us expliquem com podeu començar a fer-la servir:",
|
||||
"HttpServerModule": "Mòdul del Servidor HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Període invàlid de l'actualització GeoIP: %1$s. Els valors vàlids són %2$s.",
|
||||
"IPurchasedGeoIPDBs": "He comprat %1$suna base de dades més acurada de MaxMind%2$s i vull utilitzar les actualitzacions automàtiques",
|
||||
"ISPDatabase": "Base de dades de ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Vull utilitzar la base de dades GeoIP gratuïta...",
|
||||
"Latitude": "Latitud",
|
||||
"Location": "Ubicació",
|
||||
"LocationDatabase": "Base de dades de Localització",
|
||||
"LocationDatabaseHint": "Una base de dades de localització és una base de dades de països, regions o ciutats.",
|
||||
"LocationProvider": "Proveïdor de localitzacions",
|
||||
"Longitude": "Longitud",
|
||||
"NoDataForGeoIPReport1": "No hi ha informació per aquest informe perquè la informació de localització no esta disponible o l'adreça IP del visitant no pot ser geolocalitzada.",
|
||||
"NoDataForGeoIPReport2": "Per activar la geolocalització acurada, canvieu les preferències %1$saquí%2$s i utilitzeu una %3$sbase de dades a nivell de ciutat%4$s.",
|
||||
"Organization": "Organització",
|
||||
"OrgDatabase": "Base de dades d'Organització",
|
||||
"PeclGeoIPNoDBDir": "El mòdul de PECL està cercant la base de dades a %1$s, però aquest directori no existeix. Sisplau, creu-lo i afegiu bases de dades de Geolocalització allí. Alternativament, podeu modificar el paràmetre %2$s del vostre fitxer php.ini per utilizar el directori correcte.",
|
||||
"PeclGeoLiteError": "La vostra base de dades de Geocalització es troba a %1$s amb el nom %2$s. Desafortunadament, el mòdul PECL no la pot reconèixer amb aquest nom. Sisuaplau, renombreu-la a %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "El Matomo actualment no gestiona cap base de dades de Geolocalització",
|
||||
"Region": "Regió",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Configureu les actualitzacions automàtiques de les bases de Dades de Geolocalització.",
|
||||
"SubmenuLocations": "Localització",
|
||||
"TestIPLocatorFailed": "El Matomo ha provat de localitzar la IP coneguda (%1$s), però el servidor ha retornat %2$s. Si el proveïdor està correctament configurat hauria d'haver retornat %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "El fitxer descarregat no es una Base de dades de Geolocalització vàlida. Sisplau, reviseu la URL o descarregueu el fitxer manualment.",
|
||||
"ToGeolocateOldVisits": "Per obtenir la localització de les visites anteriors, utilitzeu el script descrit %1$saquí%2$s.",
|
||||
"UnsupportedArchiveType": "S'ha trobat un tipus de fitxer no soportat %1$s.",
|
||||
"WidgetLocation": "Ubicació del visitant"
|
||||
}
|
||||
}
|
101
msd2/tracking/piwik/plugins/UserCountry/lang/cs.json
Normal file
101
msd2/tracking/piwik/plugins/UserCountry/lang/cs.json
Normal file
@ -0,0 +1,101 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Nelze nalézt funkci apache_get_modules,př edpokládám jiný server než Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "V tar archivu %2$s se nepodařilo najít soubor %1$s!",
|
||||
"CannotFindGeoIPServerVar": "Proměnná %s není nastavena. Váš webový server nemusí být správně nakonfigurován.",
|
||||
"CannotFindPeclGeoIPDb": "Nepodařilo se najít databázi zemí, regionů nebo měst pro GEOIP modul PECl. Ujistěte se, že vaše GEOIP databáze je umísěna v adresáři %1$s a je pojmenována %2$s nebo %3$s, jinak si jí GEOIP modul PECl nevšimne.",
|
||||
"CannotListContent": "Nepodařilo se vypsat obsah pro %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP adresa %s je místní a enemůže být geolokována.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Vypadá to, že svoje GEOIP databáze ukládáte vně Matomo (víme to, protože v podadresáři misc žádné databáze nejsou, ale gEOIP funguje). Matomo nemůže automaticky aktualizovat GEOIP databázi, pokud není uložena v podadresáři misc.",
|
||||
"CannotUnzipDatFile": "Nepodařilo se rozbalit dat soubor v %1$s: %2$s",
|
||||
"City": "Město",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Continents": "Kontinenty",
|
||||
"Country": "Státy",
|
||||
"country_a1": "Anonymní proxy",
|
||||
"country_a2": "Satelitní poskytovatel",
|
||||
"country_cat": "Katalánsky mluvící země",
|
||||
"country_o1": "ostatní země",
|
||||
"VisitLocation": "Prohlédnout umístění",
|
||||
"CurrentLocationIntro": "Podle tohoto poskytovatele je vaše aktuální poloha",
|
||||
"DefaultLocationProviderDesc1": "Výchozí poskytovatel umístění odhaduje zemi návštěvníka na základě použitého jazyka.",
|
||||
"DefaultLocationProviderDesc2": "To není příliš přesné, proto doporučujeme %1$sinstalovat a používat %2$sGEOIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Používáte výchozího poskytovatele umístění, což znamená, že se Matomo pokusí odhadnout zemi návštěvníka na základě použitého jazyka. %1$sPřečtěte si%2$s, jak nastavit přesnější geolokaci.",
|
||||
"DistinctCountries": "%s jedinečných států",
|
||||
"DownloadingDb": "Stahování %s",
|
||||
"DownloadNewDatabasesEvery": "Aktualizovat databáze každých",
|
||||
"FatalErrorDuringDownload": "Při stahování souboru došlo k fatální chybě. Něco může být špatně s vaším internetovým připojením, staženou GEOIP databází, nebo s Matomoem. Zkuste ji stáhnout a nainstalovat ručně.",
|
||||
"FoundApacheModules": "Matomo našel tyto Apache moduly",
|
||||
"FromDifferentCities": "různá města",
|
||||
"GeoIPCannotFindMbstringExtension": "Nelze najít funkci %1$s. Ujistěte se, že je modul %2$s nainstalován a povolen.",
|
||||
"GeoIPDatabases": "Databáze GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Pokud chcete vidět toto hlášení, musíte nastavit GEOIP v administraci na záložce geolokace. Komerční %1$sMaxmind%2$s GeoIP databáze mají větší přesnost než volně šiřitelné. Pokud chcete vidět, jak přesné jsou, klikněte %3$szde%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Tato implementace GeoIP má přístup kn následujícím typům databází.",
|
||||
"GeoIPIncorrectDatabaseFormat": "Vypadá to, že vaše GeoIP databáze má nesprávný formát. Může být poškozena. Ujistěte se, že používáte binární formát a zkuste ji nahradit jinou kopií.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Tento poskytovatel umístění používá GeoIP databázi a PECl modul k přesnému a efektivnímu nalezení umístění vašich návštěvníků.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Tento poskytovatel nemá žádná omezení, takže to je ten, kterého doporučujeme používat.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Tento poskytovatel umístění je nejjednodušší na instalaci, protože nevyžaduje žádnou konfiguraci serveru (ideální pro sdílené hostingy). K přesnému určení umístění návštěvníků používá GeoIP databázi a MaxMind php API.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Pokud má váš web velký provoz, můžete zjistit, že je tento poskytovatel polohy pomalý. V takovém případě nainstalujte %1$srozšíření PECl%2$s nebo %3$sserverový modul%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Tento poskytovatel umístění využívá GeoIP modul, který byl instalován ve vašem HTTP serveru. Tento poskytovatel je přesný a rychlý, ale může být použit pouze s %1$snormálním sledování prohlížečů.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Pokud musíte importovat logy nebo dělat něco jiného, co vyžaduje nastavování IP adres, použijte %1$sPECl implementaci GeoIP (doporučeno%2$s nebo %3$sPHP implementaci GeoIP.%4$s",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Poznámka: Anonimizace IP adres nemá vliv na umístění hlášené tímto poskytovatelem. Před jeho používáním ověřte, že to neodporuje žádným zákonům.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolokace funguje, ale nepoužíváte doporučeného poskytovatele umístění.",
|
||||
"GeoIPNoServerVars": "Matomo nemůže najít žádné GeoIP %s proměnné",
|
||||
"GeoIPPeclCustomDirNotSet": "PHP ini možnost %s není nastavena.",
|
||||
"GeoIPServerVarsFound": "Matomo detekuje následující GeoIP %s proměnné",
|
||||
"GeoIPUpdaterInstructions": "Níže vložte odkazy ke stažení GeoIP databází. Pokud jste zakoupili databáze %3$sMaxMind%4$s, najdete odkazy ke stažení %1$szde%2$s. Pokud máte problém s přístupem k nim, kontaktujte %3$sMaxMind%4$s.",
|
||||
"GeoIPUpdaterIntro": "Matomo aktuálně spravuje aktualizace pro následující GeoIP databáze",
|
||||
"GeoLiteCityLink": "Pokud používáte databázi GeoLite, použijte následující odkaz: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolokace",
|
||||
"GeolocationPageDesc": "Na této stránce můžete změnit, jak Matomo určuje umístění návštěvníků.",
|
||||
"getCityDocumentation": "Toto hlášení zobrazuje města návštěvníků, když přistoupili k vašim stránkám.",
|
||||
"getContinentDocumentation": "Toto hlášení zobrazuje, na kterém kontinentu byli návštěvníci při přístupu k vašim stránkám.",
|
||||
"getCountryDocumentation": "Toto hlášení zobrazuje zemi, ve které byli návštěvníci, když přistoupili k vašim stránkám.",
|
||||
"getRegionDocumentation": "Toto hlášení zobrazuje region, ve kterém byli návštěvníci, když přistupovali k vašim stránkám.",
|
||||
"HowToInstallApacheModule": "Jak nainstalovat GeoIP modul na Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Jak získám GeoIP databáze?",
|
||||
"HowToInstallGeoIpPecl": "Jak nainstalovat GeoIP PECL rozšíření?",
|
||||
"HowToInstallNginxModule": "Jak nainstalovat GeoIP modul pro Nginx?",
|
||||
"HowToSetupGeoIP": "Jak nastavit přesnou geolokaci s GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sstáhnout%2$s databázi měst GeoLite od %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Rozbalte tento soubor a zkopírujte výsledek, %1$s, do podadresáře %2$smisc%3$s Matomou (můžete to provést buď pomocí FTP nebo SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Obnovte tuto obrazovku. %1$sPHP GeoIP%2$s poskytovatel bude %3$snainstalovaný%4$s. Vyberte ho.",
|
||||
"HowToSetupGeoIP_Step4": "A je hotovo. To znamená, že nyní uvidíte město a region vašich návštěvníků spolu s velmi přesným určení jejich země.",
|
||||
"HowToSetupGeoIPIntro": "Vypadá to, že nemáte nastavenou přesnou geolokaci. Je to užitečná vlastnost a bez ní neuvidíte přesné a kompletní informace o umístění vašich návštěvníků. Zde je, jak s ní můžete rychle začít:",
|
||||
"HttpServerModule": "Modul HTTP serveru",
|
||||
"InvalidGeoIPUpdatePeriod": "Neplatná doba pro aktualizovač GeoIP databáze: %1$s. Platné hodnoty jsou %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Zakoupil jsem více %1$spřesné databáze od MaxMind%2$s a chci nastavit automatické katualizace.",
|
||||
"ISPDatabase": "Databáze ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Chci stáhnout volnou GeoIP databázi...",
|
||||
"Latitude": "Zeměpisná šířka",
|
||||
"Latitudes": "Zeměpisné šířky",
|
||||
"Location": "Umístění",
|
||||
"LocationDatabase": "Databáze umístění",
|
||||
"LocationDatabaseHint": "Databáze umístění je databáze zemí, regionů, nebo měst.",
|
||||
"LocationProvider": "Poskytovatel umístění",
|
||||
"Longitude": "Zeměpisná délka",
|
||||
"Longitudes": "Zeměpisné délky",
|
||||
"NoDataForGeoIPReport1": "Pro toto hlášení nejsou k dispozici žádná data, protože buď nejsou k dispozici GeoIP data, nebo nemohly být geolokovány IP adresy návštěvníků.",
|
||||
"NoDataForGeoIPReport2": "Pokud chcete umožnit přesnou geolokaci, změňte nastavení %1$szde%2$s a použijte %3$sdatabázi na úrovni měst%4$s.",
|
||||
"Organization": "Společnost",
|
||||
"OrgDatabase": "Databáze organizací",
|
||||
"PeclGeoIPNoDBDir": "PECl modul hledá geoIP databáze v adresáři %1$s, ale ten neexistuje. Vytvořte ho a umístěte do něho databáze, nebo nastavte php.ini možnost %2$s na správný adresář.",
|
||||
"PeclGeoLiteError": "Vaše GeoIP databáze v adresáři %1$s je pojmenována %2$s. Bohužel, PECl modul ji pod tímto názvem nenajde. Přejmenujte ji na %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo aktuálně nespravuje žádné GeoIP databáze.",
|
||||
"PluginDescription": "Hlásí umístění vašich návštěvníků: zemi, oblast, město a geografické koordináty (šířku\/délku).",
|
||||
"Region": "Region",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Nastavit automatické aktualizace GeoIP databází",
|
||||
"SubmenuLocations": "Umístění",
|
||||
"TestIPLocatorFailed": "Matomo se pokusil zjistit místění známé IP adresy %1$s, ale server odpověděl %2$s. Pokud by byl tento poskytovatel nastaven správně, odpověděl by %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Stažený soubor není platná GeoIP databáze. Zkontrolujte URL, nebo soubor stáhněte ručně.",
|
||||
"ToGeolocateOldVisits": "Pokud chcete získat data o umístění pro staré návštěvy, použijte skript popisovaný %1$szde%2$s.",
|
||||
"UnsupportedArchiveType": "Nalezen nepodporovaný typ archivu %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Aktualizátor nebyl nikdy spuštěn.",
|
||||
"UpdaterIsNotScheduledToRun": "Není plánováno, že v budoucnu poběží.",
|
||||
"UpdaterScheduledForNextRun": "Je plánováno, že poběží při příštím provedení cron příkazu core:archive.",
|
||||
"UpdaterWasLastRun": "Aktualizátor byl naposledy spuštěn v %s.",
|
||||
"UpdaterWillRunNext": "Další spuštění je naplánováno na %s.",
|
||||
"WidgetLocation": "Umístění návštěvníka"
|
||||
}
|
||||
}
|
98
msd2/tracking/piwik/plugins/UserCountry/lang/da.json
Normal file
98
msd2/tracking/piwik/plugins/UserCountry/lang/da.json
Normal file
@ -0,0 +1,98 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Kan ikke finde apache_get_modules funktion, antager ikke-Apache webserver.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Kan ikke finde %1$s filen i tar-arkivet %2$s!",
|
||||
"CannotFindGeoIPServerVar": "%s variablen er ikke sat. Din server er måske ikke konfigureret korrekt.",
|
||||
"CannotFindPeclGeoIPDb": "Kunne ikke finde en land, region eller by database for GeoIP PECL modulet. Sørg for, at din GeoIP databasen er placeret i %1$s og hedder %2$s eller %3$s ellers kan PECL modulet ikke finde den.",
|
||||
"CannotListContent": "Kunne ikke vise indholdet af %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP-adressen %s er en lokal adresse uden geografisk tilknytning.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Det lader til, at GeoIP databaserne gemmes udenfor Matomo (der ikke er nogen databaser i 'misc' undermappe, men din GeoIP virker). Matomo kan ikke automatisk opdatere GeoIP databaser, hvis de er placeret uden for 'misc' mappen.",
|
||||
"CannotUnzipDatFile": "Kunne ikke udpakke dat fil i %1$s: %2$s",
|
||||
"City": "By",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Continents": "Kontinenter",
|
||||
"Country": "Land",
|
||||
"country_a1": "Anonym proxy",
|
||||
"country_a2": "Satellit udbyder",
|
||||
"country_cat": "Catalansk-talende samfund",
|
||||
"country_o1": "Andet land",
|
||||
"CurrentLocationIntro": "I følge denne tjeneste er din aktuelle lokation",
|
||||
"DefaultLocationProviderDesc1": "Standardlokationstjenesten gætter en besøgendes land baseret på det sprog de bruger.",
|
||||
"DefaultLocationProviderDesc2": "Dette er ikke særlig nøjagtigt, så %1$svi anbefaler at du installerer og bruger %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Du bruger standardlokaliseringstjenesten, hvilket betyder, at Matomo vil gætte på den besøgendes placering ud fra det sprog, de anvender. %1$sLæs dette%2$s for at se, hvordan du opsætter mere nøjagtig geolokalisering.",
|
||||
"DistinctCountries": "%s distinkte lande",
|
||||
"DownloadingDb": "Henter %s",
|
||||
"DownloadNewDatabasesEvery": "Opdater databaser hver",
|
||||
"FatalErrorDuringDownload": "Fatal fejl opstod under overførsel af filen. Der kan være noget galt med din internetforbindelse, med GeoIP databasen du har hentet eller Matomo. Prøv at hente og installere filen manuelt.",
|
||||
"FoundApacheModules": "Matomo fandt følgende Apache moduler",
|
||||
"FromDifferentCities": "forskellige byer",
|
||||
"GeoIPCannotFindMbstringExtension": "Kan ikke finde %1$s funktionen. Sørg for at %2$s udvidelsen er installeret og indlæst.",
|
||||
"GeoIPDatabases": "GeoIP databaser",
|
||||
"GeoIPDocumentationSuffix": "For at se data for rapporten, skal du opsætte GeoIP i Geolokaliseringsfanen. Den kommercielle %1$sMaxmind%2$s GeoIP-database er mere præcise end den gratis er. For at se hvor nøjagtig den er, skal du klikke %3$sher%4$s.",
|
||||
"GeoIPImplHasAccessTo": "GeoIP implementering har adgang til følgende typer af databaser",
|
||||
"GeoIPIncorrectDatabaseFormat": "Din GeoIP-database lader ikke til at have det korrekte format. Måske er den beskadiget. Vær sikker på du bruger den binære udgave og prøv evt. at erstatte den med en anden kopi.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Lokationstjenesten bruger en GeoIP-database og et PECL-modul til præcist og effektivt at bestemme lokationen på dine besøgende.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Der er ingen begrænsninger med denne tjeneste, så det er den vi anbefaler du bruger.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Denne lokationstjeneste er den mest simple at installere, da det ikke kræver konfiguration af serveren (ideel ved delt hosting!). Den bruger en GeoIP-database og MaxMinds PHP API til nøjagtigt at bestemme dine besøgendes placering.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Hvis hjemmesiden får en masse trafik, kan du opleve, at denne lokationstjeneste er for langsom. I så fald skal du installere %1$sPECL-udvidelsen%2$s eller et %3$sservermodul%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Lokasationstjenesten bruger det GeoIP-modul, der er installeret i din HTTP-server. Tjenesten er hurtig og præcis, men %1$skan kun bruges med normal browser tracking.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Hvis du skal importere logfiler eller gøre noget andet, der kræver indstilling af IP-adresser, skal du bruge %1$sPECL GeoIP implementering (anbefales)%2$s eller %3$sPHP GeoIP implementering%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Bemærk: IP anonymisering har ingen effekt på de lokationer som rapporteres af denne tjeneste. Før du bruger den på IP anonymisering, så vær sikker på, at det ikke strider mod de gældende regler for privatliv.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolocation virker, men du bruger ikke en af de anbefalede udbydere.",
|
||||
"GeoIPNoServerVars": "Matomo kan ikke finde nogen GeoIP %s variable.",
|
||||
"GeoIPPeclCustomDirNotSet": "%s PHP ini indstillingen er ikke sat.",
|
||||
"GeoIPServerVarsFound": "Matomo registrerer følgende GeoIP %s variabler",
|
||||
"GeoIPUpdaterInstructions": "Indtast links til overførsel af databaserne nedenfor. Hvis du har købt databaser fra %3$sMaxMind%4$s, kan du finde links %1$sher%2$s. Kontakt %3$sMaxMind%4$s, hvis du har problemer med at åbne dem.",
|
||||
"GeoIPUpdaterIntro": "Matomo styrer opdateringen af følgende GeoIP databaser",
|
||||
"GeoLiteCityLink": "Hvis du bruger GeoLite by database, brug dette link: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolokation",
|
||||
"GeolocationPageDesc": "På denne side kan du ændre hvordan Matomo bestemmer de besøgendes lokation.",
|
||||
"getCityDocumentation": "Denne rapport viser hvilke byer dine besøgende var i da de besøgte dhjemmesiden.",
|
||||
"getContinentDocumentation": "Denne rapport viser hvilke kontinenter dine besøgende var i da de besøgte hjemmesiden.",
|
||||
"getCountryDocumentation": "Denne rapport viser hvilke lande dine besøgende var i da de besøgte hjemmesiden.",
|
||||
"getRegionDocumentation": "Denne rapport viser hvilke regioner dine besøgende var i da de besøgte hjemmesiden.",
|
||||
"HowToInstallApacheModule": "Hvordan installerer jeg GeoIP-modulet til Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Hvordan får jeg fat i GeoIP databaserne?",
|
||||
"HowToInstallGeoIpPecl": "Hvordan installerer jeg GeoIP-udvidelsen til PECL?",
|
||||
"HowToInstallNginxModule": "Hvordan installerer jeg GeoIP-modulet til Nginx?",
|
||||
"HowToSetupGeoIP": "Sådan opsættes nøjagtigt geolokation med GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sHent%2$s GeoLite City databasen fra %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Udpak filen og kopiere resultatet, %1$s til %2$smisc%3$s Matomo undermappen (du kan gøre dette enten ved FTP eller SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Genindlæs denne skærm. %1$sGeoIP (PHP)%2$s tjenesten vil nu blive %3$sinstalleret%4$s. Vælg den.",
|
||||
"HowToSetupGeoIP_Step4": "Og du er færdig! Du har lige sat Matomo op til at bruge GeoIP, hvilket betyder, at du vil være i stand til at se de regioner og byer de besøgende kom fra, sammen med meget nøjagtig lande information.",
|
||||
"HowToSetupGeoIPIntro": "Det lader ikke til at du har geolokalisering til at være nøjagtig. Det er en nyttig funktion, og uden den vil du ikke se nøjagtige og fuldstændige lokaliseringsoplysninger om dine besøgende. Sådan kan du hurtigt begynde at bruge det:",
|
||||
"HttpServerModule": "HTTP servermodul",
|
||||
"InvalidGeoIPUpdatePeriod": "Ugyldig periode for GeoIP opdateringen: %1$s. Gyldige værdier er %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Jeg har købt en %1$smere nøjagtig database fra Maxmind%2$s og ønsker at opsætte automatiske opdateringer.",
|
||||
"ISPDatabase": "Internetudbyder (ISP) database",
|
||||
"IWantToDownloadFreeGeoIP": "Jeg vil hente den gratis GeoIP database...",
|
||||
"Latitude": "Breddegrad",
|
||||
"Location": "Sted",
|
||||
"LocationDatabase": "Lokationsdatabase",
|
||||
"LocationDatabaseHint": "En lokationsdatabase er enten en land-, region- eller by-database.",
|
||||
"LocationProvider": "Lokationstjeneste",
|
||||
"Longitude": "Længdegrad",
|
||||
"NoDataForGeoIPReport1": "Der er ingen data for rapporten, fordi der enten ikke er lokaliseringsdata til rådighed, eller besøgendes IP-adresser ikke kan geografisk placeres.",
|
||||
"NoDataForGeoIPReport2": "For at aktivere nøjagtig geolokalisering skal indstillingerne ændres %1$sher%2$s og bruge en %3$sbyniveaudatabase%4$s.",
|
||||
"Organization": "Organisation",
|
||||
"OrgDatabase": "Organisationsdatabase",
|
||||
"PeclGeoIPNoDBDir": "PECL-modulet søger efter databaser i %1$s, men denne mappe eksisterer ikke. Opret mappen og tilføj GeoIP databasen. Alternativt kan du indstille %2$s til den rigtige mappe i din php.ini fil.",
|
||||
"PeclGeoLiteError": "GeoIP database i %1$s hedder %2$s. Desværre kan PECL modulet ikke genkende den med dette navn. Omdøb den til %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo styrer pt. ikke nogle GeoIP databaser.",
|
||||
"PluginDescription": "Rapporter placeringen af besøgende: land, region, by og geografiske koordinater (længde\/bredde).",
|
||||
"Region": "Region",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Konfigurer automatiske opdateringer af GeoIP databaser",
|
||||
"SubmenuLocations": "Steder",
|
||||
"TestIPLocatorFailed": "Matomo forsøgte kontrollere placeringen af en kendt IP-adresse (%1$s), men serveren returnerede %2$s. Hvis denne udbyder blev konfigureret korrekt, vil den tilbage %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Den hentede fil er ikke en gyldig GeoIP database. Kontrollere URL igen eller hent filen manuelt.",
|
||||
"ToGeolocateOldVisits": "For at få lokaliseringsdata for gamle besøg, brug scriptet beskrevet %1$sher%2$s.",
|
||||
"UnsupportedArchiveType": "Ikke understøttet arkivtype %1$s fundet.",
|
||||
"UpdaterHasNotBeenRun": "Opdateringsprogrammet har aldrig været kørt.",
|
||||
"UpdaterIsNotScheduledToRun": "Det er ikke planlagt til at køre i fremtiden.",
|
||||
"UpdaterScheduledForNextRun": "Planlagt til at køre i løbet af den næste archive.php cron udførelse.",
|
||||
"UpdaterWasLastRun": "Opdateringen blev sidst blev kørt den %s.",
|
||||
"UpdaterWillRunNext": "Næste planlagte kørsel %s.",
|
||||
"WidgetLocation": "Besøgendes lokation"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/de.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/de.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Die apache_get_modules Funktion wurde nicht gefunden. Es wird daher von einem Nicht-Apache Webserver ausgegangen.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Die Datei %1$s konnte im TAR-Archiv %2$s nicht gefunden werden!",
|
||||
"CannotFindGeoIPServerVar": "Die %s Variable ist nicht gesetzt. Ihr Server ist möglicherweise nicht korrekt konfiguriert.",
|
||||
"CannotFindPeclGeoIPDb": "Es konnten keine Länder, Regionen oder Städte Datenbank für das GeoIP PECL Modul gefunden werden. Stellen Sie sicher, dass sich die GeoIP Datenbank im Ordner %1$s befindet und den Dateinamen %2$s oder %3$s trägt. Andernfalls wird diese vom PECL Modul nicht erkannt.",
|
||||
"CannotListContent": "Kann keinen Inhalt auflisten für %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "Die IP-Adresse %s ist eine lokale Adresse. Der Standort kann daher nicht ermittelt werden.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Ihre GeoIP Datenbanken scheinen außerhalb von Matomo gespeichert zu sein (es konnten keine Datenbanken innerhalb des 'misc'-Unterordners gefunden werden, dennoch funktioniert die Standorterkennung). Matomo kann in diesem Fall keine automatischen Aktualisierungen vornehmen.",
|
||||
"CannotUnzipDatFile": "Konnte dat-Datei in %1$s nicht entpacken: %2$s",
|
||||
"City": "Stadt",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Continents": "Kontinente",
|
||||
"Country": "Land",
|
||||
"country_a1": "Anonymer Proxy",
|
||||
"country_a2": "Satelliten-Anbieter",
|
||||
"country_cat": "Katalanisch sprechende Gemeinden",
|
||||
"country_o1": "Anderes Land",
|
||||
"VisitLocation": "Besuchsort",
|
||||
"CurrentLocationIntro": "Gemäß diesem Provider ist Ihr derzeitiger Standort",
|
||||
"DefaultLocationProviderDesc1": "Die voreingestellte Standorterkennung versucht das Herkunftsland des Besuchers anhand dessen verwendeter Sprache zu erkennen.",
|
||||
"DefaultLocationProviderDesc2": "Dies ist nicht sehr genau, daher %1$swird empfohlen %2$sGeoIP%3$s zu installieren und zu nutzen.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Sie benutzen den standardmäßigen Standortanbieter. Das bedeutet, dass Matomo den Standort durch die Sprache des Besuchers erahnen wird. %1$sLesen sie dies%2$s, um zu erfahren, wie Sie eine genauere Standorterkennung einrichten.",
|
||||
"DistinctCountries": "%s unterschiedliche Länder",
|
||||
"DownloadingDb": "%s wird heruntergeladen",
|
||||
"DownloadNewDatabasesEvery": "Aktualisiere Datenbanken alle",
|
||||
"FatalErrorDuringDownload": "Ein fataler Fehler trat während dem Herunterladen der Datei auf. Es könnte ein Fehler mit Ihrer Internet Verbindung, der GeoIP Datenbank die Sie herunterladen wollten oder Matomo vorliegen. Führen Sie den Download und die Installation der Datei manuell durch.",
|
||||
"FoundApacheModules": "Matomo hat folgende Apache-Module erkannt",
|
||||
"FromDifferentCities": "Unterschiedliche Städte",
|
||||
"GeoIPCannotFindMbstringExtension": "Konnte die Funktion %1$s nicht finden. Bitte stellen Sie sicher, dass die %2$s Erweiterung installiert und geladen ist.",
|
||||
"GeoIPDatabases": "GeoIP Datenbanken",
|
||||
"GeoIPDocumentationSuffix": "Um Daten für diesen Bericht sehen zu können, müssen Sie GeoIP im Standorterkennung Administrations-Reiter konfigurieren. Die kommerziellen %1$sMaxmind%2$s GeoIP Datenbanken sind weit genauer als die kostenlosen. Um zu sehen, wie genau sie sind, klicken Sie %3$shier%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Die GeoIP Implementierung konnte keine Datenbank finden.",
|
||||
"GeoIPImplHasAccessTo": "Die GeoIP Implementierung hat Zugriff auf die folgenden Datenbanktypen",
|
||||
"GeoIPIncorrectDatabaseFormat": "Ihre GeoIP Datenbank scheint nicht das korrekte Format zu haben. Möglicherweise ist diese beschädigt. Stellen Sie sicher, dass Sie die binäre Version verwenden und versuchen Sie diese durch eine andere Kopie zu ersetzen.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Diese Standorterkennung verwendet eine GeoIP-Datenbank sowie ein PECL-Modul um den Standort der Besucher effizient und genau zu bestimmen.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Diese Art der Standortbestimmung hat keine Einschränkungen, daher wird empfohlen diese zu verwenden.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Diese Art der Standortbestimmung ist am einfachsten zu installieren, da Sie keine Serverkonfiguration benötigt (Ideal für Shared Hosting!). Sie verwendet eine GeoIP-Datenbank und die PHP-API von MaxMind um den Standort eines Besuchers genau zu bestimmen.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Falls Ihre Website viel Traffic hat, könnte Ihnen diese Standorterkennung zu langsam sein. In diesem Fall sollten Sie die %1$sPECL-Erweiterung%2$s oder ein %3$sServer-Modul%4$s installieren.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Diese Art der Standortbestimmung verwendet das GeoIP-Modul das auf ihrem HTTP-Server installiert ist. Diese ist am schnellsten und genauesten, aber %1$skann nur bei normalem Browser-Tracking benutzt werden%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Falls Sie Protokolldateien oder andere Dinge importieren, welche IP-Adressen enthalten, können Sie die %1$sPECL GeoIP Implementierung (empfohlen)%2$s oder die %3$sPHP GeoIP Implementierung%4$s wählen.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Hinweis: IP-Anonymisierung hat keinen Einfluss auf diese Art der Standortbestimmung. Stellen Sie sicher, dass die Benutzung mit IP-Anonymisierung nicht im Widerspruch zu Privatsphärebestimmungen steht, die für Sie gelten.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Standorterkennung funktioniert, aber Sie nutzen keinen der empfohlenen Anbieter.",
|
||||
"GeoIPNoServerVars": "Matomo konnte keine GeoIP %s Variablen finden.",
|
||||
"GeoIPPeclCustomDirNotSet": "Die php.ini Einstellung für %s ist nicht gesetzt.",
|
||||
"GeoIPServerVarsFound": "Matomo hat folgende GeoIP %s Variablen erkannt",
|
||||
"GeoIPUpdaterInstructions": "Bitte geben Sie unten die Downloadlinks für Ihre Datenbank an. Falls Sie Ihre Datenbank von %3$sMaxMind%4$s beziehen können Sie diese Links %1$shier%2$s finden. Falls Sie Probleme haben auf diese zuzugreifen, kontaktieren Sie bitte %3$sMaxMind%4$s.",
|
||||
"GeoIPUpdaterIntro": "Matomo verwaltet derzeit die Aktualisierungen für folgende GeoIP-Datenbanken",
|
||||
"GeoLiteCityLink": "Falls Sie die GeoLite Städte Datenbank verwenden, benutzen Sie diesen Link: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Standorterkennung",
|
||||
"GeolocationPageDesc": "Auf dieser Seite können Sie einstellen auf welche Weise Matomo die Herkunft eines Besuchers ermittelt.",
|
||||
"getCityDocumentation": "Dieser Bericht enthält die Städte, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
|
||||
"getContinentDocumentation": "Dieser Bericht enthält die Kontinente, auf denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
|
||||
"getCountryDocumentation": "Dieser Bericht enthält die Länder, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
|
||||
"getRegionDocumentation": "Dieser Bericht enthält die Regionen, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
|
||||
"HowToInstallApacheModule": "Wie wird das GeoIP-Modul für Apache installiert?",
|
||||
"HowToInstallGeoIPDatabases": "Woher bekommt man die GeoIP-Datenbanken?",
|
||||
"HowToInstallGeoIpPecl": "Wie wird die GeoIP PECL Erweiterung installiert?",
|
||||
"HowToInstallNginxModule": "Wie wird das GeoIP Modul für Nginx installiert?",
|
||||
"HowToSetupGeoIP": "Wie richtet man eine genaue Standorterkennung mit GeoIP ein",
|
||||
"HowToSetupGeoIP_Step1": "Die GeoLite Städte Datenbank von %3$sMaxMind%4$s %1$sherunterladen%2$s.",
|
||||
"HowToSetupGeoIP_Step2": "Entpacken Sie die Datei und kopieren den Inhalt %1$s in das %2$smisc%3$s Matomo Unterverzeichnis (dies ist z.B. mit FTP oder SSH möglich).",
|
||||
"HowToSetupGeoIP_Step3": "Laden Sie diese Ansicht neu. Der %1$sGeoIP (PHP)%2$s Provider wird nun %3$sinstalliert%4$s. Wählen Sie ihn aus.",
|
||||
"HowToSetupGeoIP_Step4": "Und fertig! Sie haben gerade Matomo konfiguriert GeoIP zu verwenden. Dies bedeutet, dass Sie nun in der Lage sind die Regionen und Städte zusammen mit einer sehr genauen Angabe der Länder ihrer Besucher zu sehen.",
|
||||
"HowToSetupGeoIPIntro": "Anscheinend wurde die Standorterkennung noch nicht vollständig konfiguriert. Dies ist ein nützliches Feature und ohne es ist es nicht möglich, komplett vollständige und umfangreiche Informationen über die Besucher zu erhalten. Nachfolgend alle Informationen, um schnell damit zu beginnen:",
|
||||
"HttpServerModule": "HTTP-Server-Modul",
|
||||
"InvalidGeoIPUpdatePeriod": "Ungültiger Zeitraum für die GeoIP-Aktualisierung: %1$s. Gültige Werte sind %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Ich habe %1$sgenauere Datenbanken von MaxMind%2$s erworben und möchte automatische Aktualisierungen einrichten.",
|
||||
"ISPDatabase": "Internet Anbieter Datenbank",
|
||||
"IWantToDownloadFreeGeoIP": "Ich möchte die kostenlose GeoIP Datenbank herunterladen...",
|
||||
"Latitude": "Breitengrad",
|
||||
"Latitudes": "Breitengrade",
|
||||
"Location": "Ort",
|
||||
"LocationDatabase": "Standortdatenbank",
|
||||
"LocationDatabaseHint": "Eine Standortdatenbank ist entweder eine Datenbank mit Ländern, Regionen oder Städten",
|
||||
"LocationProvider": "Standorterkennungsdienst",
|
||||
"Longitude": "Längengrad",
|
||||
"Longitudes": "Längengrade",
|
||||
"NoDataForGeoIPReport1": "Es sind keine Daten für diesen Bericht vorhanden, da entweder keine Lokalisierungsdaten vorhanden sind oder die Besucher IP-Adresse nicht geortet werden kann.",
|
||||
"NoDataForGeoIPReport2": "Um die vollständige Standorterkennung zu aktivieren, ändern Sie bitte %1$shier%2$s die Einstellungen und benutzen eine %3$sStädtebasierte Datenbank%4$s.",
|
||||
"Organization": "Organisation",
|
||||
"OrgDatabase": "Organisationsdatenbank",
|
||||
"PeclGeoIPNoDBDir": "Das PECL Modul hat im Verzeichnis %1$s keine Datenbank gefunden. Bitte erstellen Sie das Verzeichnis und fügen die GeoIP Datenbanken hinzu. Alternativ ist es möglich %2$s auf das richtige Verzeichnis in der php.ini zu konfigurieren.",
|
||||
"PeclGeoLiteError": "Ihre GeoIP Datenbank in %1$s lautet %2$s. Allerdings kann das PECL Modul die Datenbank mit diesem Namen nicht erkennen. Bitte benennen Sie sie um in %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo verwaltet derzeit keine GeoIP Datenbanken.",
|
||||
"PluginDescription": "Bericht über den Standort Ihrer Besucher: Land, Region, Stadt und geographische Koordinaten (geographische Breite und geographische Länge).",
|
||||
"Region": "Region",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Automatische Aktualisierungen für GeoIP Datenbanken einrichten",
|
||||
"SubmenuLocations": "Orte",
|
||||
"TestIPLocatorFailed": "Matomo hat die Überprüfung einer bekannten IP-Adresse (%1$s) durchgeführt, aber Ihr Server hat %2$s zurückgegeben. Bei einer korrekten Konfiguration sollte allerdings %3$s zurückgegeben werden.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Die heruntergeladene Datei ist keine gültige GeoIP Datenbank. Bitte überprüfen Sie die URL oder laden Sie die Datei manuell herunter.",
|
||||
"ToGeolocateOldVisits": "Für Standortdaten für vergangene Besuche verwenden Sie bitte das %1$shier beschriebene Skript%2$s.",
|
||||
"UnsupportedArchiveType": "Nicht unterstützter Archivtyp erkannt: %1$s",
|
||||
"UpdaterHasNotBeenRun": "Es hat noch keine Aktualisierung stattgefunden.",
|
||||
"UpdaterIsNotScheduledToRun": "Keine zukünftige Ausführung geplant.",
|
||||
"UpdaterScheduledForNextRun": "Ausführung für den nächsten archive.php cron Durchlauf geplant.",
|
||||
"UpdaterWasLastRun": "Die Aktualisierung wurde zuletzt ausgeführt am %s.",
|
||||
"UpdaterWillRunNext": "Nächste Ausführung geplant für %s.",
|
||||
"WidgetLocation": "Besucherstandort"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/el.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/el.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Αδύνατη η εύρεση της συνάρτησης apache_get_modules, υποθέτουμε ότι ο διακομιστής δεν είναι Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Αδύνατη η εύρεση του αρχείου %1$s στο συμπιεσμένο tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Η μεταβλητή %s δεν έχει οριστεί. Ο διακομιστής σας μπορεί να μην έχει ρυθμιστεί σωστά.",
|
||||
"CannotFindPeclGeoIPDb": "Δεν ήταν δυνατή η εύρεση μιας βάσης δεδομένων της χώρας, περιοχής ή πόλης για το πρόσθετο GeoIP PECL. Βεβαιωθείτε ότι GeoIP βάση δεδομένων σας βρίσκεται στο %1$s και έχει πάρει το όνομα %2$s ή %3$s αλλιώς το πρόσθετο PECL δεν θα το προσέξει.",
|
||||
"CannotListContent": "Αδύνατη η δημιουργία λίστας του περιεχομένου για %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "Η IP διεύθυνση %s είναι μια τοπική διεύθυνση και δεν μπορεί να προσδιοριστεί γεωγραφικά.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Φαίνεται να αποθηκεύετε τις GeoIP βάσεις δεδομένων σας έξω από το Matomo (αφού δεν υπάρχουν βάσεις δεδομένων στο misc υποκατάλογο, αλλά το GeoIP λειτουργεί). Το Matomo δεν μπορεί να ενημερώσει αυτόματα τις GeoIP βάσεις δεδομένων σας αν βρίσκονται έξω από τον κατάλογο misc.",
|
||||
"CannotUnzipDatFile": "Αδύνατη η αποσυμπίεση αρχείου dat στο %1$s: %2$s",
|
||||
"City": "Πόλη",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Ήπειρος",
|
||||
"Continents": "Ήπειροι",
|
||||
"Country": "Χώρα",
|
||||
"country_a1": "Ανώνυμος Διακομιστής",
|
||||
"country_a2": "Πάροχος δορυφόρου",
|
||||
"country_cat": "Καταλανικόφωνες κοινότητες",
|
||||
"country_o1": "Άλλη Χώρα",
|
||||
"VisitLocation": "Τοποθεσία επίσκεψης",
|
||||
"CurrentLocationIntro": "Σύμφωνα με τον πάροχο, η τρέχουσα τοποθεσία σας είναι",
|
||||
"DefaultLocationProviderDesc1": "Ο προεπιλεγμένος πάροχος θέσης εικάζει τη χώρα του επισκέπτη με βάση τη γλώσσα που χρησιμοποιεί.",
|
||||
"DefaultLocationProviderDesc2": "Αυτό δεν είναι πολύ ακριβές, έτσι %1$sπροτείνουμε την εγκατάσταση και τη χρήση %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Χρησιμοποιείτε τον προκαθορισμένο πάροχο τοποθεσίας, που σημαίνει ότι το Matomo θα μαντεύει την τοποθεσία του επισκέπτη βάσει της γλώσσας που χρησιμοποιεί. %1$sΔιαβάστε αυτό%2$s για να μάθετε πως να ορίζετε πιο ακριβή μέθοδο γεωτοποθεσίας.",
|
||||
"DistinctCountries": "%s διακεκριμένες χώρες",
|
||||
"DownloadingDb": "Λήψη %s",
|
||||
"DownloadNewDatabasesEvery": "Ενημέρωση βάσεων δεδομένων κάθε",
|
||||
"FatalErrorDuringDownload": "Παρουσιάστηκε ανεπανόρθωτο σφάλμα κατά τη λήψη αυτού του αρχείου. Μπορεί να υπάρχει κάτι λανθασμένο με σύνδεση σας στο διαδίκτυο, με τη βάση δεδομένων GeoIP που έχετε κατεβάσει ή με το Matomo. Προσπαθήστε να κάνετε λήψη και να το εγκαταστήσετε με χειροκίνητο τρόπο.",
|
||||
"FoundApacheModules": "Το Matomo βρήκε τα ακόλουθα πρόσθετα Apache",
|
||||
"FromDifferentCities": "διαφορετικές πόλεις",
|
||||
"GeoIPCannotFindMbstringExtension": "Δεν μπορείτε να βρείτε τη λειτουργία του %1$s. Παρακαλώ βεβαιωθείτε ότι η επέκταση %2$s είναι εγκατεστημένη και έχει φορτωθεί.",
|
||||
"GeoIPDatabases": "Βάσεις δεδομένων GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Για για να δείτε τα δεδομένα για αυτή την αναφορά, θα πρέπει να ρυθμίσετε το GeoIP στην καρτέλα διαχειριστή Geolocation. Οι εμπορικές %1$sMaxmind%2$s βάσεις δεδομένων GeoIP είναι πιο ακριβείς από τις ελεύθερες. Για να δείτε πόσο ακριβείς είναι, κάντε κλικ στο %3$shere%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Η υλοποίηση της GeoIP δεν μπόρεσε να βρει κάποια βάση δεδομένων.",
|
||||
"GeoIPImplHasAccessTo": "Αυτή η υλοποίηση GeoIP έχει πρόσβαση στους ακόλουθους τύπους βάσεων δεδομένων",
|
||||
"GeoIPIncorrectDatabaseFormat": "Η βάση δεδομένων της γεωτοποθεσίας σας φαίνεται να είναι σε λάθος μορφή. Ενδέχεται να έχει αλλοιωθεί. Βεβαιωθείτε ότι χρησιμοποιείτε τη διαδική μορφή και δοκιμάστε να την ξανααντιγράψετε από πάνω με ένα άλλο αντίγραφο.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Αυτός ο παροχέας τοποθεσιών χρησιμοποιεί μια βάση δεδομένων GeoIP και μια λειτουργική μονάδα PECL για να καθορίσει με ακρίβεια και αποτελεσματικά τη θέση των επισκεπτών σας.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Δεν υπάρχουν περιορισμοί με αυτό τον Πάροχο, έτσι είναι αυτός που σας συνιστούμε να χρησιμοποιήσετε.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Αυτός ο παροχέας τοποθεσιών είναι ο πιο απλός στην εγκατάσταση και δεν απαιτεί τη διαμόρφωση του διακομιστή (ιδανικό για shared hosting!). Χρησιμοποιεί μια GeoIP βάση δεδομένων και το PHP API του MaxMind για να καθορίσει με ακρίβεια τη θέση των επισκεπτών σας.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Εάν η ιστοσελίδα σας έχει πολλή κίνηση, μπορείτε να διαπιστώσετε ότι αυτός ο Πάροχος τοποθεσιών είναι πολύ αργός. Σε αυτή την περίπτωση, θα πρέπει να εγκαταστήσετε την %1$sεπέκταση PECL%2$s ή ένα %3$sπρόσθετο στον διακομιστή σας%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Αυτός ο πάροχος χρησιμοποιεί τη λειτουργία τοποθεσιών GeoIP που έχει εγκατασταθεί στον HTTP διακομιστή σας. Αυτός ο πάροχος είναι γρήγορος και ακριβής, αλλά %1$sμπορεί να χρησιμοποιηθεί μόνο με την κανονική παρακολούθηση του προγράμματος περιήγησης.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Αν έχετε να εισάγετε αρχεία καταγραφής ή να κάνετε κάτι άλλο που απαιτεί τον καθορισμό διευθύνσεων IP, χρησιμοποιήστε την %1$sPECL υλοποίηση του GeoIP (συνιστάται)%2$s ή την %3$sPHP υλοποίηση του GeoIP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Σημείωση: Η ανωνυμοποίηση IP διευθύνσεων δεν έχει καμία επίδραση στις τοποθεσίες που αναφέρονται από αυτόν τον πάροχο. Πριν το χρησιμοποιήσετε μαζί με την ανωνυμοποίηση IP, βεβαιωθείτε ότι αυτό δεν παραβιάζει κανένα νόμο περί προσωπικών δεδομένων που ενδέχεται να ισχύει στη χώρα σας.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Η Γεωτοποθεσία δουλεύει, αλλά δεν χρησιμοποιείτε κάποιον από τους προτεινόμενους παρόχους.",
|
||||
"GeoIPNoServerVars": "Το Matomo δεν μπορεί να βρει καμιά μεταβλητή %s GeoIP.",
|
||||
"GeoIPPeclCustomDirNotSet": "Η ρύθμιση ini %s της PHP δεν έχει οριστεί.",
|
||||
"GeoIPServerVarsFound": "Το Matomo ανίχνευσε τις ακόλουθες μεταβλητές GeoIP %s",
|
||||
"GeoIPUpdaterInstructions": "Εισάγετε παρακάτω τους συνδέσμους λήψης για τις βάσεις δεδομένων σας. Αν έχετε αγοράσει βάσεις δεδομένων από την %3$sMaxMind%4$s, μπορείτε να βρείτε αυτές τις συνδέσεις %1$sεδώ%2$s. Παρακαλούμε επικοινωνήστε με την %3$sMaxMind%4$s, αν έχετε πρόβλημα με την πρόσβαση σας σε αυτές.",
|
||||
"GeoIPUpdaterIntro": "Το Matomo επί του παρόντος διαχειρίζεται τις ενημερώσεις για τις ακόλουθες βάσεις δεδομένων GeoIP",
|
||||
"GeoLiteCityLink": "Αν χρησιμοποιείτε τη βάση δεδομένων Πόλεων της GeoLite, χρησιμοποιήστε τον παρακάτω σύνδεσμο: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Γεωτοποθεσία",
|
||||
"GeolocationPageDesc": "Σε αυτή τη σελίδα μπορείτε να αλλάξετε τον τρόπο που το Matomo καθορίζει τις τοποθεσίες των επισκεπτών.",
|
||||
"getCityDocumentation": "Η παρούσα αναφορά παρουσιάζει τις πόλεις στις οποίες οι επισκέπτες σας βρίσκονταν όταν επισκεύθηκαν την ιστοσελίδα σας.",
|
||||
"getContinentDocumentation": "Η παρούσα αναφορά δείχνει σε ποια ήπειρο βρίσκονταν οι επισκέπτες σας ήταν όταν επισκεύθηκαν την ιστοσελίδα σας.",
|
||||
"getCountryDocumentation": "Αυτή η αναφορά δείχνει σε ποιά χώρα ήταν οι επισκέπτες σας όταν επισκεύθηκαν την ιστοσελίδα σας.",
|
||||
"getRegionDocumentation": "Η παρούσα αναφορά δείχνει σε ποιά περιοχή ήταν οι επισκέπτες σας όταν επισκεύθηκαν την ιστοσελίδα σας.",
|
||||
"HowToInstallApacheModule": "Πως εγκαθιστώ την επέκταση GeoIP για τον Apache;",
|
||||
"HowToInstallGeoIPDatabases": "Πως παίρνω τις βάσεις δεδομένων GeoIP;",
|
||||
"HowToInstallGeoIpPecl": "Πως εγκαθιστώ την επέκταση PECL του GeoIP;",
|
||||
"HowToInstallNginxModule": "Πως εγκαθιστώ την επέκταση GeoIP για το Nginx;",
|
||||
"HowToSetupGeoIP": "Πως εγκαθιστώ ακριβή γεωτοποθέτηση με το GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sΛήψη%2$s της βάσης δεδομένων GeoLite City από το %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Αποσυμπιέστε το αρχείο και αντιγράψτε το αποτέλεσμα, %1$s μέσα στον υποκατάλογο %2$smisc%3$s του Matomo (μπορείτε να το κάνετε αυτό είτε με FTP είτε με SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Επαναφόρτωση της οθόνης. Ο πάροχος %1$sGeoIP (PHP)%2$s τώρα θα %3$sInstalled%4$s. Επιλέξτε τον.",
|
||||
"HowToSetupGeoIP_Step4": "Και είστε έτοιμοι! Μόλις εγκαταστήσατε το Matomo να χρησιμοποιεί GeoIP που σημαίνει ότι θα μπορείτε να βλέπετε τις περιοχές και τις πόλεις των επισκεπτών σας μαζί με αρκετά έγκυρη πληροφορία σχετικά με τις χώρες.",
|
||||
"HowToSetupGeoIPIntro": "Δεν φαίνεται να έχετε εγκατεστημένη τη Γεωτοποθεσία. Αποτελεί ένα χρήσιμο χαρακτηριστικό και χωρίς αυτό δε θα βλέπετε έγκυρες και πλήρης πληροφορίες για τις τοποθεσίες των επισκεπτών σας. Δείτε πως μπορείτε γρήγορα να αρχίσετε να τη χρησιμοποιείτε:",
|
||||
"HttpServerModule": "Επέκταση Διακομιστή HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Μη έγκυρη περίοδος για την ενημέρωση του GeoIP: %1$s. Έγκυρες τιμές είναι %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Αγόρασα περισσότερες %1$s ακριβείς βάσεις δεδομένων από το MaxMind%2$s και θέλω να εγκαταστήσω τις αυτόματες ενημερώσεις.",
|
||||
"ISPDatabase": "Βάση δεδομένων Παρόχων",
|
||||
"IWantToDownloadFreeGeoIP": "Θέλω να λάβω τη δωρεάν βάση δεδομένων GeoIP...",
|
||||
"Latitude": "Γεωγραφικό Πλάτος",
|
||||
"Latitudes": "Γεωγραφικά πλάτη",
|
||||
"Location": "Τοποθεσία",
|
||||
"LocationDatabase": "Βάση δεδομένων τοποθεσιών",
|
||||
"LocationDatabaseHint": "Μια βάση δεδομένων τοποθεσιών είναι μια βάση δεδομένων χωρών, περιοχών ή πόλεων.",
|
||||
"LocationProvider": "Πάροχος Τοποθεσίας",
|
||||
"Longitude": "Γεωγραφικό μήκος",
|
||||
"Longitudes": "Γεωγραφικά μήκη",
|
||||
"NoDataForGeoIPReport1": "Δεν υπάρχουν δεδομένα για αυτή την αναφορά επειδή είτε δεν υπάρχουν δεδομένα τοποθεσίας διαθέσιμα είτε επειδή για τις διευθύνσεις IP των επισκεπτών δεν ήταν δυνατός ο εντοπισμός της τοποθεσίας τους.",
|
||||
"NoDataForGeoIPReport2": "Για να ενεργοποιήστε ακριβή Γεωτοποθεσία, αλλάξτε τις ρυθμίσεις %1$sεδώ%2$s και χρησιμοποιήστε μια %3$sβάση δεδομένων πόλεων%4$s.",
|
||||
"Organization": "Οργανισμός",
|
||||
"OrgDatabase": "Βάση δεδομένων Οργανισμών",
|
||||
"PeclGeoIPNoDBDir": "Η μονάδα PECL ψάχνει για βάσεις δεδομένων στο %1$s, αλλά αυτός ο κατάλογος δεν υπάρχει. Παρακαλούμε δημιουργήστε τον και προσθέστε τις GeoIP βάσεις δεδομένων μέσα. Εναλλακτικά, μπορείτε να ορίσετε το %2$s στο σωστό κατάλογο στο αρχείο σας php.ini.",
|
||||
"PeclGeoLiteError": "Η βάση δεδομένων σας με γεωτοποθεσία στο %1$s ονομάζεται %2$s. Δυστυχώς, η μονάδα PECL δε θα την αναγνωρίσει με αυτό το όνομα. Παρακαλούμε μετονομάστε την σε %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Το Matomo δεν διαχειρίζεται κάποια βάση δεδομένων GeoIP.",
|
||||
"PluginDescription": "Αναφέρει τον τοποθεσία των επισκεπτών σας: χώρα, περιοχή, πόλη και γεωγραφικές συντεταγμένες (πλάτος\/μήκος).",
|
||||
"Region": "Περιοχή",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Εγκατάσταση αυτόματων ενημερώσεων των βάσεων δεδομένων GeoIP",
|
||||
"SubmenuLocations": "Τοποθεσίες",
|
||||
"TestIPLocatorFailed": "Το Matomo προσπάθησε να ελέγξει την τοποθεσία μιας γνωστής διεύθυνσης IP (%1$s), αλλά ο διακομιστής σας επέστρεψε %2$s. Αν ο πάροχος είχε ρυθμιστεί σωστά, θα επέστρεφε %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Το κατεβασμένο αρχείο δεν είναι έγκυρη βάση δεδομένων με Γεωτοποθεσία. Παρακαλούμε διπλοελέγξτε τη διεύθυνση URL ή κατεβάστε το αρχείο χειροκίνητα.",
|
||||
"ToGeolocateOldVisits": "Για να κάνετε λήψη των δεδομένων γεωτοποθεσίας από τις παλιές σας επισκέψεις, χρησιμοποιήστε το σενάριο που περιγράφεται %1$sεδώ%2$s.",
|
||||
"UnsupportedArchiveType": "Παρουσιάστηκε μη υποστηριζόμενος τύπος συμπιεσμένου αρχείου %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Το πρόγραμμα ενημέρωσης δεν εκτελέστηκε ποτέ.",
|
||||
"UpdaterIsNotScheduledToRun": "Δεν είναι προγραμματισμένο να εκτελεστεί στο μέλλον.",
|
||||
"UpdaterScheduledForNextRun": "Είναι προγραμματισμένο για εκτέλεση κατά την εκτέλεση του επόμενου archive.php από το cron.",
|
||||
"UpdaterWasLastRun": "Το πρόγραμμα ενημέρωσης εκτελέστηκε τελευταία στις %s.",
|
||||
"UpdaterWillRunNext": "Είναι προγραμματισμένο για εκτέλεση στις %s.",
|
||||
"WidgetLocation": "Τοποθεσία Επισκέπτη"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/en.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/en.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Cannot find apache_get_modules function, assuming non-Apache webserver.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Cannot find %1$s file in tar archive %2$s!",
|
||||
"CannotFindGeoIPServerVar": "The %s variable is not set. Your server may not be configured correctly.",
|
||||
"CannotFindPeclGeoIPDb": "Could not find a country, region or city database for the GeoIP PECL module. Make sure your GeoIP database is located in %1$s and is named %2$s or %3$s otherwise the PECL module will not notice it.",
|
||||
"CannotListContent": "Couldn't list content for %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP address %s is a local address and cannot be geolocated.",
|
||||
"CannotSetupGeoIPAutoUpdating": "It seems like you're storing your GeoIP databases outside of Matomo (we can tell since there are no databases in the misc subdirectory, but your GeoIP is working). Matomo cannot automatically update your GeoIP databases if they are located outside of the misc directory.",
|
||||
"CannotUnzipDatFile": "Could not unzip dat file in %1$s: %2$s",
|
||||
"City": "City",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continent",
|
||||
"Continents": "Continents",
|
||||
"Country": "Country",
|
||||
"country_a1": "Anonymous Proxy",
|
||||
"country_a2": "Satellite Provider",
|
||||
"country_cat": "Catalan-speaking communities",
|
||||
"country_o1": "Other Country",
|
||||
"VisitLocation": "Visit Location",
|
||||
"CurrentLocationIntro": "According to this provider, your current location is",
|
||||
"DefaultLocationProviderDesc1": "The default location provider guesses a visitor's country based on the language they use.",
|
||||
"DefaultLocationProviderDesc2": "This is not very accurate, so %1$swe recommend installing and using %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "You are using the default location provider, which means Matomo will guess the visitor's location based on the language they use. %1$sRead this%2$s to learn how to setup more accurate geolocation.",
|
||||
"DistinctCountries": "%s distinct countries",
|
||||
"DownloadingDb": "Downloading %s",
|
||||
"DownloadNewDatabasesEvery": "Update databases every",
|
||||
"FatalErrorDuringDownload": "A fatal error occurred while downloading this file. There might be something wrong with your internet connection, with the GeoIP database you downloaded or Matomo. Try downloading and installing it manually.",
|
||||
"FoundApacheModules": "Matomo found the following Apache modules",
|
||||
"FromDifferentCities": "different cities",
|
||||
"GeoIPCannotFindMbstringExtension": "Cannot find the %1$s function. Please make sure the %2$s extension is installed and loaded.",
|
||||
"GeoIPDatabases": "GeoIP Databases",
|
||||
"GeoIPDocumentationSuffix": "In order to see data for this report, you must setup GeoIP in the Geolocation admin tab. The commercial %1$sMaxmind%2$s GeoIP databases are more accurate than the free ones. To see how accurate they are, click %3$shere%4$s.",
|
||||
"GeoIPNoDatabaseFound": "This GeoIP implementation was not able to find any database.",
|
||||
"GeoIPImplHasAccessTo": "This GeoIP implementation has access to the following types of databases",
|
||||
"GeoIPIncorrectDatabaseFormat": "Your GeoIP database does not seem to have the correct format. It may be corrupt. Make sure you are using the binary version and try replacing it with another copy.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "This location provider uses a GeoIP database and a PECL module to accurately and efficiently determine the location of your visitors.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "There are no limitations with this provider, so it is the one we recommend using.",
|
||||
"GeoIpLocationProviderDesc_Php1": "This location provider is the most simple to install as it does not require server configuration (ideal for shared hosting!). It uses a GeoIP database and MaxMind's PHP API to accurately determine the location of your visitors.",
|
||||
"GeoIpLocationProviderDesc_Php2": "If your website gets a lot of traffic, you may find that this location provider is too slow. In this case, you should install the %1$sPECL extension%2$s or a %3$sserver module%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "This location provider uses the GeoIP module that has been installed in your HTTP server. This provider is fast and accurate, but %1$scan only be used with normal browser tracking.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "If you have to import log files or do something else that requires setting IP addresses, use the %1$sPECL GeoIP implementation (recommended)%2$s or the %3$sPHP GeoIP implementation%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Note: IP anonymization has no effect on the locations reported by this provider. Before using it with IP anonymization, make sure this does not violate any privacy laws you may be subject to.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolocation works, but you are not using one of the recommended providers.",
|
||||
"GeoIPNoServerVars": "Matomo cannot find any GeoIP %s variables.",
|
||||
"GeoIPPeclCustomDirNotSet": "The %s PHP ini option is not set.",
|
||||
"GeoIPServerVarsFound": "Matomo detects the following GeoIP %s variables",
|
||||
"GeoIPUpdaterInstructions": "Enter the download links for your databases below. If you've purchased databases from %3$sMaxMind%4$s, you can find these links %1$shere%2$s. Please contact %3$sMaxMind%4$s if you have trouble accessing them.",
|
||||
"GeoIPUpdaterIntro": "Matomo is currently managing updates for the following GeoIP databases",
|
||||
"GeoLiteCityLink": "If you're using the GeoLite City database, use this link: %1$s%2$s%3$s",
|
||||
"Geolocation": "Geolocation",
|
||||
"GeolocationPageDesc": "On this page you can change how Matomo determines visitor locations.",
|
||||
"getCityDocumentation": "This report shows the cities your visitors were in when they accessed your website.",
|
||||
"getContinentDocumentation": "This report shows which continent your visitors were in when they accessed your website.",
|
||||
"getCountryDocumentation": "This report shows which country your visitors were in when they accessed your website.",
|
||||
"getRegionDocumentation": "This report shows which region your visitors were in when they accessed your website.",
|
||||
"HowToInstallApacheModule": "How do I install the GeoIP module for Apache?",
|
||||
"HowToInstallGeoIPDatabases": "How do I get the GeoIP databases?",
|
||||
"HowToInstallGeoIpPecl": "How do I install the GeoIP PECL extension?",
|
||||
"HowToInstallNginxModule": "How do I install the GeoIP module for Nginx?",
|
||||
"HowToSetupGeoIP": "How to setup accurate geolocation with GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sDownload%2$s the GeoLite City database from %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extract this file and copy the result, %1$s into the %2$smisc%3$s Matomo subdirectory (you can do this either by FTP or SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Reload this screen. The %1$sGeoIP (PHP)%2$s provider will now be %3$sInstalled%4$s. Select it.",
|
||||
"HowToSetupGeoIP_Step4": "And you're done! You've just setup Matomo to use GeoIP which means you'll be able to see the regions and cities of your visitors along with very accurate country information.",
|
||||
"HowToSetupGeoIPIntro": "You do not appear to have accurate Geolocation setup. This is a useful feature and without it you will not see accurate and complete location information for your visitors. Here's how you can quickly start using it:",
|
||||
"HttpServerModule": "HTTP Server Module",
|
||||
"InvalidGeoIPUpdatePeriod": "Invalid period for the GeoIP updater: %1$s. Valid values are %2$s.",
|
||||
"IPurchasedGeoIPDBs": "I purchased more %1$saccurate databases from MaxMind%2$s and want to setup automatic updates.",
|
||||
"ISPDatabase": "ISP Database",
|
||||
"IWantToDownloadFreeGeoIP": "I want to download the free GeoIP database...",
|
||||
"Latitude": "Latitude",
|
||||
"Latitudes": "Latitudes",
|
||||
"Location": "Location",
|
||||
"LocationDatabase": "Location Database",
|
||||
"LocationDatabaseHint": "A location database is either a country, region or city database.",
|
||||
"LocationProvider": "Location Provider",
|
||||
"Longitude": "Longitude",
|
||||
"Longitudes": "Longitudes",
|
||||
"NoDataForGeoIPReport1": "There is no data for this report because there is either no location data available or visitor IP addresses cannot be geolocated.",
|
||||
"NoDataForGeoIPReport2": "To enable accurate geolocation, change the settings %1$shere%2$s and use a %3$scity level database%4$s.",
|
||||
"Organization": "Organization",
|
||||
"OrgDatabase": "Organization Database",
|
||||
"PeclGeoIPNoDBDir": "The PECL module is looking for databases in %1$s, but this directory does not exist. Please create it and add the GeoIP databases to it. Alternatively, you can set %2$s to the correct directory in your php.ini file.",
|
||||
"PeclGeoLiteError": "Your GeoIP database in %1$s is named %2$s. Unfortunately, the PECL module will not recognize it with this name. Please rename it to %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo is not currently managing any GeoIP databases.",
|
||||
"PluginDescription": "Reports the location of your visitors: country, region, city and geographic coordinates (latitude\/longitude).",
|
||||
"Region": "Region",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Setup automatic updates of GeoIP databases",
|
||||
"SubmenuLocations": "Locations",
|
||||
"TestIPLocatorFailed": "Matomo tried checking the location of a known IP address (%1$s), but your server returned %2$s. If this provider were configured correctly, it would return %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "The downloaded file is not a valid GeoIP database. Please re-check the URL or download the file manually.",
|
||||
"ToGeolocateOldVisits": "To get location data for your old visits, use the script described %1$shere%2$s.",
|
||||
"UnsupportedArchiveType": "Encountered unsupported archive type %1$s.",
|
||||
"UpdaterHasNotBeenRun": "The updater has never been run.",
|
||||
"UpdaterIsNotScheduledToRun": "It is not scheduled to run in the future.",
|
||||
"UpdaterScheduledForNextRun": "It is scheduled to run during the next cron core:archive command execution.",
|
||||
"UpdaterWasLastRun": "The updater was last run on %s.",
|
||||
"UpdaterWillRunNext": "It is next scheduled to run on %s.",
|
||||
"WidgetLocation": "Visitor Location"
|
||||
}
|
||||
}
|
84
msd2/tracking/piwik/plugins/UserCountry/lang/es-ar.json
Normal file
84
msd2/tracking/piwik/plugins/UserCountry/lang/es-ar.json
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "No se puede encontrar la función apache_get_modules, asumiendo que se posee un servidor de internet no-Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "No se encuentra el archivo %1$s en el archivo tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "La variable %s no está especificada. Su servidor puede no estar configurado correctamente.",
|
||||
"CannotFindPeclGeoIPDb": "No se encuentra en la base de datos el país, región o ciudad en el módulo GeoIP PECL. Asegúrese que su base de datos GeoIP esté localizada en %1$s y sea nombrada %2$s o %3$s, de no ser así, el módulo PECL no lo reconocerá.",
|
||||
"CannotListContent": "No se pudo enumerar el contenido de %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "La dirección IP %s es una dirección local y no puede ser geolocalizada.",
|
||||
"CannotUnzipDatFile": "No se puede descomprimir el archivo dat en %1$s: %2$s",
|
||||
"City": "Ciudad",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continente",
|
||||
"Country": "País",
|
||||
"country_a1": "Proxy Anonimo",
|
||||
"country_a2": "Proveedor Satelital",
|
||||
"country_cat": "Comunidades de habla catalana",
|
||||
"country_o1": "Otro País",
|
||||
"CurrentLocationIntro": "De acuerdo a este proveedor, su actual ubicación es",
|
||||
"DefaultLocationProviderDesc1": "El proveedor de ubicación por defecto asume que el país del visitante es por el lenguaje que él utiliza.",
|
||||
"DefaultLocationProviderDesc2": "No es muy preciso, por lo tanto %1$srecomendamos instalar y utilizar %2$sGeoIP%3$s.%4$s",
|
||||
"DistinctCountries": "%s países distintos",
|
||||
"DownloadingDb": "Descargando %s",
|
||||
"DownloadNewDatabasesEvery": "Actualizar bases de datos cada",
|
||||
"FromDifferentCities": "different cities",
|
||||
"GeoIPCannotFindMbstringExtension": "No encuentro la función %1$s. Por favor, asegúrese que la extensión %2$s esté instalada y cargada.",
|
||||
"GeoIPDatabases": "Bases de datos GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Para observar la información de este informe, debe configurar GeoIP en la sección Geolocalización en la lengüeta del administrador. Las bases de datos GeoIP comerciales %1$sMaxmind%2$s son más fiables que las gratuitas. Para ver cuan seguras son, clic %3$saquí%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Esta implementación GeoIP tiene acceso a los siguientes tipos de bases de datos",
|
||||
"GeoIPIncorrectDatabaseFormat": "Your GeoIP database does not seem to have the correct format. It may be corrupt. Make sure you are using the binary version and try replacing it with another copy.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Este proveedor de ubicación utiliza una base de datos GeoIP y un módulo PECL para precisamente y eficientemente determinar la ubicación de sus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "No existen limitaciones con este proveedor, es el que recomendamos utilizar.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Este proveedor de ubicación es el más simple de instalar, en tanto no requiere configuración del servidor (ideal para alojamiento compartido!). Utiliza una base de datos GeoIP y la API PHP de MaxMind para determinar precisamente la ubicación de sus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Si su sitio de internet posee un montón de tráfico, puede que su proveedor es demasiado lento. En este caso, debe instalar la extensión%2$s %1$sPECL o el módulo%4$s %3$sservidor.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Este proveedor de ubicación utiliza el módulo GeoIP que se ha instalado en su servidor HTTP. Este proveedor es fiable y rápido, pero %1$solo puede ser utilizado con el rastreo de navegadores de internet normales.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Si tiene que importar archivos de registro o cualquier otra acción que requiera configurar direcciones IP, utilice la implementación GeoIP %1$sPECL (recomendada)%2$s o la %3$simplementación GeoIP PHP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Nota: La anonimización de las direcciónes IP no tiene efecto en las ubicaciones informadas por este proveedor. Antes de utilizarlo con anonimización de IP, asegúrese que no viola leyes de privacidad que puede usted estar sujeto.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolocation works, but you are not using one of the recommended providers.",
|
||||
"GeoIPPeclCustomDirNotSet": "La opción %s PHP ini no se ha establecido.",
|
||||
"GeoIPUpdaterInstructions": "Ingrese abajo los enlaces de descarga de sus base de datos. Si ha comprado bases de datos desde %3$sMaxMind%4$s, puede encontrar dichos enlaces %1$saquí%2$s. Por favor, contáctese con %3$sMaxMind%4$s si tiene problemas para acceder a ellos.",
|
||||
"GeoLiteCityLink": "Si está utilizando la base de datos GEoLite City, utilice este enlace: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocalización",
|
||||
"getCityDocumentation": "Este informe muestra las ciudades desde las cuales sus visitantes accedieron a su sitio de internet.",
|
||||
"getContinentDocumentation": "Este informe muestra en que continente están sus visitantes cuando acceden a su sitio de internet.",
|
||||
"getCountryDocumentation": "Este informe muestra desde que país accedieron a su sitio de internet sus visitantes.",
|
||||
"getRegionDocumentation": "Este informe muestra en que región están sus visitantes en el momento que accedían a su sitio de internet.",
|
||||
"HowToInstallApacheModule": "Cómo instalar el módulo GeoIP en Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Cómo obtengo las bases de datos GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Cómo instalar la extensión GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Cómo instalo el módulo GeoIP en Nginx?",
|
||||
"HowToSetupGeoIP": "Cómo configurar una geolocalización precisa con GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sDescargue%2$s la base de datos GeoLite City desde %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step3": "Volver a cargar esta pantalla. El proveedor %1$sGeoIP (PHP)%2$s ahora será %3$sinstalado%4$s. Selecciónelo.",
|
||||
"HowToSetupGeoIPIntro": "Parece ser que la configuración de la Geolocalización no es confiable. Esta es una función útil y sin ella no verá una información precisa y completa de la ubicación de sus visitantes. Aquí un rápido vistazo de como utilizarla:",
|
||||
"HttpServerModule": "Módulo servidor HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Período inválido para el actualizador GeoIP: %1$s. Los valores correctos son %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Adquirí más %1$sbase de datos de MaxMind%2$s y quiero configurar las actualizaciones automáticas.",
|
||||
"ISPDatabase": "Base de dato ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Quiero descargar la base de datos gratuita GeoIP...",
|
||||
"Latitude": "Latitud",
|
||||
"Location": "Ubicación",
|
||||
"LocationDatabase": "Base de datos de ubicaciones",
|
||||
"LocationDatabaseHint": "Una base de datos de ubicación es una base de datos ya sea un país, región o ciudad.",
|
||||
"LocationProvider": "Proveedor de ubicación",
|
||||
"Longitude": "Longitud",
|
||||
"NoDataForGeoIPReport1": "No hay datos para este informe debido a que no existe información o las direcciones IP de los visitantes no puede ser geolocalizada.",
|
||||
"NoDataForGeoIPReport2": "Para habilitar una geolocalización precisa, cambie la opción %1$saquí%2$s y utilice una %3$sbase de datos a nivel ciudad%4$s.",
|
||||
"Organization": "Organización",
|
||||
"OrgDatabase": "Base de datos de la organización",
|
||||
"PeclGeoIPNoDBDir": "El módulo PECL está buscando base de datos en %1$s, pero esta carpeta no existe. Por favor, créela y agreguéle una base de datos GeoIP a la misma. Alternativamente, puede disponer %2$s una determinada carpeta en su archivo php.ini",
|
||||
"PeclGeoLiteError": "Su base de datos GeoIP en %1$s está nombrada %2$s. Desafortunadamente, el módulo PECL no la reconocerá con dicho nombre. Por favor, renómbrela a %3$s.",
|
||||
"Region": "Región",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Configurar actualizaciones automáticas de sus base de datos GeoIP",
|
||||
"SubmenuLocations": "Localizaciones",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "El archivo descargado no es una base de dato GeoIP válida. Por favor, verifique la dirección de internet o descargue el archivo manualmente.",
|
||||
"ToGeolocateOldVisits": "Para obtener información de ubicación de sus antiguos visitantes, utilice esta información descripta %1$saquí%2$s.",
|
||||
"UnsupportedArchiveType": "Se encontró un tipo de archivo %1$s no deseable.",
|
||||
"UpdaterHasNotBeenRun": "El actualizador nunca se ha ejecutado.",
|
||||
"UpdaterIsNotScheduledToRun": "It is not scheduled to run in the future.",
|
||||
"UpdaterScheduledForNextRun": "It is scheduled to run during the next archive.php cron execution.",
|
||||
"UpdaterWasLastRun": "El actualizador se ejecuto por última vez en %s.",
|
||||
"UpdaterWillRunNext": "It is next scheduled to run on %s.",
|
||||
"WidgetLocation": "Ubicación del visitante"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/es.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/es.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "No se puede encontrar la función apache_get_modules, asumiendo que posee un servidor de internet no-Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "No se encuentra %1$s en el archivo tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "La variable %s no está especificada. Su servidor puede no estar configurado correctamente.",
|
||||
"CannotFindPeclGeoIPDb": "No se encuentra en la base de datos el país, región o ciudad en el módulo GeoIP PECL. Asegúrese que su base de datos GeoIP esté ubicada en %1$s y posea el nombre %2$s o %3$s, de no ser así, el módulo PECL no lo reconocerá.",
|
||||
"CannotListContent": "No se pudo enumerar el contenido de %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "La dirección IP %s es una dirección local y no puede ser geolocalizada.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Parece que está guardando sus bases de datos GeoIP fuera de Matomo (no hay base de datos en la subcarpeta misc, pero su GeoIP está funcionando). Matomo no puede actualizar automáticamente sus bases de datos GeoIP si están ubicadas fuera de la carpeta misc.",
|
||||
"CannotUnzipDatFile": "No se puede descomprimir el archivo dat en %1$s: %2$s",
|
||||
"City": "Ciudad",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continente",
|
||||
"Continents": "Continentes",
|
||||
"Country": "País",
|
||||
"country_a1": "Proxy anónimo",
|
||||
"country_a2": "Proveedor Satelital",
|
||||
"country_cat": "Comunidades de habla catalana",
|
||||
"country_o1": "Otro país",
|
||||
"VisitLocation": "Visitar ubicación",
|
||||
"CurrentLocationIntro": "De acuerdo a este proveedor, su actual ubicación es",
|
||||
"DefaultLocationProviderDesc1": "La ubicación predeterminada del proveedor asume que el país del visitante es por el lenguaje que el mismo utiliza.",
|
||||
"DefaultLocationProviderDesc2": "No es muy preciso, por lo tanto %1$srecomendamos instalar y utilizar %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Está utilizando el proveedor de ubicación predeterminado, lo cual significa que Matomo estimará la ubicación de los visitantes basado en el idioma que utilizan. %1$sLea esto%2$s para ver cómo puede configurar una geolocalización más precisa.",
|
||||
"DistinctCountries": "%s países distintos",
|
||||
"DownloadingDb": "Descargando %s",
|
||||
"DownloadNewDatabasesEvery": "Actualizar bases de datos cada",
|
||||
"FatalErrorDuringDownload": "Un error fatal ocurrió durante la descarga de este archivo. Puede que sea algo incorrecto en su conexión de internet, con la base de datos GeoIP que descargó o con Matomo. Trate de descargarlo e instalarlo manualmente.",
|
||||
"FoundApacheModules": "Matomo ha encontrado los siguientes módulos Apache",
|
||||
"FromDifferentCities": "ciudades distintas",
|
||||
"GeoIPCannotFindMbstringExtension": "No se encuentra la función %1$s. Por favor, asegúrese que la extensión %2$s esté instalada y cargada.",
|
||||
"GeoIPDatabases": "Bases de datos GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Para observar la información de este informe, debe configurar GeoIP en la sección Geolocalización en la lengüeta del administrador. Las bases de datos GeoIP comerciales %1$sMaxmind%2$s son más fiables que las gratuitas. Para ver cuan seguras son, clic %3$saquí%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Esta implementación GeoIP no pudo encontrar ninguna base de datos.",
|
||||
"GeoIPImplHasAccessTo": "Esta implementación GeoIP tiene acceso a los siguientes tipos de bases de datos",
|
||||
"GeoIPIncorrectDatabaseFormat": "Parece que tu base de datos GeoIP no tiene el formato correcto. Puede estar corrupta. Asegúrate de utilizar la versión binaria y prueba reemplazarla con otra copia.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Este proveedor de ubicación utiliza una base de datos GeoIP y un módulo PECL para determinar precisa y eficientemente la ubicación de sus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "No existen limitaciones con este proveedor, es el que recomendamos utilizar.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Este proveedor de ubicación es el más simple de instalar, en tanto no requiere configuración del servidor (¡ideal para alojamiento compartido!). Utiliza una base de datos GeoIP y la API PHP de MaxMind para determinar precisamente la ubicación de sus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Si su sitio de internet tiene un montón de tráfico, puede encontrar que este proveedor es demasiado lento. En este caso, debe instalar la extensión%2$s %1$sPECL o el %3$smódulo servidor%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Este proveedor de ubicación utiliza el módulo GeoIP que se ha instalado en su servidor HTTP. Este proveedor es fiable y rápido, pero %1$solo puede ser utilizado con el rastreo de navegadores de internet normales.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Si tiene que importar archivos de registro o cualquier otra acción que requiera configurar direcciones IP, utilice la implementación GeoIP %1$sPECL (recomendada)%2$s o la %3$simplementación GeoIP PHP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Nota: La anonimización de las direcciónes IP no tiene efecto en las ubicaciones suministradas por este proveedor. Antes de utilizarlo con anonimización de IP, asegúrese que no viola leyes de privacidad al que puede estar sujeto.",
|
||||
"GeoIpLocationProviderNotRecomnended": "La geolocalización funciona pero no está utilizando uno de los proveedores recomendados.",
|
||||
"GeoIPNoServerVars": "Matomo no puede encontrar ninguna de las variables GeoIp %s.",
|
||||
"GeoIPPeclCustomDirNotSet": "La opción %s PHP ini no se ha configurado.",
|
||||
"GeoIPServerVarsFound": "Matomo detecta las siguientes variables GeoIP %s",
|
||||
"GeoIPUpdaterInstructions": "Ingrese abajo los enlaces de descarga de sus base de datos. Si ha comprado bases de datos desde %3$sMaxMind%4$s, puede encontrar dichos enlaces %1$saquí%2$s. Por favor, contáctese con %3$sMaxMind%4$s si tiene problemas para contactarse con ellos.",
|
||||
"GeoIPUpdaterIntro": "Matomo está actualmente administrando actualizaciones en las siguientes bases de datos GeoIP",
|
||||
"GeoLiteCityLink": "Si está utilizando la base de datos GEoLite City, use este enlace: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocalización",
|
||||
"GeolocationPageDesc": "En esta página puede cambiar como Matomo determina las ubicaciones de un visitante.",
|
||||
"getCityDocumentation": "Este informe muestra las ciudades desde las cuales sus visitantes accedieron a su sitio de internet.",
|
||||
"getContinentDocumentation": "Este informe muestra en qué continente están sus visitantes cuando acceden a su sitio de internet.",
|
||||
"getCountryDocumentation": "Este informe muestra desde qué país accedieron sus visitantes a su sitio de internet.",
|
||||
"getRegionDocumentation": "Este informe muestra en que región están sus visitantes en el momento que accedieron a su sitio de internet.",
|
||||
"HowToInstallApacheModule": "¿Cómo instalar el módulo GeoIP en Apache?",
|
||||
"HowToInstallGeoIPDatabases": "¿Cómo obtengo las bases de datos GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "¿Cómo instalar la extensión GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "¿Cómo instalo el módulo GeoIP en Nginx?",
|
||||
"HowToSetupGeoIP": "Cómo configurar una geolocalización precisa con GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sDescargue%2$s la base de datos GeoLite City desde %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extraiga este archivo y cópielo %1$s dentro del subdirectorio %2$smisc%3$s de Matomo (puede realizarlo vía FTP o SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Actualice esta pantalla. El proveedor %1$sGeoIP (PHP)%2$s ahora será %3$sinstalado%4$s. Selecciónelo.",
|
||||
"HowToSetupGeoIP_Step4": "¡Ya lo hizo! Ha configurado Matomo para utilizar GeoIP lo que significa que ya podrá ver las regiones y ciudades de sus visitantes, además de información muy precisa del país.",
|
||||
"HowToSetupGeoIPIntro": "Parece ser que la configuración de la Geolocalización no es confiable. Esta es una función útil y sin ella no verá una información precisa y completa de la ubicación de sus visitantes. Aquí un rápido vistazo de como utilizarla:",
|
||||
"HttpServerModule": "Módulo servidor HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Período inválido para el actualizador GeoIP: %1$s. Los valores correctos son %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Adquirí más %1$sbase de datos de MaxMind%2$s y deseo configurar las actualizaciones automáticas.",
|
||||
"ISPDatabase": "Base de dato ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Quiero descargar la base de datos gratuita GeoIP...",
|
||||
"Latitude": "Latitud",
|
||||
"Latitudes": "Latitudes",
|
||||
"Location": "Ubicación",
|
||||
"LocationDatabase": "Base de datos de ubicaciones",
|
||||
"LocationDatabaseHint": "Una base de datos de ubicación es una base de datos sea un país, región o ciudad.",
|
||||
"LocationProvider": "Proveedor de ubicación",
|
||||
"Longitude": "Longitud",
|
||||
"Longitudes": "Longitudes",
|
||||
"NoDataForGeoIPReport1": "No hay datos para este informe debido a que no existe información o las direcciones IP de los visitantes no puede ser geolocalizada.",
|
||||
"NoDataForGeoIPReport2": "Para habilitar una geolocalización precisa, cambie la opción %1$saquí%2$s y utilice una %3$sbase de datos a nivel ciudad%4$s.",
|
||||
"Organization": "Organización",
|
||||
"OrgDatabase": "Base de datos de la organización",
|
||||
"PeclGeoIPNoDBDir": "El módulo PECL está buscando bases de datos en %1$s, pero esta carpeta no existe. Por favor, créela y agreguéle una base de datos GeoIP a la misma. Alternativamente, puede disponer %2$s una determinada carpeta en su archivo php.ini",
|
||||
"PeclGeoLiteError": "Su base de datos GeoIP en %1$s bajo el nombre de %2$s. Desafortunadamente, el módulo PECL no la reconocerá con ese nombre. Por favor, renómbrela a %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo no está actualmente administrando ninguna base de datos GeoIP.",
|
||||
"PluginDescription": "Informa la ubicación de sus visitantes: país, región, ciudad y coordenadas geográficas (latitud\/longitud).",
|
||||
"Region": "Región",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Configurar actualizaciones automáticas de sus base de datos GeoIP",
|
||||
"SubmenuLocations": "Ubicaciones",
|
||||
"TestIPLocatorFailed": "Matomo intentó verificar la ubicación de una dirección IP conocida (%1$s), pero su servidor retornó %2$s. Si este proveedor fue configurado correctamente, debería retornar %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "El archivo descargado no es una base de datos GeoIP válida. Por favor, verifique la dirección de internet o descargue el archivo manualmente.",
|
||||
"ToGeolocateOldVisits": "Para obtener información de ubicación de sus antiguos visitantes, utilice este script descripto %1$saquí%2$s.",
|
||||
"UnsupportedArchiveType": "Se encontró un tipo de archivo %1$s no respaldado.",
|
||||
"UpdaterHasNotBeenRun": "El actualizador nunca se ha ejecutado.",
|
||||
"UpdaterIsNotScheduledToRun": "No está programada la ejecución en el futuro.",
|
||||
"UpdaterScheduledForNextRun": "Está previsto ser activado durante la próxima ejecución del comando cron core:archive.",
|
||||
"UpdaterWasLastRun": "El actualizador se ejecutó por última vez en %s.",
|
||||
"UpdaterWillRunNext": "Está programada la ejecución para el %s.",
|
||||
"WidgetLocation": "Ubicación del visitante"
|
||||
}
|
||||
}
|
34
msd2/tracking/piwik/plugins/UserCountry/lang/et.json
Normal file
34
msd2/tracking/piwik/plugins/UserCountry/lang/et.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"City": "Linn",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Country": "Riik",
|
||||
"country_a1": "Anonüümne vahendusserver",
|
||||
"country_a2": "Satelliidi pakkuja",
|
||||
"country_cat": "Katalaani kommuunid",
|
||||
"country_o1": "Muu riik",
|
||||
"CurrentLocationIntro": "Antud pakkuja andmete alusel on sinu praegune asukoht",
|
||||
"DistinctCountries": "%s eri riigist",
|
||||
"DownloadingDb": "Laen alla %s",
|
||||
"DownloadNewDatabasesEvery": "Uuenda andmebaasi iga",
|
||||
"FromDifferentCities": "erinevad linnad",
|
||||
"GeoIPDatabases": "GeoIP andmebaas",
|
||||
"Geolocation": "Geolokatsioon",
|
||||
"GeolocationPageDesc": "Sellel lehel saad muuta, kuidas Matomo tuvastab külastajate asukoha infot.",
|
||||
"ISPDatabase": "ISP andmebaas",
|
||||
"Latitude": "Laiuskraad",
|
||||
"Location": "Asukoht",
|
||||
"LocationDatabase": "Asukoha andmebaas",
|
||||
"LocationProvider": "Asukohainfo pakkuja",
|
||||
"Longitude": "Pikkuskraad",
|
||||
"NoDataForGeoIPReport1": "Antud raporti jaoks puuduvad andmed, kuna Matomo asukoha andmebaas on tühi või külastajate IP aadresse ei ole olnud võimalik kaardil tuvastada.",
|
||||
"Organization": "Organisatsioon",
|
||||
"OrgDatabase": "Organisatsiooni andmebaas",
|
||||
"Region": "Regioon",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Seadista GeoIP andmebaaside automaatsed uuendused",
|
||||
"SubmenuLocations": "Asukohad",
|
||||
"UpdaterWasLastRun": "Uuendaja käivitus viimati %s.",
|
||||
"WidgetLocation": "Külastajate asukohad"
|
||||
}
|
||||
}
|
8
msd2/tracking/piwik/plugins/UserCountry/lang/eu.json
Normal file
8
msd2/tracking/piwik/plugins/UserCountry/lang/eu.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "Kontinentea",
|
||||
"Country": "Herrialdea",
|
||||
"DistinctCountries": "%s herrialde desberdin",
|
||||
"SubmenuLocations": "Kokalekuak"
|
||||
}
|
||||
}
|
50
msd2/tracking/piwik/plugins/UserCountry/lang/fa.json
Normal file
50
msd2/tracking/piwik/plugins/UserCountry/lang/fa.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "نمی توان فانکشن apache_get_modules را پیدا نمود, فرض کنید روی وبسرور غیر آپاچی است.",
|
||||
"CannotListContent": "مطالب قابل فهرست شدن نمی باشد برای %1$s:%2$s",
|
||||
"CannotLocalizeLocalIP": "آدرس آیپی (IP) %s یک آدرس محلی است و قابل به مکان یابی نیست.",
|
||||
"CannotUnzipDatFile": "نمی توان غیر فشرده نمود dat فایل را در %1$s: %2$s",
|
||||
"City": "شهر",
|
||||
"Continent": "قاره",
|
||||
"Country": "کشور",
|
||||
"country_a1": "پروکسی ناشناس",
|
||||
"country_a2": "ارائه دهنده خدمات ماهواره ای",
|
||||
"country_cat": "جوامع کاتالان زبان",
|
||||
"country_o1": "سایر کشورها",
|
||||
"CurrentLocationIntro": "بر اساس این ارائه دهنده خدمات , محل شما اینجاست",
|
||||
"DefaultLocationProviderDesc1": "ارائه دهنده خدمات پیشفرض , کشور یک بازدیدکننده را بر اساس زبانی که استفاده میکند , مشخص می کند.",
|
||||
"DistinctCountries": "%s کشورهای قابل تشخیص",
|
||||
"DownloadingDb": "در حال بارگزاری %s",
|
||||
"DownloadNewDatabasesEvery": "پایگاه های داده را بروزرسانی کن در هر",
|
||||
"FoundApacheModules": "پیویک ماژول های آپاچی زیر را یافت",
|
||||
"FromDifferentCities": "شهرهای مختلف",
|
||||
"GeoIPDatabases": "پایگاه های داده GeoIP",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "هیچ محدودیتی برای این ارائه دهنده وجود ندارد , بنابراین این چیزی است که ما توصیه می کنیم استفاده کنید.",
|
||||
"GeoIPPeclCustomDirNotSet": "%s از تنظیمات PHP ini روشن نیست.",
|
||||
"Geolocation": "منطقه جغرافیایی",
|
||||
"GeolocationPageDesc": "در این صفحه شما می توانید نحوه تشخیص منطقه بازدیدکنندگان توسط پیویک را تغییر دهید.",
|
||||
"getCityDocumentation": "ن گزارش نشان میدهد که بازدیدکنندگان هنگام ورود به وبسایت شما در کدام شهر بوده اند.",
|
||||
"getContinentDocumentation": "ن گزارش نشان میدهد که بازدیدکنندگان هنگام ورود به وبسایت شما در کدام قاره بوده اند.",
|
||||
"getCountryDocumentation": "این گزارش نشان میدهد که بازدیدکنندگان هنگام ورود به وبسایت شما در کدام کشور بوده اند.",
|
||||
"getRegionDocumentation": "این گزارش نشان میدهد که بازدیدکنندگان هنگام ورود به وبسایت شما در کدام منطقه بوده اند.",
|
||||
"HowToInstallApacheModule": "چگونه ماژول GeoIP را برای آپاچی نصب کنم؟",
|
||||
"HowToInstallGeoIPDatabases": "چگونه می توانم GeoIP با پایگاه داده را دریافت کنم؟",
|
||||
"HttpServerModule": "ماژول HTTP سرور",
|
||||
"ISPDatabase": "پایگاه داده ISP",
|
||||
"Latitude": "عرض جغرافیایی",
|
||||
"Location": "موقعیت",
|
||||
"LocationDatabase": "پایگاه داده محلی",
|
||||
"LocationDatabaseHint": "منظور از یک پایگاه داده محلی ، یک پایگاه داده ی کشوری ، منطقه ای یا شهری است.",
|
||||
"LocationProvider": "ارائه دهنده خدمات محلی",
|
||||
"Longitude": "طول جغرافیایی",
|
||||
"NoDataForGeoIPReport1": "هیچ اطلاعاتی ای برای این گزارش وجود ندارد زیرا اطلاعاتی درباره مکان بازدید کننده ها یا آی پی آن ها نمی توان بدست آورد.",
|
||||
"Organization": "سازمان",
|
||||
"OrgDatabase": "پایگاه داده ی سازمان",
|
||||
"Region": "منطقه",
|
||||
"SubmenuLocations": "موقعیت ها",
|
||||
"ToGeolocateOldVisits": "برای اینکه اطلاعات مکان بازدیدهای پیشین تان را بدست آورید ، اسکریپتی که %1$s اینجا %2$s توضیح داده شده را به کار ببرید.",
|
||||
"UpdaterHasNotBeenRun": "به روز رسانی شده است هرگز اجرا شده است.",
|
||||
"UpdaterWasLastRun": "آخرین بار بروزکننده در %s اجرا شده است.",
|
||||
"WidgetLocation": "مکان بازدیدکننده"
|
||||
}
|
||||
}
|
101
msd2/tracking/piwik/plugins/UserCountry/lang/fi.json
Normal file
101
msd2/tracking/piwik/plugins/UserCountry/lang/fi.json
Normal file
@ -0,0 +1,101 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "apache_get_modules toimintoa ei löydy, oletettavasti verkkopalvelin on muu kuin Apache-ohjelmisto.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Tiedostoa %1$s ei löytynyt tar-arkistosta %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Muuttujaa %s ei ole asetettu. Palvelimesi ei ehkä ole oikein konfiguroitu.",
|
||||
"CannotFindPeclGeoIPDb": "GeoIP PECL moduulille ei voitu löytää maata, aluetta tai kaupunkia. Varmista, että GeoIP tietokanta sijaitsee %1$s:ssa ja sille on annettu nimeksi joko %2$s tai %3$s, muuten PECL-moduuli ei voi tunnistaa sitä.",
|
||||
"CannotListContent": "Sisältöä %1$s: %2$s ei voitu listata",
|
||||
"CannotLocalizeLocalIP": "%s IP-osoite on paikallinen osoite, eikä sitä voida geolokalisoida.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Vaikuttaa siltä, että GeoIP-tietokantasi on tallennettu Matomon ulkopuolelle (koska misc-alahakemistossa ei ole tietokantoja, mutta GeoIP on toiminnassa). Matomo ei voi päivittää GeoIP-tietokantojasi automaattisesti, jos ne sijaitsevat misc-hakemiston ulkopuolella.",
|
||||
"CannotUnzipDatFile": "Dat-tiedostoa %1$s: %2$s ei voitu purkaa",
|
||||
"City": "Kaupunki",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Maanosa",
|
||||
"Continents": "Mantereet",
|
||||
"Country": "Maa",
|
||||
"country_a1": "Anonyymi välityspalvelin",
|
||||
"country_a2": "Satelliittiyhteys",
|
||||
"country_cat": "Katalaania puhuvat alueet",
|
||||
"country_o1": "Muu maa",
|
||||
"VisitLocation": "Käyntiosoitteet",
|
||||
"CurrentLocationIntro": "Tämän toteutuksen mukaan nykyinen sijaintisi on",
|
||||
"DefaultLocationProviderDesc1": "Oletustoteutus arvaa käyttäjien maan kielen perusteella.",
|
||||
"DefaultLocationProviderDesc2": "Tämä ei ole erityisen tarkkaa, joten %1$ssuosittelemme asentamaan ja käyttämään %2$sGeoIp:tä%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Käytät sijainnin oletuspalvelua, mikä tarkoittaa sitä, että Matomo päättelee kävijän sijainnin hänen käyttämän kielen perusteella. %1$sLue tämä%2$s saadaksesi tietoa tarkemman geopaikannuksen käyttöönottamisesta.",
|
||||
"DistinctCountries": "%s uniikkia maata",
|
||||
"DownloadingDb": "Ladataan %s",
|
||||
"DownloadNewDatabasesEvery": "Päivitä tietokanta joka",
|
||||
"FatalErrorDuringDownload": "Vakava virhe havaittu ladattaessa tätä tiedostoa. Internet-yhteydessäsi, GeoIP-tietokannassa tai Matomossa saattaa olla jotain vikaa. Yritä ladata ja asentaa tiedosto manuaalisesti.",
|
||||
"FoundApacheModules": "Matomo löysi seuraavat Apache-moduulit",
|
||||
"FromDifferentCities": "eri kaupunkeja",
|
||||
"GeoIPCannotFindMbstringExtension": "Toimintoa %1$s ei löydy. Varmista, että laajennus %2$s on asennettu ja ladattu.",
|
||||
"GeoIPDatabases": "GeoIP-tietokannat",
|
||||
"GeoIPDocumentationSuffix": "Nähdäksesi tietoja tässä raportissa, sinun täytää asettaa GeoIP geopaikannuksen admin-välilehdessä. Kaupalliset %1$sMaxmind%2$s GeoIP tietokannat ovat tarkempia kuin ilmaiset. Klikkaa %3$stästä%4$s nähdäksesi miten tarkkoja ne ovat.",
|
||||
"GeoIPImplHasAccessTo": "Tällä GeoIP-sovelluksella on pääsy seuraavanlaisiin tietokantoihin",
|
||||
"GeoIPIncorrectDatabaseFormat": "GeoIP tietokantasi ei vaikuta olevan oikeassa formaatissa. Se saattaa olla vioittunut. Varmista, että käytät binääriversiota ja yritä korvata se toisella kopiolla.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Tämä sijainnintarjoaja käyttää GeoIP-tietokantaa ja PECL-moduulia kävijöiden paikallistamiseen.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Suosittelemme tätä palvelua, sillä tällä ei ole rajoituksia.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Tämä toteutus käyttää GeoIP-tietokantaa ja MaxMindin PHP-API:a kävijöiden paikallistamiseen.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Jos verkkosivullasi on paljon liikennettä, tämä palvelu saattaa olla mielestäsi liian hidas. Asenna siinä tapauksessa %1$sPECL laajennus%2$s tai %3$spalvelinmoduuli%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Tämä toteutus käyttää GeoIP-moduulia HTTP-palvelimesta. Tämä toteutus on nopea ja tarkka, mutta %1$stoimii vain normaalin selainseurannan kanssa.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Jos olet ladannut lokitiedostoja, käytä %1$sPECL:n GeoIP-toteutusta (suositeltu)%2$s tai %3$sPHP:n GeoIP-toteutusta%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Huom: IP-osoitteen piilottamisella ei ole vaikutusta tämän palvelun raportoimaan sijaintiin. Varmista, ettet riko yksityisyyden suojaa ennen kuin käytät sitä piilotetun IP-osoitteen kanssa.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geopaikannus toimii, mutta et käytä suositeltua tuottajaa.",
|
||||
"GeoIPNoServerVars": "Matomo ei löydä yhtään GeoIP %s -muuttujaa.",
|
||||
"GeoIPPeclCustomDirNotSet": "%s PHP ini vaihtoehtoa ei ole asetettu.",
|
||||
"GeoIPServerVarsFound": "Matomo on löytänyt seuraavat GeoIP %s variaabelit",
|
||||
"GeoIPUpdaterInstructions": "Ilmoita latauslinkit tietokantoihisi alapuolelle. Jos olet ostanut tietokantoja %3$sMaxMind:ltä%4$s, voit löytää kyseiset linkit %1$stäältä%2$s. Ota yhteyttä %3$sMaxMind:iin%4$s, jos sinulla on vaikeuksia linkkien saamisessa.",
|
||||
"GeoIPUpdaterIntro": "Matomo hallitsee tällä hetkellä päivityksiä seuraaville GeoIP-tietokannoille",
|
||||
"GeoLiteCityLink": "Jos käytät tietokantaa GeoLite City, käytä tätä linkkiä: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geopaikannus",
|
||||
"GeolocationPageDesc": "Tällä sivulla voit säätää, miten Matomo päättelee kävijöiden sijainnin, ja tarkastella eri vaihtoehtojen asetuksia.",
|
||||
"getCityDocumentation": "Tämä raportti näyttää missä kaupungeissa käyttäjät olivat käydessään verkkosivullasi.",
|
||||
"getContinentDocumentation": "Tämä raportti näyttää missä maanosassa käyttäjät olivat käydessään verkkosivullasi.",
|
||||
"getCountryDocumentation": "Tämä raportti näyttää missä maassa käyttäjät olivat käydessään verkkosivullasi.",
|
||||
"getRegionDocumentation": "Tämä raportti näyttää millä alueella käyttäjät olivat käydessään verkkosivullasi.",
|
||||
"HowToInstallApacheModule": "Miten asennan GeoIP moduulin Apache:lle?",
|
||||
"HowToInstallGeoIPDatabases": "Miten saan GeoIP tietokannat?",
|
||||
"HowToInstallGeoIpPecl": "Miten asennan GeoIP PECL laajennuksen?",
|
||||
"HowToInstallNginxModule": "Miten asennan GeoIP moduulin Nginx:lle?",
|
||||
"HowToSetupGeoIP": "Miten asennan tarkan geopaikannuksen GeoIP:llä?",
|
||||
"HowToSetupGeoIP_Step1": "%1$sLataa%2$s GeoLite City tietokanta %3$sMaxMind:sta%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Tuo tämä tiedosto ja kopioi tulos %1$s Matomon alahakemistoon %2$smisc%3$s (voit tehdä tämän käyttämällä joko FTP:tä tai SSH:ta).",
|
||||
"HowToSetupGeoIP_Step3": "Lataa tämä sivu uudestaan. %1$sGeoIP (PHP)%2$s palvelu on nyt %3$sasennettu%4$s. Valitse se.",
|
||||
"HowToSetupGeoIP_Step4": "Olet valmis! Olet juuri asentanut Matomoon GeoIP:n, mikä tarkoittaa, että näet miltä alueilta ja mistä kaupungeista kävijäsi tulevat, sekä lisäksi hyvin tarkkaa maakohtaista tietoa.",
|
||||
"HowToSetupGeoIPIntro": "Vaikuttaa, ettei sinulla ole tarkkaa Geopaikannus asennusta. Ilman tätä hyödyllistä toimintoa et näe tarkkoja tietoja kävijöidesi sijannista. Näin voit aloittaa Geopaikannuksen käytön nopeasti:",
|
||||
"HttpServerModule": "HTTP-palvelimen moduuli",
|
||||
"InvalidGeoIPUpdatePeriod": "Epäkelpo ajanjakso GeoIP päivityksille: %1$s. Pätevät arvot ovat %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Olen ostanut %1$starkempia tietokantoja MaxMind:lta%2$s ja haluan asettaa automaattiset päivitykset.",
|
||||
"ISPDatabase": "ISP:n tietokanta",
|
||||
"IWantToDownloadFreeGeoIP": "Haluan ladata ilmaisen GeoIP tietokannan...",
|
||||
"Latitude": "Leveysaste",
|
||||
"Latitudes": "Leveyspiirit",
|
||||
"Location": "Sijainti",
|
||||
"LocationDatabase": "Sijantitietokanta",
|
||||
"LocationDatabaseHint": "Sijaintietokanta on joko maa-, alue- tai kaupunkitietokanta.",
|
||||
"LocationProvider": "Sijaintipalvelu",
|
||||
"Longitude": "Pituusaste",
|
||||
"Longitudes": "Pituuspiirit",
|
||||
"NoDataForGeoIPReport1": "Tämä raportti ei sisällä tietoja, koska sijantitietoja ei ole saatavilla tai kävijöiden IP-osoitteita ei voida geopaikantaa.",
|
||||
"NoDataForGeoIPReport2": "Aktivoidaksesi tarkan geopaikannuksen, muuta asetukset %1$stäällä%2$s ja käytä %3$skaupaunkitason tietokantaa%4$s.",
|
||||
"Organization": "Organisaatio",
|
||||
"OrgDatabase": "Organisaatiotietokanta",
|
||||
"PeclGeoIPNoDBDir": "PECL-moduuli etsii tietokantoja %1$s:ssa, mutta tätä hakemistoa ei ole olemassa. Luo se ja lisää GeoIP tietokannat siihen. Vaihtoehtoisesti voit asentaa %2$s:n oikeaan hakemistoon php.ini tiedostossasi.",
|
||||
"PeclGeoLiteError": "%1$s:ssa sijaitsevan GeoIP tietokantasi nimi on %2$s. Valitettavasti PECL-moduuli ei tunnista sitä tällä nimellä. Ole hyvä ja anna sille nimi %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo ei käytä tällä hetkellä mitään GeoIP-tietokantoja.",
|
||||
"PluginDescription": "Kertoo kävijöiden sijainnin: Maa, alue, kaupunki ja maantieteelliset koordinaatit (pohjoinen leveys\/itäinen pituus).",
|
||||
"Region": "Alue",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Asenna automaattiset GeoIP tietokantojen päivitykset",
|
||||
"SubmenuLocations": "Sijainnit",
|
||||
"TestIPLocatorFailed": "Matomo yritti tarkistaa tunnetun IP-osoitteen (%1$s) sijainnin, mutta palvelimesi ilmoitti %2$s. Jos tämä palvelu olisi oikein konfiguroitu, se ilmoittaisi %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Ladattu tiedosto ei ole pätevä GeoIP tietokanta. Ole hyvä ja tarkista URL uudelleen tai lataa tiedosto manuaalisesti.",
|
||||
"ToGeolocateOldVisits": "Saadaksesi vanhojen käyntien sijaintitietoja, käytä %1$stäällä%2$s kuvailtua skriptiä.",
|
||||
"UnsupportedArchiveType": "Havaittiin tiedostomuoto %1$s, jota ei ole tuettu.",
|
||||
"UpdaterHasNotBeenRun": "Päivitystä ei ole ajettu koskaan.",
|
||||
"UpdaterIsNotScheduledToRun": "Ei ole asetettu ajettavaksi tulevaisuudessa.",
|
||||
"UpdaterScheduledForNextRun": "Asetettu ajettavaksi seuraavan archive.php cron suorituksen aikana.",
|
||||
"UpdaterWasLastRun": "Päivitys ajettiin viimeksi %s.",
|
||||
"UpdaterWillRunNext": "Asetettu ajettavaksi seuraavan kerran %s.",
|
||||
"WidgetLocation": "Kävijän sijainti"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/fr.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/fr.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Impossible de trouver la fonction apache_get_modules, nous supposons que le serveur web n'est pas Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Impossible de trouver le fichier %1$s dans l'archive tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "La variable %s n'est pas définie. Votre serveur peut ne pas être configuré correctement.",
|
||||
"CannotFindPeclGeoIPDb": "Impossible de trouver une base de données de pays, région ou de ville pour le module PECL GeoIP. Assurez vous que votre base de données GeoIP se trouve dans le dossier %1$s et est nommée %2$s ou %3$s autrement le module PECL ne la trouvera pas.",
|
||||
"CannotListContent": "Impossible d'afficher le contenu de %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "L'adresse IP %s est locale et ne peut être géo-localisée.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Il apparait que vous stockez vos bases de données GeoIP en dehors de Matomo (nous nous basons sur le fait qu'il n'y a pas de bases de données dans le sous-répertoire misc, mais votre GeoIP fonctionne). Matomo ne peut pas mettre à jour automatiquement vos bases de donnés GeoIP si elles se trouvent en dehors du répertoire misc.",
|
||||
"CannotUnzipDatFile": "Impossible de dézipper le fichier dat dans %1$s: %2$s",
|
||||
"City": "Ville",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continent",
|
||||
"Continents": "Continents",
|
||||
"Country": "Pays",
|
||||
"country_a1": "Proxy anonyme",
|
||||
"country_a2": "Fournisseur satellite",
|
||||
"country_cat": "Communautés de langue Catalane",
|
||||
"country_o1": "Autre pays",
|
||||
"VisitLocation": "Emplacement de la visite",
|
||||
"CurrentLocationIntro": "D'après ce fournisseur, votre emplacement actuel est",
|
||||
"DefaultLocationProviderDesc1": "Le fournisseur de localisation par défaut devine le pays d'un visiteur en se basant sur le langage de son navigateur.",
|
||||
"DefaultLocationProviderDesc2": "Ce n'est pas très précis, nous recommandons donc %1$sd'installer et d'utiliser %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Vous utilisez le fournisseur de localisation par défaut, ce qui signifie que Matomo va tenter de déterminer la localisation du visiteur en se basant sur la langue qu'ils utilisent. %1$sConsultez ceci%2$s pour apprendre comment configurer une localisation plus précise.",
|
||||
"DistinctCountries": "%s pays différents",
|
||||
"DownloadingDb": "Téléchargement de %s",
|
||||
"DownloadNewDatabasesEvery": "Mettre à jour les bases de données tous (toutes) les",
|
||||
"FatalErrorDuringDownload": "Une erreur fatale est arrivée lors du téléchargement de ce fichier. Il y a peut-être un problème avec votre connexion Internet, avec la base de données GeoIP que vous téléchargez ou avec Matomo. Essayez de la télécharger et de l'installer manuellement.",
|
||||
"FoundApacheModules": "Matomo a trouvé les modules Apache suivants",
|
||||
"FromDifferentCities": "villes différentes",
|
||||
"GeoIPCannotFindMbstringExtension": "Impossible de trouver la fonction %1$s. Veuillez vous assurer que l'extension %2$s est installée et chargée.",
|
||||
"GeoIPDatabases": "Base de donnéees GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Afin de visualiser les données de ce rapport, vous devez installer GeoIP depuis l'onglet d'administration Géolocalisation. Les bases de données commerciales %1$sMaxmind%2$s sont plus précises que les gratuites. Pour voir à quelles points elles sont précises, cliquez %3$sici%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Cette implémentation de GeoIP n'a trouvé aucune base de données.",
|
||||
"GeoIPImplHasAccessTo": "Cette implémentation GeoIP a accès aux types de bases de données suivants",
|
||||
"GeoIPIncorrectDatabaseFormat": "Votre base de données GeoIP n'est pas au bon format. Elle peut être corrompue. Assurez-vous que vous utilisez la version binaire et tentez de la remplacer avec une autre copie.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Ce fournisseur de localisation utilise une base de données GeoIP et le module PECL pour déterminer de manière précise et efficace l'emplacement de vos visiteurs.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Il n'y a aucune limitation avec ce fournisseur, c'est donc celui que nous recommandons à l'utilisation.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Ce fournisseur est le plus simple à installer puisqu'il ne requiert aucune configuration du serveur (idéal pour les hébergements mutualisés!). Il utilise GeoIP et l'API PHP MaxMind's pour déterminer avec précision l'emplacement de vos visiteurs.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Si votre site web a beaucoup de trafic, vous pourriez trouver que ce fournisseur de localisation est trop lent. Dans ce cas, vous devriez installer %1$sl'extension PECL%2$s ou un %3$smodule serveur%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Ce fournisseur de localisation utilise le module GeoIP qui a été installé sur votre serveur HTTP. Ce fournisseur est rapide et précis, mais peut être %1$suniquement utilisé avec le suivi de navigateur classique.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Si vous devez importer des fichiers de logs ou bien autre chose qui requiert de définir des adresses IP, utilisez %1$sl'implémentation PECL GeoIP(recommandé)%2$s ou %3$sl'implémentation GeoIP PHP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Note : L'anonymisation de l'adresse IP n'a aucun effet sur les localisations communiquées par ce fournisseur. Avant de l'utiliser avec l'anonymisation d'IP, assurez vous que cela ne transgresse aucune loi sur la vie privées à laquelle vous pourriez être assujetti.",
|
||||
"GeoIpLocationProviderNotRecomnended": "La géolocalisation fonctionne, mais vous n'utilisez pas un des fournisseurs recommandés.",
|
||||
"GeoIPNoServerVars": "Matomo ne parvient à trouver aucune variable GeoIP %s.",
|
||||
"GeoIPPeclCustomDirNotSet": "L'option %s du PHP ini n'est pas définie.",
|
||||
"GeoIPServerVarsFound": "Matomo a détecté les variables de GeoIP suivantes %s",
|
||||
"GeoIPUpdaterInstructions": "Entrez les liens de téléchargement de vos bases de données ci-dessous. Si vous avez acheté des bases de données de %3$sMaxMind%4$s, vous pouvez trouver ces liens %1$sici%2$s. Veuillez contacter %3$sMaxMind%4$s si vous rencontrez des difficultés à y accéder.",
|
||||
"GeoIPUpdaterIntro": "Matomo gère actuellement les mises à jour pour les bases de données GeoIP suivantes",
|
||||
"GeoLiteCityLink": "Si vous utilisez GeoLite City Database, utilisez ce lien : %1$s%2$s%3$s.",
|
||||
"Geolocation": "Géolocalisation",
|
||||
"GeolocationPageDesc": "Sur cette page vous pouvez changer la manière dont Matomo détermine la localisation des visiteurs.",
|
||||
"getCityDocumentation": "Ce rapport montre dans quelle ville vos visiteurs étaient quand ils ont accédé à votre site web.",
|
||||
"getContinentDocumentation": "Ce rapport montre dans quel continent vos visiteurs étaient quand ils ont accédé à votre site web.",
|
||||
"getCountryDocumentation": "Ce rapport montre dans quel pays vos visiteurs étaient quand ils ont accédé à votre site web.",
|
||||
"getRegionDocumentation": "Ce rapport montre dans quelle région vos visiteurs étaient quand ils ont accédé à votre site web.",
|
||||
"HowToInstallApacheModule": "Comment puis-je récupérer le module GeoIP pour Apache ?",
|
||||
"HowToInstallGeoIPDatabases": "Comment puis-je récupérer les bases de données GeoIP ?",
|
||||
"HowToInstallGeoIpPecl": "Comment puis-je installer l'extension Geoip via PECL ?",
|
||||
"HowToInstallNginxModule": "Comment puis-je installer le module GeoIP pour Nginx?",
|
||||
"HowToSetupGeoIP": "Comment mettre en place une géolocalisation précise avec GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sTélécharger%2$s la base de données GeoLite City depuis %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extrayez ce fichier et copiez le résultat %1$s dans le %2$ssous-répertoire misc%3$s de Matomo (vous pouvez effectuer cela par FTP ou SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Recharger cet affichage. Le fournisseur %1$sGeoIP (PHP)%2$s va maintenant être %3$sInstallé%4$s. Sélectionnez le.",
|
||||
"HowToSetupGeoIP_Step4": "Vous avez terminé ! Vous venez juste de configurer Matomo pour utiliser GeoIP ce qui veut dire que vous allez être capable de voir de quelles régions et villes sont vos visiteurs avec une information sur le pays très précise.",
|
||||
"HowToSetupGeoIPIntro": "Il ne semble pas que vous ayez une configuration de géolocalisation très précise. C'est une fonctionnalité utile et sans elle vous ne verrez pas de manière précise et complète les informations de localisation de vos visiteurs. Voici comment vous pouvez rapidement commencer à l'utiliser :",
|
||||
"HttpServerModule": "Module du serveur HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Période invalide pour la mise à jour de GeoIP: %1$s. Les valeurs valides sont %2$s.",
|
||||
"IPurchasedGeoIPDBs": "J'ai acheté %1$sdes bases de données plus précises de MaxMind%2$s et je veux mettre en place les mises à jour automatiques.",
|
||||
"ISPDatabase": "Base de données ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Je souhaite télécharger la version gratuite de la base de données GeoIP",
|
||||
"Latitude": "Latitude",
|
||||
"Latitudes": "Lattitudes",
|
||||
"Location": "Localisation",
|
||||
"LocationDatabase": "Base de données de localisation",
|
||||
"LocationDatabaseHint": "Une base de données de localisation est une base de données de pays, villes ou régions.",
|
||||
"LocationProvider": "Fournisseur de localisation",
|
||||
"Longitude": "Longitude",
|
||||
"Longitudes": "Longitudes",
|
||||
"NoDataForGeoIPReport1": "Il n'y a aucune données pour ce rapport parce qu'il n'y a pas de base de données de localisation de disponible ou bien l'adresse IP du visiteur ne peut être géolocalisée.",
|
||||
"NoDataForGeoIPReport2": "Pour activer une géolocalisation précise, modifiez les paramètres %1$sici%2$s et utilisez une %3$sbase de données de niveau ville%4$s.",
|
||||
"Organization": "Organisation",
|
||||
"OrgDatabase": "Base de données des Organisation",
|
||||
"PeclGeoIPNoDBDir": "Le module PECL s'attend à trouver les bases de données dans %1$s, mais ce répertoire n'existe pas. Veuillez le créer et ajoutez-y les bases de données GéoIP. Autrement vous pouvez paramétrer %2$s pour corriger le répertoire dans votre fichier php.ini.",
|
||||
"PeclGeoLiteError": "Votre base de données GeoIP dans %1$s est nommée %2$s. Malheureusement, le module PECL ne la reconnaitra pas avec ce nom. Veuillez la renommer %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo ne gère actuellement aucune base de données GeoIP.",
|
||||
"PluginDescription": "Rapports sur l'emplacement de vos visiteurs: pays, région, ville et coordonnées géographiques (latitude\/longitude).",
|
||||
"Region": "Région",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Configurer les mises à jour automatiques des bases de données GeoIP",
|
||||
"SubmenuLocations": "Provenances géographiques",
|
||||
"TestIPLocatorFailed": "Matomo a essayé de vérifier la localisation d'une adresse IP connue (%1$s), mais le serveur a renvoyé %2$s. Si ce fournisseur était configuré correctement il aurait renvoyé %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Le fichier téléchargé n'est pas une base de données GeoIP valide. Veuillez vérifier l'URL ou téléchargez le fichier manuellement.",
|
||||
"ToGeolocateOldVisits": "Pour obtenir les données de localisation de vos anciennes visites, utilisez le script décrit %1$sici%2$s.",
|
||||
"UnsupportedArchiveType": "Type d'archive non supporté %1$s.",
|
||||
"UpdaterHasNotBeenRun": "L'outil de mise a jour n'a jamais été exécuté.",
|
||||
"UpdaterIsNotScheduledToRun": "N'est pas planifié pour une exécution future.",
|
||||
"UpdaterScheduledForNextRun": "Est planifié pour un traitement durant la prochaine exécution du cron de archive.php.",
|
||||
"UpdaterWasLastRun": "La dernière mise à jour a été effectuée le %s.",
|
||||
"UpdaterWillRunNext": "Est planifié pour s'exécuter le %s.",
|
||||
"WidgetLocation": "Emplacement du visiteur"
|
||||
}
|
||||
}
|
17
msd2/tracking/piwik/plugins/UserCountry/lang/gl.json
Normal file
17
msd2/tracking/piwik/plugins/UserCountry/lang/gl.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "Continente",
|
||||
"Country": "País",
|
||||
"country_o1": "Outro país",
|
||||
"DistinctCountries": "%s continentes distintos",
|
||||
"DownloadingDb": "A descargar %s",
|
||||
"DownloadNewDatabasesEvery": "Actualizar as bases de datos cada",
|
||||
"Region": "Rexión",
|
||||
"SubmenuLocations": "Lugares",
|
||||
"UpdaterHasNotBeenRun": "O actualizador non foi executado nunca.",
|
||||
"UpdaterIsNotScheduledToRun": "Non está planificado para ser executado no futuro.",
|
||||
"UpdaterScheduledForNextRun": "Está planificado para ser executado durante a próxima execución da orde core:archive de cron.",
|
||||
"UpdaterWasLastRun": "O actualizador foi executado por última vez o %s.",
|
||||
"UpdaterWillRunNext": "Está planificado para ser executado o %s."
|
||||
}
|
||||
}
|
15
msd2/tracking/piwik/plugins/UserCountry/lang/he.json
Normal file
15
msd2/tracking/piwik/plugins/UserCountry/lang/he.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"City": "עיר",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "יבשת",
|
||||
"Country": "מדינה",
|
||||
"country_a1": "מתווך אנונימי",
|
||||
"country_a2": "ספק לוויני",
|
||||
"country_cat": "קהילות דוברות קטלאנית",
|
||||
"country_o1": "מדינה אחרת",
|
||||
"GeoIPDatabases": "מסד נתונים GeoIP",
|
||||
"Geolocation": "מיקום גאוגרפי",
|
||||
"Location": "מיקום"
|
||||
}
|
||||
}
|
87
msd2/tracking/piwik/plugins/UserCountry/lang/hi.json
Normal file
87
msd2/tracking/piwik/plugins/UserCountry/lang/hi.json
Normal file
@ -0,0 +1,87 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "गैर अपाचे वेबसर्वर मानते हुए, apache_get_modules फ़ंक्शन नहीं मिल सकता है.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "टार अभिलेख %2$s में %1$s फाइल नहीं मिल सकता है!",
|
||||
"CannotFindGeoIPServerVar": "%s के चर स्थापित नहीं है. आपका सर्वर ठीक से कॉन्फ़िगर नहीं किया जा सकता है.",
|
||||
"CannotFindPeclGeoIPDb": "GeoIP PECL मॉड्यूल के लिए एक देश, क्षेत्र या शहर डेटाबेस नहीं मिल सका. अपने GeoIP डेटाबेस %1$s में स्थित है और %2$s या %3$s नाम है अन्यथा PECL मॉड्यूल यह नोटिस नहीं होगा सुनिश्चित करें.",
|
||||
"CannotListContent": "%1$s के लिए सामग्री की सूची नहीं कर सका: %2$s",
|
||||
"CannotLocalizeLocalIP": "आईपी पते %s में एक स्थानीय पता है और भू स्थित नहीं किया जा सकता.",
|
||||
"CannotSetupGeoIPAutoUpdating": "ऐसा लगता है (वहाँ उपनिर्देशिका विविध में कोई डेटाबेस नहीं है, लेकिन अपने GeoIP काम कर रहा है के बाद से हम बता सकते हैं) आप Matomo के बाहर अपने GeoIP डेटाबेस भंडारण कर रहे हैं वे विविध निर्देशिका के बाहर स्थित हैं अगर Matomo स्वचालित रूप से आपके GeoIP डेटाबेस अद्यतन नहीं कर सकता.",
|
||||
"CannotUnzipDatFile": "%1$s में .dat फ़ाइल खोली नहीं जा सकी: %2$s",
|
||||
"City": "शहर",
|
||||
"Continent": "महाद्वीप",
|
||||
"Country": "देश",
|
||||
"country_a1": "बेनाम प्रॉक्सी",
|
||||
"country_a2": "सैटेलाइट प्रदाता",
|
||||
"country_cat": "कैटलन भाषी समुदायों",
|
||||
"country_o1": "अन्य देश",
|
||||
"CurrentLocationIntro": "इस प्रदाता के अनुसार, आपका वर्तमान स्थान है",
|
||||
"DefaultLocationProviderDesc1": "एक आगंतुक का देश डिफ़ॉल्ट स्थान प्रदाता के अनुमान का इस्तेमाल वे भाषा के आधार पर करते है.",
|
||||
"DefaultLocationProviderDesc2": "यह बहुत सही नहीं है, तो %1$sहम स्थापित करने और %2$sGeoIP%3$s का उपयोग करना चाहिये.%4$s",
|
||||
"DistinctCountries": "%s विशिष्ट देशों",
|
||||
"DownloadingDb": "अधीभारण %s",
|
||||
"DownloadNewDatabasesEvery": "हर डेटाबेस का अद्यतन",
|
||||
"FatalErrorDuringDownload": "इस फाइल को डाउनलोड करते समय एक गंभीर त्रुटि हुई. आप डाउनलोड या Matomo GeoIP डेटाबेस के साथ, अपने इंटरनेट कनेक्शन के साथ कुछ गलत हो सकता है. डाउनलोड करने और इसे मैन्युअल रूप से स्थापित करने की कोशिश करें.",
|
||||
"FoundApacheModules": "Matomo को निम्नलिखित अपाचे मॉड्यूल ने पाया",
|
||||
"GeoIPCannotFindMbstringExtension": "फ़ंक्शन %1$s नहीं मिल सकता है. विस्तार स्थापित और लोड किया जाता है%2$s सुनिश्चित करें.",
|
||||
"GeoIPDatabases": "GeoIP डेटाबेस",
|
||||
"GeoIPDocumentationSuffix": "इस रिपोर्ट के लिए डेटा को देखने के लिए, आप जियोलोकेशन व्यवस्थापक टैब में GeoIP सेटअप चाहिए. वाणिज्यिक %1$sMaxmind%2$s GeoIP डेटाबेस मुक्त वालों की तुलना में अधिक सटीक हैं. वे कितने सटीक है देखने के लिए यहां %3$sक्लिक%4$s करें.",
|
||||
"GeoIPImplHasAccessTo": "इस GeoIP कार्यान्वयन का डेटाबेस के निम्नलिखित प्रकार के लिए उपयोग किया है",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "यह स्थान प्रदाता एक GeoIP डेटाबेस और सही ढंग से और कुशलता से अपने आगंतुकों का स्थान निर्धारित करने के लिए एक PECL मॉड्यूल का उपयोग करता है.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "इस प्रदाता के साथ कोई सीमा नहीं है, तो यह हम उपयोग करने की सिफारिश करते है.",
|
||||
"GeoIpLocationProviderDesc_Php1": "यह स्थान प्रदाता के रूप में स्थापित करने के लिए सबसे आसान है इसे सर्वर विन्यास (साझा होस्टिंग के लिए आदर्श!) की आवश्यकता नहीं है यह सही रूप में आपके आगंतुकों का स्थान निर्धारित करने के लिए एक GeoIP डेटाबेस और MaxMind के PHP एपीआई का उपयोग करता है.",
|
||||
"GeoIpLocationProviderDesc_Php2": "आपकी वेबसाइट पर यातायात बहुत हो जाता है, तो आप पाएंगे की यह स्थान प्रदाता धीमा है इस मामले में, आप %1$s PECL एक्सटेंशन %2$s या %3$s सर्वर मॉड्यूल %4$s को स्थापित करना चाहिए.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "यह स्थान प्रदाता अपने HTTP सर्वर में स्थापित किया गया है जो GeoIP मॉड्यूल का उपयोग करता है. यह प्रदाता तेज और सटीक है, लेकिन %1$s स्कैन केवल सामान्य ब्राउज़र ट्रैकिंग के साथ इस्तेमाल किया जा सकता है .%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "आप लॉग इन फ़ाइलों को आयात या कुछ और करना है कि आईपी पतों को स्थापित करने की आवश्यकता हो, तो %1$s PECL GeoIP कार्यान्वयन (अनुशंसित) %2$s या %3$s PHP GeoIP कार्यान्वयन %4$s का उपयोग करें.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "नोट: आईपी अनोंय्मिज़ इस प्रदाता द्वारा रिपोर्ट किए गए स्थानों पर कोई प्रभाव नहीं है. आईपी अनोंय्मिज़ के साथ प्रयोग करने से पहले,आप के लिए विषय हो सकता है यह किसी भी गोपनीयता कानून का उल्लंघन नहीं करता है सुनिश्चित करें",
|
||||
"GeoIPPeclCustomDirNotSet": "PHP ini %s विकल्प सेट नहीं है.",
|
||||
"GeoIPServerVarsFound": "Matomo निम्नलिखित GeoIP चर %s का पता लगाता है",
|
||||
"GeoIPUpdaterInstructions": "नीचे अपने डेटाबेस के लिए डाउनलोड लिंक दर्ज करें.यदि अपने %3$sMaxMind%4$s से डेटाबेस खरीदा है, तो आपको लिंक्स %1$shere%2$s में मिल सकते है. यदि आप मुसीबत में है तो उन तक पहुचाये %3$sMaxMind%4$s से संपर्क करें",
|
||||
"GeoIPUpdaterIntro": "Matomo वर्तमान में निम्नलिखित GeoIP डेटाबेस के लिए अद्यतन का प्रबंध है",
|
||||
"GeoLiteCityLink": "आप GeoLite सिटी डेटाबेस का उपयोग कर रहे हैं, तो इस लिंक का उपयोग करें: %1$s%2$s%3$s.",
|
||||
"Geolocation": "भौगोलिक स्थान",
|
||||
"GeolocationPageDesc": "इस पेज पर आप को बदल सकते हैं कि कैसे Matomo आगंतुक स्थानों को निर्धारित करता है.",
|
||||
"getCityDocumentation": "इस रिपोर्ट से पता चलता है अपने दर्शकों के शहरों, वे कब आपकी वेबसाइट पे पहुचे",
|
||||
"getContinentDocumentation": "इस रिपोर्ट से पता चलता है आपके आगंतुकों के महाद्वीप का ,वे कब आपकी वेबसाइट पे पहुचे.",
|
||||
"getCountryDocumentation": "इस रिपोर्ट से पता चलता है आपके आगंतुकों के देश का,वे कब आपकी वेबसाइट पे पहुचे",
|
||||
"getRegionDocumentation": "इस रिपोर्ट से पता चलता है आपके आगंतुकों के क्षेत्र का वे कब आपकी वेबसाइट पे पहुचे",
|
||||
"HowToInstallApacheModule": "कैसे मैं अपाचे के लिए GeoIP मॉड्यूल स्थापित करूँ?",
|
||||
"HowToInstallGeoIPDatabases": "कैसे मैं GeoIP डेटाबेस प्राप्त करूं?",
|
||||
"HowToInstallGeoIpPecl": "कैसे मैं GeoIP PECL एक्सटेंशन स्थापित करूँ?",
|
||||
"HowToInstallNginxModule": "कैसे मैं nginx के लिए GeoIP मॉड्यूल स्थापित करूँ?",
|
||||
"HowToSetupGeoIP": "GeoIP साथ सटीक भौगोलिक स्थान कैसे सेटअप करे ?",
|
||||
"HowToSetupGeoIP_Step1": "%3$sMaxMind%4$s से GeoLite शहर डाटाबेस %1$sडाउनलोड%2$s करें.",
|
||||
"HowToSetupGeoIP_Step2": "%1$s में %2$s विविध %3$s Matomo उपनिर्देशिका, इस फ़ाइल को निकालें और परिणाम की नकल(यदि आप एफ़टीपी या ssh द्वारा भी ऐसा कर सकते हैं).",
|
||||
"HowToSetupGeoIP_Step3": "इस स्क्रीन से लोड करें. %1$sGeoIP (PHP)%2$s प्रदाता अब %3$sस्थापित%4$s किया जाएगा. यह चयन करें.",
|
||||
"HowToSetupGeoIP_Step4": "और आप कर रहे हैं! तुम सिर्फ Matomo GeoIP उपयोग करने के लिए सेटअप किया है जिसका मतलब है आपको बहुत सटीक देश की जानकारी के साथ अपने दर्शकों के क्षेत्रों और शहरों को देखने के लिए सक्षम हो जाएगा",
|
||||
"HowToSetupGeoIPIntro": "आप सही जियोलोकेशन सेटअप प्रकट नहीं करते हैं. यह एक उपयोगी सुविधा है और इसके बिना आप अपने दर्शकों के लिए सही और पूरी स्थान की जानकारी नहीं देख सकेंगे. यहाँ है कैसे आपको जल्दी से यह प्रयोग शुरू कर सकते हैं:",
|
||||
"HttpServerModule": "HTTP सर्वर मॉड्यूल",
|
||||
"InvalidGeoIPUpdatePeriod": "GeoIP updater के लिए अमान्य अवधि:%1$s. मान्य %2$s मान रहे हैं.",
|
||||
"IPurchasedGeoIPDBs": "मैं MaxMind%2$s से अधिक %1$sसटीक डेटाबेस खरीदा है और स्वत: अद्यतन सेटअप करना चाहते हैं.",
|
||||
"ISPDatabase": "आईएसपी डाटाबेस",
|
||||
"IWantToDownloadFreeGeoIP": "मैं मुफ्त GeoIP डेटाबेस डाउनलोड करना चाहते हैं ...",
|
||||
"Latitude": "अक्षांश",
|
||||
"Location": "स्थान",
|
||||
"LocationDatabase": "स्थान डाटाबेस",
|
||||
"LocationDatabaseHint": "एक स्थान डेटाबेस या तो एक देश, क्षेत्र या शहर डेटाबेस है.",
|
||||
"LocationProvider": "स्थान प्रदाता",
|
||||
"Longitude": "देशान्तर",
|
||||
"NoDataForGeoIPReport1": "इस रिपोर्ट के लिए कोई डेटा नहीं है क्योंकि कोई स्थान डेटा उपलब्ध तो नहीं है या आगंतुक आईपी पते geolocated नहीं किया जा सकता.",
|
||||
"NoDataForGeoIPReport2": "सटीक जियोलोकेशन सक्षम करने के लिए %1$sयहाँ%2$s सेटिंग में बदलाव और एक %3$sशहर के स्तर पर डेटाबेस%4$s का उपयोग करें.",
|
||||
"Organization": "संगठन",
|
||||
"OrgDatabase": "संगठन डाटाबेस",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo वर्तमान में किसी भी GeoIP डेटाबेस के प्रबंध नहीं है.",
|
||||
"Region": "क्षेत्र",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "GeoIP डेटाबेस के स्वचालित अपडेट सेटअप",
|
||||
"SubmenuLocations": "स्थान",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "डाउनलोड की गई फ़ाइल एक वैध GeoIP डेटाबेस नहीं है. यूआरएल को फिर से जाँच करें या मैन्युअल फाइल डाउनलोड करें.",
|
||||
"ToGeolocateOldVisits": "अपने पुराने यात्राओं के लिए स्थान डेटा प्राप्त करने के लिए, %1$sयहाँ%2$s वर्णित स्क्रिप्ट का उपयोग करें.",
|
||||
"UnsupportedArchiveType": "असमर्थित संग्रह प्रकार का सामना करना पड़ा %1$s.",
|
||||
"UpdaterHasNotBeenRun": "updater कभी नहीं चलाया गया",
|
||||
"UpdaterIsNotScheduledToRun": "यह भविष्य में चलाने के लिए निर्धारित नहीं है।",
|
||||
"UpdaterScheduledForNextRun": "संग्रह आदेश निष्पादन: यह अगले क्रॉन कोर के दौरान चलाने के लिए निर्धारित है।",
|
||||
"UpdaterWasLastRun": "Updater %s पर अंतिम रन था.",
|
||||
"UpdaterWillRunNext": "यह अगले %s पर चलने के लिए निर्धारित किया गया है।",
|
||||
"WidgetLocation": "आगंतुक स्थान"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/UserCountry/lang/hr.json
Normal file
12
msd2/tracking/piwik/plugins/UserCountry/lang/hr.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"City": "Grad",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Country": "Država",
|
||||
"country_a1": "Anonimni Proxy",
|
||||
"country_a2": "Satelitski pružatelj usluga",
|
||||
"Location": "Lokacija",
|
||||
"SubmenuLocations": "Lokacije"
|
||||
}
|
||||
}
|
13
msd2/tracking/piwik/plugins/UserCountry/lang/hu.json
Normal file
13
msd2/tracking/piwik/plugins/UserCountry/lang/hu.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "Kontinens",
|
||||
"Country": "Ország",
|
||||
"country_a1": "Anonim proxy",
|
||||
"country_a2": "Szatellit szolgáltató",
|
||||
"country_cat": "Katalán közösségek",
|
||||
"country_o1": "Egyéb ország",
|
||||
"DistinctCountries": "%s különböző ország",
|
||||
"Location": "Hely",
|
||||
"SubmenuLocations": "Helyek"
|
||||
}
|
||||
}
|
90
msd2/tracking/piwik/plugins/UserCountry/lang/id.json
Normal file
90
msd2/tracking/piwik/plugins/UserCountry/lang/id.json
Normal file
@ -0,0 +1,90 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Tidak dapat menemukan fungsi apache_get_modules, sehingga diduga sebagai peladen non-Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Tidak dapat menemukan berkas %1$s dalam arsip tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Variabel %s tidak diatur. Peladen Anda mungkin tidak diatur secara benar.",
|
||||
"CannotFindPeclGeoIPDb": "Tidak dapat menemukan basisdat negara, wilayah, atau kota untuk modul PECL GeoIP. Pastikan bahwa basisdata GeoIP berada di %1$s dan dengan nama %2$s atau %3$s atau modul PECL tidak akan menyadarinya.",
|
||||
"CannotListContent": "Tidak dapat menemukan isi untuk %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "Alamat IP %s merupakan alamat lokal dan tidak dapat diperiksa oleh lokasi-geo.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Tampaknya Anda menyimpan basidata GeoIP Anda di luar Matomo (kami dapat katakan sejak tidak ada basisdata di subdirektori misc, tapi GeoIP Anda berkerja). Matomo tidak dapat otomatis memperbarui basisdata GeoIP Anda bila berada di luar direktori misc.",
|
||||
"CannotUnzipDatFile": "Tidak dapat melakukan unzip berkas dat di %1$s: %2$s",
|
||||
"City": "Kota",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Benua",
|
||||
"Country": "Negara",
|
||||
"country_a1": "Wali Anonim",
|
||||
"country_a2": "Penyedia Satelit",
|
||||
"country_cat": "Masyarakat berbahasa Katalan",
|
||||
"country_o1": "Negara Lain",
|
||||
"CurrentLocationIntro": "Berdasar penyedia ini, lokasi Anda adalah",
|
||||
"DefaultLocationProviderDesc1": "Lokasi penyedia asali menebak negara pengunjung dari bahasa yang digunakan.",
|
||||
"DefaultLocationProviderDesc2": "Ini sangat tidak teliti, serta %1$skami menyarankan memasang dan menggunakan %2$sGeoIP%3$s.%4$s",
|
||||
"DistinctCountries": "%s negara berbeda",
|
||||
"DownloadingDb": "Mengunduh %s",
|
||||
"DownloadNewDatabasesEvery": "Perbarui basisdata setiap",
|
||||
"FatalErrorDuringDownload": "Galat fatal terjadi ketika mengunduh berkas ini. Kemungkinan ada yang salah dengan sambungan internet Anda, dengan basisdata GeoIP yang Anda unduh, atau Matomo. Silakan coba mengunduh dan memasang secara manual.",
|
||||
"FoundApacheModules": "Matomo menemukan modul Apache berikut",
|
||||
"FromDifferentCities": "kota berbeda",
|
||||
"GeoIPCannotFindMbstringExtension": "Tidak dapat menemukan fungsi %1$s. Harap pastikan bahwa ekstensi %2$s telah terpasang dan termuat.",
|
||||
"GeoIPDatabases": "Basisdata GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Agar dapat melihat data untuk laporan ini, Anda harus memasang GeoIP di tab pengelola Lokasi-Geo. Basisdata GeoIP %1$sMaxmind%2$s komersial lebih teliti daripada yang gratis. Untuk melihat seberapa teliti mereka, klik %3$sdi sini%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Penerapan GeoIP ini memiliki akses terhadap jenis-jenis basisdata berikut",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Penyedia lokasi ini menggunakan basisdata GeoIP dan modul PECL untuk akurasi dan efesiensi menentukan lokasi pengunjung.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Tidak ada batasan untuk penyedia ini, jadi ini adalah salah satu yang kami sarankan untuk digunakan.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Penyedia lokasi ini merupakan cara paling sederhana dalam memasang sebab tidak membutuhkan pengaturan peladen (cocok untuk hosting bagi pakai!). Ini menggunakan basisdata GeoIP dan API PHP MaxMind untuk menentukan lokasi pengunjung Anda.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Bila situs Anda memperoleh lalu lintas besar, Anda akan mendapati penyedia lokasi tersebut terlalu lambat. Dalam hal ini, Anda harus memasang %1$sekstensi PECL%2$s atau sebuah %3$smodul peladen%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Lokasi penyedia ini menggunakan modul GeoIP yang telah terpasnag di peladen HTTP Anda. Penyedia ini cepat dan cermat, tapi %1$shanya dapat digunakan dengan pelacakan peramban normal.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Bila Anda mengimpor berkas catatan atau hal lain yang membutuhkan pengaturan alamat IP, gunakan %1$spenerapan GeoIP PECL (disarankan)%2$s atau %3$spenerapan GeoIP PHP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Catatan: anonimasi IP tidak berdampak dalam laporan berdasar penyedia ini. Sebelum menggunakan ini dengan anonimasi IP, pastikan bahwa Anda tidak melanggar peraturan privasi yang mungkin dikenakan kepada Anda.",
|
||||
"GeoIPNoServerVars": "Matomo tidak dapat menemukan variabel GeoIP %s apapun.",
|
||||
"GeoIPPeclCustomDirNotSet": "Opsi %s ini PHP tidak diatur.",
|
||||
"GeoIPServerVarsFound": "Matomo mendeteksi variabel GeoIP berikut %s",
|
||||
"GeoIPUpdaterInstructions": "Masukkan tautan unduhan untuk basisdata di bawah. Bila Anda membeli basisdata dari %3$sMaxMind%4$s, Anda dapat menemukan tautan tersebut %1$sdi sini%2$s. Harap menghubungi %3$sMaxMind%4$s bila Anda mengalami kesulitan mengakses mereka.",
|
||||
"GeoIPUpdaterIntro": "Matomo sekarang sedang mengelola pembaruan untuk basisdata GeoIP berikut",
|
||||
"GeoLiteCityLink": "Bila Anda menggunakan basisdata GeoLite City, gunakan tautan ini: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Lokasi-Geo",
|
||||
"GeolocationPageDesc": "Dalam halaman ini Anda dapat mengganti bagaimana Matomo menentukan lokasi pengunjung.",
|
||||
"getCityDocumentation": "Laporan ini menunjukkan kota pengunjung Anda berada saat mengunjungi situs Anda.",
|
||||
"getContinentDocumentation": "Laporan ini menunjukkan benua pengunjung Anda berada saat mengunjungi situs Anda.",
|
||||
"getCountryDocumentation": "Laporan ini menujukkan negara pengunjung Anda berada saat mengunjungi sutus Anda.",
|
||||
"getRegionDocumentation": "Laporan ini menunjukkan wilayah pengunjung Anda berada saat mengunjungi situs Anda.",
|
||||
"HowToInstallApacheModule": "Bagaimana saya memasang modul GeoIP untuk Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Bagaimana saya mendapat basisdata GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Bagaimana saya memasang ekstensi PECL GeoIP?",
|
||||
"HowToInstallNginxModule": "Bagaimana saya memasang modul GeoIP untuk Nginx?",
|
||||
"HowToSetupGeoIP": "Bagaimana mengatur ketelitian lokasi-geo dengan GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sUnduh%2$s basisdata GeoLite City dari %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Mekarkan berkas ini dan salin hasil %1$s ke dalam subdirektori Matomo %2$smisc%3$s (Anda dapat pilih salah satu, FTP atau SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Muat ulang layar ini. Penyedia %1$sGeoIP (PHP)%2$s sekarang akan %3$sDipasang%4$s. Pilih ini.",
|
||||
"HowToSetupGeoIP_Step4": "Dan Anda selesai! Anda baru saja mengatur Matomo untuk menggunakan GeoIP di mana berarti Anda akan mampu melihat wilayah dan kota pengunjung Anda bersama dengan informasi negara yang sangat teliti.",
|
||||
"HowToSetupGeoIPIntro": "Anda tidak tampak memiliki pemasangan Lokasi-geo yang teliti. Fitur ini sangat berguna dan tanpa ini Anda tidak akan melihat lokasi lengkap dan akurat untuk pengunjung Anda. Di sini bagaimana Anda dapat dengan mudah memulai ini:",
|
||||
"HttpServerModule": "Modul Peladen HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Periode tak sahih untuk pembaruan GeoIP: %1$s. Nilai sahih adalah %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Saya membeli %1$sbasisdata lebih teliti dari MaxMind%2$s dan berkeinginan mengatur pembaruan otomatis.",
|
||||
"ISPDatabase": "Basisdata Penyedia Layanan Internet",
|
||||
"IWantToDownloadFreeGeoIP": "Saya ingin mengunduh basisdata GeoIP gratis...",
|
||||
"Latitude": "Lintang",
|
||||
"Location": "Lokasi",
|
||||
"LocationDatabase": "Basisdata Lokasi",
|
||||
"LocationDatabaseHint": "Sebuah basisdata lokasi merupakan salah satu basisdata suatu negara, wilayah, atau kota.",
|
||||
"LocationProvider": "Penyedia Lokasi",
|
||||
"Longitude": "Bujur",
|
||||
"NoDataForGeoIPReport1": "Tidak ada data untuk laporan ini sebab tidak ada data lokasi yang tersedia atau alamat IP tidak dikenali lokasi-geo.",
|
||||
"NoDataForGeoIPReport2": "Untuk mengaktifkan lokasi-geo teliti, ganti pengaturan %1$sdi sini%2$s dan gunakan sebuah %3$sbasisdata tingkat kota%4$s.",
|
||||
"Organization": "Organisasi",
|
||||
"OrgDatabase": "Basisdata Organisasi",
|
||||
"PeclGeoIPNoDBDir": "Modul PECL sedang mencari basisdata di %1$s, tapi direktori ini tidak tersedia. Harap memperbaiki ini dan menambah basisdata GeoIP di dalamnya. Atau Anda dapat mengatur %2$s ke direktori yang sesuai dalam berkas php.ini Anda.",
|
||||
"PeclGeoLiteError": "Basisdata GeoIP Anda di %1$s dengan nama %2$s. Sayangnya, modul PECL tidak akan mengenali ini dengan nama ini. Harap nama diganti menjadi %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo saat ini tidak mengelola basisdata GeoIP apapun.",
|
||||
"Region": "Wilayah",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Pengaturan pembaruan otomatis basisdata GeoIP",
|
||||
"SubmenuLocations": "Lokasi",
|
||||
"TestIPLocatorFailed": "Matomo mencoba memeriksa lokasi alamat IP tidak dikenal (%1$s), tapi kembalian peladen Anda adalah %2$s. Bila penyedia ini diatur dengan benar, ini seharusnya memberi kembalian %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Berkas terunduh merupakan berkas basisdata GeoIP tidak sahih. Harap memeriksa ulang URL atau berkas unduhan secara manual.",
|
||||
"ToGeolocateOldVisits": "Untuk mendapatkan data untuk kunjungan lama Anda, gunakan sekrip yang dijelaskan %1$sdi sini%2$s.",
|
||||
"UnsupportedArchiveType": "Mengandung arsip tak didukung jenis %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Pembaruan belum pernah berjalan.",
|
||||
"UpdaterWasLastRun": "Pembaruan terakhir berjalan dalam %s.",
|
||||
"WidgetLocation": "Lokasi Pengunjung"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/UserCountry/lang/is.json
Normal file
12
msd2/tracking/piwik/plugins/UserCountry/lang/is.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "Heimsálfa",
|
||||
"Country": "Land",
|
||||
"country_a1": "Nafnlaus milliþjónn",
|
||||
"country_a2": "Gerfihnattasamband",
|
||||
"country_o1": "Annað land",
|
||||
"DistinctCountries": "%s mismunandi lönd",
|
||||
"Location": "Staðsetning",
|
||||
"SubmenuLocations": "Staðsetningar"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/it.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/it.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Impossibile trovare la funzione apache_get_modules, si suppone che sia un server non-Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Impossibile trovare il file %1$s nell'archivio tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "La variabile %s non è impostata. Il tuo server potrebbe non essere correttamente configurato.",
|
||||
"CannotFindPeclGeoIPDb": "Impossibile trovare un database di paese, regione o città per il modulo GeoIP PECL. Assicurati che il tuo database di GeoIP si trovi in %1$s e abbia il nome %2$s oppure %3$s, altrimenti il modulo PECL non se ne accorgerà.",
|
||||
"CannotListContent": "Impossibile elencare il contenuto per %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "L'indirizzo IP %s è un indirizzo locale e non può essere geolocalizzato.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Sembra che tu stia conservando i database GeoIP al di fuori di Matomo (lo possiamo dire in quanto non ci sono i database nella sottodirectory misc, ma il tuo GeoIP sta lavorando). Matomo non può aggiornare automaticamente i database GeoIP se si trovano al di fuori della directory misc.",
|
||||
"CannotUnzipDatFile": "Impossibile decomprimere il file dat in %1$s: %2$s",
|
||||
"City": "Città",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continente",
|
||||
"Continents": "Continenti",
|
||||
"Country": "Paese",
|
||||
"country_a1": "Proxy Anonimo",
|
||||
"country_a2": "Satellite Provider",
|
||||
"country_cat": "Comunità che parlano catalano",
|
||||
"country_o1": "Altri Paesi",
|
||||
"VisitLocation": "Località della Visita",
|
||||
"CurrentLocationIntro": "In base a questo provider, la tua posizione attuale è",
|
||||
"DefaultLocationProviderDesc1": "L'individuatore di posizione predefinito desume il paese di un visitatore dalla lingua utilizzata.",
|
||||
"DefaultLocationProviderDesc2": "Quasta non è molto accurata, dunque %1$snoi raccomandiamo di installare e utilizzare %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Stai utilizzando il provier di posizione predefinito ciò significa che Matomo, presumibilmente, individuerà la posizione dei visitatori in base lingua che utilizzano. %1$sLeggi qui%2$s per capire come impostare una geolocalizzazione più accurata",
|
||||
"DistinctCountries": "%s continenti differenti",
|
||||
"DownloadingDb": "Sto scaricando %s",
|
||||
"DownloadNewDatabasesEvery": "Aggiorna il database ogni",
|
||||
"FatalErrorDuringDownload": "Si è verificato un errore fatale durante il download di questo file. Ci potrebbe essere qualcosa di sbagliato con la connessione a Internet, con il database GeoIP scaricato o con Matomo. Prova a scaricarlo e a installarlo manualmente.",
|
||||
"FoundApacheModules": "Matomo ha trovato i seguenti moduli Apache",
|
||||
"FromDifferentCities": "città diverse",
|
||||
"GeoIPCannotFindMbstringExtension": "Impossibile trovare la funzione %1$s. Assicurati che l'estensione %2$s sia installata e caricata.",
|
||||
"GeoIPDatabases": "Database GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Per vedere i dati di questo report è necessario impostare GeoIP nella scheda Amministrazione Geolocation. I database GeoIP commerciali%1$sMaxmind%2$s sono più accurati di quelli gratuiti. Per vedere come sono precisi, clicca %3$squi%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Questa implementazione GeoIP non ha potuto trovare un database.",
|
||||
"GeoIPImplHasAccessTo": "Questa implementazione GeoIP ha accesso ai seguenti tipi di database",
|
||||
"GeoIPIncorrectDatabaseFormat": "Il vostro database GeoIP non sembra avere un formato corretto. Potrebbe essere corrotto. Assicuratevi che stiate utilizzando la versione binaria e provate a sostituirla con un'altra copia,",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Questo individuatore di posizione utilizza un database GeoIP e un modulo PECL per determinare accuratamente e con efficienza la posizione dei tuoi visitatori.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Non ci sono limitazioni con questo provider, dunque è uno di cui raccomandiamo l'uso.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Questo individuatore di posizione è il più semplice da installare in quanto non richiede la configurazione del server (ideale per hosting condiviso!). Esso utilizza un database GeoIP e MaxMind PHP API per determinare con precisione la posizione dei tuoi visitatori.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Se il tuo sito riceve parecchio traffico, è possibile che questo individuatore di posizione sia troppo lento. In questo caso, è necessario installare l'%1$sestensione PECL%2$s o un %3$smodulo server%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Questo individuatore di posizione utilizza il modulo GeoIP che è stato installato nel vostro server HTTP. È veloce e preciso, ma %1$spuò essere utilizzato solo con il normale monitoraggio browser.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Se si devono importare i file di log o fare qualcos'altro che richiede l'impostazione degli indirizzi IP, utilizza l'%1$simplementazione PECL GeoIP (consigliata)%2$s oppure l'%3$simplementazione PHP GeoIP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Nota: l'anonimizzazione IP non ha alcun effetto sui luoghi segnalati da questo fornitore. Prima di utilizzarlo con la trasformazione in forma anonima degli IP, assicurati che questo non violi alcuna legge sulla privacy a cui puoi essere soggetto.",
|
||||
"GeoIpLocationProviderNotRecomnended": "La geolocalizzazione sta funzionando ma tu non stai utilizzando uno dei provider raccomandati.",
|
||||
"GeoIPNoServerVars": "Matomo non riesce a trovare nessuna delle variabili %s GeoIP.",
|
||||
"GeoIPPeclCustomDirNotSet": "L'opzione %s PHP ini non è impostata.",
|
||||
"GeoIPServerVarsFound": "Matomo rileva le seguenti %s variabili GeoIP.",
|
||||
"GeoIPUpdaterInstructions": "Inserisci qui sotto i link di download per i tuoi database. Se hai acquistato i database da %3$sMaxMind%4$s, si possono trovare questi link %1$squi%2$s. Si prega di contattare %3$sMaxMind%4$s se hai problemi ad accedervi.",
|
||||
"GeoIPUpdaterIntro": "Matomo sta attualmente gestendo gli aggiornamenti per i seguenti database GeoIP",
|
||||
"GeoLiteCityLink": "Se stai utilizzando il database GeoLite City, usa questo link: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocalizzazione",
|
||||
"GeolocationPageDesc": "In questa pagina puoi cambiare le impostazioni di come Matomo determina la località dei visitatori.",
|
||||
"getCityDocumentation": "Questo report mostra le città in cui si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
|
||||
"getContinentDocumentation": "Questo report mostra in quale continente si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
|
||||
"getCountryDocumentation": "Questo report mostra in quale nazione si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
|
||||
"getRegionDocumentation": "Questo report mostra in quale regione si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
|
||||
"HowToInstallApacheModule": "Come posso installare il modulo GeoIP per Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Come posso ottenere i database GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Come posso installare le estensioni GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Come posso installare il modulo GeoIP per Nginx?",
|
||||
"HowToSetupGeoIP": "Come impostare la geolocalizzazione accurata con GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sScarica%2$s il database GeoLite City da %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Estrai questo file e copia il risultato, %1$s nella sottodirectory %2$smisc%3$s di Matomo (puoi farlo sia tramite FTP che SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Ricarica questa schermata. Il provider %1$sGeoIP (PHP)%2$s verrà ora %3$sinstallato%4$s. Selezionalo.",
|
||||
"HowToSetupGeoIP_Step4": "E il gioco è fatto! Hai appena configurato Matomo per usare GeoIP, ciò significa che sarai in grado di vedere le regioni e le città dei tuoi visitatori con informazioni sul paese molto accurate.",
|
||||
"HowToSetupGeoIPIntro": "Sembra che tu non abbia una configurazione di Geolocalizzazione accurata. Questa è una funzionalità utile, e senza di essa non si avranno informazioni accurate e complete sulla localizzazione dei tuoi visitatori. Ecco come puoi iniziare a usarla rapidamente:",
|
||||
"HttpServerModule": "Modulo Server HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Periodo non valido per l'updater GeoIP: %1$s. I valori validi sono: %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Ho acquistato altri %1$sdatabase accurati da MaxMind%2$s e voglio impostare gli aggiornamenti automatici.",
|
||||
"ISPDatabase": "Database ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Voglio scaricare il database gratuito GeoIP...",
|
||||
"Latitude": "Latitudine",
|
||||
"Latitudes": "Latitudini",
|
||||
"Location": "Posizione",
|
||||
"LocationDatabase": "Database Località",
|
||||
"LocationDatabaseHint": "Un database località è un database di nazioni, regioni o città.",
|
||||
"LocationProvider": "Localizzatore di Posizione",
|
||||
"Longitude": "Longitudine",
|
||||
"Longitudes": "Longitudini",
|
||||
"NoDataForGeoIPReport1": "Non vi sono dati per questo report perché non vi sono dati di localizzazione disponibili o gli indirizzi IP dei visitatori non possono essere geolocalizzati.",
|
||||
"NoDataForGeoIPReport2": "Per abilitare la geolocalizzazione accurata cambia le impostazioni %1$squi%2$s e usa un %3$sdatabase a livello città%4$s.",
|
||||
"Organization": "Organizzazione",
|
||||
"OrgDatabase": "Database Organizzazioni",
|
||||
"PeclGeoIPNoDBDir": "Il modulo PECL è alla ricerca di database in %1$s, ma questa directory non esiste. Si prega di crearla e aggiungervi i database GeoIP. In alternativa, è possibile impostare %2$s per la directory corretta nel file php.ini.",
|
||||
"PeclGeoLiteError": "Il tuo databese GeoIP in %1$s è chiamato %2$s. Sfortunatamente il modulo PECL non lo riconosce con questo nome. Si prega di rinominarlo come %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo attualmente non sta gestendo alcun database GeoIP.",
|
||||
"PluginDescription": "Restituisce la provenienza dei tuoi visitatori: nazione, regione, città e coordinate geografiche (latitudine\/longitudine).",
|
||||
"Region": "Regione",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Imposta gli aggiornamenti automatici dei database GeoIP",
|
||||
"SubmenuLocations": "Località",
|
||||
"TestIPLocatorFailed": "Matomo ha cercato di controllare la posizione di un indirizzo IP conosciuto (%1$s), ma il tuo server ha restituito %2$s. Se questo localizzatore fosse correttamente configurato, dovrebbe restituire %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Il file scaricato non è un database GeoIP valido. Si prega di controllare l'URL o di scaricare il file manualmente.",
|
||||
"ToGeolocateOldVisits": "Per avere i dati di localizzazione delle tue vecchie visite, usa lo script descritto %1$squi%2$s.",
|
||||
"UnsupportedArchiveType": "Si è incontrato un archivio di tipo non supportato %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Il programma di aggiornamento non è mai stato eseguito.",
|
||||
"UpdaterIsNotScheduledToRun": "Non è pianificato un suo futuro avvio.",
|
||||
"UpdaterScheduledForNextRun": "È programmato un suo avvio durante l'esecuzione del prossimo cron.job core:archive.",
|
||||
"UpdaterWasLastRun": "Il programma di aggiornamento è stato eseguito per l'ultima volta il %s.",
|
||||
"UpdaterWillRunNext": "È programmato per essere eseguito il %s.",
|
||||
"WidgetLocation": "Posizione Visitatore"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/ja.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/ja.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "非 Apache ウェブサーバーを想定して apache_get_modules ファンクションを見つける事ができません。",
|
||||
"CannotFindGeoIPDatabaseInArchive": "%1$s file in tar archive %2$s を見つける事ができません!",
|
||||
"CannotFindGeoIPServerVar": "%s 変数が設定されていません。お使いのサーバーは、正しく構成されていない可能性があります。",
|
||||
"CannotFindPeclGeoIPDb": "GeoIP PECL モジュールの国、地域、都市データベースが見つかりません。PECL モジュールに認知させるには、GeoIP データベースが %1$s に位置づけられていること、%2$s または %3$s に指定されていることをご確認ください。",
|
||||
"CannotListContent": "%1$s の内容が一覧表示できません。%2$s",
|
||||
"CannotLocalizeLocalIP": "IP アドレス %s はローカルアドレスです。位置情報を探索することはできません。",
|
||||
"CannotSetupGeoIPAutoUpdating": "GeoIP データベースが Matomo 外に保存されているようです。GeoIP は機能していますが、misc サブディレクトリー内にデータベースが存在していません。",
|
||||
"CannotUnzipDatFile": "%1$s の dat ファイルを解凍できません: %2$s",
|
||||
"City": "都市",
|
||||
"CityAndCountry": "%1$s、 %2$s",
|
||||
"Continent": "大陸",
|
||||
"Continents": "大陸",
|
||||
"Country": "国",
|
||||
"country_a1": "匿名プロキシ",
|
||||
"country_a2": "衛星プロバイダ",
|
||||
"country_cat": "カタロニア語圏のコミュニティ",
|
||||
"country_o1": "その他の国",
|
||||
"VisitLocation": "場所",
|
||||
"CurrentLocationIntro": "このプロバイダーによると、あなたの現在地は",
|
||||
"DefaultLocationProviderDesc1": "デフォルトロケーションプロバイダーでは、ビジターの国は使用言語に基づいて推測されます。",
|
||||
"DefaultLocationProviderDesc2": "精度が低いため、%1$s%2$sGeoIP%3$sのインストールと使用をお勧めします。%4$s",
|
||||
"DefaultLocationProviderExplanation": "デフォルトロケーションプロバイダーを使用しています。Matomo はビジターの位置情報を使用言語に基づいて推測します。より正確なジオロケーションを設定する方法については、%1$sこちらをご覧ください。%2$s",
|
||||
"DistinctCountries": "%s 個別の国々",
|
||||
"DownloadingDb": "ダウンロード中 %s",
|
||||
"DownloadNewDatabasesEvery": "各データベースをアップデート",
|
||||
"FatalErrorDuringDownload": "このファイルのダウンロード中に致命的なエラーが発生しました。ダウンロードした GeoIP データベースまたは Matomo でご利用のインターネット接続に問題がある可能性があります。手動でのダウンロードおよびインストールをお試しください。",
|
||||
"FoundApacheModules": "Matomo は次の Apache モジュールを見つけました",
|
||||
"FromDifferentCities": "異なる都市",
|
||||
"GeoIPCannotFindMbstringExtension": "%1$s ファンクションが見つかりません。 %2$s 拡張モジュールがインストールされロードされている事をご確認ください。",
|
||||
"GeoIPDatabases": "GeoIP データベース",
|
||||
"GeoIPDocumentationSuffix": "このレポートのデータを確認するために、位置情報探索 (ジオロケーション) 管理タブの GeoIP をセットアップする必要があります。商用 %1$sMaxmind%2$s GeoIP データベースは、無償のデータベースより正確です。その精度を確認するには、 %3$shere%4$s をクリックしてください。",
|
||||
"GeoIPNoDatabaseFound": "この GeoIP 実装は、データベースを見つけることができませんでした。",
|
||||
"GeoIPImplHasAccessTo": "この GeoIP 実装は、次の種類のデータベースへのアクセスを含みます。",
|
||||
"GeoIPIncorrectDatabaseFormat": "ご利用の GeoIP データベースは、壊れている可能性があり、正しいフォーマットを持っていないようです。バイナリバージョンを使用し、別のコピーへ交換してください。",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "正確に効率的にビジターの位置を決定するため、この位置情報プロバイダーは、GeoIP データベースと PECL モジュールを使用します。",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "このプロバイダーは 制限がないため、Matomo が推奨するプロバイダーの一つです。",
|
||||
"GeoIpLocationProviderDesc_Php1": "サーバー設定 ( 共有ホスティングが理想です ! ) が必要ないため、この位置情報プロバイダーは非常に簡単にインストールできます。ビジターの位置情報を正確に決定するために、GeoIP データベースと MaxMind の PHP API を使用します。",
|
||||
"GeoIpLocationProviderDesc_Php2": "ウェブサイトのトラフィックが多い場合、位置情報プロバイダーの動作が非常に重く感じられるかもしれません。そのような場合は、%1$sPECL 拡張モジュール%2$s または %3$sサーバーモジュール %4$sをインストールすることをお勧めします。",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "このロケーションプロバイダーは、HTTP サーバーにインストールされている GeoIP モジュールを使用します。 このプロバイダは高速で正確ですが、%1$s通常のブラウザトラッキングでのみ使用できます。%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "ログファイルをインポートする必要がある場合やIPアドレスの設定が必要な場合は、%1$sPECL GeoIP 実装 ( 推奨 ) %2$sまたは%3$sPHP GeoIP 実装%4$sを使用してください。",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "注)このプロバイダーにより報告された位置情報は、IP の匿名化による影響を受けません。IP 匿名化をご利用になる前に、必ず利用者が遵守すべきあらゆるプライバシーに関する法律に違反しないことをご確認ください。",
|
||||
"GeoIpLocationProviderNotRecomnended": "位置情報探索機能は作動していますが、ご利用中のプロバイダーは推奨プロバイダーではありません。",
|
||||
"GeoIPNoServerVars": "任意の GeoIP %s 変数を見つける事ができません。",
|
||||
"GeoIPPeclCustomDirNotSet": "%s PHP の ini オプションが設定されていません。",
|
||||
"GeoIPServerVarsFound": "Matomo は、次の GeoIP %s 変数を検知します。",
|
||||
"GeoIPUpdaterInstructions": "以下のデータベースにダウンロードリンクを入力してください。データベースを %3$sMaxMind%4$s から購入された場合、これらのリンクは %1$sここから%2$s 見つけることができます。アクセスできない問題がある場合、%3$sMaxMind%4$s にお問い合わせください。",
|
||||
"GeoIPUpdaterIntro": "Matomo は、現在次の GeoIP データベースのアップデートを管理しています。",
|
||||
"GeoLiteCityLink": "GeoLite City データベースをお使いの場合、このリンクをご利用ください。%1$s%2$s%3$s",
|
||||
"Geolocation": "ジオロケーション",
|
||||
"GeolocationPageDesc": "このページでは、ビジターの位置情報を決める方法を変更することができます。",
|
||||
"getCityDocumentation": "このレポートは、あなたのウェブサイトにアクセスした際、ビジターがどの都市にいたかを表示します。",
|
||||
"getContinentDocumentation": "このレポートは、あなたのウェブサイトにアクセスした際、ビジターがどの大陸にいたかを表示します。",
|
||||
"getCountryDocumentation": "このレポートは、あなたのウェブサイトにアクセスした際、ビジターがどの国にいたかを表示します。",
|
||||
"getRegionDocumentation": "このレポートは、あなたのウェブサイトにアクセスした際、ビジターがどの地域にいたかを表示します。",
|
||||
"HowToInstallApacheModule": "GeoIP モジュールを Apache にインストールする方法は?",
|
||||
"HowToInstallGeoIPDatabases": "GeoIP データベースを取得する方法は?",
|
||||
"HowToInstallGeoIpPecl": "GeoIP PECL の拡張モジュールをインストールする方法は?",
|
||||
"HowToInstallNginxModule": "GeoIP モジュールを Nginx にインストールする方法は?",
|
||||
"HowToSetupGeoIP": "GeoIP で正確な位置情報をセットアップする方法は?",
|
||||
"HowToSetupGeoIP_Step1": "%3$sMaxMind%4$s から GeoLite City データベースを%1$sダウンロードしてください%2$s。",
|
||||
"HowToSetupGeoIP_Step2": "このファイルを解凍し、%1$s という結果を%2$s他の%3$s Matomo サブディレクトリにコピーします(これは FTP または SSH のどちらでも可能です)。",
|
||||
"HowToSetupGeoIP_Step3": "この画面をリロードしてください。%1$s GeoIP ( PHP ) %2$s プロバイダーは、今 %3$sInstalled%4$s 。それを選択してください。",
|
||||
"HowToSetupGeoIP_Step4": "成功しました ! GeoIP を利用するための Matomo のセットアップが完了しました ! 精度の高い国情報と、ビジターの地域、都市を確認できるようになります。",
|
||||
"HowToSetupGeoIPIntro": "正確な位置情報のセットアップが完了していないようです。位置情報探索機能は、役立つ機能です。セットアップを完了させることで、サイト訪問者についての正確で完全な位置情報を確認することができるようになります。それをすぐに使い始めることができる方法はこれです。",
|
||||
"HttpServerModule": "HTTP サーバーモジュール",
|
||||
"InvalidGeoIPUpdatePeriod": "GeoIP アップデーターに対する無効な期間は、%1$s です。有効な値は、%2$s です。",
|
||||
"IPurchasedGeoIPDBs": "%1$sMaxMind からより正確なデータベース%2$sを購入しました。自動アップデートをセットアップします。",
|
||||
"ISPDatabase": "ISP データベース",
|
||||
"IWantToDownloadFreeGeoIP": "無償の GeoIP データベースをダウンロードしたい…",
|
||||
"Latitude": "緯度",
|
||||
"Latitudes": "緯度",
|
||||
"Location": "位置情報",
|
||||
"LocationDatabase": "位置情報データベース",
|
||||
"LocationDatabaseHint": "位置情報データベースは、国、地域、都市データベースのいづれかです。",
|
||||
"LocationProvider": "位置情報プロバイダ",
|
||||
"Longitude": "経度",
|
||||
"Longitudes": "経度",
|
||||
"NoDataForGeoIPReport1": "利用可能な位置データが存在しないか、位置情報を探索できないビジター IP アドレスが含まれているため、このレポートのデータが存在しません。",
|
||||
"NoDataForGeoIPReport2": "正確な位置情報を有効にするには、設定を %1$sここから%2$s 変更し、%3$s都市レベルのデータベース%4$s をご利用ください。",
|
||||
"Organization": "組織",
|
||||
"OrgDatabase": "組織のデータベース",
|
||||
"PeclGeoIPNoDBDir": "PECL モジュールは、%1$s でデータベースを探していますが、このディレクトリーは存在しません。ディレクトリーを作成し GeoIP データベースをそれに追加してください。または、お使いの php.ini ファイルの正しいディレクトリーに %2$s を設定できます。",
|
||||
"PeclGeoLiteError": "あなたの %1$s GeoIP データベースは、%2$s と名付けられています。残念ながら、PECL モジュールはこの名前のまま認識することができません。名前を %3$s に変更してください。",
|
||||
"PiwikNotManagingGeoIPDBs": "GeoIP データベースは、現在 Matomo により管理されていません。",
|
||||
"PluginDescription": "ビジターの場所のレポート: 国、地域、都市および地理的な座標 ( 緯度・経度 ) など",
|
||||
"Region": "地域",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "GeoIP データベースの自動アップデートをセットアップしてください。",
|
||||
"SubmenuLocations": "場所",
|
||||
"TestIPLocatorFailed": "Matomo は、既知の IP アドレス (%1$s) の場所を確認しようとしたが、サーバーから %2$s を返されました。このプロバイダーが正しく構成されている場合は %3$s を返します。",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "ダウンロードファイルは有効な GeoIP データベースではありません。URL を再度ご確認頂くか、ファイルを手動でダウンロードしてください。",
|
||||
"ToGeolocateOldVisits": "古いビジットの位置データを取得するには、%1$sここ%2$sで説明するスクリプトを使用します。",
|
||||
"UnsupportedArchiveType": "サポートされていないアーカイブタイプ %1$s が見つかりました。",
|
||||
"UpdaterHasNotBeenRun": "アップデーターは実行されませんでした。",
|
||||
"UpdaterIsNotScheduledToRun": "これは、将来実行されるようにスケジュールされていません。",
|
||||
"UpdaterScheduledForNextRun": "これは、次のクーロン core:archive コマンド実行の間に実行するようスケジュールされています。",
|
||||
"UpdaterWasLastRun": "アップデーターは、%s の最後に実行されました。",
|
||||
"UpdaterWillRunNext": "それは次に %s で実行されるようスケジュールされています。",
|
||||
"WidgetLocation": "ビジターの位置"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/UserCountry/lang/ka.json
Normal file
12
msd2/tracking/piwik/plugins/UserCountry/lang/ka.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "კონტინენტი",
|
||||
"Country": "ქვეყანა",
|
||||
"country_a1": "ანონიმური პროქსი",
|
||||
"country_a2": "სატელიტური პროვაიდერი",
|
||||
"country_o1": "სხვა ქვეყანა",
|
||||
"DistinctCountries": "%s განსხვავებული ქვეყანა",
|
||||
"Location": "მდებარეობა",
|
||||
"SubmenuLocations": "მდებარეობები"
|
||||
}
|
||||
}
|
97
msd2/tracking/piwik/plugins/UserCountry/lang/ko.json
Normal file
97
msd2/tracking/piwik/plugins/UserCountry/lang/ko.json
Normal file
@ -0,0 +1,97 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "아파치 웹서버가 아니어서 apache_get_modules을 찾을 수 없습니다.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "%2$s tar 압축파일에서 %1$s 파일을 찾을 수 없습니다!",
|
||||
"CannotFindGeoIPServerVar": "%s에 변수가 설정되어 있지 않습니다. 서버가 올바르게 구성되지 않았을 수 있습니다.",
|
||||
"CannotFindPeclGeoIPDb": "GeoIP PECL 모듈에서 국가, 지역 또는 도시 데이터베이스를 찾을 수 없습니다. GeoIP 데이터베이스가 %1$s에 위치하고 파일 이름이 %2$s 또는 %3$s인지 확인하세요. 틀린 부분이 있다면 PECL 모듈을 인식하지 못합니다.",
|
||||
"CannotListContent": "%1$s에 대한 내용을 나열 할 수 없습니다: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP 주소 %s는 로컬 주소이기 때문에 위치를 추적할 수 없습니다.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Matomo의 외부에서 GeoIP 데이터베이스를 저장한 것 같군요 (하위 디렉토리인 misc에 데이터베이스가 없지만, 당신의 GeoIP가 잘 작동하고 있어요). 이 파일들이 misc 디렉토리의 밖에 있는 경우, Matomo는 자동으로 GeoIP 데이터베이스를 업데이트할 수 없습니다.",
|
||||
"CannotUnzipDatFile": "%1$s의 DAT 파일 압축을 풀 수 없습니다: %2$s",
|
||||
"City": "도시",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "대륙",
|
||||
"Country": "국가",
|
||||
"country_a1": "익명 프록시",
|
||||
"country_a2": "위성 공급자",
|
||||
"country_cat": "카탈로니아 지역의 커뮤니티",
|
||||
"country_o1": "기타 국가",
|
||||
"CurrentLocationIntro": "이 공급자에 따르면, 현재 위치는",
|
||||
"DefaultLocationProviderDesc1": "방문자의 국가에 기반하는 언어에서 추측하는 기본 위치 공급자입니다.",
|
||||
"DefaultLocationProviderDesc2": "이것은 매우 부정확합니다. 그래서 %1$s우리는 %2$sGeoIP%3$s를 설치하여 사용하는 것을 추천합니다.%4$s",
|
||||
"DefaultLocationProviderExplanation": "당신은 현재 기본 위치 공급자를 사용하고 있어, Matomo는 방문자의 위치를 그들이 사용하는 언어에 기반하여 추측하고 있습니다. %1$s이 문서%2$s에서 어떻게 더 정확한 위치를 얻어낼 수 있는지 얘기하고 있습니다.",
|
||||
"DistinctCountries": "%s개 국가",
|
||||
"DownloadingDb": "다운로드 중 %s",
|
||||
"DownloadNewDatabasesEvery": "모든 데이터베이스 업데이트",
|
||||
"FatalErrorDuringDownload": "파일을 다운로드하는 동안 치명적인 오류가 발생했습니다. Matomo에서 GeoIP 데이터베이스 다운로드하는데 인터넷 연결에 문제가 있을 수 있습니다, 직접 다운로드해서 수동으로 설치해 보세요.",
|
||||
"FoundApacheModules": "Matomo은 다음의 아파치 모듈을 찾을 수 없음",
|
||||
"FromDifferentCities": "다른 도시",
|
||||
"GeoIPCannotFindMbstringExtension": "%1$s 함수를 찾을 수 없습니다. %2$s 확장이 설치 및 로드되었는지 확인하세요.",
|
||||
"GeoIPDatabases": "GeoIP 데이터베이스",
|
||||
"GeoIPDocumentationSuffix": "이 보고서에 대한 데이터를 볼 수 있도록 당신은 위치 정보관리 탭에서 GeoIP를 설정해야합니다. 상업용 %1$sMaxmind%2$s GeoIP 데이터베이스는 무료로 버전보다 더 정확합니다. 정확도를 높이려면 %3$s공유%4$s를 클릭하세요.",
|
||||
"GeoIPImplHasAccessTo": "이 GeoIP 구현에서 접근하는 데이터베이스 유형은",
|
||||
"GeoIPIncorrectDatabaseFormat": "당신이 사용하는 GeoIP 데이터베이스는 올바른 포멧을 가지고 있지 않는 듯싶습니다. 아마도 손상된 것으로 보입니다. 바이너리 버전을 사용하는지 확인하시고 다른 복사본으로 바꿔 다시 진행해보세요.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "이 위치 공급자는 PECL 모듈과 GeoIP 데이터베이스를 사용하여 정확하고 효율적으로 방문자의 위치를 결정합니다.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "제한이 없는 공급자입니다. 그래서 우리는 이를 사용하는 것을 추천합니다.",
|
||||
"GeoIpLocationProviderDesc_Php1": "이 위치 공급자는 서버에 설치 및 구성을 요구하지 않기 때문에 가장 간단합니다 (공유 호스팅에 적합!). GeoIP 데이터베이스 및 MaxMind의 PHP API를 사용하여 정확하게 방문자의 위치를 결정합니다.",
|
||||
"GeoIpLocationProviderDesc_Php2": "웹사이트 트래픽이 높은 경우에 이 위치 공급자는 너무 느립니다. 이 경우는 %1$sPECL 확장%2$s이나 %3$s서버 모듈%4$s을 설치하는 것이 좋습니다.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "이 위치 공급자는 HTTP 서버에 설치되는 GeoIP 모듈을 사용합니다. 이 것은 빠르고 정확하지만, %1$s일반 브라우저의 추적만 사용할 수 있습니다.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "로그 파일을 가져오거나 IP 주소 설정을 필요로하는 경우 %1$sPECL GeoIP 구현 (권장)%2$s 또는 %3$sPHP GeoIP 구현%4$s을 사용합니다.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "참고: IP를 익명화하면 공급자가 보고있는 위치에 아무런 영향을 미치지 않습니다. IP를 익명화 하지 않으면, 개인 정보 보호법을 위반이 될수 있으므로 주의하세요.",
|
||||
"GeoIpLocationProviderNotRecomnended": "지리적 위치 플러그인은 동작하지만, 현재 당신은 추천하는 공급자를 사용하고 있지 않습니다.",
|
||||
"GeoIPNoServerVars": "Matomo은 GeoIP %s 변수를 찾을 수 없습니다.",
|
||||
"GeoIPPeclCustomDirNotSet": "%s PHP ini 옵션이 설정되어 있지 않습니다.",
|
||||
"GeoIPServerVarsFound": "Matomo은 다음의 GeoIP %s 변수를 감지함",
|
||||
"GeoIPUpdaterInstructions": "아래에 데이터베이스 다운로드 링크를 입력합니다. %3$sMaxMind%4$s에서 데이터베이스를 구입한 경우라면, %1$s여기%2$s에서 링크를 찾을 수 있습니다. 접근에 문제가 있을 경우 %3$sMaxMind%4$s에 문의하시기 바랍니다.",
|
||||
"GeoIPUpdaterIntro": "Matomo은 현재 다음 GeoIP 데이터베이스를 위한 업데이트를 관리함",
|
||||
"GeoLiteCityLink": "GeoLite 도시 데이터베이스를 사용하려는 경우, 이 링크를 사용하세요: %1$s%2$s%3$s.",
|
||||
"Geolocation": "지리적 위치",
|
||||
"GeolocationPageDesc": "이 페이지에서 Matomo 방문자 위치를 결정하는 방법을 변경할 수 있습니다.",
|
||||
"getCityDocumentation": "이 보고서는 방문자가 웹사이트를 어느 도시에서 접근했는지 보여줍니다.",
|
||||
"getContinentDocumentation": "이 보고서는 방문자가 웹사이트로 접속한 대륙을 보여줍니다.",
|
||||
"getCountryDocumentation": "이 보고서는 웹사이트로 접근한 방문자가 어느 국가에 있었는지 보여줍니다.",
|
||||
"getRegionDocumentation": "이 보고서는 방문자가 웹사이트에 접속할 때의 지역이 표시됩니다.",
|
||||
"HowToInstallApacheModule": "아파치의 GeoIP 모듈을 설치하려면 어떻게해야합니까?",
|
||||
"HowToInstallGeoIPDatabases": "GeoIP 데이터베이스를 어떻게 구해야합니까?",
|
||||
"HowToInstallGeoIpPecl": "GeoIP PECL 확장을 설치하려면 어떻게해야합니까?",
|
||||
"HowToInstallNginxModule": "Nginx에 GeoIP 모듈을 설치하려면 어떻게해야합니까?",
|
||||
"HowToSetupGeoIP": "GeoIP로 정확한 위치 정보를 설정하는 방법",
|
||||
"HowToSetupGeoIP_Step1": "%3$sMaxMind%4$s에서 GeoLite 도시 데이터베이스를 %1$s다운로드%2$s 합니다.",
|
||||
"HowToSetupGeoIP_Step2": "(FTP나 SSH를 이용하여) 이 파일의 압축을 풀고 %1$s 파일을 Matomo 하위 디렉토리인 %2$smisc%3$s로 복사합니다.",
|
||||
"HowToSetupGeoIP_Step3": "화면을 새로 고침합니다. %1$sGeoIP (PHP)%2$s 공급자가 %3$s설치됨%4$s으로 나타날 것입니다. 이것을 선택합니다.",
|
||||
"HowToSetupGeoIP_Step4": "작업 완료! 이제 Matomo은 GeoIP를 사용하도록 설정되었으며, 이것은 방문자의 정확한 국가와 도시 지역 정보를 볼 수 있음을 의미합니다.",
|
||||
"HowToSetupGeoIPIntro": "위치 정보를 정확하게 설정하지 않으면 방문자의 위치 정보 및 이와 관련한 유용한 기능이 표시되지 않습니다. 다음 방법을 참고하여 어서 이 기능을 사용하세요:",
|
||||
"HttpServerModule": "HTTP 서버 모듈",
|
||||
"InvalidGeoIPUpdatePeriod": "GeoIP 업데이터의 잘못된 기간: %1$s. 유효한 값은 %2$s 입니다.",
|
||||
"IPurchasedGeoIPDBs": "%1$sMaxMind에서 더 정확한 데이터베이스%2$s를 구입하고 자동 업데이트를 구성하고 싶어요.",
|
||||
"ISPDatabase": "ISP 데이터베이스",
|
||||
"IWantToDownloadFreeGeoIP": "무료로 제공되는 GeoIP 데이터베이스를 다운로드 할래요...",
|
||||
"Latitude": "위도",
|
||||
"Location": "위치",
|
||||
"LocationDatabase": "위치 데이터베이스",
|
||||
"LocationDatabaseHint": "위치 데이터베이스는 국가, 지역 또는 도시 데이터베이스를 말합니다.",
|
||||
"LocationProvider": "위치 공급자",
|
||||
"Longitude": "경도",
|
||||
"NoDataForGeoIPReport1": "이 보고서에 대한 데이터가 없습니다. 어떠한 위치 데이터도 사용할 수 없거나, 방문자의 IP 주소에서 지역정보를 찾을 수 없기 때문입니다.",
|
||||
"NoDataForGeoIPReport2": "더 정확한 위치 정보를 활성화시키려면 %1$s이 곳%2$s의 설정을 %3$s도시 수준의 데이터베이스%4$s로 사용해야 합니다.",
|
||||
"Organization": "조직",
|
||||
"OrgDatabase": "조직 데이터베이스",
|
||||
"PeclGeoIPNoDBDir": "PECL 모듈이 %1$s 경로에서 데이터베이스를 찾았지만, 디렉토리가 존재하지 않습니다. 디렉토리를 만들고 여기에 GeoIP 데이터베이스를 추가하세요. 대안으로, php.ini 파일에 올바른 디렉토리를 %2$s 경로를 설정할 수 있습니다.",
|
||||
"PeclGeoLiteError": "%1$s에 있는 GeoIP 데이터베이스 이름은 %2$s입니다. 안타깝게도, PECL 모듈은 이 이름으로 인식하지 않습니다. 이름을 %3$s로 변경해 주세요.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo은 현재 모든 GeoIP 데이터베이스를 관리하지 않습니다.",
|
||||
"PluginDescription": "방문자 위치 보고서: 국가, 지역, 도시, 지리적 좌표(위도\/경도)",
|
||||
"Region": "지역",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "GeoIP 데이터베이스의 자동 업데이트 설정",
|
||||
"SubmenuLocations": "위치",
|
||||
"TestIPLocatorFailed": "Matomo은 알려진 IP 주소 (%1$s)의 위치를 확인하려고 시도했지만, 서버가 %2$s으로 응답했습니다. 이 공급자가 올바르게 구성된 경우, %3$s으로 반환되어야 합니다.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "다운로드 한 파일은 유효한 GeoIP 데이터베이스가 아닙니다. URL을 다시 확인하거나 수동으로 파일을 다운로드하기 바랍니다.",
|
||||
"ToGeolocateOldVisits": "기존의 방문의 위치 데이터를 얻으려면 %1$s이 곳%2$s에 있는 스크립트 설명을 사용하세요.",
|
||||
"UnsupportedArchiveType": "지원되지 않는 압축 형식 %1$s 입니다.",
|
||||
"UpdaterHasNotBeenRun": "업데이터가 한 번도 실행되지 않았습니다.",
|
||||
"UpdaterIsNotScheduledToRun": "향후 실행할 계획이 없습니다.",
|
||||
"UpdaterScheduledForNextRun": "다음 cron core:archive 명령 수행시 실행됩니다.",
|
||||
"UpdaterWasLastRun": "%s에 마지막 업데이트 확인",
|
||||
"UpdaterWillRunNext": "%s에 실행이 계획되어 있습니다.",
|
||||
"WidgetLocation": "방문자 위치"
|
||||
}
|
||||
}
|
20
msd2/tracking/piwik/plugins/UserCountry/lang/lt.json
Normal file
20
msd2/tracking/piwik/plugins/UserCountry/lang/lt.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"City": "Miestas",
|
||||
"Continent": "Kontinentas",
|
||||
"Country": "Šalis",
|
||||
"country_a1": "Anoniminis įgaliotasis serveris",
|
||||
"country_a2": "Palydovinis tiekėjas",
|
||||
"country_cat": "Kataloniškai kalbančios bendruomenės",
|
||||
"country_o1": "Kita šalis",
|
||||
"DistinctCountries": "%s atskirti šalis",
|
||||
"DownloadingDb": "Atsiunčiama %s",
|
||||
"GeoIPDatabases": "GeoIP duomenų bazės",
|
||||
"HowToInstallApacheModule": "Kaip man įdiegti Apache skirtą GeoIP modulį?",
|
||||
"IWantToDownloadFreeGeoIP": "Aš noriu atsisiųsti nemokamą GeoIP duomenų bazę...",
|
||||
"Latitude": "Platuma",
|
||||
"Location": "Vietovė",
|
||||
"Longitude": "Ilguma",
|
||||
"SubmenuLocations": "Vietovės"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/UserCountry/lang/lv.json
Normal file
12
msd2/tracking/piwik/plugins/UserCountry/lang/lv.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "Kontinents",
|
||||
"Country": "Valsts",
|
||||
"country_a1": "Anonīms starpniekserveris",
|
||||
"country_a2": "Satelītpieslēgums",
|
||||
"country_cat": "Katalāņu valodā runājošās kopienas",
|
||||
"country_o1": "Cita valsts",
|
||||
"Location": "Lokācijas",
|
||||
"SubmenuLocations": "Lokācijas"
|
||||
}
|
||||
}
|
40
msd2/tracking/piwik/plugins/UserCountry/lang/nb.json
Normal file
40
msd2/tracking/piwik/plugins/UserCountry/lang/nb.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Kan ikke finne apache_get_modules-funksjonen. Antar at det ikke er en Apache webserver.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Kan ikke finne filen %1$s i tar-arkivet %2$s!",
|
||||
"CannotListContent": "Kunne ikke vise innhold for %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP-adressen %s er en lokal adresse og kan ikke lokaliseres.",
|
||||
"CannotUnzipDatFile": "Kunne ikke pakke ut dat-fil i %1$s: %2$s",
|
||||
"City": "By",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Country": "Land",
|
||||
"country_a1": "Anonym Proxy",
|
||||
"country_o1": "Annet land",
|
||||
"CurrentLocationIntro": "Ifølge denne leverandøren, er din nåværende posisjon",
|
||||
"DistinctCountries": "%s bestemte land",
|
||||
"DownloadingDb": "Laster ned %s",
|
||||
"DownloadNewDatabasesEvery": "Oppdater databasene hver",
|
||||
"FoundApacheModules": "Matomo fant følgende Apache-moduler",
|
||||
"FromDifferentCities": "forskjellige byer",
|
||||
"GeoIPDatabases": "GeoIP-databaser",
|
||||
"GeoIPNoServerVars": "Matomo kan ikke finne noen GeoIP %s variabler.",
|
||||
"Geolocation": "Geoposisjonering",
|
||||
"HowToInstallApacheModule": "Hvordan installerer jeg GeoIP-modulen for Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Hvordan får jeg GeoIP databasene?",
|
||||
"HowToInstallGeoIpPecl": "Hvordan installerer jeg GeoIP PECL-utvidelsen?",
|
||||
"HowToInstallNginxModule": "Hvordan installerer jeg GeoIP-modulen for Nginx?",
|
||||
"HowToSetupGeoIP_Step1": "%1$sLast ned%2$s GeoLite City-databasen fra %3$sMaxMind%4$s.",
|
||||
"HttpServerModule": "HTTP Server-modul",
|
||||
"ISPDatabase": "ISP-database",
|
||||
"IWantToDownloadFreeGeoIP": "Jeg vil laste ned gratis GeoIP-database...",
|
||||
"Latitude": "Breddegrad",
|
||||
"Location": "Sted",
|
||||
"LocationDatabase": "Lokasjonsdatabase",
|
||||
"Longitude": "Lengdegrad",
|
||||
"Organization": "Organisasjon",
|
||||
"Region": "Region",
|
||||
"SubmenuLocations": "Lokasjoner",
|
||||
"WidgetLocation": "Besøkendes lokasjon"
|
||||
}
|
||||
}
|
96
msd2/tracking/piwik/plugins/UserCountry/lang/nl.json
Normal file
96
msd2/tracking/piwik/plugins/UserCountry/lang/nl.json
Normal file
@ -0,0 +1,96 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Kan de functie apache_get_modules niet vinden, uitgegaan van non-Apache webserver.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Kan bestand %1$s niet vinden in tar-archief %2$s!",
|
||||
"CannotFindGeoIPServerVar": "De %s variabele is niet ingesteld. Je server is waarschijnlijk niet correct geconfigureerd",
|
||||
"CannotFindPeclGeoIPDb": "Land, regio, of stad database voor de GeoIP PECL module werd niet gevonden. Zorg dat je GeoIP database in %1$s staat en het de naam %2$s of %3$s heeft. Anders zal de PECL module het niet kunnen vinden.",
|
||||
"CannotListContent": "Kon geen lijst maken van de inhoud voor %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP-adres %s is een lokaal adres en kan geen geolocatie op toegepast worden.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Het lijkt erop dat je GeoIP database buiten Matomo geïnstalleerd is. Er bevindt zich namelijk geen database in de misc subdirectory, terwijl je GeoIP toch functioneert. Matomo kan je GeoIP databases niet automatisch updaten als ze niet in de misc directory zijn geplaatst.",
|
||||
"CannotUnzipDatFile": "Kan dat bestand niet uitpakken in %1$s: %2$s",
|
||||
"City": "Stad",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continent",
|
||||
"Continents": "Continenten",
|
||||
"Country": "Land",
|
||||
"country_a1": "Anonieme proxy",
|
||||
"country_a2": "Satellite Provider",
|
||||
"country_cat": "Catalaans-sprekende gemeenschappen",
|
||||
"country_o1": "Ander land",
|
||||
"VisitLocation": "Bezoekerslocatie",
|
||||
"CurrentLocationIntro": "Volgens deze provider is je huidige locatie",
|
||||
"DefaultLocationProviderDesc1": "De standaard locatie provider gokt een bezoekers land gebaseerd op de taal die ze gebruiken.",
|
||||
"DefaultLocationProviderDesc2": "Dit is niet erg nauwkeurig, %1$swe adviseren %2$sGeoIP%3$s. te installeren en gebruiken.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Je maakt gebruik van de standaard locatie provider, dat betekend dat Matomo de locatie van je bezoeker zal gokken op basis van de taalinstelling die men gebruikt. %1$sLees dit%2$s om te ontdekken hoe je geolocatie nauwkeuriger kunt inregelen.",
|
||||
"DistinctCountries": "%s opvallende landen",
|
||||
"DownloadingDb": "%s aan het downloaden",
|
||||
"DownloadNewDatabasesEvery": "Update databases elke",
|
||||
"FatalErrorDuringDownload": "Er is iets mis gegaan bij het downloaden van het bestand. Er kan iets mis zijn met je internet verbinding, met de GeoIP database die je download of met Matomo. Probeer het handmatig te downloaden en te installeren.",
|
||||
"FoundApacheModules": "Matomo vond de volgende Apache-modules",
|
||||
"FromDifferentCities": "verschillende steden",
|
||||
"GeoIPCannotFindMbstringExtension": "Kan de functie %1$s niet vinden. Zorg ervoor dat de extensie %2$s geïnstalleerd en geladen is.",
|
||||
"GeoIPDatabases": "GeoIP Databases",
|
||||
"GeoIPDocumentationSuffix": "Om data in dit rapport te kunnen weergeven, moet je GeoIP inregelen in de beheer tab. De commerciële %1$sMaxmind%2$s GeoIP databases zijn nauwkeuriger dan de gratis versies. Om te zien hoe nauwkeurig ze zijn, klik %3$shier%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Deze GeoIP implementatie heeft toegang tot de volgende database types",
|
||||
"GeoIPIncorrectDatabaseFormat": "Je GeoIP database lijkt niet het juiste formaat te zijn. Het kan corrupt zijn. Zorg ervoor dat je de binaire versie hebt, en probeer het te vervangen door een nieuw bestand.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Deze locatie provider gebruikt een GeoIP database en PECL module om precies en efficiënt de locatie van je gebruikers te bepalen.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "We raden deze provider aan omdat deze geen limieten hanteert.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Deze locatieprovider is de meest simpele om te installeren, omdat het geen serverconfiguratie vereist (ideaal voor gedeelde hosting!). Het gebruikt een GeoIP-database en de PHP API van MaxMind om nauwkeurig de locatie van uw bezoekers te bepalen.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Als uw website veel verkeer ontvangt, kunt u deze locatieprovider misschien te traag vinden. In dat geval, moet u de %1$sPECL-extensie%2$s of een %3$sservermodule%4$s installeren.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geografische locatie bepaling werkt, maar je gebruikt niet één van de aanbevolen leveranciers.",
|
||||
"GeoIPNoServerVars": "Matomo kan geen GeoIP %s variabelen vinden.",
|
||||
"GeoIPPeclCustomDirNotSet": "De %s PHP ini optie is niet ingesteld.",
|
||||
"GeoIPServerVarsFound": "Matomo detecteert de volgende GeoIP %s variabelen",
|
||||
"GeoIPUpdaterIntro": "Matomo beheert momenteel updates voor de volgende GeoIP databases",
|
||||
"GeoLiteCityLink": "Als u de GeoLite City database gebruikt, gebruik dan deze link: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocatie",
|
||||
"GeolocationPageDesc": "Op deze pagina kunt u instellen hoe Matomo bezoekerlocaties bepaald.",
|
||||
"getCityDocumentation": "Dit rapport laat zien in welke stad uw bezoekers waren toen ze uw website bezochten.",
|
||||
"getContinentDocumentation": "Dit rapport laat zien in welk continent uw bezoekers waren toen ze uw website bezochten.",
|
||||
"getCountryDocumentation": "Dit rapport laat zien in welk land uw bezoekers waren toen ze uw website bezochten.",
|
||||
"getRegionDocumentation": "Dit rapport laat zien in welke regio uw bezoekers waren toen ze uw website bezochten.",
|
||||
"HowToInstallApacheModule": "Hoe installeer ik de GeoIP module voor Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Hoe krijg ik de GeoIP-databases?",
|
||||
"HowToInstallGeoIpPecl": "Hoe installeer ik de GeoIP PECL-extensie?",
|
||||
"HowToInstallNginxModule": "Hoe installeer ik de GeoIP-module voor Nginx?",
|
||||
"HowToSetupGeoIP": "Hoe stel ik precieze geolocatie in met GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sDownload%2$s de GeoLite City database van %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Pak dit bestand uit en kopieer het resultaat, %1$s in de %2$smisc%3$s Matomo directory (u kunt dit doen met FTP of SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Herlaad dit scherm. De %1$sGeoIP (PHP)%2$s provider zal nu worden %3$sgeïnstalleerd%4$s. Selecteer deze.",
|
||||
"HowToSetupGeoIP_Step4": "Klaar! U heeft zojuist Matomo ingesteld om GeoIP te gebruiken. U kunt nu zien uit welke regio's en steden uw bezoekers komen i.c.m. zeer accurate informatie over het land van herkomst.",
|
||||
"HttpServerModule": "HTTP Server Module",
|
||||
"InvalidGeoIPUpdatePeriod": "Ongeldige periode voor de GeoIP updater: %1$s. Geldige waardes zijn %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Ik heb meerdere %1$saccurate databases gekocht van MaxMins%2$s en wil deze automatisch updates laten uitvoeren.",
|
||||
"ISPDatabase": "ISP-database",
|
||||
"IWantToDownloadFreeGeoIP": "Ik wil de gratis GeoIP database downloaden...",
|
||||
"Latitude": "Latitude",
|
||||
"Latitudes": "Latitudes",
|
||||
"Location": "Locatie",
|
||||
"LocationDatabase": "Locatiedatabase",
|
||||
"LocationDatabaseHint": "Een locatie database is of een land of een regio of een stad database.",
|
||||
"LocationProvider": "Locatie Provider",
|
||||
"Longitude": "Longitude",
|
||||
"Longitudes": "Longitudes",
|
||||
"NoDataForGeoIPReport1": "Er zijn geen gegevens voor dit rapport omdat er geen lokatie informatie beschikbaar is of omdat het bezoekers IP adres niet geografisch bepaald kan worden.",
|
||||
"NoDataForGeoIPReport2": "Om accurate geolocatie te activeren, pas de instellingen %1$shier%2$s gebruik een %3$sstads level database%4$s.",
|
||||
"Organization": "Organisatie",
|
||||
"OrgDatabase": "Organisatiedatabase",
|
||||
"PeclGeoIPNoDBDir": "De PECL-module zoekt naar databases in %1$s, maar deze map bestaat niet. Maak deze aan en voeg de GeoIP-databases daaraan toe. In plaats daarvan, kunt u %2$s instellen naar de juiste map in uw php.ini-bestand.",
|
||||
"PeclGeoLiteError": "Je GeoIP database in %1$s heeft de naam %2$s. Helaas zal de PECL module deze niet herkennen. Hernoem de database naar %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo beheert momenteel geen GeoIP databases.",
|
||||
"PluginDescription": "Rapporteert de locatie van je bezoekers: Land, regio, stad en coördinaten (lengte- en breedtegraad)",
|
||||
"Region": "Regio",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Stel automatische updates van GeoIP databases in",
|
||||
"SubmenuLocations": "Locaties",
|
||||
"TestIPLocatorFailed": "Matomo probeert een bekend IP-adres(%1$s) te controleren, maar ontvangt %2$s van de server. Wanneer deze provider juist geconfigureerd is ontvangt deze %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Het gedownloade bestand is geen valide GeoIP database. Controleer de link a.u.b. opnieuw, of download het bestand handmatig.",
|
||||
"ToGeolocateOldVisits": "Om locatie data voor oude bezoeken te krijgen, gebruik het %1$shier%2$s beschreven script.",
|
||||
"UnsupportedArchiveType": "Niet ondersteund archieftype aangetroffen %1$s.",
|
||||
"UpdaterHasNotBeenRun": "De updater is nog niet eerder uitgevoerd.",
|
||||
"UpdaterIsNotScheduledToRun": "Het is niet gepland om te worden uitgevoerd in de toekomst.",
|
||||
"UpdaterScheduledForNextRun": "Het is ingepland om uitgevoerd te worden tijdens de volgende commando core:archive.",
|
||||
"UpdaterWasLastRun": "De updater is voor het laatst uitgevoerd op %s.",
|
||||
"UpdaterWillRunNext": "De volgende run is gepland om %s",
|
||||
"WidgetLocation": "Bezoekerlocatie"
|
||||
}
|
||||
}
|
13
msd2/tracking/piwik/plugins/UserCountry/lang/nn.json
Normal file
13
msd2/tracking/piwik/plugins/UserCountry/lang/nn.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"Continent": "Kontinent",
|
||||
"Country": "Land",
|
||||
"country_a1": "Anonym mellomtenar",
|
||||
"country_a2": "Satelitt-tilbydar",
|
||||
"country_cat": "Katalanske område",
|
||||
"country_o1": "Andre land",
|
||||
"DistinctCountries": "%s distinkte land",
|
||||
"Location": "Plass",
|
||||
"SubmenuLocations": "Plassar"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/pl.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/pl.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Nie można znaleźć funkcji apache_get_modules co oznacza, że zainstalowano serwer inny niż Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Nie udało się odnaleźć pliku %1$s w archiwum tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Zmienna %s nie została ustawiona. Twój serwer mógł zostać niepoprawnie skonfigurowany.",
|
||||
"CannotFindPeclGeoIPDb": "Nie udało się odnaleźć bazy danych kraju, regionu lub miasta wykorzystywanej przez moduł GeoIP PECL. Upewnij się, że Twoja baza danych znajduje się w %1$s i nazywa się %2$s lub %3$s. W przeciwnym przypadku moduł PECL nie będzie w stanie z niej skorzystać.",
|
||||
"CannotListContent": "Błąd wyświetlenia zawartości %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "Adres IP %s jest adresem lokalnym i nie można go poddać geolokacji.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Zdaje się, że przechowujesz swoje bazy GeoIP poza Matomo'ie (możemy to stwierdzić ponieważ brakuje ich w katalogu misc Matomo'a, ale geolokalizacja działa). W takim przypadku Matomo nie będzie w stanie automatycznie aktualizować baz GeoIP.",
|
||||
"CannotUnzipDatFile": "Nie udało się rozpakować plików dat w %1$s: %2$s",
|
||||
"City": "Miasto",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontynent",
|
||||
"Continents": "Kontynenty",
|
||||
"Country": "Kraj",
|
||||
"country_a1": "Anonimowe Proxy",
|
||||
"country_a2": "Dostawca satelitarny",
|
||||
"country_cat": "społeczność mówiąca po Katalońsku",
|
||||
"country_o1": "Nieokreślony kraj pochodzenia",
|
||||
"VisitLocation": "Lokalizacja odwiedzającego",
|
||||
"CurrentLocationIntro": "Według tego dostawcy, twoją aktualną lokalizacją jest",
|
||||
"DefaultLocationProviderDesc1": "Domyślny dostawca usług geolokacyjnych zgaduje państwo odwiedzającego na podstawie języka używanego w przeglądarce.",
|
||||
"DefaultLocationProviderDesc2": "Ten sposób określania lokalizacji jest bardzo niedokładny, dlatego %1$szalecamy zainstalowanie i korzystanie z %2$sGeoIP%3$s. %4$s",
|
||||
"DefaultLocationProviderExplanation": "Korzystasz z domyślnego dostawcy usług geolokalizacyjnych, co oznacza, że Matomo zgaduje lokalizację odwiedzającego na podstawie języka jego przeglądarki. %1$sPrzeczytaj%2$s aby dowiedzieć się jak skonfigurować dokładniejszą geolokalizację.",
|
||||
"DistinctCountries": "%s różnych krajów",
|
||||
"DownloadingDb": "Pobieranie %s",
|
||||
"DownloadNewDatabasesEvery": "Zaktualizuj bazę danych co",
|
||||
"FatalErrorDuringDownload": "Podczas pobierania pliku wystąpił błąd krytyczny. Coś mogło się stać z Twoim połączeniem internetowym, pobieraną bazą GeoIP lub Matomo'iem.Spróbuj pobrać i zainstalować ręcznie.",
|
||||
"FoundApacheModules": "Matomo znalazł następujące moduły Apache",
|
||||
"FromDifferentCities": "różne miasta",
|
||||
"GeoIPCannotFindMbstringExtension": "Nie udało się odnaleźć funkcji %1$s. Proszę upewnij się, że rozszerzenie %2$s jest zainstalowane i załadowane.",
|
||||
"GeoIPDatabases": "Bazy danych GeoIP",
|
||||
"GeoIPDocumentationSuffix": "W celu wyświetlenia danych tego raportu konieczna jest konfiguracja GeoIP w zakładce Geolokalizacja panelu administracyjnego. Płatne bazy GeoIP dostarczane przez %1$sMaxmind%2$s cechuje wyższa dokładność od baz bezpłatnych. Aby porównać ich dokładność kliknij %3$stutaj%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Ta implementacja GeoIP nie znalazła bazy danych geolokalizacyjnych.",
|
||||
"GeoIPImplHasAccessTo": "Ta implementacja GeoIP ma dostęp do następujących typów baz danych",
|
||||
"GeoIPIncorrectDatabaseFormat": "Twoja baza GeoIP ma niepoprawny format. Może być uszkodzona. Dopilnuj by używać wersji binarnej i spróbuj podmienić bazę na nową kopię.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Ten dostawca usług geolokalizacyjnych korzysta z bazy GeoIP i modułu PECL, aby dokładnie i efektywnie określić lokalizację odwiedzających.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Ten dostawca nie podlega żadnym ograniczeniom w działaniu, dlatego polecamy jego używanie.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Ten dostawca usług geolokalizacyjnych jest najprostszym do instalacji, ponieważ nie wymaga konfiguracji serwera (idealny dla hostingu współdzielonego!). Wykorzystuje bazę GeoIP i opracowane przez MaxMind API PHP do dokładnego określania lokalizacji Twoich odwiedzających.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Jeżeli twoja strona ma bardzo dużo ruchu, ten dostawca usług lokacyjnych może okazać się za wolny. W takim wypadku zaleca się instalację %1$srozszerzenia PECL%2$s lub %3$smoduło serverowego%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Ten dostawca usług geolokalizacyjnych korzysta z modułu GeoIP zainstalowanego w Twoim serwerze HTTP.Ten dostawca jest szybki i dokładny, jednak %1$smoże być wykorzystywany wyłącznie do normalnego śledzenia.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Gdy importujesz pliki logów lub robisz coś innego, co może wymagać ustawienia adresu IP, użyj %1$simplementacji GeoIP PECL (rekomendowana)%2$s lub %3$simplementacji GeoIP PHP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "NOTKA: Anonimizacja IP nie wywiera żadnego efektu gdy jest używana z tym dostawcą. Przed użyciem anonimizacji adresów IP, upewnij się, iż nie narusza ono żadnych praw do prywatności, który może podlegać.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolokacja działa, ale nie używasz rekomendowanego dostawcy.",
|
||||
"GeoIPNoServerVars": "Matomo nie może znaleźć żadnych zmiennych %s GeoIP",
|
||||
"GeoIPPeclCustomDirNotSet": "Opcja %s w pliku PHP ini nie została ustawiona.",
|
||||
"GeoIPServerVarsFound": "Matomo wykrył następujące zmienne GeoIP %s",
|
||||
"GeoIPUpdaterInstructions": "Wprowadź poniżej linki do twoich baz danych. Jeżeli bazy zostały zakupione od %3$sMaxMind%4$s, możesz znaleźć takowe linki %1$stutaj%2$s. W przypadku problemów z dostępem do plików, należy kontaktować się z %3$sMaxMind%4$s.",
|
||||
"GeoIPUpdaterIntro": "Matomo zarządza aktualizacjami dla następujących baz GeoIP",
|
||||
"GeoLiteCityLink": "W przypadku używania darmowej bazy GeoLite Miasta, użyj tego linka: %1$s%2$s%3$s",
|
||||
"Geolocation": "Geolokalizacja",
|
||||
"GeolocationPageDesc": "Na tej stronie można zmienić sposób wykrywania lokalizacji odwiedzających stosowany przez Matomo'a.",
|
||||
"getCityDocumentation": "Raport ten pokazuje miasta, w których przebywali odwiedzający gdy whcodzili na stronę.",
|
||||
"getContinentDocumentation": "Raport then pokazuje kraje, w których byli odwiedzający gdzy oglądali strony.",
|
||||
"getCountryDocumentation": "Ten raport pokazuje, w którym kraju był odwiedzający kiedy wchodził na twoją stronę.",
|
||||
"getRegionDocumentation": "Ten raport pokazuje,w którym regionie był odwiedzający kiedy wchodził na twoją stronę.",
|
||||
"HowToInstallApacheModule": "W jaki sposób zainstaluję moduł GeoIP dla Apache?",
|
||||
"HowToInstallGeoIPDatabases": "W jaki sposób pobiorę bazy GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "W jaki sposób zainstaluję rozszerzenie GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "W jaki sposób zainstaluję moduł GeoIP dla Nginx?",
|
||||
"HowToSetupGeoIP": "Jak ustawić dokładną geolokalizację z GeoIP?",
|
||||
"HowToSetupGeoIP_Step1": "%1$sPobierz%2$s bazę GeoLite City z %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Rozpakuj ten plik i skopuj jego zawartość %1$s do katalogu %2$smisc%3$s Matomo'a (możesz to zrobić poprzez FTP lub SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Odśwież tą stronę. Dostawca %1$sGeoIP (PHP)%2$s zostanie teraz %3$szainstalowany%4$s. Wybierz go.",
|
||||
"HowToSetupGeoIP_Step4": "No i skończone! Teraz tylko ustaw Matomo'a, żeby korzystał z GeoIP, co dla Ciebie oznacza, że zobaczysz regiony i miasta Twoich odwiedzających razem z bardzo dokładną informacją o kraju.",
|
||||
"HowToSetupGeoIPIntro": "Wygląda na to, że nie skonfigurowałeś dokładnej Geolokalizacji. To przydatna funkcjonalność, bez której nie zobaczysz dokładnych i kompletnych informacji o swoich odwiedzających. Zobacz, jak szybko rozpocząć korzystanie z niej:",
|
||||
"HttpServerModule": "Moduł Serwera HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Błędny przedział dla aktualizatora GeoIP: %1$s. Prawidłowe wartości to %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Zakupiłem %1$sdokładniejsze bazy danych od MaxMind%2$s i chcę uruchomić automatyczne aktualizacje.",
|
||||
"ISPDatabase": "Baza dostawców internetowych",
|
||||
"IWantToDownloadFreeGeoIP": "Chcę ściągnąć darmową bazę GeoIP...",
|
||||
"Latitude": "Szerokość",
|
||||
"Latitudes": "Szerokości",
|
||||
"Location": "Lokalizacja",
|
||||
"LocationDatabase": "Baza lokalizacji",
|
||||
"LocationDatabaseHint": "Baza lokalizacji to baza krajów, regionów lub miast.",
|
||||
"LocationProvider": "Dostawca Lokalizacji",
|
||||
"Longitude": "Długość",
|
||||
"Longitudes": "Długości",
|
||||
"NoDataForGeoIPReport1": "Brak danych dla tego raportu ponieważ albo dane lokalizacyjne nie są dostępne albo adres IP odwiedzającego nie może zostać zlokalizowany",
|
||||
"NoDataForGeoIPReport2": "Aby włączyć dokładną geolokalizację, zmień %1$ste ustawienia%2$s i użyj %3$sbazy lokalizacji o dokładności miasta%4$s.",
|
||||
"Organization": "Organizacja",
|
||||
"OrgDatabase": "Baza Danych Organizacji",
|
||||
"PeclGeoIPNoDBDir": "Moduł PECL przeszukuje %1$s w poszukiwaniu baz danych, lecz wskazany katalog nie istnieje. Proszę utwórz go i umieść w nim bazy GeoIP. Alternatywnie możesz wskazać %2$s właściwy katalog w swoim pliku php.ini.",
|
||||
"PeclGeoLiteError": "Twoja baza GeoIP w %1$s nazywa się %2$s. Niestety moduł PECL nie jest w stanie rozpoznać go po tej nazwie. Proszę zmień tą nazwę na %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo nie zarządza obecnie żadną baza danych GeoIP.",
|
||||
"PluginDescription": "Informuje o położeniu Twoich odwiedzających: kraju, regionie, mieście i koordynatach geograficznych (szerokość \/ długość geograficzna).",
|
||||
"Region": "Region",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Ustaw automatyczne aktualizacje dla bazy danych GeoIP",
|
||||
"SubmenuLocations": "Lokalizacje",
|
||||
"TestIPLocatorFailed": "Matomo próbował sprawdzić lokalizację znanego adresu IP (%1$s), lecz Twój serwer zwrócił %2$s. Jeśli ten dostawca zostałby poprawnie skonfigurowany, zwróciłby %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Pobrany plik nie jest poprawną bazą GeoIP. Proszę sprawdź ponownie adres URL lub pobierz plik ręcznie.",
|
||||
"ToGeolocateOldVisits": "Aby ustalić lokalizację archiwalnych wizyt użyj skryptu opisanego %1$stutaj%2$s.",
|
||||
"UnsupportedArchiveType": "Napotkano nieobsługiwany typ archiwum %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Aktualizacja nie była jeszcze uruchamiana.",
|
||||
"UpdaterIsNotScheduledToRun": "Nie zaplanowano kolejnego przebiegu.",
|
||||
"UpdaterScheduledForNextRun": "Zostało zaplanowane kolejne wykonanie skryptu podczas najbliższego wykonania polecenia core:archive.",
|
||||
"UpdaterWasLastRun": "Ostatnia aktualizacja odbyła się %s.",
|
||||
"UpdaterWillRunNext": "Następna aktualizacja zaplanowana na %s.",
|
||||
"WidgetLocation": "Lokalizacja odwiedzającego"
|
||||
}
|
||||
}
|
97
msd2/tracking/piwik/plugins/UserCountry/lang/pt-br.json
Normal file
97
msd2/tracking/piwik/plugins/UserCountry/lang/pt-br.json
Normal file
@ -0,0 +1,97 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Não é possível encontrar a função apache_get_modules, assumindo servidor web não-Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Não pode localizar o arquivo %1$s dentro do arquivo tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "A variável %s não está definida. O servidor pode não estar configurado corretamente.",
|
||||
"CannotFindPeclGeoIPDb": "Não foi possível encontrar um banco de dados de país, região ou cidade para o módulo PECL GeoIP. Verifique se o seu banco de dados GeoIP está localizado em %1$s e é nomeado %2$s ou %3$s de outra forma o módulo PECL não vai advertê-lo.",
|
||||
"CannotListContent": "Não foi possível listar o conteúdo para %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "O endereço IP %s é um endereço local e não pode ser geolocalizado.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Parece que você está armazenando seus bancos de dados GeoIP fora do Matomo (podemos dizer, pois não existem bancos de dados no subdiretório Misc, mas o seu GeoIP está funcionando). Matomo não pode atualizar automaticamente seus bancos de dados GeoIP se estiverem localizados fora do diretório misc.",
|
||||
"CannotUnzipDatFile": "Não pôde descompactar o arquivo dat em %1$s: %2$s",
|
||||
"City": "Cidade",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continente",
|
||||
"Country": "País",
|
||||
"country_a1": "Proxy anônimo",
|
||||
"country_a2": "Provedor de satélite",
|
||||
"country_cat": "Comunidades Catalães",
|
||||
"country_o1": "Outro país",
|
||||
"CurrentLocationIntro": "De acordo com este provedor, sua localização é",
|
||||
"DefaultLocationProviderDesc1": "Detecta a localização padrão de um visitante baseando-se no idioma que ele usa",
|
||||
"DefaultLocationProviderDesc2": "Isso não é muito preciso, então %1$s nós recomendamos a instalação e utilização de %2$s GeoIP %3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Você está usando o provedor de localização padrão, que significa que o Matomo irá supor a localização do visitante, baseado no idioma que eles usam. %1$sLeia isso%2$s para aprender como configurar uma geolocalização mais precisa.",
|
||||
"DistinctCountries": "%s países distintos",
|
||||
"DownloadingDb": "Baixando %s",
|
||||
"DownloadNewDatabasesEvery": "Atualiza o banco de dados a cada",
|
||||
"FatalErrorDuringDownload": "Um erro fatal ocorreu durante o download deste arquivo. Pode haver algo de errado com sua conexão de internet, com o banco de dados GeoIP que você baixou ou Matomo. Tente fazer o download e instalá-lo manualmente.",
|
||||
"FoundApacheModules": "Matomo encontrou os seguintes módulos do Apache",
|
||||
"FromDifferentCities": "cidades diferentes",
|
||||
"GeoIPCannotFindMbstringExtension": "Não é possível encontrar a função %1$s. Por favor, certifique-se que a extensão %2$s está instalada e carregada.",
|
||||
"GeoIPDatabases": "GeoIP Databases",
|
||||
"GeoIPDocumentationSuffix": "Para ver os dados para este relatório, você deve configurar GeoIP na guia de administração de Geolocalização. Os %1$s banco de dados GeoIP Maxmind comerciais %2$s são mais precisos que os livres. Para ver como são precisos, clique %3$saqui%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Esta implementação GeoIP tem acesso aos seguintes tipos de bancos de dados",
|
||||
"GeoIPIncorrectDatabaseFormat": "Seu banco de dados GeoIP não parece ter o formato correto. Ele pode estar corrompido. Certifique-se de que você está usando a versão binária e tente substituí-lo com outra cópia.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Esse provedor de localização utiliza um banco de dados GeoIP e um módulo PECL para de forma precisa e eficaz determinar a localização seus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Não existem limitações com este fornecedor, por isso é o que nós recomendamos usar.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Este provedor de localização é o mais simples de instalar, pois não necessita de configuração do servidor (ideal para hospedagem compartilhada!). Ele usa um banco de dados GeoIP MaxMind PHP API para determinar com precisão a localização de seus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Se o seu site recebe uma grande quantidade de tráfego, você pode achar que o provedor de localização está muito lento. Neste caso, você deve instalar a extensão %1$s PECL %2$s ou o %3$s módulo do servidor %4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Este provedor de localização utiliza o módulo GeoIP que foi instalado em seu servidor HTTP. Este provedor é rápido e preciso, mas %1$s só pode ser usado com acompanhamento browser normal. %2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Se você tiver que importar arquivos de log ou fazer outra coisa que requer o estabelecimento de endereços IP, use a %1$s implementação PECL GeoIP (recomendado) %2$s ou %3$s PHP implementação GeoIP %4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Nota: anonimização IP não tem efeito sobre os locais relatados por este fornecedor. Antes de usá-lo com anonimização IP, certifique-se isso não viole as leis de privacidade que você pode estar sujeito.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolocalização funciona, mas você não está usando um dos provedores recomendados.",
|
||||
"GeoIPNoServerVars": "Matomo não pode encontrar nenhuma variável GeoIP %s.",
|
||||
"GeoIPPeclCustomDirNotSet": "A opção %s do PHP.ini não está definido.",
|
||||
"GeoIPServerVarsFound": "Matomo detecta as seguintes variáveis GeoIP %s",
|
||||
"GeoIPUpdaterInstructions": "Digite os links para download de seus bancos de dados abaixo. Se você comprou bancos de dados de %3$s MaxMind %4$s, você pode encontrar esses links %1$s aqui %2$s. Entre em contato com %3$s MaxMind %4$s, se você tiver problemas para acessá-los.",
|
||||
"GeoIPUpdaterIntro": "Matomo gerencia atualmente as atualizações para os seguintes bancos de dados GeoIP",
|
||||
"GeoLiteCityLink": "Se você estiver usando o banco de dados Cidade GeoLite, use este link: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocalização",
|
||||
"GeolocationPageDesc": "Nesta página você pode mudar a forma como Matomo determina localização dos visitantes.",
|
||||
"getCityDocumentation": "Este relatório mostra as cidades que seus visitantes estavam quando acessou seu site.",
|
||||
"getContinentDocumentation": "Este relatório mostra qual continente seus visitantes estavam quando acessaram o site.",
|
||||
"getCountryDocumentation": "Este relatório mostra qual país seus visitantes estavam quando acessaram o site.",
|
||||
"getRegionDocumentation": "Este relatório mostra que região os visitantes estavam quando acessaram seu site.",
|
||||
"HowToInstallApacheModule": "Como faço para instalar o módulo GeoIP para o Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Como eu consigo as bases GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Como faço para instalar a extensão GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Como faço para instalar o módulo GeoIP para Nginx?",
|
||||
"HowToSetupGeoIP": "Como configurar geolocalização exata com GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sDownload%2$s do banco de dados GeoLite City de %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Estraia este arquivo e copie o conteúdo %1$s no diretório %2$smisc%3$s do Matomo (você pode fazer isso por FTP ou SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Atualize essa tela. O %1$s Provedor GeoIP (PHP) %2$s agora será de %3$sinstalado%4$s. Selecione-o.",
|
||||
"HowToSetupGeoIP_Step4": "E está feito! Você acabou de configurar Matomo para usar GeoIP, o que significa que você vai ser capaz de ver as regiões e cidades de seus visitantes, juntamente com informações muito precisas sobre o país.",
|
||||
"HowToSetupGeoIPIntro": "Aparentemente você não possui configurações precisas de geolocalização. Este é um recurso útil e sem ele você não verá as informações de localização precisas e completas para os seus visitantes. Veja como você pode rapidamente começar a usá-lo:",
|
||||
"HttpServerModule": "Módulo do servidor HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Período inválido para o atualizador GeoIP: %1$s. Os valores válidos são %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Eu comprei %1$s bases de dados mais precisas de MaxMind %2$s e quero configurar as atualizações automáticas.",
|
||||
"ISPDatabase": "Banco de dados ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Quero baixar o banco de dados GeoIP livre...",
|
||||
"Latitude": "Latitude",
|
||||
"Location": "Localização",
|
||||
"LocationDatabase": "Banco de dados de localização",
|
||||
"LocationDatabaseHint": "Um banco de dados de locais, um banco de dados de país, região ou cidade.",
|
||||
"LocationProvider": "Provedor de localização",
|
||||
"Longitude": "Longitude",
|
||||
"NoDataForGeoIPReport1": "Não há dados para este relatório porque não há nenhum dado de localização disponível ou o endereço IP do visitante não pode ser geolocalizado.",
|
||||
"NoDataForGeoIPReport2": "Para ativar ageolocalização mais precisa, mudar a configuração %1$s aqui%2$s e usar um %3$s banco de dados no nível de cidade %4$s.",
|
||||
"Organization": "Organização",
|
||||
"OrgDatabase": "Banco de dados da organização",
|
||||
"PeclGeoIPNoDBDir": "O módulo PECL está à procura de bancos de dados em %1$s mas este diretório não existe. Por favor, crie-o e adicione as bases de dados GeoIP a ele. Como alternativa, você pode definir %2$s para o diretório correto em seu arquivo php.ini.",
|
||||
"PeclGeoLiteError": "Seu banco de dados GeoIP em %1$s é nomeado %2$s. Infelizmente, o módulo PECL não irá reconhecê-lo com este nome. Por favor, mude o nome para %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo atualmente não gerencia nenhuma base de dados GeoIP.",
|
||||
"PluginDescription": "Informa a localização de seus visitantes: país, região, cidade e coordenadas geográficas (latitude \/ longitude).",
|
||||
"Region": "Região",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Configurar as atualizações automáticas de bancos de dados GeoIP",
|
||||
"SubmenuLocations": "Locais",
|
||||
"TestIPLocatorFailed": "Matomo tentou verificar a localização de um endereço IP conhecido (%1$s), mas o servidor retornou %2$s. Se este provedor estivsse configurado corretamente, ele voltaria %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "O arquivo baixado não é um banco de dados GeoIP válido. Por favor, verifique novamente a URL ou baixar o arquivo manualmente.",
|
||||
"ToGeolocateOldVisits": "Para obter os dados de localização para as suas visitas antigas, use o script descrito %1$s aqui %2$s.",
|
||||
"UnsupportedArchiveType": "Encontrado tipo de arquivo não suportado %1$s.",
|
||||
"UpdaterHasNotBeenRun": "O atualizador nunca foi executado.",
|
||||
"UpdaterIsNotScheduledToRun": "Não está agendado para ser executado no futuro.",
|
||||
"UpdaterScheduledForNextRun": "Está programado para ser executado durante a próxima execução do cron job archive.php",
|
||||
"UpdaterWasLastRun": "O atualizador foi executado pela última vez em %s.",
|
||||
"UpdaterWillRunNext": "A próxima execução está programada para ser executada em %s.",
|
||||
"WidgetLocation": "Localização dos visitantes"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/pt.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/pt.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Não foi possível encontrar a função apache_get_modules; assumindo um servidor web não-Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Não foi possível encontrar o ficheiro %1$s no arquivo tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "A variável %s não está definida. O seu servidor pode não estar configurado corretamente.",
|
||||
"CannotFindPeclGeoIPDb": "Não foi possível encontrar uma base de dados para um país, região ou cidade para o módulo PECL GeoIP. Confirme que a sua base de dados GeoIP está localizada em %1$s e que tem o nome %2$s ou %3$s, caso contrário o módulo PECL não a irá encontrar.",
|
||||
"CannotListContent": "Não foi possível listar o conteúdo para %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "O endereço de IP %s é um endereço local e não pode ser geolocalizado.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Parece que está a armazenar as suas bases de dados do GeoIP fora do Matomo (nós sabemos porque não existem base de dados no sub-diretório misc, mas o seu GeoIP está a funcionar). O Matomo não pode atualizar automaticamente as suas bases de dados GeoIP se estas estiverem fora do diretório misc.",
|
||||
"CannotUnzipDatFile": "Não foi possível extrair o ficheiro dat em %1$s: %2$s",
|
||||
"City": "Cidade",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continente",
|
||||
"Continents": "Continentes",
|
||||
"Country": "País",
|
||||
"country_a1": "Proxy anónimo",
|
||||
"country_a2": "Fornecedor por satélite",
|
||||
"country_cat": "Comunidades língua Catalã",
|
||||
"country_o1": "Outro país",
|
||||
"VisitLocation": "Localização da visita",
|
||||
"CurrentLocationIntro": "De acordo com este fornecedor, a sua localização atual é",
|
||||
"DefaultLocationProviderDesc1": "O fornecedor de localização predefinido estima o país de um visitante com base no idioma que este utiliza.",
|
||||
"DefaultLocationProviderDesc2": "Isto não é muito preciso, pelo que %1$srecomendamos a instalação e utilização do %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Está a utilizar o fornecedor de localização predefinido, o que significa que o Matomo irá estimar a localização do visitante com base no idioma que este utiliza. %1$sConsulte isto%2$s para saber como configurar uma geolocalização mais precisa.",
|
||||
"DistinctCountries": "%s países distintos",
|
||||
"DownloadingDb": "A descarregar %s",
|
||||
"DownloadNewDatabasesEvery": "Atualizar bases de dados todos\/todas",
|
||||
"FatalErrorDuringDownload": "Ocorreu um erro fatal ao transferir este ficheiro. Pode existir um problema com sua ligação à Internet, com a base de dados GeoIP que transferiu ou com o Matomo. Tente transferir e instalar o mesmo manualmente.",
|
||||
"FoundApacheModules": "O Matomo encontrou os seguintes módulos Apache",
|
||||
"FromDifferentCities": "cidades diferentes",
|
||||
"GeoIPCannotFindMbstringExtension": "Não foi possível encontrar a função %1$s. Por favor, confirme que a extensão %2$s está instalada e carregada.",
|
||||
"GeoIPDatabases": "Bases de dados GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Para ver dados para este relatório, deve configurar o GeoIP no separador de administração da Geolocalização. As bases de dados comerciais %1$sMaxmind%2$s são mais precisas do que as gratuitas. Para ver quão precisas estas são, clique %3$saqui%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Esta implementação do GeoIP não conseguiu encontrar qualquer base de dados.",
|
||||
"GeoIPImplHasAccessTo": "Esta implementação do GeoIP tem acesso aos seguintes tipos de bases de dados",
|
||||
"GeoIPIncorrectDatabaseFormat": "A sua base de dados GeoIP não parece ter o formato correto. Pode estar corrompida. Confirme que está a utilizar a versão binária e tente substituí-la por outra cópia.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Este fornecedor de localização utiliza uma base de dados GeoIP e um módulo PECL para determinar com precisão e eficiência a localização dos seus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Não existem limitações com este fornecedor, pelo que recomendamos a utilização do mesmo.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Este fornecedor de localização é o mais simples de instalar e não requer uma configuração do servidor (ideal para alojamentos partilhados). Utiliza uma base de dados GeoIP e a API PHP do MaxMind para determinar com precisão a localização dos seus visitantes.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Se o seu site tiver muito tráfego, pode descobrir que este fornecedor de localização é demasiado lento. Neste caso, deve instalar a %1$sextensão PECL%2$s ou um %3$smódulo de servidor%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Este fornecedor de localização utiliza o módulo GeoIP que foi instalado no seu servidor HTTP. Este fornecedor é rápido e preciso, mas %1$ssó pode ser utilizado para acompanhamento normal de navegadores.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Se tiver de importar ficheiros de registo ou fazer algo mais que necessite a definição de endereços de IP, utilize a %1$simplementação PECL do GeoIP (recomendado)%2$s ou a %3$simplementação PHP dp GeoIP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Nota: a anonimização de IPs não tem qualquer efeito nas localizações reportadas por este fornecedor. Antes de o utilizar com a anonimização de IPs, confirme que este não viola quaisquer leis de privacidade que sejam aplicáveis a si.",
|
||||
"GeoIpLocationProviderNotRecomnended": "A geolocalização funciona, mas não está a utilizar um dos fornecedores recomendados.",
|
||||
"GeoIPNoServerVars": "O Matomo não consegue encontrar quaisquer variáveis GeoIP %s.",
|
||||
"GeoIPPeclCustomDirNotSet": "A opção ini do PHP %s não está definida.",
|
||||
"GeoIPServerVarsFound": "O Matomo deteta as seguintes variáveis GeoIP %s",
|
||||
"GeoIPUpdaterInstructions": "Introduza as ligações de transferência abaixo para as suas bases de dados do %3$sMaxMind%4$s; pode encontrar estas ligações %1$saqui%2$s. Por favor, contacte o %3$sMaxMind%4$s se tiver problemas em aceder às mesmas.",
|
||||
"GeoIPUpdaterIntro": "Atualmente o Matomo está a gerir as atualizações para as seguintes bases de dados GeoIP",
|
||||
"GeoLiteCityLink": "Se estiver a utilizar uma base de dados GeoLite City, utilize esta ligação: %1$s%2$s%3$s",
|
||||
"Geolocation": "Geolocalização",
|
||||
"GeolocationPageDesc": "Nesta página pode alterar como o Matomo determina as localizações dos visitantes.",
|
||||
"getCityDocumentation": "Este relatório mostra as cidades onde os seus visitantes estavam quando acederam ao seu site.",
|
||||
"getContinentDocumentation": "Este relatório mostra o continente onde os seus visitantes estavam quando acederam ao seu site.",
|
||||
"getCountryDocumentation": "Este relatório mostra o país onde os seus visitantes estavam quando acederam ao seu site.",
|
||||
"getRegionDocumentation": "Este relatório mostra a região onde os seus visitantes estavam quando acederam ao seu site.",
|
||||
"HowToInstallApacheModule": "Como instalo o módulo GeoIP para o Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Como obtenho as bases de dados GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Como instalo a extensão PECL GeoIP?",
|
||||
"HowToInstallNginxModule": "Como instalo o módulo GeoIP para o Nginx?",
|
||||
"HowToSetupGeoIP": "Como configuro uma geolocalização precisa com o GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sTransfira%2$s a base de dados GeoLite City de %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extraia este ficheiro e copie o resultado, %1$s para o sub-diretório %2$smisc%3$s do Matomo (pode fazer isto por FTP ou SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Recarregue este ecrã. O fornecedor %1$sGeoIP (PHP)%2$s será agora %3$sInstalado%4$s. Selecione-o.",
|
||||
"HowToSetupGeoIP_Step4": "E está feito! Acabou de configurar o Matomo para utilizar o GeoIP o que significa que poderá ver as regiões e cidades dos seus visitantes bem como informações muito precisas de países.",
|
||||
"HowToSetupGeoIPIntro": "Não parece ter uma configuração de Geolocalização precisa. Esta é uma funcionalidade útil e sem a mesma, não poderá ver informação de localização dos seus visitantes de forma precisa e completa. Eis como pode rapidamente começar a utilizá-la:",
|
||||
"HttpServerModule": "Módulo do servidor HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Período inválido para o atualizador GeoIP: %1$s. Os valores válidos são %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Eu comprei %1$sbases de dados mais precisas de MaxMind%2$s e quero configurar atualizações automáticas.",
|
||||
"ISPDatabase": "Base de dados de ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Eu quero transferir a base de dados gratuita do GeoIP...",
|
||||
"Latitude": "Latitude",
|
||||
"Latitudes": "Latitudes",
|
||||
"Location": "Localização",
|
||||
"LocationDatabase": "Base de dados de localização",
|
||||
"LocationDatabaseHint": "Uma base de dados de localização é uma base de dados de um país, região ou cidade.",
|
||||
"LocationProvider": "Fornecedor de localização",
|
||||
"Longitude": "Longitude",
|
||||
"Longitudes": "Longitudes",
|
||||
"NoDataForGeoIPReport1": "Não existem dados para este relatório porque não existem dados de localização disponíveis ou os endereços de IP dos visitantes não podem ser geolocalizados.",
|
||||
"NoDataForGeoIPReport2": "Para ativar uma geolocalização mais precisa, altere as definições %1$saqui%2$s e utilize uma %3$sbase de dados de nível de cidade%4$s.",
|
||||
"Organization": "Organização",
|
||||
"OrgDatabase": "Base de dados de organizações",
|
||||
"PeclGeoIPNoDBDir": "O módulo PECL está à procura de bases de dados em %1$s, mas este diretório não existe. Por favor, crie-o e adicione as bases de dados GeoIP ao mesmo. Alternativamente, pode definir %2$s para o diretório correto no seu ficheiro php.ini.",
|
||||
"PeclGeoLiteError": "A sua base de dados GeoIP em %1$s tem o nome %2$s. Infelizmente, o módulo PECL não irá reconhecer o mesmo com este nome. Por favor renomeie o mesmo para %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "O Matomo não está atualmente a gerir quaisquer bases de dados GeoIP.",
|
||||
"PluginDescription": "Relatórios com a localização dos seus visitantes: país, região, cidade e coordenadas geográficas (latitude\/longitude).",
|
||||
"Region": "Região",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Configure as atualizações automáticas das bases de dados GeoIP",
|
||||
"SubmenuLocations": "Localizações",
|
||||
"TestIPLocatorFailed": "O Matomo tentou confirmar a localização de um endereço de IP conhecido (%1$s), mas o seu servidor devolveu %2$s. Se este fornecedor estivesse configurado corretamente, deveria devolver %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "O ficheiro transformado não é uma base de dados GeoIP válida. Por favor, confirme o endereço ou transfira o ficheiro manualmente.",
|
||||
"ToGeolocateOldVisits": "Para obter os dados de localização para as suas visitas antigas, utilize o script descrito %1$saqui%2$s.",
|
||||
"UnsupportedArchiveType": "Encontrado um tipo de arquivo não suportado %1$s.",
|
||||
"UpdaterHasNotBeenRun": "A ferramenta de atualização nunca foi executada.",
|
||||
"UpdaterIsNotScheduledToRun": "Não está agendada para ser executada no futuro.",
|
||||
"UpdaterScheduledForNextRun": "Está agendada para ser executada durante a próxima execução do comando cron core:archive.",
|
||||
"UpdaterWasLastRun": "A ferramenta de atualização foi executada pela última vez a %s.",
|
||||
"UpdaterWillRunNext": "Está agendada para ser executada a %s.",
|
||||
"WidgetLocation": "Localização do visitante"
|
||||
}
|
||||
}
|
96
msd2/tracking/piwik/plugins/UserCountry/lang/ro.json
Normal file
96
msd2/tracking/piwik/plugins/UserCountry/lang/ro.json
Normal file
@ -0,0 +1,96 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Nu pot găsifuncție apache_obtine_module , presupunând non-server de web Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Nu se poate gasi %1$s fisierul din arhiva %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Variabila %s nu este setata. Server-ul dvs. ar putea să nu fie configurat corect.",
|
||||
"CannotFindPeclGeoIPDb": "Nu s-a putut găsi o țară, regiune sau oraș din baze de date pentru modulul GeoIP PECL. Asigurați-vă că baza de date GeoIP este situat în %1$s și este numita %2$s sau %3$s altfel modulul de PECL nu il va observa.",
|
||||
"CannotListContent": "Nu s-a putut lista continutul pentru: %1$s %2$s",
|
||||
"CannotLocalizeLocalIP": "Adresa IP %s este o adresă locală și nu pot fi localizate geografic.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Se pare ca stocazi baza de date GeoIP afara din Matomo (putem spune, deoarece nu există baze de date în subdirectorul misc, dar GeoIP dvs. este de lucru). Matomo nu poate actualiza automat bazele de date GeoIP, dacă acestea sunt situate în afara de directorul misc.",
|
||||
"CannotUnzipDatFile": "Nu s-a putut dezarhiva fișierul dat în %1$s: %2$s",
|
||||
"City": "Oraş",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Continent",
|
||||
"Country": "Ţară",
|
||||
"country_a1": "Proxy anonim",
|
||||
"country_a2": "Provider Satelit",
|
||||
"country_cat": "Comunitățile vorbitoare de limbă catalană",
|
||||
"country_o1": "Altă ţară",
|
||||
"CurrentLocationIntro": "Conform acestui furnizor, locația curentă este",
|
||||
"DefaultLocationProviderDesc1": "Furnizorul de locație implicită ghiceste tara unui vizitator bazat pe limba care o folosesc.",
|
||||
"DefaultLocationProviderDesc2": "Acest lucru nu este foarte precis, astfel încât %1$s noi recomandam instalarea și utilizarea.%2$sGeoIP%3$s%4$s",
|
||||
"DefaultLocationProviderExplanation": "Acum folositi locatie implicita de furnizorul l, ceea ce înseamnă că Matomo va ghici locația vizitatorilor bazat pe limba pe care o folosesc. %1$scititi acest%2$s pentru a învăța cum să setați geolocalizarea mai precis.",
|
||||
"DistinctCountries": "%s ţări distincte",
|
||||
"DownloadingDb": "Se descarcă %s",
|
||||
"DownloadNewDatabasesEvery": "Actializează baza de date fiecare",
|
||||
"FatalErrorDuringDownload": "O eroare a avut loc în timp ce se descărca acest fișier. Ar putea fi ceva în neregulă cu conexiunea la internet, împreună cu baza de date GeoIP de descărcat sau Matomo. Încercați să-l descărcați și sa-l instalați manual.",
|
||||
"FoundApacheModules": "Matomo a găsit următoarele module Apache",
|
||||
"FromDifferentCities": "diferite orașe",
|
||||
"GeoIPCannotFindMbstringExtension": "Nu se poate găsi aceasta %1$s funcție . Asigurați-vă că %2$s extensia este instalata si incarcata.",
|
||||
"GeoIPDatabases": "Bazele de date GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Pentru a vedea datele pentru acest raport, trebuie să configurati GeoIP în fila Geolocation admin tine.Comercial %1$sMaxmind%2$s baze de date GeoIP sunt mai precise decât cele libere. Pentru a vedea cât de exacte sunt, faceți clic pe %3$saici%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Aceasta implementare GeoIP are acces la următoarele tipuri de baze de date",
|
||||
"GeoIPIncorrectDatabaseFormat": "Baza de date GeoIP nu pare să aibă formatul corect. Aceasta poate fi corupta. Asigurați-vă că utilizați versiunea binară și încercați să înlocuiți-l cu un alt exemplar.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Acest furnizor de localizare folosește o bază de date GeoIP și un modul PECL pentru a determina cu exactitate și eficient locatia vizitatorilor tai.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Nu există limitări cu acest furnizor, asta este cea pe care o recomandăm pentru utilizare.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Acest furnizor de locație este cel mai simplu de instalat, deoarece nu are nevoie de configurare a serverului (ideal pentru shared hosting!). Acesta folosește o bază de date GeoIP și PHP API MaxMind pentru a determina cu exactitate locația vizitatorilor.",
|
||||
"GeoIpLocationProviderDesc_Php2": "În cazul în care site-ul dvs. primeste o multime de trafic, ați putea găsi că acest furnizor este prea lent. În acest caz, ar trebui să instalați %1$sPECL extensie%2$ssau %3$smodul server%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Acest furnizor de localizare utilizează modulul GeoIP care a fost instalat în serverul de HTTP. Acest furnizor este rapid și precis, dar %1$scanare poate fi utilizat numai cu urmărirea normală browser.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Dacă aveți de importat fișierul jurnal sau sa faceti ceva care necesită stabilirea adrese IP, utilizați %1$s de punere în aplicare PECL GeoIP (recomandat)%2$s sau%3$s PHP GeoIP implementarea%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Notă: anonimizare IP nu are nici un efect asupra locațiilor raportate de acest furnizor. Înainte de al utiliza cu anonimizare, IP, asigurați-vă că aceasta nu încalcă legile privind confidențialitatea ar putea fi supuse.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolocation funcționează, dar nu utilizați unul dintre furnizorii recomandati.",
|
||||
"GeoIPNoServerVars": "Matomo nu poate găsi nici un GeoIP %s variabile.",
|
||||
"GeoIPPeclCustomDirNotSet": "%s Opțiune PHP ini nu este setata.",
|
||||
"GeoIPServerVarsFound": "Matomo detectează următoarele GeoIP %s variabile",
|
||||
"GeoIPUpdaterInstructions": "Introduceți link-uri de download pentru bazele de date de mai jos. Dacă ați achiziționat baze de date de la %3$sMaxMind%4$s, puteți găsi aceste link-uri %1$saici%2$s. Vă rugăm să contactați %3$sMaxMind%4$s în cazul în care aveți probleme cu accesarea acestora.",
|
||||
"GeoIPUpdaterIntro": "Matomo gestionează in prezent actualizări pentru următoarele baze de date GeoIP",
|
||||
"GeoLiteCityLink": "Dacă utilizați baza de date a orasului cu GeoLite , folosiți acest link:%1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocation",
|
||||
"GeolocationPageDesc": "Pe această pagină poți schimba cum Matomo determină locațiile vizitatorilor.",
|
||||
"getCityDocumentation": "Acest raport arată din ce oras sunt vizitatorii când au accesat site-ul dumneavoastră.",
|
||||
"getContinentDocumentation": "Acest raport arată pe ce continent au fost vizitatori când au accesat site-ul dumneavoastră.",
|
||||
"getCountryDocumentation": "Acest raport arată din ce țară sunt vizitatorii dvs. cand au accesat site-ul dumneavoastră.",
|
||||
"getRegionDocumentation": "Acest raport arată din ce regiune sunt vizitatorii dvs. când au accesat site-ul dumneavoastră.",
|
||||
"HowToInstallApacheModule": "Cum instalez modulul GeoIP pentru Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Cum pot obține bazele de date GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Cum instalez extensia GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Cum instalez modulul GeoIP pentru Nginx?",
|
||||
"HowToSetupGeoIP": "Cum să setați exact geolocalizarea cu GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sDownload%2$s baza de date Geolite oras de la%3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extrageti acest fișier și copiați rezultatul, %1$s în %2$smisc%3$s Matomo subdirector (puteți face acest lucru fie prin FTP sau SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Reîncarcă această ecran. %1$sGeoIP (PHP) furnizor de %2$s va fi de acum %3$sInstalat%4$s. Selectați-l.",
|
||||
"HowToSetupGeoIP_Step4": "Și ați terminat! Ai de configurat doar Matomo pentru a utiliza GeoIP ceea ce înseamnă că veți putea vedea în regiuni și orașe ce vizitatori cu informații foarte precise.",
|
||||
"HowToSetupGeoIPIntro": "Nu pare a avea o configurare exacte Geolocation. Aceasta este o caracteristică utilă și fără ea nu se vor vedea informatii corecte si complete de locație pentru vizitatori. Iată cum puteți începe rapid folosind-o:",
|
||||
"HttpServerModule": "Module HTTP Server",
|
||||
"InvalidGeoIPUpdatePeriod": "Perioada de valabilitate pentru updater GeoIP:%1$s. Valorile valide sunt %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Am cumparat mai mult de %1$sbaze de date exacte de la MaxMin%2$s și doresc să configurareze actualizări automate.",
|
||||
"ISPDatabase": "Baza de date provideri internet",
|
||||
"IWantToDownloadFreeGeoIP": "Vreau să descarc gratuit baza de date GeoIP ...",
|
||||
"Latitude": "Latitudine",
|
||||
"Location": "Localitate",
|
||||
"LocationDatabase": "Locatie baza de date",
|
||||
"LocationDatabaseHint": "O locatie bază de date este fie o țară, regiune sau oraș baza de date.",
|
||||
"LocationProvider": "Locație Provider",
|
||||
"Longitude": "Longitudine",
|
||||
"NoDataForGeoIPReport1": "Nu există date pentru acest raport, deoarece nu există, fie nu există date disponibile de localizare sau adresele IP ale vizitatorilor nu pot fi localizate geografic.",
|
||||
"NoDataForGeoIPReport2": "Pentru a activa geolocalizare exacta, modifica setările %1$saici%2$s și de a folosi o %3$s nivel oras baza de date%4$s.",
|
||||
"Organization": "Organizaţie",
|
||||
"OrgDatabase": "Orgaare baza de date",
|
||||
"PeclGeoIPNoDBDir": "Modulul PECL este în căutarea de baze de date în%1$s, dar acest director nu există. Vă rugăm să-l creeze și să adăugați bazele de date GeoIP . Alternativ, puteți seta %2$s la directorul corect în fișierul dvs. php.ini.",
|
||||
"PeclGeoLiteError": "Baza de date GeoIP în %1$s este numita %2$s. Din păcate, modulul de PECL nu-l va recunoaște cu acest nume. Vă rugăm să-l redenumiți la %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo nu gestionează în prezent nici o baza de date GeoIP.",
|
||||
"Region": "Regiune",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Configurare automata aactualizărilor bazelor de date GeoIP",
|
||||
"SubmenuLocations": "Locații",
|
||||
"TestIPLocatorFailed": "Matomo încerca verificarea unei locații IP cunoscută (%1$s), dar serverul de returnat %2$s. În cazul în care acest furnizor s-a configurat corect, ea va reveni %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Fișierul descărcat nu este o bază de date GeoIP valabil. Vă rugăm să re-verificați URL-ul sau descărcati manual fișierul.",
|
||||
"ToGeolocateOldVisits": "Pentru a obține datele de localizare pentru d vizite vechi, script-ul descris %1$s aici %2$s.",
|
||||
"UnsupportedArchiveType": "Arhiva neacceptata tip întâlnit %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Updater-ul nu a fost rulat.",
|
||||
"UpdaterIsNotScheduledToRun": "Acesta nu este programata să ruleze în viitor.",
|
||||
"UpdaterScheduledForNextRun": "Acesta este programat să ruleze în următoarea executare archive.php cron.",
|
||||
"UpdaterWasLastRun": "Programul de actualizare a fost lasat sa ruleze %s.",
|
||||
"UpdaterWillRunNext": "Programarea urmatoare trebuie sa ruleze pe %s.",
|
||||
"WidgetLocation": "Locaţia vizitatorului"
|
||||
}
|
||||
}
|
92
msd2/tracking/piwik/plugins/UserCountry/lang/ru.json
Normal file
92
msd2/tracking/piwik/plugins/UserCountry/lang/ru.json
Normal file
@ -0,0 +1,92 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Не удается найти apache_get_modules функцию, видимо, это не веб-сервер Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Не найден файл %1$s в tar-архиве %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Переменная %s не установлена. Ваш сервер не может быть сконфигурирован правильно.",
|
||||
"CannotFindPeclGeoIPDb": "Невозможно найти базу базу данных по стране, региону или городу для GeoIP PECL модуля. Убедитесь, что ваша БД GeoIP находится в %1$s и названа %2$s или %3$s, иначе PECL модуль не заметит ее.",
|
||||
"CannotListContent": "Не удалось перечислить содержимое для %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP адрес %s - это локальный адрес и его конкретное местонахождение не может быть определено.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Похоже на то, чтобы храните свои GeoIP базы за пределами папки Matomo. Matomo не может автоматически обновлять базы, которые находятся за пределами папки misc.",
|
||||
"CannotUnzipDatFile": "Невозможно разархивировать dat-файл в %1$s : %2$s",
|
||||
"City": "Город",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Континент",
|
||||
"Country": "Страна",
|
||||
"country_a1": "Анонимный прокси",
|
||||
"country_a2": "Спутниковый провайдер",
|
||||
"country_cat": "Каталаноязычные общества",
|
||||
"country_o1": "Другая страна",
|
||||
"CurrentLocationIntro": "Согласно используемому способу отслеживания вы находитесь здесь",
|
||||
"DefaultLocationProviderDesc1": "Этот способ отслеживания определяет местоположение на основе языка, которым пользователи пользуются в браузере и системе.",
|
||||
"DefaultLocationProviderDesc2": "Это не очень точное определение, поэтому %1$sмы рекомендуем установить и использовать плагин %2$sGeoIp%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Вы используете провайдер определения местоположения по умолчанию. Это означает, что Matomo будет судить о местоположении посетителя по используемому им языку. %1$sПрочтите здесь%2$s о том, как устанавливать местоположение более точно.",
|
||||
"DistinctCountries": "%s уникальных стран",
|
||||
"DownloadingDb": "Загрузка %s",
|
||||
"DownloadNewDatabasesEvery": "Обновлять базу раз в",
|
||||
"FatalErrorDuringDownload": "Произошла критическая ошибка при загрузке этого файла. Там может быть что-то не так с вашим интернет соединением, с базой данных GeoIP, которую вы загрузили или Matomo. Попробуйте скачать и установить его вручную.",
|
||||
"FoundApacheModules": "Matomo нашёл следующие модули Apache",
|
||||
"FromDifferentCities": "разные города",
|
||||
"GeoIPCannotFindMbstringExtension": "Невозможно найти функцию %1$s. Пожалуйста, убедитесь, что расширение %2$s загружено и установлено.",
|
||||
"GeoIPDatabases": "Базы данных GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Чтобы увидеть данные по этому отчету вы должны установить GeoIP в секции Geolocation, которая находится в панели администрирования. Платные базы данных GeoIP %1$sMaxmind%2$s более точны, чем бесплатные. Насколько именно они точные, вы можете посмотреть %3$sздесь%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Этот вариант реализации GeoIP имеет доступ к следующим базам данных",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Местоположение ваших посетителей определяется с помощью базы данных GeoIP и модуля PECL. Такое определение — более четкое и эффективное.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Нет ограничений по использованию этого способа отслеживания, так что мы рекомендуем именно его.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Этот способ отслеживания является наиболее простым в установке, поскольку не требует настройки сервера (идеально для виртуального хостинга!). Он использует базы данных GeoIP и PHP API от MaxMind, чтобы точно определить местоположение ваших посетителей.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Если у вашего сайта слишком много посетителей, вы заметите, что этот способ слишком медленный. В этом случае вам нужно установить %1$sPECL расширение%2$s или специальный %3$sсерверный модуль%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Этот механизм определения местонахождения использует модуль GeoIP, установленный на ваш HTTP-сервер. Он быстр и точен, но %1$s может быть использован только при отслеживании обычных браузеров.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Если вам нужно импортировать лог-файлы или сделать что-то, требующее наличие IP адресов, используйте %1$s встраиваемый PECL GeoIP (рекомендуется)%2$s или %3$s встраиваемый PHP GeoIP %4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Подсказка: анонимизация IP не оказывает на эффект на получение локации пользователей таким способом. Перед тем, как использовать его с анонимизацией IP, убедитесь, что это не противоречит законодательству вашей страны.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Геолокация работает, но вы не используете один из рекомендованных провайдеров.",
|
||||
"GeoIPNoServerVars": "Matomo не может найти GeoIP %s переменные.",
|
||||
"GeoIPPeclCustomDirNotSet": "PHP ini опция %s не установлена.",
|
||||
"GeoIPServerVarsFound": "Matomo нашёл следующие переменные GeoIP: %s",
|
||||
"GeoIPUpdaterInstructions": "Укажите ссылки для загрузки баз данных ниже. Если вы купили базы данных из %3$sMaxMind%4$s, вы можете найти эти ссылки %1$sздесь%2$s. Пожалуйста, свяжитесь с %3$sMaxMind%4$s если у вас есть проблемы с доступом к ним.",
|
||||
"GeoIPUpdaterIntro": "Matomo в настоящее время управляет обновлениями для следующих баз GeoIP",
|
||||
"GeoLiteCityLink": "Если вы используете базу данных GeoLite City, воспользуйтесь этой ссылкой: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Геолокация",
|
||||
"GeolocationPageDesc": "На этой странице вы можете изменить способ определения местоположения посетителей.",
|
||||
"getCityDocumentation": "Этот отчет показывает города посетителей вашего сайта.",
|
||||
"getContinentDocumentation": "Этот отчет показывает континенты посетителей вашего сайта.",
|
||||
"getCountryDocumentation": "Этот отчет показывает страны посетителей вашего сайта.",
|
||||
"getRegionDocumentation": "Этот отчет показывает регионы посетителей вашего сайта.",
|
||||
"HowToInstallApacheModule": "Как установить GeoIP модуль для Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Как мне получить базы данных GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Как установить GeoIP PECL расширение?",
|
||||
"HowToInstallNginxModule": "Как установить GeoIP модуль для Nginx?",
|
||||
"HowToSetupGeoIP": "Как установить точное определение локаций посетителей с помощью GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sСкачайте%2$s базу данных GeoLite City из %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Извлеките этот файл и скопируйте %1$s в %2$smisc%3$s поддиректорию Matomo (вы можете сделать это через FTP или SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Перезагрузите эту страницу. Убедитесь что %1$sGeoIP (PHP)%2$s теперь %3$sУстановлено%4$s. Выберите его.",
|
||||
"HowToSetupGeoIP_Step4": "Вот и все! Вы только что установили GeoIP для Matomo, что означает, что вы можете видеть регионы и города ваших посетителей и, естественно, страну, где они находятся.",
|
||||
"HowToSetupGeoIPIntro": "Кажется, что у вас не настроено определено локации посетителей с помощью GeoIP. Это полезная \"штука\" - без нее вы не сможете достаточно точно определять местонахождение посетителей. И вот как вы можете быстро все настроить:",
|
||||
"HttpServerModule": "HTTP Серверный модуль",
|
||||
"IPurchasedGeoIPDBs": "Я купил более %1$sдетализированную базу данных у MaxMind%2$s и хочу настроить автоматические обновления.",
|
||||
"ISPDatabase": "База провайдеров",
|
||||
"IWantToDownloadFreeGeoIP": "Я хочу загрузить бесплатную GeoIP базу...",
|
||||
"Latitude": "Широта",
|
||||
"Location": "Локация",
|
||||
"LocationDatabase": "Расположение базы данных",
|
||||
"LocationDatabaseHint": "Расположение базы данных страны, региона или города.",
|
||||
"LocationProvider": "Способ определения локации пользователя",
|
||||
"Longitude": "Долгота",
|
||||
"NoDataForGeoIPReport1": "Не существует данных для этого отчета, потому что либо нет данных о местоположении или IP адрес посетителя не может быть определён географически.",
|
||||
"NoDataForGeoIPReport2": "Для обеспечения точной геолокации, изменить параметры %1$sтут%2$s и используйте %3$sбазу данных городов%4$s.",
|
||||
"Organization": "Организация",
|
||||
"OrgDatabase": "База организаций",
|
||||
"PeclGeoIPNoDBDir": "PECL модуль обращается к базам в %1$s, но это директория не существует. Пожалуйста, создайте ее и добавьте в нее базу данных GeoIP. Или вы можете установить %2$s в правильную директорию в вашем php.ini файле.",
|
||||
"PeclGeoLiteError": "Ваша БД GeoIP в %1$s названа %2$s. К сожалению, PECL модуь не сможет распознать такое имя. Пожалуйста, переименуйте это в %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo в настоящее время не работает с базами GeoIP.",
|
||||
"PluginDescription": "Сообщает местонахождение посетителей: страна, регион, город и географические координаты (широта\/долгота).",
|
||||
"Region": "Регион",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Настроить автоматическое обновление GeoIP баз",
|
||||
"SubmenuLocations": "Локации",
|
||||
"TestIPLocatorFailed": "Matomo попытался определить местонахождение известного IP-адреса (%1$s), но ваш сервер вернул значение: %2$s. Если способ определения локации был настроен верно, он бы вернул значение: %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Загруженный файл не является корректной GeoIP базой. Пожалуйста, перепроверьте ссылку или загрузите файл вручную.",
|
||||
"ToGeolocateOldVisits": "Для того чтобы получить информацию о местоположении для предыдущих посетителей, воспользуйтесь скриптом, о котором написано %1$sтут%2$s.",
|
||||
"UnsupportedArchiveType": "Встретился неподдерживаемый тип архива %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Обновления никогда не производились.",
|
||||
"UpdaterScheduledForNextRun": "Это запланированный запуск команды core:archive при следующем выполнении cron-задачи.",
|
||||
"WidgetLocation": "Местонахождение посетителя"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/UserCountry/lang/sk.json
Normal file
11
msd2/tracking/piwik/plugins/UserCountry/lang/sk.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"City": "Mesto",
|
||||
"Continent": "Kontinent",
|
||||
"Country": "Krajina",
|
||||
"DistinctCountries": "Počet rôznych krajín: %s",
|
||||
"Location": "Miesto",
|
||||
"SubmenuLocations": "Umiestnenie",
|
||||
"UpdaterWasLastRun": "Aktualizátor bol naposledy spustený %s."
|
||||
}
|
||||
}
|
15
msd2/tracking/piwik/plugins/UserCountry/lang/sl.json
Normal file
15
msd2/tracking/piwik/plugins/UserCountry/lang/sl.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"CannotLocalizeLocalIP": "IP naslov %s je lokalen in ne more biti geolociran.",
|
||||
"City": "Mesto",
|
||||
"Continent": "Kontitent",
|
||||
"Country": "Država",
|
||||
"country_a1": "Anonimen Proxy",
|
||||
"country_o1": "Druge države",
|
||||
"DistinctCountries": "%s različnih držav",
|
||||
"Location": "Lokacija",
|
||||
"Region": "Regija",
|
||||
"SubmenuLocations": "Lokacije",
|
||||
"WidgetLocation": "Lokacija obiskovalca"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/sq.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/sq.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "S’gjendet dot funksioni apache_get_modules function, po merret i mirëqenë si shërbyes non-Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "S’gjendet dot kartela %1$s në arkivin tar %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Ndryshorja %s s’është rregulluar. Shërbyesi juaj mund të mos jetë formësuar si duhet.",
|
||||
"CannotFindPeclGeoIPDb": "S’u gjet dot bazë të dhënash vendesh, rajonesh apo qytetesh për modulin GeoIP PECL. Sigurohuni që baza juaj e të dhënave GeoIP gjendet te %1$s dhe është emërtuar %2$s ose %3$s, përndryshe moduli PECL nuk do ta vërë re.",
|
||||
"CannotListContent": "S’paraqet dot lëndën për %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "Adresa IP %s është një adresë vendore dhe s’gjeolokalizohet dot.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Duket se bazat tuaja të të dhënave GeoIP i depozitoni jashtë Matomo-s (e dimë ngaqë s’ka baza të dhënash te nëndrejtoria misc, por GeoIP-ja juaj funksionon). Matomo s’i përditëson dot vetvetiu bazat tuaja të të dhënave GeoIP, nëse gjenden jashtë drejtorisë misc.",
|
||||
"CannotUnzipDatFile": "S’çzipoi dot kartelën dat te %1$s: %2$s",
|
||||
"City": "Qytet",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Continents": "Kontinente",
|
||||
"Country": "Vend",
|
||||
"country_a1": "Ndërmjetës Anonim",
|
||||
"country_a2": "Furnizues Satelitor",
|
||||
"country_cat": "Bashkësi që flasin Katalançe",
|
||||
"country_o1": "Vend Tjetër",
|
||||
"VisitLocation": "Vend Vizite",
|
||||
"CurrentLocationIntro": "Sipas këtij furnizuesi, gjendeni në",
|
||||
"DefaultLocationProviderDesc1": "Furnizuesi parazgjedhje i vendeve e hamendëson vendin e një vizitori bazuar në gjuhën e përdorur prej tyre.",
|
||||
"DefaultLocationProviderDesc2": "Kjo s’është shumë e saktë, ndaj %1$skëshillojmë instalimin dhe përdorimin e %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Po përdorni furnizuesin parazgjedhje të vendeve, që do të thotë se Matomo do ta hamendësojë vendin e vizitorit bazuar në gjuhën që ky përdor. %1$sLexoni këtë%2$s që të mësoni se si të rregulloni gjeovendëzim më të saktë.",
|
||||
"DistinctCountries": "%s vende ndaras",
|
||||
"DownloadingDb": "Po shkarkohet %s",
|
||||
"DownloadNewDatabasesEvery": "Përditësoji bazat e të dhënave çdo",
|
||||
"FatalErrorDuringDownload": "Ndodhi një gabim fatal teksa shkarkohej kjo kartelë. Mund të ketë diçka gabim me lidhjen tuaj internet, me bazën tuaj të të dhënave GeoIP që shkarkuat ose me Matomo-n. Provoni ta shkarkoni dhe instaloni dorazi.",
|
||||
"FoundApacheModules": "Matomo gjeti modulet Apache vijues",
|
||||
"FromDifferentCities": "qytete të ndryshme",
|
||||
"GeoIPCannotFindMbstringExtension": "S’gjendet dot funksioni %1$s. Ju lutemi, sigurohuni që zgjerimi %2$s është i instaluar dhe i ngarkuar.",
|
||||
"GeoIPDatabases": "Baza të dhënash GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Që të mund të shihni të dhëna për këtë raport, duhet të rregulloni GeoIP-në te skeda e përgjegjësit për Gjeovendëzimin. Bazat komerciale të të dhënave GeoIP %1$sMaxmind%2$s janë më të sakta se sa ato falas. Që të shihni se sa të sakta janë, klikoni %3$skëtu%4$s.",
|
||||
"GeoIPNoDatabaseFound": "Ky sendërtim i GeoIP-së s’qe në gjendje të gjente ndonjë bazë të dhënash.",
|
||||
"GeoIPImplHasAccessTo": "Ky sendërtim i GeoIP-së mund të përdorë llojet vijuese të bazave të të dhënave",
|
||||
"GeoIPIncorrectDatabaseFormat": "Baza juaj e të dhënave GeoIP nuk duket se është në formatin e duhur. Mund të jetë e dëmtuar. Sigurohuni se po përdorni versionin dyor dhe provoni ta zëvendësoni me një kopje tjetër.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Ky furnizues vendesh përdor një bazë të dhënash GeoIP dhe një modul PECL për të përcaktuar me saktësi dhe efikasitet vendin e vizitorëve tuaj.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Me këtë furnizues s’ka kufizime, ndaj është ai që këshillojmë të përdoret.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Ky furnizues vendesh është më i thjeshti për t’u instaluar, ngaqë nuk lyp formësim shërbyesish (ideal për strehim të përbashkët!). Përdor një bazë të dhënash GeoIP dhe API-n PHP të MaxMind-it, për të përcaktuar saktë vendin e vizitorëve tuaj.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Nëse sajti juaj ka shumë trafik, mund të shihni se ky furnizues vendesh është shumë i ngadaltë. Në këtë rast, do të duhej të instaloni %1$szgjerimin PECL%2$s ose një %3$smodul shërbyesi%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Ky furnizues vendesh përdor modulin GeoIP që është instaluar në shërbyesin tuaj HTTP. Ky furnizues është i shpejtë dhe i saktë, por %1$smund të përdoret vetëm me ndjekje normale shfletuesi.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Nëse keni për të importuar kartela regjistër ose ju duhet të bëni diçka tjetër që lyp caktim adresash IP, përdorni %1$ssendërtimin GeoIP PECL (e këshilluar)%2$s ose %3$ssendërtimin GeoIP PHP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Shënime: Anonimizimi i IP-ve nuk ka efekt për vendet e raportuara nga ky furnizues. Përpara se ta ta përdorni me anonimizim IP-sh, sigurohuni që kjo nuk cenon ndonjë ligj privatësie subjekt i të cilit mund të jeni.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Gjeovendëzimi funksionon, por nuk po përdorni një nga furnizuesit e këshilluar.",
|
||||
"GeoIPNoServerVars": "Matomo s’gjen dot ndryshore GeoIP %s.",
|
||||
"GeoIPPeclCustomDirNotSet": "S’është caktuar mundësia %s PHP ini.",
|
||||
"GeoIPServerVarsFound": "Matomo pikas ndryshoret vijuese GeoIP %s",
|
||||
"GeoIPUpdaterInstructions": "Jepni më poshtë lidhjet e shkarkimeve për bazat tuaja të të dhënave. Nëse keni blerë baza të dhënash nga %3$sMaxMind%4$s, këto lidhje mund t’i gjeni %1$skëtu%2$s. Ju lutemi, lidhuni me %3$sMaxMind%4$s, nëse keni probleme me hyrjen në to.",
|
||||
"GeoIPUpdaterIntro": "Matomo po administron përditësime për bazat vijuese të të dhënave GeoIP",
|
||||
"GeoLiteCityLink": "Nëse përdorni bazën e të dhënave GeoLite City, përdorni këtë lidhje: %1$s%2$s%3$s",
|
||||
"Geolocation": "Gjeovendëzim",
|
||||
"GeolocationPageDesc": "Në këtë faqe mund të ndryshoni mënyrën se si përcakton Matomo vendndodhjet e vizitorëve.",
|
||||
"getCityDocumentation": "Ky raport shfaq qytetet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
|
||||
"getContinentDocumentation": "Ky raport shfaq kontinentet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
|
||||
"getCountryDocumentation": "Ky raport shfaq vendet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
|
||||
"getRegionDocumentation": "Ky raport shfaq rajonet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
|
||||
"HowToInstallApacheModule": "Si ta instaloj modulin GeoIP për Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Si t’i marr bazat e të dhënave GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Si ta instaloj zgjerimin GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Si ta instaloj modulin GeoIP për Nginx?",
|
||||
"HowToSetupGeoIP": "Si të rregullohet gjeovendëzim i saktë me GeoIP?",
|
||||
"HowToSetupGeoIP_Step1": "%1$sShkarkoni%2$s bazën e të dhënave GeoLite City prej %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Përftojeni këtë kartelë dhe kopjojeni përfundimin, %1$s te nëndrejtoria %2$smisc%3$s e Matomo-s (këtë mund ta bëni me FTP ose SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Ringarkoni këtë skenë. Furnizuesi %1$sGeoIP (PHP)%2$s tani do të jetë %3$sinstaluar%4$s. Përzgjidheni.",
|
||||
"HowToSetupGeoIP_Step4": "Dhe mbaruat! Sapo e rregulluat Matomo-n të përdorë GeoIP, që do të thotë se do të jeni në gjendje të shihni rajonet dhe qytetet e vizitorëve tuaj, tok me të dhëna shumë të sakta të vendit.",
|
||||
"HowToSetupGeoIPIntro": "Nuk duket se keni rregulluar Gjeovendëzim të saktë. Kjo është një veçori e dobishme dhe pa të nuk do të shihni të dhëna të sakta dhe të plota vendesh për vizitorët tuaj. Ja se si mund të filloni ta përdorni shpejt e shpejt:",
|
||||
"HttpServerModule": "Modul Shërbyesi HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Periudhë e pavlefshme për përditësuesin GeoIP: %1$s. Vlera të vlefshme janë %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Kam blerë %1$sbaza të dhënash më të sakta nga MaxMind%2$s dhe dua të rregulloj përditësime të vetvetishme.",
|
||||
"ISPDatabase": "Bazë të Dhënash MShI",
|
||||
"IWantToDownloadFreeGeoIP": "Dua të shkarkoj bazën e lirë të të dhënave GeoIP…",
|
||||
"Latitude": "Gjerësi gjeografike",
|
||||
"Latitudes": "Gjerësi gjeografike",
|
||||
"Location": "Vend",
|
||||
"LocationDatabase": "Bazë të dhënash Vendi",
|
||||
"LocationDatabaseHint": "Një bazë të dhënash vendi është bazë të dhënash vendesh, rajonesh ose qytetesh.",
|
||||
"LocationProvider": "Furnizues Vendesh",
|
||||
"Longitude": "Gjatësi gjeografike",
|
||||
"Longitudes": "Gjatësi gjeografike",
|
||||
"NoDataForGeoIPReport1": "S’ka të dhëna për këtë raport, ngaqë s’ka të dhëna vendesh ose adresat IP të vizitorëve s’gjeovendëzohen dot.",
|
||||
"NoDataForGeoIPReport2": "Që të aktivizoni gjeovendëzim të saktë, ndryshoni rregullimet %1$skëtu%2$s dhe përdorni një %3$sbazë të dhënash në nivel qytetesh%4$s.",
|
||||
"Organization": "Organizëm",
|
||||
"OrgDatabase": "Bazë të dhënash Organizmi",
|
||||
"PeclGeoIPNoDBDir": "Moduli PECL po kërkon për baza të dhënash te %1$s, por kjo drejtori nuk ekziston. Ju lutemi, krijojeni dhe shtoni në të baza të dhënash GeoIP. Përndryshe, mund të caktoni për %2$s drejtorinë e saktë te kartela juaj php.ini.",
|
||||
"PeclGeoLiteError": "Baza juaj e të dhënave GeoIP te %1$s është emërtuar %2$s. Për fat të keq, moduli PECL nuk do ta njohë me këtë emër. Ju lutemi, riemërtojeni si %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo hëpërhë s’administron ndonjë bazë të dhënash GeoIP.",
|
||||
"PluginDescription": "Raporton vendndodhjen e vizitorëve tuaj: vend, rajon, qytet dhe koordinata gjeografike (gjerësi gjeografike\/gjatësi gjeografike).",
|
||||
"Region": "Rajon",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Rregulloni përditësime të vetvetishme të bazave të të dhënave GeoIP",
|
||||
"SubmenuLocations": "Vende",
|
||||
"TestIPLocatorFailed": "Matomo provoi të kontrollojë vendin e një adrese të njohur IP (%1$s), por shërbyesi juaj u përgjigj me %2$s. Nëse ky furnizues është formësuar si duhet, duhej të përgjigjej me %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Kartela e shkarkuar s’është bazë të dhënash GeoIP e vlefshme. Ju lutemi, rikontrolloni URL-në ose shkarkojeni kartelën dorazi.",
|
||||
"ToGeolocateOldVisits": "Që të kini të dhëna vendesh për vizitat tuaja të vjetra, përdorni programthin e përshkruar %1$skëtu%2$s.",
|
||||
"UnsupportedArchiveType": "U has lloj i pambuluar arkivi %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Përditësuesi s’është xhiruar ndonjëherë.",
|
||||
"UpdaterIsNotScheduledToRun": "S’është vënë në plan të xhirohet në të ardhmen.",
|
||||
"UpdaterScheduledForNextRun": "Është vënë në plan të xhirojë gjatë përmbushjes së ardhshme të urdhrit cron core:archive.",
|
||||
"UpdaterWasLastRun": "Përditësuesi u xhirua së fundi më %s.",
|
||||
"UpdaterWillRunNext": "Është planifikuar të xhirojë sërish më %s.",
|
||||
"WidgetLocation": "Vend Vizitori"
|
||||
}
|
||||
}
|
97
msd2/tracking/piwik/plugins/UserCountry/lang/sr.json
Normal file
97
msd2/tracking/piwik/plugins/UserCountry/lang/sr.json
Normal file
@ -0,0 +1,97 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Ne mogu da nađem funkciju apache_get_modules, pretpostavljam da imate server koji nije Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Ne mogu da nađem datoteku %1$s u arhivi %2$s.",
|
||||
"CannotFindGeoIPServerVar": "Promenljiva %s nije postavljena. Vaš server možda nije valjano podešen.",
|
||||
"CannotFindPeclGeoIPDb": "Ne mogu da nađem bazu zemalja, regiona ili gradova za GeoIP PECL modul. Proverite da li se GeoIP baza nalazi u %1$s i da li joj je naziv %2$s ili %3$s, u suprotnom PECL modul je neće videti.",
|
||||
"CannotListContent": "Ne mogu da pročitam sadržaj %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP adresa %s je lokalna i ne može biti locirana.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Izgleda da ste GeoIP bazu smestili van Matomo-a (baza nije u misc direktorijumu ali GeoIP radi). Matomo ne može automatski da osvežava bazu ako je ona van misc direktorijuma.",
|
||||
"CannotUnzipDatFile": "Na mogu da raspakujem dat u %1$s: %2$s",
|
||||
"City": "Grad",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Country": "Zemlja",
|
||||
"country_a1": "Anonimni proksi",
|
||||
"country_a2": "Satelitski provajder",
|
||||
"country_cat": "Katalonske zajednice",
|
||||
"country_o1": "Ostale zemlje",
|
||||
"CurrentLocationIntro": "Sudeći po ovom provajderu, vaša trenutna lokacija je",
|
||||
"DefaultLocationProviderDesc1": "Podrazumevani provajder lokacija nagađa zemlju posetioca na osnovu jezika koji oni koriste.",
|
||||
"DefaultLocationProviderDesc2": "Ovo nije veoma precizno tako da %1$spreporučujemo da instalirate %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Koristite podrazumevanog provajdera lokacije što znači da Matomo pokušava da pogodi lokaciju posetilaca na osnovu jezika koji oni koriste. %1$sPogledajte ovde%2$s kako da podesite znatno sigurniju geolokaciju.",
|
||||
"DistinctCountries": "%s različitih zemalja",
|
||||
"DownloadingDb": "Preuzimanje %s",
|
||||
"DownloadNewDatabasesEvery": "Ažuriraj bazu svakih",
|
||||
"FatalErrorDuringDownload": "Došlo je do greške prilikom preuzimanja ove datoteke. Možda nešto nije u redu sa Internetom ili sa GeoIP bazom koju ste skinuli. Pokušajte ručno da je preuzmete i instalirate.",
|
||||
"FoundApacheModules": "Matomo je našao sledeće Apache module",
|
||||
"FromDifferentCities": "različiti gradovi",
|
||||
"GeoIPCannotFindMbstringExtension": "Ne mogu da nađem funkciju %1$s. Proverite da li je dodatak %2$s instaliran i učitan.",
|
||||
"GeoIPDatabases": "GeoIP baza",
|
||||
"GeoIPDocumentationSuffix": "Da biste videli podatke za ovaj izveštaj potrebno je da podesite GeoIP preko taba Podešavannje geolokacije. Komercijalna %1$sMaxmind%2$s GeoIP baza je preciznija od besplatnih. Da biste videli koliko su one precizne, kliknite %3$sovde%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Ova GeoIP implementacija ima pristup sledećim tipovima baza",
|
||||
"GeoIPIncorrectDatabaseFormat": "Izgleda da vaša GeoIP baza nema ispravan format. Moguće je i da je oštećena. Proverite da li koristite binarnu verziju i pokušajte da je zamenite drugom kopijom.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Ovaj provajder koristi GeoIP bazu i PECL modul kako bi precizno i efikasno odredio lokaciju vaših psoetilaca.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Nema ograničenja sa ovim provajderom tako da vam ga preporučujemo.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Ovaj provajder lokacija je najjednostavniji za instalaciju zato što ne zahteva podešavanja servera (idealan je za deljeni hosting). Koristi GeoIP bazu i MaxMind PHP API kako bi precizno odredio lokaciju vaših posetilaca.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Ukoliko vaš sajt ima puno saobraćaja, može se desiti da je ovaj provajder lokacija previše spor. U tom slučaju, instalirajte %1$sPECL proširenje%2$s ili %3$sserver modul%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Ovaj provajder lokacija koristi GeoIP modul koji je instaliran na vašem HTTP serveru. Provajder je brz i precizan ali %1$smože se koristiti samo za normalna praćenja brauzera.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Ako je potrebno da uvezete datoteke sa zapisima ili da uradite nešto drugo što zahteva podešavanje IP adresa, koristite %1$sPECL GeoIP implementaciju (preporučujemo)%2$s ili %3$sPHP GeoIP implementaciju%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Pažnja: anonimizacija IP adresa ne utiče na lokacije koje obezbeđuje ovaj provajder. Proverite da li ovo nije u suprotnosti sa zakonom o privatnosti pod koji pripadate.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geolokacija funkcioniše ali vi ne koristite jednog od preporučenih provajdera.",
|
||||
"GeoIPNoServerVars": "Matomo ne može da nađe nijednu GeoIP %s promenljivu",
|
||||
"GeoIPPeclCustomDirNotSet": "PHP ini opcija %s nije postavljena.",
|
||||
"GeoIPServerVarsFound": "Matomo je pronašao sledeće GeoIP %s promenljive",
|
||||
"GeoIPUpdaterInstructions": "Upišite linkove za preuzimanje baze podataka. Ukoliko ste baze naručili od %3$sMaxMind%4$s, linkove možete naći %1$sovde%2$s. Kontaktirajte %3$sMaxMind%4$s ukoliko ne možete da im pristupite.",
|
||||
"GeoIPUpdaterIntro": "Matomo trenutno podržava sledeće GeoIP baze",
|
||||
"GeoLiteCityLink": "Ukoliko koristite GeoLite bazu gradova, ovo je link za vas: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolokacija",
|
||||
"GeolocationPageDesc": "Na ovoj stranici možete promeniti način na koji Matomo prepoznaje lokacije posetilaca.",
|
||||
"getCityDocumentation": "Ovaj izveštaj prikazuje gradove vaših posetilaca dok su pristupali vašem sajtu.",
|
||||
"getContinentDocumentation": "Ovaj izveštaj prikazuje sa kojih kontinenata posetioci pristupaju vašem sajtu.",
|
||||
"getCountryDocumentation": "Ovaj izveštaj prikazuje u kojim gradovima se nalaze vaši posetioci dok pristupaju vašem sajtu.",
|
||||
"getRegionDocumentation": "Ovaj izveštaj prikazuje iz kojih regiona posetioci pristupaju vašem sajtu.",
|
||||
"HowToInstallApacheModule": "Kako da instaliram GeoIP modul za Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Kako da podesim GeoIP bazu?",
|
||||
"HowToInstallGeoIpPecl": "Kako da instaliram GeoIP PECL dodatak?",
|
||||
"HowToInstallNginxModule": "Kako da instaliram GeoIP modul za Nginx?",
|
||||
"HowToSetupGeoIP": "Kako podesiti preciznu geolokaciju sa GeoIP?",
|
||||
"HowToSetupGeoIP_Step1": "%1$sPreuzmi%2$s GeoLite City bazu sa %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Raspakujte ovu datoteku i kopirajte rezultat, %1$s u %2$smisc%3$s Matomo direktorijum (to možete uraditi pomoću FTP-a ili SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Učitajte ponovo ovu stranicu. %1$sGeoIP (PHP)%2$s provajder će biti %3$sinstaliran%4$s. Izaberite ga.",
|
||||
"HowToSetupGeoIP_Step4": "I gotovo je! Upravo ste podesili Matomo da koristi GeoIP što znači da ćete moći da vidite regione i gradove vaših posetilaca sa veoma preciznom informacijom o zemljama.",
|
||||
"HowToSetupGeoIPIntro": "Izgleda da nemate dobro podešeno geolociranje. Ovo je korisna opcija i bez nje nećete videti kompletne i precizne informacije o lokacijama vaših posetilaca. Evo kako brzo možete da počnete da je koristite:",
|
||||
"HttpServerModule": "HTTP server modul",
|
||||
"InvalidGeoIPUpdatePeriod": "Period GeoIP osvežavanje %1$s nije validan. Validne vrednosti su %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Naručio sam %1$sprecizniju bazu od MaxMind-a%2$s i želim da podesim automatska osvežavanja.",
|
||||
"ISPDatabase": "ISP baza",
|
||||
"IWantToDownloadFreeGeoIP": "Želim da preuzmem besplatnu GeoIP bazu...",
|
||||
"Latitude": "Geografska širina",
|
||||
"Location": "Lokacija",
|
||||
"LocationDatabase": "Baza lokacija",
|
||||
"LocationDatabaseHint": "Baza lokacija je baza zemalja, regija ili gradova.",
|
||||
"LocationProvider": "Provajder lokacije",
|
||||
"Longitude": "Geografska dužina",
|
||||
"NoDataForGeoIPReport1": "Nema podataka za ovaj izveštaj zato što ili podaci o lokaciji nisu dostupni ili IP adresu posetioca nije moguće geolocirati.",
|
||||
"NoDataForGeoIPReport2": "Da biste omogućili preciznu geolokaciju, promenite podešavanja %1$sovde%2$s i koristite %3$sbazu gradova%4$s.",
|
||||
"Organization": "Organizacija",
|
||||
"OrgDatabase": "Baza organizacija",
|
||||
"PeclGeoIPNoDBDir": "PECL modul traži bazu u %1$s ali ovaj direktorijum ne postoji. Molimo vas da ga kreirate i da mu dodate GeoIP bazu. Takođe možete postaviti %2$s za pravi direktorijum u php.ini datoteci.",
|
||||
"PeclGeoLiteError": "Vaša GeoIp baza se nalazi u %1$s i zove se %2$s. Na žalost, PECL modul je neće prepoznati pod ovim imenom. Molimo vas da je reimenujete u %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo trenutno ne upravlja ni jednom GeoIP bazom.",
|
||||
"PluginDescription": "Prikazuje lokaciju vaših posetilaca: zemlja, region, grad i geografske koordinate (geografska dužina i širina).",
|
||||
"Region": "Regija",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Podesite automatska osvežavanja GeoIP baza.",
|
||||
"SubmenuLocations": "Lokacije",
|
||||
"TestIPLocatorFailed": "Matomo je pokušao da proveri lokaciju poznate IP adrese (%1$s) ali je vaš server vratio %2$s. Kada bi provajder bio podešen kako treba vratio bi %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Preuzeta datoteka nije validna GeoIP baza. Molimo vas da ponovo proverite URL ili da je preuzmete ručno.",
|
||||
"ToGeolocateOldVisits": "Kako biste dobili podatke o lokacijama starih poseta, iskoristite skript %1$ssa ove adrese%2$s.",
|
||||
"UnsupportedArchiveType": "Tip arhive %1$s nije prepoznat.",
|
||||
"UpdaterHasNotBeenRun": "Program za nadogradnju nije nikada ranije pokretan.",
|
||||
"UpdaterIsNotScheduledToRun": "Nije zakazano buduće izvršenje.",
|
||||
"UpdaterScheduledForNextRun": "Zakazano je da bude pokrenuto prilikom sledećeg izvršenja archive.php posla.",
|
||||
"UpdaterWasLastRun": "Poslednja provera je izvršena %s.",
|
||||
"UpdaterWillRunNext": "Sledeće izvršenje je zakazano za %s.",
|
||||
"WidgetLocation": "Lokacija posetioca"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/sv.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/sv.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Kan inte hitta funktionen apache_get_modules, förutsätter att Apache inte används som webbserver.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Kan inte hitta filen %1$s i tar-arkivet %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Variabeln %s är inte inställd. Möjligtvis är din server inte rätt konfigurerad.",
|
||||
"CannotFindPeclGeoIPDb": "Modulen GeoIP PECL kunde inte hitta någon databas för land, region eller stad. Kontrollera att databasen för GeoIP finns i %1$s och att namnet är %2$s eller %3$s, annars kommer inte PECL-modulen att hitta den.",
|
||||
"CannotListContent": "Kunde inte lista innehåll för %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP-adressen %s är en lokal adress och kan inte geolokaliseras.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Det verkar som att du lagrar din GeoIP-databas utanför Matomo (eftersom det inte finns någon databas i undermappen misc, men GeoIP fungerar). Matomo kan inte uppdatera GeoIP-databaser automatiskt om dom är placerade utanför mappen misc.",
|
||||
"CannotUnzipDatFile": "Kunde ej packa upp dat-fil i %1$s: %2$s",
|
||||
"City": "Stad",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kontinent",
|
||||
"Continents": "Kontinenter",
|
||||
"Country": "Land",
|
||||
"country_a1": "Anonym proxy",
|
||||
"country_a2": "Satellitleverantör",
|
||||
"country_cat": "Katalanska språkgemenskaperna",
|
||||
"country_o1": "Annat land",
|
||||
"VisitLocation": "Besök plats",
|
||||
"CurrentLocationIntro": "Enligt denna leverantör är din aktuella plats",
|
||||
"DefaultLocationProviderDesc1": "Som standard gissar sig platstjänsten till besökarens plats baserat på vilket språk som används.",
|
||||
"DefaultLocationProviderDesc2": "Den metoden är inte så exakt, så %1$svi rekommenderar att du installerar och använder %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Du använder den standardiserade platsleverantören, det innebär att Matomo kommer räkna ut besökarens geografiska position baserat på språket de använder. %1$sLäs det här%2$s för att lära dig mer om hur du får en mer exakt lokalisering av dina besökare.",
|
||||
"DistinctCountries": "%s distinkta länder",
|
||||
"DownloadingDb": "Laddar ner %s",
|
||||
"DownloadNewDatabasesEvery": "Uppdatera databasen varje",
|
||||
"FatalErrorDuringDownload": "Ett allvarlig fel påträffades när filen hämtades. Något kan vara fel med din uppkoppling, med GeoIP-databsen du hämtade, eller med Matomo. Försök hämta och installera den manuellt.",
|
||||
"FoundApacheModules": "Matomo hittade följande Apache-moduler",
|
||||
"FromDifferentCities": "Olika städer",
|
||||
"GeoIPCannotFindMbstringExtension": "Funktionen %1$s kunde inte hittas. Kontrollera att tillägget %2$s är installerat och laddat.",
|
||||
"GeoIPDatabases": "GeoIP-databaser",
|
||||
"GeoIPDocumentationSuffix": "För att se data i den här rapporten måste du ställa in GeoIP i inställningarna, under fliken Geolocation. Dom kommersiella versionerna av GeoIP-databaserna från %1$sMaxmind%2$s är mer exakta än dom som är gratis. Klicka %3$shär%4$s för att se hur exakta dom är.",
|
||||
"GeoIPNoDatabaseFound": "Denna GeoIP-tjänst kunde inte hitta någon databas.",
|
||||
"GeoIPImplHasAccessTo": "Den här GeoIP-tjänsten har tillgång till följande typer av databaser",
|
||||
"GeoIPIncorrectDatabaseFormat": "Din geografiska ip databas verkar inte ha korrekt format. Det finns en möjlighet att den är korrupt. Se till att du använder den binära versionen och försök ersätta den med en annan kopia.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Den är platstjänsten använder en GeoIP-databas och en PECL-modul för att kunna fastställa besökarnas plats så träffsäkert och effektivt som möjligt.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Det finns inga begränsningar med den här tjänsten, så det är den vi rekommenderar att använda.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Den här platstjänsten är den som är enklast att installera och kräver ingen serverkonfiguration (perfekt för delade webbhotell!). Den använder en GeoIP-databas och MaxMind's PHP API för att träffsäkert fastställa dina besökares platser.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Den här tjänsten kan upplevas som långsam om din webbplats har mycket trafik. I så fall borde du installera %1$sPECL tillägget%2$s eller en %3$sservermodul%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Den här platstjänsten använder GeoIP-modulen som har installerats på din HTTP-server. Den här tjänsten är snabb och träffsäker, men %1$skan endast användas tillsammans med normal webbläsarspårning.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Om du behöver importera loggfiler eller göra något annat som kräver IP-adresser: Använd %1$sPECL GeoIP (rekommenderas)%2$s eller %3$sPHP GeoIP%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Notera: Anonymisering av IP-adresser har ingen effekt på platserna som rapporteras av den här tjänsten. Kontrollera så att du inte bryter mot några sekretesslagar innan du använder den med anonyma IP-adresser.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Geografisk lokalisering fungerar, men du använder inte något av de rekommenderade verktygen.",
|
||||
"GeoIPNoServerVars": "Matomo hittar inga GeoIP %s variabler.",
|
||||
"GeoIPPeclCustomDirNotSet": "Valet %s i är inte inställt i PHP ini.",
|
||||
"GeoIPServerVarsFound": "Matomo har hittat följande variabler för GeoIP %s",
|
||||
"GeoIPUpdaterInstructions": "Ange nedladdningslänkar till dina databaser nedan. Om du har köpt databaser från %3$sMaxMind%4$s så kan du hitta dessa länkar %1$shär%2$s. Var vänlig kontakta %3$sMaxMind%4$s om du har problem att nå dom.",
|
||||
"GeoIPUpdaterIntro": "För närvarande hanterar Matomo uppdateringar för följande GeoIP-databaser",
|
||||
"GeoLiteCityLink": "Om du använder databasen GeoLite City, använd följande länk: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Geolocation",
|
||||
"GeolocationPageDesc": "På den här sidan kan du ändra hur Matomo avgör besökarnas platser.",
|
||||
"getCityDocumentation": "Den här rapporten visar vilka städer dina besökare var i när dom besökte webbplatsen.",
|
||||
"getContinentDocumentation": "Den här rapporten visar vilka kontinenter dina besökare var på när dom besökte webbplatsen.",
|
||||
"getCountryDocumentation": "Den här rapporten visar vilka länder dina besökare var i när dom besökte webbplatsen.",
|
||||
"getRegionDocumentation": "Den här rapporten visar vilka regioner dina besökare var i när dom besökte webbplatsen.",
|
||||
"HowToInstallApacheModule": "Hur installerar jag GeoIP modulen för Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Hur får jag tag i databaserna för GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Hur installerar jag tillägget GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Hur installerar jag GeoIP-modulen för Nginx?",
|
||||
"HowToSetupGeoIP": "Hur ställer jag in träffsäker geolokalisering med GeoIP?",
|
||||
"HowToSetupGeoIP_Step1": "%1$sHämta%2$s databasen GeoLite City från %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extrahera filen och kopiera resultatet %1$s till Matomo's undermapp %2$smisc%3$s (du kan göra det antingen med FTP eller SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Ladda om den här skärmbilden. %1$sGeoIP (PHP)%2$s-tjänsten kommer nu att %3$sinstalleras%4$s. Välj den.",
|
||||
"HowToSetupGeoIP_Step4": "Och du är klar! Du har precis ställt in Matomo att använda GeoIP, vilket betyder att du kommer kunna se vilka regioner och städer dina besökare kommer ifrån, tillsammans med väldigt träffsäker landsinformation.",
|
||||
"HowToSetupGeoIPIntro": "Det verkar inte som att du har ställt in träffsäker Geolocation. Detta är en användbar funktion, utan den kan du inte se komplett information om dina användare. Så här kommer du snabbt igång och kan börja använda det:",
|
||||
"HttpServerModule": "HTTP-server modul",
|
||||
"InvalidGeoIPUpdatePeriod": "Perioden för uppdateringar av GeoIP är ogiltig: Invalid period for the GeoIP updater: %1$s. Giltiga värden är %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Jag har köpt %1$sdetaljerade databaser från MaxMind%2$s och vill ställa in automatiska uppdateringar.",
|
||||
"ISPDatabase": "ISP-databas",
|
||||
"IWantToDownloadFreeGeoIP": "Jag vill ladda ner GeoIP's kostnadsfria databas...",
|
||||
"Latitude": "Latitud",
|
||||
"Latitudes": "Latituder",
|
||||
"Location": "Plats",
|
||||
"LocationDatabase": "Platsdatabas",
|
||||
"LocationDatabaseHint": "En platsdatabas är antingen en lands-, region, eller stadsdatabas.",
|
||||
"LocationProvider": "Platstjänst",
|
||||
"Longitude": "Longitud",
|
||||
"Longitudes": "Longituder",
|
||||
"NoDataForGeoIPReport1": "Det finns ingen data för den här rapporten. Antingen finns det ingen platsdata tillgänglig, eller så kan inte besökarnas IP-adresser lokaliseras.",
|
||||
"NoDataForGeoIPReport2": "Ändra inställningarna %1$shär%2$s och använd en %3$sdatabas på stadsnivå%4$s om du vill aktivera Geolocation.",
|
||||
"Organization": "Organisation",
|
||||
"OrgDatabase": "Organisationsdatabas",
|
||||
"PeclGeoIPNoDBDir": "PECL-modulen letar efter databaser i %1$s, men den här mappen finns inte. Var vänlig skapa den och lägg till GeoIP-databaser i den. Alternativt, ändra inställningen %2$s till den rätta mappen i din php.ini.",
|
||||
"PeclGeoLiteError": "Din GeoIP-databas i %1$s har namnet %2$s. Tyvärr kommer inte PECL-modulen att känna igen den med det här namnet. Var vänlig döp om den till %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "För närvarande hanterar inte Matomo någon GeoIP-databas.",
|
||||
"PluginDescription": "Geografiska rapporter för dina besökare: land, region, stad och geografiska koordinater (latitud\/longitud).",
|
||||
"Region": "Region",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Ställ in automatisk uppdatering av GeoIP-databaser",
|
||||
"SubmenuLocations": "Platser",
|
||||
"TestIPLocatorFailed": "Matomo försökte kontrollera platsen för en känd IP-adress (%1$s), men din server returnernade %2$s. Om tjänsten var rätt inställd borde den returnerat %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Den nedladdade filen är ingen giltig GeoIP-databas. Kontrollera din URL, eller ladda ner filen manuellt.",
|
||||
"ToGeolocateOldVisits": "Används skriptet som beskrivs %1$shär%2$s för att få platsdata för gamla besök.",
|
||||
"UnsupportedArchiveType": "En arkivtyp som ej stöds påträffades %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Uppdateringen har aldrig körts.",
|
||||
"UpdaterIsNotScheduledToRun": "Den är inte planerad att köras i fortsättningen.",
|
||||
"UpdaterScheduledForNextRun": "Den är planerad att köras under den nästa archive.php tidssession.",
|
||||
"UpdaterWasLastRun": "Sensate uppdateringen gjordes den %s.",
|
||||
"UpdaterWillRunNext": "Den är planerar att köras på %s.",
|
||||
"WidgetLocation": "Besökares plats"
|
||||
}
|
||||
}
|
8
msd2/tracking/piwik/plugins/UserCountry/lang/ta.json
Normal file
8
msd2/tracking/piwik/plugins/UserCountry/lang/ta.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"country_o1": "ஏனைய நாடுகள்",
|
||||
"FromDifferentCities": "வேறுபட்ட நகரங்கள்",
|
||||
"Location": "இடம்",
|
||||
"WidgetLocation": "வருகையாளர் இடம்"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/UserCountry/lang/te.json
Normal file
12
msd2/tracking/piwik/plugins/UserCountry/lang/te.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"City": "నగరం",
|
||||
"Continent": "ఖండం",
|
||||
"Country": "దేశం",
|
||||
"DistinctCountries": "%s ఇతర దేశాలు",
|
||||
"Latitude": "అక్షాంశం",
|
||||
"Location": "ప్రాంతం",
|
||||
"Longitude": "రేఖాంశం",
|
||||
"SubmenuLocations": "ప్రాంతాలు"
|
||||
}
|
||||
}
|
19
msd2/tracking/piwik/plugins/UserCountry/lang/th.json
Normal file
19
msd2/tracking/piwik/plugins/UserCountry/lang/th.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"City": "เมือง",
|
||||
"Continent": "ทวีป",
|
||||
"Country": "ประเทศ",
|
||||
"country_a2": "ผู้ให้บริการดาวเทียม",
|
||||
"country_o1": "ประเทศอื่นๆ",
|
||||
"DistinctCountries": "%s การเข้าชมตามประเทศ",
|
||||
"DownloadingDb": "กำลังดาวน์โหลด %s",
|
||||
"ISPDatabase": "ฐานข้อมูล ISP",
|
||||
"Latitude": "ละติจูด",
|
||||
"Location": "ตำแหน่งที่ตั้ง",
|
||||
"Longitude": "ลองจิจูด",
|
||||
"Region": "ภูมิภาค",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "ติดตั้งการปรับปรุงอัตโนมัติจากฐานข้อมูล GeoIP",
|
||||
"SubmenuLocations": "ตำแหน่งที่อยู่",
|
||||
"UpdaterWasLastRun": "ตัวปรับปรุงทำงานครั้งล่าสุดเมื่อ %s"
|
||||
}
|
||||
}
|
95
msd2/tracking/piwik/plugins/UserCountry/lang/tl.json
Normal file
95
msd2/tracking/piwik/plugins/UserCountry/lang/tl.json
Normal file
@ -0,0 +1,95 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Hindi mahanap ang apache_get_modules function sa pag-aakala na hindi Apache webserver.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Hindi mahanap ang file na %1$s sa %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Ang %s variable ay hindi naka-set. Ang iyong server ay maaaring hindi naka-configure nang tama.",
|
||||
"CannotFindPeclGeoIPDb": "Hindi mahanap ang bansa rehiyon o lungsod sa database para sa GeopIP PECL module. Tiyakin na ang iyong GeoIP database ay makikita sa %1$s at may pangalang %2$s o %3$s o di kaya ang PECL module ay hindi napansin ito.",
|
||||
"CannotListContent": "Hindi ma-ilista ang nilalaman para sa %1$s: %2$s.",
|
||||
"CannotLocalizeLocalIP": "Ang IP address %s ay isang lokal na address at hindi maaaring i-geolocated.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Ito ay magmumukhang paglalagay ng iyong GeoIP databases sa labas ng Matomo (maari nating sabihin dahil walang databases sa misc subdirectory ngunit ang iyong GeoIP ay gumagana). Hindi maaaring awtomatikong i-update ang iyong mga Matomo GeoIP database kung ito ay nakalagay sa labas ng direktoryo Misc.",
|
||||
"CannotUnzipDatFile": "Hindi ma-unzip ang dat file sa %1$s: %2$s.",
|
||||
"City": "Lungsod",
|
||||
"CityAndCountry": "%1$s %2$s",
|
||||
"Continent": "Kontinente",
|
||||
"Country": "Bansa",
|
||||
"country_a1": "Anonymous Proxy",
|
||||
"country_a2": "Satellite Provider",
|
||||
"country_cat": "Komunidad ng wikang Catalan",
|
||||
"country_o1": "Iba pang mga bansa",
|
||||
"CurrentLocationIntro": "Ayon sa provider ang iyong kasalukuyang lokasyon ay",
|
||||
"DefaultLocationProviderDesc1": "Ang default na lokasyon ng provider na humu-hula sa mga bansa ng bumibisita batay sa wika na ginagamit nila.",
|
||||
"DefaultLocationProviderDesc2": "Ito ay hindi ganun ka tiyak kaya aming %1$snirerekomenda na mag install at gumamit ng %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Iyong ginagamit ang default location provider na nangangahulugan na ang Matomo ay huhulaan ang lokasyon ng iyong bisita base sa wika na kanilang ginagamit. %1$sRead this%2$s upang malaman panu e-setup na may tamang geolocation.",
|
||||
"DistinctCountries": "natatanging mga bansa %s",
|
||||
"DownloadingDb": "Downloading %s",
|
||||
"DownloadNewDatabasesEvery": "I-update ang mga bawat database",
|
||||
"FatalErrorDuringDownload": "May malalang error na naganap habang dina-download ang file na ito. Maaring may mali sa iyong internet koneksyon",
|
||||
"FoundApacheModules": "Matomo nahanap ang mga sumusunod na Apache modules.",
|
||||
"FromDifferentCities": "ibang mga lungsod",
|
||||
"GeoIPCannotFindMbstringExtension": "Hindi mahanap ang %1$s function. Mangyaring siguraduhin na ang %2$s extension na naka-install at na-load.",
|
||||
"GeoIPDatabases": "GeoIP ng mga Database",
|
||||
"GeoIPDocumentationSuffix": "Upang makita ang dataus para sa ulat na ito kailangan mong mag setup ng GeoIP sa Geolocation admin tab. Ang komersyal %1$sMaxmind%2$s GeoIP databases ay higit na tiyak kaysa sa mga libre. Upang makita kung gaano ito ka-tiyak i-click ang %3$shere%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Ang pagpapatupad ng GeoIP na ito ay may access sa mga sumusunod na uri ng database",
|
||||
"GeoIPIncorrectDatabaseFormat": "Ang iyong database GeoIP ay mukhang may hindi tamang format. Maaari na ito ay sira. Tiyaking maige na ginagamit mo ang binary bersyon at subukang palitan ito ng isang kopya.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Ang provider ng lokasyon na ito ay gumagamit ng isang database GeoIP at PECL module upang maging tiyak at tama ang pagtukoy sa lokasyon ng iyong mga bisita.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Walang mga limitasyon sa provider na ito kaya ito ay isa sa mga aming nirerekomenda na gamitin.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Ang ng location ng provider ay pinaka simpleng i-install sa pagkat ito ay hindi nangangailangan ng configuration ng server(tamang-tama sa mga shared-hosting!). Ito ay gumagamit ng GeopIp databases at MaxMind's PHP API upang matukoy ang tumpak na lokasyon ng iyong mga bisita",
|
||||
"GeoIpLocationProviderDesc_Php2": "Kung ang iyong website ay nakakakuha ng mataas ng traffic iyong mapapansin na itong location provider ay mabagal. Sa sitwasyong ito dapat mong i-install ang %1$sPECL extension%2$s o ang %3$sserver module%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Kung meron kang e-iimport na mga log files o di kaya ay may gagawing na may kinalaman sa pag set ng IP addresses gamitin ang %1$sPECL GeoIP implementation (recommended)%2$s or ang %3$sPHP GeoIP implementation%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Tandaan: IP anonymization ay walang epekto sa mga lokasyon na inulat ng provider na ito. Bago ito gamitin na may IP anonymization siguraduhin na ito ay hindi lumalabag sa mga batas ng privacy na maaring sumailalim sa.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Gumagana ang Geolocation ngunit hindi ka gumagamit ng isa sa mga inirerekomendang provider.",
|
||||
"GeoIPNoServerVars": "Hindi mahanap ng Matomo ang kahit na anong %s variable ng GeoIP.",
|
||||
"GeoIPPeclCustomDirNotSet": "Ang %s PHP ini options ay hindi pa na set.",
|
||||
"GeoIPServerVarsFound": "Nakita ng Matomo ang mga sumusunod na %s variable ng GeoIP",
|
||||
"GeoIPUpdaterInstructions": "Ipasok ang mga links ng mga na download para sa iyong databases sa ibaba. Kung ikaw ay bumili ng mga databases mula sa %3$sMaxMind%4$s Maari mong mahanap ang mga links na ito sa %1$shere%2$s. Mangyaring makipag-ugnay sa %3$sMaxMind%4$s kung mayroong naging problema sa pag-access sa mga ito.",
|
||||
"GeoIPUpdaterIntro": "Kasalukuyang namamahala ang Matomo ng mga update para sa sumusunod na mga GeoIP database",
|
||||
"GeoLiteCityLink": "Kung gumagamit ka ng GeoLite City database gamitin ang link na ito: %1$s%2$s%3$s \"",
|
||||
"Geolocation": "Geolocation",
|
||||
"GeolocationPageDesc": "Sa pahinang ito ay maaari mo nang baguhin kung paano malalaman ng Matomo ang lokasyon ng bisita.",
|
||||
"getCityDocumentation": "Ipinapakita ng ulat na ito ang lungsod ng iyong mga bisita ng in-access nila ang iyong website.",
|
||||
"getContinentDocumentation": "Ang ulat na ito ay nagpapakita kung aling mga kontinente galing ang iyong mga bisita na umaccess sa iyong website.",
|
||||
"getCountryDocumentation": "Ang ulat na ito ay nagpapakita kung saang bansa galing ang iyong bisita ng ina-access nila ang iyong website.",
|
||||
"getRegionDocumentation": "Ang ulat na ito ay nagpapakita kung saang rehiyon galing ang iyong mga bisita ng in-access nila ang iyong website.",
|
||||
"HowToInstallApacheModule": "Paano ko ii-install ang GeoIP module para sa Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Paano ko makakakuha ang mga database ng GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Paano ako magiinstall ng karugtong ng GeoIP PECL?",
|
||||
"HowToInstallNginxModule": "Paano ko ii-install ang GeoIP module para sa Nginx?",
|
||||
"HowToSetupGeoIP": "Paano i-setup ang tumpak na geolocation gamit ang GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$s I-download %2$s ang GeoLite City database mula sa %3$s MaxMind %4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Extract ang file na ito at kopyahin ang mga resulta %1$s sa %2$s misc %3$s Matomo subdirectory (maaari mong gawin ito sa pamamagitan ng FTP o SSH)",
|
||||
"HowToSetupGeoIP_Step3": "I-reload ang screen na ito. Ang %1$s GeoIP (PHP) %2$s provider na ngayon ang %3$s i-iinstal%4$s. Piliin ito.",
|
||||
"HowToSetupGeoIP_Step4": "At ikaw ay tapos na! Nagawang mong mag setup ng Matomo upang magamit ang GeoIP na nangangahulugan na iyo ng makikita ang bawat rehiyon at lungsod ng bawat bibisita sa iyong webiste namay tiyak na impormasyon sa kanilang bansa.",
|
||||
"HowToSetupGeoIPIntro": "Ikaw ay may hindi wastong Geolocation setup. Ang feature na ito ay malaking tulong at kung wala nito hindi mo makikita ang tumpak na at kumpletong impormasyon ng lokasyon para sa iyong mga bisita. Narito kung paano mo agad masisimulan ang paggamit nito:",
|
||||
"HttpServerModule": "HTTP Module Server",
|
||||
"InvalidGeoIPUpdatePeriod": "Di-wastong panahon para sa GeoIP update: %1$s. Ang wastong value ay %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Bumili ako ng higit sa %1$s database mula MaxMind %2$s at nais na i-setup ang awtomatikong update.",
|
||||
"ISPDatabase": "ISP Database",
|
||||
"IWantToDownloadFreeGeoIP": "Gusto kong i-download ang libreng database ng GeoIP.",
|
||||
"Latitude": "Latitud",
|
||||
"Location": "Lokasyon",
|
||||
"LocationDatabase": "Lokasyon ng database",
|
||||
"LocationDatabaseHint": "Ang database ng lokasyon ay alinman sa isang bansa rehiyon o database ng lungsod.",
|
||||
"LocationProvider": "Lokasyon ng provider",
|
||||
"Longitude": "Longhitud",
|
||||
"NoDataForGeoIPReport1": "Walang mga datus para sa ulat na ito dahil walang data na magagamit sa lokasyon o ang IP address ay hindi maaaring e-geolocated.",
|
||||
"NoDataForGeoIPReport2": "Upang paganahin ang tamang geolocation baguhin ang mga setting %1$sdito%2$s at gumamit ng%3$scity database%4$s.",
|
||||
"Organization": "Organisasyon",
|
||||
"OrgDatabase": "Organisasyon ng Database",
|
||||
"PeclGeoIPNoDBDir": "Ang PECL module ay naghahanap ng databases sa %1$s Pero ang directory na ito ay wala. Mangyaring gawin ito at e-dagdag ang GeopIP databases dito. Bukod dito maari kang magtakda ng %2$s sa tamang directory sa iyong php.ini file",
|
||||
"PeclGeoLiteError": "Ang iyong GeoIP database sa %1$s ay may pangalang %2$s. Sa kasamaang palad ang PECL module ay hindi ito kinikila sa ganitong pangalan. Mangyarin ito ay baguhin sa %3$s",
|
||||
"PiwikNotManagingGeoIPDBs": "Ang Matomo ay kasalukuyang di namamahala ng anumang GeoIP database",
|
||||
"Region": "Rehiyon",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "I-set-up ang awtomatikong update ng mga database ng GeoIP",
|
||||
"SubmenuLocations": "Mga Lokasyon",
|
||||
"TestIPLocatorFailed": "Susubukan ng Matomo ang tignan ang lokasyon ng hindi nakikilalang IP address (%1$s) Ngunit ang iyong server ay may ibinalik na %2$s. Kung ang iyong provider ay tama ang pagkaka configure ito ay magbabalik ng %3$s",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Ang mga na download na file ay hindi tamang GeoIP database. Mang-yaring e-check muli ang URL o i-download muli ang file ng mano-mano.",
|
||||
"ToGeolocateOldVisits": "Upang makakuha ng data ng lokasyon para sa iyong lumang mga pagbisita gamitin ang script na inilarawan %1$shere%2$s.",
|
||||
"UnsupportedArchiveType": "Nakatagpo ng hindi suportadong klase ng archive %1$s",
|
||||
"UpdaterHasNotBeenRun": "Ang updater ay hindi pa napapatatakbo.",
|
||||
"UpdaterIsNotScheduledToRun": "Ito ay hindi nakaiskedyul na tumakbo sa hinaharap.",
|
||||
"UpdaterScheduledForNextRun": "Ito ay naka-iskedyul na tumakbo sa loob ng susunod na cron core: i-archive ang execution ng command.",
|
||||
"UpdaterWasLastRun": "Ang updater ay huling na i-run ng %s.",
|
||||
"UpdaterWillRunNext": "Ito ang susunod na naka-schedule upang tumakbo ng %s.",
|
||||
"WidgetLocation": "Lokasyon ng bisita"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/tr.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/tr.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "apache_get_modules işlevi bulunamadığı için web sunucusunun Apache olmadığı varsayılıyor.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "%1$s dosyası %2$s tar arşivinde bulunamadı!",
|
||||
"CannotFindGeoIPServerVar": "%s değişkeni ayarlanmamış. Sunucunuz doğru yapılandırılmamış.",
|
||||
"CannotFindPeclGeoIPDb": "GeoIP PECL modülü için bir ülke, bölge ya da ilçe veritabanı bulunamadı. GeoIP veritabanının %1$s içinde bulunduğundan ve %2$s ya da %3$s olarak adlandırıldığından emin olun. Yoksa veritabanı PECL modülü tarafından algılanamaz.",
|
||||
"CannotListContent": "%1$s: %2$s içeriği listelenemedi",
|
||||
"CannotLocalizeLocalIP": "%s IP adresi yerel bir adres olduğundan coğrafi konumu belirlemekte kullanılamaz.",
|
||||
"CannotSetupGeoIPAutoUpdating": "GeoIP veritabanlarını Matomo dışında bir konumda bulunduruyorsunuz gibi görünüyor (bunu misc alt klasöründe herhangi bir veritabanı bulunmadığı halde GeoIP özelliğinin çalışıyor olduğuna bakarak söyleyebiliyoruz). Matomo, misc klasörünün dışında bulunan GeoIP veritabanlarını güncelleyemez.",
|
||||
"CannotUnzipDatFile": "%1$s: %2$s içindeki dat dosyası ayıklanamadı",
|
||||
"City": "İl",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Kıta",
|
||||
"Continents": "Kıta",
|
||||
"Country": "Ülke",
|
||||
"country_a1": "İsimsiz Vekil Sunucu",
|
||||
"country_a2": "Uydu Hizmeti Sağlayıcı",
|
||||
"country_cat": "Katalanca konuşulan topluluklar",
|
||||
"country_o1": "Başka Bir Ülke",
|
||||
"VisitLocation": "Konumu Ziyaret Et",
|
||||
"CurrentLocationIntro": "Bu hizmet sağlayıcıya göre geçerli konumunuz:",
|
||||
"DefaultLocationProviderDesc1": "Varsayılan konum hizmeti sağlayıcısı bir ziyaretçinin ülkesini kullandığı dile göre belirler.",
|
||||
"DefaultLocationProviderDesc2": "Bu yöntem çok güvenilir değildir. %1$sBu nedenle %2$sGeoIP%3$s özelliğini kurup kullanmanız önerilir.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Varsayılan konum hizmeti sağlayıcısını kullanıyorsunuz. Bu yöntemde bir ziyaretçinin ülkesi kullandığı dile göre belirlenir. Daha doğru coğrafi konumlama kurulumunun nasıl yapılacağı hakkında ayrıntılı bilgi almak için %1$sbu bölümü okuyun%2$s.",
|
||||
"DistinctCountries": "%s ayrı ülke",
|
||||
"DownloadingDb": "İndiriliyor %s",
|
||||
"DownloadNewDatabasesEvery": "Veritabanı güncelleme sıklığı",
|
||||
"FatalErrorDuringDownload": "Matomo GeoIP veritabanı indirilirken bir sorun çıktı. İnternet bağlantınız sağlıklı çalışmıyor olabilir. El ile indirip kurmayı deneyin.",
|
||||
"FoundApacheModules": "Matomo şu Apache modüllerini buldu.",
|
||||
"FromDifferentCities": "ayrı iller",
|
||||
"GeoIPCannotFindMbstringExtension": "%1$s işlevi bulunamadı. Lütfen %2$s eklentisinin kurulmuş ve yüklenmiş olduğundan emin olun.",
|
||||
"GeoIPDatabases": "GeoIP Veritabanları",
|
||||
"GeoIPDocumentationSuffix": "Bu raporun verilerini görüntülemek için Coğrafi konum yönetici sekmesinden GeoIP kurulumunu yapmalısınız. Ticari %1$sMaxmind%2$s GeoIP veritabanları ücretsiz olanlardan daha doğrudur. Doğruluğu görmek için %3$sburaya tıklayın%4$s",
|
||||
"GeoIPNoDatabaseFound": "Bu GeoIP uygulaması herhangi bir veritabanı bulamadı.",
|
||||
"GeoIPImplHasAccessTo": "GeoIP uygulaması şu türdeki veritabanlarına erişebilir",
|
||||
"GeoIPIncorrectDatabaseFormat": "GeoIP veritabanı biçiminiz geçersiz görünüyor. Bozulmuş olabilir. Binary sürümü kullanıyor olduğunuzdan emin olun ve başka bir kopya ile değiştirmeyi deneyin.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Bu konum hizmeti sağlayıcısı GeoIP veritabanı ve PECL modülünü kullanarak ziyaretçilerinizin konumunu doğru ve etkin bir şekilde belirler.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Bu hizmet sağlayıcısı ile ilgili bir sınırlama olmadığından bu sağlayıcıyı kullanmanız önerilir.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Bu konum hizmeti sağlayıcı en basit kurulanıdır ve sunucu yapılandırmasına gerek duymaz (paylaşılan barındırma hizmetleri için idealdir). GeoIP veritabanını ve MaxMind PHP API uygulamasını kullanarak ziyaretçilerinizin konumunu doğru olarak belirler.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Web siteniz yüksek trafiğe sahipse bu konum hizmeti sağlayıcısı çok yavaş kalabilir. Bu durumda %1$sPECL eklentisini%2$s ya da bir %3$ssunucu modülünü%4$s kurmalısınız.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Bu konum hizmeti sağlayıcı HTTP sunucunuza kurulan bir GeoIP modülünü kullanır. Bu hizmet sağlayıcı hızlı ve doğrudur ancak %1$syalnız normal web tarayıcı izlemesi ile kullanılabilir%2$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Günlük dosyalarını içe aktarmanız ya da IP adreslerini ayarlamanız gereken bir işlem yapmanız gerekiyorsa %1$sPECL GeoIP uygulamasını (önerilir)%2$s ya da %3$sPHP GeoIP uygulamasını%4$s kullanın.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Not: IP adresini anonim kılmanın bu hizmet sağlayıcı tarafından rapor edilen konumlar üzerinde bir etkisi yoktur. IP adresini anonim kılmadan önce bu durumun uymak zorunda olduğunuz kişisel veri güvenliği yasalarına aykırı olmadığından emin olun.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Coğrafi konum bulma çalışıyor ancak önerilen hizmet sağlayıcılardan birini kullanmıyorsunuz.",
|
||||
"GeoIPNoServerVars": "Matomo herhangi bir GeoIP %s değişkeni bulamadı.",
|
||||
"GeoIPPeclCustomDirNotSet": "%s PHP ini ayarı yapılmamış.",
|
||||
"GeoIPServerVarsFound": "Matomo şu GeoIP %s değişkenlerini algılar",
|
||||
"GeoIPUpdaterInstructions": "Aşağıya veritabanlarınızın indirme bağlantılarını yazın. %3$sMaxMind%4$s veritabanlarını satın aldıysanız bu bağlantıları %1$sburada bulabilirsiniz%2$s. Erişim sorunu yaşıyorsanız %3$sMaxMind%4$s ile görüşün.",
|
||||
"GeoIPUpdaterIntro": "Matomo şu anda şu GeoIP veritabanlarının güncellemelerini alıyor",
|
||||
"GeoLiteCityLink": "GeoLite City veritabanını kullanıyorsanız şu bağlantıyı kullanın: %1$s%2$s%3$s",
|
||||
"Geolocation": "Coğrafi Konum",
|
||||
"GeolocationPageDesc": "Ziyaretçi konumun Matomo tarafından nasıl bulunacağı bu bölümden ayarlanabilir.",
|
||||
"getCityDocumentation": "Bu rapor, ziyaretçilerin web sitenize eriştiği il bilgilerini içerir.",
|
||||
"getContinentDocumentation": "Bu rapor, ziyaretçilerin web sitenize eriştiği kıta bilgilerini içerir.",
|
||||
"getCountryDocumentation": "Bu rapor, ziyaretçilerin web sitenize eriştiği ülke bilgilerini içerir.",
|
||||
"getRegionDocumentation": "Bu rapor, ziyaretçilerin web sitenize eriştiği bölge bilgilerini içerir.",
|
||||
"HowToInstallApacheModule": "Apache için GeoIP modülü nasıl kurulur?",
|
||||
"HowToInstallGeoIPDatabases": "GeoIP veritabanları nasıl alınır?",
|
||||
"HowToInstallGeoIpPecl": "GeoIP PECL eklentisi nasıl kurulur?",
|
||||
"HowToInstallNginxModule": "Nginx için GeoIP modülünü nasıl kurulur?",
|
||||
"HowToSetupGeoIP": "GeoIP ile doğru konum bulma ayarları nasıl yapılır?",
|
||||
"HowToSetupGeoIP_Step1": "%3$sMaxMind%4$s üzerinden GeoLite City veritabanını %1$sİndirin%2$s.",
|
||||
"HowToSetupGeoIP_Step2": "Bu dosyayı ayıklayın ve sonucu Matomo %2$smisc%3$s klasöründe %1$s içine kopyalayın (bunu FTP ya da SSH ile yapabilirsiniz).",
|
||||
"HowToSetupGeoIP_Step3": "Bu sayfayı yeniden yükleyin. Şimdi %1$sGeoIP (PHP)%2$s hizmet sağlayıcısı %3$skurulacak%4$s. Onu seçin.",
|
||||
"HowToSetupGeoIP_Step4": "İşlem tamam! Matomo için GeoIP uygulamasını ayarladınız. Böylece ziyaretçilerinizin geldiği ülkeleri büyük doğrulukla belirlerken bunun yanında bölge ve il bilgilerini de görebileceksiniz.",
|
||||
"HowToSetupGeoIPIntro": "Coğrafi konum bulma ayarlarınızın doğruluğu yeterli değil gibi görünüyor. Bu özellik oldukça kullanışlıdır ve düzgün çalışmadığında ziyaretçileriniz hakkında doğru ve tam konum bilgisi alamazsınız. Hızlıca kullanmaya başlamak için gerekli bilgileri şurada bulabilirsiniz:",
|
||||
"HttpServerModule": "HTTP Sunucu Modülü",
|
||||
"InvalidGeoIPUpdatePeriod": "GeoIP güncelleme sıklığı geçersiz: %1$s. Geçerli değerler şunlardır: %2$s.",
|
||||
"IPurchasedGeoIPDBs": "%1$sDaha doğru MaxMind veritabanları%2$s satın aldım ve otomatik güncellemeleri kurmak istiyorum.",
|
||||
"ISPDatabase": "ISP Veritabanı",
|
||||
"IWantToDownloadFreeGeoIP": "Ücretsiz GeoIP veritabanını indirmek istiyorum...",
|
||||
"Latitude": "Enlem",
|
||||
"Latitudes": "Enlem",
|
||||
"Location": "Konum",
|
||||
"LocationDatabase": "Konum Veritabanı",
|
||||
"LocationDatabaseHint": "Bir ülke, bölge ya da il konumları veritabanı.",
|
||||
"LocationProvider": "Konum Hizmeti Sağlayıcı",
|
||||
"Longitude": "Boylam",
|
||||
"Longitudes": "Boylam",
|
||||
"NoDataForGeoIPReport1": "Kullanılabilecek bir konum verisi olmadığından ya da ziyaretçi IP adreslerinin coğrafi konumu algılanamadığından bu rapor için herhangi bir veri yok.",
|
||||
"NoDataForGeoIPReport2": "Coğrafi konumun doğru olarak bulunması için %1$sburadan%2$s ayarları değiştirin ve %3$sil düzeyindeki bir veritabanı%4$s kullanın.",
|
||||
"Organization": "Kuruluş",
|
||||
"OrgDatabase": "Kuruluş Veritabanı",
|
||||
"PeclGeoIPNoDBDir": "PECL modülü %1$s içinde veritabanlarına bakıyor ancak klasör bulunamadı. LÜtfen bu klasörü oluşturun ve içine GeoIP veritabanlarını ekleyin. Alternatif olarak php.ini dosyanızdaki %2$s ayarına doğru klasörü yazın.",
|
||||
"PeclGeoLiteError": "%1$s içindeki GeoIP veritabanının adı %2$s. Maalesef PECL modülü veritabanını bu ad ile tanımlayamaz. Lütfen veritabanının adını %3$s olarak değiştirin.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo şu anda herhangi bir GeoIP veritabanını yönetmiyor.",
|
||||
"PluginDescription": "Ziyaretçilerinizin konumlarını görüntüler: Ülke, bölge, il ve coğrafi koordinatlar (enlem\/boylam).",
|
||||
"Region": "Bölge",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "GeoIP veritabanları otomatik güncellemesini kurun",
|
||||
"SubmenuLocations": "Konumlar",
|
||||
"TestIPLocatorFailed": "Matomo bilinen bir IP adresinin konumunu belirlemeyi denedi (%1$s) ancak sunucudan %2$s yanıtı geldi. Bu hizöet sağlayıcı doğru olarak yapılandırılmış ise %3$s yanıtı gelmeliydi.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "İndirilen dosya geçerli bir GeoIP veritabanı değil. Lütfen adresi yeniden denetleyin ya da dosyayı el ile indirin.",
|
||||
"ToGeolocateOldVisits": "Eski ziyaretlerinizle ilgili konum bilgilerini almak için %1$sburada%2$s belirtilen betiği kullanın.",
|
||||
"UnsupportedArchiveType": "Desteklenmeyen %1$s arşiv türü bulundu.",
|
||||
"UpdaterHasNotBeenRun": "Güncelleyici henüz hiç çalışmamış.",
|
||||
"UpdaterIsNotScheduledToRun": "Gelecekte çalışmak üzere ayarlanmamış.",
|
||||
"UpdaterScheduledForNextRun": "core:archive komutunun yürütüleceği zamanlanmış görevin bir sonraki çalışmasında güncellenecek.",
|
||||
"UpdaterWasLastRun": "Güncelleyici en son %s zamanında çalıştı.",
|
||||
"UpdaterWillRunNext": "Zamanlanmış görev %s zamanında çalışacak.",
|
||||
"WidgetLocation": "Ziyaretçi Konumu"
|
||||
}
|
||||
}
|
97
msd2/tracking/piwik/plugins/UserCountry/lang/uk.json
Normal file
97
msd2/tracking/piwik/plugins/UserCountry/lang/uk.json
Normal file
@ -0,0 +1,97 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Не вдається знайти apache_get_modules функцію, мабуть цей веб-сервер це не на Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Не знайдено файл %1$s в tar-архіві %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Змінна %s не встановлена. Ваш сервер не може бути налаштований правильно.",
|
||||
"CannotFindPeclGeoIPDb": "Неможливо знайти базу базу даних по країні, регіону або міста для GeoIP PECL модуля. Переконайтеся, що ваша БД GeoIP знаходиться в %1$s і названа %2$s або %3$s, інакше PECL модуль не помітить її.",
|
||||
"CannotListContent": "Не вдалося перерахувати вміст %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "IP адреса %s - це локальна адреса і її конкретне місцезнаходження не може бути визначено.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Схоже на те, що Ви зберігаєте свої GeoIP бази за межами папки Matomo. Matomo не може автоматично оновлювати бази, які знаходяться за межами папки misc.",
|
||||
"CannotUnzipDatFile": "Неможливо розпакувати dat-файл в %1$s : %2$s",
|
||||
"City": "Місто",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Континент",
|
||||
"Country": "Країна",
|
||||
"country_a1": "Анонімний проксі",
|
||||
"country_a2": "Супутниковий провайдер",
|
||||
"country_cat": "Каталаномовні суспільства",
|
||||
"country_o1": "Інша країна",
|
||||
"CurrentLocationIntro": "Згідно використовуваного способу відстеження ви знаходитесь тут",
|
||||
"DefaultLocationProviderDesc1": "Цей спосіб відстеження визначає місце розташування на основі мови, яким користуються користувачі в браузері і системі.",
|
||||
"DefaultLocationProviderDesc2": "Це не дуже точне визначення, тому %1$sми рекомендуємо використовувати і встановити плагін %2$sGeoIp%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Ви використовуєте провайдер визначення розташування за промовчанням. Це означає, що за Matomo буде судити про місцезнаходження відвідувача по використовуваній ним мові. %1$sПрочитайте тут%2$s про те, як встановлювати розташування більш точно.",
|
||||
"DistinctCountries": "%s унікальних країн",
|
||||
"DownloadingDb": "Завантаження %s",
|
||||
"DownloadNewDatabasesEvery": "Оновлювати базу раз в",
|
||||
"FatalErrorDuringDownload": "Сталась критична помилка при завантаженні цього файлу. Там може бути щось не так з вашим інтернет з'єднанням, з базою даних GeoIP, яку ви завантажили або Matomo. Спробуйте завантажити і встановити його вручну.",
|
||||
"FoundApacheModules": "Matomo знайшов наступні модулі Apache",
|
||||
"FromDifferentCities": "різні міста",
|
||||
"GeoIPCannotFindMbstringExtension": "Неможливо знайти функцію %1$s. Будь ласка, переконайтеся, що розширення %2$s завантажено і встановлено.",
|
||||
"GeoIPDatabases": "Бази даних GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Щоб побачити дані з цього звіту ви повинні встановити GeoIP в секції Geolocation, яка знаходиться в панелі адміністрування. Платні бази даних GeoIP %1$sMaxmind%2$s більш точні, ніж безкоштовні. Наскільки саме вони точні, ви можете подивитися %3$sтут%4$s.",
|
||||
"GeoIPImplHasAccessTo": "Цей варіант реалізації GeoIP має доступ до таких баз даних",
|
||||
"GeoIPIncorrectDatabaseFormat": "Ваша GeoIP база даних, здається, не має правильного формату. Вона може бути пошкоджена. Переконайтеся, що ви використовуєте бінарну версію і спробувйте замінити її іншим примірником.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Місце розташування ваших відвідувачів визначається за допомогою бази даних GeoIP і модуля PECL. Таке визначення — більш чітке та ефективне.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Обмежень по використанню цього способу відстеження немає, тому ми рекомендуємо саме його.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Цей спосіб відстеження є найбільш простим в установці, оскільки це не вимагає налаштування сервера (ідеально підходить для віртуального хостингу!). Він використовує GeoIP бази даних і PHP API MaxMind, щоб точно визначити місце розташування ваших відвідувачів.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Якщо у вашого сайту дуже багато відвідувачів, ви помітите, що цей спосіб занадто повільний. У цьому випадку вам потрібно встановити %1$sPECL розширення%2$s або спеціальний %3$sсерверний модуль%4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Визначення локації засноване на модулі GeoIP, який був встановлений на ваш HTTP-сервер. Це працює швидше і точніше, але %1$sможе бути використаний лише при відстеженні відвідувачів, які користуються звичайними браузерами.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Якщо вам потрібно імпортувати лог-файли або зробити щось, що вимагає наявності та IP адрес, використовуйте %1$s вбудовуваний PECL GeoIP (рекомендується)%2$s або %3$s вбудовуваний PHP GeoIP %4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Підказка: анонімізація IP не впливає на ефект на отримання локації користувачів таким способом. Перед тим, як використовувати його з анонімізацією IP, переконайтеся, що це не суперечить законодавству вашої країни.",
|
||||
"GeoIpLocationProviderNotRecomnended": "Геолокація працює, але ви не використовуєте один з рекомендованих провайдерів.",
|
||||
"GeoIPNoServerVars": "Matomo не може знайти GeoIP %s змінні.",
|
||||
"GeoIPPeclCustomDirNotSet": "PHP ini опція %s не встановлена.",
|
||||
"GeoIPServerVarsFound": "Matomo знайшов наступні змінні GeoIP: %s",
|
||||
"GeoIPUpdaterInstructions": "Вкажіть посилання нижче для завантаження баз даних. Якщо ви купили бази даних з %3$sMaxMind%4$s, ви можете знайти ці посилання %1$sтут%2$s. Будь ласка, зв'яжіться з %3$sMaxMind%4$s якщо у вас є проблеми з доступом до них.",
|
||||
"GeoIPUpdaterIntro": "Matomo в даний час управляє оновленнями для наступних баз GeoIP",
|
||||
"GeoLiteCityLink": "Якщо ви використовуєте базу даних GeoLite City, скористайтесь цим посиланням: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Геолокація",
|
||||
"GeolocationPageDesc": "На цій сторінці ви можете змінити спосіб визначення місцеположення відвідувачів.",
|
||||
"getCityDocumentation": "Цей звіт показує міста відвідувачів вашого сайту.",
|
||||
"getContinentDocumentation": "Цей звіт показує континенти відвідувачів вашого сайту.",
|
||||
"getCountryDocumentation": "Цей звіт показує країни відвідувачів вашого сайту.",
|
||||
"getRegionDocumentation": "Цей звіт показує регіони відвідувачів вашого сайту.",
|
||||
"HowToInstallApacheModule": "Як встановити GeoIP модуль для Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Як мені отримати бази даних GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Як встановити GeoIP PECL розширення?",
|
||||
"HowToInstallNginxModule": "Як встановити GeoIP модуль для Nginx?",
|
||||
"HowToSetupGeoIP": "Як встановити точне визначення локацій відвідувачів з допомогою GeoIP",
|
||||
"HowToSetupGeoIP_Step1": "%1$sЗавантажте%2$s базу даних GeoLite City з %3$sMaxMind%4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Вилучіть цей файл і скопіюйте %1$s в %2$smisc%3$s піддиректорію Matomo (ви можете зробити це через FTP або SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Перезавантажте цю сторінку. Переконайтеся, що %1$sGeoIP (PHP)%2$s тепер %3$sВстановлено%4$s. Виберіть його.",
|
||||
"HowToSetupGeoIP_Step4": "Ось і все! Ви тільки що встановили GeoIP для Matomo, що означає, що ви можете бачити регіони і міста ваших відвідувачів та країну, де вони знаходяться.",
|
||||
"HowToSetupGeoIPIntro": "Здається, що у вас не налаштоване визначено локації відвідувачів з допомогою GeoIP. Це корисна \"штука\" - без неї ви не зможете досить точно визначати місцезнаходження відвідувачів. І ось як ви можете швидко налаштувати все:",
|
||||
"HttpServerModule": "HTTP Серверний модуль",
|
||||
"InvalidGeoIPUpdatePeriod": "Невірний період для GeoIP оновлення: %1$s. Допустимі значення: %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Я придбав більш %1$sдеталізовану базу даних у MaxMind%2$s і хочу налаштувати автоматичні оновлення.",
|
||||
"ISPDatabase": "База провайдерів",
|
||||
"IWantToDownloadFreeGeoIP": "Я хочу завантажити безкоштовну GeoIP базу...",
|
||||
"Latitude": "Широта",
|
||||
"Location": "Локація",
|
||||
"LocationDatabase": "Розташування бази даних",
|
||||
"LocationDatabaseHint": "Розташування бази даних країни, регіону або міста.",
|
||||
"LocationProvider": "Спосіб визначення локації користувача",
|
||||
"Longitude": "Довгота",
|
||||
"NoDataForGeoIPReport1": "Не існує даних для звіту, тому що немає даних про місцезнаходження або IP адреса відвідувача не може бути визначена географічно.",
|
||||
"NoDataForGeoIPReport2": "Для забезпечення точної геолокаціі, змініть параметри %1$sтут%2$s і використовуйте %3$sбазу даних міст%4$s.",
|
||||
"Organization": "Організація",
|
||||
"OrgDatabase": "База організацій",
|
||||
"PeclGeoIPNoDBDir": "PECL модуль звертається до баз в %1$s, але це існує не директорія. Будь ласка, створіть її і додайте в неї базу даних GeoIP. Або ви можете встановити %2$s в правильну директорію у вашому php.ini файлі.",
|
||||
"PeclGeoLiteError": "Ваша БД GeoIP в %1$s названа %2$s. На жаль, PECL модуь не зможе розпізнати таке ім'я. Будь ласка, перейменуйте це в %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo в даний час не працює з базами GeoIP.",
|
||||
"PluginDescription": "Повідомляє місцезнаходження відвідувачів: країна, регіон, місто і географічні координати (широта\/довгота).",
|
||||
"Region": "Регіон",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Налаштувати автоматичне оновлення GeoIP баз",
|
||||
"SubmenuLocations": "Локації",
|
||||
"TestIPLocatorFailed": "Matomo спробував визначити місцезнаходження відомої IP-адреси (%1$s), але ваш сервер повернув значення: %2$s. Якщо спосіб визначення локації був налаштований правильно, він повернув би значення: %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Завантажений файл не є коректною GeoIP базою. Будь ласка, перевірте посилання чи завантажте файл вручну.",
|
||||
"ToGeolocateOldVisits": "Для того щоб отримати інформацію про місцезнаходження для попередніх відвідувачів, скористайтеся скриптом, про який написано %1$sтут%2$s.",
|
||||
"UnsupportedArchiveType": "Зустрівся непідтримуваний тип архіву %1$s.",
|
||||
"UpdaterHasNotBeenRun": "Оновлення ніколи не проводилися.",
|
||||
"UpdaterIsNotScheduledToRun": "Це не заплановано до запуску в майбутньому.",
|
||||
"UpdaterScheduledForNextRun": "Це запланований запуск команди core:archive при наступному виконанні cron-завдання.",
|
||||
"UpdaterWasLastRun": "Оновлення останнього запуску в %s.",
|
||||
"UpdaterWillRunNext": "Заплановано наступний запуск на %s.",
|
||||
"WidgetLocation": "Місцезнаходження відвідувача"
|
||||
}
|
||||
}
|
92
msd2/tracking/piwik/plugins/UserCountry/lang/vi.json
Normal file
92
msd2/tracking/piwik/plugins/UserCountry/lang/vi.json
Normal file
@ -0,0 +1,92 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "Không thể tìm thấy hàm apache_get_modules, giả sử không có máy chủ web Apache.",
|
||||
"CannotFindGeoIPDatabaseInArchive": "Không thể tìm thấy %1$s tập tin trong lưu trữ dấu sắc %2$s!",
|
||||
"CannotFindGeoIPServerVar": "Biến %s không được thiết lập. Máy chủ của bạn có thể không được cấu hình đúng.",
|
||||
"CannotFindPeclGeoIPDb": "Không thể tìm thấy một quốc gia, khu vựchoặc thành phố cơ sở dữ liệu cho các mô-đun PECL geoip. Hãy chắc chắn rằng cơ sở dữ liệu geoip của bạn nằm trong %1$s và được đặt tên %2$s hoặc %3$s nếu không thì mô-đun PECL sẽ không nhận thấy nó.",
|
||||
"CannotListContent": "Không thể liệt kê nội dung cho %1$s: %2$s",
|
||||
"CannotLocalizeLocalIP": "Địa chỉ IP %s là một địa chỉ địa phương và không có thể được geolocated.",
|
||||
"CannotSetupGeoIPAutoUpdating": "Dường như bạn đang lưu trữ cơ sở dữ liệu Geoip của bạn bên ngoài Matomo (chúng ta có thể nói vì không có cơ sở dữ liệu trong các thư mục con misc, nhưng Geoip của bạn đang làm việc). Matomo không thể tự động cập nhật cơ sở dữ liệu Geoip của bạn nếu chúng được đặt bên ngoài của thư mục misc.",
|
||||
"CannotUnzipDatFile": "Không thể giải nén tập tin dat trong %1$s: %2$s",
|
||||
"City": "Thành phố",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "Châu lục",
|
||||
"Country": "Quốc gia",
|
||||
"country_a1": "Proxy ẩn danh",
|
||||
"country_a2": "Nhà cung cấp truyền hình vệ tinh",
|
||||
"country_cat": "Cộng đồng nói tiếng Catalan",
|
||||
"country_o1": "Quốc gia khác",
|
||||
"CurrentLocationIntro": "Theo nhà cung cấp này, vị trí hiện tại của bạn là",
|
||||
"DefaultLocationProviderDesc1": "Nhà cung cấp vị trí mặc định phỏng đoán quốc gia của người truy cập dựa trên ngôn ngữ mà họ sử dụng.",
|
||||
"DefaultLocationProviderDesc2": "cái này không chính xác, do đó %1$s chúng tôi khuyên bạn nên cài đặt và sử dụng %2$s GeoIP %3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "Bạn đang sử dụng các nhà cung cấp vị trí mặc định, có nghĩa là Matomo sẽ đoán vị trí của khách truy cập dựa trên ngôn ngữ mà họ sử dụng. %1$s đọc %2$s này để tìm hiểu cách thiết lập định vị chính xác hơn.",
|
||||
"DistinctCountries": "%s Các nước riêng biệt",
|
||||
"DownloadingDb": "Đang tải xuống %s",
|
||||
"DownloadNewDatabasesEvery": "Cập nhật tất cả các cơ sở dữ liệu",
|
||||
"FatalErrorDuringDownload": "Xảy ra lỗi nghiêm trọng trong khi tải về tập tin này. Có thể có một số lỗi với kết nối internet của bạn, với cơ sở dữ liệu geoip bạn tải về hoặc Matomo. Hãy thử tải về và cài đặt nó bằng tay.",
|
||||
"FoundApacheModules": "Matomo tìm thấy các mô-đun Apache sau",
|
||||
"FromDifferentCities": "Các thành phố khác nhau",
|
||||
"GeoIPCannotFindMbstringExtension": "Không thể tìm thấy hàm %1$s. Hãy chắc chắn rằng phần mở rộng %2$s đã được cài đặt và nạp.",
|
||||
"GeoIPDatabases": "Cơ sở dữ liệu GeoIP",
|
||||
"GeoIPDocumentationSuffix": "Theo thứ tự xem dữ liệu báo cáo này, bạn phải thiết lập GeoIP trong tab quản trị định vị. Cơ sở dữ liệu GeoIP %1$sMaxmind%2$s thương mại chính xác hơn những bản miễn phí. Để xem cách chính xác họ đang có, click %3$s tại đây %4$s.",
|
||||
"GeoIPImplHasAccessTo": "GeoIP thực thi này có quyền truy cập vào các kiểu cơ sở dữ liệu sau",
|
||||
"GeoIPIncorrectDatabaseFormat": "Cơ sở dữ liệu Geoip của bạn dường như không có định dạng chính xác. Nó thể bị lỗi. Hãy chắc chắn rằng bạn đang sử dụng phiên bản nhị phân và thử thay thế nó bằng một bản sao khác.",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "Nhà cung cấp vị trí này sử dụng một cơ sở dữ liệu Geoip và một module PECL xác định chính xác và hiệu quả vị trí của khách truy cập của bạn.",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "Không có giới hạn với nhà cung cấp này, vì vậy nó là một cái chúng tôi khuyên bạn nên sử dụng.",
|
||||
"GeoIpLocationProviderDesc_Php1": "Nhà cung cấp địa điểm này là đơn giản nhất để cài đặt mà nó không đòi hỏi cấu hình máy chủ (lý tưởng cho chia sẻ dịch vụ lưu trữ). Nó sử dụng một cơ sở dữ liệu geoip và API PHP của MaxMind để xác định chính xác vị trí của khách truy cập của bạn.",
|
||||
"GeoIpLocationProviderDesc_Php2": "Nếu trang web của bạn nhận được rất nhiều lưu lượng truy cập, bạn có thể thấy rằng nhà cung cấp vị trí này là quá chậm. Trong trường hợp này, bạn nên cài đặt PECL %1$s mở rộng %2$s hoặc một %3$s module máy chủ %4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "Nhà cung cấp vị trí này sử dụng module geoip đã được cài đặt trong máy chủ HTTP của bạn. Nhà cung cấp này là nhanh chóng và chính xác, nhưng %1$s chỉ có thể sử dụng theo dõi trình duyệt thông thường.%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "Nếu bạn phải nhập các tập tin bản ghi hoặc làm cái gì khác mà đòi hỏi phải thiết lập địa chỉ IP, sử dụng PECL %1$s thực thi GeoIP (khuyến nghị) %2$s hoặc PHP %3$s thực thi GeoIP %4$s.",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Lưu ý: IP anonymization không ảnh hưởng đến các vị trí được báo cáo bởi nhà cung cấp này. Trước khi sử dụng nó với IP anonymization, đảm bảo điều này không vi phạm bất kỳ luật riêng tư nào bạn có thể bị phạt.",
|
||||
"GeoIPNoServerVars": "Matomo không thể tìm thấy bất kỳ biến %s Geoip nào.",
|
||||
"GeoIPPeclCustomDirNotSet": "Lựa chọn ini PHP %s không được thiết lập.",
|
||||
"GeoIPServerVarsFound": "Matomo phát hiện các biến %s Geoip sau đây",
|
||||
"GeoIPUpdaterInstructions": "Nhập các liên kết tải về cho cơ sở dữ liệu của bạn dưới đây. Nếu bạn đã mua cơ sở dữ liệu từ %3$sMaxMind%4$s, bạn có thể tìm thấy các %1$s link này ở đây %2$s. Xin vui lòng liên hệ với %3$sMaxMind%4$s nếu bạn gặp khó khăn khi truy cập chúng.",
|
||||
"GeoIPUpdaterIntro": "Matomo đang quản lý cập nhật cho các cơ sở dữ liệu Geoip sau",
|
||||
"GeoLiteCityLink": "Nếu bạn đang sử dụng cơ sở dữ liệu Thành phố GeoLite, sử dụng liên kết này: %1$s%2$s%3$s.",
|
||||
"Geolocation": "Định vị",
|
||||
"GeolocationPageDesc": "Trên trang này bạn có thể thay đổi cách Matomo xác định địa điểm khách truy cập.",
|
||||
"getCityDocumentation": "Báo cáo này cho thấy các thành phố khách truy cập của bạn đã ở khi họ truy cập website của bạn.",
|
||||
"getContinentDocumentation": "Báo cáo này cho thấy lục địa khách truy cập của bạn đã ở khi họ truy cập website của bạn.",
|
||||
"getCountryDocumentation": "Báo cáo này cho thấy quốc gia khách truy cập của bạn đã ở khi họ truy cập website của bạn.",
|
||||
"getRegionDocumentation": "Báo cáo này cho thấy vùng miền khách truy cập của bạn đã ở khi họ truy cập website của bạn.",
|
||||
"HowToInstallApacheModule": "Làm thế nào để cài đặt các module Geoip cho Apache?",
|
||||
"HowToInstallGeoIPDatabases": "Làm thế nào để thiết lập cơ sở dữ liệu GeoIP?",
|
||||
"HowToInstallGeoIpPecl": "Làm thế nào để cài đặt PECL GeoIP mở rộng?",
|
||||
"HowToInstallNginxModule": "Làm thế nào để cài đặt module GeoIP cho Nginx?",
|
||||
"HowToSetupGeoIP": "Làm thế nào để thiết lập định vị chính xác với Geoip",
|
||||
"HowToSetupGeoIP_Step1": "%1$s Tải về %2$s Cơ sở dữ liệu thành phố GeoLite từ %3$s MaxMind %4$s.",
|
||||
"HowToSetupGeoIP_Step2": "Giải nén tập tin này và sao chép kết quả,%1$s vào %2$s misc %3$s thư mục Matomo (bạn có thể làm điều này bằng FTP hoặc SSH).",
|
||||
"HowToSetupGeoIP_Step3": "Nạp lại màn hình. GeoIP %1$s (PHP) nhà cung cấp %2$s sẽ được cài đặt %3$s %4$s. Chọn nó.",
|
||||
"HowToSetupGeoIP_Step4": "Và bạn đã hoàn tất! Bạn chỉ cần cài đặt Matomo để sử dụng Geoip có nghĩa là bạn sẽ có thể nhìn thấy các vùng và thành phố của khách truy cập cùng với thông tin quốc gia rất chính xác.",
|
||||
"HowToSetupGeoIPIntro": "Bạn không hiển thị để có cài đặt định vị chính xác. Đây là một tính năng hữu ích và không có nó, bạn sẽ không nhìn thấy thông tin vị trí chính xác và đầy đủ cho khách truy cập. Đây là cách bạn có thể nhanh chóng bắt đầu sử dụng nó:",
|
||||
"HttpServerModule": "Module máy chủ HTTP",
|
||||
"InvalidGeoIPUpdatePeriod": "Thời gian cho GeoIP cập nhật không hợp lệ: %1$s. Giá trị hợp lệ là %2$s.",
|
||||
"IPurchasedGeoIPDBs": "Tôi đã mua hơn %1$s cơ sở dữ liệu chính xác từ MaxMind %2$s và muốn thiết lập các cập nhật tự động.",
|
||||
"ISPDatabase": "Cơ sở dữ liệu ISP",
|
||||
"IWantToDownloadFreeGeoIP": "Tôi muốn tải về cơ sở dữ liệu Geoip miễn phí ...",
|
||||
"Latitude": "Miền",
|
||||
"Location": "Vị trí",
|
||||
"LocationDatabase": "Cơ sở dữ liệu vị trí",
|
||||
"LocationDatabaseHint": "Một cơ sở dữ liệu vị trí là một quốc gia, khu vực hoặc cơ sở dữ liệu thành phố.",
|
||||
"LocationProvider": "Nhà cung cấp vị trí",
|
||||
"Longitude": "Kinh độ",
|
||||
"NoDataForGeoIPReport1": "Không có dữ liệu cho báo cáo này bởi vì ở đó không có dữ liệu vị trí có sẵn hoặc địa chỉ IP khách truy cập không thể định vị.",
|
||||
"NoDataForGeoIPReport2": "Để cho phép định vị chính xác, thay đổi thiết lập %1$s tại đây %2$s và sử dụng một cơ sở dữ liệu %4$s mức thành phố %3$s.",
|
||||
"Organization": "Cơ quan",
|
||||
"OrgDatabase": "Cơ sở dữ liệu cơ quan",
|
||||
"PeclGeoIPNoDBDir": "Module PECL đang tìm kiếm cơ sở dữ liệu trong %1$s, nhưng thư mục này không tồn tại. Hãy tạo ra nó và thêm cơ sở dữ liệu Geoip vào đó. Ngoài ra, bạn có thể thiết lập %2$s vào đúng thư mục trong tập tin php.ini của bạn.",
|
||||
"PeclGeoLiteError": "Cơ sở dữ liệu geoip của bạn trong %1$s được đặt tên %2$s. Thật không may, module PECL sẽ không nhận ra nó với tên này. Xin đổi tên nó thành %3$s.",
|
||||
"PiwikNotManagingGeoIPDBs": "Hiện tại Matomo không quản lý bất kỳ cơ sở dữ liệu Geoip nào.",
|
||||
"Region": "Vùng",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "Thiết lập tự động cập nhật cơ sở dữ liệu GeoIP",
|
||||
"SubmenuLocations": "Các vị trí",
|
||||
"TestIPLocatorFailed": "Matomo đã thử kiểm tra vị trí của một địa chỉ IP đã biết(%1$s), nhưng máy chủ của bạn trả về %2$s. Nếu nhà cung cấp này đã được cấu hình chính xác, nó sẽ trả về %3$s.",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "Các tập tin tải về không phải là một cơ sở dữ liệu Geoip hợp lệ. Xin vui lòng kiểm tra lại URL hoặc bạn tự tải về các tập tin.",
|
||||
"ToGeolocateOldVisits": "Để có được dữ liệu vị trí cho các truy cập cũ của bạn, sử dụng đoạn mã được mô tả %1$s tại đây %2$s",
|
||||
"UnsupportedArchiveType": "Bắt gặp kiêu lưu trữ %1$s không được hỗ trợ",
|
||||
"UpdaterHasNotBeenRun": "Các cập nhật chưa bao giờ được chạy.",
|
||||
"UpdaterWasLastRun": "Các cập nhật chạy sau cùng trên %s.",
|
||||
"WidgetLocation": "Vị trí khách truy cập"
|
||||
}
|
||||
}
|
100
msd2/tracking/piwik/plugins/UserCountry/lang/zh-cn.json
Normal file
100
msd2/tracking/piwik/plugins/UserCountry/lang/zh-cn.json
Normal file
@ -0,0 +1,100 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "没有找到apache_get_modules函数,可能没有apache网络服务器。",
|
||||
"CannotFindGeoIPDatabaseInArchive": "在%2$star存档文件中没有发现%1$s文件",
|
||||
"CannotFindGeoIPServerVar": "变量 %s 没有设置,您的服务器配置不正确。",
|
||||
"CannotFindPeclGeoIPDb": "没有找到 GeoIP PECL 模块的国家、地区或城市数据库。请确认您的 GeoIP 数据库位于 %1$s 且命名为 %2$s 或 %3$s,否则 PECL 模块无法找到。",
|
||||
"CannotListContent": "无法列出 %1$s: %2$s 的内容",
|
||||
"CannotLocalizeLocalIP": "IP 地址 %s 是内部地址,无法定位地理位置。",
|
||||
"CannotSetupGeoIPAutoUpdating": "您在 Matomo 之外保存 GeoIP 数据库 (因为在 misc 子目录中没有数据库,但是 GeoIP 正常运行)。如果您的 GeoIP 数据库不在misc 目录,Matomo 将无法自动更新它。",
|
||||
"CannotUnzipDatFile": "无法解压缩文件%1$s中的%2$s",
|
||||
"City": "城市",
|
||||
"CityAndCountry": "%1$s, %2$s",
|
||||
"Continent": "大洲",
|
||||
"Continents": "大洲",
|
||||
"Country": "国家",
|
||||
"country_a1": "匿名代理",
|
||||
"country_a2": "卫星供应商",
|
||||
"country_cat": "加泰罗尼亚语社区",
|
||||
"country_o1": "其它国家",
|
||||
"CurrentLocationIntro": "根据提供商信息,您现在的位置是",
|
||||
"DefaultLocationProviderDesc1": "默认的地理位置查询以访客的浏览器猜测国家。",
|
||||
"DefaultLocationProviderDesc2": "这不是很准确,所以 %1$s我们建议安装使用 %2$sGeoIP%3$s.%4$s",
|
||||
"DefaultLocationProviderExplanation": "您正在使用默认的地理位置服务商,Matomo 会根据访客使用的语言来判断地理位置。%1$s请查看%2$s 了解如何设置更精确的地理位置。",
|
||||
"DistinctCountries": "%s 个不同的国家\/地区",
|
||||
"DownloadingDb": "下载%s",
|
||||
"DownloadNewDatabasesEvery": "更新数据每",
|
||||
"FatalErrorDuringDownload": "下载文件出错。有可能是网络连接、下载的 GeoIP 数据库或者 Matomo 出错,请手动下载并安装。",
|
||||
"FoundApacheModules": "Piwk找到了如下Apache模块",
|
||||
"FromDifferentCities": "不同城市",
|
||||
"GeoIPCannotFindMbstringExtension": "没有找到 %1$s 功能。请确认 %2$s 扩展已安装和加载。",
|
||||
"GeoIPDatabases": "GeoIP 数据库",
|
||||
"GeoIPDocumentationSuffix": "要看到本报表的数据,您需要在管理页面的地理位置菜单下设置 GeoIP. 商业版 %1$sMaxmind%2$s GeoIP 数据库比免费的更精确。要查看详细内容,请点%3$s这里%4$s.",
|
||||
"GeoIPImplHasAccessTo": "这个 GeoIP 方案可以读取以下类型的数据库",
|
||||
"GeoIPIncorrectDatabaseFormat": "你的GeoIP数据库似乎不是正确的格式。它可能已损坏。确保您所使用的是二进制版本。",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "这个地理位置服务商使用 GeoIP 数据库和 PECL 模块来精确、有效地定位访客的地址。",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "这个服务商没有限制,我们推荐使用。",
|
||||
"GeoIpLocationProviderDesc_Php1": "本地理位置服务商最容易安装,不需要在服务器上设置 (适合虚拟主机!)。它使用 GeoIP 数据库和 MaxMind 的 PHP API 来准确定位访客的地理位置。",
|
||||
"GeoIpLocationProviderDesc_Php2": "如果您的网站流量很大,这个服务速度会很慢。如果这样,您最好安装 %1$sPECL 扩展%2$s 或者 %3$s服务器模块%4$s。",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "本地理位置服务商使用已经安装在 HTTP 服务器上的 GeoIP 模块。本服务商速度快也更精确,但是 %1$s只能使用一般的浏览器跟踪。%2$s",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "如果您需要导入日志文件,或者需要设置 IP 地址的操作,使用 %1$sPECL GeoIP 方案 (推荐)%2$s 或者 %3$sPHP GeoIP 方案%4$s。",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "提示:IP 屏蔽对这个服务商的报表无效。在使用它和 IP 屏蔽前,请确认这不违反您当地的隐私保护法规。",
|
||||
"GeoIpLocationProviderNotRecomnended": "地理位置的工作,但你不使用推荐的供应商之一。",
|
||||
"GeoIPNoServerVars": "Matomo 没有找到 GeoIP %s 变量。",
|
||||
"GeoIPPeclCustomDirNotSet": "%s PHP ini 选项没有设置。",
|
||||
"GeoIPServerVarsFound": "Matomo 检测到以下 GeoIP %s 变量",
|
||||
"GeoIPUpdaterInstructions": "在下面输入数据库的下载链接。如果您从 %3$sMaxMind%4$s 购买了数据库,可以查看这些链接 %1$shere%2$s。如果无法访问,请联系 %3$sMaxMind%4$s。",
|
||||
"GeoIPUpdaterIntro": "Matomo 正管理以下 GeoIP 数据库的更新",
|
||||
"GeoLiteCityLink": "如果您使用GeoLite City数据库,请点击以下链接%1$s%2$s%3$s。",
|
||||
"Geolocation": "地理位置",
|
||||
"GeolocationPageDesc": "本页面可设定 Matomo 如何检测访客的地理位置。",
|
||||
"getCityDocumentation": "本报表显示访客所在的城市。",
|
||||
"getContinentDocumentation": "本报表显示访客所在的洲。",
|
||||
"getCountryDocumentation": "本报表显示访客所在的国家。",
|
||||
"getRegionDocumentation": "本报表显示访客所在的地区。",
|
||||
"HowToInstallApacheModule": "我如何在Apache中安装GoeIP模块?",
|
||||
"HowToInstallGeoIPDatabases": "我如何可以获取GeoIP数据库?",
|
||||
"HowToInstallGeoIpPecl": "我如何安装GeoIP PECL扩展?",
|
||||
"HowToInstallNginxModule": "我如何在Nginx下安装GeoIP模块?",
|
||||
"HowToSetupGeoIP": "如何用GeoIP设置准确的位置信息",
|
||||
"HowToSetupGeoIP_Step1": "%1$s下载%2$s GeoLite 城市数据库自 %3$sMaxMind%4$s。",
|
||||
"HowToSetupGeoIP_Step2": "提取文件并复制结果, %1$s 到 %2$smisc%3$s Matomo 子目录 (可以通过 FTP 或 SSH)。",
|
||||
"HowToSetupGeoIP_Step3": "刷新屏幕,%1$sGeoIP (PHP)%2$s 服务商现在将被 %3$s安装%4$s。请选择。",
|
||||
"HowToSetupGeoIP_Step4": "成功了! 您已经成功安装 Matomo 使用 GeoIP,现在能看到访客的地区和城市,以及非常精确的国家信息。",
|
||||
"HowToSetupGeoIPIntro": "您的地理位置设置不正确,这个功能很有用,否则您无法查看访客的精确和完整的位置信息。如何快速开始使用:",
|
||||
"HttpServerModule": "HTTP 服务器模块",
|
||||
"InvalidGeoIPUpdatePeriod": "GeoIP 更新时间段不正确: %1$s. 正确的值为 %2$s。",
|
||||
"IPurchasedGeoIPDBs": "我购买了更多的 %1$s精确数据库自 MaxMind%2$s,需要设置自动更新。",
|
||||
"ISPDatabase": "ISP 数据库",
|
||||
"IWantToDownloadFreeGeoIP": "我想下载免费的GeoIP数据库...",
|
||||
"Latitude": "纬度",
|
||||
"Latitudes": "纬度",
|
||||
"Location": "位置",
|
||||
"LocationDatabase": "位置信息数据库",
|
||||
"LocationDatabaseHint": "地理位置数据库可以是国家、地区或者城市数据库。",
|
||||
"LocationProvider": "位置信息提供商",
|
||||
"Longitude": "经度",
|
||||
"Longitudes": "经度",
|
||||
"NoDataForGeoIPReport1": "本报表没有数据,因为没有地理位置的数据或者无法定位访客的IP地址。",
|
||||
"NoDataForGeoIPReport2": "要启用精确的地理位置统计,在%1$s这里%2$s修改设置并使用 %3$s城市级数据库%4$s。",
|
||||
"Organization": "组织",
|
||||
"OrgDatabase": "组织数据库",
|
||||
"PeclGeoIPNoDBDir": "PECL 模块在 %1$s 中查找数据库,但这个目录不存在,请改正并把 GeoIP 数据库加入。另外,您也可以在 php.ini 文件中设置 %2$s 为正确的目录。",
|
||||
"PeclGeoLiteError": "您在 %1$s 中的GeoIP 数据库名称为 %2$s。但是 PECL 模块无法识别这个名称,请改名为 %3$s。",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo 目前没有任何 GeoIP 数据库。",
|
||||
"PluginDescription": "报告访问者的位置:国家,地区,城市和地理坐标(纬度\/经度)。",
|
||||
"Region": "地区",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "设置自动更新 GeoIP 数据库",
|
||||
"SubmenuLocations": "所在地",
|
||||
"TestIPLocatorFailed": "Matomo 尝试检查已知 IP 地址的位置 (%1$s),但您的服务器返回 %2$s。如果这个服务商配置正确,将返回 %3$s。",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "下载文件不是有效的 GeoIP 数据库,请重新检查网址,或者手动下载文件。",
|
||||
"ToGeolocateOldVisits": "要获得以前访问的地理数据,请使用 %1$s这里%2$s的脚步。",
|
||||
"UnsupportedArchiveType": "不支持的归档类型 %1$s。",
|
||||
"UpdaterHasNotBeenRun": "更新程序从未运行。",
|
||||
"UpdaterIsNotScheduledToRun": "它不计划在将来运行。",
|
||||
"UpdaterScheduledForNextRun": "计划在未来的cron core运行:归档命令执行。",
|
||||
"UpdaterWasLastRun": "更新程序最后运行时间 %s。",
|
||||
"UpdaterWillRunNext": "这是下一个计划在 %s 运行。",
|
||||
"WidgetLocation": "访客位置"
|
||||
}
|
||||
}
|
102
msd2/tracking/piwik/plugins/UserCountry/lang/zh-tw.json
Normal file
102
msd2/tracking/piwik/plugins/UserCountry/lang/zh-tw.json
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
"UserCountry": {
|
||||
"AssumingNonApache": "找不到 apache_get_modules 功能,推測是非 Apache 伺服器。",
|
||||
"CannotFindGeoIPDatabaseInArchive": "在 tar 壓縮檔 %2$s 中找不到 %1$s 檔案!",
|
||||
"CannotFindGeoIPServerVar": "變數 %s 未設定。你的伺服器可能沒有正確的變更設定。",
|
||||
"CannotFindPeclGeoIPDb": "在 GeoIP PECL 模組中找不到國家、地區或城市的資料庫。請確定你的 GeoIP 資料庫位於 %1$s 而且命名為 %2$s 或 %3$s,否則 PECL 模組不會偵測到。",
|
||||
"CannotListContent": "無法列出 %1$s 的內容列表:%2$s",
|
||||
"CannotLocalizeLocalIP": "IP 位址 %s 是本機位址因此無法顯示地理位置。",
|
||||
"CannotSetupGeoIPAutoUpdating": "看起來你將你的 GeoIP 資料庫儲存在 Matomo 之外(我們只知道在 misc 資料夾中找不到資料庫,但你的 GeoIP 正在運作中)。如果 GeoIP 資料庫放在 misc 資料夾之外,Matomo 將無法自動幫你更新。",
|
||||
"CannotUnzipDatFile": "無法解壓縮 %1$s 的 dat 檔案:%2$s",
|
||||
"City": "城市",
|
||||
"CityAndCountry": "%1$s,%2$s",
|
||||
"Continent": "洲",
|
||||
"Continents": "洲",
|
||||
"Country": "國家",
|
||||
"country_a1": "匿名的代理",
|
||||
"country_a2": "衛星網路供應商",
|
||||
"country_cat": "加泰羅尼亞語社區",
|
||||
"country_o1": "其他國家",
|
||||
"VisitLocation": "訪問所在地",
|
||||
"CurrentLocationIntro": "根據這個地理位置供應商,你目前的位置是",
|
||||
"DefaultLocationProviderDesc1": "預設的地理位置供應商是透過訪客使用的語言來猜測他的國家。",
|
||||
"DefaultLocationProviderDesc2": "這不是那麼準確,所以%1$s我們推薦安裝並使用 %2$sGeoIP%3$s。%4$s",
|
||||
"DefaultLocationProviderExplanation": "你正在使用預設地理位置供應商,這代表 Matomo 將以訪客所使用的語言來猜測他們的地理位置。%1$s點此查看%2$s如何安裝更準確的地理位置。",
|
||||
"DistinctCountries": "%s 個不同的國家",
|
||||
"DownloadingDb": "正在下載 %s",
|
||||
"DownloadNewDatabasesEvery": "更新資料庫每隔一",
|
||||
"FatalErrorDuringDownload": "下載此檔案時發生嚴重錯誤。可能是你的網路在連線你下載的 GeoIP 資料庫或 Matomo 時出了問題。試著手動下載並安裝。",
|
||||
"FoundApacheModules": "Matomo 找到下列 Apache 模組",
|
||||
"FromDifferentCities": "不同城市",
|
||||
"GeoIPCannotFindMbstringExtension": "找不到 %1$s 功能。請確定擴充功能 %2$s 已經安裝並載入。",
|
||||
"GeoIPDatabases": "GeoIP 資料庫",
|
||||
"GeoIPDocumentationSuffix": "要查看此報表的數據,你必須先在管理後台中的地理位置設定 GeoIP 。商用的 %1$sMaxmind%2$s GeoIP 資料庫比免費的還來的精準。點擊%3$s這裡%4$s看看他們多準確。",
|
||||
"GeoIPNoDatabaseFound": "這個 GeoIP 執行時無法找到任何資料庫。",
|
||||
"GeoIPImplHasAccessTo": "這個 GeoIP 執行時會存取以下類型的資料庫",
|
||||
"GeoIPIncorrectDatabaseFormat": "你的 GeoIP 資料庫看起來不是正確的格式。它可能損壞了。請確定你正在使用二進制版本並試著使用其他副本覆蓋。",
|
||||
"GeoIpLocationProviderDesc_Pecl1": "這個地理位置供應商使用 GeoIP 資料庫和 PECL 模組來精準而且有效率的判別訪客位置。",
|
||||
"GeoIpLocationProviderDesc_Pecl2": "這個供應商沒有任何限制,所以我們推薦你使用這個。",
|
||||
"GeoIpLocationProviderDesc_Php1": "這個地理位置供應商是安裝方式最簡單的,因為它不需要更動任何伺服器設定(共享主機適用!)。它使用 GeoIP 資料庫和 MaxMind 的 PHP API 來精準的判別訪客的位置。",
|
||||
"GeoIpLocationProviderDesc_Php2": "如果你的網站有許多流量,你可能會覺得這個地理位置供應商太慢了。在這種情況下你應該安裝 %1$sPECL 擴充功能%2$s或是%3$s伺服器模組%4$s。",
|
||||
"GeoIpLocationProviderDesc_ServerBased1": "這個地理位置供應商使用安裝在你 HTTP 伺服器上的 GeoIP 模組。這個供應商快又精準,但是%1$s只適用於一般瀏覽器上的追蹤%2$s。",
|
||||
"GeoIpLocationProviderDesc_ServerBased2": "如果你需要匯入紀錄檔或是其他需要設定 IP 位址的事情,使用%1$sPECL GeoIP(推薦)%2$s或是%3$sPHP GeoIP%4$s執行。",
|
||||
"GeoIpLocationProviderDesc_ServerBasedAnonWarn": "注意:IP 匿名化在此供應商所提供的位置中沒有任何效果。在 IP 匿名化開啟時,請先確定這並不違反法律政策。",
|
||||
"GeoIpLocationProviderNotRecomnended": "地理位置已執行,但你不是使用推薦的供應商。",
|
||||
"GeoIPNoServerVars": "Matomo 找不到任何 GeoIP 的 %s 變數。",
|
||||
"GeoIPPeclCustomDirNotSet": "PHP ini 中的 %s 選項未設定。",
|
||||
"GeoIPServerVarsFound": "Matomo 偵測到下列 GeoIP 的 %s 變數",
|
||||
"GeoIPUpdaterInstructions": "在下方輸入你的資料庫下載連結。如果你已經從 %3$sMaxMind%4$s 購買了資料庫,你可以在%1$s這裡%2$s找到這些連結。在存取過程發生問題時請聯絡%3$sMaxMind%4$s。",
|
||||
"GeoIPUpdaterIntro": "Matomo 目前管理以下 GeoIP 資料庫的更新",
|
||||
"GeoLiteCityLink": "如果你是使用 GeoLite City 資料庫,使用此連結:%1$s%2$s%3$s",
|
||||
"Geolocation": "地理位置",
|
||||
"GeolocationPageDesc": "你可以在此頁面中改變 Matomo 決定訪客位置的方式。",
|
||||
"getCityDocumentation": "這份報表顯示你的訪客在瀏覽網站時所位於的城市。",
|
||||
"getContinentDocumentation": "這份報表顯示你的訪客在瀏覽網站時所位於的洲別。",
|
||||
"getCountryDocumentation": "這份報表顯示你的訪客在瀏覽網站時所位於的國家。",
|
||||
"getRegionDocumentation": "這份報表顯示你的訪客在瀏覽網站時所位於的地區。",
|
||||
"HowToInstallApacheModule": "我該如何在 Apache 上安裝 GeoIP 模組?",
|
||||
"HowToInstallGeoIPDatabases": "我該如何取得 GeoIP 資料庫?",
|
||||
"HowToInstallGeoIpPecl": "我該如何安裝 GeoIP PECL 擴充功能?",
|
||||
"HowToInstallNginxModule": "我該如何在 Nginx 上安裝 GeoIP 模組?",
|
||||
"HowToSetupGeoIP": "如何安裝 GeoIP 達到精準地理位置",
|
||||
"HowToSetupGeoIP_Step1": "從 %3$sMaxMind%4$s 中%1$s下載%2$s GeoLite City 資料庫。",
|
||||
"HowToSetupGeoIP_Step2": "解壓縮此檔案然後複製解壓後的檔案,%1$s 放進 Matomo 內的 %2$smisc%3$s 資料夾(可以透過 FTP 或 SSH 來執行)。",
|
||||
"HowToSetupGeoIP_Step3": "重新整理此頁。現在準備%3$s安裝%4$s%1$sGeoIP(PHP)%2$s 供應商。選擇它。",
|
||||
"HowToSetupGeoIP_Step4": "你完成了!你已經成功在 Matomo 上設定 GeoIP,這代表你已經可以準確的看見你訪客的地區和城市等國家資訊。",
|
||||
"HowToSetupGeoIPIntro": "看起來你沒有設定準確的地理位置。這是個實用的功能,沒有它你將無法看到準確且完整的訪客資訊。這裡是幾個你可以快速開始使用的方法:",
|
||||
"HttpServerModule": "HTTP 伺服器模組",
|
||||
"InvalidGeoIPUpdatePeriod": "無效的 GeoIP 更新期間:%1$s。有效值為 %2$s。",
|
||||
"IPurchasedGeoIPDBs": "我購買了%1$sMaxMind 的精準資料庫%2$s而且想要設定自動更新。",
|
||||
"ISPDatabase": "網路服務供應商(ISP)資料庫",
|
||||
"IWantToDownloadFreeGeoIP": "我要下載免費的 GeoIP 資料庫...",
|
||||
"Latitude": "緯度",
|
||||
"Latitudes": "緯度",
|
||||
"Location": "位置",
|
||||
"LocationDatabase": "地理位置資料庫",
|
||||
"LocationDatabaseHint": "地理位置資料庫可能是國家、地區或城市資料庫。",
|
||||
"LocationProvider": "地理位置供應商",
|
||||
"Longitude": "經度",
|
||||
"Longitudes": "經度",
|
||||
"NoDataForGeoIPReport1": "這份報表沒有任何數據因為沒有位置數據可用或是 IP 位址無法被定位。",
|
||||
"NoDataForGeoIPReport2": "%1$s在這裡%2$s變更設定並使用%3$s城市等級資料庫%4$s來啟用精準地理位置。",
|
||||
"Organization": "機構",
|
||||
"OrgDatabase": "機構資料庫",
|
||||
"PeclGeoIPNoDBDir": "PECL 模組正在尋找 %1$s 裡的資料庫,但這個資料夾不存在。請建立並將 GeoIP 資料庫放進去。或者可以在 php.ini 中將 %2$s 設定成正確的資料夾。",
|
||||
"PeclGeoLiteError": "你在 %1$s 中的 GeoIP 資料庫命名為 %2$s。很遺憾的 PECL 模組並不能辨認這個名稱。請將它重新命名為 %3$s。",
|
||||
"PiwikNotManagingGeoIPDBs": "Matomo 目前沒有管理任何 GeoIP 資料庫。",
|
||||
"PluginDescription": "報告你訪客的位置:國家、地區、城市和地理坐標(經度\/緯度)。",
|
||||
"Region": "地區",
|
||||
"SetupAutomaticUpdatesOfGeoIP": "設定 GeoIP 資料庫自動更新",
|
||||
"SubmenuLocations": "地理位置",
|
||||
"TestIPLocatorFailed": "Matomo 嘗試確認一個已知 IP 位址(%1$s)的位置,但你的伺服器回傳了 %2$s。如果這個供應商有設定正確,它應該會回傳 %3$s。",
|
||||
"ThisUrlIsNotAValidGeoIPDB": "所下載的檔案不是正確的 GeoIP 資料庫。請重新檢查下載連結(URL)或手動下載檔案。",
|
||||
"ToGeolocateOldVisits": "要取得舊的訪客紀錄中的地理位置資料,使用%1$s這裡%2$s所提供的程式碼。",
|
||||
"UnsupportedArchiveType": "遇到不支援的壓縮檔類型 %1$s。",
|
||||
"UpdaterHasNotBeenRun": "還沒有自動更新過。",
|
||||
"UpdaterIsNotScheduledToRun": "未來沒有排程執行。",
|
||||
"UpdaterScheduledForNextRun": "已排程在下次 core:archive 指令執行時執行。",
|
||||
"UpdaterWasLastRun": "上次自動更新執行於 %s。",
|
||||
"UpdaterWillRunNext": "下次自動更新將於 %s 執行。",
|
||||
"WidgetLocation": "訪客所在地點"
|
||||
}
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
#widgetUserCountrygetRegion, #widgetUserCountrygetCountry, #widgetUserCountrygetCity {
|
||||
.dataTable .label > img {
|
||||
border: 1px solid lightgray;
|
||||
box-sizing: content-box;
|
||||
margin-top: -1px;
|
||||
}
|
||||
}
|
||||
|
||||
input.location-provider {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
span.is-installed {
|
||||
color: @color-green-piwik;
|
||||
}
|
||||
|
||||
span.is-broken {
|
||||
color: @color-red-piwik;
|
||||
}
|
||||
|
||||
.loc-provider-status {
|
||||
margin-left: .5em;
|
||||
}
|
||||
|
||||
#geoipdb-update-info tr input[type="text"], #geoipdb-screen2-update tr input[type="text"] {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
#geoipdb-screen1>div>p {
|
||||
line-height: 25px;
|
||||
font-size: 18px;
|
||||
max-width: 400px;
|
||||
}
|
||||
|
||||
.error {
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
padding: 4px 8px 4px 8px;
|
||||
}
|
||||
|
||||
#done-updating-updater {
|
||||
margin-top: 16px;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
<div class="visitor-profile-summary visitor-profile-location">
|
||||
<h1>{{ 'UserCountry_Location'|translate }}</h1>
|
||||
<p>
|
||||
{%- for entry in visitorData.countries -%}
|
||||
|
||||
{% set entryCity -%}
|
||||
{% if entry.cities is defined and 1 == entry.cities|length and entry.cities|join -%}
|
||||
{{ entry.cities|join }}
|
||||
{%- elseif entry.cities is defined and 1 < entry.cities|length -%}
|
||||
<span title="{{ entry.cities|join(', ') }}">{{ 'UserCountry_FromDifferentCities'|translate }}</span>
|
||||
{%- endif %}
|
||||
{%- endset %}
|
||||
|
||||
{% set entryVisits -%}
|
||||
<strong>
|
||||
{% if entry.nb_visits == 1 -%}
|
||||
{{ 'General_OneVisit'|translate }}
|
||||
{%- else -%}
|
||||
{{ 'General_NVisits'|translate(entry.nb_visits) }}
|
||||
{%- endif -%}
|
||||
</strong>
|
||||
{%- endset %}
|
||||
|
||||
{% set entryCountry -%}
|
||||
{%- if entryCity -%}
|
||||
{{ 'UserCountry_CityAndCountry'|translate(entryCity, entry.prettyName)|raw }}
|
||||
{%- else -%}
|
||||
{{ entry.prettyName }}
|
||||
{%- endif -%}
|
||||
|
||||
<img height="16px" src="{{ entry.flag }}" title="{{ entry.prettyName }}"/>
|
||||
{%- endset %}
|
||||
|
||||
{{- 'General_XFromY'|translate(entryVisits, entryCountry)|raw -}}{% if not loop.last %}, {% endif %}
|
||||
{%- endfor %}
|
||||
<a class="visitor-profile-show-map" href="#" {% if userCountryMapUrl|default('') is empty %}style="display:none"{% endif %}>({{ 'Live_ShowMap'|translate|replace({' ': ' '})|raw }})</a> <img class="loadingPiwik" style="display:none;" src="plugins/Morpheus/images/loading-blue.gif"/>
|
||||
</p>
|
||||
<div class="visitor-profile-map" style="display:none" data-href="{{ userCountryMapUrl|default('') }}">
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,70 @@
|
||||
<div ng-show="locationUpdater.geoipDatabaseInstalled" id="geoipdb-update-info">
|
||||
<p>
|
||||
{{ 'UserCountry_GeoIPUpdaterInstructions'|translate('<a href="http://www.maxmind.com/en/download_files?rId=piwik" _target="blank">','</a>',
|
||||
'<a href="http://www.maxmind.com/?rId=piwik">','</a>')|raw }}
|
||||
<br/><br/>
|
||||
{{ 'UserCountry_GeoLiteCityLink'|translate("<a href='"~geoLiteUrl~"'>",geoLiteUrl,'</a>')|raw }}
|
||||
|
||||
<span ng-show="locationUpdater.geoipDatabaseInstalled">
|
||||
<br/><br/>{{ 'UserCountry_GeoIPUpdaterIntro'|translate }}:
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<div piwik-field uicontrol="text" name="geoip-location-db"
|
||||
ng-model="locationUpdater.locationDbUrl"
|
||||
introduction="{{ 'UserCountry_LocationDatabase'|translate|e('html_attr') }}"
|
||||
title="{{ 'Actions_ColumnDownloadURL'|translate|e('html_attr') }}"
|
||||
value="{{ geoIPLocUrl }}"
|
||||
inline-help="{{ 'UserCountry_LocationDatabaseHint'|translate|e('html_attr') }}">
|
||||
</div>
|
||||
|
||||
<div piwik-field uicontrol="text" name="geoip-isp-db"
|
||||
ng-model="locationUpdater.ispDbUrl"
|
||||
introduction="{{ 'UserCountry_ISPDatabase'|translate|e('html_attr') }}"
|
||||
title="{{ 'Actions_ColumnDownloadURL'|translate|e('html_attr') }}"
|
||||
value="{{ geoIPIspUrl }}">
|
||||
</div>
|
||||
|
||||
{% if geoIPOrgUrl is defined %}
|
||||
<div piwik-field uicontrol="text" name="geoip-org-db"
|
||||
ng-model="locationUpdater.orgDbUrl"
|
||||
introduction="{{ 'UserCountry_OrgDatabase'|translate|e('html_attr') }}"
|
||||
title="{{ 'Actions_ColumnDownloadURL'|translate|e('html_attr') }}"
|
||||
value="{{ geoIPOrgUrl }}">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div id="locationProviderUpdatePeriodInlineHelp" class="inline-help-node">
|
||||
{% if lastTimeUpdaterRun is defined and lastTimeUpdaterRun is not empty %}
|
||||
{{ 'UserCountry_UpdaterWasLastRun'|translate(lastTimeUpdaterRun)|raw }}
|
||||
{% else %}
|
||||
{{ 'UserCountry_UpdaterHasNotBeenRun'|translate }}
|
||||
{% endif %}
|
||||
<br/><br/>
|
||||
<div id="geoip-updater-next-run-time">
|
||||
{% include "@UserCountry/_updaterNextRunTime.twig" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div piwik-field uicontrol="radio" name="geoip-update-period"
|
||||
ng-model="locationUpdater.updatePeriod"
|
||||
introduction="{{ 'UserCountry_DownloadNewDatabasesEvery'|translate|e('html_attr') }}"
|
||||
value="{{ geoIPUpdatePeriod }}"
|
||||
options="{{ updatePeriodOptions|json_encode }}"
|
||||
inline-help="#locationProviderUpdatePeriodInlineHelp">
|
||||
</div>
|
||||
|
||||
<input type="button"
|
||||
class="btn"
|
||||
ng-click="locationUpdater.saveGeoIpLinks()"
|
||||
ng-value="locationUpdater.buttonUpdateSaveText"/>
|
||||
|
||||
<div>
|
||||
<div id="done-updating-updater"></div>
|
||||
<div id="geoipdb-update-info-error"></div>
|
||||
<div piwik-progressbar
|
||||
progress="locationUpdater.progressUpdateDownload"
|
||||
label="locationUpdater.progressUpdateLabel"
|
||||
ng-show="locationUpdater.isUpdatingGeoIpDatabase"></div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,9 @@
|
||||
{% if nextRunTime|default is not empty %}
|
||||
{% if date(nextRunTime.getTimestamp()) <= date() %}
|
||||
{{ 'UserCountry_UpdaterScheduledForNextRun'|translate }}
|
||||
{% else %}
|
||||
{{ 'UserCountry_UpdaterWillRunNext'|translate('<strong>' ~ nextRunTime.toString() ~ '</strong>')|raw }}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{{ 'UserCountry_UpdaterIsNotScheduledToRun'|translate }}
|
||||
{% endif %}
|
@ -0,0 +1,182 @@
|
||||
{% extends 'admin.twig' %}
|
||||
|
||||
{% set title %}{{ 'UserCountry_Geolocation'|translate }}{% endset %}
|
||||
|
||||
{% block content %}
|
||||
{% import 'macros.twig' as piwik %}
|
||||
|
||||
<div piwik-content-intro>
|
||||
<h2 piwik-enriched-headline
|
||||
help-url="https://matomo.org/docs/geo-locate/"
|
||||
id="location-providers">{{ title }}</h2>
|
||||
<p>{{ 'UserCountry_GeolocationPageDesc'|translate }}</p>
|
||||
</div>
|
||||
<div piwik-content-block content-title="{{ 'UserCountry_LocationProvider'|translate|e('html_attr') }}">
|
||||
<div piwik-location-provider-selection="{{ currentProviderId|e('html_attr') }}">
|
||||
|
||||
{% if not isThereWorkingProvider %}
|
||||
<h3 style="margin-top:0;">{{ 'UserCountry_HowToSetupGeoIP'|translate }}</h3>
|
||||
<p>{{ 'UserCountry_HowToSetupGeoIPIntro'|translate }}</p>
|
||||
<ul style="list-style:disc !important;margin-left:2em;">
|
||||
<li style="list-style-type: disc !important;">{{ 'UserCountry_HowToSetupGeoIP_Step1'|translate('<a rel="noreferrer noopener" href="'~geoLiteUrl~'">','</a>','<a rel="noreferrer noopener" target="_blank" href="http://www.maxmind.com/?rId=piwik">','</a>')|raw }}</li>
|
||||
<li style="list-style-type: disc !important;">{{ 'UserCountry_HowToSetupGeoIP_Step2'|translate("'"~geoLiteFilename~"'",'<strong>','</strong>')|raw }}</li>
|
||||
<li style="list-style-type: disc !important;">{{ 'UserCountry_HowToSetupGeoIP_Step3'|translate('<strong>','</strong>','<span style="color:green"><strong>','</strong></span>')|raw }}</li>
|
||||
<li style="list-style-type: disc !important;">{{ 'UserCountry_HowToSetupGeoIP_Step4'|translate }}</li>
|
||||
</ul>
|
||||
<p> </p>
|
||||
{% endif %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12 push-m9 m3">{{ 'General_InfoFor'|translate(thisIP) }}</div>
|
||||
</div>
|
||||
|
||||
{% for id,provider in locationProviders if provider.isVisible %}
|
||||
<div class="row form-group provider{{ id|e('html_attr') }}">
|
||||
<div class="col s12 m4 l2">
|
||||
<p>
|
||||
<input class="location-provider"
|
||||
name="location-provider"
|
||||
value="{{ id }}"
|
||||
type="radio"
|
||||
ng-model="locationSelector.selectedProvider"
|
||||
id="provider_input_{{ id }}" {% if provider.status != 1 %}disabled="disabled"{% endif %}/>
|
||||
<label for="provider_input_{{ id }}">{{ provider.title|translate }}</label>
|
||||
</p>
|
||||
<p class="loc-provider-status">
|
||||
{% if provider.status == 0 %}
|
||||
<span class="is-not-installed">{{ 'General_NotInstalled'|translate}}</span>
|
||||
{% elseif provider.status == 1 %}
|
||||
<span class="is-installed">{{ 'General_Installed'|translate }}</span>
|
||||
{% elseif provider.status == 2 %}
|
||||
<span class="is-broken">{{ 'General_Broken'|translate }}</span>
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col s12 m4 l6">
|
||||
<p>{{ provider.description|translate|raw }}</p>
|
||||
{% if provider.status != 1 and provider.install_docs is defined %}
|
||||
<p>{{ provider.install_docs|raw }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 m4 l4">
|
||||
{% if provider.status == 1 %}
|
||||
<div class="form-help">
|
||||
{% if thisIP != '127.0.0.1' %}
|
||||
{{ 'UserCountry_CurrentLocationIntro'|translate }}:
|
||||
<div>
|
||||
<br/>
|
||||
<div style="position: absolute;"
|
||||
piwik-activity-indicator
|
||||
loading='locationSelector.updateLoading[{{ id|json_encode }}]'></div>
|
||||
<span class="location"><strong>{{ provider.location|raw }}</strong></span>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<a href="javascript:;"
|
||||
ng-click='locationSelector.refreshProviderInfo({{ id|json_encode }})'>{{ 'General_Refresh'|translate }}</a>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ 'UserCountry_CannotLocalizeLocalIP'|translate(thisIP) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if provider.statusMessage is defined and provider.statusMessage %}
|
||||
<div class="form-help">
|
||||
{% if provider.status == 2 %}<strong>{{ 'General_Error'|translate }}:</strong> {% endif %}{{ provider.statusMessage|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if provider.extra_message is defined and provider.extra_message %}
|
||||
<div class="form-help">
|
||||
{{ provider.extra_message|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div piwik-save-button onconfirm="locationSelector.save()" saving="locationSelector.isLoading"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if geoIPLegacyLocUrl is defined and geoIPLegacyLocUrl and isInternetEnabled %}
|
||||
{# The text in this part is not translatable on purpose, as it will be removed again soon #}
|
||||
<div piwik-content-block content-title="Automatic Updates for GeoIP Legacy">
|
||||
|
||||
<p>Setting up automatic updates for GeoIP Legacy is no longer supported.</p>
|
||||
|
||||
<div class="notification system notification-warning">
|
||||
{% if 'GeoLite' in geoIPLegacyLocUrl %}
|
||||
<div>Maxmind announced to discontinue updates to the GeoLite Legacy databases as of April 1, 2018.</div>
|
||||
{% endif %}
|
||||
<strong>Please consider switching to GeoIP 2 soon! GeoIP Legacy Support is deprecated and will be removed in one of the next major releases.</strong>
|
||||
</div>
|
||||
|
||||
{% if geoIPLegacyLocUrl or geoIPLegacyIspUrl or geoIPLegacyOrgUrl %}
|
||||
<h3>GeoIP Legacy Auto Update</h3>
|
||||
|
||||
<p>Your previous configuration for automatic updates for GeoIP legacy databases is still up and running. It will be automatically disabled and removed after switching to GeoIP2.</p>
|
||||
|
||||
<p>Below you can find the current configuration:</p>
|
||||
|
||||
{% if geoIPLegacyLocUrl %}<p>{{ 'UserCountry_LocationDatabase'|translate|e('html_attr') }}: {{ geoIPLegacyLocUrl }}</p>{% endif %}
|
||||
{% if geoIPLegacyIspUrl %}<p>{{ 'UserCountry_ISPDatabase'|translate|e('html_attr') }}: {{ geoIPLegacyIspUrl }}</p>{% endif %}
|
||||
{% if geoIPLegacyOrgUrl %}<p>{{ 'UserCountry_OrgDatabase'|translate|e('html_attr') }}: {{ geoIPLegacyOrgUrl }}</p>{% endif %}
|
||||
{% if geoIPLegacyUpdatePeriod %}<p>{{ 'UserCountry_DownloadNewDatabasesEvery'|translate|e('html_attr') }}: {{ geoIPLegacyUpdatePeriod }}</p>{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if isInternetEnabled %}
|
||||
<div piwik-content-block
|
||||
content-title="{% if not geoIPDatabasesInstalled %}{{ 'UserCountry_GeoIPDatabases'|translate|e('html_attr') }}{% else %}{{ 'UserCountry_SetupAutomaticUpdatesOfGeoIP'|translate|e('html_attr') }}{% endif %}"
|
||||
id="geoip-db-mangement">
|
||||
|
||||
<div piwik-location-provider-updater
|
||||
geoip-database-installed="{% if geoIPDatabasesInstalled %}1{% else %}0{% endif %}">
|
||||
|
||||
{% if showGeoIPUpdateSection %}
|
||||
{% if not geoIPDatabasesInstalled %}
|
||||
<div ng-show="!locationUpdater.geoipDatabaseInstalled">
|
||||
<div ng-show="locationUpdater.showPiwikNotManagingInfo">
|
||||
<h3>{{ 'UserCountry_PiwikNotManagingGeoIPDBs'|translate|e('html_attr') }}</h3>
|
||||
<div id="manage-geoip-dbs">
|
||||
<div class="row" id="geoipdb-screen1">
|
||||
<div class="geoipdb-column-1 col s6">
|
||||
<p>{{ 'UserCountry_IWantToDownloadFreeGeoIP'|translate|raw }}</p>
|
||||
</div>
|
||||
<div class="geoipdb-column-2 col s6">
|
||||
<p>{{ 'UserCountry_IPurchasedGeoIPDBs'|translate('<a href="http://www.maxmind.com/en/geolocation_landing?rId=piwik">','</a>')|raw }}</p>
|
||||
</div>
|
||||
<div class="geoipdb-column-1 col s6">
|
||||
<input type="button" class="btn"
|
||||
ng-click="locationUpdater.startDownloadFreeGeoIp()"
|
||||
value="{{ 'General_GetStarted'|translate }}..."/>
|
||||
</div>
|
||||
<div class="geoipdb-column-2 col s6">
|
||||
<input type="button" class="btn"
|
||||
ng-click="locationUpdater.startAutomaticUpdateGeoIp()"
|
||||
value="{{ 'General_GetStarted'|translate }}..." id="start-automatic-update-geoip"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="geoipdb-screen2-download" ng-show="locationUpdater.showFreeDownload">
|
||||
<div piwik-progressbar
|
||||
label="{{ ('UserCountry_DownloadingDb'|translate('<a href="'~geoLiteUrl~'">'~geoLiteFilename~'</a>') ~ '...')|json_encode }}"
|
||||
progress="locationUpdater.progressFreeDownload">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include "@UserCountry/_updaterManage.twig" %}
|
||||
{% else %}
|
||||
<p class="form-description">{{ 'UserCountry_CannotSetupGeoIPAutoUpdating'|translate }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
@ -0,0 +1,9 @@
|
||||
<div piwik-content-block>
|
||||
<div class="sparkline">
|
||||
{{ sparkline(urlSparklineCountries) }}
|
||||
<div>
|
||||
{{ 'UserCountry_DistinctCountries'|translate("<strong>"~numberDistinctCountries|number~"</strong>")|raw }}
|
||||
</div>
|
||||
</div>
|
||||
<br style="clear:left"/>
|
||||
</div>
|
Reference in New Issue
Block a user