Version Description
Download this release
Release Info
Developer | matomoteam |
Plugin | Matomo Analytics – Ethical Stats. Powerful Insights. |
Version | 4.1.2 |
Comparing to | |
See all releases |
Code changes from version 4.1.1 to 4.1.2
- app/bootstrap.php +3 -0
- app/config/global.ini.php +12 -7
- app/core/CliMulti/Process.php +16 -0
- app/core/CliMulti/RequestCommand.php +2 -0
- app/core/CronArchive.php +10 -4
- app/core/CronArchive/QueueConsumer.php +6 -2
- app/core/DataAccess/ArchivingDbAdapter.php +14 -0
- app/core/Http.php +7 -2
- app/core/Mail/Transport.php +6 -2
- app/core/Period/Factory.php +5 -1
- app/core/SettingsServer.php +45 -15
- app/core/Tracker/TableLogAction.php +11 -5
- app/core/Tracker/VisitExcluded.php +7 -2
- app/core/Tracker/VisitorRecognizer.php +10 -0
- app/core/Version.php +1 -1
- app/lang/ar.json +1 -1
- app/lang/be.json +1 -1
- app/lang/bg.json +1 -1
- app/lang/ca.json +1 -1
- app/lang/cs.json +1 -2
- app/lang/da.json +54 -7
- app/lang/de.json +1 -2
- app/lang/el.json +35 -6
- app/lang/en.json +43 -13
- app/lang/es-ar.json +1 -2
- app/lang/es.json +1 -2
- app/lang/fa.json +1 -1
- app/lang/fi.json +1 -1
- app/lang/fr.json +1 -2
- app/lang/id.json +1 -1
- app/lang/it.json +1 -2
- app/lang/ja.json +1 -2
- app/lang/ko.json +1 -1
- app/lang/lv.json +1 -1
- app/lang/nb.json +1 -1
- app/lang/nl.json +1 -1
- app/lang/pl.json +1 -2
- app/lang/pt-br.json +1 -2
- app/lang/pt.json +1 -2
- app/lang/ro.json +1 -1
- app/lang/ru.json +6 -3
- app/lang/sq.json +13 -2
- app/lang/sr.json +1 -2
- app/lang/sv.json +10 -4
- app/lang/tl.json +1 -1
- app/lang/tr.json +2 -2
- app/lang/uk.json +1 -2
- app/lang/vi.json +1 -1
- app/lang/zh-cn.json +1 -2
- app/lang/zh-tw.json +42 -5
- app/plugins/API/Reports/Get.php +1 -1
- app/plugins/Actions/Reports/Get.php +1 -1
- app/plugins/Contents/Reports/GetContentNames.php +1 -2
- app/plugins/Contents/Reports/GetContentPieces.php +1 -2
- app/plugins/CoreAdminHome/Controller.php +3 -2
- app/plugins/CoreHome/CoreHome.php +1 -0
- app/plugins/CoreHome/angularjs/period-selector/period-selector.directive.html +1 -1
- app/plugins/CoreHome/stylesheets/layout.less +16 -1
- app/plugins/CoreHome/templates/_menu.twig +12 -7
- app/plugins/CorePluginsAdmin/Controller.php +2 -0
- app/plugins/CorePluginsAdmin/CorePluginsAdmin.php +1 -0
- app/plugins/CoreUpdater/Controller.php +0 -5
- app/plugins/CoreUpdater/Model.php +1 -0
- app/plugins/CoreVisualizations/Visualizations/Sparklines.php +1 -1
- app/plugins/DevicesDetection/Reports/GetBrand.php +1 -1
- app/plugins/DevicesDetection/Reports/GetBrowserVersions.php +1 -1
- app/plugins/DevicesDetection/Reports/GetBrowsers.php +1 -1
- app/plugins/DevicesDetection/Reports/GetModel.php +1 -1
- app/plugins/DevicesDetection/Reports/GetOsFamilies.php +1 -1
- app/plugins/DevicesDetection/Reports/GetOsVersions.php +1 -1
- app/plugins/DevicesDetection/Reports/GetType.php +1 -1
- app/plugins/Events/Reports/GetAction.php +1 -1
- app/plugins/Events/Reports/GetCategory.php +1 -1
- app/plugins/Events/Reports/GetName.php +1 -1
- app/plugins/Feedback/API.php +0 -1
- app/plugins/Goals/Reports/Get.php +1 -1
- app/plugins/Goals/Reports/GetDaysToConversion.php +1 -0
- app/plugins/Goals/Reports/GetVisitsUntilConversion.php +1 -0
- app/plugins/Live/Model.php +60 -29
- app/plugins/Login/PasswordResetter.php +7 -10
- app/plugins/Marketplace/Controller.php +2 -0
- app/plugins/Marketplace/templates/_updateCommunicationEmail.twig +2 -2
- app/plugins/Marketplace/templates/uploadPluginDialog.twig +1 -1
- app/plugins/Morpheus/templates/admin.twig +1 -1
- app/plugins/MultiSites/Reports/GetAll.php +1 -1
- app/plugins/MultiSites/Reports/GetOne.php +1 -1
- app/plugins/PagePerformance/Controller.php +3 -2
- app/plugins/PagePerformance/Reports/Get.php +1 -1
- app/plugins/PrivacyManager/PrivacyManager.php +3 -1
- app/plugins/PrivacyManager/SystemSettings.php +14 -0
- app/plugins/PrivacyManager/templates/footerLinks.twig +2 -0
- app/plugins/Referrers/Reports/Get.php +1 -1
- app/plugins/Referrers/SearchEngine.php +3 -1
- app/plugins/Resolution/Reports/GetResolution.php +1 -1
- app/plugins/SitesManager/SitesManager.php +1 -0
- app/plugins/SitesManager/templates/help/excluded-user-agents-help.html +1 -0
- app/plugins/UserId/Reports/GetUsers.php +1 -1
- app/plugins/VisitFrequency/Reports/Get.php +2 -2
- app/plugins/VisitsSummary/Reports/Get.php +21 -3
- app/plugins/WebsiteMeasurable/MeasurableSettings.php +3 -1
- app/vendor/autoload.php +1 -1
- app/vendor/bin/lessc +0 -191
- app/vendor/composer/InstalledVersions.php +10 -10
- app/vendor/composer/autoload_real.php +7 -7
- app/vendor/composer/autoload_static.php +6 -6
- app/vendor/composer/installed.json +7 -7
- app/vendor/composer/installed.php +10 -10
- app/vendor/matomo/device-detector/DeviceDetector.php +2 -2
- app/vendor/matomo/device-detector/Parser/Client/Browser.php +9 -1
- app/vendor/matomo/device-detector/Parser/Device/AbstractDeviceParser.php +401 -332
- app/vendor/matomo/device-detector/Parser/OperatingSystem.php +19 -4
- app/vendor/matomo/device-detector/README.md +10 -7
- app/vendor/matomo/device-detector/regexes/bots.yml +92 -25
- app/vendor/matomo/device-detector/regexes/client/browser_engine.yml +1 -1
- app/vendor/matomo/device-detector/regexes/client/browsers.yml +57 -8
- app/vendor/matomo/device-detector/regexes/client/feed_readers.yml +1 -1
- app/vendor/matomo/device-detector/regexes/client/mobile_apps.yml +57 -70
- app/vendor/matomo/device-detector/regexes/device/mobiles.yml +1568 -408
- app/vendor/matomo/device-detector/regexes/device/portable_media_player.yml +6 -1
- app/vendor/matomo/device-detector/regexes/device/televisions.yml +98 -2
- app/vendor/matomo/device-detector/regexes/oss.yml +283 -15
- assets/js/asset_manager_core_js.js +7 -6
- classes/WpMatomo/Admin/SystemReport.php +14 -0
- classes/WpMatomo/Admin/TrackingSettings.php +18 -0
- classes/WpMatomo/Admin/TrackingSettings/Forms.php +15 -1
- classes/WpMatomo/Admin/views/summary.php +1 -1
- classes/WpMatomo/Admin/views/tracking.php +16 -0
- classes/WpMatomo/Site/Sync/SyncConfig.php +1 -1
- matomo.php +1 -1
- readme.txt +1 -1
app/bootstrap.php
CHANGED
@@ -148,6 +148,9 @@ if ( $GLOBALS['MATOMO_LOADED_DIRECTLY'] ) {
|
|
148 |
|
149 |
if ( ! defined( 'ABSPATH' ) ) {
|
150 |
echo 'Could not find wp-load. If your server uses symlinks or a custom content directory, Matomo may not work for you as we cannot detect the paths correctly. For more information see https://matomo.org/faq/wordpress/how-do-i-make-matomo-for-wordpress-work-when-i-have-a-custom-content-directory/';
|
|
|
|
|
|
|
151 |
exit; // if accessed directly
|
152 |
}
|
153 |
|
148 |
|
149 |
if ( ! defined( 'ABSPATH' ) ) {
|
150 |
echo 'Could not find wp-load. If your server uses symlinks or a custom content directory, Matomo may not work for you as we cannot detect the paths correctly. For more information see https://matomo.org/faq/wordpress/how-do-i-make-matomo-for-wordpress-work-when-i-have-a-custom-content-directory/';
|
151 |
+
if (!empty($_SERVER['MATOMO_WP_ROOT_PATH'])) {
|
152 |
+
echo ' Note: A custom WP root path was set.';
|
153 |
+
}
|
154 |
exit; // if accessed directly
|
155 |
}
|
156 |
|
app/config/global.ini.php
CHANGED
@@ -356,6 +356,11 @@ archiving_range_force_on_browser_request = 1
|
|
356 |
; If you need any other period, or want to ensure one of those is always archived, you can define them here
|
357 |
archiving_custom_ranges[] =
|
358 |
|
|
|
|
|
|
|
|
|
|
|
359 |
; By default Matomo runs OPTIMIZE TABLE SQL queries to free spaces after deleting some data.
|
360 |
; If your Matomo tracks millions of pages, the OPTIMIZE TABLE queries might run for hours (seen in "SHOW FULL PROCESSLIST \g")
|
361 |
; so you can disable these special queries here:
|
@@ -416,12 +421,6 @@ login_cookie_path =
|
|
416 |
; "remember me" option checked
|
417 |
login_session_not_remembered_idle_timeout = 3600
|
418 |
|
419 |
-
; email address that appears as a Sender in the password recovery email
|
420 |
-
; if specified, {DOMAIN} will be replaced by the current Matomo domain
|
421 |
-
login_password_recovery_email_address = "password-recovery@{DOMAIN}"
|
422 |
-
; name that appears as a Sender in the password recovery email
|
423 |
-
login_password_recovery_email_name = Matomo
|
424 |
-
|
425 |
; email address that appears as a Reply-to in the password recovery email
|
426 |
; if specified, {DOMAIN} will be replaced by the current Matomo domain
|
427 |
login_password_recovery_replyto_email_address = "no-reply@{DOMAIN}"
|
@@ -881,6 +880,12 @@ create_new_visit_when_website_referrer_changes = 0
|
|
881 |
; Whether to force a new visit at midnight for every visitor. Default 1.
|
882 |
create_new_visit_after_midnight = 1
|
883 |
|
|
|
|
|
|
|
|
|
|
|
|
|
884 |
; maximum length of a Page Title or a Page URL recorded in the log_action.name table
|
885 |
page_maximum_length = 1024;
|
886 |
|
@@ -984,7 +989,7 @@ host = ; SMTP server address
|
|
984 |
type = ; SMTP Auth type. By default: NONE. For example: LOGIN
|
985 |
username = ; SMTP username
|
986 |
password = ; SMTP password
|
987 |
-
encryption = ; SMTP transport-layer encryption, either 'ssl', 'tls', or empty (i.e.,
|
988 |
|
989 |
[proxy]
|
990 |
type = BASIC ; proxy type for outbound/outgoing connections; currently, only BASIC is supported
|
356 |
; If you need any other period, or want to ensure one of those is always archived, you can define them here
|
357 |
archiving_custom_ranges[] =
|
358 |
|
359 |
+
; If configured, archiving queries will be aborted after the configured amount of seconds. Set it to -1 if the query time
|
360 |
+
; should not be limited. Note: This feature requires a recent MySQL version (5.7 or newer). Some MySQL forks like MariaDB
|
361 |
+
; might not support this feature which uses the MAX_EXECUTION_TIME hint.
|
362 |
+
archiving_query_max_execution_time = 7200
|
363 |
+
|
364 |
; By default Matomo runs OPTIMIZE TABLE SQL queries to free spaces after deleting some data.
|
365 |
; If your Matomo tracks millions of pages, the OPTIMIZE TABLE queries might run for hours (seen in "SHOW FULL PROCESSLIST \g")
|
366 |
; so you can disable these special queries here:
|
421 |
; "remember me" option checked
|
422 |
login_session_not_remembered_idle_timeout = 3600
|
423 |
|
|
|
|
|
|
|
|
|
|
|
|
|
424 |
; email address that appears as a Reply-to in the password recovery email
|
425 |
; if specified, {DOMAIN} will be replaced by the current Matomo domain
|
426 |
login_password_recovery_replyto_email_address = "no-reply@{DOMAIN}"
|
880 |
; Whether to force a new visit at midnight for every visitor. Default 1.
|
881 |
create_new_visit_after_midnight = 1
|
882 |
|
883 |
+
; Will force the creation of a new visit once a visit had this many actions.
|
884 |
+
; Increasing this number can slow down the tracking in Matomo and put more load on the database.
|
885 |
+
; Increase this limit if it's expected that you have visits with more than this many actions.
|
886 |
+
; Set to 0 or a negative value to allow unlimited actions.
|
887 |
+
create_new_visit_after_x_actions = 10000
|
888 |
+
|
889 |
; maximum length of a Page Title or a Page URL recorded in the log_action.name table
|
890 |
page_maximum_length = 1024;
|
891 |
|
989 |
type = ; SMTP Auth type. By default: NONE. For example: LOGIN
|
990 |
username = ; SMTP username
|
991 |
password = ; SMTP password
|
992 |
+
encryption = ; SMTP transport-layer encryption, either 'none', 'ssl', 'tls', or empty (i.e., auto).
|
993 |
|
994 |
[proxy]
|
995 |
type = BASIC ; proxy type for outbound/outgoing connections; currently, only BASIC is supported
|
app/core/CliMulti/Process.php
CHANGED
@@ -8,6 +8,7 @@
|
|
8 |
namespace Piwik\CliMulti;
|
9 |
|
10 |
use Piwik\CliMulti;
|
|
|
11 |
use Piwik\Filesystem;
|
12 |
use Piwik\SettingsServer;
|
13 |
|
@@ -45,6 +46,15 @@ class Process
|
|
45 |
$this->markAsNotStarted();
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
public function getPid()
|
49 |
{
|
50 |
return $this->pid;
|
@@ -178,6 +188,12 @@ class Process
|
|
178 |
|
179 |
public static function isSupported()
|
180 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
if (SettingsServer::isWindows()) {
|
182 |
return false;
|
183 |
}
|
8 |
namespace Piwik\CliMulti;
|
9 |
|
10 |
use Piwik\CliMulti;
|
11 |
+
use Piwik\Container\StaticContainer;
|
12 |
use Piwik\Filesystem;
|
13 |
use Piwik\SettingsServer;
|
14 |
|
46 |
$this->markAsNotStarted();
|
47 |
}
|
48 |
|
49 |
+
private static function isForcingAsyncProcessMode()
|
50 |
+
{
|
51 |
+
try {
|
52 |
+
return (bool) StaticContainer::get('test.vars.forceCliMultiViaCurl');
|
53 |
+
} catch (\Exception $ex) {
|
54 |
+
return false;
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
public function getPid()
|
59 |
{
|
60 |
return $this->pid;
|
188 |
|
189 |
public static function isSupported()
|
190 |
{
|
191 |
+
if (defined('PIWIK_TEST_MODE')
|
192 |
+
&& self::isForcingAsyncProcessMode()
|
193 |
+
) {
|
194 |
+
return false;
|
195 |
+
}
|
196 |
+
|
197 |
if (SettingsServer::isWindows()) {
|
198 |
return false;
|
199 |
}
|
app/core/CliMulti/RequestCommand.php
CHANGED
@@ -103,6 +103,8 @@ class RequestCommand extends ConsoleCommand
|
|
103 |
Url::setHost($hostname);
|
104 |
|
105 |
$query = $input->getArgument('url-query');
|
|
|
|
|
106 |
$query = UrlHelper::getArrayFromQueryString($query); // NOTE: this method can create the StaticContainer now
|
107 |
foreach ($query as $name => $value) {
|
108 |
$_GET[$name] = urldecode($value);
|
103 |
Url::setHost($hostname);
|
104 |
|
105 |
$query = $input->getArgument('url-query');
|
106 |
+
$_SERVER['QUERY_STRING'] = $query;
|
107 |
+
|
108 |
$query = UrlHelper::getArrayFromQueryString($query); // NOTE: this method can create the StaticContainer now
|
109 |
foreach ($query as $name => $value) {
|
110 |
$_GET[$name] = urldecode($value);
|
app/core/CronArchive.php
CHANGED
@@ -211,6 +211,11 @@ class CronArchive
|
|
211 |
*/
|
212 |
private $cliMultiRequestParser;
|
213 |
|
|
|
|
|
|
|
|
|
|
|
214 |
/**
|
215 |
* Constructor.
|
216 |
*
|
@@ -235,7 +240,8 @@ class CronArchive
|
|
235 |
|
236 |
$this->rawLogDao = new RawLogDao();
|
237 |
|
238 |
-
$this->
|
|
|
239 |
|
240 |
$this->archiveFilter = new ArchiveFilter();
|
241 |
}
|
@@ -654,7 +660,7 @@ class CronArchive
|
|
654 |
{
|
655 |
$request = "?module=API&method=CoreAdminHome.archiveReports&idSite=$idSite&period=$period&date=" . $date . "&format=json";
|
656 |
if ($segment) {
|
657 |
-
$request .= '&segment=' . urlencode(
|
658 |
}
|
659 |
if (!empty($plugin)) {
|
660 |
$request .= "&plugin=" . $plugin;
|
@@ -696,7 +702,7 @@ class CronArchive
|
|
696 |
if (empty($response)) {
|
697 |
$message .= "The response was empty. This usually means a server error. A solution to this error is generally to increase the value of 'memory_limit' in your php.ini file. ";
|
698 |
|
699 |
-
if($this->
|
700 |
$message .= " For more information and the error message please check in your PHP CLI error log file. As this core:archive command triggers PHP processes over the CLI, you can find where PHP CLI logs are stored by running this command: php -i | grep error_log";
|
701 |
} else {
|
702 |
$message .= " For more information and the error message please check your web server's error Log file. As this core:archive command triggers PHP processes over HTTP, you can find the error message in your Matomo's web server error logs. ";
|
@@ -735,7 +741,7 @@ class CronArchive
|
|
735 |
$websiteIds = array_intersect($websiteIds, $allWebsites);
|
736 |
|
737 |
if (!empty($this->shouldSkipSpecifiedSites)) {
|
738 |
-
$websiteIds =
|
739 |
}
|
740 |
|
741 |
/**
|
211 |
*/
|
212 |
private $cliMultiRequestParser;
|
213 |
|
214 |
+
/**
|
215 |
+
* @var bool|mixed
|
216 |
+
*/
|
217 |
+
private $supportsAsync;
|
218 |
+
|
219 |
/**
|
220 |
* Constructor.
|
221 |
*
|
240 |
|
241 |
$this->rawLogDao = new RawLogDao();
|
242 |
|
243 |
+
$this->supportsAsync = $this->makeCliMulti()->supportsAsync();
|
244 |
+
$this->cliMultiRequestParser = new RequestParser($this->supportsAsync);
|
245 |
|
246 |
$this->archiveFilter = new ArchiveFilter();
|
247 |
}
|
660 |
{
|
661 |
$request = "?module=API&method=CoreAdminHome.archiveReports&idSite=$idSite&period=$period&date=" . $date . "&format=json";
|
662 |
if ($segment) {
|
663 |
+
$request .= '&segment=' . urlencode($segment);
|
664 |
}
|
665 |
if (!empty($plugin)) {
|
666 |
$request .= "&plugin=" . $plugin;
|
702 |
if (empty($response)) {
|
703 |
$message .= "The response was empty. This usually means a server error. A solution to this error is generally to increase the value of 'memory_limit' in your php.ini file. ";
|
704 |
|
705 |
+
if($this->supportsAsync) {
|
706 |
$message .= " For more information and the error message please check in your PHP CLI error log file. As this core:archive command triggers PHP processes over the CLI, you can find where PHP CLI logs are stored by running this command: php -i | grep error_log";
|
707 |
} else {
|
708 |
$message .= " For more information and the error message please check your web server's error Log file. As this core:archive command triggers PHP processes over HTTP, you can find the error message in your Matomo's web server error logs. ";
|
741 |
$websiteIds = array_intersect($websiteIds, $allWebsites);
|
742 |
|
743 |
if (!empty($this->shouldSkipSpecifiedSites)) {
|
744 |
+
$websiteIds = array_diff($websiteIds, $this->shouldSkipSpecifiedSites);
|
745 |
}
|
746 |
|
747 |
/**
|
app/core/CronArchive/QueueConsumer.php
CHANGED
@@ -108,6 +108,8 @@ class QueueConsumer
|
|
108 |
*/
|
109 |
private $currentSiteArchivingStartTime;
|
110 |
|
|
|
|
|
111 |
public function __construct(LoggerInterface $logger, $websiteIdArchiveList, $countOfProcesses, $pid, Model $model,
|
112 |
SegmentArchiving $segmentArchiving, CronArchive $cronArchive, RequestParser $cliMultiRequestParser,
|
113 |
ArchiveFilter $archiveFilter = null)
|
@@ -138,6 +140,8 @@ class QueueConsumer
|
|
138 |
return null;
|
139 |
}
|
140 |
|
|
|
|
|
141 |
/**
|
142 |
* This event is triggered before the cron archiving process starts archiving data for a single
|
143 |
* site.
|
@@ -298,7 +302,7 @@ class QueueConsumer
|
|
298 |
|
299 |
$this->logger->info("Finished archiving for site {idSite}, {requests} API requests, {timer} [{processed} / {totalNum} done]", [
|
300 |
'idSite' => $this->idSite,
|
301 |
-
'processed' => $this->
|
302 |
'totalNum' => $this->websiteIdArchiveList->getNumSites(),
|
303 |
'timer' => $this->siteTimer,
|
304 |
'requests' => $this->siteRequests,
|
@@ -386,7 +390,7 @@ class QueueConsumer
|
|
386 |
return $loader->canSkipThisArchive(); // if no point in archiving, skip
|
387 |
}
|
388 |
|
389 |
-
|
390 |
{
|
391 |
$inProgressArchives = $this->cliMultiRequestParser->getInProgressArchivingCommands();
|
392 |
|
108 |
*/
|
109 |
private $currentSiteArchivingStartTime;
|
110 |
|
111 |
+
private $processedSiteCount = 0;
|
112 |
+
|
113 |
public function __construct(LoggerInterface $logger, $websiteIdArchiveList, $countOfProcesses, $pid, Model $model,
|
114 |
SegmentArchiving $segmentArchiving, CronArchive $cronArchive, RequestParser $cliMultiRequestParser,
|
115 |
ArchiveFilter $archiveFilter = null)
|
140 |
return null;
|
141 |
}
|
142 |
|
143 |
+
++$this->processedSiteCount;
|
144 |
+
|
145 |
/**
|
146 |
* This event is triggered before the cron archiving process starts archiving data for a single
|
147 |
* site.
|
302 |
|
303 |
$this->logger->info("Finished archiving for site {idSite}, {requests} API requests, {timer} [{processed} / {totalNum} done]", [
|
304 |
'idSite' => $this->idSite,
|
305 |
+
'processed' => $this->processedSiteCount,
|
306 |
'totalNum' => $this->websiteIdArchiveList->getNumSites(),
|
307 |
'timer' => $this->siteTimer,
|
308 |
'requests' => $this->siteRequests,
|
390 |
return $loader->canSkipThisArchive(); // if no point in archiving, skip
|
391 |
}
|
392 |
|
393 |
+
public function shouldSkipArchiveBecauseLowerPeriodOrSegmentIsInProgress(array $archiveToProcess)
|
394 |
{
|
395 |
$inProgressArchives = $this->cliMultiRequestParser->getInProgressArchivingCommands();
|
396 |
|
app/core/DataAccess/ArchivingDbAdapter.php
CHANGED
@@ -11,7 +11,9 @@ namespace Piwik\DataAccess;
|
|
11 |
|
12 |
use Piwik\ArchiveProcessor\ArchivingStatus;
|
13 |
use Piwik\Concurrency\Lock;
|
|
|
14 |
use Piwik\Db\AdapterInterface;
|
|
|
15 |
use Psr\Log\LoggerInterface;
|
16 |
|
17 |
class ArchivingDbAdapter
|
@@ -31,11 +33,17 @@ class ArchivingDbAdapter
|
|
31 |
*/
|
32 |
private $logger;
|
33 |
|
|
|
|
|
|
|
|
|
|
|
34 |
public function __construct($wrapped, Lock $archivingLock = null, LoggerInterface $logger = null)
|
35 |
{
|
36 |
$this->wrapped = $wrapped;
|
37 |
$this->archivingLock = $archivingLock;
|
38 |
$this->logger = $logger;
|
|
|
39 |
}
|
40 |
|
41 |
public function __call($name, $arguments)
|
@@ -46,6 +54,7 @@ class ArchivingDbAdapter
|
|
46 |
public function exec($sql)
|
47 |
{
|
48 |
$this->reexpireLock();
|
|
|
49 |
$this->logSql($sql);
|
50 |
|
51 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
@@ -54,6 +63,7 @@ class ArchivingDbAdapter
|
|
54 |
public function query($sql)
|
55 |
{
|
56 |
$this->reexpireLock();
|
|
|
57 |
$this->logSql($sql);
|
58 |
|
59 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
@@ -62,6 +72,7 @@ class ArchivingDbAdapter
|
|
62 |
public function fetchAll($sql)
|
63 |
{
|
64 |
$this->reexpireLock();
|
|
|
65 |
$this->logSql($sql);
|
66 |
|
67 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
@@ -70,6 +81,7 @@ class ArchivingDbAdapter
|
|
70 |
public function fetchRow($sql)
|
71 |
{
|
72 |
$this->reexpireLock();
|
|
|
73 |
$this->logSql($sql);
|
74 |
|
75 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
@@ -78,6 +90,7 @@ class ArchivingDbAdapter
|
|
78 |
public function fetchOne($sql)
|
79 |
{
|
80 |
$this->reexpireLock();
|
|
|
81 |
$this->logSql($sql);
|
82 |
|
83 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
@@ -86,6 +99,7 @@ class ArchivingDbAdapter
|
|
86 |
public function fetchAssoc($sql)
|
87 |
{
|
88 |
$this->reexpireLock();
|
|
|
89 |
$this->logSql($sql);
|
90 |
|
91 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
11 |
|
12 |
use Piwik\ArchiveProcessor\ArchivingStatus;
|
13 |
use Piwik\Concurrency\Lock;
|
14 |
+
use Piwik\Config;
|
15 |
use Piwik\Db\AdapterInterface;
|
16 |
+
use Piwik\DbHelper;
|
17 |
use Psr\Log\LoggerInterface;
|
18 |
|
19 |
class ArchivingDbAdapter
|
33 |
*/
|
34 |
private $logger;
|
35 |
|
36 |
+
/**
|
37 |
+
* @var int
|
38 |
+
*/
|
39 |
+
private $maxExecutionTime;
|
40 |
+
|
41 |
public function __construct($wrapped, Lock $archivingLock = null, LoggerInterface $logger = null)
|
42 |
{
|
43 |
$this->wrapped = $wrapped;
|
44 |
$this->archivingLock = $archivingLock;
|
45 |
$this->logger = $logger;
|
46 |
+
$this->maxExecutionTime = (float) Config::getInstance()->General['archiving_query_max_execution_time'];
|
47 |
}
|
48 |
|
49 |
public function __call($name, $arguments)
|
54 |
public function exec($sql)
|
55 |
{
|
56 |
$this->reexpireLock();
|
57 |
+
$sql = DbHelper::addMaxExecutionTimeHintToQuery($sql, $this->maxExecutionTime);
|
58 |
$this->logSql($sql);
|
59 |
|
60 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
63 |
public function query($sql)
|
64 |
{
|
65 |
$this->reexpireLock();
|
66 |
+
$sql = DbHelper::addMaxExecutionTimeHintToQuery($sql, $this->maxExecutionTime);
|
67 |
$this->logSql($sql);
|
68 |
|
69 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
72 |
public function fetchAll($sql)
|
73 |
{
|
74 |
$this->reexpireLock();
|
75 |
+
$sql = DbHelper::addMaxExecutionTimeHintToQuery($sql, $this->maxExecutionTime);
|
76 |
$this->logSql($sql);
|
77 |
|
78 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
81 |
public function fetchRow($sql)
|
82 |
{
|
83 |
$this->reexpireLock();
|
84 |
+
$sql = DbHelper::addMaxExecutionTimeHintToQuery($sql, $this->maxExecutionTime);
|
85 |
$this->logSql($sql);
|
86 |
|
87 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
90 |
public function fetchOne($sql)
|
91 |
{
|
92 |
$this->reexpireLock();
|
93 |
+
$sql = DbHelper::addMaxExecutionTimeHintToQuery($sql, $this->maxExecutionTime);
|
94 |
$this->logSql($sql);
|
95 |
|
96 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
99 |
public function fetchAssoc($sql)
|
100 |
{
|
101 |
$this->reexpireLock();
|
102 |
+
$sql = DbHelper::addMaxExecutionTimeHintToQuery($sql, $this->maxExecutionTime);
|
103 |
$this->logSql($sql);
|
104 |
|
105 |
return call_user_func_array([$this->wrapped, __FUNCTION__], func_get_args());
|
app/core/Http.php
CHANGED
@@ -608,6 +608,11 @@ class Http
|
|
608 |
|
609 |
if ($rangeBytes) {
|
610 |
curl_setopt($ch, CURLOPT_RANGE, $rangeBytes);
|
|
|
|
|
|
|
|
|
|
|
611 |
}
|
612 |
|
613 |
// Case core:archive command is triggering archiving on https:// and the certificate is not valid
|
@@ -708,8 +713,8 @@ class Http
|
|
708 |
@fclose($file);
|
709 |
|
710 |
$fileSize = filesize($destinationPath);
|
711 |
-
if (
|
712 |
-
|
713 |
) {
|
714 |
throw new Exception('File size error: ' . $destinationPath . '; expected ' . $contentLength . ' bytes; received ' . $fileLength . ' bytes; saved ' . $fileSize . ' bytes to file');
|
715 |
}
|
608 |
|
609 |
if ($rangeBytes) {
|
610 |
curl_setopt($ch, CURLOPT_RANGE, $rangeBytes);
|
611 |
+
} else {
|
612 |
+
// see https://github.com/matomo-org/matomo/pull/17009 for more info
|
613 |
+
// NOTE: we only do this when CURLOPT_RANGE is not being used, because when using both the
|
614 |
+
// response is empty.
|
615 |
+
$curl_options[CURLOPT_ENCODING] = "";
|
616 |
}
|
617 |
|
618 |
// Case core:archive command is triggering archiving on https:// and the certificate is not valid
|
713 |
@fclose($file);
|
714 |
|
715 |
$fileSize = filesize($destinationPath);
|
716 |
+
if ($contentLength > 0
|
717 |
+
&& $fileSize != $contentLength
|
718 |
) {
|
719 |
throw new Exception('File size error: ' . $destinationPath . '; expected ' . $contentLength . ' bytes; received ' . $fileLength . ' bytes; saved ' . $fileSize . ' bytes to file');
|
720 |
}
|
app/core/Mail/Transport.php
CHANGED
@@ -107,7 +107,7 @@ class Transport
|
|
107 |
/**
|
108 |
* @return void
|
109 |
*/
|
110 |
-
private function initSmtpTransport($phpMailer)
|
111 |
{
|
112 |
$mailConfig = Config::getInstance()->mail;
|
113 |
|
@@ -133,7 +133,11 @@ class Transport
|
|
133 |
}
|
134 |
|
135 |
if (!empty($mailConfig['encryption'])) {
|
136 |
-
|
|
|
|
|
|
|
|
|
137 |
}
|
138 |
|
139 |
if (!empty($mailConfig['port'])) {
|
107 |
/**
|
108 |
* @return void
|
109 |
*/
|
110 |
+
private function initSmtpTransport(PHPMailer $phpMailer)
|
111 |
{
|
112 |
$mailConfig = Config::getInstance()->mail;
|
113 |
|
133 |
}
|
134 |
|
135 |
if (!empty($mailConfig['encryption'])) {
|
136 |
+
if (strtolower($mailConfig['encryption']) === 'none') {
|
137 |
+
$phpMailer->SMTPAutoTLS = false; // force using no encryption
|
138 |
+
} else {
|
139 |
+
$phpMailer->SMTPSecure = $mailConfig['encryption'];
|
140 |
+
}
|
141 |
}
|
142 |
|
143 |
if (!empty($mailConfig['port'])) {
|
app/core/Period/Factory.php
CHANGED
@@ -167,7 +167,11 @@ abstract class Factory
|
|
167 |
$oPeriod = new Range('range', $date, $timezone, Date::factory('today', $timezone));
|
168 |
} else {
|
169 |
if (!($date instanceof Date)) {
|
170 |
-
|
|
|
|
|
|
|
|
|
171 |
}
|
172 |
$oPeriod = Factory::build($period, $date);
|
173 |
}
|
167 |
$oPeriod = new Range('range', $date, $timezone, Date::factory('today', $timezone));
|
168 |
} else {
|
169 |
if (!($date instanceof Date)) {
|
170 |
+
if (preg_match('/^(now|today|yesterday|yesterdaySameTime|last[ -]?(?:week|month|year))$/i', $date)) {
|
171 |
+
$date = Date::factory($date, $timezone);
|
172 |
+
} else {
|
173 |
+
$date = Date::factory($date);
|
174 |
+
}
|
175 |
}
|
176 |
$oPeriod = Factory::build($period, $date);
|
177 |
}
|
app/core/SettingsServer.php
CHANGED
@@ -196,32 +196,62 @@ class SettingsServer
|
|
196 |
* Prior to PHP 5.2.1, or on Windows, --enable-memory-limit is not a
|
197 |
* compile-time default, so ini_get('memory_limit') may return false.
|
198 |
*
|
199 |
-
* @see http://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes
|
200 |
* @return int|bool memory limit in megabytes, or false if there is no limit
|
201 |
*/
|
202 |
public static function getMemoryLimitValue()
|
203 |
{
|
204 |
if (($memory = ini_get('memory_limit')) > 0) {
|
205 |
-
|
206 |
-
$shorthandByteOption = substr($memory, -1);
|
207 |
-
switch ($shorthandByteOption) {
|
208 |
-
case 'G':
|
209 |
-
case 'g':
|
210 |
-
return substr($memory, 0, -1) * 1024;
|
211 |
-
case 'M':
|
212 |
-
case 'm':
|
213 |
-
return substr($memory, 0, -1);
|
214 |
-
case 'K':
|
215 |
-
case 'k':
|
216 |
-
return substr($memory, 0, -1) / 1024;
|
217 |
-
}
|
218 |
-
return $memory / 1048576;
|
219 |
}
|
220 |
|
221 |
// no memory limit
|
222 |
return false;
|
223 |
}
|
224 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
/**
|
226 |
* Set maximum script execution time.
|
227 |
*
|
196 |
* Prior to PHP 5.2.1, or on Windows, --enable-memory-limit is not a
|
197 |
* compile-time default, so ini_get('memory_limit') may return false.
|
198 |
*
|
|
|
199 |
* @return int|bool memory limit in megabytes, or false if there is no limit
|
200 |
*/
|
201 |
public static function getMemoryLimitValue()
|
202 |
{
|
203 |
if (($memory = ini_get('memory_limit')) > 0) {
|
204 |
+
return self::getMegaBytesFromShorthandByte($memory);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
}
|
206 |
|
207 |
// no memory limit
|
208 |
return false;
|
209 |
}
|
210 |
|
211 |
+
/**
|
212 |
+
* Get php post_max_size (in Megabytes)
|
213 |
+
*
|
214 |
+
* @return int|bool max upload size in megabytes, or false if there is no limit
|
215 |
+
*/
|
216 |
+
public static function getPostMaxUploadSize()
|
217 |
+
{
|
218 |
+
if (($maxPostSize = ini_get('post_max_size')) > 0) {
|
219 |
+
return self::getMegaBytesFromShorthandByte($maxPostSize);
|
220 |
+
}
|
221 |
+
|
222 |
+
// no max upload size
|
223 |
+
return false;
|
224 |
+
}
|
225 |
+
|
226 |
+
/**
|
227 |
+
* @see http://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes
|
228 |
+
* @param $value
|
229 |
+
* @return false|float|int
|
230 |
+
*/
|
231 |
+
private static function getMegaBytesFromShorthandByte($value)
|
232 |
+
{
|
233 |
+
$value = str_replace(' ', '', $value);
|
234 |
+
|
235 |
+
$shorthandByteOption = substr($value, -1);
|
236 |
+
switch ($shorthandByteOption) {
|
237 |
+
case 'G':
|
238 |
+
case 'g':
|
239 |
+
return substr($value, 0, -1) * 1024;
|
240 |
+
case 'M':
|
241 |
+
case 'm':
|
242 |
+
return substr($value, 0, -1);
|
243 |
+
case 'K':
|
244 |
+
case 'k':
|
245 |
+
return substr($value, 0, -1) / 1024;
|
246 |
+
}
|
247 |
+
|
248 |
+
if (is_numeric($value)) {
|
249 |
+
return (int) $value / 1048576;
|
250 |
+
}
|
251 |
+
|
252 |
+
return false;
|
253 |
+
}
|
254 |
+
|
255 |
/**
|
256 |
* Set maximum script execution time.
|
257 |
*
|
app/core/Tracker/TableLogAction.php
CHANGED
@@ -43,7 +43,7 @@ class TableLogAction
|
|
43 |
|
44 |
$actionIds = self::queryIdsAction($actionsNameAndType);
|
45 |
|
46 |
-
|
47 |
|
48 |
$insertedIds = self::insertNewIdsAction($actionsNameAndType, $fieldNamesToInsert);
|
49 |
$queriedIds = $queriedIds + $insertedIds;
|
@@ -95,7 +95,7 @@ class TableLogAction
|
|
95 |
$inserted = array();
|
96 |
|
97 |
foreach ($fieldNamesToInsert as $fieldName) {
|
98 |
-
|
99 |
|
100 |
$actionId = self::getModel()->createNewIdAction($name, $type, $urlPrefix);
|
101 |
|
@@ -116,7 +116,7 @@ class TableLogAction
|
|
116 |
{
|
117 |
$toQuery = array();
|
118 |
foreach ($actionsNameAndType as &$actionNameType) {
|
119 |
-
|
120 |
$toQuery[] = array('name' => $name, 'type' => $type);
|
121 |
}
|
122 |
|
@@ -184,14 +184,20 @@ class TableLogAction
|
|
184 |
$valueToMatch = preg_replace('@^http[s]?://(www\.)?@i', '', $valueToMatch);
|
185 |
}
|
186 |
|
|
|
187 |
$valueToMatch = self::normaliseActionString($actionType, $valueToMatch);
|
188 |
if ($matchType == SegmentExpression::MATCH_EQUAL
|
189 |
|| $matchType == SegmentExpression::MATCH_NOT_EQUAL
|
190 |
) {
|
191 |
$idAction = self::getModel()->getIdActionMatchingNameAndType($valueToMatch, $actionType);
|
192 |
-
//
|
|
|
193 |
if (empty($idAction)) {
|
194 |
-
$idAction =
|
|
|
|
|
|
|
|
|
195 |
}
|
196 |
return $idAction;
|
197 |
}
|
43 |
|
44 |
$actionIds = self::queryIdsAction($actionsNameAndType);
|
45 |
|
46 |
+
[$queriedIds, $fieldNamesToInsert] = self::processIdsToInsert($actionsNameAndType, $actionIds);
|
47 |
|
48 |
$insertedIds = self::insertNewIdsAction($actionsNameAndType, $fieldNamesToInsert);
|
49 |
$queriedIds = $queriedIds + $insertedIds;
|
95 |
$inserted = array();
|
96 |
|
97 |
foreach ($fieldNamesToInsert as $fieldName) {
|
98 |
+
[$name, $type, $urlPrefix] = $actionsNameAndType[$fieldName];
|
99 |
|
100 |
$actionId = self::getModel()->createNewIdAction($name, $type, $urlPrefix);
|
101 |
|
116 |
{
|
117 |
$toQuery = array();
|
118 |
foreach ($actionsNameAndType as &$actionNameType) {
|
119 |
+
[$name, $type, $urlPrefix] = $actionNameType;
|
120 |
$toQuery[] = array('name' => $name, 'type' => $type);
|
121 |
}
|
122 |
|
184 |
$valueToMatch = preg_replace('@^http[s]?://(www\.)?@i', '', $valueToMatch);
|
185 |
}
|
186 |
|
187 |
+
$unsanitizedValue = $valueToMatch;
|
188 |
$valueToMatch = self::normaliseActionString($actionType, $valueToMatch);
|
189 |
if ($matchType == SegmentExpression::MATCH_EQUAL
|
190 |
|| $matchType == SegmentExpression::MATCH_NOT_EQUAL
|
191 |
) {
|
192 |
$idAction = self::getModel()->getIdActionMatchingNameAndType($valueToMatch, $actionType);
|
193 |
+
// If action can't be found normalized try search for it with original value
|
194 |
+
// This can eg happen for outlinks that contain a & see https://github.com/matomo-org/matomo/issues/11806
|
195 |
if (empty($idAction)) {
|
196 |
+
$idAction = self::getModel()->getIdActionMatchingNameAndType($unsanitizedValue, $actionType);
|
197 |
+
// Action is not found (eg. &segment=pageTitle==Větrnásssssss)
|
198 |
+
if (empty($idAction)) {
|
199 |
+
$idAction = null;
|
200 |
+
}
|
201 |
}
|
202 |
return $idAction;
|
203 |
}
|
app/core/Tracker/VisitExcluded.php
CHANGED
@@ -349,12 +349,13 @@ class VisitExcluded
|
|
349 |
* Returns true if the specified user agent should be excluded for the current site or not.
|
350 |
*
|
351 |
* Visits whose user agent string contains one of the excluded_user_agents strings for the
|
352 |
-
* site being tracked (or one of the global strings) will be excluded.
|
|
|
353 |
*
|
354 |
* @internal param string $this ->userAgent The user agent string.
|
355 |
* @return bool
|
356 |
*/
|
357 |
-
protected function isUserAgentExcluded()
|
358 |
{
|
359 |
$excludedAgents = $this->getAttributes('excluded_user_agents', 'global_excluded_user_agents');
|
360 |
|
@@ -364,6 +365,10 @@ class VisitExcluded
|
|
364 |
if (stripos($this->userAgent, $excludedUserAgent) !== false) {
|
365 |
return true;
|
366 |
}
|
|
|
|
|
|
|
|
|
367 |
}
|
368 |
}
|
369 |
|
349 |
* Returns true if the specified user agent should be excluded for the current site or not.
|
350 |
*
|
351 |
* Visits whose user agent string contains one of the excluded_user_agents strings for the
|
352 |
+
* site being tracked (or one of the global strings) will be excluded. Regular expressions
|
353 |
+
* are also supported.
|
354 |
*
|
355 |
* @internal param string $this ->userAgent The user agent string.
|
356 |
* @return bool
|
357 |
*/
|
358 |
+
protected function isUserAgentExcluded(): bool
|
359 |
{
|
360 |
$excludedAgents = $this->getAttributes('excluded_user_agents', 'global_excluded_user_agents');
|
361 |
|
365 |
if (stripos($this->userAgent, $excludedUserAgent) !== false) {
|
366 |
return true;
|
367 |
}
|
368 |
+
// if the string is a valid regex, and the user agent matches, this visit should be excluded
|
369 |
+
if (@preg_match($excludedUserAgent, null) !== false) {
|
370 |
+
return preg_match($excludedUserAgent, $this->userAgent) ? true : false;
|
371 |
+
}
|
372 |
}
|
373 |
}
|
374 |
|
app/core/Tracker/VisitorRecognizer.php
CHANGED
@@ -104,7 +104,17 @@ class VisitorRecognizer
|
|
104 |
$shouldMatchOneFieldOnly = $this->shouldLookupOneVisitorFieldOnly($isVisitorIdToLookup, $request);
|
105 |
list($timeLookBack, $timeLookAhead) = $this->getWindowLookupThisVisit($request);
|
106 |
|
|
|
|
|
107 |
$visitRow = $this->model->findVisitor($idSite, $configId, $idVisitor, $userId, $persistedVisitAttributes, $shouldMatchOneFieldOnly, $isVisitorIdToLookup, $timeLookBack, $timeLookAhead);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
$this->visitRow = $visitRow;
|
109 |
|
110 |
if ($visitRow
|
104 |
$shouldMatchOneFieldOnly = $this->shouldLookupOneVisitorFieldOnly($isVisitorIdToLookup, $request);
|
105 |
list($timeLookBack, $timeLookAhead) = $this->getWindowLookupThisVisit($request);
|
106 |
|
107 |
+
$maxActions = TrackerConfig::getConfigValue('create_new_visit_after_x_actions');
|
108 |
+
|
109 |
$visitRow = $this->model->findVisitor($idSite, $configId, $idVisitor, $userId, $persistedVisitAttributes, $shouldMatchOneFieldOnly, $isVisitorIdToLookup, $timeLookBack, $timeLookAhead);
|
110 |
+
|
111 |
+
if (!empty($maxActions) && $maxActions > 0
|
112 |
+
&& !empty($visitRow['visit_total_actions'])
|
113 |
+
&& $maxActions <= $visitRow['visit_total_actions']) {
|
114 |
+
$this->visitRow = false;
|
115 |
+
return false;
|
116 |
+
}
|
117 |
+
|
118 |
$this->visitRow = $visitRow;
|
119 |
|
120 |
if ($visitRow
|
app/core/Version.php
CHANGED
@@ -20,7 +20,7 @@ final class Version
|
|
20 |
* The current Matomo version.
|
21 |
* @var string
|
22 |
*/
|
23 |
-
const VERSION = '4.1.
|
24 |
const MAJOR_VERSION = 4;
|
25 |
|
26 |
public function isStableVersion($version)
|
20 |
* The current Matomo version.
|
21 |
* @var string
|
22 |
*/
|
23 |
+
const VERSION = '4.1.1';
|
24 |
const MAJOR_VERSION = 4;
|
25 |
|
26 |
public function isStableVersion($version)
|
app/lang/ar.json
CHANGED
@@ -871,7 +871,7 @@
|
|
871 |
"TV": "تلفاز",
|
872 |
"UserAgent": "وكيل-المستخدم",
|
873 |
"WidgetBrowsers": "متصفحات الزوار",
|
874 |
-
"
|
875 |
},
|
876 |
"Diagnostics": {
|
877 |
"ConfigFileTitle": "ملف الضبط",
|
871 |
"TV": "تلفاز",
|
872 |
"UserAgent": "وكيل-المستخدم",
|
873 |
"WidgetBrowsers": "متصفحات الزوار",
|
874 |
+
"WidgetBrowserVersionsDocumentation": "يحوي هذا التقرير معلومات عن ماهية نوع المستعرض الذي استخدمه زوارك. يُذكَر كل إصدار من المستعرض لوحده."
|
875 |
},
|
876 |
"Diagnostics": {
|
877 |
"ConfigFileTitle": "ملف الضبط",
|
app/lang/be.json
CHANGED
@@ -409,7 +409,7 @@
|
|
409 |
"dataTableLabelTypes": "Тып",
|
410 |
"OperatingSystems": "Па аперацыйных сістэмах",
|
411 |
"WidgetBrowsers": "Браўзары карыстачоў",
|
412 |
-
"
|
413 |
},
|
414 |
"Feedback": {
|
415 |
"DoYouHaveBugReportOrFeatureRequest": "Ці ёсць у вас памылка аб якой неабходна певедаміць?",
|
409 |
"dataTableLabelTypes": "Тып",
|
410 |
"OperatingSystems": "Па аперацыйных сістэмах",
|
411 |
"WidgetBrowsers": "Браўзары карыстачоў",
|
412 |
+
"WidgetBrowserVersionsDocumentation": "Гэтая справаздача змяшчае інфармацыю аб тым, які браўзэр выкарыстоўвалі наведвальнікі. Кожная версія браўзэра пералічана асобна."
|
413 |
},
|
414 |
"Feedback": {
|
415 |
"DoYouHaveBugReportOrFeatureRequest": "Ці ёсць у вас памылка аб якой неабходна певедаміць?",
|
app/lang/bg.json
CHANGED
@@ -861,7 +861,7 @@
|
|
861 |
"Tablet": "Таблет",
|
862 |
"TV": "ТВ",
|
863 |
"WidgetBrowsers": "Браузъри на посетителите",
|
864 |
-
"
|
865 |
},
|
866 |
"Ecommerce": {
|
867 |
"Sales": "Продажби"
|
861 |
"Tablet": "Таблет",
|
862 |
"TV": "ТВ",
|
863 |
"WidgetBrowsers": "Браузъри на посетителите",
|
864 |
+
"WidgetBrowserVersionsDocumentation": "Този отчет показва информация, за това какъв браузър са използвали вашите потребители. Всеки браузер е показан поотделно."
|
865 |
},
|
866 |
"Ecommerce": {
|
867 |
"Sales": "Продажби"
|
app/lang/ca.json
CHANGED
@@ -752,7 +752,7 @@
|
|
752 |
"UserAgent": "Agent d'usuari",
|
753 |
"XVisitsFromDevices": "%1$s de visites provenen de %2$s dispositius",
|
754 |
"WidgetBrowsers": "Navegadors",
|
755 |
-
"
|
756 |
},
|
757 |
"Events": {
|
758 |
"Event": "Esdeveniment",
|
752 |
"UserAgent": "Agent d'usuari",
|
753 |
"XVisitsFromDevices": "%1$s de visites provenen de %2$s dispositius",
|
754 |
"WidgetBrowsers": "Navegadors",
|
755 |
+
"WidgetBrowserVersionsDocumentation": "Aquest informe conté informació sobre quin tipus de navegador està utilitzant els vostres visitants. Cada versió del navegador es llista per separat."
|
756 |
},
|
757 |
"Events": {
|
758 |
"Event": "Esdeveniment",
|
app/lang/cs.json
CHANGED
@@ -1313,7 +1313,7 @@
|
|
1313 |
"MobileApp": "Mobilní aplikace",
|
1314 |
"XVisitsFromDevices": "%1$s návštěv ze zařízení %2$s",
|
1315 |
"WidgetBrowsers": "Web prohlížeče návštěvníků",
|
1316 |
-
"
|
1317 |
},
|
1318 |
"Diagnostics": {
|
1319 |
"ConfigFileTitle": "Konfigurační soubor",
|
@@ -3328,7 +3328,6 @@
|
|
3328 |
"KeepURLFragmentsLong": "Zachovat URL fragmenty stránek při sledování",
|
3329 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP adresy uvedené níže budou vynechány ze záznamu pro všechny weby.",
|
3330 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "URL parametry uvedené níže budou vynechány z URL pro všechny www adresy",
|
3331 |
-
"ListOfQueryParametersToExclude": "Vložte seznam url parametrů dotazu, každý na samostatném řádku, které mají být vyloučeny z hlášení URL. Regulární výrazy, jako třeba %s, jsou podporovány.",
|
3332 |
"LogAnalytics": "Analitiky protokolu",
|
3333 |
"LogAnalyticsDescription": "Pokud nelze použít javascriptovou sledovací metodu, můžete místo toho použít %1$sanalitiku protokolu%2$s jako alternativní způsob sledování vašich uživatelů.",
|
3334 |
"MainDescription": "Vaše analýzy webu potřebují Web! Přidejte, aktualizujte, nebo vymažte je a zobrazte si JavaScriptový kód pro vložení do vaších stránek.",
|
1313 |
"MobileApp": "Mobilní aplikace",
|
1314 |
"XVisitsFromDevices": "%1$s návštěv ze zařízení %2$s",
|
1315 |
"WidgetBrowsers": "Web prohlížeče návštěvníků",
|
1316 |
+
"WidgetBrowserVersionsDocumentation": "Toto hlášení obsahuje informace o tom, jaký druh prohlížeče vaši návštěvníci použili. Každá verze je počítána samostatně."
|
1317 |
},
|
1318 |
"Diagnostics": {
|
1319 |
"ConfigFileTitle": "Konfigurační soubor",
|
3328 |
"KeepURLFragmentsLong": "Zachovat URL fragmenty stránek při sledování",
|
3329 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP adresy uvedené níže budou vynechány ze záznamu pro všechny weby.",
|
3330 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "URL parametry uvedené níže budou vynechány z URL pro všechny www adresy",
|
|
|
3331 |
"LogAnalytics": "Analitiky protokolu",
|
3332 |
"LogAnalyticsDescription": "Pokud nelze použít javascriptovou sledovací metodu, můžete místo toho použít %1$sanalitiku protokolu%2$s jako alternativní způsob sledování vašich uživatelů.",
|
3333 |
"MainDescription": "Vaše analýzy webu potřebují Web! Přidejte, aktualizujte, nebo vymažte je a zobrazte si JavaScriptový kód pro vložení do vaších stránek.",
|
app/lang/da.json
CHANGED
@@ -112,6 +112,7 @@
|
|
112 |
"Continue": "Fortsæt",
|
113 |
"ContinueToPiwik": "Fortsæt til Matomo",
|
114 |
"CurrentlyUsingUnsecureHttp": "Du bruger i øjeblikket Matomo gennem en usikker HTTP forbindelse. Dette gør din Matomo sårbar overfor hackere. Du kan også risikere brud på privatlivslovgivning eftersom nogle funktioner omkring cookies ikke vil fungere. Vi anbefaler at du indstiller Matomo til at benytte SSL (HTTPS) for at forbedre sikkerheden.",
|
|
|
115 |
"CreatedByUser": "oprettet af %s",
|
116 |
"CurrentMonth": "Denne måned",
|
117 |
"CurrentWeek": "Nuværende uge",
|
@@ -132,7 +133,10 @@
|
|
132 |
"DaysHours": "%1$s dage %2$s timer",
|
133 |
"DaysSinceFirstVisit": "Dage siden første besøg",
|
134 |
"DaysSinceLastEcommerceOrder": "Dage siden sidste e-handel ordre",
|
|
|
135 |
"DaysSinceLastVisit": "Dage siden sidste besøg",
|
|
|
|
|
136 |
"Default": "Standard",
|
137 |
"DefaultAppended": "(standard)",
|
138 |
"Delete": "Slet",
|
@@ -512,7 +516,10 @@
|
|
512 |
"ClickToRemoveComp": "Klik for at fjerne denne sammenligning.",
|
513 |
"MaximumNumberOfSegmentsComparedIs": "Det maksimale antal segmenter som kan sammenlignes samtidigt er %s.",
|
514 |
"CompareDatesParamMustMatchComparePeriods": "%1$s forespørgselsparameter længde skal matche %2$s forespørgselsparameter længde.",
|
515 |
-
"MaximumNumberOfPeriodsComparedIs": "Det maksimale antal af perioder som kan sammenlignes samtidigt er %s."
|
|
|
|
|
|
|
516 |
},
|
517 |
"Mobile": {
|
518 |
"AboutPiwikMobile": "Om Matomo Mobil",
|
@@ -906,6 +913,7 @@
|
|
906 |
"ShowExportUrl": "Vis eksport URL",
|
907 |
"HideExportUrl": "Skjul eksport URL",
|
908 |
"HomeShortcut": "Hjem",
|
|
|
909 |
"IncludeRowsWithLowPopulation": "Rækker med lav population er skjult %s Vis alle rækker",
|
910 |
"InjectedHostEmailBody": "Hej, jeg forsøgte at få adgang Matomo i dag og stødte på den ukendte værtsnavn advarsel.",
|
911 |
"InjectedHostEmailSubject": "Matomo blev åbnet fra et ukendt værtsnavn: %s",
|
@@ -918,6 +926,8 @@
|
|
918 |
"VisitTypeReturning": "Tilbagevendende",
|
919 |
"VisitTypeReturningCustomer": "Tilbagevendende kunder",
|
920 |
"MainNavigation": "Hovednavigation",
|
|
|
|
|
921 |
"Menu": "Menu",
|
922 |
"NoPrivilegesAskPiwikAdmin": "Du er logget på som '%1$s' men det ser ikke ud som du har adgang til Matomo. %2$s Spørg Matomo administratoren (klik for at sende e-mail)%3$s for at give dig 'se' adgang til et websted.",
|
923 |
"OnlyForSuperUserAccess": "Dette modul vises i standarddashboardet kun til brugere med superbrugeradgang.",
|
@@ -1239,7 +1249,7 @@
|
|
1239 |
"MobileApp": "Mobilapp",
|
1240 |
"XVisitsFromDevices": "%1$s besøg fra %2$s enheder",
|
1241 |
"WidgetBrowsers": "Besøgendes browser",
|
1242 |
-
"
|
1243 |
},
|
1244 |
"Diagnostics": {
|
1245 |
"ConfigFileTitle": "Konfigurationsfil",
|
@@ -1319,7 +1329,10 @@
|
|
1319 |
"ProfessionalServicesOfferIntro": "Hvilke ydelser kan du gøre brug af?",
|
1320 |
"ContactUs": "Kontakt os",
|
1321 |
"VisitTheForums": "Besøg %1$sforummet%2$s og få hjælp fra andre Matomo-brugere",
|
1322 |
-
"Forums": "Forum"
|
|
|
|
|
|
|
1323 |
},
|
1324 |
"GeoIp2": {
|
1325 |
"AssumingNonApache": "Kan ikke finde apache_get_modules funktion, antager ikke-Apache webserver.",
|
@@ -2856,6 +2869,7 @@
|
|
2856 |
"ActionInstall": "Installer",
|
2857 |
"AllowedUploadFormats": "Du kan via denne side overføre en programudvidelse eller tema i .zip-format.",
|
2858 |
"Authors": "Forfattere",
|
|
|
2859 |
"BackToMarketplace": "Tilbage til markedspladsen",
|
2860 |
"BrowseMarketplace": "Browse Markedsplads",
|
2861 |
"ByXDevelopers": "af %s udviklere",
|
@@ -2881,6 +2895,7 @@
|
|
2881 |
"PluginVersionInfo": "%1$s fra %2$s",
|
2882 |
"PluginWebsite": "Programudvidelsens hjemmeside",
|
2883 |
"Screenshots": "Skærmbilleder",
|
|
|
2884 |
"StepDownloadingPluginFromMarketplace": "Henter programudvidelse fra markedspladsen",
|
2885 |
"StepDownloadingThemeFromMarketplace": "Henter tema fra markedspladsen",
|
2886 |
"StepUnzippingPlugin": "Udpakker programudvidelse",
|
@@ -2970,13 +2985,25 @@
|
|
2970 |
"AnonymizeIpInlineHelp": "Anonymiser besøgendes IP-adresser for at efterkomme den lokale lovgivning om privatlivets fred\/retningslinjer.",
|
2971 |
"AnonymizeIpMaskLengtDescription": "Vælg hvor mange bytes af de besøgendes IP-adresser der skal maskeres.",
|
2972 |
"AnonymizeIpMaskLength": "%1$s bytes - f.eks %2$s",
|
|
|
2973 |
"AskingForConsent": "Samtykkeanmodning",
|
2974 |
"ClickHereSettings": "Klik her for at få adgang til %s indstillinger.",
|
|
|
|
|
|
|
|
|
|
|
|
|
2975 |
"AnonymizeUserId": "Erstat bruger-ID med et pseudonym",
|
|
|
|
|
2976 |
"CurrentDBSize": "Nuværende databasestørrelse",
|
2977 |
"DBPurged": "Databasen er opryddet.",
|
|
|
2978 |
"DeleteDataInterval": "Slet gamle data hver",
|
2979 |
"DeleteOldVisitorLogs": "Slet gamle besøgslogfiler",
|
|
|
|
|
2980 |
"DeleteLogDescription2": "Når automatisk log sletning aktiveres, så sørg for, at alle tidligere daglige rapporter er blevet behandlet, således at ingen data går tabt.",
|
2981 |
"DeleteLogsOlderThan": "Slet logfiler ældre end",
|
2982 |
"DeleteMaxRows": "Maksimale antal rækker der slettes på én gang:",
|
@@ -2989,15 +3016,27 @@
|
|
2989 |
"DoNotTrack_Enable": "Aktiver spor ikke understøttelse",
|
2990 |
"DoNotTrack_Enabled": "Du respekterer beskyttelse af dine brugeres personlige oplysninger, bravo!",
|
2991 |
"DoNotTrack_EnabledMoreInfo": "Når brugere har indstillet deres browser til “jeg ønsker ikke at blive sporet” (DoNotTrack er aktiveret), vil Matomo ikke spore disse besøg.",
|
2992 |
-
"DoNotTrack_SupportDNTPreference": "Understøt spor ikke
|
2993 |
"EstimatedDBSizeAfterPurge": "Anslået database størrelse efter oprydning",
|
2994 |
"EstimatedSpaceSaved": "Anslået sparet plads",
|
2995 |
"GeolocationAnonymizeIpNote": "Bemærk: geolokalisering vil have omtrent de samme resultater med 1 byte anonymiseret. Med 2 byte eller mere, vil geolokalisering være unøjagtig.",
|
2996 |
"GDPR": "GDPR",
|
2997 |
"GdprManager": "GDPR-administration",
|
|
|
|
|
2998 |
"GdprOverview": "GDPR-overblik",
|
|
|
|
|
2999 |
"GdprTools": "GDPR-værktøjer",
|
3000 |
"GetPurgeEstimate": "Overslag på rensning",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3001 |
"KeepBasicMetrics": "Behold grundlæggende målinger (besøg, sidevisninger, afvisningsprocent, mål konverteringer, eHandel konverteringer osv.)",
|
3002 |
"KeepReportSegments": "For beholdte data ovenfor, beholdes desuden segmenterede rapporter",
|
3003 |
"LastDelete": "Sidste sletningen var d.",
|
@@ -3011,15 +3050,23 @@
|
|
3011 |
"ReportsDataSavedEstimate": "Database størrelse",
|
3012 |
"SaveSettingsBeforePurge": "Indstillinger for datasletning er ændret. Gem før oprydning.",
|
3013 |
"SeeAlsoOurOfficialGuidePrivacy": "Se også vores officielle vejledning: %1$sWeb Analytics Privacy%2$s",
|
|
|
|
|
3014 |
"TeaserHeadline": "Privatlivsindstillinger",
|
3015 |
"UseAnonymizedIpForVisitEnrichment": "Brug også anonymiserede IP-adresser ved berigelse af besøg.",
|
3016 |
"UseAnonymizeIp": "Anonymisere besøgendes IP-adresser",
|
3017 |
"UseAnonymizeTrackingData": "Anonymiser sporingsdata",
|
3018 |
"PseudonymizeUserId": "Erstat bruger-ID med et pseudonym",
|
|
|
|
|
3019 |
"UseDeleteReports": "Slet regelmæssigt gamle rapporter fra databasen",
|
|
|
3020 |
"PrivacyPolicyUrl": "Privatlivspolitik-URL",
|
3021 |
"PrivacyPolicyUrlDescription": "Link til din privatlivspolitik.",
|
3022 |
-
"
|
|
|
|
|
|
|
3023 |
},
|
3024 |
"Referrers": {
|
3025 |
"AllReferrersReportDocumentation": "Rapporten viser alle henvisninger i én samlet rapport, over alle hjemmesider, Søg i nøgleord og kampagner som bruges af de besøgende til at finde hjemmesiden.",
|
@@ -3228,7 +3275,6 @@
|
|
3228 |
"KeepURLFragmentsLong": "Behold URL-fragmenter ved sporing",
|
3229 |
"ListOfIpsToBeExcludedOnAllWebsites": "Indtast IP-adresser, som skal udelukkes fra at blive sporet på alle hjemmesider.",
|
3230 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "URL-søgeparameterne nedenfor vil blive udelukket fra URL'er på alle hjemmesider.",
|
3231 |
-
"ListOfQueryParametersToExclude": "Angiv listen af URL-parametre (én pr. linje), der skal ekskluderes fra side-URL-rapporter. Du kan bruge regulære udtryk, såsom %s.",
|
3232 |
"LogAnalytics": "Log-analyser",
|
3233 |
"LogAnalyticsDescription": "Hvis JavaScript tracking metode ikke er mulig, kan du %1$s bruge serverlog analyser %2$s som en alternativ metode til at tracke dine website-brugere.",
|
3234 |
"MainDescription": "Din hjemmesideanalyse kræver hjemmesider! Tilføj, opdater, slet hjemmesider og vis JavaScript-koden, som skal indsættes på dine sider.",
|
@@ -3544,7 +3590,8 @@
|
|
3544 |
"SuperUserIntro2": "Brug denne funktion med omtanke.",
|
3545 |
"HasSuperUserAccess": "Har superbrugeradgang",
|
3546 |
"ShowAll": "Vis alle",
|
3547 |
-
"Username": "Brugernavn"
|
|
|
3548 |
},
|
3549 |
"VisitFrequency": {
|
3550 |
"ColumnActionsByReturningVisits": "Handlinger af tilbagevendende besøg",
|
112 |
"Continue": "Fortsæt",
|
113 |
"ContinueToPiwik": "Fortsæt til Matomo",
|
114 |
"CurrentlyUsingUnsecureHttp": "Du bruger i øjeblikket Matomo gennem en usikker HTTP forbindelse. Dette gør din Matomo sårbar overfor hackere. Du kan også risikere brud på privatlivslovgivning eftersom nogle funktioner omkring cookies ikke vil fungere. Vi anbefaler at du indstiller Matomo til at benytte SSL (HTTPS) for at forbedre sikkerheden.",
|
115 |
+
"CreationDate": "Oprettelsesdato",
|
116 |
"CreatedByUser": "oprettet af %s",
|
117 |
"CurrentMonth": "Denne måned",
|
118 |
"CurrentWeek": "Nuværende uge",
|
133 |
"DaysHours": "%1$s dage %2$s timer",
|
134 |
"DaysSinceFirstVisit": "Dage siden første besøg",
|
135 |
"DaysSinceLastEcommerceOrder": "Dage siden sidste e-handel ordre",
|
136 |
+
"SecondsSinceLastEcommerceOrder": "Sekunder siden sidste e-handelsordre",
|
137 |
"DaysSinceLastVisit": "Dage siden sidste besøg",
|
138 |
+
"SecondsSinceLastVisit": "Sekunder siden sidste besøg",
|
139 |
+
"SecondsSinceFirstVisit": "Sekunder siden første besøg",
|
140 |
"Default": "Standard",
|
141 |
"DefaultAppended": "(standard)",
|
142 |
"Delete": "Slet",
|
516 |
"ClickToRemoveComp": "Klik for at fjerne denne sammenligning.",
|
517 |
"MaximumNumberOfSegmentsComparedIs": "Det maksimale antal segmenter som kan sammenlignes samtidigt er %s.",
|
518 |
"CompareDatesParamMustMatchComparePeriods": "%1$s forespørgselsparameter længde skal matche %2$s forespørgselsparameter længde.",
|
519 |
+
"MaximumNumberOfPeriodsComparedIs": "Det maksimale antal af perioder som kan sammenlignes samtidigt er %s.",
|
520 |
+
"Custom": "Brugerdefineret",
|
521 |
+
"PreviousPeriod": "Forrige periode",
|
522 |
+
"PreviousYear": "Forrige år"
|
523 |
},
|
524 |
"Mobile": {
|
525 |
"AboutPiwikMobile": "Om Matomo Mobil",
|
913 |
"ShowExportUrl": "Vis eksport URL",
|
914 |
"HideExportUrl": "Skjul eksport URL",
|
915 |
"HomeShortcut": "Hjem",
|
916 |
+
"SupportUsOn": "Støt os på",
|
917 |
"IncludeRowsWithLowPopulation": "Rækker med lav population er skjult %s Vis alle rækker",
|
918 |
"InjectedHostEmailBody": "Hej, jeg forsøgte at få adgang Matomo i dag og stødte på den ukendte værtsnavn advarsel.",
|
919 |
"InjectedHostEmailSubject": "Matomo blev åbnet fra et ukendt værtsnavn: %s",
|
926 |
"VisitTypeReturning": "Tilbagevendende",
|
927 |
"VisitTypeReturningCustomer": "Tilbagevendende kunder",
|
928 |
"MainNavigation": "Hovednavigation",
|
929 |
+
"YourDonationWillHelp": "Din støtte går direkte til at finansiere nye funktioner og forbedringer for denne open source-statistsystem. Det betyder, at brugerne altid vil have glæde af et værktøj, der respekterer privatliv og lader dig bevare kontrol over dine data.",
|
930 |
+
"ThanksFromAllOfUs": "Tak fra alle os hos Matomo!",
|
931 |
"Menu": "Menu",
|
932 |
"NoPrivilegesAskPiwikAdmin": "Du er logget på som '%1$s' men det ser ikke ud som du har adgang til Matomo. %2$s Spørg Matomo administratoren (klik for at sende e-mail)%3$s for at give dig 'se' adgang til et websted.",
|
933 |
"OnlyForSuperUserAccess": "Dette modul vises i standarddashboardet kun til brugere med superbrugeradgang.",
|
1249 |
"MobileApp": "Mobilapp",
|
1250 |
"XVisitsFromDevices": "%1$s besøg fra %2$s enheder",
|
1251 |
"WidgetBrowsers": "Besøgendes browser",
|
1252 |
+
"WidgetBrowserVersionsDocumentation": "Rapporten indeholder oplysninger om hvilken browser de besøgende bruger. Hver version er angivet særskilt."
|
1253 |
},
|
1254 |
"Diagnostics": {
|
1255 |
"ConfigFileTitle": "Konfigurationsfil",
|
1329 |
"ProfessionalServicesOfferIntro": "Hvilke ydelser kan du gøre brug af?",
|
1330 |
"ContactUs": "Kontakt os",
|
1331 |
"VisitTheForums": "Besøg %1$sforummet%2$s og få hjælp fra andre Matomo-brugere",
|
1332 |
+
"Forums": "Forum",
|
1333 |
+
"HowCanWeHelp": "Hvad kan vi hjælpe med?",
|
1334 |
+
"SearchHelpResources": "Søg i hjælpeartikler på matomo.org",
|
1335 |
+
"PopularHelpTopics": "Populære hjælpeartikler"
|
1336 |
},
|
1337 |
"GeoIp2": {
|
1338 |
"AssumingNonApache": "Kan ikke finde apache_get_modules funktion, antager ikke-Apache webserver.",
|
2869 |
"ActionInstall": "Installer",
|
2870 |
"AllowedUploadFormats": "Du kan via denne side overføre en programudvidelse eller tema i .zip-format.",
|
2871 |
"Authors": "Forfattere",
|
2872 |
+
"Browse": "Gennemse",
|
2873 |
"BackToMarketplace": "Tilbage til markedspladsen",
|
2874 |
"BrowseMarketplace": "Browse Markedsplads",
|
2875 |
"ByXDevelopers": "af %s udviklere",
|
2895 |
"PluginVersionInfo": "%1$s fra %2$s",
|
2896 |
"PluginWebsite": "Programudvidelsens hjemmeside",
|
2897 |
"Screenshots": "Skærmbilleder",
|
2898 |
+
"SortByLastUpdated": "Senest opdateret",
|
2899 |
"StepDownloadingPluginFromMarketplace": "Henter programudvidelse fra markedspladsen",
|
2900 |
"StepDownloadingThemeFromMarketplace": "Henter tema fra markedspladsen",
|
2901 |
"StepUnzippingPlugin": "Udpakker programudvidelse",
|
2985 |
"AnonymizeIpInlineHelp": "Anonymiser besøgendes IP-adresser for at efterkomme den lokale lovgivning om privatlivets fred\/retningslinjer.",
|
2986 |
"AnonymizeIpMaskLengtDescription": "Vælg hvor mange bytes af de besøgendes IP-adresser der skal maskeres.",
|
2987 |
"AnonymizeIpMaskLength": "%1$s bytes - f.eks %2$s",
|
2988 |
+
"AnonymizeReferrer": "Anonymiser henvisning",
|
2989 |
"AskingForConsent": "Samtykkeanmodning",
|
2990 |
"ClickHereSettings": "Klik her for at få adgang til %s indstillinger.",
|
2991 |
+
"WhenDoINeedConsent": "Hvornår skal jeg bede om samtykke?",
|
2992 |
+
"HowDoIAskForConsent": "Hvordan beder jeg brugerne om samtykke?",
|
2993 |
+
"HowDoIAskForConsentIntroduction": "Læs alt om at %1$sbede om samtykke til cookies og sporing i vores integrationsvejledning%2$s.",
|
2994 |
+
"AnonymizeReferrerExcludeNone": "Anonymiser ikke henvisning",
|
2995 |
+
"AnonymizeIp": "Anonymiser IP",
|
2996 |
+
"AnonymizeLocation": "Anonymiser lokation",
|
2997 |
"AnonymizeUserId": "Erstat bruger-ID med et pseudonym",
|
2998 |
+
"AwarenessDocumentation": "Opmærksomhed og dokumentation",
|
2999 |
+
"AwarenessDocumentationIntro": "Informer dine brugere klart og tydeligt, og gør dine kolleger bevidst om, hvilken data der indsamles, og hvad den bliver brugt til:",
|
3000 |
"CurrentDBSize": "Nuværende databasestørrelse",
|
3001 |
"DBPurged": "Databasen er opryddet.",
|
3002 |
+
"DeleteDataDescription": "Du kan konfigurere Matomo til regelmæssigt at slette gammel rådatat og\/eller aggregerede rapporter for at begrænse størrelsen på din database eller for at overholde privatlivslovgivning såsom GDPR.",
|
3003 |
"DeleteDataInterval": "Slet gamle data hver",
|
3004 |
"DeleteOldVisitorLogs": "Slet gamle besøgslogfiler",
|
3005 |
+
"DeleteOldRawData": "Slet regelmæssigt gammelt rådata",
|
3006 |
+
"DeleteOldAggregatedReports": "Slet gammelt aggregeret rapportdata",
|
3007 |
"DeleteLogDescription2": "Når automatisk log sletning aktiveres, så sørg for, at alle tidligere daglige rapporter er blevet behandlet, således at ingen data går tabt.",
|
3008 |
"DeleteLogsOlderThan": "Slet logfiler ældre end",
|
3009 |
"DeleteMaxRows": "Maksimale antal rækker der slettes på én gang:",
|
3016 |
"DoNotTrack_Enable": "Aktiver spor ikke understøttelse",
|
3017 |
"DoNotTrack_Enabled": "Du respekterer beskyttelse af dine brugeres personlige oplysninger, bravo!",
|
3018 |
"DoNotTrack_EnabledMoreInfo": "Når brugere har indstillet deres browser til “jeg ønsker ikke at blive sporet” (DoNotTrack er aktiveret), vil Matomo ikke spore disse besøg.",
|
3019 |
+
"DoNotTrack_SupportDNTPreference": "Understøt spor ikke-præference",
|
3020 |
"EstimatedDBSizeAfterPurge": "Anslået database størrelse efter oprydning",
|
3021 |
"EstimatedSpaceSaved": "Anslået sparet plads",
|
3022 |
"GeolocationAnonymizeIpNote": "Bemærk: geolokalisering vil have omtrent de samme resultater med 1 byte anonymiseret. Med 2 byte eller mere, vil geolokalisering være unøjagtig.",
|
3023 |
"GDPR": "GDPR",
|
3024 |
"GdprManager": "GDPR-administration",
|
3025 |
+
"GdprChecklists": "GDPR-tjeklister",
|
3026 |
+
"GdprChecklistDesc1": "Hvis du behandler persondata om EU-borgere via Matomo, selv hvis din virksomhed ligger uden for Europa, skal du leve op til kravene i GDPR, og denne vejledning vil hjælpe dig på vej.",
|
3027 |
"GdprOverview": "GDPR-overblik",
|
3028 |
+
"GdprOverviewIntro1": "Databeskyttelsesforordningen (GDPR) er et regelsæt, der styrker og standardiserer databeskyttelsen for personer i EU.",
|
3029 |
+
"GdprOverviewIntro2": "Hvis du sikrer, at Matomo ikke registrerer persondata, behøver du ikke bekymre dig om GDPR for Matomo (hvis du ikke registrerer IP-adresser, bruger-id'er, geolokaliseringsdata mv.).",
|
3030 |
"GdprTools": "GDPR-værktøjer",
|
3031 |
"GetPurgeEstimate": "Overslag på rensning",
|
3032 |
+
"IndividualsRights": "Registreredes rettigheder",
|
3033 |
+
"IndividualsRightsIntro": "Udøv dine brugeres rettigheder med vores GDPR-venlige procedurer:",
|
3034 |
+
"IndividualsRightsInform": "Ret til at blive informeret: informer dine brugere med en klar privatlivsbesked.",
|
3035 |
+
"IndividualsRightsAccess": "Ret til indsigt: %1$ssøg efter registrerede%2$s og eksporter al deres data.",
|
3036 |
+
"IndividualsRightsErasure": "Ret til sletning: %1$ssøg efter registrerede%2$s og slet deres data helt eller delvist.",
|
3037 |
+
"IndividualsRightsRectification": "Ret til berigtigelse: du kan %1$ssøge efter registrerede%2$s og slette deres data helt eller delvist.",
|
3038 |
+
"IndividualsRightsPortability": "Ret til dataportabilitet: %1$ssøg efter registrerede%2$s og eksporter al deres data.",
|
3039 |
+
"IndividualsRightsObject": "Retten til at gøre indsigelse: %1$slad dine brugere at fravælge sporing%2$s under din privatlivspolitik.",
|
3040 |
"KeepBasicMetrics": "Behold grundlæggende målinger (besøg, sidevisninger, afvisningsprocent, mål konverteringer, eHandel konverteringer osv.)",
|
3041 |
"KeepReportSegments": "For beholdte data ovenfor, beholdes desuden segmenterede rapporter",
|
3042 |
"LastDelete": "Sidste sletningen var d.",
|
3050 |
"ReportsDataSavedEstimate": "Database størrelse",
|
3051 |
"SaveSettingsBeforePurge": "Indstillinger for datasletning er ændret. Gem før oprydning.",
|
3052 |
"SeeAlsoOurOfficialGuidePrivacy": "Se også vores officielle vejledning: %1$sWeb Analytics Privacy%2$s",
|
3053 |
+
"SecurityProcedures": "Sikkerhedsprocedurer",
|
3054 |
+
"SecurityProceduresIntro": "Informer dine brugere klart og tydeligt, og gør dine kolleger bevidst om, hvilken data der indsamles, og hvad den bliver brugt til:",
|
3055 |
"TeaserHeadline": "Privatlivsindstillinger",
|
3056 |
"UseAnonymizedIpForVisitEnrichment": "Brug også anonymiserede IP-adresser ved berigelse af besøg.",
|
3057 |
"UseAnonymizeIp": "Anonymisere besøgendes IP-adresser",
|
3058 |
"UseAnonymizeTrackingData": "Anonymiser sporingsdata",
|
3059 |
"PseudonymizeUserId": "Erstat bruger-ID med et pseudonym",
|
3060 |
+
"TrackingOptOut": "Lad brugere fravælge sporing",
|
3061 |
+
"UseDeleteLog": "Sletter regelmæssigt gammelt rådata fra databasen",
|
3062 |
"UseDeleteReports": "Slet regelmæssigt gamle rapporter fra databasen",
|
3063 |
+
"UsersOptOut": "Brugerfravalg",
|
3064 |
"PrivacyPolicyUrl": "Privatlivspolitik-URL",
|
3065 |
"PrivacyPolicyUrlDescription": "Link til din privatlivspolitik.",
|
3066 |
+
"TermsAndConditionUrl": "Vilkår og betingelser-URL",
|
3067 |
+
"TermsAndConditionUrlDescription": "Link til dine vilkår og betingelser.",
|
3068 |
+
"PrivacyPolicy": "Privatlivspolitik",
|
3069 |
+
"TermsAndConditions": "Vilkår og betingelser"
|
3070 |
},
|
3071 |
"Referrers": {
|
3072 |
"AllReferrersReportDocumentation": "Rapporten viser alle henvisninger i én samlet rapport, over alle hjemmesider, Søg i nøgleord og kampagner som bruges af de besøgende til at finde hjemmesiden.",
|
3275 |
"KeepURLFragmentsLong": "Behold URL-fragmenter ved sporing",
|
3276 |
"ListOfIpsToBeExcludedOnAllWebsites": "Indtast IP-adresser, som skal udelukkes fra at blive sporet på alle hjemmesider.",
|
3277 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "URL-søgeparameterne nedenfor vil blive udelukket fra URL'er på alle hjemmesider.",
|
|
|
3278 |
"LogAnalytics": "Log-analyser",
|
3279 |
"LogAnalyticsDescription": "Hvis JavaScript tracking metode ikke er mulig, kan du %1$s bruge serverlog analyser %2$s som en alternativ metode til at tracke dine website-brugere.",
|
3280 |
"MainDescription": "Din hjemmesideanalyse kræver hjemmesider! Tilføj, opdater, slet hjemmesider og vis JavaScript-koden, som skal indsættes på dine sider.",
|
3590 |
"SuperUserIntro2": "Brug denne funktion med omtanke.",
|
3591 |
"HasSuperUserAccess": "Har superbrugeradgang",
|
3592 |
"ShowAll": "Vis alle",
|
3593 |
+
"Username": "Brugernavn",
|
3594 |
+
"NewsletterSignupTitle": "Tilmelding til nyhedsbrev"
|
3595 |
},
|
3596 |
"VisitFrequency": {
|
3597 |
"ColumnActionsByReturningVisits": "Handlinger af tilbagevendende besøg",
|
app/lang/de.json
CHANGED
@@ -1359,7 +1359,7 @@
|
|
1359 |
"XVisitsFromDevices": "%1$s Besuche von %2$s Geräten",
|
1360 |
"Wearable": "Tragbare Geräte",
|
1361 |
"WidgetBrowsers": "Besucher-Browser",
|
1362 |
-
"
|
1363 |
},
|
1364 |
"Diagnostics": {
|
1365 |
"ConfigFileTitle": "Konfigurationsdatei",
|
@@ -3732,7 +3732,6 @@
|
|
3732 |
"KeepURLFragmentsLong": "URL Fragmente beim Tracking behalten",
|
3733 |
"ListOfIpsToBeExcludedOnAllWebsites": "Die untenstehenden IPs werden auf allen Websites ignoriert.",
|
3734 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Die untenstehenden GET-Parameter werden von allen URLs aller Websites ignoriert.",
|
3735 |
-
"ListOfQueryParametersToExclude": "Geben Sie die Liste der URL Query Parameter an, einen pro Zeile, um sie von der URL Berichtsseite auszuschließen. Reguläre Ausdrücke so wie %s werden unterstützt.",
|
3736 |
"LogAnalytics": "Log-Analyse",
|
3737 |
"LogAnalyticsDescription": "Wenn das Tracking per Javascript nicht möglich ist, können Sie %1$sServer Log Analytics %2$s als alternative Methode einsetzen, um die Besucher Ihrer Webseite zu analysieren.",
|
3738 |
"MainDescription": "Ihre Webanalyse benötigt Websites! Websites können hinzugefügt, aktualisiert und gelöscht werden. Hier wird auch der JavaScript-Code gezeigt, der in Ihre Websites eingefügt werden muss.",
|
1359 |
"XVisitsFromDevices": "%1$s Besuche von %2$s Geräten",
|
1360 |
"Wearable": "Tragbare Geräte",
|
1361 |
"WidgetBrowsers": "Besucher-Browser",
|
1362 |
+
"WidgetBrowserVersionsDocumentation": "Dieser Bericht enthält Informationen über die Browser Ihrer Besucher. Jede Version eines Browsers wird separat aufgelistet."
|
1363 |
},
|
1364 |
"Diagnostics": {
|
1365 |
"ConfigFileTitle": "Konfigurationsdatei",
|
3732 |
"KeepURLFragmentsLong": "URL Fragmente beim Tracking behalten",
|
3733 |
"ListOfIpsToBeExcludedOnAllWebsites": "Die untenstehenden IPs werden auf allen Websites ignoriert.",
|
3734 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Die untenstehenden GET-Parameter werden von allen URLs aller Websites ignoriert.",
|
|
|
3735 |
"LogAnalytics": "Log-Analyse",
|
3736 |
"LogAnalyticsDescription": "Wenn das Tracking per Javascript nicht möglich ist, können Sie %1$sServer Log Analytics %2$s als alternative Methode einsetzen, um die Besucher Ihrer Webseite zu analysieren.",
|
3737 |
"MainDescription": "Ihre Webanalyse benötigt Websites! Websites können hinzugefügt, aktualisiert und gelöscht werden. Hier wird auch der JavaScript-Code gezeigt, der in Ihre Websites eingefügt werden muss.",
|
app/lang/el.json
CHANGED
@@ -32,6 +32,7 @@
|
|
32 |
"ChooseLanguage": "Επιλογή γλώσσας",
|
33 |
"ChoosePeriod": "Επιλογή περιόδου",
|
34 |
"ClickHere": "Πατήστε εδώ για περισσότερες πληροφορίες.",
|
|
|
35 |
"DoubleClickToChangePeriod": "Κάντε διπλό κλικ για εφαρμογή της περιόδου.",
|
36 |
"Close": "Κλείσιμο",
|
37 |
"ClickToSearch": "Κάντε κλικ για αναζήτηση",
|
@@ -627,6 +628,7 @@
|
|
627 |
"UserAuthentication": "Πιστοποίηση χρήστη",
|
628 |
"UsingTokenAuth": "Αν θέλετε να %1$s ζητήσετε δεδομένα από ένα σενάριο, μια εργασία crontab, κτλ. %2$s χρειάζεται να προσθέσετε την παράμετρο %3$s στα URLs των κλήσεων API που απαιτούν αυθεντικοποίηση.",
|
629 |
"Glossary": "Γλωσσάρι",
|
|
|
630 |
"LearnAboutCommonlyUsedTerms2": "Μάθετε σχετικά με τους συχνότερα χρησιμοποιούμενους όρους για να εκμεταλλευτείτε στο έπακρον το Matomo Analytics.",
|
631 |
"EvolutionMetricName": "%s Πρόοδος"
|
632 |
},
|
@@ -672,6 +674,7 @@
|
|
672 |
"ExitPagesReportDocumentation": "Η αναφορά περιέχει πληροφορίες για τις σελίδες εξόδου σε συγκεκριμένη χρονική περίοδο. Μια σελίδα εξόδου είναι η τελευταία σελίδα που βλέπει ένας χρήστης κατά την επίσκεψή του. %s Παρακάτω εμφανίζονται με δομή φακέλων οι διευθύνσεις URL εξόδου.",
|
673 |
"ExitPageTitles": "Τίτλοι σελίδας εξόδου",
|
674 |
"ExitPageTitlesReportDocumentation": "Αυτή η αναφορά περιέχει πληφορορίες για τους τίτλους των σελίδων εξόδου που συνέβησαν κατά την ορισμένη περίοδο.",
|
|
|
675 |
"OneSearch": "1 αναζήτηση",
|
676 |
"OutlinkDocumentation": "Ένας εξωτερικός σύνδεσμος είναι ένας σύνδεσμος που οδηγεί τον επισκέπτη εκτός της ιστοσελίδας (σε άλλη).",
|
677 |
"OutlinksReportDocumentation": "Αυτή η αναφορά δείχνει μια ιεραρχημένη λίστα με εξωτερικούς συνδέσμους διευθύνσεων ιστοσελίδων που πατήθηκαν από τους επισκέπτες σας.",
|
@@ -740,8 +743,10 @@
|
|
740 |
"ContentInteractions": "Αλληλεπιδράσεις σε Περιεχόμενο",
|
741 |
"InteractionRate": "Ρυθμός αλληλεπίδρασης",
|
742 |
"ContentName": "Όνομα Περιεχομένου",
|
|
|
743 |
"ContentNames": "Ονόματα περιεχομένου",
|
744 |
"ContentPiece": "Κομμάτι Περιεχομένου",
|
|
|
745 |
"ContentPieces": "Τεμάχια περιεχομένου",
|
746 |
"ContentTarget": "Στόχος Περιεχομένου",
|
747 |
"ContentTargets": "Στόχοι περιεχομένου",
|
@@ -1042,6 +1047,7 @@
|
|
1042 |
"MissingRequirementsNotice": "Παρακαλούμε αναβαθμίστε το %1$s %2$s σε νεότερη έκδοση, απαιτείται το %1$s %3$s.",
|
1043 |
"MissingRequirementsPleaseInstallNotice": "Παρακαλούμε εγκαταστήστε τα %1$s %2$s καθώς απαιτούνται από το %3$s.",
|
1044 |
"NoZipFileSelected": "Επιλέξτε ένα αρχείο ZIP.",
|
|
|
1045 |
"NumUpdatesAvailable": "%s διαθέσιμες ενημερώσεις",
|
1046 |
"NoPluginSettings": "Δεν υπάρχουν ρυθμίσεις που μπορούν να παραμετροποιηθούν",
|
1047 |
"Origin": "Προέλευση",
|
@@ -1329,18 +1335,23 @@
|
|
1329 |
"Device": "Συσκευή",
|
1330 |
"DeviceBrand": "Μάρκα συσκευής",
|
1331 |
"DeviceBrands": "Μάρκες συσκευής",
|
|
|
1332 |
"DeviceDetection": "Εντοπισμός συσκευής",
|
1333 |
"DeviceModel": "Μοντέλο συσκευής",
|
1334 |
"DeviceModels": "Μοντέλα συσκευής",
|
|
|
1335 |
"DevicesDetection": "Συσκευές επισκεπτών",
|
1336 |
"DeviceType": "Τύπος συσκευής",
|
1337 |
"DeviceTypes": "Τύποι συσκευής",
|
|
|
1338 |
"FeaturePhone": "Τηλέφωνο",
|
1339 |
"OperatingSystemFamilies": "Οικογένειες Λειτουργικών Συστημάτων",
|
1340 |
"OperatingSystemFamily": "Οικογένεια Λειτουργικού Συστήματος",
|
|
|
1341 |
"OperatingSystemCode": "Κωδικός λειτουργικού συστήματος",
|
1342 |
"OperatingSystems": "Λειτουργικά συστήματα",
|
1343 |
"OperatingSystemVersions": "Εκδόσεις Λειτουργικών Συστημάτων",
|
|
|
1344 |
"PluginDescription": "Παρέχει εκτεταμένες πληροφορίες σχετικά με τις συσκευές χρήστη, όπως Μάρκα (κατασκευαστής), Μοντέλο (έκδοση συσκευής), τύπος συσκευής (τηλεόραση, κονσόλες, έξυπνα τηλέφωνα, υπολογιστές, κτλ.) και περισσότερα.",
|
1345 |
"SmartDisplay": "Έξυπνη οθόνη",
|
1346 |
"Smartphone": "Έξυπνο κινητό",
|
@@ -1362,7 +1373,8 @@
|
|
1362 |
"XVisitsFromDevices": "%1$s επισκέψεις από %2$s συσκευές",
|
1363 |
"Wearable": "Φορέσιμος",
|
1364 |
"WidgetBrowsers": "Φυλλομετρητές επισκεπτών",
|
1365 |
-
"WidgetBrowsersDocumentation": "Αυτή η αναφορά περιέχει πληροφορίες για το φυλλομετρητή που χρησιμοποιούσαν οι επισκέπτες.
|
|
|
1366 |
},
|
1367 |
"Diagnostics": {
|
1368 |
"ConfigFileTitle": "Αρχείο ρυθμίσεων",
|
@@ -1416,10 +1428,13 @@
|
|
1416 |
"Event": "Γεγονός",
|
1417 |
"EventAction": "Ενέργεια Συμβάντος",
|
1418 |
"EventActions": "Ενέργειες Συμβάντος",
|
|
|
1419 |
"EventCategories": "Κατηγορίες Συμβάντος",
|
|
|
1420 |
"EventCategory": "Κατηγορία Συμβάντος",
|
1421 |
"EventName": "Όνομα Συμβάντος",
|
1422 |
"EventNames": "Ονόματα Συμβάντος",
|
|
|
1423 |
"EventUrl": "URL συμβάντος",
|
1424 |
"EventUrls": "URL συμβάντων",
|
1425 |
"Events": "Συμβάντα",
|
@@ -1584,6 +1599,7 @@
|
|
1584 |
"ConversionsOverview": "Επισκόπηση μετατροπών",
|
1585 |
"ConversionsOverviewBy": "Επισκόπηση μετατροπών ανά τμήμα",
|
1586 |
"DaysToConv": "Ημέρες για Μετατροπή",
|
|
|
1587 |
"Details": "Λεπτομέρειες στόχου",
|
1588 |
"DefaultGoalConvertedOncePerVisit": "(προεπιλογή) Ο Στόχος μετατρέπεται μόνο μια φορά την ημέρα",
|
1589 |
"DefaultRevenueLabel": "Προεπιλεγμένο κέρδος στόχου",
|
@@ -1651,6 +1667,7 @@
|
|
1651 |
"GoalsAdjective": "Στόχοι %s",
|
1652 |
"VisitPageTitle": "Επίσκεψη σε έναν Δοθέν Τίτλο Σελίδας",
|
1653 |
"VisitsUntilConv": "Επισκέψεις για Μετατροπή",
|
|
|
1654 |
"VisitUrl": "Επίσκεψη σε μια δοθείσα διεύθυνση URL (σελίδα ή ομάδα σελίδων)",
|
1655 |
"VisitDurationMatchAttr": "Παραμονή για ένα δεδομένο χρονικό διάστημα",
|
1656 |
"VisitDuration": "η διάρκεια παραμονής είναι",
|
@@ -1664,7 +1681,8 @@
|
|
1664 |
"EventValueAsRevenueHelp2": "Σημείωση: Αν ορίζονται και το προκαθορισμένο κέρδος στόχου και η τιμή συμβάντος, θα χρησιμοποιηθεί η τιμή συμβάντος. Αν η επιλογή είναι ενεργή και δεν αποστέλλεται τιμή συμβάντος σε μια αίτηση, θα χρησιμοποιηθεί το προκαθορισμένο κέρδος (αν έχει οριστεί).",
|
1665 |
"AtLeastMinutes": "τουλάχιστον %1$s λεπτά. Χρησιμοποιήστε δεκαδικά για δευτερόλεπτα, για παράδειγμα, %2$s για 30 δευτερόλεπτα.",
|
1666 |
"TimeInMinutes": "Χρόνος σε Λεπτά",
|
1667 |
-
"ClickToViewThisGoal": "Πατήστε για να δείτε τον στόχο."
|
|
|
1668 |
},
|
1669 |
"ImageGraph": {
|
1670 |
"ColumnOrdinateMissing": "Η στήλη '%1$s' δεν βρέθηκε στην αναφορά. Δοκιμάστε οποιαδήποτε από τις %2$s",
|
@@ -3266,7 +3284,9 @@
|
|
3266 |
"Evolution": "Πρόοδος",
|
3267 |
"LoadingWebsites": "Γίνεται φόρτωση των ιστοτόπων",
|
3268 |
"PluginDescription": "Δείτε και συγκρίνετε όλους τους ιστοτόπους σας και τις εφαρμογές σας σε αυτό τον χρήσιμο πίνακα 'Όλοι οι Ιστοτόποι'.",
|
3269 |
-
"TopLinkTooltip": "Σύγκριση στατιστικών Ιστού για όλες τις ιστοσελίδες σας."
|
|
|
|
|
3270 |
},
|
3271 |
"Overlay": {
|
3272 |
"Clicks": "%s πατήματα",
|
@@ -3461,6 +3481,8 @@
|
|
3461 |
"UseDeleteLog": "Τακτική διαγραφή παλιών ανεπεξέργαστων δεδομένων από τη βάση δεδομένων",
|
3462 |
"UseDeleteReports": "Τακτική διαγραφή παλαιών αναφορών από τη βάση δεδομένων",
|
3463 |
"UsersOptOut": "Opt-out χρηστών",
|
|
|
|
|
3464 |
"PrivacyPolicyUrl": "Διεύθυνση URL Πολιτικής Ιδιωτικότητας",
|
3465 |
"PrivacyPolicyUrlDescription": "Ένας σύνδεσμος για την σελίδα Πολιτικής Ιδιωτικότητας.",
|
3466 |
"TermsAndConditionUrl": "Διεύθυνση URL Όρων Χρήσης",
|
@@ -3468,6 +3490,7 @@
|
|
3468 |
"PrivacyPolicyUrlDescriptionSuffix": "Αν το ορίσετε, θα εμφανίζεται στο κάτω μέρος της σελίδας εισόδου χρήστη και στις σελίδες που ο χρήστης '%1$s' έχει πρόσβαση.",
|
3469 |
"ShowInEmbeddedWidgets": "Εμφάνιση στα ενσωματωμένα γραφικά συστατικά",
|
3470 |
"ShowInEmbeddedWidgetsDescription": "Αν είναι τσεκαρισμένο, θα εμφανίζεται ένας σύνδεσμος για την Πολιτική Ιδιωτικότητας και Όρων Χρήσης στο κάτω μέρος των ενσωματωμένων γραφικών συστατικών.",
|
|
|
3471 |
"PrivacyPolicy": "Πολιτική Ιδιωτικότητας",
|
3472 |
"TermsAndConditions": "Όροι Χρήσης"
|
3473 |
},
|
@@ -3516,6 +3539,7 @@
|
|
3516 |
"ReferrerNames": "Ονόματα αναφορών",
|
3517 |
"Referrers": "Παραπομπείς",
|
3518 |
"ReferrersOverview": "Επισκόπηση Παραπομπών",
|
|
|
3519 |
"ReferrerTypes": "Τύποι Καναλιών",
|
3520 |
"ReferrerURLs": "URL παραπομπών",
|
3521 |
"SearchEngines": "Μηχανές αναζήτησης",
|
@@ -3563,7 +3587,8 @@
|
|
3563 |
"Resolutions": "Αναλύσεις οθόνης",
|
3564 |
"WidgetGlobalVisitors": "Γενικές ρυθμίσεις χρηστών",
|
3565 |
"WidgetGlobalVisitorsDocumentation": "Αυτή η αναφορά δείχνει τις πιο συχνές καθολικές ρυθμίσεις που έχουν οι επισκέπτες σας. Μια ρύθμιση είναι ο συνδυασμός του λειτουργικού συστήματος, του τύπου φυλλομετρητή και της ανάλυσης οθόνης.",
|
3566 |
-
"WidgetResolutions": "Αναλύσεις οθόνης"
|
|
|
3567 |
},
|
3568 |
"SEO": {
|
3569 |
"PluginDescription": "Το πρόσθετο εξάγει και εμφανίζει μετρικές SEO: ταξινόμηση ιστού από το Alexa, Google Pagerank, αριθμός σελίδων στο ευρετήριο και σύνδεσμοι του επιλεγμένου ιστοτόπου.",
|
@@ -3725,6 +3750,7 @@
|
|
3725 |
"Format_Utc": "UTC%s",
|
3726 |
"GlobalExcludedUserAgentHelp1": "Εισάγετε τον κατάλογο των user agents που δεν θα παρακολουθούνται από το Matomo.",
|
3727 |
"GlobalExcludedUserAgentHelp2": "Μπορείτε να το χρησιμοποιήσετε για να αποκλείσετε κάποια bots από την παρακολούθηση.",
|
|
|
3728 |
"GlobalListExcludedIps": "Γενικός κατάλογος Αποκλεισμένων Διευθύνσεων IP",
|
3729 |
"GlobalListExcludedQueryParameters": "Καθολικός κατάλογος από παραμέτρους Ερωτήματος URL για αποκλεισμό",
|
3730 |
"GlobalListExcludedUserAgents": "Καθολική λίστα πελατών χρήστη για αποκλεισμό",
|
@@ -3743,7 +3769,7 @@
|
|
3743 |
"KeepURLFragmentsLong": "Κρατήστε Τμήματα του URL της σελίδας κατά την παρακολούθηση διευθύνσεων URL Σελίδων",
|
3744 |
"ListOfIpsToBeExcludedOnAllWebsites": "Οι παρακάτω διευθύνσεις IP θα αποκλειστούν από την ανίχνευση σε όλες τις ιστοσελίδες.",
|
3745 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Οι παράμετροι Ερωτήματος URLs παρακάτω θα αποκλειστούν από URLs σε όλες τις ιστοσελίδες.",
|
3746 |
-
"ListOfQueryParametersToExclude": "Εισάγετε τη λίστα
|
3747 |
"LogAnalytics": "Ημερολόγιο Αναλυτικών",
|
3748 |
"LogAnalyticsDescription": "Αν η μέθοδος με Javascript δεν είναι δυνατή, μπορείτε να %1$sχρησιμοποιήσετε το ημερολόγιο αναλυτικών του διακομιστή%2$s ως εναλλακτική μέθοδο για την παρακολούθηση των χρηστών του ιστοτόπου σας.",
|
3749 |
"MainDescription": "Το σύστημα αναλυτικών αναφορών χρειάζεται ιστοσελίδες! Προσθέστε, ενημερώστε, διαγράψτε ιστοσελίδες και εμφανίστε τον κώδικα Javascript που θα εισαχθεί στις ιστοσελίδες σας.",
|
@@ -4559,6 +4585,7 @@
|
|
4559 |
"UserId": {
|
4560 |
"UserId": "Αναγνωριστικό χρήστη",
|
4561 |
"UserReportTitle": "Αναγνωριστικά χρηστών",
|
|
|
4562 |
"PluginDescription": "Εμφανίζει τις αναφορές χρηστών"
|
4563 |
},
|
4564 |
"UserLanguage": {
|
@@ -4788,7 +4815,8 @@
|
|
4788 |
"ReturnVisits": "επιστρεφόμενες επισκέψεις",
|
4789 |
"SubmenuFrequency": "Συχνότητα",
|
4790 |
"WidgetGraphReturning": "Γράφημα επιστρεφόμενων επισκέψεων",
|
4791 |
-
"WidgetOverview": "Επισκόπηση συχνότητας"
|
|
|
4792 |
},
|
4793 |
"VisitTime": {
|
4794 |
"ColumnLocalTime": "Τοπική ώρα",
|
@@ -4868,6 +4896,7 @@
|
|
4868 |
"PluginDescription": "Αναφέρει γενικές μετρικές αναλυτικών: επισκέψεις, μοναδικοί επισκέπτες, αριθμός ενεργειών, ρυθμός αναπήδησης, κτλ.",
|
4869 |
"VisitsSummary": "Περίληψη επισκέψεων",
|
4870 |
"VisitsSummaryDocumentation": "Αυτή είναι μια επισκόπηση της εξέλιξης των επισκέψεων.",
|
|
|
4871 |
"WidgetLastVisits": "Διάγραμμα τελευταίων επισκέψεων",
|
4872 |
"WidgetOverviewGraph": "Επισκόπηση με διάγραμμα",
|
4873 |
"WidgetVisits": "Επισκόπηση επισκέψεων"
|
32 |
"ChooseLanguage": "Επιλογή γλώσσας",
|
33 |
"ChoosePeriod": "Επιλογή περιόδου",
|
34 |
"ClickHere": "Πατήστε εδώ για περισσότερες πληροφορίες.",
|
35 |
+
"CompareTo": "Σύγκριση με:",
|
36 |
"DoubleClickToChangePeriod": "Κάντε διπλό κλικ για εφαρμογή της περιόδου.",
|
37 |
"Close": "Κλείσιμο",
|
38 |
"ClickToSearch": "Κάντε κλικ για αναζήτηση",
|
628 |
"UserAuthentication": "Πιστοποίηση χρήστη",
|
629 |
"UsingTokenAuth": "Αν θέλετε να %1$s ζητήσετε δεδομένα από ένα σενάριο, μια εργασία crontab, κτλ. %2$s χρειάζεται να προσθέσετε την παράμετρο %3$s στα URLs των κλήσεων API που απαιτούν αυθεντικοποίηση.",
|
630 |
"Glossary": "Γλωσσάρι",
|
631 |
+
"MainMetricsReportDocumentation": "Αυτή η αναφορά δείχνει μια σύνοψη γύρω από τις σημαντικότερες μετρικές σε όλες τις κατηγορίες και πρόσθετα.",
|
632 |
"LearnAboutCommonlyUsedTerms2": "Μάθετε σχετικά με τους συχνότερα χρησιμοποιούμενους όρους για να εκμεταλλευτείτε στο έπακρον το Matomo Analytics.",
|
633 |
"EvolutionMetricName": "%s Πρόοδος"
|
634 |
},
|
674 |
"ExitPagesReportDocumentation": "Η αναφορά περιέχει πληροφορίες για τις σελίδες εξόδου σε συγκεκριμένη χρονική περίοδο. Μια σελίδα εξόδου είναι η τελευταία σελίδα που βλέπει ένας χρήστης κατά την επίσκεψή του. %s Παρακάτω εμφανίζονται με δομή φακέλων οι διευθύνσεις URL εξόδου.",
|
675 |
"ExitPageTitles": "Τίτλοι σελίδας εξόδου",
|
676 |
"ExitPageTitlesReportDocumentation": "Αυτή η αναφορά περιέχει πληφορορίες για τους τίτλους των σελίδων εξόδου που συνέβησαν κατά την ορισμένη περίοδο.",
|
677 |
+
"MainMetricsReportDocumentation": "Αυτή η αναφορά δείχνει μια βασική σύνοψη των ενεργειών που οι επισκέπτες σας προέβησαν στον ιστοτόπο σας.",
|
678 |
"OneSearch": "1 αναζήτηση",
|
679 |
"OutlinkDocumentation": "Ένας εξωτερικός σύνδεσμος είναι ένας σύνδεσμος που οδηγεί τον επισκέπτη εκτός της ιστοσελίδας (σε άλλη).",
|
680 |
"OutlinksReportDocumentation": "Αυτή η αναφορά δείχνει μια ιεραρχημένη λίστα με εξωτερικούς συνδέσμους διευθύνσεων ιστοσελίδων που πατήθηκαν από τους επισκέπτες σας.",
|
743 |
"ContentInteractions": "Αλληλεπιδράσεις σε Περιεχόμενο",
|
744 |
"InteractionRate": "Ρυθμός αλληλεπίδρασης",
|
745 |
"ContentName": "Όνομα Περιεχομένου",
|
746 |
+
"ContentNameReportDocumentation": "Αυτή η αναφορά δείχνει τα ονόματα του περιεχομένου που είδαν οι επισκέπτες σας και αλληλεπίδρασαν με αυτά.",
|
747 |
"ContentNames": "Ονόματα περιεχομένου",
|
748 |
"ContentPiece": "Κομμάτι Περιεχομένου",
|
749 |
+
"ContentPieceReportDocumentation": "Αυτή η αναφορά δείχνει τα τμήματα του περιεχομένου που είδαν οι επισκέπτες σας και αλληλεπίδρασαν με αυτά.",
|
750 |
"ContentPieces": "Τεμάχια περιεχομένου",
|
751 |
"ContentTarget": "Στόχος Περιεχομένου",
|
752 |
"ContentTargets": "Στόχοι περιεχομένου",
|
1047 |
"MissingRequirementsNotice": "Παρακαλούμε αναβαθμίστε το %1$s %2$s σε νεότερη έκδοση, απαιτείται το %1$s %3$s.",
|
1048 |
"MissingRequirementsPleaseInstallNotice": "Παρακαλούμε εγκαταστήστε τα %1$s %2$s καθώς απαιτούνται από το %3$s.",
|
1049 |
"NoZipFileSelected": "Επιλέξτε ένα αρχείο ZIP.",
|
1050 |
+
"FileExceedsUploadLimit": "Το επιλεγμένο αρχείο υπερβαίνει το όριο του διακομιστή σας.",
|
1051 |
"NumUpdatesAvailable": "%s διαθέσιμες ενημερώσεις",
|
1052 |
"NoPluginSettings": "Δεν υπάρχουν ρυθμίσεις που μπορούν να παραμετροποιηθούν",
|
1053 |
"Origin": "Προέλευση",
|
1335 |
"Device": "Συσκευή",
|
1336 |
"DeviceBrand": "Μάρκα συσκευής",
|
1337 |
"DeviceBrands": "Μάρκες συσκευής",
|
1338 |
+
"DeviceBrandReportDocumentation": "Αυτή η αναφορά δείχνει τις μάρκες \/ κατασκευαστές των συσκευών που οι επισκέπτες σας χρησιμοποιούν. Στις περισσότερες περιπτώσεις, η πληροφορία είναι διαθέσιμη μόνο για μη επιτραπέζιες συσκευές.",
|
1339 |
"DeviceDetection": "Εντοπισμός συσκευής",
|
1340 |
"DeviceModel": "Μοντέλο συσκευής",
|
1341 |
"DeviceModels": "Μοντέλα συσκευής",
|
1342 |
+
"DeviceModelReportDocumentation": "Αυτή η αναφορά δείχνει τις συσκευές που χρησιμοποιούν οι επισκέπτες σας. Κάθε μοντέλο συνδυάζεται με την μάρκα της συσκευής, καθώς ορισμένα ονόματα μοντέλων χρησιμοποιούνται από διαφορετικές μάρκες.",
|
1343 |
"DevicesDetection": "Συσκευές επισκεπτών",
|
1344 |
"DeviceType": "Τύπος συσκευής",
|
1345 |
"DeviceTypes": "Τύποι συσκευής",
|
1346 |
+
"DeviceTypeReportDocumentation": "Αυτή η αναφορά δείχνει τους τύπους συσκευών που χρησιμοποιούν οι επισκέπτες σας. Η αναφορά θα δείχνει όλους τους τύπους συσκευών που μπορεί το Matomo να εντοπίζει, ακόμη και αν δεν υπήρχαν επισκέψεις για ένα συγκεκριμένο τύπο.",
|
1347 |
"FeaturePhone": "Τηλέφωνο",
|
1348 |
"OperatingSystemFamilies": "Οικογένειες Λειτουργικών Συστημάτων",
|
1349 |
"OperatingSystemFamily": "Οικογένεια Λειτουργικού Συστήματος",
|
1350 |
+
"OperatingSystemFamiliesReportDocumentation": "Αυτή η αναφορά δείχνει τα λειτουργικά συστήματα που χρησιμοποιούν οι επισκέπτες σας, ομαδοποιημένα ανά οικογένεια λειτουργικών συστημάτων. Μια οικογένεια λειτουργικού συστήματος αποτελείται από διαφορετικές εκδόσεις ή διανομές.",
|
1351 |
"OperatingSystemCode": "Κωδικός λειτουργικού συστήματος",
|
1352 |
"OperatingSystems": "Λειτουργικά συστήματα",
|
1353 |
"OperatingSystemVersions": "Εκδόσεις Λειτουργικών Συστημάτων",
|
1354 |
+
"OperatingSystemVersionsReportDocumentation": "Αυτή η αναφορά δείχνει τα λειτουργικά συστήματα που χρησιμοποιούν οι επισκέπτες σας. Κάθε έκδοση και κατανομή εμφανίζεται ξεχωριστά.",
|
1355 |
"PluginDescription": "Παρέχει εκτεταμένες πληροφορίες σχετικά με τις συσκευές χρήστη, όπως Μάρκα (κατασκευαστής), Μοντέλο (έκδοση συσκευής), τύπος συσκευής (τηλεόραση, κονσόλες, έξυπνα τηλέφωνα, υπολογιστές, κτλ.) και περισσότερα.",
|
1356 |
"SmartDisplay": "Έξυπνη οθόνη",
|
1357 |
"Smartphone": "Έξυπνο κινητό",
|
1373 |
"XVisitsFromDevices": "%1$s επισκέψεις από %2$s συσκευές",
|
1374 |
"Wearable": "Φορέσιμος",
|
1375 |
"WidgetBrowsers": "Φυλλομετρητές επισκεπτών",
|
1376 |
+
"WidgetBrowsersDocumentation": "Αυτή η αναφορά περιέχει πληροφορίες για το είδος του φυλλομετρητή που χρησιμοποιούσαν οι επισκέπτες.",
|
1377 |
+
"WidgetBrowserVersionsDocumentation": "Αυτή η αναφορά περιέχει πληροφορίες για το φυλλομετρητή που χρησιμοποιούσαν οι επισκέπτες. Κάθε έκδοση φυλλομετρητή κατατάσσεται ξεχωριστά."
|
1378 |
},
|
1379 |
"Diagnostics": {
|
1380 |
"ConfigFileTitle": "Αρχείο ρυθμίσεων",
|
1428 |
"Event": "Γεγονός",
|
1429 |
"EventAction": "Ενέργεια Συμβάντος",
|
1430 |
"EventActions": "Ενέργειες Συμβάντος",
|
1431 |
+
"EventActionsReportDocumentation": "Αυτή η αναφορά δείχνει τον αριθμό των φορών που συνέβη κάθε ενέργεια συμβάντος. Μπορείτε να δείτε τις ενέργειες και ονόματα συμβάντων που ιχνηλατήθηκαν μαζί με κάθε ενέργεια συμβάντος σε κάθε υποπίνακα του πίνακα. Μπορείτε να αλλάξετε το τι εμφανίζεται αλλάζοντας την δευτερεύουσα διάσταση με τον σύνδεσμο στο κάτω μέρος της αναφοράς.",
|
1432 |
"EventCategories": "Κατηγορίες Συμβάντος",
|
1433 |
+
"EventCategoriesReportDocumentation": "Αυτή η αναφορά δείχνει τις κατηγορίες κάθε ιχνηλατούμενου συμβάντος και πόσες φορές αυτό συνέβη. Μπορείτε να δείτε τις ενέργειες και ονόματα συμβάντων που ιχνηλατήθηκαν μαζί με κάθε κατηγορία συμβάντος σε κάθε υποπίνακα του πίνακα. Μπορείτε να αλλάξετε το τι εμφανίζεται αλλάζοντας την δευτερεύουσα διάσταση με τον σύνδεσμο στο κάτω μέρος της αναφοράς.",
|
1434 |
"EventCategory": "Κατηγορία Συμβάντος",
|
1435 |
"EventName": "Όνομα Συμβάντος",
|
1436 |
"EventNames": "Ονόματα Συμβάντος",
|
1437 |
+
"EventNamesReportDocumentation": "Αυτή η αναφορά δείχνει τα συσχετισμένα ονόματα με κάθε ιχνηλατούμενο συμβάν και πόσες φορές αυτά συνέβησαν. Μπορείτε να δείτε τις ενέργειες συμβάντος και τις κατηγορίες που ιχνηλατήθηκαν μαζί με κάθε όνομα συμβάντος σε κάθε υποπίνακα του πίνακα. Μπορείτε να αλλάξετε το τι εμφανίζεται αλλάζοντας την δευτερεύουσα διάσταση με τον σύνδεσμο στο κάτω μέρος της αναφοράς.",
|
1438 |
"EventUrl": "URL συμβάντος",
|
1439 |
"EventUrls": "URL συμβάντων",
|
1440 |
"Events": "Συμβάντα",
|
1599 |
"ConversionsOverview": "Επισκόπηση μετατροπών",
|
1600 |
"ConversionsOverviewBy": "Επισκόπηση μετατροπών ανά τμήμα",
|
1601 |
"DaysToConv": "Ημέρες για Μετατροπή",
|
1602 |
+
"DaysToConvReportDocumentation": "Αυτή η αναφορά δείχνει πόσες ημέρες πέρασαν προτού οι επισκέπτες σας μετατρέψουν ένα στόχο.",
|
1603 |
"Details": "Λεπτομέρειες στόχου",
|
1604 |
"DefaultGoalConvertedOncePerVisit": "(προεπιλογή) Ο Στόχος μετατρέπεται μόνο μια φορά την ημέρα",
|
1605 |
"DefaultRevenueLabel": "Προεπιλεγμένο κέρδος στόχου",
|
1667 |
"GoalsAdjective": "Στόχοι %s",
|
1668 |
"VisitPageTitle": "Επίσκεψη σε έναν Δοθέν Τίτλο Σελίδας",
|
1669 |
"VisitsUntilConv": "Επισκέψεις για Μετατροπή",
|
1670 |
+
"VisitsUntilConvReportDocumentation": "Αυτή η αναφορά δείχνει τον αριθμό των επισκέψεων που έκανε κάποιος επισκέπτης πριν την μετατροπή ενός στόχου.",
|
1671 |
"VisitUrl": "Επίσκεψη σε μια δοθείσα διεύθυνση URL (σελίδα ή ομάδα σελίδων)",
|
1672 |
"VisitDurationMatchAttr": "Παραμονή για ένα δεδομένο χρονικό διάστημα",
|
1673 |
"VisitDuration": "η διάρκεια παραμονής είναι",
|
1681 |
"EventValueAsRevenueHelp2": "Σημείωση: Αν ορίζονται και το προκαθορισμένο κέρδος στόχου και η τιμή συμβάντος, θα χρησιμοποιηθεί η τιμή συμβάντος. Αν η επιλογή είναι ενεργή και δεν αποστέλλεται τιμή συμβάντος σε μια αίτηση, θα χρησιμοποιηθεί το προκαθορισμένο κέρδος (αν έχει οριστεί).",
|
1682 |
"AtLeastMinutes": "τουλάχιστον %1$s λεπτά. Χρησιμοποιήστε δεκαδικά για δευτερόλεπτα, για παράδειγμα, %2$s για 30 δευτερόλεπτα.",
|
1683 |
"TimeInMinutes": "Χρόνος σε Λεπτά",
|
1684 |
+
"ClickToViewThisGoal": "Πατήστε για να δείτε τον στόχο.",
|
1685 |
+
"OverviewReportDocumentation": "Αυτή η αναφορά δείχνει μια σύνοψη του πόσο καλά οι επισκέπτες μετατρέπουν ένα στόχο."
|
1686 |
},
|
1687 |
"ImageGraph": {
|
1688 |
"ColumnOrdinateMissing": "Η στήλη '%1$s' δεν βρέθηκε στην αναφορά. Δοκιμάστε οποιαδήποτε από τις %2$s",
|
3284 |
"Evolution": "Πρόοδος",
|
3285 |
"LoadingWebsites": "Γίνεται φόρτωση των ιστοτόπων",
|
3286 |
"PluginDescription": "Δείτε και συγκρίνετε όλους τους ιστοτόπους σας και τις εφαρμογές σας σε αυτό τον χρήσιμο πίνακα 'Όλοι οι Ιστοτόποι'.",
|
3287 |
+
"TopLinkTooltip": "Σύγκριση στατιστικών Ιστού για όλες τις ιστοσελίδες σας.",
|
3288 |
+
"SingleWebsitesDashboardDocumentation": "Αυτή η αναφορά δείχνει μια πληροφοριακή σύνοψη ενός συγκεκριμένου ιστοτόπου, περιέχοντας τις περισσότερες γενικές μετρικές γύρω από τους επισκέπτες σας.",
|
3289 |
+
"AllWebsitesDashboardDocumentation": "Αυτή η αναφορά δείχνει μια πληροφοριακή σύνοψη για κάθε έναν από τους ιστοτόπους σας, περιέχοντας τις περισσότερες γενικές μετρικές γύρω από τους επισκέπτες σας."
|
3290 |
},
|
3291 |
"Overlay": {
|
3292 |
"Clicks": "%s πατήματα",
|
3481 |
"UseDeleteLog": "Τακτική διαγραφή παλιών ανεπεξέργαστων δεδομένων από τη βάση δεδομένων",
|
3482 |
"UseDeleteReports": "Τακτική διαγραφή παλαιών αναφορών από τη βάση δεδομένων",
|
3483 |
"UsersOptOut": "Opt-out χρηστών",
|
3484 |
+
"ImprintUrl": "Διεύθυνση URL Σφραγίδας",
|
3485 |
+
"ImprintUrlDescription": "Ένας σύνδεσμος για τη σελίδα Σφραγίδας σας.",
|
3486 |
"PrivacyPolicyUrl": "Διεύθυνση URL Πολιτικής Ιδιωτικότητας",
|
3487 |
"PrivacyPolicyUrlDescription": "Ένας σύνδεσμος για την σελίδα Πολιτικής Ιδιωτικότητας.",
|
3488 |
"TermsAndConditionUrl": "Διεύθυνση URL Όρων Χρήσης",
|
3490 |
"PrivacyPolicyUrlDescriptionSuffix": "Αν το ορίσετε, θα εμφανίζεται στο κάτω μέρος της σελίδας εισόδου χρήστη και στις σελίδες που ο χρήστης '%1$s' έχει πρόσβαση.",
|
3491 |
"ShowInEmbeddedWidgets": "Εμφάνιση στα ενσωματωμένα γραφικά συστατικά",
|
3492 |
"ShowInEmbeddedWidgetsDescription": "Αν είναι τσεκαρισμένο, θα εμφανίζεται ένας σύνδεσμος για την Πολιτική Ιδιωτικότητας και Όρων Χρήσης στο κάτω μέρος των ενσωματωμένων γραφικών συστατικών.",
|
3493 |
+
"Imprint": "Σφραγίδα",
|
3494 |
"PrivacyPolicy": "Πολιτική Ιδιωτικότητας",
|
3495 |
"TermsAndConditions": "Όροι Χρήσης"
|
3496 |
},
|
3539 |
"ReferrerNames": "Ονόματα αναφορών",
|
3540 |
"Referrers": "Παραπομπείς",
|
3541 |
"ReferrersOverview": "Επισκόπηση Παραπομπών",
|
3542 |
+
"ReferrersOverviewDocumentation": "Αυτή η αναφορά δείχνει τα κανάλια εκμάθησης που χρησιμοποίησαν οι επισκέπτες σας για να έρθουν στον ιστοτόπο σας και τον αριθμό των επισκέψεων από κάθε τύπο καναλιού.",
|
3543 |
"ReferrerTypes": "Τύποι Καναλιών",
|
3544 |
"ReferrerURLs": "URL παραπομπών",
|
3545 |
"SearchEngines": "Μηχανές αναζήτησης",
|
3587 |
"Resolutions": "Αναλύσεις οθόνης",
|
3588 |
"WidgetGlobalVisitors": "Γενικές ρυθμίσεις χρηστών",
|
3589 |
"WidgetGlobalVisitorsDocumentation": "Αυτή η αναφορά δείχνει τις πιο συχνές καθολικές ρυθμίσεις που έχουν οι επισκέπτες σας. Μια ρύθμιση είναι ο συνδυασμός του λειτουργικού συστήματος, του τύπου φυλλομετρητή και της ανάλυσης οθόνης.",
|
3590 |
+
"WidgetResolutions": "Αναλύσεις οθόνης",
|
3591 |
+
"WidgetResolutionsDocumentation": "Αυτή η αναφορά δείχνει τις αναλύσεις οθόνης που χρησιμοποιούσαν οι επισκέπτες σας κατά την επίσκεψή τους στον ιστοτόπο."
|
3592 |
},
|
3593 |
"SEO": {
|
3594 |
"PluginDescription": "Το πρόσθετο εξάγει και εμφανίζει μετρικές SEO: ταξινόμηση ιστού από το Alexa, Google Pagerank, αριθμός σελίδων στο ευρετήριο και σύνδεσμοι του επιλεγμένου ιστοτόπου.",
|
3750 |
"Format_Utc": "UTC%s",
|
3751 |
"GlobalExcludedUserAgentHelp1": "Εισάγετε τον κατάλογο των user agents που δεν θα παρακολουθούνται από το Matomo.",
|
3752 |
"GlobalExcludedUserAgentHelp2": "Μπορείτε να το χρησιμοποιήσετε για να αποκλείσετε κάποια bots από την παρακολούθηση.",
|
3753 |
+
"GlobalExcludedUserAgentHelp3": "Υποστηριζονται κανονικές εκφράσεις όπως το %s.",
|
3754 |
"GlobalListExcludedIps": "Γενικός κατάλογος Αποκλεισμένων Διευθύνσεων IP",
|
3755 |
"GlobalListExcludedQueryParameters": "Καθολικός κατάλογος από παραμέτρους Ερωτήματος URL για αποκλεισμό",
|
3756 |
"GlobalListExcludedUserAgents": "Καθολική λίστα πελατών χρήστη για αποκλεισμό",
|
3769 |
"KeepURLFragmentsLong": "Κρατήστε Τμήματα του URL της σελίδας κατά την παρακολούθηση διευθύνσεων URL Σελίδων",
|
3770 |
"ListOfIpsToBeExcludedOnAllWebsites": "Οι παρακάτω διευθύνσεις IP θα αποκλειστούν από την ανίχνευση σε όλες τις ιστοσελίδες.",
|
3771 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Οι παράμετροι Ερωτήματος URLs παρακάτω θα αποκλειστούν από URLs σε όλες τις ιστοσελίδες.",
|
3772 |
+
"ListOfQueryParametersToExclude": "Εισάγετε τη λίστα παραμέτρων της ηλεκτρονικής διεύθυνσης URL, μία ανά γραμμή για να μην συμπεριλαμβάνονται στις αναφορές των ηλεκτρονικών διευθύνσεων URL των σελίδων. Υποστηρίζονται κανονικές εκφράσεις όπως το %s.",
|
3773 |
"LogAnalytics": "Ημερολόγιο Αναλυτικών",
|
3774 |
"LogAnalyticsDescription": "Αν η μέθοδος με Javascript δεν είναι δυνατή, μπορείτε να %1$sχρησιμοποιήσετε το ημερολόγιο αναλυτικών του διακομιστή%2$s ως εναλλακτική μέθοδο για την παρακολούθηση των χρηστών του ιστοτόπου σας.",
|
3775 |
"MainDescription": "Το σύστημα αναλυτικών αναφορών χρειάζεται ιστοσελίδες! Προσθέστε, ενημερώστε, διαγράψτε ιστοσελίδες και εμφανίστε τον κώδικα Javascript που θα εισαχθεί στις ιστοσελίδες σας.",
|
4585 |
"UserId": {
|
4586 |
"UserId": "Αναγνωριστικό χρήστη",
|
4587 |
"UserReportTitle": "Αναγνωριστικά χρηστών",
|
4588 |
+
"UserReportDocumentation": "Αυτή η αναφορά δείχνει τις επισκέψεις και άλλες γενικές μετρικές για κάθε αναγνωριστικό χρήστη.",
|
4589 |
"PluginDescription": "Εμφανίζει τις αναφορές χρηστών"
|
4590 |
},
|
4591 |
"UserLanguage": {
|
4815 |
"ReturnVisits": "επιστρεφόμενες επισκέψεις",
|
4816 |
"SubmenuFrequency": "Συχνότητα",
|
4817 |
"WidgetGraphReturning": "Γράφημα επιστρεφόμενων επισκέψεων",
|
4818 |
+
"WidgetOverview": "Επισκόπηση συχνότητας",
|
4819 |
+
"VisitFrequencyReportDocumentation": "Αυτή η αναφορά δείχνει γενικές μετρικές όπως επισκέψεις για επιστρεφόμενους επισκέπτες δίπλα δίπλα με τις ίδιες μετρικές για τους νέους επισκέπτες. Μάθετε πως οι επιστρεφόμενοι επισκέπτες αποδίδουν συνολικά συγκριτικά με τους νέους."
|
4820 |
},
|
4821 |
"VisitTime": {
|
4822 |
"ColumnLocalTime": "Τοπική ώρα",
|
4896 |
"PluginDescription": "Αναφέρει γενικές μετρικές αναλυτικών: επισκέψεις, μοναδικοί επισκέπτες, αριθμός ενεργειών, ρυθμός αναπήδησης, κτλ.",
|
4897 |
"VisitsSummary": "Περίληψη επισκέψεων",
|
4898 |
"VisitsSummaryDocumentation": "Αυτή είναι μια επισκόπηση της εξέλιξης των επισκέψεων.",
|
4899 |
+
"VisitsSummaryReportDocumentation": "Αυτή η αναφορά δείχνει μια πολύ γενική σύνοψη γύρω από την συμπεριφορά των επισκεπτών σας.",
|
4900 |
"WidgetLastVisits": "Διάγραμμα τελευταίων επισκέψεων",
|
4901 |
"WidgetOverviewGraph": "Επισκόπηση με διάγραμμα",
|
4902 |
"WidgetVisits": "Επισκόπηση επισκέψεων"
|
app/lang/en.json
CHANGED
@@ -32,6 +32,7 @@
|
|
32 |
"ChooseLanguage": "Choose language",
|
33 |
"ChoosePeriod": "Choose period",
|
34 |
"ClickHere": "Click here for more information.",
|
|
|
35 |
"DoubleClickToChangePeriod": "Double click to apply this period.",
|
36 |
"Close": "Close",
|
37 |
"ClickToSearch": "Click to search",
|
@@ -627,6 +628,7 @@
|
|
627 |
"UserAuthentication": "User authentication",
|
628 |
"UsingTokenAuth": "If you want to %1$s request data within a script, a crontab, etc. %2$s you need to add the URL parameter %3$s to the API calls URLs that require authentication.",
|
629 |
"Glossary": "Glossary",
|
|
|
630 |
"LearnAboutCommonlyUsedTerms2": "Learn about the commonly used terms to make the most of Matomo Analytics.",
|
631 |
"EvolutionMetricName": "%s Evolution"
|
632 |
},
|
@@ -672,6 +674,7 @@
|
|
672 |
"ExitPagesReportDocumentation": "This report contains information about the exit pages that occurred during the specified period. An exit page is the last page that a user views during their visit. %s The exit URLs are displayed as a folder structure.",
|
673 |
"ExitPageTitles": "Exit page titles",
|
674 |
"ExitPageTitlesReportDocumentation": "This report contains information about the titles of exit pages that occurred during the specified period.",
|
|
|
675 |
"OneSearch": "1 search",
|
676 |
"OutlinkDocumentation": "An outlink is a link that leads the visitor away from your website (to another domain).",
|
677 |
"OutlinksReportDocumentation": "This report shows a hierarchical list of outlink URLs that were clicked by your visitors.",
|
@@ -740,8 +743,10 @@
|
|
740 |
"ContentInteractions": "Content Interactions",
|
741 |
"InteractionRate": "Interaction Rate",
|
742 |
"ContentName": "Content Name",
|
|
|
743 |
"ContentNames": "Content Names",
|
744 |
"ContentPiece": "Content Piece",
|
|
|
745 |
"ContentPieces": "Content Pieces",
|
746 |
"ContentTarget": "Content Target",
|
747 |
"ContentTargets": "Content Targets",
|
@@ -1042,6 +1047,7 @@
|
|
1042 |
"MissingRequirementsNotice": "Please update %1$s %2$s to a newer version, %1$s %3$s is required.",
|
1043 |
"MissingRequirementsPleaseInstallNotice": "Please install %1$s %2$s as it is required by %3$s.",
|
1044 |
"NoZipFileSelected": "Please select a ZIP file.",
|
|
|
1045 |
"NumUpdatesAvailable": "%s Update(s) available",
|
1046 |
"NoPluginSettings": "No plugin settings that can be configured",
|
1047 |
"Origin": "Origin",
|
@@ -1329,18 +1335,23 @@
|
|
1329 |
"Device": "Device",
|
1330 |
"DeviceBrand": "Device brand",
|
1331 |
"DeviceBrands": "Device brands",
|
|
|
1332 |
"DeviceDetection": "Device detection",
|
1333 |
"DeviceModel": "Device model",
|
1334 |
"DeviceModels": "Device models",
|
|
|
1335 |
"DevicesDetection": "Visitor Devices",
|
1336 |
"DeviceType": "Device type",
|
1337 |
"DeviceTypes": "Device types",
|
|
|
1338 |
"FeaturePhone": "Feature phone",
|
1339 |
"OperatingSystemFamilies": "Operating System families",
|
1340 |
"OperatingSystemFamily": "Operating system family",
|
|
|
1341 |
"OperatingSystemCode": "Operating system code",
|
1342 |
"OperatingSystems": "Operating systems",
|
1343 |
"OperatingSystemVersions": "Operating System versions",
|
|
|
1344 |
"PluginDescription": "Provides extended information about user devices, such as Brand (manufacturer), Model (device version), device type (tv, consoles, smart phones, desktop, etc) and more.",
|
1345 |
"SmartDisplay": "Smart display",
|
1346 |
"Smartphone": "Smartphone",
|
@@ -1362,7 +1373,8 @@
|
|
1362 |
"XVisitsFromDevices": "%1$s visits from %2$s devices",
|
1363 |
"Wearable": "Wearable",
|
1364 |
"WidgetBrowsers": "Visitor Browser",
|
1365 |
-
"WidgetBrowsersDocumentation": "This report contains information about what kind of browser your visitors were using.
|
|
|
1366 |
},
|
1367 |
"Diagnostics": {
|
1368 |
"ConfigFileTitle": "Config file",
|
@@ -1416,10 +1428,13 @@
|
|
1416 |
"Event": "Event",
|
1417 |
"EventAction": "Event Action",
|
1418 |
"EventActions": "Event Actions",
|
|
|
1419 |
"EventCategories": "Event Categories",
|
|
|
1420 |
"EventCategory": "Event Category",
|
1421 |
"EventName": "Event Name",
|
1422 |
"EventNames": "Event Names",
|
|
|
1423 |
"EventUrl": "Event URL",
|
1424 |
"EventUrls": "Event URLs",
|
1425 |
"Events": "Events",
|
@@ -1584,6 +1599,7 @@
|
|
1584 |
"ConversionsOverview": "Conversions Overview",
|
1585 |
"ConversionsOverviewBy": "Conversions overview by type of visit",
|
1586 |
"DaysToConv": "Days to Conversion",
|
|
|
1587 |
"Details": "Goal details",
|
1588 |
"DefaultGoalConvertedOncePerVisit": "(default) Goal can only be converted once per visit",
|
1589 |
"DefaultRevenueLabel": "Goal default revenue",
|
@@ -1651,6 +1667,7 @@
|
|
1651 |
"GoalsAdjective": "Goals %s",
|
1652 |
"VisitPageTitle": "Visit a given Page Title",
|
1653 |
"VisitsUntilConv": "Visits to Conversion",
|
|
|
1654 |
"VisitUrl": "Visit a given URL (page or group of pages)",
|
1655 |
"VisitDurationMatchAttr": "Stay for a certain amount of time",
|
1656 |
"VisitDuration": "visit duration is",
|
@@ -1664,7 +1681,8 @@
|
|
1664 |
"EventValueAsRevenueHelp2": "Note: If both a default goal revenue and event value are defined, the event value will be used. If this option is enabled and no event value is sent in a request, the default revenue will be used (if defined).",
|
1665 |
"AtLeastMinutes": "at least %1$s minutes. Use decimals to match seconds, for example, %2$s to match 30 seconds.",
|
1666 |
"TimeInMinutes": "Time in Minutes",
|
1667 |
-
"ClickToViewThisGoal": "Click to view this goal."
|
|
|
1668 |
},
|
1669 |
"ImageGraph": {
|
1670 |
"ColumnOrdinateMissing": "The column '%1$s' was not found in this report. Try any of %2$s",
|
@@ -3264,7 +3282,9 @@
|
|
3264 |
"Evolution": "Evolution",
|
3265 |
"LoadingWebsites": "Loading websites",
|
3266 |
"PluginDescription": "View and compare all your websites and apps in this useful 'All Websites' dashboard. ",
|
3267 |
-
"TopLinkTooltip": "Compare Web Analytics stats for all of your Websites."
|
|
|
|
|
3268 |
},
|
3269 |
"Overlay": {
|
3270 |
"Clicks": "%s clicks",
|
@@ -3287,19 +3307,19 @@
|
|
3287 |
},
|
3288 |
"PagePerformance": {
|
3289 |
"ColumnAveragePageLoadTime": "Avg. page load time",
|
3290 |
-
"ColumnAveragePageLoadTimeDocumentation": "Average time (in seconds)
|
3291 |
"ColumnAverageTimeNetwork": "Avg. network time",
|
3292 |
-
"ColumnAverageTimeNetworkDocumentation": "Average time (in seconds)
|
3293 |
"ColumnAverageTimeServer": "Avg. server time",
|
3294 |
-
"ColumnAverageTimeServerDocumentation": "Average time (in seconds)
|
3295 |
"ColumnAverageTimeTransfer": "Avg. transfer time",
|
3296 |
-
"ColumnAverageTimeTransferDocumentation": "Average time (in seconds)
|
3297 |
"ColumnAverageTimeDomProcessing": "Avg. DOM processing time",
|
3298 |
-
"ColumnAverageTimeDomProcessingDocumentation": "Average time (in seconds)
|
3299 |
"ColumnAverageTimeDomCompletion": "Avg. DOM completion time",
|
3300 |
-
"ColumnAverageTimeDomCompletionDocumentation": "Average time (in seconds)
|
3301 |
"ColumnAverageTimeOnLoad": "Avg. on load time",
|
3302 |
-
"ColumnAverageTimeOnLoadDocumentation": "Average time (in seconds)
|
3303 |
"ColumnViewsWithTimeNetwork": "Pageviews with network time",
|
3304 |
"ColumnViewsWithTimeServer": "Pageviews with server time",
|
3305 |
"ColumnViewsWithTimeTransfer": "Pageviews with transfer time",
|
@@ -3317,6 +3337,7 @@
|
|
3317 |
"PluginDescription": "Adds some page performance reports",
|
3318 |
"PerformanceTable": "Table with performance metrics",
|
3319 |
"Overview": "Performance overview",
|
|
|
3320 |
"Performance": "Performance",
|
3321 |
"HelpNote": "Some of those metrics might not always be available. You can find more information in our %1$sonline guide%2$s.",
|
3322 |
"RowActionTitle": "Open page performance report",
|
@@ -3497,6 +3518,8 @@
|
|
3497 |
"UseDeleteLog": "Regularly delete old raw data from the database",
|
3498 |
"UseDeleteReports": "Regularly delete old reports from the database",
|
3499 |
"UsersOptOut": "Users opt-out",
|
|
|
|
|
3500 |
"PrivacyPolicyUrl": "Privacy Policy URL",
|
3501 |
"PrivacyPolicyUrlDescription": "A link to your Privacy Policy page.",
|
3502 |
"TermsAndConditionUrl": "Terms & Conditions URL",
|
@@ -3504,6 +3527,7 @@
|
|
3504 |
"PrivacyPolicyUrlDescriptionSuffix": "If you set this, it will be displayed at the bottom of the login page and on pages that the '%1$s' user can access.",
|
3505 |
"ShowInEmbeddedWidgets": "Show in embedded widgets",
|
3506 |
"ShowInEmbeddedWidgetsDescription": "If checked, a link to your Privacy Policy and your Terms & Conditions will be displayed at the bottom of embedded widgets.",
|
|
|
3507 |
"PrivacyPolicy": "Privacy Policy",
|
3508 |
"TermsAndConditions": "Terms & Conditions"
|
3509 |
},
|
@@ -3555,6 +3579,7 @@
|
|
3555 |
"ReferrerNames": "Referrer Names",
|
3556 |
"Referrers": "Referrers",
|
3557 |
"ReferrersOverview": "Referrers Overview",
|
|
|
3558 |
"ReferrerTypes": "Channel Types",
|
3559 |
"ReferrerURLs": "Referrer URLs",
|
3560 |
"SearchEngines": "Search Engines",
|
@@ -3602,7 +3627,8 @@
|
|
3602 |
"Resolutions": "Resolutions",
|
3603 |
"WidgetGlobalVisitors": "Visitor Configuration",
|
3604 |
"WidgetGlobalVisitorsDocumentation": "This report shows the most common overall configurations that your visitors had. A configuration is the combination of an operating system, a browser type and a screen resolution.",
|
3605 |
-
"WidgetResolutions": "Screen Resolution"
|
|
|
3606 |
},
|
3607 |
"SEO": {
|
3608 |
"PluginDescription": "This Plugin extracts and displays SEO metrics: Alexa web ranking, Google Pagerank, number of Indexed pages and backlinks of the currently selected website.",
|
@@ -3764,6 +3790,7 @@
|
|
3764 |
"Format_Utc": "UTC%s",
|
3765 |
"GlobalExcludedUserAgentHelp1": "Enter the list of user agents to exclude from being tracked by Matomo.",
|
3766 |
"GlobalExcludedUserAgentHelp2": "You can use this to exclude some bots from being tracked.",
|
|
|
3767 |
"GlobalListExcludedIps": "Global list of Excluded IPs",
|
3768 |
"GlobalListExcludedQueryParameters": "Global list of Query URL parameters to exclude",
|
3769 |
"GlobalListExcludedUserAgents": "Global list of user agents to exclude",
|
@@ -3782,7 +3809,7 @@
|
|
3782 |
"KeepURLFragmentsLong": "Keep Page URL fragments when tracking Page URLs",
|
3783 |
"ListOfIpsToBeExcludedOnAllWebsites": "The IPs below will be excluded from being tracked on all websites.",
|
3784 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "The Query URLs parameters below will be excluded from URLs on all websites.",
|
3785 |
-
"ListOfQueryParametersToExclude": "Enter the list of URL Query Parameters, one per line, to exclude from the Page URLs reports. Regular expressions such as %s are
|
3786 |
"LogAnalytics": "Log Analytics",
|
3787 |
"LogAnalyticsDescription": "If the Javascript tracking method isn’t feasible, you can %1$suse server log analytics%2$s as an alternative method for tracking your website’s users.",
|
3788 |
"MainDescription": "Your Web Analytics reports need Websites! Add, update, delete Websites, and show the JavaScript to insert in your pages.",
|
@@ -4607,6 +4634,7 @@
|
|
4607 |
"UserId": {
|
4608 |
"UserId": "UserId",
|
4609 |
"UserReportTitle": "User IDs",
|
|
|
4610 |
"PluginDescription": "Shows user reports"
|
4611 |
},
|
4612 |
"UserLanguage": {
|
@@ -4836,7 +4864,8 @@
|
|
4836 |
"ReturnVisits": "returning visits",
|
4837 |
"SubmenuFrequency": "Frequency",
|
4838 |
"WidgetGraphReturning": "Returning Visits Over Time",
|
4839 |
-
"WidgetOverview": "Frequency Overview"
|
|
|
4840 |
},
|
4841 |
"VisitTime": {
|
4842 |
"ColumnLocalTime": "Local time",
|
@@ -4916,6 +4945,7 @@
|
|
4916 |
"PluginDescription": "Reports general analytics metrics: visits, unique visitors, number of actions, bounce rate, etc.",
|
4917 |
"VisitsSummary": "Visits Summary",
|
4918 |
"VisitsSummaryDocumentation": "This is an overview of the visit evolution.",
|
|
|
4919 |
"WidgetLastVisits": "Visits Over Time",
|
4920 |
"WidgetOverviewGraph": "Visits Overview (with graph)",
|
4921 |
"WidgetVisits": "Visits Overview"
|
32 |
"ChooseLanguage": "Choose language",
|
33 |
"ChoosePeriod": "Choose period",
|
34 |
"ClickHere": "Click here for more information.",
|
35 |
+
"CompareTo": "Compare to:",
|
36 |
"DoubleClickToChangePeriod": "Double click to apply this period.",
|
37 |
"Close": "Close",
|
38 |
"ClickToSearch": "Click to search",
|
628 |
"UserAuthentication": "User authentication",
|
629 |
"UsingTokenAuth": "If you want to %1$s request data within a script, a crontab, etc. %2$s you need to add the URL parameter %3$s to the API calls URLs that require authentication.",
|
630 |
"Glossary": "Glossary",
|
631 |
+
"MainMetricsReportDocumentation": "This report gives you an overview over the most important metrics across all categories and plugins.",
|
632 |
"LearnAboutCommonlyUsedTerms2": "Learn about the commonly used terms to make the most of Matomo Analytics.",
|
633 |
"EvolutionMetricName": "%s Evolution"
|
634 |
},
|
674 |
"ExitPagesReportDocumentation": "This report contains information about the exit pages that occurred during the specified period. An exit page is the last page that a user views during their visit. %s The exit URLs are displayed as a folder structure.",
|
675 |
"ExitPageTitles": "Exit page titles",
|
676 |
"ExitPageTitlesReportDocumentation": "This report contains information about the titles of exit pages that occurred during the specified period.",
|
677 |
+
"MainMetricsReportDocumentation": "This report provides a very basic overview of what actions your visitors take on your website.",
|
678 |
"OneSearch": "1 search",
|
679 |
"OutlinkDocumentation": "An outlink is a link that leads the visitor away from your website (to another domain).",
|
680 |
"OutlinksReportDocumentation": "This report shows a hierarchical list of outlink URLs that were clicked by your visitors.",
|
743 |
"ContentInteractions": "Content Interactions",
|
744 |
"InteractionRate": "Interaction Rate",
|
745 |
"ContentName": "Content Name",
|
746 |
+
"ContentNameReportDocumentation": "This report shows the names of the content your visitors viewed and interacted with.",
|
747 |
"ContentNames": "Content Names",
|
748 |
"ContentPiece": "Content Piece",
|
749 |
+
"ContentPieceReportDocumentation": "This report shows the pieces of content your visitors viewed and interacted with.",
|
750 |
"ContentPieces": "Content Pieces",
|
751 |
"ContentTarget": "Content Target",
|
752 |
"ContentTargets": "Content Targets",
|
1047 |
"MissingRequirementsNotice": "Please update %1$s %2$s to a newer version, %1$s %3$s is required.",
|
1048 |
"MissingRequirementsPleaseInstallNotice": "Please install %1$s %2$s as it is required by %3$s.",
|
1049 |
"NoZipFileSelected": "Please select a ZIP file.",
|
1050 |
+
"FileExceedsUploadLimit": "The selected file exceeds the upload limit of your server.",
|
1051 |
"NumUpdatesAvailable": "%s Update(s) available",
|
1052 |
"NoPluginSettings": "No plugin settings that can be configured",
|
1053 |
"Origin": "Origin",
|
1335 |
"Device": "Device",
|
1336 |
"DeviceBrand": "Device brand",
|
1337 |
"DeviceBrands": "Device brands",
|
1338 |
+
"DeviceBrandReportDocumentation": "This report shows the brands \/ manufacturers of the devices your visitors were using. In most cases this information is only available for non-desktop devices.",
|
1339 |
"DeviceDetection": "Device detection",
|
1340 |
"DeviceModel": "Device model",
|
1341 |
"DeviceModels": "Device models",
|
1342 |
+
"DeviceModelReportDocumentation": "This report shows the devices your visitors are using. Each model is displayed combined with the device brand as some model names are used by multiple brands.",
|
1343 |
"DevicesDetection": "Visitor Devices",
|
1344 |
"DeviceType": "Device type",
|
1345 |
"DeviceTypes": "Device types",
|
1346 |
+
"DeviceTypeReportDocumentation": "This report shows the types of devices your visitors were using. This report will always show all device types Matomo is able to detect, even if there were no visits with a specific type.",
|
1347 |
"FeaturePhone": "Feature phone",
|
1348 |
"OperatingSystemFamilies": "Operating System families",
|
1349 |
"OperatingSystemFamily": "Operating system family",
|
1350 |
+
"OperatingSystemFamiliesReportDocumentation": "This report shows you the operating systems your visitors are using grouped by operating system family. An operating system family consists of different versions or distributions.",
|
1351 |
"OperatingSystemCode": "Operating system code",
|
1352 |
"OperatingSystems": "Operating systems",
|
1353 |
"OperatingSystemVersions": "Operating System versions",
|
1354 |
+
"OperatingSystemVersionsReportDocumentation": "This report shows you the operating systems your visitors are using. Each version and distribution is shown separately.",
|
1355 |
"PluginDescription": "Provides extended information about user devices, such as Brand (manufacturer), Model (device version), device type (tv, consoles, smart phones, desktop, etc) and more.",
|
1356 |
"SmartDisplay": "Smart display",
|
1357 |
"Smartphone": "Smartphone",
|
1373 |
"XVisitsFromDevices": "%1$s visits from %2$s devices",
|
1374 |
"Wearable": "Wearable",
|
1375 |
"WidgetBrowsers": "Visitor Browser",
|
1376 |
+
"WidgetBrowsersDocumentation": "This report contains information about what kind of browser your visitors were using.",
|
1377 |
+
"WidgetBrowserVersionsDocumentation": "This report contains information about what kind of browser your visitors were using. Each browser version is listed separately."
|
1378 |
},
|
1379 |
"Diagnostics": {
|
1380 |
"ConfigFileTitle": "Config file",
|
1428 |
"Event": "Event",
|
1429 |
"EventAction": "Event Action",
|
1430 |
"EventActions": "Event Actions",
|
1431 |
+
"EventActionsReportDocumentation": "This report shows you the number of times each event action occurred. You can view the event categories and names that were tracked along with each event action in the row's subtable. You can change which is shown by changing the secondary dimension with the link at the bottom of the report.",
|
1432 |
"EventCategories": "Event Categories",
|
1433 |
+
"EventCategoriesReportDocumentation": "This report shows the categories of each tracked event and how many times they occurred. You can view the event actions and names that were tracked along with each event category in each row's subtable. You can change which is shown by changing the secondary dimension with the link at the bottom of the report.",
|
1434 |
"EventCategory": "Event Category",
|
1435 |
"EventName": "Event Name",
|
1436 |
"EventNames": "Event Names",
|
1437 |
+
"EventNamesReportDocumentation": "This report shows you the names associated with each tracked event and how many times they occurred. You can view the event actions and categories that were tracked along with each event name in each row's subtable. You can change which is shown by changing the secondary dimension with the link at the bottom of the report.",
|
1438 |
"EventUrl": "Event URL",
|
1439 |
"EventUrls": "Event URLs",
|
1440 |
"Events": "Events",
|
1599 |
"ConversionsOverview": "Conversions Overview",
|
1600 |
"ConversionsOverviewBy": "Conversions overview by type of visit",
|
1601 |
"DaysToConv": "Days to Conversion",
|
1602 |
+
"DaysToConvReportDocumentation": "This report shows how many days pass before your visitors convert a goal.",
|
1603 |
"Details": "Goal details",
|
1604 |
"DefaultGoalConvertedOncePerVisit": "(default) Goal can only be converted once per visit",
|
1605 |
"DefaultRevenueLabel": "Goal default revenue",
|
1667 |
"GoalsAdjective": "Goals %s",
|
1668 |
"VisitPageTitle": "Visit a given Page Title",
|
1669 |
"VisitsUntilConv": "Visits to Conversion",
|
1670 |
+
"VisitsUntilConvReportDocumentation": "This report shows the number of visits made before a visitor converts a goal.",
|
1671 |
"VisitUrl": "Visit a given URL (page or group of pages)",
|
1672 |
"VisitDurationMatchAttr": "Stay for a certain amount of time",
|
1673 |
"VisitDuration": "visit duration is",
|
1681 |
"EventValueAsRevenueHelp2": "Note: If both a default goal revenue and event value are defined, the event value will be used. If this option is enabled and no event value is sent in a request, the default revenue will be used (if defined).",
|
1682 |
"AtLeastMinutes": "at least %1$s minutes. Use decimals to match seconds, for example, %2$s to match 30 seconds.",
|
1683 |
"TimeInMinutes": "Time in Minutes",
|
1684 |
+
"ClickToViewThisGoal": "Click to view this goal.",
|
1685 |
+
"OverviewReportDocumentation": "This report gives an overview of how well your visitors convert a specific goal."
|
1686 |
},
|
1687 |
"ImageGraph": {
|
1688 |
"ColumnOrdinateMissing": "The column '%1$s' was not found in this report. Try any of %2$s",
|
3282 |
"Evolution": "Evolution",
|
3283 |
"LoadingWebsites": "Loading websites",
|
3284 |
"PluginDescription": "View and compare all your websites and apps in this useful 'All Websites' dashboard. ",
|
3285 |
+
"TopLinkTooltip": "Compare Web Analytics stats for all of your Websites.",
|
3286 |
+
"SingleWebsitesDashboardDocumentation": "This report gives you an informational overview for a specific website, containing the most general metrics about your visitors.",
|
3287 |
+
"AllWebsitesDashboardDocumentation": "This report gives you an informational overview for each of your websites, containing the most general metrics about your visitors."
|
3288 |
},
|
3289 |
"Overlay": {
|
3290 |
"Clicks": "%s clicks",
|
3307 |
},
|
3308 |
"PagePerformance": {
|
3309 |
"ColumnAveragePageLoadTime": "Avg. page load time",
|
3310 |
+
"ColumnAveragePageLoadTimeDocumentation": "Average time (in seconds) it takes from requesting a page until the page is fully rendered within the browser",
|
3311 |
"ColumnAverageTimeNetwork": "Avg. network time",
|
3312 |
+
"ColumnAverageTimeNetworkDocumentation": "Average time (in seconds) it takes to connect to the server. This includes the time needed to lookup DNS and establish a TCP connection. This value might be 0 after the first request to a domain as the browser might cache the connection.",
|
3313 |
"ColumnAverageTimeServer": "Avg. server time",
|
3314 |
+
"ColumnAverageTimeServerDocumentation": "Average time (in seconds) it takes the server to generate the page. This is the time between the server receiving the request and starting to serve the response.",
|
3315 |
"ColumnAverageTimeTransfer": "Avg. transfer time",
|
3316 |
+
"ColumnAverageTimeTransferDocumentation": "Average time (in seconds) it takes the browser to download the response from the server. This is the time from receiving the first byte till the response is complete.",
|
3317 |
"ColumnAverageTimeDomProcessing": "Avg. DOM processing time",
|
3318 |
+
"ColumnAverageTimeDomProcessingDocumentation": "Average time (in seconds) the browser spends loading the webpage after the response was fully received and before the user can start interacting with it.",
|
3319 |
"ColumnAverageTimeDomCompletion": "Avg. DOM completion time",
|
3320 |
+
"ColumnAverageTimeDomCompletionDocumentation": "Average time (in seconds) it takes for the browser to load media and execute any Javascript code listening for the DOMContentLoaded event after the webpage was loaded and the user can already interact with it.",
|
3321 |
"ColumnAverageTimeOnLoad": "Avg. on load time",
|
3322 |
+
"ColumnAverageTimeOnLoadDocumentation": "Average time (in seconds) it takes the browser to execute Javascript code waiting for the window.load event. This event is triggered once the DOM has completely rendered.",
|
3323 |
"ColumnViewsWithTimeNetwork": "Pageviews with network time",
|
3324 |
"ColumnViewsWithTimeServer": "Pageviews with server time",
|
3325 |
"ColumnViewsWithTimeTransfer": "Pageviews with transfer time",
|
3337 |
"PluginDescription": "Adds some page performance reports",
|
3338 |
"PerformanceTable": "Table with performance metrics",
|
3339 |
"Overview": "Performance overview",
|
3340 |
+
"OverviewDocumentation": "This report provides an overview of how fast your webpages become visible to your visitors. This includes both how long it takes for browsers to download your webpages and how long it takes for browsers to display them.",
|
3341 |
"Performance": "Performance",
|
3342 |
"HelpNote": "Some of those metrics might not always be available. You can find more information in our %1$sonline guide%2$s.",
|
3343 |
"RowActionTitle": "Open page performance report",
|
3518 |
"UseDeleteLog": "Regularly delete old raw data from the database",
|
3519 |
"UseDeleteReports": "Regularly delete old reports from the database",
|
3520 |
"UsersOptOut": "Users opt-out",
|
3521 |
+
"ImprintUrl": "Imprint URL",
|
3522 |
+
"ImprintUrlDescription": "A link to your Imprint page.",
|
3523 |
"PrivacyPolicyUrl": "Privacy Policy URL",
|
3524 |
"PrivacyPolicyUrlDescription": "A link to your Privacy Policy page.",
|
3525 |
"TermsAndConditionUrl": "Terms & Conditions URL",
|
3527 |
"PrivacyPolicyUrlDescriptionSuffix": "If you set this, it will be displayed at the bottom of the login page and on pages that the '%1$s' user can access.",
|
3528 |
"ShowInEmbeddedWidgets": "Show in embedded widgets",
|
3529 |
"ShowInEmbeddedWidgetsDescription": "If checked, a link to your Privacy Policy and your Terms & Conditions will be displayed at the bottom of embedded widgets.",
|
3530 |
+
"Imprint": "Imprint",
|
3531 |
"PrivacyPolicy": "Privacy Policy",
|
3532 |
"TermsAndConditions": "Terms & Conditions"
|
3533 |
},
|
3579 |
"ReferrerNames": "Referrer Names",
|
3580 |
"Referrers": "Referrers",
|
3581 |
"ReferrersOverview": "Referrers Overview",
|
3582 |
+
"ReferrersOverviewDocumentation": "This report shows what acquisition channels your visitors used to get to your website, and the number of visits each channel type is responsible for.",
|
3583 |
"ReferrerTypes": "Channel Types",
|
3584 |
"ReferrerURLs": "Referrer URLs",
|
3585 |
"SearchEngines": "Search Engines",
|
3627 |
"Resolutions": "Resolutions",
|
3628 |
"WidgetGlobalVisitors": "Visitor Configuration",
|
3629 |
"WidgetGlobalVisitorsDocumentation": "This report shows the most common overall configurations that your visitors had. A configuration is the combination of an operating system, a browser type and a screen resolution.",
|
3630 |
+
"WidgetResolutions": "Screen Resolution",
|
3631 |
+
"WidgetResolutionsDocumentation": "This report shows the screen resolutions your visitors used when viewing your website."
|
3632 |
},
|
3633 |
"SEO": {
|
3634 |
"PluginDescription": "This Plugin extracts and displays SEO metrics: Alexa web ranking, Google Pagerank, number of Indexed pages and backlinks of the currently selected website.",
|
3790 |
"Format_Utc": "UTC%s",
|
3791 |
"GlobalExcludedUserAgentHelp1": "Enter the list of user agents to exclude from being tracked by Matomo.",
|
3792 |
"GlobalExcludedUserAgentHelp2": "You can use this to exclude some bots from being tracked.",
|
3793 |
+
"GlobalExcludedUserAgentHelp3": "Regular expressions such as %s are supported.",
|
3794 |
"GlobalListExcludedIps": "Global list of Excluded IPs",
|
3795 |
"GlobalListExcludedQueryParameters": "Global list of Query URL parameters to exclude",
|
3796 |
"GlobalListExcludedUserAgents": "Global list of user agents to exclude",
|
3809 |
"KeepURLFragmentsLong": "Keep Page URL fragments when tracking Page URLs",
|
3810 |
"ListOfIpsToBeExcludedOnAllWebsites": "The IPs below will be excluded from being tracked on all websites.",
|
3811 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "The Query URLs parameters below will be excluded from URLs on all websites.",
|
3812 |
+
"ListOfQueryParametersToExclude": "Enter the list of URL Query Parameters, one per line, to exclude from the Page URLs reports. Regular expressions such as %s are supported.",
|
3813 |
"LogAnalytics": "Log Analytics",
|
3814 |
"LogAnalyticsDescription": "If the Javascript tracking method isn’t feasible, you can %1$suse server log analytics%2$s as an alternative method for tracking your website’s users.",
|
3815 |
"MainDescription": "Your Web Analytics reports need Websites! Add, update, delete Websites, and show the JavaScript to insert in your pages.",
|
4634 |
"UserId": {
|
4635 |
"UserId": "UserId",
|
4636 |
"UserReportTitle": "User IDs",
|
4637 |
+
"UserReportDocumentation": "This report shows visits and other general metrics for every individual User ID.",
|
4638 |
"PluginDescription": "Shows user reports"
|
4639 |
},
|
4640 |
"UserLanguage": {
|
4864 |
"ReturnVisits": "returning visits",
|
4865 |
"SubmenuFrequency": "Frequency",
|
4866 |
"WidgetGraphReturning": "Returning Visits Over Time",
|
4867 |
+
"WidgetOverview": "Frequency Overview",
|
4868 |
+
"VisitFrequencyReportDocumentation": "This report shows general metrics like visits for returning visitors side by side with the same metrics for new visitors. Learn how returning visitors perform overall compared to new visitors."
|
4869 |
},
|
4870 |
"VisitTime": {
|
4871 |
"ColumnLocalTime": "Local time",
|
4945 |
"PluginDescription": "Reports general analytics metrics: visits, unique visitors, number of actions, bounce rate, etc.",
|
4946 |
"VisitsSummary": "Visits Summary",
|
4947 |
"VisitsSummaryDocumentation": "This is an overview of the visit evolution.",
|
4948 |
+
"VisitsSummaryReportDocumentation": "This report provides a very general overview of how your visitors behave.",
|
4949 |
"WidgetLastVisits": "Visits Over Time",
|
4950 |
"WidgetOverviewGraph": "Visits Overview (with graph)",
|
4951 |
"WidgetVisits": "Visits Overview"
|
app/lang/es-ar.json
CHANGED
@@ -1288,7 +1288,7 @@
|
|
1288 |
"MobileApp": "Aplicación móvil",
|
1289 |
"XVisitsFromDevices": "%1$s visitas desde %2$s dispositivos",
|
1290 |
"WidgetBrowsers": "Navegador web de los visitantes",
|
1291 |
-
"
|
1292 |
},
|
1293 |
"Diagnostics": {
|
1294 |
"ConfigFileTitle": "Archivo de configuración",
|
@@ -3415,7 +3415,6 @@
|
|
3415 |
"KeepURLFragmentsLong": "Conservar fragmentos de la dirección web de página cuando se rastrean las mismas",
|
3416 |
"ListOfIpsToBeExcludedOnAllWebsites": "Las IPs a continuación quedarán excluidas de ser rastreadas en todos los sitios web.",
|
3417 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Los parámetros de consulta de direcciones web a continuación serán excluidos de las direcciones web de los sitios.",
|
3418 |
-
"ListOfQueryParametersToExclude": "Ingresá la lista de parámetros de direcciones web de consulta, uno por línea, para excluirlas de los informes de direcciones web de páginas. Expresiones regulares como %s son soportadas.",
|
3419 |
"LogAnalytics": "Análisis de registros",
|
3420 |
"LogAnalyticsDescription": "Si el método de rastreo de JavaScript no es posible, podés usar el %1$sanálisis de registro%2$s como un método alternativo de rastreo de los usuarios de tu sitio web.",
|
3421 |
"MainDescription": "¡Tus informes de análisis Web necesitan Sitios web! Agregá, actualizá, eliminá sitios web, y mostrá el código JavaScript para insertar en tus páginas.",
|
1288 |
"MobileApp": "Aplicación móvil",
|
1289 |
"XVisitsFromDevices": "%1$s visitas desde %2$s dispositivos",
|
1290 |
"WidgetBrowsers": "Navegador web de los visitantes",
|
1291 |
+
"WidgetBrowserVersionsDocumentation": "Este informe contiene información acerca de qué tipo de navegador web están usando tus visitantes. Cada versión de navegador web está alistado separadamente."
|
1292 |
},
|
1293 |
"Diagnostics": {
|
1294 |
"ConfigFileTitle": "Archivo de configuración",
|
3415 |
"KeepURLFragmentsLong": "Conservar fragmentos de la dirección web de página cuando se rastrean las mismas",
|
3416 |
"ListOfIpsToBeExcludedOnAllWebsites": "Las IPs a continuación quedarán excluidas de ser rastreadas en todos los sitios web.",
|
3417 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Los parámetros de consulta de direcciones web a continuación serán excluidos de las direcciones web de los sitios.",
|
|
|
3418 |
"LogAnalytics": "Análisis de registros",
|
3419 |
"LogAnalyticsDescription": "Si el método de rastreo de JavaScript no es posible, podés usar el %1$sanálisis de registro%2$s como un método alternativo de rastreo de los usuarios de tu sitio web.",
|
3420 |
"MainDescription": "¡Tus informes de análisis Web necesitan Sitios web! Agregá, actualizá, eliminá sitios web, y mostrá el código JavaScript para insertar en tus páginas.",
|
app/lang/es.json
CHANGED
@@ -1319,7 +1319,7 @@
|
|
1319 |
"MobileApp": "Aplicación móvil",
|
1320 |
"XVisitsFromDevices": "%1$s visitas desde %2$s dispositivos",
|
1321 |
"WidgetBrowsers": "Navegador del visitante",
|
1322 |
-
"
|
1323 |
},
|
1324 |
"Diagnostics": {
|
1325 |
"ConfigFileTitle": "Archivo de configuración",
|
@@ -3527,7 +3527,6 @@
|
|
3527 |
"KeepURLFragmentsLong": "Mantener fragmentos de la URL de página cuando se rastrean las URLs de página",
|
3528 |
"ListOfIpsToBeExcludedOnAllWebsites": "Las IPs a continuación quedarán excluidas de ser rastreadas en todos los sitios de internet.",
|
3529 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Los parámetros de consulta URL a continuación serán excluidos de las URLs de todos los sitios de internet.",
|
3530 |
-
"ListOfQueryParametersToExclude": "Introduce la lista de parámetros del \"QueryString\" de la URL, uno por línea, para excluirlos de los reportes de URLs de página. Se soportan expresiones regulares como %s.",
|
3531 |
"LogAnalytics": "Análisis de ficheros históricos",
|
3532 |
"LogAnalyticsDescription": "Si el método de seguimiento por javascript no es factible, puedes %1$susar el análisis de los ficheros históricos del servidor%2$s",
|
3533 |
"MainDescription": "¡Su informe de análisis necesita sitios de internet! Agregue, actualice, elimine sitios y muestre el código JavaScript a insertar en sus páginas.",
|
1319 |
"MobileApp": "Aplicación móvil",
|
1320 |
"XVisitsFromDevices": "%1$s visitas desde %2$s dispositivos",
|
1321 |
"WidgetBrowsers": "Navegador del visitante",
|
1322 |
+
"WidgetBrowserVersionsDocumentation": "Este informe contiene información acerca de qué tipo de navegador el visitante está utilizando. Cada versión de navegador está alistado separadamente."
|
1323 |
},
|
1324 |
"Diagnostics": {
|
1325 |
"ConfigFileTitle": "Archivo de configuración",
|
3527 |
"KeepURLFragmentsLong": "Mantener fragmentos de la URL de página cuando se rastrean las URLs de página",
|
3528 |
"ListOfIpsToBeExcludedOnAllWebsites": "Las IPs a continuación quedarán excluidas de ser rastreadas en todos los sitios de internet.",
|
3529 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Los parámetros de consulta URL a continuación serán excluidos de las URLs de todos los sitios de internet.",
|
|
|
3530 |
"LogAnalytics": "Análisis de ficheros históricos",
|
3531 |
"LogAnalyticsDescription": "Si el método de seguimiento por javascript no es factible, puedes %1$susar el análisis de los ficheros históricos del servidor%2$s",
|
3532 |
"MainDescription": "¡Su informe de análisis necesita sitios de internet! Agregue, actualice, elimine sitios y muestre el código JavaScript a insertar en sus páginas.",
|
app/lang/fa.json
CHANGED
@@ -1078,7 +1078,7 @@
|
|
1078 |
"TV": "تلویزیون",
|
1079 |
"UserAgent": "کاربر-نمایندگی",
|
1080 |
"WidgetBrowsers": "مرورگر بازدید کننده",
|
1081 |
-
"
|
1082 |
},
|
1083 |
"Events": {
|
1084 |
"AvgValue": "میانگین",
|
1078 |
"TV": "تلویزیون",
|
1079 |
"UserAgent": "کاربر-نمایندگی",
|
1080 |
"WidgetBrowsers": "مرورگر بازدید کننده",
|
1081 |
+
"WidgetBrowserVersionsDocumentation": "این گزارش حاوی اطلاعات در مورد چه نوع مرورگر بازدید کنندگان خود را با استفاده از. هر مرورگر بطور جداگانه ذکر شده است."
|
1082 |
},
|
1083 |
"Events": {
|
1084 |
"AvgValue": "میانگین",
|
app/lang/fi.json
CHANGED
@@ -1293,7 +1293,7 @@
|
|
1293 |
"XVisitsFromDevices": "Käyntien määrä: %1$s, laitteelta tyyppiä %2$s",
|
1294 |
"Wearable": "Puettava",
|
1295 |
"WidgetBrowsers": "Kävijöiden selaimet",
|
1296 |
-
"
|
1297 |
},
|
1298 |
"Diagnostics": {
|
1299 |
"ConfigFileTitle": "Asetustiedosto",
|
1293 |
"XVisitsFromDevices": "Käyntien määrä: %1$s, laitteelta tyyppiä %2$s",
|
1294 |
"Wearable": "Puettava",
|
1295 |
"WidgetBrowsers": "Kävijöiden selaimet",
|
1296 |
+
"WidgetBrowserVersionsDocumentation": "Tämä raportti näyttää, mitä selaimia kävijöilläsi oli. Jokainen selaimen versio näytetään erikseen."
|
1297 |
},
|
1298 |
"Diagnostics": {
|
1299 |
"ConfigFileTitle": "Asetustiedosto",
|
app/lang/fr.json
CHANGED
@@ -1343,7 +1343,7 @@
|
|
1343 |
"MobileApp": "Application mobile",
|
1344 |
"XVisitsFromDevices": "%1$svisites de %2$spériphériques",
|
1345 |
"WidgetBrowsers": "Navigateurs du visiteur",
|
1346 |
-
"
|
1347 |
},
|
1348 |
"Diagnostics": {
|
1349 |
"ConfigFileTitle": "Fichier de configuration",
|
@@ -3582,7 +3582,6 @@
|
|
3582 |
"KeepURLFragmentsLong": "Conserver les fragments d'URL lors du suivi",
|
3583 |
"ListOfIpsToBeExcludedOnAllWebsites": "Les adresses IP ci-dessous seront exclues des statistiques sur tous les sites web.",
|
3584 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Les paramètres ci-dessous seront exclus des statistiques de tous les sites web.",
|
3585 |
-
"ListOfQueryParametersToExclude": "Entrez la liste de vos paramètres d'URL à exclure des rapports d'URL de page, un par ligne. Les expressions régulières comme %s sont supportées.",
|
3586 |
"LogAnalytics": "Analyse des logs",
|
3587 |
"LogAnalyticsDescription": "S'il n'est pas possible d'utiliser le code de suivi JavaScript, vous pouvez utiliser %1$sl'analyse des logs serveur%2$s comme solution alternative pour suivre les utilisateurs de vos sites web.",
|
3588 |
"MainDescription": "Matomo a besoin de sites pour générer des rapports ! Ajoutez, éditez et supprimez des sites, et voyez le code JavaScript à inclure dans vos pages.",
|
1343 |
"MobileApp": "Application mobile",
|
1344 |
"XVisitsFromDevices": "%1$svisites de %2$spériphériques",
|
1345 |
"WidgetBrowsers": "Navigateurs du visiteur",
|
1346 |
+
"WidgetBrowserVersionsDocumentation": "Ce rapport contient des informations à propos de quel type de navigateur vos visiteurs utilisent. Chaque version du navigateur est listée séparément."
|
1347 |
},
|
1348 |
"Diagnostics": {
|
1349 |
"ConfigFileTitle": "Fichier de configuration",
|
3582 |
"KeepURLFragmentsLong": "Conserver les fragments d'URL lors du suivi",
|
3583 |
"ListOfIpsToBeExcludedOnAllWebsites": "Les adresses IP ci-dessous seront exclues des statistiques sur tous les sites web.",
|
3584 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Les paramètres ci-dessous seront exclus des statistiques de tous les sites web.",
|
|
|
3585 |
"LogAnalytics": "Analyse des logs",
|
3586 |
"LogAnalyticsDescription": "S'il n'est pas possible d'utiliser le code de suivi JavaScript, vous pouvez utiliser %1$sl'analyse des logs serveur%2$s comme solution alternative pour suivre les utilisateurs de vos sites web.",
|
3587 |
"MainDescription": "Matomo a besoin de sites pour générer des rapports ! Ajoutez, éditez et supprimez des sites, et voyez le code JavaScript à inclure dans vos pages.",
|
app/lang/id.json
CHANGED
@@ -1007,7 +1007,7 @@
|
|
1007 |
"TV": "Tv",
|
1008 |
"MobileApp": "Aplikasi Mobil",
|
1009 |
"WidgetBrowsers": "Peramban Pengunjung",
|
1010 |
-
"
|
1011 |
},
|
1012 |
"Diagnostics": {
|
1013 |
"ConfigFileTitle": "Berkas konfigurasi",
|
1007 |
"TV": "Tv",
|
1008 |
"MobileApp": "Aplikasi Mobil",
|
1009 |
"WidgetBrowsers": "Peramban Pengunjung",
|
1010 |
+
"WidgetBrowserVersionsDocumentation": "Laporan ini mengandung informasi tentabg jenis peramban yang pengunjung Anda gunakan. Setiap versi peramban diurutkan terpisah."
|
1011 |
},
|
1012 |
"Diagnostics": {
|
1013 |
"ConfigFileTitle": "Berkas konfigurasi",
|
app/lang/it.json
CHANGED
@@ -1306,7 +1306,7 @@
|
|
1306 |
"XVisitsFromDevices": "%1$s visite da %2$s dispositivi",
|
1307 |
"Wearable": "Indossabile",
|
1308 |
"WidgetBrowsers": "Browser dei visitatori",
|
1309 |
-
"
|
1310 |
},
|
1311 |
"Diagnostics": {
|
1312 |
"ConfigFileTitle": "File di configurazione",
|
@@ -3643,7 +3643,6 @@
|
|
3643 |
"KeepURLFragmentsLong": "Conserva i frammenti di URL Pagina quando si tracciano gli URL Pagina",
|
3644 |
"ListOfIpsToBeExcludedOnAllWebsites": "I seguenti indirizzi IP verranno esclusi dal tracking su tutti i siti.",
|
3645 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "I parametri URL Query qui sotto saranno esclusi dagli URL su tutti i siti.",
|
3646 |
-
"ListOfQueryParametersToExclude": "Crea un elenco con i Parametri Query URL, uno per riga, da escludere dai report URL Pagina. Sono supportate le espressioni regolari come %s.",
|
3647 |
"LogAnalytics": "Statistiche Log",
|
3648 |
"LogAnalyticsDescription": "Se il tracciamento Javascript non è fattibile, puoi %1$sutilizzare le statistiche server log%2$s come metodo alternativo per tracciare i visitatori del tuo sito web.",
|
3649 |
"MainDescription": "Per generare i report dei tuoi siti web, devi configurarli in Matomo! Aggiungi, aggiorna, cancella i siti web e visualizza il codice JavaScript da inserire nelle tue pagine.",
|
1306 |
"XVisitsFromDevices": "%1$s visite da %2$s dispositivi",
|
1307 |
"Wearable": "Indossabile",
|
1308 |
"WidgetBrowsers": "Browser dei visitatori",
|
1309 |
+
"WidgetBrowserVersionsDocumentation": "Questo report contiene informazioni sul tipo di browser che i tuoi visitatori hanno utilizzato. Ciascuna versione del browser è elencata separatamente."
|
1310 |
},
|
1311 |
"Diagnostics": {
|
1312 |
"ConfigFileTitle": "File di configurazione",
|
3643 |
"KeepURLFragmentsLong": "Conserva i frammenti di URL Pagina quando si tracciano gli URL Pagina",
|
3644 |
"ListOfIpsToBeExcludedOnAllWebsites": "I seguenti indirizzi IP verranno esclusi dal tracking su tutti i siti.",
|
3645 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "I parametri URL Query qui sotto saranno esclusi dagli URL su tutti i siti.",
|
|
|
3646 |
"LogAnalytics": "Statistiche Log",
|
3647 |
"LogAnalyticsDescription": "Se il tracciamento Javascript non è fattibile, puoi %1$sutilizzare le statistiche server log%2$s come metodo alternativo per tracciare i visitatori del tuo sito web.",
|
3648 |
"MainDescription": "Per generare i report dei tuoi siti web, devi configurarli in Matomo! Aggiungi, aggiorna, cancella i siti web e visualizza il codice JavaScript da inserire nelle tue pagine.",
|
app/lang/ja.json
CHANGED
@@ -1322,7 +1322,7 @@
|
|
1322 |
"MobileApp": "モバイルアプリ",
|
1323 |
"XVisitsFromDevices": "%2$s デバイスからの %1$s ビジット",
|
1324 |
"WidgetBrowsers": "ブラウザ",
|
1325 |
-
"
|
1326 |
},
|
1327 |
"Diagnostics": {
|
1328 |
"ConfigFileTitle": "コンフィグファイル",
|
@@ -3540,7 +3540,6 @@
|
|
3540 |
"KeepURLFragmentsLong": "ページ URL をトラッキングする際は、ページ URL フラグメントを保持してください。",
|
3541 |
"ListOfIpsToBeExcludedOnAllWebsites": "次の IP は、全ウェブサイトのトラッキングから除外されます。",
|
3542 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "次のクエリー URL パラメータは、全ウェブサイトの URL から除外されます。",
|
3543 |
-
"ListOfQueryParametersToExclude": "ページ URL レポートから除外する URL クエリパラメータのリストを 1 行に 1 つずつ入力します。 %s などの正規表現がサポートされています。",
|
3544 |
"LogAnalytics": "ログ解析",
|
3545 |
"LogAnalyticsDescription": "もし Javascript によるトラッキングができない場合は、ウェブサイトのユーザーをトラッキングするための代替方法として%1$sサーバーログ解析%2$sが使えます。",
|
3546 |
"MainDescription": "ウェブ解析リポートにはウェブサイトが必要です! ウェブサイトの追加、更新、削除と、ページに挿入する Javascript を表示します。",
|
1322 |
"MobileApp": "モバイルアプリ",
|
1323 |
"XVisitsFromDevices": "%2$s デバイスからの %1$s ビジット",
|
1324 |
"WidgetBrowsers": "ブラウザ",
|
1325 |
+
"WidgetBrowserVersionsDocumentation": "ビジターが使用しているブラウザについてのリポートです。各ブラウザのバージョンは別途記載されています。"
|
1326 |
},
|
1327 |
"Diagnostics": {
|
1328 |
"ConfigFileTitle": "コンフィグファイル",
|
3540 |
"KeepURLFragmentsLong": "ページ URL をトラッキングする際は、ページ URL フラグメントを保持してください。",
|
3541 |
"ListOfIpsToBeExcludedOnAllWebsites": "次の IP は、全ウェブサイトのトラッキングから除外されます。",
|
3542 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "次のクエリー URL パラメータは、全ウェブサイトの URL から除外されます。",
|
|
|
3543 |
"LogAnalytics": "ログ解析",
|
3544 |
"LogAnalyticsDescription": "もし Javascript によるトラッキングができない場合は、ウェブサイトのユーザーをトラッキングするための代替方法として%1$sサーバーログ解析%2$sが使えます。",
|
3545 |
"MainDescription": "ウェブ解析リポートにはウェブサイトが必要です! ウェブサイトの追加、更新、削除と、ページに挿入する Javascript を表示します。",
|
app/lang/ko.json
CHANGED
@@ -966,7 +966,7 @@
|
|
966 |
"UserAgent": "사용자 에이전트",
|
967 |
"MobileApp": "모바일 앱",
|
968 |
"WidgetBrowsers": "방문자 브라우저",
|
969 |
-
"
|
970 |
},
|
971 |
"Feedback": {
|
972 |
"DoYouHaveBugReportOrFeatureRequest": "발견한 버그나 기능에 대한 의견을 보고하시겠습니까?",
|
966 |
"UserAgent": "사용자 에이전트",
|
967 |
"MobileApp": "모바일 앱",
|
968 |
"WidgetBrowsers": "방문자 브라우저",
|
969 |
+
"WidgetBrowserVersionsDocumentation": "사용자가 어떤 브라우저를 사용하는지에 대한 보고서입니다. 각 브라우저의 버전은 별도로 기재되어 있습니다."
|
970 |
},
|
971 |
"Feedback": {
|
972 |
"DoYouHaveBugReportOrFeatureRequest": "발견한 버그나 기능에 대한 의견을 보고하시겠습니까?",
|
app/lang/lv.json
CHANGED
@@ -547,7 +547,7 @@
|
|
547 |
"dataTableLabelTypes": "Tips",
|
548 |
"OperatingSystems": "Operētājsistēmas",
|
549 |
"WidgetBrowsers": "Apmeklētāju pārlūki",
|
550 |
-
"
|
551 |
},
|
552 |
"Feedback": {
|
553 |
"DoYouHaveBugReportOrFeatureRequest": "Vai Jums ir kļūdas ziņojums vai papildus funkcionalitātes pieprasījums?",
|
547 |
"dataTableLabelTypes": "Tips",
|
548 |
"OperatingSystems": "Operētājsistēmas",
|
549 |
"WidgetBrowsers": "Apmeklētāju pārlūki",
|
550 |
+
"WidgetBrowserVersionsDocumentation": "Šajā atskaitē ir informācija par to kādus pārlūkus Jūsu apmeklētāji izmanto. Katra pārlūka versija ir izdalīta atsevišķi."
|
551 |
},
|
552 |
"Feedback": {
|
553 |
"DoYouHaveBugReportOrFeatureRequest": "Vai Jums ir kļūdas ziņojums vai papildus funkcionalitātes pieprasījums?",
|
app/lang/nb.json
CHANGED
@@ -1074,7 +1074,7 @@
|
|
1074 |
"UserAgent": "Bruker-agent",
|
1075 |
"MobileApp": "Mobil-app",
|
1076 |
"WidgetBrowsers": "Besøkendes nettlesere",
|
1077 |
-
"
|
1078 |
},
|
1079 |
"Diagnostics": {
|
1080 |
"ConfigFileTitle": "Konfigurasjonsfil",
|
1074 |
"UserAgent": "Bruker-agent",
|
1075 |
"MobileApp": "Mobil-app",
|
1076 |
"WidgetBrowsers": "Besøkendes nettlesere",
|
1077 |
+
"WidgetBrowserVersionsDocumentation": "Denne rapporten inneholder informasjon om hva slags nettleser som dine besøkere bruker. Alle nettleserversjoner er opplistet separat."
|
1078 |
},
|
1079 |
"Diagnostics": {
|
1080 |
"ConfigFileTitle": "Konfigurasjonsfil",
|
app/lang/nl.json
CHANGED
@@ -1277,7 +1277,7 @@
|
|
1277 |
"MobileApp": "Mobiele app",
|
1278 |
"XVisitsFromDevices": "%1$s bezoeken van %2$s apparaten",
|
1279 |
"WidgetBrowsers": "Browser bezoeker",
|
1280 |
-
"
|
1281 |
},
|
1282 |
"Diagnostics": {
|
1283 |
"ConfigFileTitle": "Configuratiebestand",
|
1277 |
"MobileApp": "Mobiele app",
|
1278 |
"XVisitsFromDevices": "%1$s bezoeken van %2$s apparaten",
|
1279 |
"WidgetBrowsers": "Browser bezoeker",
|
1280 |
+
"WidgetBrowserVersionsDocumentation": "Dit rapport bevat informatie over het type browsers dat door door uw bezoekers werd gebruikt. Elke browserversie wordt apart vermeld."
|
1281 |
},
|
1282 |
"Diagnostics": {
|
1283 |
"ConfigFileTitle": "Configuratiebestand",
|
app/lang/pl.json
CHANGED
@@ -1281,7 +1281,7 @@
|
|
1281 |
"MobileApp": "Aplikacja mobilna",
|
1282 |
"XVisitsFromDevices": "%1$s wizyt z %2$s urządzeń",
|
1283 |
"WidgetBrowsers": "Przeglądarki odwiedzających",
|
1284 |
-
"
|
1285 |
},
|
1286 |
"Diagnostics": {
|
1287 |
"ConfigFileTitle": "Plik konfiguracyjny",
|
@@ -3355,7 +3355,6 @@
|
|
3355 |
"KeepURLFragmentsLong": "Zachowaj fragmenty adresu URL podczas śledzenia",
|
3356 |
"ListOfIpsToBeExcludedOnAllWebsites": "Adresy IP z listy poniżej zostaną wykluczone ze śledzonych na wszystkich stronach.",
|
3357 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Parametry dotyczące listy zapytań z adresami URL przedstawione poniżej zostaną wykluczone ze statystyk na wszystkich stronach.",
|
3358 |
-
"ListOfQueryParametersToExclude": "Wprowadź listę parametrów zapytania z adresu, po jednym w linii, które mają być pominięte przy śledzeniu. Wyrażenia regularne takie jak %s są wspierane.",
|
3359 |
"LogAnalytics": "Analiza logów",
|
3360 |
"LogAnalyticsDescription": "Jeśli śledzenie przy pomocy kodu JavaScript nie jest dostępne, możesz %1$sskorzystać z analizy logów serwera%2$s, jako alternatywnej metody śledzenia użytkowników serwisu.",
|
3361 |
"MainDescription": "Twoje raporty z analityką statystyczną stron wymagają posiadania serwisu internetowego! Dodaj, zaktualizuj, zmień serwis internetowy, i wyświetl kod JavaScript do umieszczenia na stronach.",
|
1281 |
"MobileApp": "Aplikacja mobilna",
|
1282 |
"XVisitsFromDevices": "%1$s wizyt z %2$s urządzeń",
|
1283 |
"WidgetBrowsers": "Przeglądarki odwiedzających",
|
1284 |
+
"WidgetBrowserVersionsDocumentation": "Ten raport zawiera informacje o rodzajach przeglądarek używanych przez Twoich odwiedzających. Każda wersja przeglądarki prezentowana jest osobno."
|
1285 |
},
|
1286 |
"Diagnostics": {
|
1287 |
"ConfigFileTitle": "Plik konfiguracyjny",
|
3355 |
"KeepURLFragmentsLong": "Zachowaj fragmenty adresu URL podczas śledzenia",
|
3356 |
"ListOfIpsToBeExcludedOnAllWebsites": "Adresy IP z listy poniżej zostaną wykluczone ze śledzonych na wszystkich stronach.",
|
3357 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Parametry dotyczące listy zapytań z adresami URL przedstawione poniżej zostaną wykluczone ze statystyk na wszystkich stronach.",
|
|
|
3358 |
"LogAnalytics": "Analiza logów",
|
3359 |
"LogAnalyticsDescription": "Jeśli śledzenie przy pomocy kodu JavaScript nie jest dostępne, możesz %1$sskorzystać z analizy logów serwera%2$s, jako alternatywnej metody śledzenia użytkowników serwisu.",
|
3360 |
"MainDescription": "Twoje raporty z analityką statystyczną stron wymagają posiadania serwisu internetowego! Dodaj, zaktualizuj, zmień serwis internetowy, i wyświetl kod JavaScript do umieszczenia na stronach.",
|
app/lang/pt-br.json
CHANGED
@@ -1295,7 +1295,7 @@
|
|
1295 |
"MobileApp": "Aplicativo móvel",
|
1296 |
"XVisitsFromDevices": "%1$s visitas de %2$s dispositivos",
|
1297 |
"WidgetBrowsers": "Navegador dos Visitantes",
|
1298 |
-
"
|
1299 |
},
|
1300 |
"Diagnostics": {
|
1301 |
"ConfigFileTitle": "Arquivo de configuração",
|
@@ -3538,7 +3538,6 @@
|
|
3538 |
"KeepURLFragmentsLong": "Mantenha fragmentos de URL da página quando estiver rastreando URLs de páginas",
|
3539 |
"ListOfIpsToBeExcludedOnAllWebsites": "Os IPs abaixo serão excluídos por terem sido rastreados em todos os sites.",
|
3540 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Os parâmetros Query URL abaixo serão excluídos das URLs em todos os sites.",
|
3541 |
-
"ListOfQueryParametersToExclude": "Entre com a lista de parâmetros URL Query, um por linha, para excluir os relatórios das páginas URL. Expressões regulares tais como %s são suportadas.",
|
3542 |
"LogAnalytics": "Análise de registro",
|
3543 |
"LogAnalyticsDescription": "Se o método de rastreamento Javascript não for viável, você pode %1$susar análise de registro do servidor%2$s como um método alternativo para rastrear os usuários do seu site.",
|
3544 |
"MainDescription": "Seus relatórios de Web Analytics precisam de sites! Adicione, atualize, exclua sites, e mostre o JavaScript a ser inserido em suas páginas.",
|
1295 |
"MobileApp": "Aplicativo móvel",
|
1296 |
"XVisitsFromDevices": "%1$s visitas de %2$s dispositivos",
|
1297 |
"WidgetBrowsers": "Navegador dos Visitantes",
|
1298 |
+
"WidgetBrowserVersionsDocumentation": "Este relatório contém informações sobre o tipo de navegador que os visitantes estavam usando. Cada versão do navegador é listada separadamente."
|
1299 |
},
|
1300 |
"Diagnostics": {
|
1301 |
"ConfigFileTitle": "Arquivo de configuração",
|
3538 |
"KeepURLFragmentsLong": "Mantenha fragmentos de URL da página quando estiver rastreando URLs de páginas",
|
3539 |
"ListOfIpsToBeExcludedOnAllWebsites": "Os IPs abaixo serão excluídos por terem sido rastreados em todos os sites.",
|
3540 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Os parâmetros Query URL abaixo serão excluídos das URLs em todos os sites.",
|
|
|
3541 |
"LogAnalytics": "Análise de registro",
|
3542 |
"LogAnalyticsDescription": "Se o método de rastreamento Javascript não for viável, você pode %1$susar análise de registro do servidor%2$s como um método alternativo para rastrear os usuários do seu site.",
|
3543 |
"MainDescription": "Seus relatórios de Web Analytics precisam de sites! Adicione, atualize, exclua sites, e mostre o JavaScript a ser inserido em suas páginas.",
|
app/lang/pt.json
CHANGED
@@ -1317,7 +1317,7 @@
|
|
1317 |
"XVisitsFromDevices": "%1$s visitas de %2$s dispositivos",
|
1318 |
"Wearable": "Dispositivo utilizável",
|
1319 |
"WidgetBrowsers": "Navegador do visitante",
|
1320 |
-
"
|
1321 |
},
|
1322 |
"Diagnostics": {
|
1323 |
"ConfigFileTitle": "Ficheiro de configuração",
|
@@ -3638,7 +3638,6 @@
|
|
3638 |
"KeepURLFragmentsLong": "Manter fragmentos de endereços de páginas no acompanhamento dos endereços das páginas",
|
3639 |
"ListOfIpsToBeExcludedOnAllWebsites": "Os IPs abaixo serão excluídos do acompanhamento em todos os sites.",
|
3640 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Os parâmetros de consulta de endereços abaixo serão excluídos dos endereços de todos os sites.",
|
3641 |
-
"ListOfQueryParametersToExclude": "Introduza a lista de parâmetros de consulta de endereços, um por linha, para excluir dos relatórios de endereços de páginas. Expressões regulares como %s são suportadas.",
|
3642 |
"LogAnalytics": "Análise de registos",
|
3643 |
"LogAnalyticsDescription": "Se o método de monitorização por JavaScript não for possível, pode %1$sutilizar a analítica de registo do servidor%2$s como um método alternativo para a monitorização dos utilizadores do seu <i>site<\/i> da Web.",
|
3644 |
"MainDescription": "Os seus relatórios de Analíticas Web necessitam de site! Adicione, atualize, elimine site e mostre o JavaScript para inserir nas suas páginas.",
|
1317 |
"XVisitsFromDevices": "%1$s visitas de %2$s dispositivos",
|
1318 |
"Wearable": "Dispositivo utilizável",
|
1319 |
"WidgetBrowsers": "Navegador do visitante",
|
1320 |
+
"WidgetBrowserVersionsDocumentation": "Este relatório contém informações sobre o tipo de navegadores que os seus visitantes estavam a utilizar. Cada versão do navegador é listada separadamente."
|
1321 |
},
|
1322 |
"Diagnostics": {
|
1323 |
"ConfigFileTitle": "Ficheiro de configuração",
|
3638 |
"KeepURLFragmentsLong": "Manter fragmentos de endereços de páginas no acompanhamento dos endereços das páginas",
|
3639 |
"ListOfIpsToBeExcludedOnAllWebsites": "Os IPs abaixo serão excluídos do acompanhamento em todos os sites.",
|
3640 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Os parâmetros de consulta de endereços abaixo serão excluídos dos endereços de todos os sites.",
|
|
|
3641 |
"LogAnalytics": "Análise de registos",
|
3642 |
"LogAnalyticsDescription": "Se o método de monitorização por JavaScript não for possível, pode %1$sutilizar a analítica de registo do servidor%2$s como um método alternativo para a monitorização dos utilizadores do seu <i>site<\/i> da Web.",
|
3643 |
"MainDescription": "Os seus relatórios de Analíticas Web necessitam de site! Adicione, atualize, elimine site e mostre o JavaScript para inserir nas suas páginas.",
|
app/lang/ro.json
CHANGED
@@ -917,7 +917,7 @@
|
|
917 |
"TV": "Tv",
|
918 |
"UserAgent": "User-Agent",
|
919 |
"WidgetBrowsers": "Browsere vizitatori",
|
920 |
-
"
|
921 |
},
|
922 |
"Diagnostics": {
|
923 |
"ConfigFileTitle": "Fişier configurări",
|
917 |
"TV": "Tv",
|
918 |
"UserAgent": "User-Agent",
|
919 |
"WidgetBrowsers": "Browsere vizitatori",
|
920 |
+
"WidgetBrowserVersionsDocumentation": "Acest raport conține informații cu privire la ce fel de browser utilizeaza de vizitatori . Fiecare versiune de browser este listată separat."
|
921 |
},
|
922 |
"Diagnostics": {
|
923 |
"ConfigFileTitle": "Fişier configurări",
|
app/lang/ru.json
CHANGED
@@ -134,6 +134,8 @@
|
|
134 |
"DaysSinceFirstVisit": "Дней с момента первого посещения",
|
135 |
"DaysSinceLastEcommerceOrder": "Дней с момента последнего электронного заказа.",
|
136 |
"DaysSinceLastVisit": "Дней прошло с момента последнего посещения",
|
|
|
|
|
137 |
"Default": "По умолчанию",
|
138 |
"DefaultAppended": "(по умолчанию)",
|
139 |
"Delete": "Удалить",
|
@@ -506,7 +508,9 @@
|
|
506 |
"Comparisons": "Сравнение",
|
507 |
"ClickToRemoveComp": "Нажмите, чтобы удалить это сравнение.",
|
508 |
"MaximumNumberOfSegmentsComparedIs": "Максимальное количество сегментов, которые можно сравнивать одновременно, равно%s.",
|
509 |
-
"MaximumNumberOfPeriodsComparedIs": "Максимальне количество периодов, которые можно сравнить одновременно: %s."
|
|
|
|
|
510 |
},
|
511 |
"Mobile": {
|
512 |
"AboutPiwikMobile": "О Matomo Mobile",
|
@@ -1307,7 +1311,7 @@
|
|
1307 |
"MobileApp": "Мобильное приложение",
|
1308 |
"XVisitsFromDevices": "%1$s посещений с %2$s устройств",
|
1309 |
"WidgetBrowsers": "Браузер посетителя",
|
1310 |
-
"
|
1311 |
},
|
1312 |
"Diagnostics": {
|
1313 |
"ConfigFileTitle": "Файл конфигурации",
|
@@ -3408,7 +3412,6 @@
|
|
3408 |
"KeepURLFragmentsLong": "Сохранять фрагменты URL при отслеживании страниц",
|
3409 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP адреса ниже будут исключены из статистики и не будут учитываться при сборе данных на всех сайтах.",
|
3410 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Запросы URL-параметров ниже будут исключены и не будут учитываться при сборе статистики на всех сайтах.",
|
3411 |
-
"ListOfQueryParametersToExclude": "Введите список параметров запроса URL, по одному в каждой строке, чтобы исключить из отчетов URL-адреса страниц. Регулярные выражения, такие как %s — поддерживаются.",
|
3412 |
"LogAnalytics": "Журнал аналитики",
|
3413 |
"LogAnalyticsDescription": "Если метод отслеживания с помощью Javascript невозможен, то можете использовать %1$sлоги сервера%2$s в качестве альтернативного метода для отслеживания пользователей вашего сайта.",
|
3414 |
"MainDescription": "Для ведения статистики требуется добавить сайты. Добавляйте, обновляйте, удаляйте информацию о сайтах, а также просмотрите JavaScript-код для вставки на ваши страницы.",
|
134 |
"DaysSinceFirstVisit": "Дней с момента первого посещения",
|
135 |
"DaysSinceLastEcommerceOrder": "Дней с момента последнего электронного заказа.",
|
136 |
"DaysSinceLastVisit": "Дней прошло с момента последнего посещения",
|
137 |
+
"SecondsSinceLastVisit": "Прошло секунд с момента последнего посещения",
|
138 |
+
"SecondsSinceFirstVisit": "Прошло секунд с момента первого посещения",
|
139 |
"Default": "По умолчанию",
|
140 |
"DefaultAppended": "(по умолчанию)",
|
141 |
"Delete": "Удалить",
|
508 |
"Comparisons": "Сравнение",
|
509 |
"ClickToRemoveComp": "Нажмите, чтобы удалить это сравнение.",
|
510 |
"MaximumNumberOfSegmentsComparedIs": "Максимальное количество сегментов, которые можно сравнивать одновременно, равно%s.",
|
511 |
+
"MaximumNumberOfPeriodsComparedIs": "Максимальне количество периодов, которые можно сравнить одновременно: %s.",
|
512 |
+
"PreviousPeriod": "Предыдущий Период",
|
513 |
+
"PreviousYear": "Предыдущий Год"
|
514 |
},
|
515 |
"Mobile": {
|
516 |
"AboutPiwikMobile": "О Matomo Mobile",
|
1311 |
"MobileApp": "Мобильное приложение",
|
1312 |
"XVisitsFromDevices": "%1$s посещений с %2$s устройств",
|
1313 |
"WidgetBrowsers": "Браузер посетителя",
|
1314 |
+
"WidgetBrowserVersionsDocumentation": "Этот отчёт содержит информацию по браузерам, которые используют ваши посетители. Каждая версия браузера отображается отдельно."
|
1315 |
},
|
1316 |
"Diagnostics": {
|
1317 |
"ConfigFileTitle": "Файл конфигурации",
|
3412 |
"KeepURLFragmentsLong": "Сохранять фрагменты URL при отслеживании страниц",
|
3413 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP адреса ниже будут исключены из статистики и не будут учитываться при сборе данных на всех сайтах.",
|
3414 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Запросы URL-параметров ниже будут исключены и не будут учитываться при сборе статистики на всех сайтах.",
|
|
|
3415 |
"LogAnalytics": "Журнал аналитики",
|
3416 |
"LogAnalyticsDescription": "Если метод отслеживания с помощью Javascript невозможен, то можете использовать %1$sлоги сервера%2$s в качестве альтернативного метода для отслеживания пользователей вашего сайта.",
|
3417 |
"MainDescription": "Для ведения статистики требуется добавить сайты. Добавляйте, обновляйте, удаляйте информацию о сайтах, а также просмотрите JavaScript-код для вставки на ваши страницы.",
|
app/lang/sq.json
CHANGED
@@ -32,6 +32,7 @@
|
|
32 |
"ChooseLanguage": "Zgjidhni gjuhën",
|
33 |
"ChoosePeriod": "Zgjidhni periudhë",
|
34 |
"ClickHere": "Për më tepër të dhëna, klikoni këtu.",
|
|
|
35 |
"DoubleClickToChangePeriod": "Dyklikoni që të zbatohet kjo periudhë.",
|
36 |
"Close": "Mbylle",
|
37 |
"ClickToSearch": "Klikoni për kërkim",
|
@@ -627,6 +628,7 @@
|
|
627 |
"UserAuthentication": "Mirëfilltësim përdoruesi",
|
628 |
"UsingTokenAuth": "Nëse doni %1$s të kërkoni të dhëna brenda një programthi, një crontab-i, etj. %2$s lypset të shtoni parametrin e URL-së %3$s te URL-të thirrëse të API-t që lypin doemos mirëfilltësim.",
|
629 |
"Glossary": "Fjalorth",
|
|
|
630 |
"LearnAboutCommonlyUsedTerms2": "Mësoni më tepër rreth termash të përdorur rëndom, që të përfitoni maksimumin prej Matomo Analytics.",
|
631 |
"EvolutionMetricName": "Ecuri e %s"
|
632 |
},
|
@@ -1041,6 +1043,7 @@
|
|
1041 |
"MissingRequirementsNotice": "Ju lutemi, përditësojeni %1$s %2$s me një version më të ri, është i domosdoshëm %1$s %3$s.",
|
1042 |
"MissingRequirementsPleaseInstallNotice": "Ju lutemi, instaloni %1$s %2$s pasi është i domosdoshëm për %3$s.",
|
1043 |
"NoZipFileSelected": "Ju lutemi, përzgjidhni një kartelë ZIP.",
|
|
|
1044 |
"NumUpdatesAvailable": "%s Përditësim(e) gati",
|
1045 |
"NoPluginSettings": "S’ka rregullime shtojce që mund të formësohen",
|
1046 |
"Origin": "Origjina",
|
@@ -1328,18 +1331,23 @@
|
|
1328 |
"Device": "Pajisje",
|
1329 |
"DeviceBrand": "Markë pajisjeje",
|
1330 |
"DeviceBrands": "Marka pajisjesh",
|
|
|
1331 |
"DeviceDetection": "Zbulim pajisjeje",
|
1332 |
"DeviceModel": "Model pajisjeje",
|
1333 |
"DeviceModels": "Modele pajisjesh",
|
|
|
1334 |
"DevicesDetection": "Pajisje Vizitorësh",
|
1335 |
"DeviceType": "Lloj pajisjeje",
|
1336 |
"DeviceTypes": "Lloje pajisjesh",
|
|
|
1337 |
"FeaturePhone": "Telefon",
|
1338 |
"OperatingSystemFamilies": "Familje Sistemesh Operativë",
|
1339 |
"OperatingSystemFamily": "Familje Sistemi Operativ",
|
|
|
1340 |
"OperatingSystemCode": "Kod sistemi operativ",
|
1341 |
"OperatingSystems": "Sisteme operativë",
|
1342 |
"OperatingSystemVersions": "Versione Sistemesh Operativë",
|
|
|
1343 |
"PluginDescription": "Furnizon të dhëna të zgjeruara rreth pajisje përdoruesish, të tilla si Marka (prodhuesi), Modeli (version pajisjeje), lloj pajisjeje (tv, konsola, telefon të mençur, desktop, etj) dhe të tjera.",
|
1344 |
"SmartDisplay": "Ekran i mençur",
|
1345 |
"Smartphone": "Telefon i mençur",
|
@@ -1359,7 +1367,8 @@
|
|
1359 |
"MediaPlayer": "Lojtës Mediash",
|
1360 |
"XVisitsFromDevices": "%1$s vizita nga %2$s pajisje",
|
1361 |
"WidgetBrowsers": "Shfletues Vizitori",
|
1362 |
-
"WidgetBrowsersDocumentation": "Ky raport përmban të dhëna rreth
|
|
|
1363 |
},
|
1364 |
"Diagnostics": {
|
1365 |
"ConfigFileTitle": "Kartelë formësimesh",
|
@@ -3711,6 +3720,7 @@
|
|
3711 |
"Format_Utc": "UTC%s",
|
3712 |
"GlobalExcludedUserAgentHelp1": "Jepni listën e agjentëve të përdoruesit që duhen përjashtuar nga ndjekja prej Matomo-s.",
|
3713 |
"GlobalExcludedUserAgentHelp2": "Këtë mund ta përdorni për përjashtim bot-esh nga ndjekja.",
|
|
|
3714 |
"GlobalListExcludedIps": "Listë globale IP-sh të përjashtuara",
|
3715 |
"GlobalListExcludedQueryParameters": "Listë globale parametrash URL-sh Kërkese që duhen përjashtuar",
|
3716 |
"GlobalListExcludedUserAgents": "Listë globale agjentësh përdoruesish për përjashtim",
|
@@ -3729,7 +3739,7 @@
|
|
3729 |
"KeepURLFragmentsLong": "Mbaji fragmentet e URL-ve të Faqeve kur ndiqen URL Faqesh",
|
3730 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP-të më poshtë do të përjashtohen në krejt sajtet nga ndjekja.",
|
3731 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Parametrat për URL-ra Kërkesash më poshtë do të përjashtohen nga URL-të për krejt sajtet.",
|
3732 |
-
"ListOfQueryParametersToExclude": "Jepni listën e Parametrave URL
|
3733 |
"LogAnalytics": "Analiza Regjistri",
|
3734 |
"LogAnalyticsDescription": "Nëse metoda Javascript e ndjekjeve s’është e mundur, si metodë alternative për ndjekjen e përdoruesve të sajtit tuaj mund të %1$spërdorni analizat e regjistrit të shërbyesit%2$s.",
|
3735 |
"MainDescription": "Raportet tuaja Analizash Web lypin sajte! Shtoni, përditësoni, hiqni sajte, dhe shfaqni JavaScript-in për futje në faqet tuaja.",
|
@@ -4545,6 +4555,7 @@
|
|
4545 |
"UserId": {
|
4546 |
"UserId": "ID përdoruesi",
|
4547 |
"UserReportTitle": "ID-ra përdoruesish",
|
|
|
4548 |
"PluginDescription": "Shfaq raporte përdoruesi"
|
4549 |
},
|
4550 |
"UserLanguage": {
|
32 |
"ChooseLanguage": "Zgjidhni gjuhën",
|
33 |
"ChoosePeriod": "Zgjidhni periudhë",
|
34 |
"ClickHere": "Për më tepër të dhëna, klikoni këtu.",
|
35 |
+
"CompareTo": "Krahasoje me:",
|
36 |
"DoubleClickToChangePeriod": "Dyklikoni që të zbatohet kjo periudhë.",
|
37 |
"Close": "Mbylle",
|
38 |
"ClickToSearch": "Klikoni për kërkim",
|
628 |
"UserAuthentication": "Mirëfilltësim përdoruesi",
|
629 |
"UsingTokenAuth": "Nëse doni %1$s të kërkoni të dhëna brenda një programthi, një crontab-i, etj. %2$s lypset të shtoni parametrin e URL-së %3$s te URL-të thirrëse të API-t që lypin doemos mirëfilltësim.",
|
630 |
"Glossary": "Fjalorth",
|
631 |
+
"MainMetricsReportDocumentation": "Ky raport ju jep një përmbledhje të statistikave më të rëndësishme nëpër krejt kategoritë dhe shtojcat.",
|
632 |
"LearnAboutCommonlyUsedTerms2": "Mësoni më tepër rreth termash të përdorur rëndom, që të përfitoni maksimumin prej Matomo Analytics.",
|
633 |
"EvolutionMetricName": "Ecuri e %s"
|
634 |
},
|
1043 |
"MissingRequirementsNotice": "Ju lutemi, përditësojeni %1$s %2$s me një version më të ri, është i domosdoshëm %1$s %3$s.",
|
1044 |
"MissingRequirementsPleaseInstallNotice": "Ju lutemi, instaloni %1$s %2$s pasi është i domosdoshëm për %3$s.",
|
1045 |
"NoZipFileSelected": "Ju lutemi, përzgjidhni një kartelë ZIP.",
|
1046 |
+
"FileExceedsUploadLimit": "Kartela e përzgjedhur tejkalon kufi ngarkimesh të shërbyesit tuaj.",
|
1047 |
"NumUpdatesAvailable": "%s Përditësim(e) gati",
|
1048 |
"NoPluginSettings": "S’ka rregullime shtojce që mund të formësohen",
|
1049 |
"Origin": "Origjina",
|
1331 |
"Device": "Pajisje",
|
1332 |
"DeviceBrand": "Markë pajisjeje",
|
1333 |
"DeviceBrands": "Marka pajisjesh",
|
1334 |
+
"DeviceBrandReportDocumentation": "Ky raport shfaq markat \/ prodhuesit e pajisjeve që përdornin vizitorët tuaj. Në shumicën e rasteve ky informacion është i passhëm vetëm për pajisje jo desktop.",
|
1335 |
"DeviceDetection": "Zbulim pajisjeje",
|
1336 |
"DeviceModel": "Model pajisjeje",
|
1337 |
"DeviceModels": "Modele pajisjesh",
|
1338 |
+
"DeviceModelReportDocumentation": "Ky raport shfaq pajisjet që përdorin vizitorët tuaj. Secili model shfaqet me markën e pajisjes, ngaqë disa emra modelesh përdoren nga shumë marka.",
|
1339 |
"DevicesDetection": "Pajisje Vizitorësh",
|
1340 |
"DeviceType": "Lloj pajisjeje",
|
1341 |
"DeviceTypes": "Lloje pajisjesh",
|
1342 |
+
"DeviceTypeReportDocumentation": "Ky raport shfaq llojet e pajisjeve që përdornin vizitorët tuaj. Ky raport do të shfaqë përherë krejt llojet e pajisjeve që është në gjendje të pikasë Matomo-ja, edhe pse s’pati vizita me një lloj të caktuar.",
|
1343 |
"FeaturePhone": "Telefon",
|
1344 |
"OperatingSystemFamilies": "Familje Sistemesh Operativë",
|
1345 |
"OperatingSystemFamily": "Familje Sistemi Operativ",
|
1346 |
+
"OperatingSystemFamiliesReportDocumentation": "Ky raport shfaq sistemet operative që përdorin vizitorët tuaj, grupuar sipas familjeve të sistemit. Një familje sistemi operativ përbëhet nga versioni ose shpërndarje të ndryshme.",
|
1347 |
"OperatingSystemCode": "Kod sistemi operativ",
|
1348 |
"OperatingSystems": "Sisteme operativë",
|
1349 |
"OperatingSystemVersions": "Versione Sistemesh Operativë",
|
1350 |
+
"OperatingSystemVersionsReportDocumentation": "Ky raport ju shfaq sistemet operative që po përdorin vizitorët tuaj. Çdo version dhe shpërndarje shfaqet më vete.",
|
1351 |
"PluginDescription": "Furnizon të dhëna të zgjeruara rreth pajisje përdoruesish, të tilla si Marka (prodhuesi), Modeli (version pajisjeje), lloj pajisjeje (tv, konsola, telefon të mençur, desktop, etj) dhe të tjera.",
|
1352 |
"SmartDisplay": "Ekran i mençur",
|
1353 |
"Smartphone": "Telefon i mençur",
|
1367 |
"MediaPlayer": "Lojtës Mediash",
|
1368 |
"XVisitsFromDevices": "%1$s vizita nga %2$s pajisje",
|
1369 |
"WidgetBrowsers": "Shfletues Vizitori",
|
1370 |
+
"WidgetBrowsersDocumentation": "Ky raport përmban të dhëna rreth ç’lloje shfletuesish përdornin vizitorët tuaj.",
|
1371 |
+
"WidgetBrowserVersionsDocumentation": "Ky raport përmban të dhëna rreth llojeve të shfletuesit që përdornin vizitorët tuaj. Secili version i një shfletuesi tregohet veçmas."
|
1372 |
},
|
1373 |
"Diagnostics": {
|
1374 |
"ConfigFileTitle": "Kartelë formësimesh",
|
3720 |
"Format_Utc": "UTC%s",
|
3721 |
"GlobalExcludedUserAgentHelp1": "Jepni listën e agjentëve të përdoruesit që duhen përjashtuar nga ndjekja prej Matomo-s.",
|
3722 |
"GlobalExcludedUserAgentHelp2": "Këtë mund ta përdorni për përjashtim bot-esh nga ndjekja.",
|
3723 |
+
"GlobalExcludedUserAgentHelp3": "Shprehje të rregullta të tilla si %s mbulohen.",
|
3724 |
"GlobalListExcludedIps": "Listë globale IP-sh të përjashtuara",
|
3725 |
"GlobalListExcludedQueryParameters": "Listë globale parametrash URL-sh Kërkese që duhen përjashtuar",
|
3726 |
"GlobalListExcludedUserAgents": "Listë globale agjentësh përdoruesish për përjashtim",
|
3739 |
"KeepURLFragmentsLong": "Mbaji fragmentet e URL-ve të Faqeve kur ndiqen URL Faqesh",
|
3740 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP-të më poshtë do të përjashtohen në krejt sajtet nga ndjekja.",
|
3741 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Parametrat për URL-ra Kërkesash më poshtë do të përjashtohen nga URL-të për krejt sajtet.",
|
3742 |
+
"ListOfQueryParametersToExclude": "Jepni listën e Parametrave për Kërkesë URL, një për rresht, që të përjashtohen prej raportesh URL-sh Faqesh. Shprehje të rregullta të tilla si %s mbulohen.",
|
3743 |
"LogAnalytics": "Analiza Regjistri",
|
3744 |
"LogAnalyticsDescription": "Nëse metoda Javascript e ndjekjeve s’është e mundur, si metodë alternative për ndjekjen e përdoruesve të sajtit tuaj mund të %1$spërdorni analizat e regjistrit të shërbyesit%2$s.",
|
3745 |
"MainDescription": "Raportet tuaja Analizash Web lypin sajte! Shtoni, përditësoni, hiqni sajte, dhe shfaqni JavaScript-in për futje në faqet tuaja.",
|
4555 |
"UserId": {
|
4556 |
"UserId": "ID përdoruesi",
|
4557 |
"UserReportTitle": "ID-ra përdoruesish",
|
4558 |
+
"UserReportDocumentation": "Ky raport shfaq vizita dhe vlera të tjera të përgjithshme për çdo ID individuale Përdoruesi.",
|
4559 |
"PluginDescription": "Shfaq raporte përdoruesi"
|
4560 |
},
|
4561 |
"UserLanguage": {
|
app/lang/sr.json
CHANGED
@@ -1094,7 +1094,7 @@
|
|
1094 |
"UserAgent": "Korisnički agent",
|
1095 |
"MobileApp": "Mobilna aplikacija",
|
1096 |
"WidgetBrowsers": "Brauzeri posetilaca",
|
1097 |
-
"
|
1098 |
},
|
1099 |
"Diagnostics": {
|
1100 |
"ConfigFileTitle": "Datoteka sa podešavanjima",
|
@@ -3057,7 +3057,6 @@
|
|
3057 |
"KeepURLFragmentsLong": "Zadrži URL fragmente prilikom praćenja",
|
3058 |
"ListOfIpsToBeExcludedOnAllWebsites": "Sledeće IP adrese će biti izuzete iz praćenja na svim sajtovima.",
|
3059 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Sledeći parametri će biti izuzeti iz praćenja na svim sajtovima.",
|
3060 |
-
"ListOfQueryParametersToExclude": "Navedite listu parametara, jedan po liniji, koje treba izuzeti iz izveštaja. Dozvoljeni su regularni izrazi poput %s.",
|
3061 |
"LogAnalytics": "Analiza zapisa",
|
3062 |
"LogAnalyticsDescription": "Ukoliko praćenje pomoću javaskripta nije moguće, možete %1$skoristiti analizu serverskih zapisa%2$s kao alternativnu metodu praćenja posetilaca vašeg sajta.",
|
3063 |
"MainDescription": "Potrebni su vam sajtovi da biste mogli da pratite izveštaje. Dodajte, izmenite ili uklonite sajtove, pogledajte JavaScript kod koji je potrebno postaviti na vaše stranice.",
|
1094 |
"UserAgent": "Korisnički agent",
|
1095 |
"MobileApp": "Mobilna aplikacija",
|
1096 |
"WidgetBrowsers": "Brauzeri posetilaca",
|
1097 |
+
"WidgetBrowserVersionsDocumentation": "Ovaj izveštaj prikazuje koje brauzere koriste vaši posetioci. Svaka verzija brauzera je prikazana posebno."
|
1098 |
},
|
1099 |
"Diagnostics": {
|
1100 |
"ConfigFileTitle": "Datoteka sa podešavanjima",
|
3057 |
"KeepURLFragmentsLong": "Zadrži URL fragmente prilikom praćenja",
|
3058 |
"ListOfIpsToBeExcludedOnAllWebsites": "Sledeće IP adrese će biti izuzete iz praćenja na svim sajtovima.",
|
3059 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Sledeći parametri će biti izuzeti iz praćenja na svim sajtovima.",
|
|
|
3060 |
"LogAnalytics": "Analiza zapisa",
|
3061 |
"LogAnalyticsDescription": "Ukoliko praćenje pomoću javaskripta nije moguće, možete %1$skoristiti analizu serverskih zapisa%2$s kao alternativnu metodu praćenja posetilaca vašeg sajta.",
|
3062 |
"MainDescription": "Potrebni su vam sajtovi da biste mogli da pratite izveštaje. Dodajte, izmenite ili uklonite sajtove, pogledajte JavaScript kod koji je potrebno postaviti na vaše stranice.",
|
app/lang/sv.json
CHANGED
@@ -133,7 +133,10 @@
|
|
133 |
"DaysHours": "%1$s dagar %2$s timmar",
|
134 |
"DaysSinceFirstVisit": "Dagar sedan första besöket",
|
135 |
"DaysSinceLastEcommerceOrder": "Antalet dagar sedan senaste ordern",
|
|
|
136 |
"DaysSinceLastVisit": "Dagar sedan senaste besöket",
|
|
|
|
|
137 |
"Default": "Standard",
|
138 |
"DefaultAppended": "(standard)",
|
139 |
"Delete": "Ta bort",
|
@@ -514,7 +517,10 @@
|
|
514 |
"MaximumNumberOfSegmentsComparedIs": "Max %s segment kan jämföras samtidigt.",
|
515 |
"CompareDatesParamMustMatchComparePeriods": "Längden av frågeparametern %1$s måste matcha länden av %2$s.",
|
516 |
"MaximumNumberOfPeriodsComparedIs": "Max %s perioder kan jämföras samtidigt.",
|
517 |
-
"Custom": "Anpassad"
|
|
|
|
|
|
|
518 |
},
|
519 |
"Mobile": {
|
520 |
"AboutPiwikMobile": "Om Matomo Mobile",
|
@@ -703,7 +709,8 @@
|
|
703 |
"WidgetSearchNoResultKeywords": "Nyckelord utan resultat",
|
704 |
"ActionType": "Åtgärdstyp",
|
705 |
"ActionTypes": "Typer av handlingar",
|
706 |
-
"Behaviour": "Beteende"
|
|
|
707 |
},
|
708 |
"Annotations": {
|
709 |
"AddAnnotationsFor": "Lägg till en anteckning för %s...",
|
@@ -1324,7 +1331,7 @@
|
|
1324 |
"MobileApp": "Mobilapp",
|
1325 |
"XVisitsFromDevices": "%1$s besök från %2$s enheter",
|
1326 |
"WidgetBrowsers": "Webbläsare",
|
1327 |
-
"
|
1328 |
},
|
1329 |
"Diagnostics": {
|
1330 |
"ConfigFileTitle": "Konfigurationsfil",
|
@@ -3449,7 +3456,6 @@
|
|
3449 |
"KeepURLFragmentsLong": "Behåll sidans URL fragment när du spårar sidans URL.",
|
3450 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP-adresserna som är listade nedan kommer att bli exkluderade från spårning på samtliga webbplatser.",
|
3451 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Webbadressernas parametrar nedan kommer att uteslutas från webbadresser på alla webbplatser.",
|
3452 |
-
"ListOfQueryParametersToExclude": "Ange en lista med URL-parametrar som du vill utesluta från Sid URL rapporterna. En parameter per rad, Regular expressions som t.ex. %s är tillåtna.",
|
3453 |
"LogAnalytics": "Loggfilsanalys",
|
3454 |
"LogAnalyticsDescription": "Om Javascript-spårning inte är möjlig kan du %1$s använda loggfilsanalys %2$s som en alternativ metod för att spåra webbplatsens användare.",
|
3455 |
"MainDescription": "Dina rapporter kräver att du har webbplatser upplagda! Lägg till, uppdatera, ta bort webbplatser, och visa JavaScript spårningskoden för att inkludera den på din webbplats.",
|
133 |
"DaysHours": "%1$s dagar %2$s timmar",
|
134 |
"DaysSinceFirstVisit": "Dagar sedan första besöket",
|
135 |
"DaysSinceLastEcommerceOrder": "Antalet dagar sedan senaste ordern",
|
136 |
+
"SecondsSinceLastEcommerceOrder": "Sekunder sedan senaste e-handelsordern",
|
137 |
"DaysSinceLastVisit": "Dagar sedan senaste besöket",
|
138 |
+
"SecondsSinceLastVisit": "Sekunder sedan senaste besöket",
|
139 |
+
"SecondsSinceFirstVisit": "Sekunder sedan första besöket",
|
140 |
"Default": "Standard",
|
141 |
"DefaultAppended": "(standard)",
|
142 |
"Delete": "Ta bort",
|
517 |
"MaximumNumberOfSegmentsComparedIs": "Max %s segment kan jämföras samtidigt.",
|
518 |
"CompareDatesParamMustMatchComparePeriods": "Längden av frågeparametern %1$s måste matcha länden av %2$s.",
|
519 |
"MaximumNumberOfPeriodsComparedIs": "Max %s perioder kan jämföras samtidigt.",
|
520 |
+
"Custom": "Anpassad",
|
521 |
+
"PreviousPeriod": "Föregående period",
|
522 |
+
"PreviousYear": "Föregående år",
|
523 |
+
"ViewAccessRequired": "Den använda token_auth har för mycket rättigheter för att användas i en icke-API-URL. Använd ett app-specifikt lösenord för en användare som bara har läsrättigheter."
|
524 |
},
|
525 |
"Mobile": {
|
526 |
"AboutPiwikMobile": "Om Matomo Mobile",
|
709 |
"WidgetSearchNoResultKeywords": "Nyckelord utan resultat",
|
710 |
"ActionType": "Åtgärdstyp",
|
711 |
"ActionTypes": "Typer av handlingar",
|
712 |
+
"Behaviour": "Beteende",
|
713 |
+
"TimeSpentInReferringAction": "Tid lagd i hänvisningsaktivitet"
|
714 |
},
|
715 |
"Annotations": {
|
716 |
"AddAnnotationsFor": "Lägg till en anteckning för %s...",
|
1331 |
"MobileApp": "Mobilapp",
|
1332 |
"XVisitsFromDevices": "%1$s besök från %2$s enheter",
|
1333 |
"WidgetBrowsers": "Webbläsare",
|
1334 |
+
"WidgetBrowserVersionsDocumentation": "Denna rapport innehåller information om vilken typ av webbläsare dina besökare använde. Varje version av webbläsare är listad separat."
|
1335 |
},
|
1336 |
"Diagnostics": {
|
1337 |
"ConfigFileTitle": "Konfigurationsfil",
|
3456 |
"KeepURLFragmentsLong": "Behåll sidans URL fragment när du spårar sidans URL.",
|
3457 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP-adresserna som är listade nedan kommer att bli exkluderade från spårning på samtliga webbplatser.",
|
3458 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Webbadressernas parametrar nedan kommer att uteslutas från webbadresser på alla webbplatser.",
|
|
|
3459 |
"LogAnalytics": "Loggfilsanalys",
|
3460 |
"LogAnalyticsDescription": "Om Javascript-spårning inte är möjlig kan du %1$s använda loggfilsanalys %2$s som en alternativ metod för att spåra webbplatsens användare.",
|
3461 |
"MainDescription": "Dina rapporter kräver att du har webbplatser upplagda! Lägg till, uppdatera, ta bort webbplatser, och visa JavaScript spårningskoden för att inkludera den på din webbplats.",
|
app/lang/tl.json
CHANGED
@@ -781,7 +781,7 @@
|
|
781 |
"TV": "Tv",
|
782 |
"UserAgent": "User-Agent",
|
783 |
"WidgetBrowsers": "Browser ng Bisita",
|
784 |
-
"
|
785 |
},
|
786 |
"Events": {
|
787 |
"AvgEventValue": "Average na value ng event ay: %s",
|
781 |
"TV": "Tv",
|
782 |
"UserAgent": "User-Agent",
|
783 |
"WidgetBrowsers": "Browser ng Bisita",
|
784 |
+
"WidgetBrowserVersionsDocumentation": "Ang ulat na ito ay naglalaman ng mga impormasyon tungkol sa kung anong browser ang gamit ng iyong bisita. Bawat browser bersyon ay magkakahiwalay na naka-lista."
|
785 |
},
|
786 |
"Events": {
|
787 |
"AvgEventValue": "Average na value ng event ay: %s",
|
app/lang/tr.json
CHANGED
@@ -909,6 +909,7 @@
|
|
909 |
"DataTableHowToSearch": "Arama yapmak için enter tuşuna basın ya da arama simgesine tıklayın",
|
910 |
"DataTableShowDimensions": "Boyutlar birleştirildi %s Boyutları ayırarak görüntüle",
|
911 |
"DataTableCombineDimensions": "Boyutlar ayrı görüntüleniyor %s Boyutları birleştirerek görüntüle",
|
|
|
912 |
"Default": "varsayılan",
|
913 |
"DonateCall1": "Matomo her zaman ücretsiz kullanılabilecek ancak bu durum geliştirmenin ücretsiz olduğu anlamına gelmiyor.",
|
914 |
"DonateCall2": "Gelişip ilerleyebilmesi için Matomo projesi sürekli desteğinize gerek duyuyor.",
|
@@ -1361,7 +1362,7 @@
|
|
1361 |
"XVisitsFromDevices": "%2$s aygıttan %1$s ziyaret",
|
1362 |
"Wearable": "Giyilebilir",
|
1363 |
"WidgetBrowsers": "Ziyaretçi Tarayıcısı",
|
1364 |
-
"
|
1365 |
},
|
1366 |
"Diagnostics": {
|
1367 |
"ConfigFileTitle": "Ayar Dosyası",
|
@@ -3742,7 +3743,6 @@
|
|
3742 |
"KeepURLFragmentsLong": "Sayfa adresleri izlenirken sayfa adresi bölünmeleri korunsun",
|
3743 |
"ListOfIpsToBeExcludedOnAllWebsites": "Aşağıdaki IP adresi hiç bir web sitesinde izlenmeyecek.",
|
3744 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Aşağıdaki sorgu adresi parametreleri hiç bir web sitesinde izlenmeyecek.",
|
3745 |
-
"ListOfQueryParametersToExclude": "Sayfa adresi raporlarına katılmayacak sorgu adresi parametrelerini ayrı satırlara yazın. %s gibi kurallı ifadeler desteklenir.",
|
3746 |
"LogAnalytics": "Günlük İstatistikleri",
|
3747 |
"LogAnalyticsDescription": "JavaScript izleme yöntemi kullanılamıyorsa, web sitesine gelen kullanıcıları izlemek için alternatif olarak %1$ssunucu günlüğü istatistiklerini%2$s kullanabilirsiniz.",
|
3748 |
"MainDescription": "Web istatistik raporlarının oluşturulabilmesi için web sitelerinin tanımlanması gerekir. Web sitesi ekleme, güncelleme, kaldırma ve sayfalarınıza eklenecek JavaScript Kodu işlemleri bu bölümden yapılabilir.",
|
909 |
"DataTableHowToSearch": "Arama yapmak için enter tuşuna basın ya da arama simgesine tıklayın",
|
910 |
"DataTableShowDimensions": "Boyutlar birleştirildi %s Boyutları ayırarak görüntüle",
|
911 |
"DataTableCombineDimensions": "Boyutlar ayrı görüntüleniyor %s Boyutları birleştirerek görüntüle",
|
912 |
+
"DateInvalid": "Belirtilen tarih ve sıklık kambinasyonu geçersiz. Lütfen tarih seçicisinden geçerli bir tarih seçin.",
|
913 |
"Default": "varsayılan",
|
914 |
"DonateCall1": "Matomo her zaman ücretsiz kullanılabilecek ancak bu durum geliştirmenin ücretsiz olduğu anlamına gelmiyor.",
|
915 |
"DonateCall2": "Gelişip ilerleyebilmesi için Matomo projesi sürekli desteğinize gerek duyuyor.",
|
1362 |
"XVisitsFromDevices": "%2$s aygıttan %1$s ziyaret",
|
1363 |
"Wearable": "Giyilebilir",
|
1364 |
"WidgetBrowsers": "Ziyaretçi Tarayıcısı",
|
1365 |
+
"WidgetBrowserVersionsDocumentation": "Bu rapor ziyaretçilerinizin kullandığı tarayıcı türlerini kapsar. Tarayıcı sürümleri ayrı ayrı listelenmiştir."
|
1366 |
},
|
1367 |
"Diagnostics": {
|
1368 |
"ConfigFileTitle": "Ayar Dosyası",
|
3743 |
"KeepURLFragmentsLong": "Sayfa adresleri izlenirken sayfa adresi bölünmeleri korunsun",
|
3744 |
"ListOfIpsToBeExcludedOnAllWebsites": "Aşağıdaki IP adresi hiç bir web sitesinde izlenmeyecek.",
|
3745 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Aşağıdaki sorgu adresi parametreleri hiç bir web sitesinde izlenmeyecek.",
|
|
|
3746 |
"LogAnalytics": "Günlük İstatistikleri",
|
3747 |
"LogAnalyticsDescription": "JavaScript izleme yöntemi kullanılamıyorsa, web sitesine gelen kullanıcıları izlemek için alternatif olarak %1$ssunucu günlüğü istatistiklerini%2$s kullanabilirsiniz.",
|
3748 |
"MainDescription": "Web istatistik raporlarının oluşturulabilmesi için web sitelerinin tanımlanması gerekir. Web sitesi ekleme, güncelleme, kaldırma ve sayfalarınıza eklenecek JavaScript Kodu işlemleri bu bölümden yapılabilir.",
|
app/lang/uk.json
CHANGED
@@ -1225,7 +1225,7 @@
|
|
1225 |
"MobileApp": "Мобільний Додаток",
|
1226 |
"XVisitsFromDevices": "%1$s візитів з %2$s пристроїв",
|
1227 |
"WidgetBrowsers": "Браузери відвідувачів",
|
1228 |
-
"
|
1229 |
},
|
1230 |
"Diagnostics": {
|
1231 |
"ConfigFileTitle": "Файл конфігурації",
|
@@ -3128,7 +3128,6 @@
|
|
3128 |
"KeepURLFragmentsLong": "Зберігати додаткові фрагменти url при відстеженні сторінок",
|
3129 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP адреси нижче будуть виключені з статистики і не будуть враховуватися при зборі даних на всіх сайтах.",
|
3130 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Запити URL-параметрів нижче будуть виключені і не будуть враховуватися при зборі статистики на всіх сайтах.",
|
3131 |
-
"ListOfQueryParametersToExclude": "Введіть список параметрів запиту URL, по одному в кожному рядку, щоб виключити зі звітів URL сторінки. Регулярні вирази, такі як %s підтримуються.",
|
3132 |
"LogAnalytics": "Журнал анлітики",
|
3133 |
"MainDescription": "Для ведення статистики потрібно додати сайти. Додавайте, оновлюйте, видаляйте інформацію про сайти, а також перегляньте JavaScript-код для вставки на ваші сторінки.",
|
3134 |
"MenuManage": "Управління",
|
1225 |
"MobileApp": "Мобільний Додаток",
|
1226 |
"XVisitsFromDevices": "%1$s візитів з %2$s пристроїв",
|
1227 |
"WidgetBrowsers": "Браузери відвідувачів",
|
1228 |
+
"WidgetBrowserVersionsDocumentation": "Цей звіт містить інформацію по браузерам, які використовують ваші відвідувачі. Кожна версія браузера відображається окремо."
|
1229 |
},
|
1230 |
"Diagnostics": {
|
1231 |
"ConfigFileTitle": "Файл конфігурації",
|
3128 |
"KeepURLFragmentsLong": "Зберігати додаткові фрагменти url при відстеженні сторінок",
|
3129 |
"ListOfIpsToBeExcludedOnAllWebsites": "IP адреси нижче будуть виключені з статистики і не будуть враховуватися при зборі даних на всіх сайтах.",
|
3130 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Запити URL-параметрів нижче будуть виключені і не будуть враховуватися при зборі статистики на всіх сайтах.",
|
|
|
3131 |
"LogAnalytics": "Журнал анлітики",
|
3132 |
"MainDescription": "Для ведення статистики потрібно додати сайти. Додавайте, оновлюйте, видаляйте інформацію про сайти, а також перегляньте JavaScript-код для вставки на ваші сторінки.",
|
3133 |
"MenuManage": "Управління",
|
app/lang/vi.json
CHANGED
@@ -871,7 +871,7 @@
|
|
871 |
"OperatingSystemFamily": "Hệ điều hành gia đình",
|
872 |
"OperatingSystems": "Các hệ điều hành",
|
873 |
"WidgetBrowsers": "Trình duyệt khách truy cập",
|
874 |
-
"
|
875 |
},
|
876 |
"Diagnostics": {
|
877 |
"ConfigFileTitle": "Tập tin cấu hình",
|
871 |
"OperatingSystemFamily": "Hệ điều hành gia đình",
|
872 |
"OperatingSystems": "Các hệ điều hành",
|
873 |
"WidgetBrowsers": "Trình duyệt khách truy cập",
|
874 |
+
"WidgetBrowserVersionsDocumentation": "Báo cáo này chứa thông tin về loại trình duyệt mà khách truy cập của bạn sử dụng. Mỗi phiên bản trình duyệt được liệt kê một cách riêng biệt."
|
875 |
},
|
876 |
"Diagnostics": {
|
877 |
"ConfigFileTitle": "Tập tin cấu hình",
|
app/lang/zh-cn.json
CHANGED
@@ -1359,7 +1359,7 @@
|
|
1359 |
"XVisitsFromDevices": "来自%2$s设备的%1$s次访问",
|
1360 |
"Wearable": "适合的",
|
1361 |
"WidgetBrowsers": "访客浏览器",
|
1362 |
-
"
|
1363 |
},
|
1364 |
"Diagnostics": {
|
1365 |
"ConfigFileTitle": "配置文件",
|
@@ -3731,7 +3731,6 @@
|
|
3731 |
"KeepURLFragmentsLong": "跟踪网址时保留网址标签",
|
3732 |
"ListOfIpsToBeExcludedOnAllWebsites": "以下的IP地址将被排除在所有网站统计外。",
|
3733 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "以下的网址查询参数将会被所有网站忽略。",
|
3734 |
-
"ListOfQueryParametersToExclude": "请输入URL查询参数的列表,一行一个,这些URL将被排除在页面报告之外。像%s的正则表达式也是支持的。",
|
3735 |
"LogAnalytics": "日志分析",
|
3736 |
"LogAnalyticsDescription": "如果无法使用Javascript跟踪方法,则可以%1$s使用服务器日志分析%2$s作为跟踪网站用户的另一种方法。",
|
3737 |
"MainDescription": "使用网站分析报表功能,必须有网站!在这里添加、修改、删除网站,或者显示需要加入页面代码里的 Javascript 跟踪代码。",
|
1359 |
"XVisitsFromDevices": "来自%2$s设备的%1$s次访问",
|
1360 |
"Wearable": "适合的",
|
1361 |
"WidgetBrowsers": "访客浏览器",
|
1362 |
+
"WidgetBrowserVersionsDocumentation": "此报表包含访客所用的浏览器信息,每个浏览器版本单独列出。"
|
1363 |
},
|
1364 |
"Diagnostics": {
|
1365 |
"ConfigFileTitle": "配置文件",
|
3731 |
"KeepURLFragmentsLong": "跟踪网址时保留网址标签",
|
3732 |
"ListOfIpsToBeExcludedOnAllWebsites": "以下的IP地址将被排除在所有网站统计外。",
|
3733 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "以下的网址查询参数将会被所有网站忽略。",
|
|
|
3734 |
"LogAnalytics": "日志分析",
|
3735 |
"LogAnalyticsDescription": "如果无法使用Javascript跟踪方法,则可以%1$s使用服务器日志分析%2$s作为跟踪网站用户的另一种方法。",
|
3736 |
"MainDescription": "使用网站分析报表功能,必须有网站!在这里添加、修改、删除网站,或者显示需要加入页面代码里的 Javascript 跟踪代码。",
|
app/lang/zh-tw.json
CHANGED
@@ -693,7 +693,7 @@
|
|
693 |
"SubmenuPagesEntry": "到達網頁",
|
694 |
"SubmenuPagesExit": "離站網頁",
|
695 |
"SubmenuPageTitles": "網頁標題",
|
696 |
-
"SubmenuSitesearch": "
|
697 |
"WidgetEntryPageTitles": "到達網頁標題",
|
698 |
"WidgetExitPageTitles": "離站網頁標題",
|
699 |
"WidgetPagesEntry": "到達網頁",
|
@@ -905,6 +905,7 @@
|
|
905 |
"DataTableHowToSearch": "按下 Enter 鍵或點擊搜尋圖示來搜尋",
|
906 |
"DataTableShowDimensions": "目前顯示綜合的維度 %s 分別顯示各個維度",
|
907 |
"DataTableCombineDimensions": "目前顯示個別的維度 %s 顯示綜合的維度",
|
|
|
908 |
"Default": "預設",
|
909 |
"DonateCall1": "使用 Matomo 永遠不花你任何一毛錢,但那不表示我們開發不需要花到半毛錢。",
|
910 |
"DonateCall2": "Matomo 需要你的持續支持以成長茁壯。",
|
@@ -912,6 +913,7 @@
|
|
912 |
"EndShortcut": "End 鍵",
|
913 |
"EnterZenMode": "進入勿擾模式(隱藏選單)",
|
914 |
"ExitZenMode": "離開勿擾模式(顯示選單)",
|
|
|
915 |
"ExcludeRowsWithLowPopulation": "已顯示所有列 %s 排除較低人數",
|
916 |
"ExternalHelp": "幫助(在新分頁中開啟)",
|
917 |
"FlattenDataTable": "報表目前已分層 %s 平面化顯示",
|
@@ -970,6 +972,8 @@
|
|
970 |
"PivotBySubtable": "此報表尚未圖形化 %1$s 以 %2$s 圖形化",
|
971 |
"SystemSummaryWidget": "系統摘要",
|
972 |
"SystemSummaryNWebsites": "%d 個網站",
|
|
|
|
|
973 |
"SystemSummaryNActivatedPlugins": "%d 個外掛已啟用",
|
974 |
"SystemSummaryPiwikVersion": "Matomo 版本",
|
975 |
"SystemSummaryMysqlVersion": "MySQL 版本",
|
@@ -1341,6 +1345,7 @@
|
|
1341 |
"GenericDevice": "通用 %s",
|
1342 |
"MobileDevice": "行動裝置",
|
1343 |
"Tablet": "平板電腦",
|
|
|
1344 |
"Phablet": "平板手機",
|
1345 |
"TV": "電視",
|
1346 |
"UserAgent": "User Agent",
|
@@ -1352,7 +1357,7 @@
|
|
1352 |
"XVisitsFromDevices": "來自%2$s裝置的%1$s個訪問數",
|
1353 |
"Wearable": "穿戴式裝置",
|
1354 |
"WidgetBrowsers": "訪客瀏覽器",
|
1355 |
-
"
|
1356 |
},
|
1357 |
"Diagnostics": {
|
1358 |
"ConfigFileTitle": "設定檔",
|
@@ -1752,6 +1757,7 @@
|
|
1752 |
"SystemCheckGzuncompressHelp": "你必須啟用 zlib 擴充功能和 gzuncompress 功能。",
|
1753 |
"SystemCheckHashHelp": "你必須配置並重建 PHP 經由執行 --disable-hash 選項來啟用 hash() 支援。",
|
1754 |
"SystemCheckIconvHelp": "你需要設定及重建 PHP,然後啟用 iconv 支援,--with-iconv。",
|
|
|
1755 |
"SystemCheckMailHelp": "意見回饋及忘記密碼的訊息若沒有 mail() 將無法寄送。",
|
1756 |
"SystemCheckMbstring": "mbstring",
|
1757 |
"SystemCheckMbstringHelp": "處理多字節的使用者介面或 API 回應資料必須使用 mbstring 擴充功能。並請檢查 php.ini 中的 mbstring.func_overload 已將值設定為「0」。",
|
@@ -1787,6 +1793,8 @@
|
|
1787 |
"SystemCheckWriteDirs": "具寫入存取權限的資料夾",
|
1788 |
"SystemCheckWriteDirsHelp": "要在你的 GNU\/Linux 系統修正這個錯誤,嘗試輸入以下指令",
|
1789 |
"SystemCheckZlibHelp": "你需要設定及重建 PHP,然後啟用 zlib 支援,--with-zlib。",
|
|
|
|
|
1790 |
"SystemCheckCronArchiveProcessCLI": "透過 CLI 管理程序",
|
1791 |
"SystemCheckPhpSetting": "要預防一些嚴重問題,你必須變更 php.ini 檔案中的以下設定:%s",
|
1792 |
"SystemCheckUpdateHttps": "透過 HTTPS 更新",
|
@@ -1808,7 +1816,9 @@
|
|
1808 |
"WelcomeToCommunity": "歡迎來到 Matomo 社區!",
|
1809 |
"CannotConnectToDb": "無法連接資料庫",
|
1810 |
"CannotConnectToDbResolvingExplanation": "這可能是暫時性的問題,試試%1$s重新整理頁面%2$s。如果問題持續發生請聯絡你的 Matomo 管理員。",
|
1811 |
-
"EmailPrivacyNotice": "你的 Email 將只用於向你寄送電子報,為此我們需要分享你的 Email 給第三方供應商。此供應商目前是 Mad Mimi,但是未來有可能變更。我們不會透漏你的 Email 給其他人,或將你的 Email 用於電子報以外的其他用途。你隨時可以取消訂閱。參考我們的%1$s隱私權政策%2$s以取得更多資訊。"
|
|
|
|
|
1812 |
},
|
1813 |
"Intl": {
|
1814 |
"Continent_afr": "非洲",
|
@@ -2948,6 +2958,7 @@
|
|
2948 |
"LastHours": "最近 %s 小時",
|
2949 |
"LastMinutes": "最近 %s 分鐘",
|
2950 |
"LastVisit": "最後訪問",
|
|
|
2951 |
"LoadMoreVisits": "載入更多訪客",
|
2952 |
"LimitedSummary": "這份資料內的資訊概括過去 %1$s 次訪問。這個使用者擁有更多訪問次數。",
|
2953 |
"LimitedVisitsShown": "只顯示過去 %1$s 次訪問。這個使用者擁有更多訪問次數。",
|
@@ -2966,11 +2977,15 @@
|
|
2966 |
"ActionsAndDuration": "%2$s內 %1$s 個活動數",
|
2967 |
"SimpleRealTimeWidget_Message": "%1$s 和 %2$s 在過去 %3$s",
|
2968 |
"ViewVisitorProfile": "查看訪客資料",
|
|
|
|
|
2969 |
"VisitedPages": "到達網頁",
|
2970 |
"RevisitedPages": "網頁瀏覽數超過一次",
|
2971 |
"ToggleActions": "切換所有活動的顯示狀態",
|
2972 |
"TopVisitedPages": "熱門訪問網頁",
|
2973 |
"VisitsLog": "訪客紀錄",
|
|
|
|
|
2974 |
"QueryMaxExecutionTimeExceeded": "查詢花了太久時間。",
|
2975 |
"QueryMaxExecutionTimeExceededReasonDateRange": "如果日期間距太長,可能會發生這種問題。請嘗試選擇較小的日期間距。",
|
2976 |
"QueryMaxExecutionTimeExceededReasonSegment": "如果區隔內沒有任何訪問記錄,可能會發生這種問題。請嘗試修正你選擇的區隔。",
|
@@ -3043,6 +3058,9 @@
|
|
3043 |
"AddToCart": "加到購物車",
|
3044 |
"AllowedUploadFormats": "你可以在這個頁面上上傳 .zip 格式的外掛或主題。",
|
3045 |
"Authors": "作者",
|
|
|
|
|
|
|
3046 |
"BackToMarketplace": "回到市集",
|
3047 |
"BrowseMarketplace": "瀏覽市集",
|
3048 |
"ByXDevelopers": "來自 %s 位開發人員",
|
@@ -3053,6 +3071,7 @@
|
|
3053 |
"ConfirmRemoveLicense": "你確定要移除註冊碼嗎?你將無法再收到任何你已購買外掛的更新。",
|
3054 |
"Developer": "開發人員",
|
3055 |
"DevelopersLearnHowToDevelopPlugins": "開發人員:了解如何透過%1$s開發外掛和主題%2$s來擴展和自訂 Matomo。",
|
|
|
3056 |
"Marketplace": "市集",
|
3057 |
"PaidPlugins": "高級功能",
|
3058 |
"FeaturedPlugin": "特色外掛",
|
@@ -3223,14 +3242,29 @@
|
|
3223 |
"AnonymizeIpInlineHelp": "隱藏訪客 IP 地址最後的字節以符合你本地隱私權法規\/政策。",
|
3224 |
"AnonymizeIpMaskLengtDescription": "選擇要隱藏多少字節的 IP 位址。",
|
3225 |
"AnonymizeIpMaskLength": "%1$s 字節,例如 %2$s",
|
|
|
|
|
3226 |
"AskingForConsent": "要求同意",
|
3227 |
"ConsentExplanation": "「要求同意」意謂提供每個人關於他們的個人資料將會如何處理和控制的選項。",
|
3228 |
"ClickHereSettings": "點擊這裡查看 %s 設定。",
|
3229 |
"WhenDoINeedConsent": "我該何時要求使用者同意?",
|
3230 |
"HowDoIAskForConsent": "我該如何要求使用者同意?",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3231 |
"AnonymizeUserId": "以假名取代使用者 ID",
|
3232 |
"AnonymizeProcessInfo": "此動作可能會需要很長一段時間,且不會立即完成。你可以在下方查看目前的進度。匿名化工作通常能在一小時內完成。",
|
3233 |
"AnonymizeDataNow": "匿名化選中網站與時間的歷史資料",
|
|
|
|
|
|
|
|
|
3234 |
"CurrentDBSize": "目前資料庫大小",
|
3235 |
"DBPurged": "資料庫已清理。",
|
3236 |
"DeleteBothConfirm": "你將啟用原始資料刪除和報表刪除功能。這將永久刪除舊資料,你將無法再查看舊有分析資料。確定要繼續嗎?",
|
@@ -3259,6 +3293,7 @@
|
|
3259 |
"DoNotTrack_SupportDNTPreference": "支援不追蹤(Do Not Track)設定",
|
3260 |
"EstimatedDBSizeAfterPurge": "清理後資料庫預估大小",
|
3261 |
"EstimatedSpaceSaved": "預估節省空間",
|
|
|
3262 |
"GeolocationAnonymizeIpNote": "注意:選擇 1 字節時地理位置將會顯示與實際位置大略相同的結果。選擇 2 字節或以上,地理位置可能會不準確。",
|
3263 |
"GDPR": "GDPR",
|
3264 |
"GdprManager": "GDPR 管理",
|
@@ -3438,6 +3473,7 @@
|
|
3438 |
"Segment_Deletion_Error": "這個區隔不能對其他使用者刪除或隱藏,因為他已經用於建立報表信件 %s。請先將區隔從報表中移除後再重試。",
|
3439 |
"Segment_Help": "你可以選擇一個現有的自訂區隔來套用到此報表信件上。你可以在展示版中%1$s(點此開啟)%2$s建立或編輯自定區隔,並點擊「%3$s」按鈕後,選擇「%4$s」。",
|
3440 |
"SegmentAppliedToReports": "區隔「%s」已套用至報表。",
|
|
|
3441 |
"SendReportNow": "立即寄送報表",
|
3442 |
"SendReportTo": "寄送報表至",
|
3443 |
"SentToMe": "寄給我自己",
|
@@ -3455,7 +3491,9 @@
|
|
3455 |
"NoTokenProvided": "網址內沒有提供 token。",
|
3456 |
"NoSubscriptionFound": "沒有任何訂閱項目。可能報表已經取消訂閱或是刪除。",
|
3457 |
"EvolutionGraphsShowForEachInPeriod": "顯示上一%3$s%1$s每日%2$s的發展趨勢圖表",
|
3458 |
-
"EvolutionGraphsShowForPreviousN": "顯示過去 N %s的發展趨勢圖表"
|
|
|
|
|
3459 |
},
|
3460 |
"SegmentEditor": {
|
3461 |
"AddANDorORCondition": "增加【%s】條件",
|
@@ -3537,7 +3575,6 @@
|
|
3537 |
"KeepURLFragmentsLong": "追蹤網頁網址時保留網頁網址片段",
|
3538 |
"ListOfIpsToBeExcludedOnAllWebsites": "以下的 IP 位址將會被所有網站排除。",
|
3539 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "以下的網址查詢參數將會被所有網站排除。",
|
3540 |
-
"ListOfQueryParametersToExclude": "輸入網址查詢參數列表,一行一個,將從網頁網址報表中被排除。支援正規表示式如 %s。",
|
3541 |
"LogAnalytics": "紀錄檔分析",
|
3542 |
"LogAnalyticsDescription": "如果無法使用 Javascript 來追蹤,你可以改用%1$s伺服器紀錄檔追蹤%2$s的方式來追蹤你的網站使用者。",
|
3543 |
"MainDescription": "你需要網站來查看網頁分析報表!新增、更新或刪除網站,並取得 JavaScript 追蹤程式碼插入在你的網頁之中。",
|
693 |
"SubmenuPagesEntry": "到達網頁",
|
694 |
"SubmenuPagesExit": "離站網頁",
|
695 |
"SubmenuPageTitles": "網頁標題",
|
696 |
+
"SubmenuSitesearch": "站內搜尋",
|
697 |
"WidgetEntryPageTitles": "到達網頁標題",
|
698 |
"WidgetExitPageTitles": "離站網頁標題",
|
699 |
"WidgetPagesEntry": "到達網頁",
|
905 |
"DataTableHowToSearch": "按下 Enter 鍵或點擊搜尋圖示來搜尋",
|
906 |
"DataTableShowDimensions": "目前顯示綜合的維度 %s 分別顯示各個維度",
|
907 |
"DataTableCombineDimensions": "目前顯示個別的維度 %s 顯示綜合的維度",
|
908 |
+
"DateInvalid": "指定的日期與期間組合無效。請至日期工具內選擇另一個有效的日期。",
|
909 |
"Default": "預設",
|
910 |
"DonateCall1": "使用 Matomo 永遠不花你任何一毛錢,但那不表示我們開發不需要花到半毛錢。",
|
911 |
"DonateCall2": "Matomo 需要你的持續支持以成長茁壯。",
|
913 |
"EndShortcut": "End 鍵",
|
914 |
"EnterZenMode": "進入勿擾模式(隱藏選單)",
|
915 |
"ExitZenMode": "離開勿擾模式(顯示選單)",
|
916 |
+
"ExceptionNotAllowlistedIP": "你無法使用這個 Matomo,因為你的 IP %s 不在白名單內。",
|
917 |
"ExcludeRowsWithLowPopulation": "已顯示所有列 %s 排除較低人數",
|
918 |
"ExternalHelp": "幫助(在新分頁中開啟)",
|
919 |
"FlattenDataTable": "報表目前已分層 %s 平面化顯示",
|
972 |
"PivotBySubtable": "此報表尚未圖形化 %1$s 以 %2$s 圖形化",
|
973 |
"SystemSummaryWidget": "系統摘要",
|
974 |
"SystemSummaryNWebsites": "%d 個網站",
|
975 |
+
"SystemSummaryNSegments": "%1$d 個區隔",
|
976 |
+
"SystemSummaryNSegmentsWithBreakdown": "%1$d 個區隔 (已預先處理 %2$s 個,即時處理 %3$s 個)",
|
977 |
"SystemSummaryNActivatedPlugins": "%d 個外掛已啟用",
|
978 |
"SystemSummaryPiwikVersion": "Matomo 版本",
|
979 |
"SystemSummaryMysqlVersion": "MySQL 版本",
|
1345 |
"GenericDevice": "通用 %s",
|
1346 |
"MobileDevice": "行動裝置",
|
1347 |
"Tablet": "平板電腦",
|
1348 |
+
"Peripheral": "周邊設備",
|
1349 |
"Phablet": "平板手機",
|
1350 |
"TV": "電視",
|
1351 |
"UserAgent": "User Agent",
|
1357 |
"XVisitsFromDevices": "來自%2$s裝置的%1$s個訪問數",
|
1358 |
"Wearable": "穿戴式裝置",
|
1359 |
"WidgetBrowsers": "訪客瀏覽器",
|
1360 |
+
"WidgetBrowserVersionsDocumentation": "這份報表包含訪客所使用的瀏覽器資訊。每個瀏覽器的版本都會分開排列。"
|
1361 |
},
|
1362 |
"Diagnostics": {
|
1363 |
"ConfigFileTitle": "設定檔",
|
1757 |
"SystemCheckGzuncompressHelp": "你必須啟用 zlib 擴充功能和 gzuncompress 功能。",
|
1758 |
"SystemCheckHashHelp": "你必須配置並重建 PHP 經由執行 --disable-hash 選項來啟用 hash() 支援。",
|
1759 |
"SystemCheckIconvHelp": "你需要設定及重建 PHP,然後啟用 iconv 支援,--with-iconv。",
|
1760 |
+
"SystemCheckJsonHelp": "Matomo 必須使用 php-json 擴充功能來讀寫 JSON 資料。",
|
1761 |
"SystemCheckMailHelp": "意見回饋及忘記密碼的訊息若沒有 mail() 將無法寄送。",
|
1762 |
"SystemCheckMbstring": "mbstring",
|
1763 |
"SystemCheckMbstringHelp": "處理多字節的使用者介面或 API 回應資料必須使用 mbstring 擴充功能。並請檢查 php.ini 中的 mbstring.func_overload 已將值設定為「0」。",
|
1793 |
"SystemCheckWriteDirs": "具寫入存取權限的資料夾",
|
1794 |
"SystemCheckWriteDirsHelp": "要在你的 GNU\/Linux 系統修正這個錯誤,嘗試輸入以下指令",
|
1795 |
"SystemCheckZlibHelp": "你需要設定及重建 PHP,然後啟用 zlib 支援,--with-zlib。",
|
1796 |
+
"SystemCheckCronArchiveProcess": "建立工作排程",
|
1797 |
+
"FasterReportLoading": "加速報告載入",
|
1798 |
"SystemCheckCronArchiveProcessCLI": "透過 CLI 管理程序",
|
1799 |
"SystemCheckPhpSetting": "要預防一些嚴重問題,你必須變更 php.ini 檔案中的以下設定:%s",
|
1800 |
"SystemCheckUpdateHttps": "透過 HTTPS 更新",
|
1816 |
"WelcomeToCommunity": "歡迎來到 Matomo 社區!",
|
1817 |
"CannotConnectToDb": "無法連接資料庫",
|
1818 |
"CannotConnectToDbResolvingExplanation": "這可能是暫時性的問題,試試%1$s重新整理頁面%2$s。如果問題持續發生請聯絡你的 Matomo 管理員。",
|
1819 |
+
"EmailPrivacyNotice": "你的 Email 將只用於向你寄送電子報,為此我們需要分享你的 Email 給第三方供應商。此供應商目前是 Mad Mimi,但是未來有可能變更。我們不會透漏你的 Email 給其他人,或將你的 Email 用於電子報以外的其他用途。你隨時可以取消訂閱。參考我們的%1$s隱私權政策%2$s以取得更多資訊。",
|
1820 |
+
"PerformanceSettingsDesc1": "有關效能的最終提示:你的 Matomo 已經安裝完成,且準備好追蹤、報告你的網站活動;若你覺得 Matomo 效能不彰,你可以額外準備 %1$sCLI 彙整指令%2$s。此功能不會幫你即時產生報表,而是於背景定時執行。",
|
1821 |
+
"PerformanceSettingsDesc2": "安裝程式無法幫你自動增加 Matomo 指令到工作排程器,但是你能 %1$s閱讀我們的 FAQ 來瞭解如何自己設定。%2$s"
|
1822 |
},
|
1823 |
"Intl": {
|
1824 |
"Continent_afr": "非洲",
|
2958 |
"LastHours": "最近 %s 小時",
|
2959 |
"LastMinutes": "最近 %s 分鐘",
|
2960 |
"LastVisit": "最後訪問",
|
2961 |
+
"LinkVisitorLog": "檢視詳細訪客紀錄",
|
2962 |
"LoadMoreVisits": "載入更多訪客",
|
2963 |
"LimitedSummary": "這份資料內的資訊概括過去 %1$s 次訪問。這個使用者擁有更多訪問次數。",
|
2964 |
"LimitedVisitsShown": "只顯示過去 %1$s 次訪問。這個使用者擁有更多訪問次數。",
|
2977 |
"ActionsAndDuration": "%2$s內 %1$s 個活動數",
|
2978 |
"SimpleRealTimeWidget_Message": "%1$s 和 %2$s 在過去 %3$s",
|
2979 |
"ViewVisitorProfile": "查看訪客資料",
|
2980 |
+
"DisableVisitorProfile": "僅關閉訪客個人資料",
|
2981 |
+
"DisableVisitorProfileDescription": "你可以關閉訪客個人檔案功能。所有有關訪客紀錄的功能仍可以正常運作。",
|
2982 |
"VisitedPages": "到達網頁",
|
2983 |
"RevisitedPages": "網頁瀏覽數超過一次",
|
2984 |
"ToggleActions": "切換所有活動的顯示狀態",
|
2985 |
"TopVisitedPages": "熱門訪問網頁",
|
2986 |
"VisitsLog": "訪客紀錄",
|
2987 |
+
"DisableVisitsLogAndProfile": "關閉訪客紀錄與個人資料",
|
2988 |
+
"DisableVisitsLogAndProfileDescription": "你可以關閉訪客紀錄與個人檔案功能。這麼做也會關閉相關的功能,例如電子商務紀錄、訪客區隔紀錄、即時地圖、即時小工具。用以遵守你的本地個資法規。",
|
2989 |
"QueryMaxExecutionTimeExceeded": "查詢花了太久時間。",
|
2990 |
"QueryMaxExecutionTimeExceededReasonDateRange": "如果日期間距太長,可能會發生這種問題。請嘗試選擇較小的日期間距。",
|
2991 |
"QueryMaxExecutionTimeExceededReasonSegment": "如果區隔內沒有任何訪問記錄,可能會發生這種問題。請嘗試修正你選擇的區隔。",
|
3058 |
"AddToCart": "加到購物車",
|
3059 |
"AllowedUploadFormats": "你可以在這個頁面上上傳 .zip 格式的外掛或主題。",
|
3060 |
"Authors": "作者",
|
3061 |
+
"Browse": "瀏覽",
|
3062 |
+
"SupportMatomoThankYou": "任何購買都有助於 Matomo 開源專案的未來。感謝你的支持!",
|
3063 |
+
"LatestMarketplaceUpdates": "市集最新消息",
|
3064 |
"BackToMarketplace": "回到市集",
|
3065 |
"BrowseMarketplace": "瀏覽市集",
|
3066 |
"ByXDevelopers": "來自 %s 位開發人員",
|
3071 |
"ConfirmRemoveLicense": "你確定要移除註冊碼嗎?你將無法再收到任何你已購買外掛的更新。",
|
3072 |
"Developer": "開發人員",
|
3073 |
"DevelopersLearnHowToDevelopPlugins": "開發人員:了解如何透過%1$s開發外掛和主題%2$s來擴展和自訂 Matomo。",
|
3074 |
+
"NoticeRemoveMarketplaceFromReportingMenu": "欲從報表選單移除市集選項,你可以安裝 %1$sWhite Labe%2$s 外掛。",
|
3075 |
"Marketplace": "市集",
|
3076 |
"PaidPlugins": "高級功能",
|
3077 |
"FeaturedPlugin": "特色外掛",
|
3242 |
"AnonymizeIpInlineHelp": "隱藏訪客 IP 地址最後的字節以符合你本地隱私權法規\/政策。",
|
3243 |
"AnonymizeIpMaskLengtDescription": "選擇要隱藏多少字節的 IP 位址。",
|
3244 |
"AnonymizeIpMaskLength": "%1$s 字節,例如 %2$s",
|
3245 |
+
"AnonymizeIpMaskFully": "完全隱藏 IP 位址",
|
3246 |
+
"AnonymizeReferrer": "參照連結匿名化",
|
3247 |
"AskingForConsent": "要求同意",
|
3248 |
"ConsentExplanation": "「要求同意」意謂提供每個人關於他們的個人資料將會如何處理和控制的選項。",
|
3249 |
"ClickHereSettings": "點擊這裡查看 %s 設定。",
|
3250 |
"WhenDoINeedConsent": "我該何時要求使用者同意?",
|
3251 |
"HowDoIAskForConsent": "我該如何要求使用者同意?",
|
3252 |
+
"AnonymizeSites": "匿名化站台的資料",
|
3253 |
+
"AnonymizeRowDataFrom": "匿名化所有原始資料由:",
|
3254 |
+
"AnonymizeRowDataTo": "匿名化所有原始資料至:",
|
3255 |
+
"AnonymizeReferrerExcludeNone": "不要匿名化參照連結",
|
3256 |
+
"AnonymizeReferrerExcludeQuery": "從參照連結移除參數",
|
3257 |
+
"AnonymizeReferrerExcludePath": "僅保留參照連結 URL 內的網域名稱",
|
3258 |
+
"AnonymizeReferrerExcludeAll": "不儲存參照連結,但仍會偵測參照連結的種類",
|
3259 |
+
"AnonymizeIp": "IP 匿名化",
|
3260 |
+
"AnonymizeLocation": "地理位置匿名化",
|
3261 |
"AnonymizeUserId": "以假名取代使用者 ID",
|
3262 |
"AnonymizeProcessInfo": "此動作可能會需要很長一段時間,且不會立即完成。你可以在下方查看目前的進度。匿名化工作通常能在一小時內完成。",
|
3263 |
"AnonymizeDataNow": "匿名化選中網站與時間的歷史資料",
|
3264 |
+
"UnsetVisitColumns": "消除訪問欄位",
|
3265 |
+
"UnsetVisitColumnsHelp": "此動作無法還原。在訪問選單中選擇你想要消除資料的資料庫欄位,每個選中的欄位將會被設為預設值。請注意:若同一欄位出現於 「轉換目標」,該欄位也將會被刪除。",
|
3266 |
+
"UnsetActionColumns": "消除活動欄位",
|
3267 |
+
"UnsetActionColumnsHelp": "此動作無法還原。在活動選單中選擇你想要消除資料的資料庫欄位,每個選中的欄位將會被設為預設值。",
|
3268 |
"CurrentDBSize": "目前資料庫大小",
|
3269 |
"DBPurged": "資料庫已清理。",
|
3270 |
"DeleteBothConfirm": "你將啟用原始資料刪除和報表刪除功能。這將永久刪除舊資料,你將無法再查看舊有分析資料。確定要繼續嗎?",
|
3293 |
"DoNotTrack_SupportDNTPreference": "支援不追蹤(Do Not Track)設定",
|
3294 |
"EstimatedDBSizeAfterPurge": "清理後資料庫預估大小",
|
3295 |
"EstimatedSpaceSaved": "預估節省空間",
|
3296 |
+
"ForceCookielessTracking": "強制不使用 Cookie 追蹤",
|
3297 |
"GeolocationAnonymizeIpNote": "注意:選擇 1 字節時地理位置將會顯示與實際位置大略相同的結果。選擇 2 字節或以上,地理位置可能會不準確。",
|
3298 |
"GDPR": "GDPR",
|
3299 |
"GdprManager": "GDPR 管理",
|
3473 |
"Segment_Deletion_Error": "這個區隔不能對其他使用者刪除或隱藏,因為他已經用於建立報表信件 %s。請先將區隔從報表中移除後再重試。",
|
3474 |
"Segment_Help": "你可以選擇一個現有的自訂區隔來套用到此報表信件上。你可以在展示版中%1$s(點此開啟)%2$s建立或編輯自定區隔,並點擊「%3$s」按鈕後,選擇「%4$s」。",
|
3475 |
"SegmentAppliedToReports": "區隔「%s」已套用至報表。",
|
3476 |
+
"SegmentDeleted": "區隔刪除",
|
3477 |
"SendReportNow": "立即寄送報表",
|
3478 |
"SendReportTo": "寄送報表至",
|
3479 |
"SentToMe": "寄給我自己",
|
3491 |
"NoTokenProvided": "網址內沒有提供 token。",
|
3492 |
"NoSubscriptionFound": "沒有任何訂閱項目。可能報表已經取消訂閱或是刪除。",
|
3493 |
"EvolutionGraphsShowForEachInPeriod": "顯示上一%3$s%1$s每日%2$s的發展趨勢圖表",
|
3494 |
+
"EvolutionGraphsShowForPreviousN": "顯示過去 N %s的發展趨勢圖表",
|
3495 |
+
"ReportPeriod": "報告間隔",
|
3496 |
+
"ReportPeriodHelp": "此報表內資料涵蓋的間隔。預設值會跟 Email 的間隔一樣,因此每周寄送的報告會包含上周產生的資訊。"
|
3497 |
},
|
3498 |
"SegmentEditor": {
|
3499 |
"AddANDorORCondition": "增加【%s】條件",
|
3575 |
"KeepURLFragmentsLong": "追蹤網頁網址時保留網頁網址片段",
|
3576 |
"ListOfIpsToBeExcludedOnAllWebsites": "以下的 IP 位址將會被所有網站排除。",
|
3577 |
"ListOfQueryParametersToBeExcludedOnAllWebsites": "以下的網址查詢參數將會被所有網站排除。",
|
|
|
3578 |
"LogAnalytics": "紀錄檔分析",
|
3579 |
"LogAnalyticsDescription": "如果無法使用 Javascript 來追蹤,你可以改用%1$s伺服器紀錄檔追蹤%2$s的方式來追蹤你的網站使用者。",
|
3580 |
"MainDescription": "你需要網站來查看網頁分析報表!新增、更新或刪除網站,並取得 JavaScript 追蹤程式碼插入在你的網頁之中。",
|
app/plugins/API/Reports/Get.php
CHANGED
@@ -32,7 +32,7 @@ class Get extends Report
|
|
32 |
|
33 |
$this->categoryId = 'API';
|
34 |
$this->name = Piwik::translate('General_MainMetrics');
|
35 |
-
$this->documentation = '';
|
36 |
|
37 |
$this->processedMetrics = array();
|
38 |
foreach ($this->reportsToMerge as $report) {
|
32 |
|
33 |
$this->categoryId = 'API';
|
34 |
$this->name = Piwik::translate('General_MainMetrics');
|
35 |
+
$this->documentation = Piwik::translate('API_MainMetricsReportDocumentation');
|
36 |
|
37 |
$this->processedMetrics = array();
|
38 |
foreach ($this->reportsToMerge as $report) {
|
app/plugins/Actions/Reports/Get.php
CHANGED
@@ -18,7 +18,7 @@ class Get extends Base
|
|
18 |
parent::init();
|
19 |
|
20 |
$this->name = Piwik::translate('General_Actions') . ' - ' . Piwik::translate('General_MainMetrics');
|
21 |
-
$this->documentation = '';
|
22 |
$this->order = 1;
|
23 |
$this->processedMetrics = array(
|
24 |
new AveragePageGenerationTime()
|
18 |
parent::init();
|
19 |
|
20 |
$this->name = Piwik::translate('General_Actions') . ' - ' . Piwik::translate('General_MainMetrics');
|
21 |
+
$this->documentation = Piwik::translate('Actions_MainMetricsReportDocumentation');
|
22 |
$this->order = 1;
|
23 |
$this->processedMetrics = array(
|
24 |
new AveragePageGenerationTime()
|
app/plugins/Contents/Reports/GetContentNames.php
CHANGED
@@ -24,8 +24,7 @@ class GetContentNames extends Base
|
|
24 |
parent::init();
|
25 |
|
26 |
$this->name = Piwik::translate('Contents_ContentName');
|
27 |
-
$this->
|
28 |
-
// TODO $this->documentation = Piwik::translate('ContentsDocumentation');
|
29 |
$this->dimension = new ContentName();
|
30 |
$this->order = 35;
|
31 |
$this->actionToLoadSubTables = 'getContentNames';
|
24 |
parent::init();
|
25 |
|
26 |
$this->name = Piwik::translate('Contents_ContentName');
|
27 |
+
$this->documentation = Piwik::translate('Contents_ContentNameReportDocumentation');
|
|
|
28 |
$this->dimension = new ContentName();
|
29 |
$this->order = 35;
|
30 |
$this->actionToLoadSubTables = 'getContentNames';
|
app/plugins/Contents/Reports/GetContentPieces.php
CHANGED
@@ -24,8 +24,7 @@ class GetContentPieces extends Base
|
|
24 |
parent::init();
|
25 |
|
26 |
$this->name = Piwik::translate('Contents_ContentPiece');
|
27 |
-
$this->
|
28 |
-
// TODO $this->documentation = Piwik::translate('ContentsDocumentation');
|
29 |
$this->dimension = new ContentPiece();
|
30 |
$this->order = 36;
|
31 |
$this->actionToLoadSubTables = 'getContentPieces';
|
24 |
parent::init();
|
25 |
|
26 |
$this->name = Piwik::translate('Contents_ContentPiece');
|
27 |
+
$this->documentation = Piwik::translate('Contents_ContentPieceReportDocumentation');
|
|
|
28 |
$this->dimension = new ContentPiece();
|
29 |
$this->order = 36;
|
30 |
$this->actionToLoadSubTables = 'getContentPieces';
|
app/plugins/CoreAdminHome/Controller.php
CHANGED
@@ -121,9 +121,10 @@ class Controller extends ControllerAdmin
|
|
121 |
'Cram-md5' => 'Cram-md5',
|
122 |
);
|
123 |
$view->mailEncryptions = array(
|
124 |
-
'' => '',
|
125 |
'ssl' => 'SSL',
|
126 |
-
'tls' => 'TLS'
|
|
|
127 |
);
|
128 |
$mail = new Mail();
|
129 |
$view->mailHost = $mail->getMailHost();
|
121 |
'Cram-md5' => 'Cram-md5',
|
122 |
);
|
123 |
$view->mailEncryptions = array(
|
124 |
+
'' => 'auto',
|
125 |
'ssl' => 'SSL',
|
126 |
+
'tls' => 'TLS',
|
127 |
+
'none' => 'none',
|
128 |
);
|
129 |
$mail = new Mail();
|
130 |
$view->mailHost = $mail->getMailHost();
|
app/plugins/CoreHome/CoreHome.php
CHANGED
@@ -453,6 +453,7 @@ class CoreHome extends \Piwik\Plugin
|
|
453 |
$translationKeys[] = 'General_DoubleClickToChangePeriod';
|
454 |
$translationKeys[] = 'General_Apply';
|
455 |
$translationKeys[] = 'General_Period';
|
|
|
456 |
$translationKeys[] = 'CoreHome_DateInvalid';
|
457 |
$translationKeys[] = 'CoreHome_EnterZenMode';
|
458 |
$translationKeys[] = 'CoreHome_ExitZenMode';
|
453 |
$translationKeys[] = 'General_DoubleClickToChangePeriod';
|
454 |
$translationKeys[] = 'General_Apply';
|
455 |
$translationKeys[] = 'General_Period';
|
456 |
+
$translationKeys[] = 'General_CompareTo';
|
457 |
$translationKeys[] = 'CoreHome_DateInvalid';
|
458 |
$translationKeys[] = 'CoreHome_EnterZenMode';
|
459 |
$translationKeys[] = 'CoreHome_ExitZenMode';
|
app/plugins/CoreHome/angularjs/period-selector/period-selector.directive.html
CHANGED
@@ -72,7 +72,7 @@
|
|
72 |
type="checkbox"
|
73 |
ng-model="periodSelector.isComparing"
|
74 |
/>
|
75 |
-
<span>
|
76 |
</label>
|
77 |
|
78 |
<div
|
72 |
type="checkbox"
|
73 |
ng-model="periodSelector.isComparing"
|
74 |
/>
|
75 |
+
<span>{{ 'General_CompareTo'|translate }}</span>
|
76 |
</label>
|
77 |
|
78 |
<div
|
app/plugins/CoreHome/stylesheets/layout.less
CHANGED
@@ -194,7 +194,7 @@ nav {
|
|
194 |
}
|
195 |
|
196 |
> li {
|
197 |
-
display:
|
198 |
width: 100%;
|
199 |
.border-radius(0px);
|
200 |
border: 0;
|
@@ -327,6 +327,21 @@ nav {
|
|
327 |
content: "\e63b";
|
328 |
}
|
329 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
}
|
331 |
}
|
332 |
|
194 |
}
|
195 |
|
196 |
> li {
|
197 |
+
display: block;
|
198 |
width: 100%;
|
199 |
.border-radius(0px);
|
200 |
border: 0;
|
327 |
content: "\e63b";
|
328 |
}
|
329 |
}
|
330 |
+
|
331 |
+
.collapsible {
|
332 |
+
margin: 0;
|
333 |
+
border: 0;
|
334 |
+
}
|
335 |
+
|
336 |
+
.collapsible-header {
|
337 |
+
border-bottom: 0;
|
338 |
+
cursor: pointer!important;
|
339 |
+
}
|
340 |
+
|
341 |
+
.collapsible-body {
|
342 |
+
border-bottom: 0;
|
343 |
+
padding: 0;
|
344 |
+
}
|
345 |
}
|
346 |
}
|
347 |
|
app/plugins/CoreHome/templates/_menu.twig
CHANGED
@@ -1,9 +1,10 @@
|
|
1 |
-
{% macro menu(menu, anchorlink, cssClass, currentModule, currentAction) %}
|
2 |
<div id="secondNavBar" class="{{ cssClass }} z-depth-1">
|
3 |
-
<ul class="navbar hide-on-med-and-down" aria-label="{{ 'CoreHome_MainNavigation'|translate|e('html_attr') }}" role="menu">
|
4 |
{% for level1,level2 in menu %}
|
5 |
|
6 |
{% set hasSubmenuItem = false %}
|
|
|
7 |
{% for name,urlParameters in level2 %}
|
8 |
{% if name|slice(0,1) != '_' %}
|
9 |
{% set hasSubmenuItem = true %}
|
@@ -11,18 +12,19 @@
|
|
11 |
{% endfor %}
|
12 |
|
13 |
{% if hasSubmenuItem %}
|
14 |
-
|
15 |
-
|
16 |
-
<a class="item" tabindex="5">
|
17 |
<span class="menu-icon {{ level2._icon|default('icon-arrow-right') }}"></span>{{ level1|translate }}
|
18 |
<span class="hidden">
|
19 |
{{ 'CoreHome_Menu'|translate }}
|
20 |
</span>
|
21 |
</a>
|
22 |
-
<ul role="menu">
|
23 |
{% for name,urlParameters in level2 %}
|
24 |
{% if name|slice(0,1) != '_' %}
|
25 |
-
|
|
|
|
|
26 |
role="menuitem"
|
27 |
>
|
28 |
<a class="item" tabindex="5" target="_self"
|
@@ -40,6 +42,9 @@
|
|
40 |
{% endif %}
|
41 |
{% endfor %}
|
42 |
</ul>
|
|
|
|
|
|
|
43 |
</li>
|
44 |
{% endif %}
|
45 |
{% endfor %}
|
1 |
+
{% macro menu(menu, anchorlink, cssClass, currentModule, currentAction, collapsible) %}
|
2 |
<div id="secondNavBar" class="{{ cssClass }} z-depth-1">
|
3 |
+
<ul class="navbar {% if collapsible %}collapsible collapsible-accordion{% endif %} hide-on-med-and-down" aria-label="{{ 'CoreHome_MainNavigation'|translate|e('html_attr') }}" role="menu">
|
4 |
{% for level1,level2 in menu %}
|
5 |
|
6 |
{% set hasSubmenuItem = false %}
|
7 |
+
{% set hasActive = false %}
|
8 |
{% for name,urlParameters in level2 %}
|
9 |
{% if name|slice(0,1) != '_' %}
|
10 |
{% set hasSubmenuItem = true %}
|
12 |
{% endfor %}
|
13 |
|
14 |
{% if hasSubmenuItem %}
|
15 |
+
{% set subMenu %}
|
16 |
+
<a class="item {% if collapsible %}collapsible-header{% endif %}" tabindex="5">
|
|
|
17 |
<span class="menu-icon {{ level2._icon|default('icon-arrow-right') }}"></span>{{ level1|translate }}
|
18 |
<span class="hidden">
|
19 |
{{ 'CoreHome_Menu'|translate }}
|
20 |
</span>
|
21 |
</a>
|
22 |
+
<ul role="menu" {% if collapsible %}class="collapsible-body"{% endif %}>
|
23 |
{% for name,urlParameters in level2 %}
|
24 |
{% if name|slice(0,1) != '_' %}
|
25 |
+
{% set isActive = urlParameters._url.module is defined and urlParameters._url.module == currentModule and urlParameters._url.action is defined and urlParameters._url.action == currentAction %}
|
26 |
+
{% set hasActive = hasActive or isActive %}
|
27 |
+
<li {% if isActive %}class="active"{% endif %}
|
28 |
role="menuitem"
|
29 |
>
|
30 |
<a class="item" tabindex="5" target="_self"
|
42 |
{% endif %}
|
43 |
{% endfor %}
|
44 |
</ul>
|
45 |
+
{% endset %}
|
46 |
+
<li class="menuTab {% if hasActive %}active{% endif %}" role="menuitem">
|
47 |
+
{{ subMenu }}
|
48 |
</li>
|
49 |
{% endif %}
|
50 |
{% endfor %}
|
app/plugins/CorePluginsAdmin/Controller.php
CHANGED
@@ -28,6 +28,7 @@ use Piwik\Plugins\Marketplace\Controller as MarketplaceController;
|
|
28 |
use Piwik\Plugins\Marketplace\Plugins;
|
29 |
use Piwik\Settings\Storage\Backend\PluginSettingsTable;
|
30 |
use Piwik\SettingsPiwik;
|
|
|
31 |
use Piwik\Translation\Translator;
|
32 |
use Piwik\Url;
|
33 |
use Piwik\Version;
|
@@ -236,6 +237,7 @@ class Controller extends Plugin\ControllerAdmin
|
|
236 |
}
|
237 |
|
238 |
$view->isPluginUploadEnabled = CorePluginsAdmin::isPluginUploadEnabled();
|
|
|
239 |
$view->installNonce = Nonce::getNonce(MarketplaceController::INSTALL_NONCE);
|
240 |
|
241 |
return $view;
|
28 |
use Piwik\Plugins\Marketplace\Plugins;
|
29 |
use Piwik\Settings\Storage\Backend\PluginSettingsTable;
|
30 |
use Piwik\SettingsPiwik;
|
31 |
+
use Piwik\SettingsServer;
|
32 |
use Piwik\Translation\Translator;
|
33 |
use Piwik\Url;
|
34 |
use Piwik\Version;
|
237 |
}
|
238 |
|
239 |
$view->isPluginUploadEnabled = CorePluginsAdmin::isPluginUploadEnabled();
|
240 |
+
$view->uploadLimit = SettingsServer::getPostMaxUploadSize();
|
241 |
$view->installNonce = Nonce::getNonce(MarketplaceController::INSTALL_NONCE);
|
242 |
|
243 |
return $view;
|
app/plugins/CorePluginsAdmin/CorePluginsAdmin.php
CHANGED
@@ -72,6 +72,7 @@ class CorePluginsAdmin extends Plugin
|
|
72 |
public function getClientSideTranslationKeys(&$translations)
|
73 |
{
|
74 |
$translations[] = 'CorePluginsAdmin_NoZipFileSelected';
|
|
|
75 |
$translations[] = 'CorePluginsAdmin_NoPluginSettings';
|
76 |
$translations[] = 'CoreAdminHome_PluginSettingsIntro';
|
77 |
$translations[] = 'CoreAdminHome_PluginSettingsSaveSuccess';
|
72 |
public function getClientSideTranslationKeys(&$translations)
|
73 |
{
|
74 |
$translations[] = 'CorePluginsAdmin_NoZipFileSelected';
|
75 |
+
$translations[] = 'CorePluginsAdmin_FileExceedsUploadLimit';
|
76 |
$translations[] = 'CorePluginsAdmin_NoPluginSettings';
|
77 |
$translations[] = 'CoreAdminHome_PluginSettingsIntro';
|
78 |
$translations[] = 'CoreAdminHome_PluginSettingsSaveSuccess';
|
app/plugins/CoreUpdater/Controller.php
CHANGED
@@ -268,11 +268,6 @@ class Controller extends \Piwik\Plugin\Controller
|
|
268 |
|
269 |
public function index()
|
270 |
{
|
271 |
-
$language = Common::getRequestVar('language', '');
|
272 |
-
if (!empty($language)) {
|
273 |
-
LanguagesManager::setLanguageForSession($language);
|
274 |
-
}
|
275 |
-
|
276 |
try {
|
277 |
return $this->runUpdaterAndExit();
|
278 |
} catch(NoUpdatesFoundException $e) {
|
268 |
|
269 |
public function index()
|
270 |
{
|
|
|
|
|
|
|
|
|
|
|
271 |
try {
|
272 |
return $this->runUpdaterAndExit();
|
273 |
} catch(NoUpdatesFoundException $e) {
|
app/plugins/CoreUpdater/Model.php
CHANGED
@@ -28,6 +28,7 @@ class Model
|
|
28 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . '/core', $target . '/core');
|
29 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . '/libs', $target . '/libs');
|
30 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . '/vendor', $target . '/vendor');
|
|
|
31 |
|
32 |
foreach ($this->getPluginsFromDirectoy($source) as $pluginDir) {
|
33 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . $pluginDir, $target . $pluginDir);
|
28 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . '/core', $target . '/core');
|
29 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . '/libs', $target . '/libs');
|
30 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . '/vendor', $target . '/vendor');
|
31 |
+
Filesystem::unlinkTargetFilesNotPresentInSource($source . '/node_modules', $target . '/node_modules');
|
32 |
|
33 |
foreach ($this->getPluginsFromDirectoy($source) as $pluginDir) {
|
34 |
Filesystem::unlinkTargetFilesNotPresentInSource($source . $pluginDir, $target . $pluginDir);
|
app/plugins/CoreVisualizations/Visualizations/Sparklines.php
CHANGED
@@ -77,7 +77,7 @@ class Sparklines extends ViewDataTable
|
|
77 |
}
|
78 |
}
|
79 |
|
80 |
-
$view->allMetricsDocumentation = Metrics::getDefaultMetricsDocumentation();
|
81 |
|
82 |
$this->requestConfig->request_parameters_to_modify['columns'] = $columnsList;
|
83 |
$this->requestConfig->request_parameters_to_modify['format_metrics'] = '1';
|
77 |
}
|
78 |
}
|
79 |
|
80 |
+
$view->allMetricsDocumentation = array_merge(Metrics::getDefaultMetricsDocumentation(), $this->config->metrics_documentation);
|
81 |
|
82 |
$this->requestConfig->request_parameters_to_modify['columns'] = $columnsList;
|
83 |
$this->requestConfig->request_parameters_to_modify['format_metrics'] = '1';
|
app/plugins/DevicesDetection/Reports/GetBrand.php
CHANGED
@@ -19,7 +19,7 @@ class GetBrand extends Base
|
|
19 |
parent::init();
|
20 |
$this->dimension = new DeviceBrand();
|
21 |
$this->name = Piwik::translate('DevicesDetection_DeviceBrand');
|
22 |
-
$this->documentation = '';
|
23 |
$this->order = 4;
|
24 |
$this->hasGoalMetrics = true;
|
25 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
19 |
parent::init();
|
20 |
$this->dimension = new DeviceBrand();
|
21 |
$this->name = Piwik::translate('DevicesDetection_DeviceBrand');
|
22 |
+
$this->documentation = Piwik::translate('DevicesDetection_DeviceBrandReportDocumentation');
|
23 |
$this->order = 4;
|
24 |
$this->hasGoalMetrics = true;
|
25 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
app/plugins/DevicesDetection/Reports/GetBrowserVersions.php
CHANGED
@@ -20,7 +20,7 @@ class GetBrowserVersions extends Base
|
|
20 |
parent::init();
|
21 |
$this->dimension = new BrowserVersion();
|
22 |
$this->name = Piwik::translate('DevicesDetection_BrowserVersion');
|
23 |
-
$this->documentation = '';
|
24 |
$this->order = 6;
|
25 |
$this->subcategoryId = 'DevicesDetection_Software';
|
26 |
}
|
20 |
parent::init();
|
21 |
$this->dimension = new BrowserVersion();
|
22 |
$this->name = Piwik::translate('DevicesDetection_BrowserVersion');
|
23 |
+
$this->documentation = Piwik::translate('DevicesDetection_WidgetBrowserVersionsDocumentation');
|
24 |
$this->order = 6;
|
25 |
$this->subcategoryId = 'DevicesDetection_Software';
|
26 |
}
|
app/plugins/DevicesDetection/Reports/GetBrowsers.php
CHANGED
@@ -20,7 +20,7 @@ class GetBrowsers extends Base
|
|
20 |
parent::init();
|
21 |
$this->dimension = new BrowserName();
|
22 |
$this->name = Piwik::translate('DevicesDetection_Browsers');
|
23 |
-
$this->documentation = Piwik::translate('DevicesDetection_WidgetBrowsersDocumentation'
|
24 |
$this->order = 5;
|
25 |
$this->subcategoryId = 'DevicesDetection_Software';
|
26 |
$this->hasGoalMetrics = true;
|
20 |
parent::init();
|
21 |
$this->dimension = new BrowserName();
|
22 |
$this->name = Piwik::translate('DevicesDetection_Browsers');
|
23 |
+
$this->documentation = Piwik::translate('DevicesDetection_WidgetBrowsersDocumentation');
|
24 |
$this->order = 5;
|
25 |
$this->subcategoryId = 'DevicesDetection_Software';
|
26 |
$this->hasGoalMetrics = true;
|
app/plugins/DevicesDetection/Reports/GetModel.php
CHANGED
@@ -19,7 +19,7 @@ class GetModel extends Base
|
|
19 |
parent::init();
|
20 |
$this->dimension = new DeviceModel();
|
21 |
$this->name = Piwik::translate('DevicesDetection_DeviceModel');
|
22 |
-
$this->documentation = '';
|
23 |
$this->order = 2;
|
24 |
$this->hasGoalMetrics = true;
|
25 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
19 |
parent::init();
|
20 |
$this->dimension = new DeviceModel();
|
21 |
$this->name = Piwik::translate('DevicesDetection_DeviceModel');
|
22 |
+
$this->documentation = Piwik::translate('DevicesDetection_DeviceModelReportDocumentation');
|
23 |
$this->order = 2;
|
24 |
$this->hasGoalMetrics = true;
|
25 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
app/plugins/DevicesDetection/Reports/GetOsFamilies.php
CHANGED
@@ -20,7 +20,7 @@ class GetOsFamilies extends Base
|
|
20 |
parent::init();
|
21 |
$this->dimension = new Os();
|
22 |
$this->name = Piwik::translate('DevicesDetection_OperatingSystemFamilies');
|
23 |
-
$this->documentation = '';
|
24 |
$this->order = 8;
|
25 |
|
26 |
$this->subcategoryId = 'DevicesDetection_Software';
|
20 |
parent::init();
|
21 |
$this->dimension = new Os();
|
22 |
$this->name = Piwik::translate('DevicesDetection_OperatingSystemFamilies');
|
23 |
+
$this->documentation = Piwik::translate('DevicesDetection_OperatingSystemFamiliesReportDocumentation');
|
24 |
$this->order = 8;
|
25 |
|
26 |
$this->subcategoryId = 'DevicesDetection_Software';
|
app/plugins/DevicesDetection/Reports/GetOsVersions.php
CHANGED
@@ -20,7 +20,7 @@ class GetOsVersions extends Base
|
|
20 |
parent::init();
|
21 |
$this->dimension = new OsVersion();
|
22 |
$this->name = Piwik::translate('DevicesDetection_OperatingSystemVersions');
|
23 |
-
$this->documentation = '';
|
24 |
$this->order = 2;
|
25 |
|
26 |
$this->subcategoryId = 'DevicesDetection_Software';
|
20 |
parent::init();
|
21 |
$this->dimension = new OsVersion();
|
22 |
$this->name = Piwik::translate('DevicesDetection_OperatingSystemVersions');
|
23 |
+
$this->documentation = Piwik::translate('DevicesDetection_OperatingSystemVersionsReportDocumentation');
|
24 |
$this->order = 2;
|
25 |
|
26 |
$this->subcategoryId = 'DevicesDetection_Software';
|
app/plugins/DevicesDetection/Reports/GetType.php
CHANGED
@@ -20,7 +20,7 @@ class GetType extends Base
|
|
20 |
parent::init();
|
21 |
$this->dimension = new DeviceType();
|
22 |
$this->name = Piwik::translate('DevicesDetection_DeviceType');
|
23 |
-
$this->documentation = '';
|
24 |
$this->order = 0;
|
25 |
$this->hasGoalMetrics = true;
|
26 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
20 |
parent::init();
|
21 |
$this->dimension = new DeviceType();
|
22 |
$this->name = Piwik::translate('DevicesDetection_DeviceType');
|
23 |
+
$this->documentation = Piwik::translate('DevicesDetection_DeviceTypeReportDocumentation');
|
24 |
$this->order = 0;
|
25 |
$this->hasGoalMetrics = true;
|
26 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
app/plugins/Events/Reports/GetAction.php
CHANGED
@@ -19,7 +19,7 @@ class GetAction extends Base
|
|
19 |
parent::init();
|
20 |
$this->dimension = new EventAction();
|
21 |
$this->name = Piwik::translate('Events_EventActions');
|
22 |
-
$this->documentation = '';
|
23 |
$this->metrics = array('nb_events', 'sum_event_value', 'min_event_value', 'max_event_value', 'nb_events_with_value');
|
24 |
if (Common::getRequestVar('secondaryDimension', false) == 'eventCategory') {
|
25 |
$this->actionToLoadSubTables = 'getCategoryFromNameId';
|
19 |
parent::init();
|
20 |
$this->dimension = new EventAction();
|
21 |
$this->name = Piwik::translate('Events_EventActions');
|
22 |
+
$this->documentation = Piwik::translate('Events_EventActionsReportDocumentation');
|
23 |
$this->metrics = array('nb_events', 'sum_event_value', 'min_event_value', 'max_event_value', 'nb_events_with_value');
|
24 |
if (Common::getRequestVar('secondaryDimension', false) == 'eventCategory') {
|
25 |
$this->actionToLoadSubTables = 'getCategoryFromNameId';
|
app/plugins/Events/Reports/GetCategory.php
CHANGED
@@ -19,7 +19,7 @@ class GetCategory extends Base
|
|
19 |
parent::init();
|
20 |
$this->dimension = new EventCategory();
|
21 |
$this->name = Piwik::translate('Events_EventCategories');
|
22 |
-
$this->documentation = '';
|
23 |
$this->metrics = array('nb_events', 'sum_event_value', 'min_event_value', 'max_event_value', 'nb_events_with_value');
|
24 |
if (Common::getRequestVar('secondaryDimension', false) == 'eventName') {
|
25 |
$this->actionToLoadSubTables = 'getNameFromCategoryId';
|
19 |
parent::init();
|
20 |
$this->dimension = new EventCategory();
|
21 |
$this->name = Piwik::translate('Events_EventCategories');
|
22 |
+
$this->documentation = Piwik::translate('Events_EventCategoriesReportDocumentation');
|
23 |
$this->metrics = array('nb_events', 'sum_event_value', 'min_event_value', 'max_event_value', 'nb_events_with_value');
|
24 |
if (Common::getRequestVar('secondaryDimension', false) == 'eventName') {
|
25 |
$this->actionToLoadSubTables = 'getNameFromCategoryId';
|
app/plugins/Events/Reports/GetName.php
CHANGED
@@ -19,7 +19,7 @@ class GetName extends Base
|
|
19 |
parent::init();
|
20 |
$this->dimension = new EventName();
|
21 |
$this->name = Piwik::translate('Events_EventNames');
|
22 |
-
$this->documentation = '';
|
23 |
$this->metrics = array('nb_events', 'sum_event_value', 'min_event_value', 'max_event_value', 'nb_events_with_value');
|
24 |
if (Common::getRequestVar('secondaryDimension', false) == 'eventCategory') {
|
25 |
$this->actionToLoadSubTables = 'getCategoryFromNameId';
|
19 |
parent::init();
|
20 |
$this->dimension = new EventName();
|
21 |
$this->name = Piwik::translate('Events_EventNames');
|
22 |
+
$this->documentation = Piwik::translate('Events_EventNamesReportDocumentation');
|
23 |
$this->metrics = array('nb_events', 'sum_event_value', 'min_event_value', 'max_event_value', 'nb_events_with_value');
|
24 |
if (Common::getRequestVar('secondaryDimension', false) == 'eventCategory') {
|
25 |
$this->actionToLoadSubTables = 'getCategoryFromNameId';
|
app/plugins/Feedback/API.php
CHANGED
@@ -67,7 +67,6 @@ class API extends \Piwik\Plugin\API
|
|
67 |
$subject = '[ Feedback Feature - Matomo ] ' . $subject;
|
68 |
$body = Common::unsanitizeInputValue($body) . "\n"
|
69 |
. 'Matomo ' . Version::VERSION . "\n"
|
70 |
-
. 'IP: ' . IP::getIpFromHeader() . "\n"
|
71 |
. 'URL: ' . Url::getReferrer() . "\n";
|
72 |
|
73 |
$mail = new Mail();
|
67 |
$subject = '[ Feedback Feature - Matomo ] ' . $subject;
|
68 |
$body = Common::unsanitizeInputValue($body) . "\n"
|
69 |
. 'Matomo ' . Version::VERSION . "\n"
|
|
|
70 |
. 'URL: ' . Url::getReferrer() . "\n";
|
71 |
|
72 |
$mail = new Mail();
|
app/plugins/Goals/Reports/Get.php
CHANGED
@@ -35,7 +35,7 @@ class Get extends Base
|
|
35 |
|
36 |
$this->name = Piwik::translate('Goals_Goals');
|
37 |
$this->processedMetrics = array('conversion_rate');
|
38 |
-
$this->documentation = '';
|
39 |
$this->order = 1;
|
40 |
$this->orderGoal = 50;
|
41 |
$this->metrics = array('nb_conversions', 'nb_visits_converted', 'revenue');
|
35 |
|
36 |
$this->name = Piwik::translate('Goals_Goals');
|
37 |
$this->processedMetrics = array('conversion_rate');
|
38 |
+
$this->documentation = Piwik::translate('Goals_OverviewReportDocumentation');
|
39 |
$this->order = 1;
|
40 |
$this->orderGoal = 50;
|
41 |
$this->metrics = array('nb_conversions', 'nb_visits_converted', 'revenue');
|
app/plugins/Goals/Reports/GetDaysToConversion.php
CHANGED
@@ -22,6 +22,7 @@ class GetDaysToConversion extends Base
|
|
22 |
parent::init();
|
23 |
|
24 |
$this->name = Piwik::translate('Goals_DaysToConv');
|
|
|
25 |
$this->dimension = new DaysToConversion();
|
26 |
$this->constantRowsCount = true;
|
27 |
$this->processedMetrics = false;
|
22 |
parent::init();
|
23 |
|
24 |
$this->name = Piwik::translate('Goals_DaysToConv');
|
25 |
+
$this->documentation = Piwik::translate('Goals_DaysToConvReportDocumentation');
|
26 |
$this->dimension = new DaysToConversion();
|
27 |
$this->constantRowsCount = true;
|
28 |
$this->processedMetrics = false;
|
app/plugins/Goals/Reports/GetVisitsUntilConversion.php
CHANGED
@@ -22,6 +22,7 @@ class GetVisitsUntilConversion extends Base
|
|
22 |
parent::init();
|
23 |
|
24 |
$this->name = Piwik::translate('Goals_VisitsUntilConv');
|
|
|
25 |
$this->dimension = new VisitsUntilConversion();
|
26 |
$this->constantRowsCount = true;
|
27 |
$this->processedMetrics = array();
|
22 |
parent::init();
|
23 |
|
24 |
$this->name = Piwik::translate('Goals_VisitsUntilConv');
|
25 |
+
$this->documentation = Piwik::translate('Goals_VisitsUntilConvReportDocumentation');
|
26 |
$this->dimension = new VisitsUntilConversion();
|
27 |
$this->constantRowsCount = true;
|
28 |
$this->processedMetrics = array();
|
app/plugins/Live/Model.php
CHANGED
@@ -58,9 +58,9 @@ class Model
|
|
58 |
$date = 'yesterdaySameTime';
|
59 |
}
|
60 |
|
61 |
-
|
62 |
|
63 |
-
$queries = $this->splitDatesIntoMultipleQueries($dateStart, $dateEnd, $limit, $offset);
|
64 |
|
65 |
$foundVisits = array();
|
66 |
|
@@ -75,14 +75,14 @@ class Model
|
|
75 |
$updatedOffset = 0; // we've already skipped enough rows
|
76 |
}
|
77 |
|
78 |
-
|
79 |
|
80 |
$visits = $this->executeLogVisitsQuery($sql, $bind, $segment, $dateStart, $dateEnd, $minTimestamp, $limit);
|
81 |
|
82 |
if (!empty($offset) && empty($visits)) {
|
83 |
// find out if there are any matches
|
84 |
$updatedOffset = 0;
|
85 |
-
|
86 |
|
87 |
$visits = $this->executeLogVisitsQuery($sql, $bind, $segment, $dateStart, $dateEnd, $minTimestamp, $limit);
|
88 |
if (!empty($visits)) {
|
@@ -213,7 +213,7 @@ class Model
|
|
213 |
return true;
|
214 |
}
|
215 |
|
216 |
-
public function splitDatesIntoMultipleQueries($dateStart, $dateEnd, $limit, $offset)
|
217 |
{
|
218 |
$virtualDateEnd = $dateEnd;
|
219 |
if (empty($dateEnd)) {
|
@@ -230,33 +230,64 @@ class Model
|
|
230 |
if ($limit
|
231 |
&& $hasStartEndDateMoreThanOneDayInBetween
|
232 |
) {
|
233 |
-
$
|
234 |
-
|
|
|
235 |
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
|
247 |
-
if ($virtualDateStart->
|
248 |
-
|
249 |
-
$
|
250 |
}
|
251 |
-
|
252 |
-
|
253 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
}
|
255 |
-
}
|
256 |
|
257 |
-
|
258 |
-
|
259 |
-
|
|
|
260 |
}
|
261 |
} else {
|
262 |
$queries[] = array($dateStart, $dateEnd);
|
@@ -348,7 +379,7 @@ class Model
|
|
348 |
return 0;
|
349 |
}
|
350 |
|
351 |
-
|
352 |
|
353 |
$now = null;
|
354 |
try {
|
@@ -459,9 +490,9 @@ class Model
|
|
459 |
*/
|
460 |
public function makeLogVisitsQueryString($idSite, $startDate, $endDate, $segment, $offset, $limit, $visitorId, $minTimestamp, $filterSortOrder)
|
461 |
{
|
462 |
-
|
463 |
|
464 |
-
|
465 |
|
466 |
if (strtolower($filterSortOrder) !== 'asc') {
|
467 |
$filterSortOrder = 'DESC';
|
58 |
$date = 'yesterdaySameTime';
|
59 |
}
|
60 |
|
61 |
+
[$dateStart, $dateEnd] = $this->getStartAndEndDate($idSite, $period, $date);
|
62 |
|
63 |
+
$queries = $this->splitDatesIntoMultipleQueries($dateStart, $dateEnd, $limit, $offset, $filterSortOrder);
|
64 |
|
65 |
$foundVisits = array();
|
66 |
|
75 |
$updatedOffset = 0; // we've already skipped enough rows
|
76 |
}
|
77 |
|
78 |
+
[$sql, $bind] = $this->makeLogVisitsQueryString($idSite, $queryRange[0], $queryRange[1], $segment, $updatedOffset, $updatedLimit, $visitorId, $minTimestamp, $filterSortOrder);
|
79 |
|
80 |
$visits = $this->executeLogVisitsQuery($sql, $bind, $segment, $dateStart, $dateEnd, $minTimestamp, $limit);
|
81 |
|
82 |
if (!empty($offset) && empty($visits)) {
|
83 |
// find out if there are any matches
|
84 |
$updatedOffset = 0;
|
85 |
+
[$sql, $bind] = $this->makeLogVisitsQueryString($idSite, $queryRange[0], $queryRange[1], $segment, $updatedOffset, $updatedLimit, $visitorId, $minTimestamp, $filterSortOrder);
|
86 |
|
87 |
$visits = $this->executeLogVisitsQuery($sql, $bind, $segment, $dateStart, $dateEnd, $minTimestamp, $limit);
|
88 |
if (!empty($visits)) {
|
213 |
return true;
|
214 |
}
|
215 |
|
216 |
+
public function splitDatesIntoMultipleQueries($dateStart, $dateEnd, $limit, $offset, $filterSortOrder)
|
217 |
{
|
218 |
$virtualDateEnd = $dateEnd;
|
219 |
if (empty($dateEnd)) {
|
230 |
if ($limit
|
231 |
&& $hasStartEndDateMoreThanOneDayInBetween
|
232 |
) {
|
233 |
+
if (strtolower($filterSortOrder) !== 'asc') {
|
234 |
+
$virtualDateEnd = $virtualDateEnd->subDay(1);
|
235 |
+
$queries[] = [$virtualDateEnd, $dateEnd]; // need to use ",endDate" in case endDate is not set
|
236 |
|
237 |
+
if ($virtualDateStart->addDay(7)->isEarlier($virtualDateEnd)) {
|
238 |
+
$queries[] = [$virtualDateEnd->subDay(7), $virtualDateEnd->subSeconds(1)];
|
239 |
+
$virtualDateEnd = $virtualDateEnd->subDay(7);
|
240 |
+
}
|
241 |
|
242 |
+
if (!$offset) {
|
243 |
+
// only when no offset
|
244 |
+
// we would in worst case - if not enough visits are found to bypass the offset - execute below queries too often.
|
245 |
+
// like we would need to execute each of the queries twice just to find out if there are some visits that
|
246 |
+
// need to be skipped...
|
247 |
+
|
248 |
+
if ($virtualDateStart->addDay(30)->isEarlier($virtualDateEnd)) {
|
249 |
+
$queries[] = [$virtualDateEnd->subDay(30), $virtualDateEnd->subSeconds(1)];
|
250 |
+
$virtualDateEnd = $virtualDateEnd->subDay(30);
|
251 |
+
}
|
252 |
+
if ($virtualDateStart->addPeriod(1, 'year')->isEarlier($virtualDateEnd)) {
|
253 |
+
$queries[] = [$virtualDateEnd->subYear(1), $virtualDateEnd->subSeconds(1)];
|
254 |
+
$virtualDateEnd = $virtualDateEnd->subYear(1);
|
255 |
+
}
|
256 |
+
}
|
257 |
|
258 |
+
if ($virtualDateStart->isEarlier($virtualDateEnd)) {
|
259 |
+
// need to use ",endDate" in case startDate is not set in which case we do not want to have any limit
|
260 |
+
$queries[] = [$dateStart, $virtualDateEnd->subSeconds(1)];
|
261 |
}
|
262 |
+
} else {
|
263 |
+
$queries[] = [$virtualDateStart, $virtualDateStart->addDay(1)->subSeconds(1)];
|
264 |
+
$virtualDateStart = $virtualDateStart->addDay(1);
|
265 |
+
|
266 |
+
if ($virtualDateStart->addDay(7)->isEarlier($virtualDateEnd)) {
|
267 |
+
$queries[] = [$virtualDateStart, $virtualDateStart->addDay(7)->subSeconds(1)];
|
268 |
+
$virtualDateStart = $virtualDateStart->addDay(7);
|
269 |
+
}
|
270 |
+
|
271 |
+
if (!$offset) {
|
272 |
+
// only when no offset
|
273 |
+
// we would in worst case - if not enough visits are found to bypass the offset - execute below queries too often.
|
274 |
+
// like we would need to execute each of the queries twice just to find out if there are some visits that
|
275 |
+
// need to be skipped...
|
276 |
+
|
277 |
+
if ($virtualDateStart->addDay(30)->isEarlier($virtualDateEnd)) {
|
278 |
+
$queries[] = [$virtualDateStart, $virtualDateStart->addDay(30)->subSeconds(1)];
|
279 |
+
$virtualDateStart = $virtualDateStart->addDay(30);
|
280 |
+
}
|
281 |
+
if ($virtualDateStart->addPeriod(1, 'year')->isEarlier($virtualDateEnd)) {
|
282 |
+
$queries[] = [$virtualDateStart, $virtualDateStart->addPeriod(1, 'year')->subSeconds(1)];
|
283 |
+
$virtualDateStart = $virtualDateStart->addPeriod(1, 'year');
|
284 |
+
}
|
285 |
}
|
|
|
286 |
|
287 |
+
if ($virtualDateStart->isEarlier($virtualDateEnd)) {
|
288 |
+
// need to use ",endDate" in case startDate is not set in which case we do not want to have any limit
|
289 |
+
$queries[] = [$virtualDateStart, $dateEnd];
|
290 |
+
}
|
291 |
}
|
292 |
} else {
|
293 |
$queries[] = array($dateStart, $dateEnd);
|
379 |
return 0;
|
380 |
}
|
381 |
|
382 |
+
[$whereIdSites, $idSites] = $this->getIdSitesWhereClause($idSite, $from);
|
383 |
|
384 |
$now = null;
|
385 |
try {
|
490 |
*/
|
491 |
public function makeLogVisitsQueryString($idSite, $startDate, $endDate, $segment, $offset, $limit, $visitorId, $minTimestamp, $filterSortOrder)
|
492 |
{
|
493 |
+
[$whereClause, $bindIdSites] = $this->getIdSitesWhereClause($idSite);
|
494 |
|
495 |
+
[$whereBind, $where] = $this->getWhereClauseAndBind($whereClause, $bindIdSites, $startDate, $endDate, $visitorId, $minTimestamp);
|
496 |
|
497 |
if (strtolower($filterSortOrder) !== 'asc') {
|
498 |
$filterSortOrder = 'DESC';
|
app/plugins/Login/PasswordResetter.php
CHANGED
@@ -89,7 +89,7 @@ class PasswordResetter
|
|
89 |
/**
|
90 |
* The name to use in the From: part of the confirm password reset email.
|
91 |
*
|
92 |
-
* Defaults to the `[General]
|
93 |
*
|
94 |
* @var string
|
95 |
*/
|
@@ -98,7 +98,7 @@ class PasswordResetter
|
|
98 |
/**
|
99 |
* The from email to use in the confirm password reset email.
|
100 |
*
|
101 |
-
* Defaults to the `[General]
|
102 |
*
|
103 |
* @var
|
104 |
*/
|
@@ -130,14 +130,7 @@ class PasswordResetter
|
|
130 |
$this->confirmPasswordAction = $confirmPasswordAction;
|
131 |
}
|
132 |
|
133 |
-
if (empty($emailFromName)) {
|
134 |
-
$emailFromName = Config::getInstance()->General['login_password_recovery_email_name'];
|
135 |
-
}
|
136 |
$this->emailFromName = $emailFromName;
|
137 |
-
|
138 |
-
if (empty($emailFromAddress)) {
|
139 |
-
$emailFromAddress = Config::getInstance()->General['login_password_recovery_email_address'];
|
140 |
-
}
|
141 |
$this->emailFromAddress = $emailFromAddress;
|
142 |
|
143 |
if (empty($passwordHelper)) {
|
@@ -457,7 +450,11 @@ class PasswordResetter
|
|
457 |
) . "</p>";
|
458 |
$mail->setWrappedHtmlBody($bodyText);
|
459 |
|
460 |
-
|
|
|
|
|
|
|
|
|
461 |
|
462 |
$replytoEmailName = Config::getInstance()->General['login_password_recovery_replyto_email_name'];
|
463 |
$replytoEmailAddress = Config::getInstance()->General['login_password_recovery_replyto_email_address'];
|
89 |
/**
|
90 |
* The name to use in the From: part of the confirm password reset email.
|
91 |
*
|
92 |
+
* Defaults to the `[General] noreply_email_name` INI config option.
|
93 |
*
|
94 |
* @var string
|
95 |
*/
|
98 |
/**
|
99 |
* The from email to use in the confirm password reset email.
|
100 |
*
|
101 |
+
* Defaults to the `[General] noreply_email_address` INI config option.
|
102 |
*
|
103 |
* @var
|
104 |
*/
|
130 |
$this->confirmPasswordAction = $confirmPasswordAction;
|
131 |
}
|
132 |
|
|
|
|
|
|
|
133 |
$this->emailFromName = $emailFromName;
|
|
|
|
|
|
|
|
|
134 |
$this->emailFromAddress = $emailFromAddress;
|
135 |
|
136 |
if (empty($passwordHelper)) {
|
450 |
) . "</p>";
|
451 |
$mail->setWrappedHtmlBody($bodyText);
|
452 |
|
453 |
+
if ($this->emailFromAddress || $this->emailFromName) {
|
454 |
+
$mail->setFrom($this->emailFromAddress, $this->emailFromName);
|
455 |
+
} else {
|
456 |
+
$mail->setDefaultFromPiwik();
|
457 |
+
}
|
458 |
|
459 |
$replytoEmailName = Config::getInstance()->General['login_password_recovery_replyto_email_name'];
|
460 |
$replytoEmailAddress = Config::getInstance()->General['login_password_recovery_replyto_email_address'];
|
app/plugins/Marketplace/Controller.php
CHANGED
@@ -26,6 +26,7 @@ use Piwik\Plugins\Marketplace\Input\PurchaseType;
|
|
26 |
use Piwik\Plugins\Marketplace\Input\Sort;
|
27 |
use Piwik\ProxyHttp;
|
28 |
use Piwik\SettingsPiwik;
|
|
|
29 |
use Piwik\Url;
|
30 |
use Piwik\View;
|
31 |
use Exception;
|
@@ -287,6 +288,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|
287 |
$view->isAutoUpdatePossible = SettingsPiwik::isAutoUpdatePossible();
|
288 |
$view->isAutoUpdateEnabled = SettingsPiwik::isAutoUpdateEnabled();
|
289 |
$view->isPluginUploadEnabled = CorePluginsAdmin::isPluginUploadEnabled();
|
|
|
290 |
$view->inReportingMenu = (bool) Common::getRequestVar('embed', 0, 'int');
|
291 |
|
292 |
return $view->render();
|
26 |
use Piwik\Plugins\Marketplace\Input\Sort;
|
27 |
use Piwik\ProxyHttp;
|
28 |
use Piwik\SettingsPiwik;
|
29 |
+
use Piwik\SettingsServer;
|
30 |
use Piwik\Url;
|
31 |
use Piwik\View;
|
32 |
use Exception;
|
288 |
$view->isAutoUpdatePossible = SettingsPiwik::isAutoUpdatePossible();
|
289 |
$view->isAutoUpdateEnabled = SettingsPiwik::isAutoUpdateEnabled();
|
290 |
$view->isPluginUploadEnabled = CorePluginsAdmin::isPluginUploadEnabled();
|
291 |
+
$view->uploadLimit = SettingsServer::getPostMaxUploadSize();
|
292 |
$view->inReportingMenu = (bool) Common::getRequestVar('embed', 0, 'int');
|
293 |
|
294 |
return $view->render();
|
app/plugins/Marketplace/templates/_updateCommunicationEmail.twig
CHANGED
@@ -10,14 +10,14 @@
|
|
10 |
{% if hasThemeUpdate %}
|
11 |
<p>
|
12 |
{{ 'CoreUpdater_NotificationClickToUpdateThemes'|translate }}<br/>
|
13 |
-
{{ host }}index.php?module=CorePluginsAdmin&action=themes
|
14 |
</p>
|
15 |
{% endif %}
|
16 |
|
17 |
{% if hasPluginUpdate %}
|
18 |
<p>
|
19 |
{{ 'CoreUpdater_NotificationClickToUpdatePlugins'|translate }}<br/>
|
20 |
-
{{ host }}index.php?module=CorePluginsAdmin&action=plugins
|
21 |
</p>
|
22 |
{% endif %}
|
23 |
|
10 |
{% if hasThemeUpdate %}
|
11 |
<p>
|
12 |
{{ 'CoreUpdater_NotificationClickToUpdateThemes'|translate }}<br/>
|
13 |
+
<a href="{{ host|e('html_attr') }}index.php?module=CorePluginsAdmin&action=themes">{{ host }}index.php?module=CorePluginsAdmin&action=themes</a>
|
14 |
</p>
|
15 |
{% endif %}
|
16 |
|
17 |
{% if hasPluginUpdate %}
|
18 |
<p>
|
19 |
{{ 'CoreUpdater_NotificationClickToUpdatePlugins'|translate }}<br/>
|
20 |
+
<a href="{{ host|e('html_attr') }}index.php?module=CorePluginsAdmin&action=plugins">{{ host }}index.php?module=CorePluginsAdmin&action=plugins</a>
|
21 |
</p>
|
22 |
{% endif %}
|
23 |
|
app/plugins/Marketplace/templates/uploadPluginDialog.twig
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
|
7 |
<form enctype="multipart/form-data" method="post" id="uploadPluginForm"
|
8 |
action="{{ linkTo({'module':'CorePluginsAdmin', 'action':'uploadPlugin', 'nonce': installNonce}) }}">
|
9 |
-
<input type="file" name="pluginZip">
|
10 |
<br />
|
11 |
<div piwik-field uicontrol="password" name="confirmPassword" autocomplete="off"
|
12 |
data-title="{{ 'Login_ConfirmPasswordToContinue'|translate|e('html_attr') }}"
|
6 |
|
7 |
<form enctype="multipart/form-data" method="post" id="uploadPluginForm"
|
8 |
action="{{ linkTo({'module':'CorePluginsAdmin', 'action':'uploadPlugin', 'nonce': installNonce}) }}">
|
9 |
+
<input type="file" name="pluginZip" data-max-size="{{ uploadLimit }}">
|
10 |
<br />
|
11 |
<div piwik-field uicontrol="password" name="confirmPassword" autocomplete="off"
|
12 |
data-title="{{ 'Login_ConfirmPasswordToContinue'|translate|e('html_attr') }}"
|
app/plugins/Morpheus/templates/admin.twig
CHANGED
@@ -34,7 +34,7 @@
|
|
34 |
|
35 |
{% if showMenu is not defined or showMenu %}
|
36 |
{% import '@CoreHome/_menu.twig' as menu %}
|
37 |
-
{{ menu.menu(adminMenu, false, 'Menu--admin', currentModule, currentAction) }}
|
38 |
{% endif %}
|
39 |
|
40 |
|
34 |
|
35 |
{% if showMenu is not defined or showMenu %}
|
36 |
{% import '@CoreHome/_menu.twig' as menu %}
|
37 |
+
{{ menu.menu(adminMenu, false, 'Menu--admin', currentModule, currentAction, hasSomeAdminAccess) }}
|
38 |
{% endif %}
|
39 |
|
40 |
|
app/plugins/MultiSites/Reports/GetAll.php
CHANGED
@@ -18,7 +18,7 @@ class GetAll extends Base
|
|
18 |
parent::init();
|
19 |
$this->dimension = new Website();
|
20 |
$this->name = Piwik::translate('General_AllWebsitesDashboard');
|
21 |
-
$this->documentation = '';
|
22 |
$this->constantRowsCount = false;
|
23 |
$this->order = 4;
|
24 |
}
|
18 |
parent::init();
|
19 |
$this->dimension = new Website();
|
20 |
$this->name = Piwik::translate('General_AllWebsitesDashboard');
|
21 |
+
$this->documentation = Piwik::translate('MultiSites_AllWebsitesDashboardDocumentation');
|
22 |
$this->constantRowsCount = false;
|
23 |
$this->order = 4;
|
24 |
}
|
app/plugins/MultiSites/Reports/GetOne.php
CHANGED
@@ -18,7 +18,7 @@ class GetOne extends Base
|
|
18 |
parent::init();
|
19 |
$this->dimension = new Website();
|
20 |
$this->name = Piwik::translate('General_SingleWebsitesDashboard');
|
21 |
-
$this->documentation = '';
|
22 |
$this->constantRowsCount = false;
|
23 |
$this->order = 5;
|
24 |
}
|
18 |
parent::init();
|
19 |
$this->dimension = new Website();
|
20 |
$this->name = Piwik::translate('General_SingleWebsitesDashboard');
|
21 |
+
$this->documentation = Piwik::translate('MultiSites_SingleWebsitesDashboardDocumentation');
|
22 |
$this->constantRowsCount = false;
|
23 |
$this->order = 5;
|
24 |
}
|
app/plugins/PagePerformance/Controller.php
CHANGED
@@ -47,14 +47,15 @@ class Controller extends PluginController
|
|
47 |
{
|
48 |
$apiMethod = Common::getRequestVar('apiMethod');
|
49 |
$period = Common::getRequestVar('period');
|
|
|
50 |
|
51 |
$params = [
|
52 |
'method' => $apiMethod,
|
53 |
-
'period' => $period,
|
54 |
'label' => Common::getRequestVar('label', ''),
|
55 |
'idSite' => $this->idSite,
|
56 |
'segment' => Common::getRequestVar('segment', ''),
|
57 |
-
'date' => 'range' === $period ? $
|
58 |
'format' => 'original',
|
59 |
'serialize' => '0',
|
60 |
];
|
47 |
{
|
48 |
$apiMethod = Common::getRequestVar('apiMethod');
|
49 |
$period = Common::getRequestVar('period');
|
50 |
+
$date = Common::getRequestVar('date');
|
51 |
|
52 |
$params = [
|
53 |
'method' => $apiMethod,
|
54 |
+
'period' => 'range' === $period ? 'day' : $period,
|
55 |
'label' => Common::getRequestVar('label', ''),
|
56 |
'idSite' => $this->idSite,
|
57 |
'segment' => Common::getRequestVar('segment', ''),
|
58 |
+
'date' => 'range' === $period ? $date : EvolutionViz::getDateRangeAndLastN($period, $date)[0],
|
59 |
'format' => 'original',
|
60 |
'serialize' => '0',
|
61 |
];
|
app/plugins/PagePerformance/Reports/Get.php
CHANGED
@@ -29,7 +29,7 @@ class Get extends \Piwik\Plugin\Report
|
|
29 |
$this->order = 5;
|
30 |
|
31 |
$this->name = Piwik::translate('PagePerformance_Overview');
|
32 |
-
$this->documentation = '';
|
33 |
$this->onlineGuideUrl = 'https://matomo.org/faq/how-to/how-do-i-see-page-performance-reports/';
|
34 |
$this->processedMetrics = Metrics::getAllPagePerformanceMetrics();
|
35 |
$this->metrics = Metrics::getAllPagePerformanceMetrics();
|
29 |
$this->order = 5;
|
30 |
|
31 |
$this->name = Piwik::translate('PagePerformance_Overview');
|
32 |
+
$this->documentation = Piwik::translate('PagePerformance_OverviewDocumentation');
|
33 |
$this->onlineGuideUrl = 'https://matomo.org/faq/how-to/how-do-i-see-page-performance-reports/';
|
34 |
$this->processedMetrics = Metrics::getAllPagePerformanceMetrics();
|
35 |
$this->metrics = Metrics::getAllPagePerformanceMetrics();
|
app/plugins/PrivacyManager/PrivacyManager.php
CHANGED
@@ -716,14 +716,16 @@ class PrivacyManager extends Plugin
|
|
716 |
return;
|
717 |
}
|
718 |
|
|
|
719 |
$privacyPolicyUrl = $settings->privacyPolicyUrl->getValue();
|
720 |
$termsAndConditionUrl = $settings->termsAndConditionUrl->getValue();
|
721 |
|
722 |
-
if (empty($privacyPolicyUrl) && empty($termsAndConditionUrl)) {
|
723 |
return;
|
724 |
}
|
725 |
|
726 |
$view = new View('@PrivacyManager/footerLinks.twig');
|
|
|
727 |
$view->privacyPolicyUrl = $privacyPolicyUrl;
|
728 |
$view->termsAndCondition = $termsAndConditionUrl;
|
729 |
$out .= $view->render();
|
716 |
return;
|
717 |
}
|
718 |
|
719 |
+
$imprintUrl = $settings->imprintUrl->getValue();
|
720 |
$privacyPolicyUrl = $settings->privacyPolicyUrl->getValue();
|
721 |
$termsAndConditionUrl = $settings->termsAndConditionUrl->getValue();
|
722 |
|
723 |
+
if (empty($imprintUrl) && empty($privacyPolicyUrl) && empty($termsAndConditionUrl)) {
|
724 |
return;
|
725 |
}
|
726 |
|
727 |
$view = new View('@PrivacyManager/footerLinks.twig');
|
728 |
+
$view->imprintUrl = $imprintUrl;
|
729 |
$view->privacyPolicyUrl = $privacyPolicyUrl;
|
730 |
$view->termsAndCondition = $termsAndConditionUrl;
|
731 |
$out .= $view->render();
|
app/plugins/PrivacyManager/SystemSettings.php
CHANGED
@@ -20,6 +20,9 @@ use Piwik\Settings\FieldConfig;
|
|
20 |
*/
|
21 |
class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings
|
22 |
{
|
|
|
|
|
|
|
23 |
/** @var SystemSetting */
|
24 |
public $privacyPolicyUrl;
|
25 |
|
@@ -31,11 +34,22 @@ class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings
|
|
31 |
|
32 |
protected function init()
|
33 |
{
|
|
|
34 |
$this->privacyPolicyUrl = $this->createPrivacyPolicyUrlSetting();
|
35 |
$this->termsAndConditionUrl = $this->createTermsAndConditionUrlSetting();
|
36 |
$this->showInEmbeddedWidgets = $this->createShowInEmbeddedWidgetsSetting();
|
37 |
}
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
private function createPrivacyPolicyUrlSetting(): SystemSetting
|
40 |
{
|
41 |
return $this->makeSetting('privacyPolicyUrl', $default = '', FieldConfig::TYPE_STRING, function (FieldConfig $field) {
|
20 |
*/
|
21 |
class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings
|
22 |
{
|
23 |
+
/** @var SystemSetting */
|
24 |
+
public $imprintUrl;
|
25 |
+
|
26 |
/** @var SystemSetting */
|
27 |
public $privacyPolicyUrl;
|
28 |
|
34 |
|
35 |
protected function init()
|
36 |
{
|
37 |
+
$this->imprintUrl = $this->createImprintUrlSetting();
|
38 |
$this->privacyPolicyUrl = $this->createPrivacyPolicyUrlSetting();
|
39 |
$this->termsAndConditionUrl = $this->createTermsAndConditionUrlSetting();
|
40 |
$this->showInEmbeddedWidgets = $this->createShowInEmbeddedWidgetsSetting();
|
41 |
}
|
42 |
|
43 |
+
private function createImprintUrlSetting(): SystemSetting
|
44 |
+
{
|
45 |
+
return $this->makeSetting('ImprintUrl', $default = '', FieldConfig::TYPE_STRING, function (FieldConfig $field) {
|
46 |
+
$field->title = Piwik::translate('PrivacyManager_ImprintUrl');
|
47 |
+
$field->uiControl = FieldConfig::UI_CONTROL_TEXT;
|
48 |
+
$field->description = Piwik::translate('PrivacyManager_ImprintUrlDescription') . ' ' .
|
49 |
+
Piwik::translate('PrivacyManager_PrivacyPolicyUrlDescriptionSuffix', ['anonymous']);
|
50 |
+
});
|
51 |
+
}
|
52 |
+
|
53 |
private function createPrivacyPolicyUrlSetting(): SystemSetting
|
54 |
{
|
55 |
return $this->makeSetting('privacyPolicyUrl', $default = '', FieldConfig::TYPE_STRING, function (FieldConfig $field) {
|
app/plugins/PrivacyManager/templates/footerLinks.twig
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
<div id="footerLinks">
|
|
|
|
|
2 |
{% if privacyPolicyUrl|default('') is not empty %}<a target="_blank" rel="noreferrer noopener" href="{{ privacyPolicyUrl|safelink|e('html_attr') }}">{{ 'PrivacyManager_PrivacyPolicy'|translate }}</a>{% endif %}
|
3 |
{% if privacyPolicyUrl|default('') is not empty and termsAndCondition|default('') is not empty %}|{% endif %}
|
4 |
{% if termsAndCondition|default('') is not empty %}<a target="_blank" rel="noreferrer noopener" href="{{ termsAndCondition|safelink|e('html_attr') }}">{{ 'PrivacyManager_TermsAndConditions'|translate }}</a>{% endif %}
|
1 |
<div id="footerLinks">
|
2 |
+
{% if imprintUrl|default('') is not empty %}<a target="_blank" rel="noreferrer noopener" href="{{ imprintUrl|safelink|e('html_attr') }}">{{ 'PrivacyManager_Imprint'|translate }}</a>{% endif %}
|
3 |
+
{% if imprintUrl|default('') is not empty and (privacyPolicyUrl|default('') is not empty or termsAndCondition|default('') is not empty) %}|{% endif %}
|
4 |
{% if privacyPolicyUrl|default('') is not empty %}<a target="_blank" rel="noreferrer noopener" href="{{ privacyPolicyUrl|safelink|e('html_attr') }}">{{ 'PrivacyManager_PrivacyPolicy'|translate }}</a>{% endif %}
|
5 |
{% if privacyPolicyUrl|default('') is not empty and termsAndCondition|default('') is not empty %}|{% endif %}
|
6 |
{% if termsAndCondition|default('') is not empty %}<a target="_blank" rel="noreferrer noopener" href="{{ termsAndCondition|safelink|e('html_attr') }}">{{ 'PrivacyManager_TermsAndConditions'|translate }}</a>{% endif %}
|
app/plugins/Referrers/Reports/Get.php
CHANGED
@@ -38,7 +38,7 @@ class Get extends Base
|
|
38 |
parent::init();
|
39 |
|
40 |
$this->name = Piwik::translate('Referrers_ReferrersOverview');
|
41 |
-
$this->documentation = '';
|
42 |
$this->processedMetrics = [
|
43 |
// none
|
44 |
];
|
38 |
parent::init();
|
39 |
|
40 |
$this->name = Piwik::translate('Referrers_ReferrersOverview');
|
41 |
+
$this->documentation = Piwik::translate('Referrers_ReferrersOverviewDocumentation');
|
42 |
$this->processedMetrics = [
|
43 |
// none
|
44 |
];
|
app/plugins/Referrers/SearchEngine.php
CHANGED
@@ -205,7 +205,9 @@ class SearchEngine extends Singleton
|
|
205 |
|
206 |
$searchEngineName = $definitions['name'];
|
207 |
$variableNames = $definitions['params'];
|
208 |
-
$keywordsHiddenFor = !empty($definitions['hiddenkeyword']) ? $definitions['hiddenkeyword'] : array(
|
|
|
|
|
209 |
|
210 |
$key = null;
|
211 |
if ($searchEngineName === 'Google Images') {
|
205 |
|
206 |
$searchEngineName = $definitions['name'];
|
207 |
$variableNames = $definitions['params'];
|
208 |
+
$keywordsHiddenFor = !empty($definitions['hiddenkeyword']) ? $definitions['hiddenkeyword'] : array(
|
209 |
+
'/^$/', '/'
|
210 |
+
);
|
211 |
|
212 |
$key = null;
|
213 |
if ($searchEngineName === 'Google Images') {
|
app/plugins/Resolution/Reports/GetResolution.php
CHANGED
@@ -20,7 +20,7 @@ class GetResolution extends Base
|
|
20 |
parent::init();
|
21 |
$this->dimension = new Resolution();
|
22 |
$this->name = Piwik::translate('Resolution_WidgetResolutions');
|
23 |
-
$this->documentation = '';
|
24 |
$this->order = 8;
|
25 |
|
26 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
20 |
parent::init();
|
21 |
$this->dimension = new Resolution();
|
22 |
$this->name = Piwik::translate('Resolution_WidgetResolutions');
|
23 |
+
$this->documentation = Piwik::translate('Resolution_WidgetResolutionsDocumentation');
|
24 |
$this->order = 8;
|
25 |
|
26 |
$this->subcategoryId = 'DevicesDetection_Devices';
|
app/plugins/SitesManager/SitesManager.php
CHANGED
@@ -385,6 +385,7 @@ class SitesManager extends \Piwik\Plugin
|
|
385 |
$translationKeys[] = "SitesManager_GlobalExcludedUserAgentHelp1";
|
386 |
$translationKeys[] = "SitesManager_GlobalListExcludedUserAgents_Desc";
|
387 |
$translationKeys[] = "SitesManager_GlobalExcludedUserAgentHelp2";
|
|
|
388 |
$translationKeys[] = "SitesManager_WebsitesManagement";
|
389 |
$translationKeys[] = "SitesManager_MainDescription";
|
390 |
$translationKeys[] = "SitesManager_YouCurrentlyHaveAccessToNWebsites";
|
385 |
$translationKeys[] = "SitesManager_GlobalExcludedUserAgentHelp1";
|
386 |
$translationKeys[] = "SitesManager_GlobalListExcludedUserAgents_Desc";
|
387 |
$translationKeys[] = "SitesManager_GlobalExcludedUserAgentHelp2";
|
388 |
+
$translationKeys[] = "SitesManager_GlobalExcludedUserAgentHelp3";
|
389 |
$translationKeys[] = "SitesManager_WebsitesManagement";
|
390 |
$translationKeys[] = "SitesManager_MainDescription";
|
391 |
$translationKeys[] = "SitesManager_YouCurrentlyHaveAccessToNWebsites";
|
app/plugins/SitesManager/templates/help/excluded-user-agents-help.html
CHANGED
@@ -4,4 +4,5 @@
|
|
4 |
<br/><br/>
|
5 |
|
6 |
{{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }} {{ 'SitesManager_GlobalExcludedUserAgentHelp2'|translate }}
|
|
|
7 |
</div>
|
4 |
<br/><br/>
|
5 |
|
6 |
{{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }} {{ 'SitesManager_GlobalExcludedUserAgentHelp2'|translate }}
|
7 |
+
{{ 'SitesManager_GlobalExcludedUserAgentHelp3'|translate:'/bot|spider|crawl|scanner/i' }}
|
8 |
</div>
|
app/plugins/UserId/Reports/GetUsers.php
CHANGED
@@ -27,7 +27,7 @@ class GetUsers extends Base
|
|
27 |
|
28 |
$this->name = Piwik::translate('UserId_UserReportTitle');
|
29 |
$this->subcategoryId = 'UserId_UserReportTitle';
|
30 |
-
$this->documentation = '';
|
31 |
$this->dimension = new UserId();
|
32 |
$this->metrics = array('label', 'nb_visits', 'nb_actions', 'nb_visits_converted');
|
33 |
$this->supportsFlatten = false;
|
27 |
|
28 |
$this->name = Piwik::translate('UserId_UserReportTitle');
|
29 |
$this->subcategoryId = 'UserId_UserReportTitle';
|
30 |
+
$this->documentation = Piwik::translate('UserId_UserReportDocumentation');
|
31 |
$this->dimension = new UserId();
|
32 |
$this->metrics = array('label', 'nb_visits', 'nb_actions', 'nb_visits_converted');
|
33 |
$this->supportsFlatten = false;
|
app/plugins/VisitFrequency/Reports/Get.php
CHANGED
@@ -27,9 +27,9 @@ class Get extends \Piwik\Plugin\Report
|
|
27 |
protected function init()
|
28 |
{
|
29 |
parent::init();
|
30 |
-
$this->categoryId
|
31 |
$this->name = Piwik::translate('VisitFrequency_ColumnReturningVisits');
|
32 |
-
$this->documentation = '';
|
33 |
$this->processedMetrics = array(
|
34 |
new ReturningMetric(new AverageTimeOnSite(), API::RETURNING_COLUMN_SUFFIX),
|
35 |
new ReturningMetric(new ActionsPerVisit(), API::RETURNING_COLUMN_SUFFIX),
|
27 |
protected function init()
|
28 |
{
|
29 |
parent::init();
|
30 |
+
$this->categoryId = 'General_Actions';
|
31 |
$this->name = Piwik::translate('VisitFrequency_ColumnReturningVisits');
|
32 |
+
$this->documentation = Piwik::translate('VisitFrequency_VisitFrequencyReportDocumentation');
|
33 |
$this->processedMetrics = array(
|
34 |
new ReturningMetric(new AverageTimeOnSite(), API::RETURNING_COLUMN_SUFFIX),
|
35 |
new ReturningMetric(new ActionsPerVisit(), API::RETURNING_COLUMN_SUFFIX),
|
app/plugins/VisitsSummary/Reports/Get.php
CHANGED
@@ -36,7 +36,7 @@ class Get extends \Piwik\Plugin\Report
|
|
36 |
parent::init();
|
37 |
$this->categoryId = 'General_Visitors';
|
38 |
$this->name = Piwik::translate('VisitsSummary_VisitsSummary');
|
39 |
-
$this->documentation = '';
|
40 |
$this->processedMetrics = array(
|
41 |
new BounceRate(),
|
42 |
new ActionsPerVisit(),
|
@@ -82,8 +82,7 @@ class Get extends \Piwik\Plugin\Report
|
|
82 |
$this->addSparklineColumns($view);
|
83 |
$view->config->addTranslations($this->getSparklineTranslations());
|
84 |
|
85 |
-
$
|
86 |
-
$view->config->filters[] = function (DataTable $table) use ($view, $numberFormatter) {
|
87 |
$firstRow = $table->getFirstRow();
|
88 |
|
89 |
if (($firstRow->getColumn('nb_pageviews')
|
@@ -103,6 +102,25 @@ class Get extends \Piwik\Plugin\Report
|
|
103 |
$view->config->replaceSparklineMetric(array('nb_users'), '');
|
104 |
}
|
105 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
}
|
107 |
}
|
108 |
|
36 |
parent::init();
|
37 |
$this->categoryId = 'General_Visitors';
|
38 |
$this->name = Piwik::translate('VisitsSummary_VisitsSummary');
|
39 |
+
$this->documentation = Piwik::translate('VisitsSummary_VisitsSummaryReportDocumentation');
|
40 |
$this->processedMetrics = array(
|
41 |
new BounceRate(),
|
42 |
new ActionsPerVisit(),
|
82 |
$this->addSparklineColumns($view);
|
83 |
$view->config->addTranslations($this->getSparklineTranslations());
|
84 |
|
85 |
+
$view->config->filters[] = function (DataTable $table) use ($view) {
|
|
|
86 |
$firstRow = $table->getFirstRow();
|
87 |
|
88 |
if (($firstRow->getColumn('nb_pageviews')
|
102 |
$view->config->replaceSparklineMetric(array('nb_users'), '');
|
103 |
}
|
104 |
};
|
105 |
+
|
106 |
+
// Remove metric tooltips
|
107 |
+
$view->config->metrics_documentation['nb_actions'] = '';
|
108 |
+
$view->config->metrics_documentation['nb_visits'] = '';
|
109 |
+
$view->config->metrics_documentation['nb_users'] = '';
|
110 |
+
$view->config->metrics_documentation['nb_uniq_visitors'] = '';
|
111 |
+
$view->config->metrics_documentation['avg_time_generation'] = '';
|
112 |
+
$view->config->metrics_documentation['avg_time_on_site'] = '';
|
113 |
+
$view->config->metrics_documentation['max_actions'] = '';
|
114 |
+
$view->config->metrics_documentation['nb_actions_per_visit'] = '';
|
115 |
+
$view->config->metrics_documentation['nb_downloads'] = '';
|
116 |
+
$view->config->metrics_documentation['nb_uniq_downloads'] = '';
|
117 |
+
$view->config->metrics_documentation['nb_outlinks'] = '';
|
118 |
+
$view->config->metrics_documentation['nb_uniq_outlinks'] = '';
|
119 |
+
$view->config->metrics_documentation['nb_keywords'] = '';
|
120 |
+
$view->config->metrics_documentation['nb_searches'] = '';
|
121 |
+
$view->config->metrics_documentation['nb_pageviews'] = '';
|
122 |
+
$view->config->metrics_documentation['nb_uniq_pageviews'] = '';
|
123 |
+
$view->config->metrics_documentation['bounce_rate'] = '';
|
124 |
}
|
125 |
}
|
126 |
|
app/plugins/WebsiteMeasurable/MeasurableSettings.php
CHANGED
@@ -235,7 +235,9 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
|
|
235 |
. '<br /><br />'
|
236 |
. Piwik::translate('SitesManager_GlobalListExcludedUserAgents_Desc')
|
237 |
. '<br />'
|
238 |
-
. Piwik::translate('SitesManager_GlobalExcludedUserAgentHelp2')
|
|
|
|
|
239 |
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
|
240 |
$field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
|
241 |
$field->transform = function ($value) use ($self) {
|
235 |
. '<br /><br />'
|
236 |
. Piwik::translate('SitesManager_GlobalListExcludedUserAgents_Desc')
|
237 |
. '<br />'
|
238 |
+
. Piwik::translate('SitesManager_GlobalExcludedUserAgentHelp2') . " "
|
239 |
+
. Piwik::translate('SitesManager_GlobalExcludedUserAgentHelp3', "/bot|spider|crawl|scanner/i")
|
240 |
+
;
|
241 |
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
|
242 |
$field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
|
243 |
$field->transform = function ($value) use ($self) {
|
app/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit1423767b62a00489251ad7f3403e836a::getLoader();
|
app/vendor/bin/lessc
DELETED
@@ -1,191 +0,0 @@
|
|
1 |
-
#!/usr/bin/env php
|
2 |
-
<?php
|
3 |
-
|
4 |
-
require_once dirname(__FILE__) . '/../lib/Less/Autoloader.php';
|
5 |
-
Less_Autoloader::register();
|
6 |
-
|
7 |
-
// Create our environment
|
8 |
-
$env = array('compress' => false, 'relativeUrls' => false);
|
9 |
-
$silent = false;
|
10 |
-
$watch = false;
|
11 |
-
$rootpath = '';
|
12 |
-
|
13 |
-
// Check for arguments
|
14 |
-
array_shift($argv);
|
15 |
-
if (!count($argv)) {
|
16 |
-
$argv[] = '-h';
|
17 |
-
}
|
18 |
-
|
19 |
-
// parse arguments
|
20 |
-
foreach ($argv as $key => $arg) {
|
21 |
-
if (preg_match('/^--?([a-z][0-9a-z-]*)(?:=([^\s]+))?$/i', $arg, $matches)) {
|
22 |
-
$option = $matches[1];
|
23 |
-
$value = isset($matches[2]) ? $matches[2] : false;
|
24 |
-
unset($argv[$key]);
|
25 |
-
|
26 |
-
switch ($option) {
|
27 |
-
case 'h':
|
28 |
-
case 'help':
|
29 |
-
echo <<<EOD
|
30 |
-
Usage: lessc [options] sources [destination]
|
31 |
-
|
32 |
-
-h, --help Print help (this message) and exit.
|
33 |
-
-s, --silent Suppress output of error messages.
|
34 |
-
-v, --version Print version number and exit.
|
35 |
-
-x, --compress Compress output by removing some whitespaces.
|
36 |
-
--include-path=PATHS Set include paths. Separated by `:'. Use `;' on Windows.
|
37 |
-
--strict-imports Force evaluation of imports.
|
38 |
-
-sm=on|off Turn on or off strict math, where in strict mode, math
|
39 |
-
--strict-math=on|off requires brackets. This option may default to on and then
|
40 |
-
be removed in the future.
|
41 |
-
-su=on|off Allow mixed units, e.g. 1px+1em or 1px*1px which have units
|
42 |
-
--strict-units=on|off that cannot be represented.
|
43 |
-
-ru, --relative-urls re-write relative urls to the base less file.
|
44 |
-
-rp, --rootpath=URL Set rootpath for url rewriting in relative imports and urls.
|
45 |
-
Works with or without the relative-urls option.
|
46 |
-
-w, --watch Watch input files for changes.
|
47 |
-
|
48 |
-
|
49 |
-
EOD;
|
50 |
-
exit;
|
51 |
-
case 's':
|
52 |
-
case 'silent':
|
53 |
-
$silent = true;
|
54 |
-
break;
|
55 |
-
|
56 |
-
case 'w':
|
57 |
-
case 'watch':
|
58 |
-
$watch = true;
|
59 |
-
break;
|
60 |
-
|
61 |
-
case 'v':
|
62 |
-
case 'version':
|
63 |
-
echo "lessc " . Less_Version::version . " (less.php)\n\n";
|
64 |
-
exit;
|
65 |
-
|
66 |
-
case 'rp':
|
67 |
-
case 'rootpath':
|
68 |
-
$rootpath = $value;
|
69 |
-
break;
|
70 |
-
|
71 |
-
|
72 |
-
//parser options
|
73 |
-
case 'compress':
|
74 |
-
$env['compress'] = true;
|
75 |
-
break;
|
76 |
-
|
77 |
-
case 'ru':
|
78 |
-
case 'relative-urls':
|
79 |
-
$env['relativeUrls'] = true;
|
80 |
-
break;
|
81 |
-
|
82 |
-
case 'su':
|
83 |
-
case 'strict-units':
|
84 |
-
$env['strictUnits'] = ($value === 'on');
|
85 |
-
break;
|
86 |
-
|
87 |
-
case 'sm':
|
88 |
-
case 'strict-math':
|
89 |
-
$env['strictMath'] = ($value === 'on');
|
90 |
-
break;
|
91 |
-
|
92 |
-
case 'x':
|
93 |
-
case 'include-path':
|
94 |
-
$env['import_dirs'] = preg_split('#;|\:#', $value);
|
95 |
-
break;
|
96 |
-
|
97 |
-
}
|
98 |
-
}
|
99 |
-
}
|
100 |
-
|
101 |
-
if (count($argv) > 1) {
|
102 |
-
$output = array_pop($argv);
|
103 |
-
$inputs = $argv;
|
104 |
-
}
|
105 |
-
else {
|
106 |
-
$inputs = $argv;
|
107 |
-
$output = false;
|
108 |
-
}
|
109 |
-
|
110 |
-
if (!count($inputs)) {
|
111 |
-
echo("lessc: no input files\n");
|
112 |
-
exit;
|
113 |
-
}
|
114 |
-
|
115 |
-
if ($watch) {
|
116 |
-
if (!$output) {
|
117 |
-
echo("lessc: you must specify the output file if --watch is given\n");
|
118 |
-
exit;
|
119 |
-
}
|
120 |
-
|
121 |
-
$lastAction = 0;
|
122 |
-
|
123 |
-
echo("lessc: watching input files\n");
|
124 |
-
|
125 |
-
while (1) {
|
126 |
-
clearstatcache();
|
127 |
-
|
128 |
-
$updated = false;
|
129 |
-
foreach ($inputs as $input) {
|
130 |
-
if ($input == '-') {
|
131 |
-
if (count($inputs) == 1) {
|
132 |
-
echo("lessc: during watching files is not possible to watch stdin\n");
|
133 |
-
exit;
|
134 |
-
}
|
135 |
-
else {
|
136 |
-
continue;
|
137 |
-
}
|
138 |
-
}
|
139 |
-
|
140 |
-
if (filemtime($input) > $lastAction) {
|
141 |
-
$updated = true;
|
142 |
-
break;
|
143 |
-
}
|
144 |
-
}
|
145 |
-
|
146 |
-
if ($updated) {
|
147 |
-
$lastAction = time();
|
148 |
-
$parser = new Less_Parser($env);
|
149 |
-
foreach ($inputs as $input) {
|
150 |
-
try {
|
151 |
-
$parser->parseFile($input, $rootpath);
|
152 |
-
}
|
153 |
-
catch (Exception $e) {
|
154 |
-
echo("lessc: " . $e->getMessage() . " \n");
|
155 |
-
continue; // Invalid processing
|
156 |
-
}
|
157 |
-
}
|
158 |
-
|
159 |
-
file_put_contents($output, $parser->getCss());
|
160 |
-
echo("lessc: output file recompiled\n");
|
161 |
-
}
|
162 |
-
|
163 |
-
sleep(1);
|
164 |
-
}
|
165 |
-
}
|
166 |
-
else {
|
167 |
-
$parser = new Less_Parser($env);
|
168 |
-
foreach ($inputs as $input) {
|
169 |
-
if ($input == '-') {
|
170 |
-
$content = file_get_contents('php://stdin');
|
171 |
-
$parser->parse($content);
|
172 |
-
}
|
173 |
-
else {
|
174 |
-
try {
|
175 |
-
$parser->parseFile($input);
|
176 |
-
}
|
177 |
-
catch (Exception $e) {
|
178 |
-
if (!$silent) {
|
179 |
-
echo("lessc: " . ((string)$e) . " \n");
|
180 |
-
}
|
181 |
-
}
|
182 |
-
}
|
183 |
-
}
|
184 |
-
|
185 |
-
if ($output) {
|
186 |
-
file_put_contents($output, $parser->getCss());
|
187 |
-
}
|
188 |
-
else {
|
189 |
-
echo $parser->getCss();
|
190 |
-
}
|
191 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/vendor/composer/InstalledVersions.php
CHANGED
@@ -24,12 +24,12 @@ class InstalledVersions
|
|
24 |
private static $installed = array (
|
25 |
'root' =>
|
26 |
array (
|
27 |
-
'pretty_version' => '4.1.
|
28 |
-
'version' => '4.1.
|
29 |
'aliases' =>
|
30 |
array (
|
31 |
),
|
32 |
-
'reference' => '
|
33 |
'name' => 'matomo/matomo',
|
34 |
),
|
35 |
'versions' =>
|
@@ -99,12 +99,12 @@ private static $installed = array (
|
|
99 |
),
|
100 |
'matomo/device-detector' =>
|
101 |
array (
|
102 |
-
'pretty_version' => '4.0
|
103 |
-
'version' => '4.0.
|
104 |
'aliases' =>
|
105 |
array (
|
106 |
),
|
107 |
-
'reference' => '
|
108 |
),
|
109 |
'matomo/ini' =>
|
110 |
array (
|
@@ -117,12 +117,12 @@ private static $installed = array (
|
|
117 |
),
|
118 |
'matomo/matomo' =>
|
119 |
array (
|
120 |
-
'pretty_version' => '4.1.
|
121 |
-
'version' => '4.1.
|
122 |
'aliases' =>
|
123 |
array (
|
124 |
),
|
125 |
-
'reference' => '
|
126 |
),
|
127 |
'matomo/matomo-php-tracker' =>
|
128 |
array (
|
@@ -288,7 +288,7 @@ private static $installed = array (
|
|
288 |
array (
|
289 |
'replaced' =>
|
290 |
array (
|
291 |
-
0 => '4.0
|
292 |
),
|
293 |
),
|
294 |
'piwik/referrer-spam-blacklist' =>
|
24 |
private static $installed = array (
|
25 |
'root' =>
|
26 |
array (
|
27 |
+
'pretty_version' => '4.1.1',
|
28 |
+
'version' => '4.1.1.0',
|
29 |
'aliases' =>
|
30 |
array (
|
31 |
),
|
32 |
+
'reference' => '0a0d7ea3b85264e6b5aff757a6283949217a2ddd',
|
33 |
'name' => 'matomo/matomo',
|
34 |
),
|
35 |
'versions' =>
|
99 |
),
|
100 |
'matomo/device-detector' =>
|
101 |
array (
|
102 |
+
'pretty_version' => '4.1.0',
|
103 |
+
'version' => '4.1.0.0',
|
104 |
'aliases' =>
|
105 |
array (
|
106 |
),
|
107 |
+
'reference' => '6b3facc35e7a465bc4223fddfa5fa88c5b327554',
|
108 |
),
|
109 |
'matomo/ini' =>
|
110 |
array (
|
117 |
),
|
118 |
'matomo/matomo' =>
|
119 |
array (
|
120 |
+
'pretty_version' => '4.1.1',
|
121 |
+
'version' => '4.1.1.0',
|
122 |
'aliases' =>
|
123 |
array (
|
124 |
),
|
125 |
+
'reference' => '0a0d7ea3b85264e6b5aff757a6283949217a2ddd',
|
126 |
),
|
127 |
'matomo/matomo-php-tracker' =>
|
128 |
array (
|
288 |
array (
|
289 |
'replaced' =>
|
290 |
array (
|
291 |
+
0 => '4.1.0',
|
292 |
),
|
293 |
),
|
294 |
'piwik/referrer-spam-blacklist' =>
|
app/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -22,9 +22,9 @@ class ComposerAutoloaderInitbca50353402dfe6dd0703749723d31b9
|
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
-
spl_autoload_register(array('
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
-
spl_autoload_unregister(array('
|
28 |
|
29 |
$includePaths = require __DIR__ . '/include_paths.php';
|
30 |
$includePaths[] = get_include_path();
|
@@ -34,7 +34,7 @@ class ComposerAutoloaderInitbca50353402dfe6dd0703749723d31b9
|
|
34 |
if ($useStaticLoader) {
|
35 |
require __DIR__ . '/autoload_static.php';
|
36 |
|
37 |
-
call_user_func(\Composer\Autoload\
|
38 |
} else {
|
39 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
40 |
foreach ($map as $namespace => $path) {
|
@@ -55,19 +55,19 @@ class ComposerAutoloaderInitbca50353402dfe6dd0703749723d31b9
|
|
55 |
$loader->register(false);
|
56 |
|
57 |
if ($useStaticLoader) {
|
58 |
-
$includeFiles = Composer\Autoload\
|
59 |
} else {
|
60 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
61 |
}
|
62 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
63 |
-
|
64 |
}
|
65 |
|
66 |
return $loader;
|
67 |
}
|
68 |
}
|
69 |
|
70 |
-
function
|
71 |
{
|
72 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
73 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit1423767b62a00489251ad7f3403e836a
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
+
spl_autoload_register(array('ComposerAutoloaderInit1423767b62a00489251ad7f3403e836a', 'loadClassLoader'), true, false);
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit1423767b62a00489251ad7f3403e836a', 'loadClassLoader'));
|
28 |
|
29 |
$includePaths = require __DIR__ . '/include_paths.php';
|
30 |
$includePaths[] = get_include_path();
|
34 |
if ($useStaticLoader) {
|
35 |
require __DIR__ . '/autoload_static.php';
|
36 |
|
37 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit1423767b62a00489251ad7f3403e836a::getInitializer($loader));
|
38 |
} else {
|
39 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
40 |
foreach ($map as $namespace => $path) {
|
55 |
$loader->register(false);
|
56 |
|
57 |
if ($useStaticLoader) {
|
58 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit1423767b62a00489251ad7f3403e836a::$files;
|
59 |
} else {
|
60 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
61 |
}
|
62 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
63 |
+
composerRequire1423767b62a00489251ad7f3403e836a($fileIdentifier, $file);
|
64 |
}
|
65 |
|
66 |
return $loader;
|
67 |
}
|
68 |
}
|
69 |
|
70 |
+
function composerRequire1423767b62a00489251ad7f3403e836a($fileIdentifier, $file)
|
71 |
{
|
72 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
73 |
require $file;
|
app/vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
@@ -3252,11 +3252,11 @@ class ComposerStaticInitbca50353402dfe6dd0703749723d31b9
|
|
3252 |
public static function getInitializer(ClassLoader $loader)
|
3253 |
{
|
3254 |
return \Closure::bind(function () use ($loader) {
|
3255 |
-
$loader->prefixLengthsPsr4 =
|
3256 |
-
$loader->prefixDirsPsr4 =
|
3257 |
-
$loader->prefixesPsr0 =
|
3258 |
-
$loader->fallbackDirsPsr0 =
|
3259 |
-
$loader->classMap =
|
3260 |
|
3261 |
}, null, ClassLoader::class);
|
3262 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit1423767b62a00489251ad7f3403e836a
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
3252 |
public static function getInitializer(ClassLoader $loader)
|
3253 |
{
|
3254 |
return \Closure::bind(function () use ($loader) {
|
3255 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit1423767b62a00489251ad7f3403e836a::$prefixLengthsPsr4;
|
3256 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit1423767b62a00489251ad7f3403e836a::$prefixDirsPsr4;
|
3257 |
+
$loader->prefixesPsr0 = ComposerStaticInit1423767b62a00489251ad7f3403e836a::$prefixesPsr0;
|
3258 |
+
$loader->fallbackDirsPsr0 = ComposerStaticInit1423767b62a00489251ad7f3403e836a::$fallbackDirsPsr0;
|
3259 |
+
$loader->classMap = ComposerStaticInit1423767b62a00489251ad7f3403e836a::$classMap;
|
3260 |
|
3261 |
}, null, ClassLoader::class);
|
3262 |
}
|
app/vendor/composer/installed.json
CHANGED
@@ -475,17 +475,17 @@
|
|
475 |
},
|
476 |
{
|
477 |
"name": "matomo/device-detector",
|
478 |
-
"version": "4.0
|
479 |
-
"version_normalized": "4.0.
|
480 |
"source": {
|
481 |
"type": "git",
|
482 |
"url": "https://github.com/matomo-org/device-detector.git",
|
483 |
-
"reference": "
|
484 |
},
|
485 |
"dist": {
|
486 |
"type": "zip",
|
487 |
-
"url": "https://api.github.com/repos/matomo-org/device-detector/zipball/
|
488 |
-
"reference": "
|
489 |
"shasum": ""
|
490 |
},
|
491 |
"require": {
|
@@ -496,7 +496,7 @@
|
|
496 |
"piwik/device-detector": "self.version"
|
497 |
},
|
498 |
"require-dev": {
|
499 |
-
"matthiasmullie/scrapbook": "
|
500 |
"mayflower/mo4-coding-standard": "dev-master#275cb9d",
|
501 |
"phpstan/phpstan": "^0.12.52",
|
502 |
"phpunit/phpunit": "^8.5.8",
|
@@ -508,7 +508,7 @@
|
|
508 |
"doctrine/cache": "Can directly be used for caching purpose",
|
509 |
"ext-yaml": "Necessary for using the Pecl YAML parser"
|
510 |
},
|
511 |
-
"time": "
|
512 |
"type": "library",
|
513 |
"installation-source": "dist",
|
514 |
"autoload": {
|
475 |
},
|
476 |
{
|
477 |
"name": "matomo/device-detector",
|
478 |
+
"version": "4.1.0",
|
479 |
+
"version_normalized": "4.1.0.0",
|
480 |
"source": {
|
481 |
"type": "git",
|
482 |
"url": "https://github.com/matomo-org/device-detector.git",
|
483 |
+
"reference": "6b3facc35e7a465bc4223fddfa5fa88c5b327554"
|
484 |
},
|
485 |
"dist": {
|
486 |
"type": "zip",
|
487 |
+
"url": "https://api.github.com/repos/matomo-org/device-detector/zipball/6b3facc35e7a465bc4223fddfa5fa88c5b327554",
|
488 |
+
"reference": "6b3facc35e7a465bc4223fddfa5fa88c5b327554",
|
489 |
"shasum": ""
|
490 |
},
|
491 |
"require": {
|
496 |
"piwik/device-detector": "self.version"
|
497 |
},
|
498 |
"require-dev": {
|
499 |
+
"matthiasmullie/scrapbook": "^1.4.7",
|
500 |
"mayflower/mo4-coding-standard": "dev-master#275cb9d",
|
501 |
"phpstan/phpstan": "^0.12.52",
|
502 |
"phpunit/phpunit": "^8.5.8",
|
508 |
"doctrine/cache": "Can directly be used for caching purpose",
|
509 |
"ext-yaml": "Necessary for using the Pecl YAML parser"
|
510 |
},
|
511 |
+
"time": "2021-01-08T14:14:55+00:00",
|
512 |
"type": "library",
|
513 |
"installation-source": "dist",
|
514 |
"autoload": {
|
app/vendor/composer/installed.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<?php return array (
|
2 |
'root' =>
|
3 |
array (
|
4 |
-
'pretty_version' => '4.1.
|
5 |
-
'version' => '4.1.
|
6 |
'aliases' =>
|
7 |
array (
|
8 |
),
|
9 |
-
'reference' => '
|
10 |
'name' => 'matomo/matomo',
|
11 |
),
|
12 |
'versions' =>
|
@@ -76,12 +76,12 @@
|
|
76 |
),
|
77 |
'matomo/device-detector' =>
|
78 |
array (
|
79 |
-
'pretty_version' => '4.0
|
80 |
-
'version' => '4.0.
|
81 |
'aliases' =>
|
82 |
array (
|
83 |
),
|
84 |
-
'reference' => '
|
85 |
),
|
86 |
'matomo/ini' =>
|
87 |
array (
|
@@ -94,12 +94,12 @@
|
|
94 |
),
|
95 |
'matomo/matomo' =>
|
96 |
array (
|
97 |
-
'pretty_version' => '4.1.
|
98 |
-
'version' => '4.1.
|
99 |
'aliases' =>
|
100 |
array (
|
101 |
),
|
102 |
-
'reference' => '
|
103 |
),
|
104 |
'matomo/matomo-php-tracker' =>
|
105 |
array (
|
@@ -265,7 +265,7 @@
|
|
265 |
array (
|
266 |
'replaced' =>
|
267 |
array (
|
268 |
-
0 => '4.0
|
269 |
),
|
270 |
),
|
271 |
'piwik/referrer-spam-blacklist' =>
|
1 |
<?php return array (
|
2 |
'root' =>
|
3 |
array (
|
4 |
+
'pretty_version' => '4.1.1',
|
5 |
+
'version' => '4.1.1.0',
|
6 |
'aliases' =>
|
7 |
array (
|
8 |
),
|
9 |
+
'reference' => '0a0d7ea3b85264e6b5aff757a6283949217a2ddd',
|
10 |
'name' => 'matomo/matomo',
|
11 |
),
|
12 |
'versions' =>
|
76 |
),
|
77 |
'matomo/device-detector' =>
|
78 |
array (
|
79 |
+
'pretty_version' => '4.1.0',
|
80 |
+
'version' => '4.1.0.0',
|
81 |
'aliases' =>
|
82 |
array (
|
83 |
),
|
84 |
+
'reference' => '6b3facc35e7a465bc4223fddfa5fa88c5b327554',
|
85 |
),
|
86 |
'matomo/ini' =>
|
87 |
array (
|
94 |
),
|
95 |
'matomo/matomo' =>
|
96 |
array (
|
97 |
+
'pretty_version' => '4.1.1',
|
98 |
+
'version' => '4.1.1.0',
|
99 |
'aliases' =>
|
100 |
array (
|
101 |
),
|
102 |
+
'reference' => '0a0d7ea3b85264e6b5aff757a6283949217a2ddd',
|
103 |
),
|
104 |
'matomo/matomo-php-tracker' =>
|
105 |
array (
|
265 |
array (
|
266 |
'replaced' =>
|
267 |
array (
|
268 |
+
0 => '4.1.0',
|
269 |
),
|
270 |
),
|
271 |
'piwik/referrer-spam-blacklist' =>
|
app/vendor/matomo/device-detector/DeviceDetector.php
CHANGED
@@ -62,7 +62,7 @@ class DeviceDetector
|
|
62 |
/**
|
63 |
* Current version number of DeviceDetector
|
64 |
*/
|
65 |
-
public const VERSION = '4.0
|
66 |
|
67 |
/**
|
68 |
* Constant used as value for unknown browser / os
|
@@ -839,7 +839,7 @@ class DeviceDetector
|
|
839 |
/**
|
840 |
* Assume all devices running iOS / Mac OS are from Apple
|
841 |
*/
|
842 |
-
if (empty($this->brand) && \in_array($osName, ['Apple TV', 'iOS', 'Mac'])) {
|
843 |
$this->brand = 'Apple';
|
844 |
}
|
845 |
|
62 |
/**
|
63 |
* Current version number of DeviceDetector
|
64 |
*/
|
65 |
+
public const VERSION = '4.1.0';
|
66 |
|
67 |
/**
|
68 |
* Constant used as value for unknown browser / os
|
839 |
/**
|
840 |
* Assume all devices running iOS / Mac OS are from Apple
|
841 |
*/
|
842 |
+
if (empty($this->brand) && \in_array($osName, ['Apple TV', 'watchOS', 'iOS', 'Mac'])) {
|
843 |
$this->brand = 'Apple';
|
844 |
}
|
845 |
|
app/vendor/matomo/device-detector/Parser/Client/Browser.php
CHANGED
@@ -92,6 +92,7 @@ class Browser extends AbstractClientParser
|
|
92 |
'CN' => 'CoolNovo',
|
93 |
'CO' => 'CometBird',
|
94 |
'CB' => 'COS Browser',
|
|
|
95 |
'CP' => 'ChromePlus',
|
96 |
'CR' => 'Chromium',
|
97 |
'CY' => 'Cyberfox',
|
@@ -196,6 +197,7 @@ class Browser extends AbstractClientParser
|
|
196 |
'MY' => 'Mypal',
|
197 |
'MR' => 'Monument Browser',
|
198 |
'MW' => 'MAUI WAP Browser',
|
|
|
199 |
'NR' => 'NFS Browser',
|
200 |
'NB' => 'Nokia Browser',
|
201 |
'NO' => 'Nokia OSS Browser',
|
@@ -210,6 +212,7 @@ class Browser extends AbstractClientParser
|
|
210 |
'OC' => 'Oculus Browser',
|
211 |
'O1' => 'Opera Mini iOS',
|
212 |
'OB' => 'Obigo',
|
|
|
213 |
'OD' => 'Odyssey Web Browser',
|
214 |
'OF' => 'Off By One',
|
215 |
'HH' => 'OhHai Browser',
|
@@ -239,6 +242,7 @@ class Browser extends AbstractClientParser
|
|
239 |
'PA' => 'Palmscape',
|
240 |
'PX' => 'Phoenix',
|
241 |
'PB' => 'Phoenix Browser',
|
|
|
242 |
'PO' => 'Polaris',
|
243 |
'PT' => 'Polarity',
|
244 |
'PI' => 'PrivacyWall',
|
@@ -255,11 +259,13 @@ class Browser extends AbstractClientParser
|
|
255 |
'RM' => 'RockMelt',
|
256 |
'SB' => 'Samsung Browser',
|
257 |
'SA' => 'Sailfish Browser',
|
|
|
258 |
'SC' => 'SEMC-Browser',
|
259 |
'SE' => 'Sogou Explorer',
|
260 |
'SF' => 'Safari',
|
261 |
'S5' => 'Safe Exam Browser',
|
262 |
'SW' => 'SalamWeb',
|
|
|
263 |
'SH' => 'Shiira',
|
264 |
'S1' => 'SimpleBrowser',
|
265 |
'SY' => 'Sizzy',
|
@@ -283,6 +289,7 @@ class Browser extends AbstractClientParser
|
|
283 |
'ST' => 'Streamy',
|
284 |
'SX' => 'Swiftfox',
|
285 |
'SZ' => 'Seznam Browser',
|
|
|
286 |
'TO' => 't-online.de Browser',
|
287 |
'TA' => 'Tao Browser',
|
288 |
'TF' => 'TenFourFox',
|
@@ -342,7 +349,8 @@ class Browser extends AbstractClientParser
|
|
342 |
'CL', 'SU', 'EU', 'UB', 'LO', 'VG', 'TV', 'A0', '1B',
|
343 |
'S4', 'EE', 'AE', 'VM', 'O0', 'TG', 'GB', 'SY', 'HH',
|
344 |
'YJ', 'LL', 'TU', 'XV', 'C2', 'QU', 'YN', 'JB', 'MR',
|
345 |
-
'S6', '7S', 'NM', 'PB', 'UR', 'NR', 'SG',
|
|
|
346 |
],
|
347 |
'Firefox' => [
|
348 |
'FF', 'FE', 'FM', 'SX', 'FB', 'PX', 'MB', 'EI', 'WF',
|
92 |
'CN' => 'CoolNovo',
|
93 |
'CO' => 'CometBird',
|
94 |
'CB' => 'COS Browser',
|
95 |
+
'C3' => 'Chim Lac',
|
96 |
'CP' => 'ChromePlus',
|
97 |
'CR' => 'Chromium',
|
98 |
'CY' => 'Cyberfox',
|
197 |
'MY' => 'Mypal',
|
198 |
'MR' => 'Monument Browser',
|
199 |
'MW' => 'MAUI WAP Browser',
|
200 |
+
'NW' => 'Navigateur Web',
|
201 |
'NR' => 'NFS Browser',
|
202 |
'NB' => 'Nokia Browser',
|
203 |
'NO' => 'Nokia OSS Browser',
|
212 |
'OC' => 'Oculus Browser',
|
213 |
'O1' => 'Opera Mini iOS',
|
214 |
'OB' => 'Obigo',
|
215 |
+
'O2' => 'Odin',
|
216 |
'OD' => 'Odyssey Web Browser',
|
217 |
'OF' => 'Off By One',
|
218 |
'HH' => 'OhHai Browser',
|
242 |
'PA' => 'Palmscape',
|
243 |
'PX' => 'Phoenix',
|
244 |
'PB' => 'Phoenix Browser',
|
245 |
+
'PF' => 'PlayFree Browser',
|
246 |
'PO' => 'Polaris',
|
247 |
'PT' => 'Polarity',
|
248 |
'PI' => 'PrivacyWall',
|
259 |
'RM' => 'RockMelt',
|
260 |
'SB' => 'Samsung Browser',
|
261 |
'SA' => 'Sailfish Browser',
|
262 |
+
'S8' => 'Seewo Browser',
|
263 |
'SC' => 'SEMC-Browser',
|
264 |
'SE' => 'Sogou Explorer',
|
265 |
'SF' => 'Safari',
|
266 |
'S5' => 'Safe Exam Browser',
|
267 |
'SW' => 'SalamWeb',
|
268 |
+
'SV' => 'SFive',
|
269 |
'SH' => 'Shiira',
|
270 |
'S1' => 'SimpleBrowser',
|
271 |
'SY' => 'Sizzy',
|
289 |
'ST' => 'Streamy',
|
290 |
'SX' => 'Swiftfox',
|
291 |
'SZ' => 'Seznam Browser',
|
292 |
+
'TR' => 'T-Browser',
|
293 |
'TO' => 't-online.de Browser',
|
294 |
'TA' => 'Tao Browser',
|
295 |
'TF' => 'TenFourFox',
|
349 |
'CL', 'SU', 'EU', 'UB', 'LO', 'VG', 'TV', 'A0', '1B',
|
350 |
'S4', 'EE', 'AE', 'VM', 'O0', 'TG', 'GB', 'SY', 'HH',
|
351 |
'YJ', 'LL', 'TU', 'XV', 'C2', 'QU', 'YN', 'JB', 'MR',
|
352 |
+
'S6', '7S', 'NM', 'PB', 'UR', 'NR', 'SG', 'S8', 'C3',
|
353 |
+
'SS', 'O2', 'SV', 'TR',
|
354 |
],
|
355 |
'Firefox' => [
|
356 |
'FF', 'FE', 'FM', 'SX', 'FB', 'PX', 'MB', 'EI', 'WF',
|
app/vendor/matomo/device-detector/Parser/Device/AbstractDeviceParser.php
CHANGED
@@ -79,159 +79,174 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
79 |
* @var array
|
80 |
*/
|
81 |
public static $deviceBrands = [
|
82 |
-
'
|
83 |
-
'88' => '8848',
|
84 |
'3Q' => '3Q',
|
85 |
'4G' => '4Good',
|
|
|
|
|
|
|
86 |
'41' => 'A1',
|
|
|
87 |
'AE' => 'Ace',
|
88 |
-
'AA' => 'AllCall',
|
89 |
-
'3A' => 'AllDocube',
|
90 |
'AC' => 'Acer',
|
91 |
-
'00' => 'Accent',
|
92 |
'A9' => 'Advan',
|
93 |
'AD' => 'Advance',
|
94 |
-
'60' => 'Andowl',
|
95 |
'A3' => 'AGM',
|
96 |
'AZ' => 'Ainol',
|
97 |
'AI' => 'Airness',
|
|
|
98 |
'0A' => 'AIS',
|
99 |
'AW' => 'Aiwa',
|
100 |
'AK' => 'Akai',
|
101 |
'1A' => 'Alba',
|
102 |
'AL' => 'Alcatel',
|
103 |
'20' => 'Alcor',
|
|
|
|
|
104 |
'4A' => 'Aligator',
|
|
|
|
|
105 |
'A2' => 'Allview',
|
106 |
'A7' => 'Allwinner',
|
107 |
'A1' => 'Altech UEC',
|
|
|
108 |
'A5' => 'altron',
|
109 |
-
'3L' => 'Alfawise',
|
110 |
-
'AN' => 'Arnova',
|
111 |
-
'7A' => 'Anry',
|
112 |
-
'5A' => 'ArmPhone',
|
113 |
-
'40' => 'Artel',
|
114 |
-
'2A' => 'Atom',
|
115 |
'KN' => 'Amazon',
|
116 |
'AG' => 'AMGOO',
|
117 |
'9A' => 'Amigoo',
|
118 |
'AO' => 'Amoi',
|
|
|
|
|
|
|
119 |
'3N' => 'Aoson',
|
120 |
'AP' => 'Apple',
|
121 |
'AR' => 'Archos',
|
122 |
-
'AS' => 'ARRIS',
|
123 |
'AB' => 'Arian Space',
|
124 |
-
'AT' => 'Airties',
|
125 |
-
'6A' => 'AT&T',
|
126 |
'A6' => 'Ark',
|
127 |
-
'
|
|
|
|
|
|
|
|
|
128 |
'8A' => 'Asano',
|
|
|
|
|
129 |
'A8' => 'Assistant',
|
130 |
-
'A0' => 'ANS',
|
131 |
'AU' => 'Asus',
|
132 |
-
'
|
|
|
|
|
133 |
'ZA' => 'Avenzo',
|
|
|
134 |
'AV' => 'Avvio',
|
135 |
-
'AX' => 'Audiovox',
|
136 |
'AY' => 'Axxion',
|
137 |
'AM' => 'Azumi Mobile',
|
|
|
|
|
138 |
'BB' => 'BBK',
|
139 |
'0B' => 'BB Mobile',
|
|
|
140 |
'BE' => 'Becker',
|
141 |
'B5' => 'Beeline',
|
142 |
'B0' => 'Beelink',
|
143 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
'1B' => 'Billion',
|
|
|
|
|
145 |
'BT' => 'Bitel',
|
146 |
-
'B8' => 'BIHEE',
|
147 |
'B7' => 'Bitmore',
|
148 |
-
'
|
149 |
-
'
|
|
|
|
|
150 |
'BP' => 'Blaupunkt',
|
|
|
151 |
'B3' => 'Bluboo',
|
152 |
-
'
|
153 |
-
'
|
|
|
154 |
'BM' => 'Bmobile',
|
155 |
-
'BN' => 'Barnes & Noble',
|
156 |
-
'BO' => 'BangOlufsen',
|
157 |
'B9' => 'Bobarry',
|
158 |
-
'BQ' => 'BenQ',
|
159 |
-
'BS' => 'BenQ-Siemens',
|
160 |
-
'BU' => 'Blu',
|
161 |
-
'BD' => 'Bluegood',
|
162 |
-
'B2' => 'Blackview',
|
163 |
'B4' => 'bogo',
|
164 |
'BW' => 'Boway',
|
165 |
-
'BZ' => 'Bezkam',
|
166 |
'BX' => 'bq',
|
|
|
167 |
'BV' => 'Bravis',
|
168 |
'BR' => 'Brondi',
|
169 |
'B1' => 'Bush',
|
170 |
-
'
|
171 |
-
'
|
172 |
'CP' => 'Captiva',
|
|
|
173 |
'CS' => 'Casio',
|
174 |
'R4' => 'Casper',
|
175 |
'CA' => 'Cat',
|
176 |
-
'
|
177 |
'CE' => 'Celkon',
|
178 |
-
'CC' => 'ConCorde',
|
179 |
'C2' => 'Changhong',
|
180 |
-
'2C' => 'Ghong',
|
181 |
'CH' => 'Cherry Mobile',
|
|
|
182 |
'1C' => 'Chuwi',
|
183 |
'L8' => 'Clarmin',
|
184 |
'CD' => 'Cloudfone',
|
185 |
'6C' => 'Cloudpad',
|
186 |
'C0' => 'Clout',
|
187 |
-
'CK' => 'Cricket',
|
188 |
-
'C1' => 'Crosscall',
|
189 |
-
'CL' => 'Compal',
|
190 |
'CN' => 'CnM',
|
191 |
-
'CM' => 'Crius Mea',
|
192 |
-
'C3' => 'China Mobile',
|
193 |
-
'CR' => 'CreNova',
|
194 |
-
'0C' => 'Crony',
|
195 |
-
'CT' => 'Capitel',
|
196 |
-
'CQ' => 'Compaq',
|
197 |
-
'3C' => 'Contixo',
|
198 |
-
'4C' => 'Conquest',
|
199 |
-
'CO' => 'Coolpad',
|
200 |
-
'C5' => 'Condor',
|
201 |
-
'CW' => 'Cowon',
|
202 |
-
'CU' => 'Cube',
|
203 |
'CY' => 'Coby Kyros',
|
204 |
'C6' => 'Comio',
|
|
|
|
|
205 |
'C7' => 'ComTrade Tesla',
|
206 |
'C8' => 'Concord',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
'CX' => 'Crescent',
|
208 |
-
'
|
|
|
|
|
|
|
|
|
|
|
209 |
'CV' => 'CVTE',
|
|
|
210 |
'D5' => 'Daewoo',
|
211 |
'DA' => 'Danew',
|
212 |
'DT' => 'Datang',
|
213 |
'D7' => 'Datawind',
|
214 |
'D1' => 'Datsun',
|
|
|
|
|
215 |
'DE' => 'Denver',
|
|
|
216 |
'DW' => 'DeWalt',
|
217 |
'DX' => 'DEXP',
|
218 |
-
'DS' => 'Desay',
|
219 |
-
'DB' => 'Dbtel',
|
220 |
-
'DC' => 'DoCoMo',
|
221 |
-
'D9' => 'Dolamee',
|
222 |
-
'D0' => 'Doopro',
|
223 |
'DG' => 'Dialog',
|
224 |
'DI' => 'Dicam',
|
225 |
'D4' => 'Digi',
|
226 |
'D3' => 'Digicel',
|
|
|
227 |
'DD' => 'Digiland',
|
228 |
'D2' => 'Digma',
|
|
|
229 |
'D6' => 'Divisat',
|
230 |
-
'DL' => 'Dell',
|
231 |
-
'DN' => 'DNS',
|
232 |
'DM' => 'DMM',
|
233 |
-
'
|
|
|
234 |
'DF' => 'Doffler',
|
|
|
|
|
|
|
235 |
'DV' => 'Doov',
|
236 |
'DP' => 'Dopod',
|
237 |
'DR' => 'Doro',
|
@@ -239,618 +254,672 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
239 |
'DU' => 'Dune HD',
|
240 |
'EB' => 'E-Boda',
|
241 |
'2E' => 'E-Ceros',
|
242 |
-
'
|
|
|
243 |
'EA' => 'EBEST',
|
244 |
-
'EC' => 'Ericsson',
|
245 |
-
'E7' => 'Ergo',
|
246 |
-
'ED' => 'Energizer',
|
247 |
'E4' => 'Echo Mobiles',
|
248 |
'ES' => 'ECS',
|
249 |
'E6' => 'EE',
|
250 |
-
'
|
251 |
'EM' => 'Eks Mobility',
|
252 |
-
'
|
253 |
-
'4E' => 'Eltex',
|
254 |
'L0' => 'Element',
|
255 |
'EG' => 'Elenberg',
|
256 |
-
'
|
257 |
-
'
|
|
|
258 |
'E1' => 'Energy Sistem',
|
259 |
'3E' => 'Enot',
|
|
|
|
|
|
|
260 |
'ER' => 'Ericy',
|
261 |
'EE' => 'Essential',
|
|
|
262 |
'6E' => 'eSTAR',
|
263 |
'EN' => 'Eton',
|
264 |
-
'E2' => 'Essentielb',
|
265 |
-
'1E' => 'Etuline',
|
266 |
'ET' => 'eTouch',
|
|
|
|
|
|
|
267 |
'EV' => 'Evertek',
|
268 |
'E3' => 'Evolio',
|
269 |
'EO' => 'Evolveo',
|
|
|
|
|
270 |
'EH' => 'EXO',
|
271 |
'EX' => 'Explay',
|
272 |
-
'E0' => 'EvroMedia',
|
273 |
'E5' => 'Extrem',
|
|
|
274 |
'EZ' => 'Ezze',
|
275 |
-
'E8' => 'E-tel',
|
276 |
-
'E9' => 'Evercoss',
|
277 |
-
'EU' => 'Eurostar',
|
278 |
-
'XE' => 'ExMobile',
|
279 |
'FA' => 'Fairphone',
|
280 |
'FM' => 'Famoco',
|
|
|
281 |
'FE' => 'Fengxiang',
|
|
|
282 |
'FI' => 'FiGO',
|
|
|
|
|
283 |
'F3' => 'FireFly Mobile',
|
284 |
'FL' => 'Fly',
|
285 |
-
'F1' => 'FinePower',
|
286 |
-
'FT' => 'Freetel',
|
287 |
-
'F7' => 'Fero',
|
288 |
-
'FR' => 'Forstar',
|
289 |
-
'FO' => 'Foxconn',
|
290 |
-
'F2' => 'FORME',
|
291 |
'FN' => 'FNB',
|
292 |
-
'FU' => 'Fujitsu',
|
293 |
'FD' => 'Fondi',
|
294 |
'F0' => 'Fonos',
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
'GT' => 'G-TiDE',
|
296 |
'GM' => 'Garmin-Asus',
|
297 |
'GA' => 'Gateway',
|
298 |
'GD' => 'Gemini',
|
299 |
'GN' => 'General Mobile',
|
300 |
-
'GE' => 'Geotel',
|
301 |
'G2' => 'GEOFOX',
|
|
|
302 |
'GH' => 'Ghia',
|
303 |
-
'
|
304 |
'GG' => 'Gigabyte',
|
305 |
'GS' => 'Gigaset',
|
306 |
'GZ' => 'Ginzzu',
|
|
|
307 |
'G4' => 'Globex',
|
308 |
'GC' => 'GOCLEVER',
|
309 |
'GL' => 'Goly',
|
310 |
-
'GO' => 'Google',
|
311 |
'G5' => 'Gome',
|
312 |
'G1' => 'GoMobile',
|
|
|
|
|
313 |
'GR' => 'Gradiente',
|
314 |
'GP' => 'Grape',
|
315 |
'G6' => 'Gree',
|
316 |
-
'G0' => 'Goophone',
|
317 |
'GU' => 'Grundig',
|
318 |
'HF' => 'Hafury',
|
319 |
'HA' => 'Haier',
|
320 |
-
'HS' => 'Hasee',
|
321 |
-
'HK' => 'Hardkernel',
|
322 |
'HE' => 'HannSpree',
|
323 |
-
'
|
|
|
|
|
|
|
324 |
'HL' => 'Hi-Level',
|
325 |
'H2' => 'Highscreen',
|
326 |
'1H' => 'Hipstreet',
|
|
|
|
|
327 |
'H1' => 'Hoffmann',
|
328 |
-
'HM' => 'Homtom',
|
329 |
'H0' => 'Hometech',
|
|
|
|
|
330 |
'HO' => 'Hosin',
|
331 |
-
'
|
332 |
'HV' => 'Hotwav',
|
333 |
-
'
|
334 |
'HP' => 'HP',
|
335 |
'HT' => 'HTC',
|
336 |
'HD' => 'Huadoo',
|
337 |
'HU' => 'Huawei',
|
338 |
'HX' => 'Humax',
|
|
|
339 |
'HY' => 'Hyrican',
|
340 |
'HN' => 'Hyundai',
|
341 |
-
'IG' => 'iGet',
|
342 |
-
'IA' => 'Ikea',
|
343 |
-
'IB' => 'iBall',
|
344 |
'3I' => 'i-Cherry',
|
345 |
'IJ' => 'i-Joy',
|
346 |
-
'
|
|
|
|
|
347 |
'IY' => 'iBerry',
|
348 |
'7I' => 'iBrit',
|
|
|
|
|
|
|
349 |
'IH' => 'iHunt',
|
|
|
350 |
'IK' => 'iKoMo',
|
351 |
-
'
|
352 |
-
'0J' => 'iVooMi',
|
353 |
-
'I8' => 'iVA',
|
354 |
-
'1I' => 'iMars',
|
355 |
-
'IM' => 'i-mate',
|
356 |
'2I' => 'iLife',
|
357 |
-
'
|
358 |
-
'I2' => 'IconBIT',
|
359 |
'IL' => 'IMO Mobile',
|
360 |
-
'
|
|
|
361 |
'IW' => 'iNew',
|
362 |
-
'IP' => 'iPro',
|
363 |
'IF' => 'Infinix',
|
364 |
'I0' => 'InFocus',
|
|
|
365 |
'I5' => 'InnJoo',
|
366 |
'IN' => 'Innostream',
|
367 |
-
'IS' => 'Insignia',
|
368 |
'I4' => 'Inoi',
|
369 |
-
'IR' => 'iRola',
|
370 |
-
'IU' => 'iRulu',
|
371 |
-
'I6' => 'Irbis',
|
372 |
-
'5I' => 'Iris',
|
373 |
-
'II' => 'Inkti',
|
374 |
-
'IX' => 'Intex',
|
375 |
-
'4I' => 'Invin',
|
376 |
-
'IO' => 'i-mobile',
|
377 |
'IQ' => 'INQ',
|
378 |
-
'
|
379 |
'IT' => 'Intek',
|
|
|
380 |
'IV' => 'Inverto',
|
381 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
'IZ' => 'iTel',
|
383 |
'0I' => 'iTruck',
|
|
|
|
|
|
|
384 |
'I9' => 'iZotron',
|
385 |
'JA' => 'JAY-Tech',
|
|
|
386 |
'JI' => 'Jiayu',
|
387 |
'JG' => 'Jinga',
|
|
|
388 |
'JO' => 'Jolla',
|
389 |
'J5' => 'Just5',
|
390 |
-
'
|
391 |
-
'
|
392 |
-
'KL' => 'Kalley',
|
393 |
-
'0K' => 'Klipad',
|
394 |
'K4' => 'Kaan',
|
395 |
'K7' => 'Kaiomy',
|
|
|
396 |
'K6' => 'Kanji',
|
397 |
'KA' => 'Karbonn',
|
398 |
'K5' => 'KATV1',
|
|
|
399 |
'KD' => 'KDDI',
|
|
|
|
|
|
|
400 |
'K1' => 'Kiano',
|
401 |
-
'KV' => 'Kivi',
|
402 |
'KI' => 'Kingsun',
|
|
|
|
|
403 |
'KC' => 'Kocaso',
|
|
|
404 |
'KG' => 'Kogan',
|
405 |
-
'KO' => 'Konka',
|
406 |
'KM' => 'Komu',
|
407 |
-
'
|
|
|
|
|
|
|
408 |
'K9' => 'Kooper',
|
409 |
-
'KT' => 'K-Touch',
|
410 |
-
'KH' => 'KT-Tech',
|
411 |
-
'KK' => 'Kodak',
|
412 |
'KP' => 'KOPO',
|
413 |
-
'KW' => 'Konrow',
|
414 |
'KR' => 'Koridy',
|
415 |
'K2' => 'KRONO',
|
416 |
-
'
|
417 |
-
'
|
418 |
'K8' => 'Kuliao',
|
|
|
419 |
'KU' => 'Kumai',
|
420 |
'KY' => 'Kyocera',
|
421 |
-
'KZ' => 'Kazam',
|
422 |
'1K' => 'Kzen',
|
423 |
-
'KE' => 'Krüger&Matz',
|
424 |
-
'KX' => 'Kenxinda',
|
425 |
'LQ' => 'LAIQ',
|
426 |
-
'L2' => 'Landvo',
|
427 |
'L6' => 'Land Rover',
|
428 |
-
'
|
429 |
'LA' => 'Lanix',
|
430 |
'LK' => 'Lark',
|
|
|
431 |
'LC' => 'LCT',
|
432 |
'L5' => 'Leagoo',
|
433 |
'LD' => 'Ledstar',
|
434 |
'L1' => 'LeEco',
|
|
|
435 |
'L4' => 'Lemhoov',
|
436 |
-
'LE' => 'Lenovo',
|
437 |
'LN' => 'Lenco',
|
|
|
438 |
'LT' => 'Leotec',
|
|
|
439 |
'L7' => 'Lephone',
|
440 |
'LZ' => 'Lesia',
|
441 |
-
'
|
|
|
442 |
'LG' => 'LG',
|
443 |
'LI' => 'Lingwin',
|
|
|
444 |
'LO' => 'Loewe',
|
445 |
-
'LM' => 'Logicom',
|
446 |
'1L' => 'Logic',
|
447 |
-
'
|
448 |
-
'LX' => 'Lexibook',
|
449 |
-
'LY' => 'LYF',
|
450 |
-
'LU' => 'Lumus',
|
451 |
'0L' => 'Lumigon',
|
|
|
452 |
'L9' => 'Luna',
|
|
|
|
|
|
|
453 |
'MN' => 'M4tel',
|
454 |
'XM' => 'Macoox',
|
455 |
'MJ' => 'Majestic',
|
456 |
-
'MA' => 'Manta Multimedia',
|
457 |
-
'6X' => 'Maxtron',
|
458 |
-
'50' => 'Matrix',
|
459 |
'5M' => 'Mann',
|
|
|
460 |
'2M' => 'Masstel',
|
461 |
-
'
|
462 |
'7M' => 'Maxcom',
|
|
|
463 |
'0D' => 'MAXVI',
|
|
|
464 |
'M0' => 'Maze',
|
465 |
-
'
|
466 |
-
'9M' => 'Mobo',
|
467 |
-
'0M' => 'Mecool',
|
468 |
'M3' => 'Mecer',
|
|
|
|
|
|
|
469 |
'MD' => 'Medion',
|
470 |
'M2' => 'MEEG',
|
471 |
-
'
|
472 |
'3M' => 'Meitu',
|
473 |
-
'
|
474 |
-
'09' => 'meanIT',
|
475 |
'0E' => 'Melrose',
|
|
|
|
|
476 |
'MX' => 'MEU',
|
477 |
'MI' => 'MicroMax',
|
478 |
-
'
|
479 |
'1X' => 'Minix',
|
|
|
|
|
|
|
|
|
|
|
480 |
'M5' => 'MIXC',
|
481 |
'1Z' => 'MiXzo',
|
482 |
-
'
|
|
|
483 |
'4M' => 'Mobicel',
|
484 |
'M6' => 'Mobiistar',
|
485 |
-
'
|
486 |
-
'
|
487 |
-
'
|
488 |
-
'
|
489 |
-
'MM' => 'Mpman',
|
490 |
-
'LS' => 'MLS',
|
491 |
'M4' => 'Modecom',
|
492 |
'MF' => 'Mofut',
|
493 |
'MR' => 'Motorola',
|
494 |
'MV' => 'Movic',
|
495 |
-
'
|
496 |
-
'M9' => 'MTC',
|
497 |
-
'MP' => 'MegaFon',
|
498 |
'MZ' => 'MSI',
|
499 |
-
'
|
500 |
-
'MT' => 'Mitsubishi',
|
501 |
-
'ML' => 'MLLED',
|
502 |
-
'MQ' => 'M.T.T.',
|
503 |
'N4' => 'MTN',
|
504 |
-
'
|
505 |
-
'3T' => 'MyTab',
|
506 |
'1M' => 'MYFON',
|
507 |
-
'
|
508 |
'M8' => 'Myria',
|
509 |
'6M' => 'Mystery',
|
510 |
-
'
|
511 |
-
'
|
512 |
-
'6N' => 'Navitech',
|
513 |
-
'7N' => 'NorthTech',
|
514 |
'N7' => 'National',
|
515 |
-
'
|
|
|
516 |
'NE' => 'NEC',
|
517 |
-
'4N' => 'NextTab',
|
518 |
-
'5N' => 'Nos',
|
519 |
-
'1N' => 'Neomi',
|
520 |
'NF' => 'Neffos',
|
|
|
521 |
'NA' => 'Netgear',
|
522 |
'NU' => 'NeuImage',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
523 |
'NG' => 'NGM',
|
524 |
'NZ' => 'NG Optics',
|
525 |
-
'
|
526 |
-
'NO' => 'Nous',
|
527 |
'NI' => 'Nintendo',
|
528 |
-
'
|
529 |
'N1' => 'Noain',
|
530 |
-
'
|
531 |
-
'NK' => 'Nokia',
|
532 |
-
'NV' => 'Nvidia',
|
533 |
'NB' => 'Noblex',
|
|
|
534 |
'NM' => 'Nomi',
|
535 |
'2N' => 'Nomu',
|
536 |
-
'
|
|
|
|
|
|
|
|
|
537 |
'NL' => 'NUU Mobile',
|
|
|
|
|
538 |
'NY' => 'NYX Mobile',
|
539 |
-
'NN' => 'Nikon',
|
540 |
-
'N9' => 'Newland',
|
541 |
-
'NW' => 'Newgen',
|
542 |
-
'NS' => 'NewsMy',
|
543 |
-
'NX' => 'Nexian',
|
544 |
-
'N8' => 'NEXON',
|
545 |
-
'NT' => 'NextBook',
|
546 |
'O3' => 'O+',
|
|
|
|
|
547 |
'OB' => 'Obi',
|
548 |
'O1' => 'Odys',
|
549 |
'OA' => 'Okapia',
|
550 |
'OD' => 'Onda',
|
551 |
'ON' => 'OnePlus',
|
552 |
'OX' => 'Onix',
|
|
|
|
|
553 |
'OH' => 'Openbox',
|
554 |
'OP' => 'OPPO',
|
555 |
-
'
|
556 |
'OR' => 'Orange',
|
557 |
'O5' => 'Orbic',
|
558 |
'OS' => 'Ordissimo',
|
559 |
-
'OT' => 'O2',
|
560 |
'OK' => 'Ouki',
|
561 |
'OE' => 'Oukitel',
|
562 |
'OU' => 'OUYA',
|
563 |
-
'OO' => 'Opsson',
|
564 |
'OV' => 'Overmax',
|
565 |
'30' => 'Ovvi',
|
|
|
566 |
'OY' => 'Oysters',
|
567 |
'O6' => 'Oyyu',
|
568 |
-
'OW' => 'öwn',
|
569 |
-
'O2' => 'Owwo',
|
570 |
'OZ' => 'OzoneHD',
|
|
|
|
|
571 |
'PN' => 'Panacom',
|
572 |
'PA' => 'Panasonic',
|
|
|
573 |
'PB' => 'PCBOX',
|
574 |
'PC' => 'PCD',
|
575 |
'PD' => 'PCD Argentina',
|
576 |
'PE' => 'PEAQ',
|
577 |
'PG' => 'Pentagram',
|
578 |
-
'PH' => 'Philips',
|
579 |
-
'4P' => 'Philco',
|
580 |
'1P' => 'Phicomm',
|
|
|
|
|
|
|
|
|
581 |
'PI' => 'Pioneer',
|
582 |
-
'PX' => 'Pixus',
|
583 |
'8P' => 'Pixelphone',
|
584 |
-
'
|
585 |
-
'
|
586 |
-
'P9' => 'Primepad',
|
587 |
-
'2P' => 'Prixton',
|
588 |
-
'P6' => 'Proline',
|
589 |
-
'PM' => 'Palm',
|
590 |
-
'0P' => 'POCO',
|
591 |
-
'3P' => 'Positivo BGH',
|
592 |
-
'PO' => 'phoneOne',
|
593 |
-
'5P' => 'Phonemax',
|
594 |
-
'PT' => 'Pantech',
|
595 |
'PY' => 'Ployer',
|
596 |
'P4' => 'Plum',
|
597 |
'P8' => 'PocketBook',
|
|
|
598 |
'PV' => 'Point of View',
|
|
|
599 |
'PP' => 'PolyPad',
|
|
|
600 |
'P2' => 'Pomp',
|
601 |
-
'
|
602 |
'PS' => 'Positivo',
|
|
|
|
|
|
|
603 |
'PR' => 'Prestigio',
|
|
|
604 |
'6P' => 'Primux',
|
605 |
-
'
|
|
|
606 |
'P1' => 'ProScan',
|
|
|
607 |
'PU' => 'PULID',
|
608 |
-
'
|
609 |
'QB' => 'Q.Bell',
|
610 |
'QI' => 'Qilive',
|
611 |
-
'QT' => 'Qtek',
|
612 |
-
'QH' => 'Q-Touch',
|
613 |
'QM' => 'QMobile',
|
|
|
614 |
'QA' => 'Quantum',
|
615 |
'QU' => 'Quechua',
|
616 |
'QO' => 'Qumo',
|
|
|
617 |
'RA' => 'Ramos',
|
618 |
-
'RE' => 'Realme',
|
619 |
-
'R8' => 'RED',
|
620 |
'R9' => 'Ravoz',
|
621 |
'RZ' => 'Razer',
|
622 |
'RC' => 'RCA Tablets',
|
|
|
623 |
'RB' => 'Readboy',
|
|
|
|
|
|
|
624 |
'RI' => 'Rikomagic',
|
|
|
625 |
'RN' => 'Rinno',
|
|
|
|
|
626 |
'RV' => 'Riviera',
|
627 |
-
'RM' => 'RIM',
|
628 |
-
'RK' => 'Roku',
|
629 |
-
'RO' => 'Rover',
|
630 |
-
'R6' => 'RoverPad',
|
631 |
'RR' => 'Roadrover',
|
632 |
'R1' => 'Rokit',
|
|
|
633 |
'R3' => 'Rombica',
|
634 |
-
'RT' => 'RT Project',
|
635 |
-
'RX' => 'Ritmix',
|
636 |
-
'R7' => 'Ritzviva',
|
637 |
'R5' => 'Ross&Moor',
|
638 |
-
'
|
|
|
|
|
639 |
'RG' => 'RugGear',
|
640 |
'RU' => 'Runbo',
|
641 |
'RY' => 'Ryte',
|
642 |
-
'
|
|
|
|
|
643 |
'SA' => 'Samsung',
|
644 |
'S0' => 'Sanei',
|
|
|
|
|
|
|
|
|
645 |
'CZ' => 'Schneider',
|
646 |
'SD' => 'Sega',
|
|
|
|
|
647 |
'SL' => 'Selfix',
|
648 |
-
'
|
649 |
-
'01' => 'Senkatel',
|
650 |
'S1' => 'Sencor',
|
651 |
-
'
|
|
|
|
|
|
|
652 |
'SX' => 'SFR',
|
653 |
-
'SG' => 'Sagem',
|
654 |
'SH' => 'Sharp',
|
655 |
'7S' => 'Shift Phones',
|
656 |
'RS' => 'Shtrikh-M',
|
657 |
'3S' => 'Shuttle',
|
|
|
658 |
'SI' => 'Siemens',
|
659 |
-
'SJ' => 'Silent Circle',
|
660 |
'1S' => 'Sigma',
|
661 |
-
'
|
662 |
-
'
|
663 |
-
'
|
664 |
-
'
|
665 |
'SW' => 'Sky',
|
666 |
'SK' => 'Skyworth',
|
|
|
|
|
|
|
|
|
667 |
'SC' => 'Smartfren',
|
668 |
-
'
|
|
|
|
|
669 |
'OI' => 'Sonim',
|
|
|
|
|
670 |
'X2' => 'Soundmax',
|
671 |
'8S' => 'Soyes',
|
672 |
-
'
|
673 |
'6S' => 'Spectrum',
|
674 |
-
'
|
675 |
-
'
|
676 |
-
'0H' => 'Sunstech',
|
677 |
-
'SU' => 'SuperSonic',
|
678 |
-
'S5' => 'Supra',
|
679 |
-
'SV' => 'Selevision',
|
680 |
-
'9G' => 'Selenga',
|
681 |
-
'SY' => 'Sanyo',
|
682 |
-
'SM' => 'Symphony',
|
683 |
-
'4S' => 'Syrox',
|
684 |
-
'SR' => 'Smart',
|
685 |
-
'S7' => 'Smartisan',
|
686 |
'S4' => 'Star',
|
687 |
'OL' => 'Starlight',
|
|
|
|
|
688 |
'SB' => 'STF Mobile',
|
689 |
'S8' => 'STK',
|
690 |
-
'S9' => 'Savio',
|
691 |
-
'2S' => 'Starway',
|
692 |
-
'ST' => 'Storex',
|
693 |
'S2' => 'Stonex',
|
694 |
-
'
|
|
|
695 |
'SZ' => 'Sumvision',
|
|
|
|
|
|
|
|
|
|
|
|
|
696 |
'SS' => 'SWISSMOBILITY',
|
697 |
'1W' => 'Swisstone',
|
698 |
-
'
|
699 |
-
'
|
700 |
-
'
|
701 |
-
'X1' => 'Safaricom',
|
702 |
-
'TA' => 'Tesla',
|
703 |
'TK' => 'Takara',
|
704 |
-
'
|
705 |
-
'5R' => 'Transpeed',
|
706 |
'T5' => 'TB Touch',
|
707 |
'TC' => 'TCL',
|
|
|
|
|
|
|
|
|
|
|
708 |
'T7' => 'Teclast',
|
709 |
-
'TE' => 'Telit',
|
710 |
-
'9T' => 'Tetratab',
|
711 |
-
'T4' => 'ThL',
|
712 |
-
'TH' => 'TiPhone',
|
713 |
'TB' => 'Tecno Mobile',
|
714 |
-
'TP' => 'TechPad',
|
715 |
-
'TD' => 'Tesco',
|
716 |
-
'T0' => 'TD Systems',
|
717 |
-
'TI' => 'TIANYU',
|
718 |
-
'2T' => 'Tinai',
|
719 |
-
'TF' => 'Tinmo',
|
720 |
-
'TG' => 'Telego',
|
721 |
-
'TL' => 'Telefunken',
|
722 |
'2L' => 'Tele2',
|
|
|
|
|
723 |
'T2' => 'Telenor',
|
724 |
-
'
|
|
|
|
|
|
|
|
|
|
|
725 |
'TN' => 'Thomson',
|
|
|
|
|
726 |
'8T' => 'Time2',
|
727 |
'TQ' => 'Timovi',
|
728 |
-
'
|
729 |
-
'
|
|
|
730 |
'T1' => 'Tolino',
|
|
|
|
|
731 |
'T9' => 'Top House',
|
732 |
'TO' => 'Toplux',
|
733 |
'7T' => 'Torex',
|
734 |
-
'T8' => 'Touchmate',
|
735 |
'TS' => 'Toshiba',
|
736 |
-
'
|
737 |
-
'
|
738 |
'T6' => 'TrekStor',
|
739 |
'T3' => 'Trevi',
|
|
|
|
|
|
|
|
|
740 |
'TU' => 'Tunisie Telecom',
|
741 |
-
'TR' => 'Turbo-X',
|
742 |
'1T' => 'Turbo',
|
|
|
743 |
'5T' => 'TurboKids',
|
744 |
-
'11' => 'True',
|
745 |
'TV' => 'TVC',
|
746 |
'TW' => 'TWM',
|
747 |
'6T' => 'Twoe',
|
748 |
-
'
|
749 |
-
'TZ' => 'teXet',
|
750 |
'UC' => 'U.S. Cellular',
|
751 |
-
'UH' => 'Uhappy',
|
752 |
-
'U1' => 'Uhans',
|
753 |
'UG' => 'Ugoos',
|
|
|
|
|
754 |
'UL' => 'Ulefone',
|
755 |
-
'
|
756 |
-
'
|
757 |
-
'
|
758 |
'UX' => 'Unimax',
|
|
|
759 |
'U2' => 'UNIWA',
|
760 |
-
'
|
761 |
'UU' => 'Unonu',
|
|
|
762 |
'UK' => 'UTOK',
|
763 |
-
'UA' => 'Umax',
|
764 |
'UT' => 'UTStarcom',
|
765 |
-
'
|
766 |
'VA' => 'Vastking',
|
767 |
-
'VD' => 'Videocon',
|
768 |
-
'VE' => 'Vertu',
|
769 |
'VN' => 'Venso',
|
770 |
-
'V5' => 'Vivax',
|
771 |
-
'0V' => 'Vipro',
|
772 |
-
'VI' => 'Vitelcom',
|
773 |
-
'V7' => 'Vinga',
|
774 |
-
'VK' => 'VK Mobile',
|
775 |
-
'VS' => 'ViewSonic',
|
776 |
-
'VH' => 'Vsmart',
|
777 |
-
'V9' => 'Vsun',
|
778 |
-
'V8' => 'Vesta',
|
779 |
-
'VT' => 'Vestel',
|
780 |
-
'VR' => 'Vernee',
|
781 |
-
'V4' => 'Verizon',
|
782 |
'4V' => 'Verico',
|
|
|
|
|
|
|
|
|
783 |
'VL' => 'Verykool',
|
|
|
|
|
784 |
'V6' => 'VGO TEL',
|
785 |
-
'
|
786 |
-
'
|
787 |
-
'
|
|
|
788 |
'V3' => 'Vinsoc',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
789 |
'V2' => 'Vonino',
|
790 |
'1V' => 'Vontar',
|
791 |
'VG' => 'Vorago',
|
792 |
'2V' => 'Vorke',
|
793 |
'V1' => 'Voto',
|
794 |
'VO' => 'Voxtel',
|
795 |
-
'VF' => 'Vodafone',
|
796 |
-
'VM' => 'Vodacom',
|
797 |
-
'V0' => 'VKworld',
|
798 |
'VY' => 'Voyo',
|
799 |
-
'
|
800 |
-
'
|
801 |
'VU' => 'Vulcan',
|
|
|
802 |
'WA' => 'Walton',
|
803 |
-
'WF' => 'Wileyfox',
|
804 |
-
'WN' => 'Wink',
|
805 |
'WM' => 'Weimei',
|
806 |
'WE' => 'WellcoM',
|
807 |
-
'
|
808 |
'WY' => 'Wexler',
|
|
|
809 |
'W2' => 'Wigor',
|
810 |
'WI' => 'Wiko',
|
|
|
811 |
'WS' => 'Winds',
|
812 |
-
'
|
|
|
|
|
|
|
813 |
'WL' => 'Wolder',
|
814 |
'WG' => 'Wolfgang',
|
815 |
'WO' => 'Wonu',
|
816 |
'W1' => 'Woo',
|
817 |
-
'WX' => 'Woxter',
|
818 |
'WR' => 'Wortmann',
|
|
|
|
|
|
|
819 |
'XV' => 'X-View',
|
820 |
-
'
|
|
|
821 |
'XL' => 'Xiaolajiao',
|
|
|
822 |
'XN' => 'Xion',
|
823 |
'XO' => 'Xolo',
|
824 |
'XR' => 'Xoro',
|
825 |
-
'
|
826 |
-
'
|
827 |
'YD' => 'Yandex',
|
|
|
828 |
'Y2' => 'Yes',
|
829 |
'YE' => 'Yezz',
|
|
|
|
|
|
|
830 |
'Y1' => 'Yu',
|
831 |
'YU' => 'Yuandao',
|
832 |
'YS' => 'Yusun',
|
833 |
-
'YO' => 'Yota',
|
834 |
-
'YT' => 'Ytone',
|
835 |
'YX' => 'Yxtel',
|
836 |
'0Z' => 'Zatec',
|
|
|
837 |
'ZE' => 'Zeemi',
|
|
|
838 |
'ZK' => 'Zenek',
|
|
|
839 |
'ZF' => 'Zfiner',
|
840 |
-
'ZO' => 'Zonda',
|
841 |
'ZI' => 'Zidoo',
|
842 |
'ZX' => 'Ziox',
|
|
|
843 |
'ZP' => 'Zopo',
|
844 |
'ZT' => 'ZTE',
|
845 |
'ZU' => 'Zuum',
|
846 |
-
'ZN' => 'Zen',
|
847 |
'ZY' => 'Zync',
|
848 |
'ZQ' => 'ZYQ',
|
849 |
-
'
|
850 |
-
'XT' => 'X-TIGI',
|
851 |
-
'4X' => 'Xtouch',
|
852 |
-
'XB' => 'NEXBOX',
|
853 |
-
'X3' => 'X-BO',
|
854 |
// legacy brands, might be removed in future versions
|
855 |
'WB' => 'Web TV',
|
856 |
'XX' => 'Unknown',
|
79 |
* @var array
|
80 |
*/
|
81 |
public static $deviceBrands = [
|
82 |
+
'5E' => '2E',
|
|
|
83 |
'3Q' => '3Q',
|
84 |
'4G' => '4Good',
|
85 |
+
'04' => '4ife',
|
86 |
+
'36' => '360',
|
87 |
+
'88' => '8848',
|
88 |
'41' => 'A1',
|
89 |
+
'00' => 'Accent',
|
90 |
'AE' => 'Ace',
|
|
|
|
|
91 |
'AC' => 'Acer',
|
|
|
92 |
'A9' => 'Advan',
|
93 |
'AD' => 'Advance',
|
|
|
94 |
'A3' => 'AGM',
|
95 |
'AZ' => 'Ainol',
|
96 |
'AI' => 'Airness',
|
97 |
+
'AT' => 'Airties',
|
98 |
'0A' => 'AIS',
|
99 |
'AW' => 'Aiwa',
|
100 |
'AK' => 'Akai',
|
101 |
'1A' => 'Alba',
|
102 |
'AL' => 'Alcatel',
|
103 |
'20' => 'Alcor',
|
104 |
+
'6L' => 'ALDI SÜD',
|
105 |
+
'3L' => 'Alfawise',
|
106 |
'4A' => 'Aligator',
|
107 |
+
'AA' => 'AllCall',
|
108 |
+
'3A' => 'AllDocube',
|
109 |
'A2' => 'Allview',
|
110 |
'A7' => 'Allwinner',
|
111 |
'A1' => 'Altech UEC',
|
112 |
+
'66' => 'Altice',
|
113 |
'A5' => 'altron',
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
'KN' => 'Amazon',
|
115 |
'AG' => 'AMGOO',
|
116 |
'9A' => 'Amigoo',
|
117 |
'AO' => 'Amoi',
|
118 |
+
'60' => 'Andowl',
|
119 |
+
'7A' => 'Anry',
|
120 |
+
'A0' => 'ANS',
|
121 |
'3N' => 'Aoson',
|
122 |
'AP' => 'Apple',
|
123 |
'AR' => 'Archos',
|
|
|
124 |
'AB' => 'Arian Space',
|
|
|
|
|
125 |
'A6' => 'Ark',
|
126 |
+
'5A' => 'ArmPhone',
|
127 |
+
'AN' => 'Arnova',
|
128 |
+
'AS' => 'ARRIS',
|
129 |
+
'40' => 'Artel',
|
130 |
+
'21' => 'Artizlee',
|
131 |
'8A' => 'Asano',
|
132 |
+
'90' => 'Asanzo',
|
133 |
+
'A4' => 'Ask',
|
134 |
'A8' => 'Assistant',
|
|
|
135 |
'AU' => 'Asus',
|
136 |
+
'6A' => 'AT&T',
|
137 |
+
'2A' => 'Atom',
|
138 |
+
'AX' => 'Audiovox',
|
139 |
'ZA' => 'Avenzo',
|
140 |
+
'AH' => 'AVH',
|
141 |
'AV' => 'Avvio',
|
|
|
142 |
'AY' => 'Axxion',
|
143 |
'AM' => 'Azumi Mobile',
|
144 |
+
'BO' => 'BangOlufsen',
|
145 |
+
'BN' => 'Barnes & Noble',
|
146 |
'BB' => 'BBK',
|
147 |
'0B' => 'BB Mobile',
|
148 |
+
'B6' => 'BDF',
|
149 |
'BE' => 'Becker',
|
150 |
'B5' => 'Beeline',
|
151 |
'B0' => 'Beelink',
|
152 |
+
'BL' => 'Beetel',
|
153 |
+
'BQ' => 'BenQ',
|
154 |
+
'BS' => 'BenQ-Siemens',
|
155 |
+
'BZ' => 'Bezkam',
|
156 |
+
'BG' => 'BGH',
|
157 |
+
'6B' => 'Bigben',
|
158 |
+
'B8' => 'BIHEE',
|
159 |
'1B' => 'Billion',
|
160 |
+
'BH' => 'BioRugged',
|
161 |
+
'BI' => 'Bird',
|
162 |
'BT' => 'Bitel',
|
|
|
163 |
'B7' => 'Bitmore',
|
164 |
+
'BK' => 'Bkav',
|
165 |
+
'5B' => 'Black Bear',
|
166 |
+
'BF' => 'Black Fox',
|
167 |
+
'B2' => 'Blackview',
|
168 |
'BP' => 'Blaupunkt',
|
169 |
+
'BU' => 'Blu',
|
170 |
'B3' => 'Bluboo',
|
171 |
+
'2B' => 'Bluedot',
|
172 |
+
'BD' => 'Bluegood',
|
173 |
+
'LB' => 'Bluewave',
|
174 |
'BM' => 'Bmobile',
|
|
|
|
|
175 |
'B9' => 'Bobarry',
|
|
|
|
|
|
|
|
|
|
|
176 |
'B4' => 'bogo',
|
177 |
'BW' => 'Boway',
|
|
|
178 |
'BX' => 'bq',
|
179 |
+
'8B' => 'Brandt',
|
180 |
'BV' => 'Bravis',
|
181 |
'BR' => 'Brondi',
|
182 |
'B1' => 'Bush',
|
183 |
+
'C9' => 'CAGI',
|
184 |
+
'CT' => 'Capitel',
|
185 |
'CP' => 'Captiva',
|
186 |
+
'CF' => 'Carrefour',
|
187 |
'CS' => 'Casio',
|
188 |
'R4' => 'Casper',
|
189 |
'CA' => 'Cat',
|
190 |
+
'7C' => 'Celcus',
|
191 |
'CE' => 'Celkon',
|
|
|
192 |
'C2' => 'Changhong',
|
|
|
193 |
'CH' => 'Cherry Mobile',
|
194 |
+
'C3' => 'China Mobile',
|
195 |
'1C' => 'Chuwi',
|
196 |
'L8' => 'Clarmin',
|
197 |
'CD' => 'Cloudfone',
|
198 |
'6C' => 'Cloudpad',
|
199 |
'C0' => 'Clout',
|
|
|
|
|
|
|
200 |
'CN' => 'CnM',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
'CY' => 'Coby Kyros',
|
202 |
'C6' => 'Comio',
|
203 |
+
'CL' => 'Compal',
|
204 |
+
'CQ' => 'Compaq',
|
205 |
'C7' => 'ComTrade Tesla',
|
206 |
'C8' => 'Concord',
|
207 |
+
'CC' => 'ConCorde',
|
208 |
+
'C5' => 'Condor',
|
209 |
+
'4C' => 'Conquest',
|
210 |
+
'3C' => 'Contixo',
|
211 |
+
'CO' => 'Coolpad',
|
212 |
+
'CW' => 'Cowon',
|
213 |
+
'CR' => 'CreNova',
|
214 |
'CX' => 'Crescent',
|
215 |
+
'CK' => 'Cricket',
|
216 |
+
'CM' => 'Crius Mea',
|
217 |
+
'0C' => 'Crony',
|
218 |
+
'C1' => 'Crosscall',
|
219 |
+
'CU' => 'Cube',
|
220 |
+
'CB' => 'CUBOT',
|
221 |
'CV' => 'CVTE',
|
222 |
+
'C4' => 'Cyrus',
|
223 |
'D5' => 'Daewoo',
|
224 |
'DA' => 'Danew',
|
225 |
'DT' => 'Datang',
|
226 |
'D7' => 'Datawind',
|
227 |
'D1' => 'Datsun',
|
228 |
+
'DB' => 'Dbtel',
|
229 |
+
'DL' => 'Dell',
|
230 |
'DE' => 'Denver',
|
231 |
+
'DS' => 'Desay',
|
232 |
'DW' => 'DeWalt',
|
233 |
'DX' => 'DEXP',
|
|
|
|
|
|
|
|
|
|
|
234 |
'DG' => 'Dialog',
|
235 |
'DI' => 'Dicam',
|
236 |
'D4' => 'Digi',
|
237 |
'D3' => 'Digicel',
|
238 |
+
'DH' => 'Digihome',
|
239 |
'DD' => 'Digiland',
|
240 |
'D2' => 'Digma',
|
241 |
+
'1D' => 'Diva',
|
242 |
'D6' => 'Divisat',
|
|
|
|
|
243 |
'DM' => 'DMM',
|
244 |
+
'DN' => 'DNS',
|
245 |
+
'DC' => 'DoCoMo',
|
246 |
'DF' => 'Doffler',
|
247 |
+
'D9' => 'Dolamee',
|
248 |
+
'DO' => 'Doogee',
|
249 |
+
'D0' => 'Doopro',
|
250 |
'DV' => 'Doov',
|
251 |
'DP' => 'Dopod',
|
252 |
'DR' => 'Doro',
|
254 |
'DU' => 'Dune HD',
|
255 |
'EB' => 'E-Boda',
|
256 |
'2E' => 'E-Ceros',
|
257 |
+
'E8' => 'E-tel',
|
258 |
+
'EP' => 'Easypix',
|
259 |
'EA' => 'EBEST',
|
|
|
|
|
|
|
260 |
'E4' => 'Echo Mobiles',
|
261 |
'ES' => 'ECS',
|
262 |
'E6' => 'EE',
|
263 |
+
'EK' => 'EKO',
|
264 |
'EM' => 'Eks Mobility',
|
265 |
+
'7E' => 'ELARI',
|
|
|
266 |
'L0' => 'Element',
|
267 |
'EG' => 'Elenberg',
|
268 |
+
'EL' => 'Elephone',
|
269 |
+
'4E' => 'Eltex',
|
270 |
+
'ED' => 'Energizer',
|
271 |
'E1' => 'Energy Sistem',
|
272 |
'3E' => 'Enot',
|
273 |
+
'8E' => 'Epik One',
|
274 |
+
'E7' => 'Ergo',
|
275 |
+
'EC' => 'Ericsson',
|
276 |
'ER' => 'Ericy',
|
277 |
'EE' => 'Essential',
|
278 |
+
'E2' => 'Essentielb',
|
279 |
'6E' => 'eSTAR',
|
280 |
'EN' => 'Eton',
|
|
|
|
|
281 |
'ET' => 'eTouch',
|
282 |
+
'1E' => 'Etuline',
|
283 |
+
'EU' => 'Eurostar',
|
284 |
+
'E9' => 'Evercoss',
|
285 |
'EV' => 'Evertek',
|
286 |
'E3' => 'Evolio',
|
287 |
'EO' => 'Evolveo',
|
288 |
+
'E0' => 'EvroMedia',
|
289 |
+
'XE' => 'ExMobile',
|
290 |
'EH' => 'EXO',
|
291 |
'EX' => 'Explay',
|
|
|
292 |
'E5' => 'Extrem',
|
293 |
+
'EI' => 'Ezio',
|
294 |
'EZ' => 'Ezze',
|
|
|
|
|
|
|
|
|
295 |
'FA' => 'Fairphone',
|
296 |
'FM' => 'Famoco',
|
297 |
+
'17' => 'FarEasTone',
|
298 |
'FE' => 'Fengxiang',
|
299 |
+
'F7' => 'Fero',
|
300 |
'FI' => 'FiGO',
|
301 |
+
'F1' => 'FinePower',
|
302 |
+
'FX' => 'Finlux',
|
303 |
'F3' => 'FireFly Mobile',
|
304 |
'FL' => 'Fly',
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
'FN' => 'FNB',
|
|
|
306 |
'FD' => 'Fondi',
|
307 |
'F0' => 'Fonos',
|
308 |
+
'F2' => 'FORME',
|
309 |
+
'FR' => 'Forstar',
|
310 |
+
'RF' => 'Fortis',
|
311 |
+
'FO' => 'Foxconn',
|
312 |
+
'FT' => 'Freetel',
|
313 |
+
'FU' => 'Fujitsu',
|
314 |
'GT' => 'G-TiDE',
|
315 |
'GM' => 'Garmin-Asus',
|
316 |
'GA' => 'Gateway',
|
317 |
'GD' => 'Gemini',
|
318 |
'GN' => 'General Mobile',
|
|
|
319 |
'G2' => 'GEOFOX',
|
320 |
+
'GE' => 'Geotel',
|
321 |
'GH' => 'Ghia',
|
322 |
+
'2C' => 'Ghong',
|
323 |
'GG' => 'Gigabyte',
|
324 |
'GS' => 'Gigaset',
|
325 |
'GZ' => 'Ginzzu',
|
326 |
+
'GI' => 'Gionee',
|
327 |
'G4' => 'Globex',
|
328 |
'GC' => 'GOCLEVER',
|
329 |
'GL' => 'Goly',
|
|
|
330 |
'G5' => 'Gome',
|
331 |
'G1' => 'GoMobile',
|
332 |
+
'GO' => 'Google',
|
333 |
+
'G0' => 'Goophone',
|
334 |
'GR' => 'Gradiente',
|
335 |
'GP' => 'Grape',
|
336 |
'G6' => 'Gree',
|
|
|
337 |
'GU' => 'Grundig',
|
338 |
'HF' => 'Hafury',
|
339 |
'HA' => 'Haier',
|
|
|
|
|
340 |
'HE' => 'HannSpree',
|
341 |
+
'HK' => 'Hardkernel',
|
342 |
+
'HS' => 'Hasee',
|
343 |
+
'H6' => 'Helio',
|
344 |
+
'ZH' => 'Hezire',
|
345 |
'HL' => 'Hi-Level',
|
346 |
'H2' => 'Highscreen',
|
347 |
'1H' => 'Hipstreet',
|
348 |
+
'HI' => 'Hisense',
|
349 |
+
'HC' => 'Hitachi',
|
350 |
'H1' => 'Hoffmann',
|
|
|
351 |
'H0' => 'Hometech',
|
352 |
+
'HM' => 'Homtom',
|
353 |
+
'HZ' => 'Hoozo',
|
354 |
'HO' => 'Hosin',
|
355 |
+
'H3' => 'Hotel',
|
356 |
'HV' => 'Hotwav',
|
357 |
+
'HW' => 'How',
|
358 |
'HP' => 'HP',
|
359 |
'HT' => 'HTC',
|
360 |
'HD' => 'Huadoo',
|
361 |
'HU' => 'Huawei',
|
362 |
'HX' => 'Humax',
|
363 |
+
'HR' => 'Hurricane',
|
364 |
'HY' => 'Hyrican',
|
365 |
'HN' => 'Hyundai',
|
|
|
|
|
|
|
366 |
'3I' => 'i-Cherry',
|
367 |
'IJ' => 'i-Joy',
|
368 |
+
'IM' => 'i-mate',
|
369 |
+
'IO' => 'i-mobile',
|
370 |
+
'IB' => 'iBall',
|
371 |
'IY' => 'iBerry',
|
372 |
'7I' => 'iBrit',
|
373 |
+
'I2' => 'IconBIT',
|
374 |
+
'IC' => 'iDroid',
|
375 |
+
'IG' => 'iGet',
|
376 |
'IH' => 'iHunt',
|
377 |
+
'IA' => 'Ikea',
|
378 |
'IK' => 'iKoMo',
|
379 |
+
'I7' => 'iLA',
|
|
|
|
|
|
|
|
|
380 |
'2I' => 'iLife',
|
381 |
+
'1I' => 'iMars',
|
|
|
382 |
'IL' => 'IMO Mobile',
|
383 |
+
'I3' => 'Impression',
|
384 |
+
'6I' => 'Inco',
|
385 |
'IW' => 'iNew',
|
|
|
386 |
'IF' => 'Infinix',
|
387 |
'I0' => 'InFocus',
|
388 |
+
'II' => 'Inkti',
|
389 |
'I5' => 'InnJoo',
|
390 |
'IN' => 'Innostream',
|
|
|
391 |
'I4' => 'Inoi',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
'IQ' => 'INQ',
|
393 |
+
'IS' => 'Insignia',
|
394 |
'IT' => 'Intek',
|
395 |
+
'IX' => 'Intex',
|
396 |
'IV' => 'Inverto',
|
397 |
+
'4I' => 'Invin',
|
398 |
+
'I1' => 'iOcean',
|
399 |
+
'IP' => 'iPro',
|
400 |
+
'8Q' => 'IQM',
|
401 |
+
'I6' => 'Irbis',
|
402 |
+
'5I' => 'Iris',
|
403 |
+
'IR' => 'iRola',
|
404 |
+
'IU' => 'iRulu',
|
405 |
+
'9I' => 'iSWAG',
|
406 |
'IZ' => 'iTel',
|
407 |
'0I' => 'iTruck',
|
408 |
+
'I8' => 'iVA',
|
409 |
+
'IE' => 'iView',
|
410 |
+
'0J' => 'iVooMi',
|
411 |
'I9' => 'iZotron',
|
412 |
'JA' => 'JAY-Tech',
|
413 |
+
'JF' => 'JFone',
|
414 |
'JI' => 'Jiayu',
|
415 |
'JG' => 'Jinga',
|
416 |
+
'JK' => 'JKL',
|
417 |
'JO' => 'Jolla',
|
418 |
'J5' => 'Just5',
|
419 |
+
'JV' => 'JVC',
|
420 |
+
'KT' => 'K-Touch',
|
|
|
|
|
421 |
'K4' => 'Kaan',
|
422 |
'K7' => 'Kaiomy',
|
423 |
+
'KL' => 'Kalley',
|
424 |
'K6' => 'Kanji',
|
425 |
'KA' => 'Karbonn',
|
426 |
'K5' => 'KATV1',
|
427 |
+
'KZ' => 'Kazam',
|
428 |
'KD' => 'KDDI',
|
429 |
+
'KS' => 'Kempler & Strauss',
|
430 |
+
'K3' => 'Keneksi',
|
431 |
+
'KX' => 'Kenxinda',
|
432 |
'K1' => 'Kiano',
|
|
|
433 |
'KI' => 'Kingsun',
|
434 |
+
'KV' => 'Kivi',
|
435 |
+
'0K' => 'Klipad',
|
436 |
'KC' => 'Kocaso',
|
437 |
+
'KK' => 'Kodak',
|
438 |
'KG' => 'Kogan',
|
|
|
439 |
'KM' => 'Komu',
|
440 |
+
'KO' => 'Konka',
|
441 |
+
'KW' => 'Konrow',
|
442 |
+
'KB' => 'Koobee',
|
443 |
+
'7K' => 'Koolnee',
|
444 |
'K9' => 'Kooper',
|
|
|
|
|
|
|
445 |
'KP' => 'KOPO',
|
|
|
446 |
'KR' => 'Koridy',
|
447 |
'K2' => 'KRONO',
|
448 |
+
'KE' => 'Krüger&Matz',
|
449 |
+
'KH' => 'KT-Tech',
|
450 |
'K8' => 'Kuliao',
|
451 |
+
'8K' => 'Kult',
|
452 |
'KU' => 'Kumai',
|
453 |
'KY' => 'Kyocera',
|
|
|
454 |
'1K' => 'Kzen',
|
|
|
|
|
455 |
'LQ' => 'LAIQ',
|
|
|
456 |
'L6' => 'Land Rover',
|
457 |
+
'L2' => 'Landvo',
|
458 |
'LA' => 'Lanix',
|
459 |
'LK' => 'Lark',
|
460 |
+
'LV' => 'Lava',
|
461 |
'LC' => 'LCT',
|
462 |
'L5' => 'Leagoo',
|
463 |
'LD' => 'Ledstar',
|
464 |
'L1' => 'LeEco',
|
465 |
+
'4B' => 'Leff',
|
466 |
'L4' => 'Lemhoov',
|
|
|
467 |
'LN' => 'Lenco',
|
468 |
+
'LE' => 'Lenovo',
|
469 |
'LT' => 'Leotec',
|
470 |
+
'LP' => 'Le Pan',
|
471 |
'L7' => 'Lephone',
|
472 |
'LZ' => 'Lesia',
|
473 |
+
'L3' => 'Lexand',
|
474 |
+
'LX' => 'Lexibook',
|
475 |
'LG' => 'LG',
|
476 |
'LI' => 'Lingwin',
|
477 |
+
'5L' => 'Linsar',
|
478 |
'LO' => 'Loewe',
|
|
|
479 |
'1L' => 'Logic',
|
480 |
+
'LM' => 'Logicom',
|
|
|
|
|
|
|
481 |
'0L' => 'Lumigon',
|
482 |
+
'LU' => 'Lumus',
|
483 |
'L9' => 'Luna',
|
484 |
+
'LR' => 'Luxor',
|
485 |
+
'LY' => 'LYF',
|
486 |
+
'MQ' => 'M.T.T.',
|
487 |
'MN' => 'M4tel',
|
488 |
'XM' => 'Macoox',
|
489 |
'MJ' => 'Majestic',
|
|
|
|
|
|
|
490 |
'5M' => 'Mann',
|
491 |
+
'MA' => 'Manta Multimedia',
|
492 |
'2M' => 'Masstel',
|
493 |
+
'50' => 'Matrix',
|
494 |
'7M' => 'Maxcom',
|
495 |
+
'6X' => 'Maxtron',
|
496 |
'0D' => 'MAXVI',
|
497 |
+
'MW' => 'Maxwest',
|
498 |
'M0' => 'Maze',
|
499 |
+
'09' => 'meanIT',
|
|
|
|
|
500 |
'M3' => 'Mecer',
|
501 |
+
'0M' => 'Mecool',
|
502 |
+
'MC' => 'Mediacom',
|
503 |
+
'MK' => 'MediaTek',
|
504 |
'MD' => 'Medion',
|
505 |
'M2' => 'MEEG',
|
506 |
+
'MP' => 'MegaFon',
|
507 |
'3M' => 'Meitu',
|
508 |
+
'M1' => 'Meizu',
|
|
|
509 |
'0E' => 'Melrose',
|
510 |
+
'MU' => 'Memup',
|
511 |
+
'ME' => 'Metz',
|
512 |
'MX' => 'MEU',
|
513 |
'MI' => 'MicroMax',
|
514 |
+
'MS' => 'Microsoft',
|
515 |
'1X' => 'Minix',
|
516 |
+
'OM' => 'Mintt',
|
517 |
+
'MO' => 'Mio',
|
518 |
+
'M7' => 'Miray',
|
519 |
+
'8M' => 'Mito',
|
520 |
+
'MT' => 'Mitsubishi',
|
521 |
'M5' => 'MIXC',
|
522 |
'1Z' => 'MiXzo',
|
523 |
+
'ML' => 'MLLED',
|
524 |
+
'LS' => 'MLS',
|
525 |
'4M' => 'Mobicel',
|
526 |
'M6' => 'Mobiistar',
|
527 |
+
'MH' => 'Mobiola',
|
528 |
+
'MB' => 'Mobistel',
|
529 |
+
'6W' => 'MobiWire',
|
530 |
+
'9M' => 'Mobo',
|
|
|
|
|
531 |
'M4' => 'Modecom',
|
532 |
'MF' => 'Mofut',
|
533 |
'MR' => 'Motorola',
|
534 |
'MV' => 'Movic',
|
535 |
+
'MM' => 'Mpman',
|
|
|
|
|
536 |
'MZ' => 'MSI',
|
537 |
+
'M9' => 'MTC',
|
|
|
|
|
|
|
538 |
'N4' => 'MTN',
|
539 |
+
'1R' => 'Multilaser',
|
|
|
540 |
'1M' => 'MYFON',
|
541 |
+
'MY' => 'MyPhone',
|
542 |
'M8' => 'Myria',
|
543 |
'6M' => 'Mystery',
|
544 |
+
'3T' => 'MyTab',
|
545 |
+
'MG' => 'MyWigo',
|
|
|
|
|
546 |
'N7' => 'National',
|
547 |
+
'6N' => 'Navitech',
|
548 |
+
'N3' => 'Navon',
|
549 |
'NE' => 'NEC',
|
|
|
|
|
|
|
550 |
'NF' => 'Neffos',
|
551 |
+
'1N' => 'Neomi',
|
552 |
'NA' => 'Netgear',
|
553 |
'NU' => 'NeuImage',
|
554 |
+
'NW' => 'Newgen',
|
555 |
+
'N9' => 'Newland',
|
556 |
+
'0N' => 'Newman',
|
557 |
+
'NS' => 'NewsMy',
|
558 |
+
'XB' => 'NEXBOX',
|
559 |
+
'NX' => 'Nexian',
|
560 |
+
'N8' => 'NEXON',
|
561 |
+
'N2' => 'Nextbit',
|
562 |
+
'NT' => 'NextBook',
|
563 |
+
'4N' => 'NextTab',
|
564 |
'NG' => 'NGM',
|
565 |
'NZ' => 'NG Optics',
|
566 |
+
'NN' => 'Nikon',
|
|
|
567 |
'NI' => 'Nintendo',
|
568 |
+
'N5' => 'NOA',
|
569 |
'N1' => 'Noain',
|
570 |
+
'N6' => 'Nobby',
|
|
|
|
|
571 |
'NB' => 'Noblex',
|
572 |
+
'NK' => 'Nokia',
|
573 |
'NM' => 'Nomi',
|
574 |
'2N' => 'Nomu',
|
575 |
+
'NR' => 'Nordmende',
|
576 |
+
'7N' => 'NorthTech',
|
577 |
+
'5N' => 'Nos',
|
578 |
+
'NO' => 'Nous',
|
579 |
+
'NJ' => 'NuAns',
|
580 |
'NL' => 'NUU Mobile',
|
581 |
+
'N0' => 'Nuvo',
|
582 |
+
'NV' => 'Nvidia',
|
583 |
'NY' => 'NYX Mobile',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
584 |
'O3' => 'O+',
|
585 |
+
'OT' => 'O2',
|
586 |
+
'O7' => 'Oale',
|
587 |
'OB' => 'Obi',
|
588 |
'O1' => 'Odys',
|
589 |
'OA' => 'Okapia',
|
590 |
'OD' => 'Onda',
|
591 |
'ON' => 'OnePlus',
|
592 |
'OX' => 'Onix',
|
593 |
+
'O4' => 'ONN',
|
594 |
+
'2O' => 'OpelMobile',
|
595 |
'OH' => 'Openbox',
|
596 |
'OP' => 'OPPO',
|
597 |
+
'OO' => 'Opsson',
|
598 |
'OR' => 'Orange',
|
599 |
'O5' => 'Orbic',
|
600 |
'OS' => 'Ordissimo',
|
|
|
601 |
'OK' => 'Ouki',
|
602 |
'OE' => 'Oukitel',
|
603 |
'OU' => 'OUYA',
|
|
|
604 |
'OV' => 'Overmax',
|
605 |
'30' => 'Ovvi',
|
606 |
+
'O2' => 'Owwo',
|
607 |
'OY' => 'Oysters',
|
608 |
'O6' => 'Oyyu',
|
|
|
|
|
609 |
'OZ' => 'OzoneHD',
|
610 |
+
'7P' => 'P-UP',
|
611 |
+
'PM' => 'Palm',
|
612 |
'PN' => 'Panacom',
|
613 |
'PA' => 'Panasonic',
|
614 |
+
'PT' => 'Pantech',
|
615 |
'PB' => 'PCBOX',
|
616 |
'PC' => 'PCD',
|
617 |
'PD' => 'PCD Argentina',
|
618 |
'PE' => 'PEAQ',
|
619 |
'PG' => 'Pentagram',
|
|
|
|
|
620 |
'1P' => 'Phicomm',
|
621 |
+
'4P' => 'Philco',
|
622 |
+
'PH' => 'Philips',
|
623 |
+
'5P' => 'Phonemax',
|
624 |
+
'PO' => 'phoneOne',
|
625 |
'PI' => 'Pioneer',
|
|
|
626 |
'8P' => 'Pixelphone',
|
627 |
+
'PX' => 'Pixus',
|
628 |
+
'9P' => 'Planet Computers',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
629 |
'PY' => 'Ployer',
|
630 |
'P4' => 'Plum',
|
631 |
'P8' => 'PocketBook',
|
632 |
+
'0P' => 'POCO',
|
633 |
'PV' => 'Point of View',
|
634 |
+
'PL' => 'Polaroid',
|
635 |
'PP' => 'PolyPad',
|
636 |
+
'P5' => 'Polytron',
|
637 |
'P2' => 'Pomp',
|
638 |
+
'P0' => 'Poppox',
|
639 |
'PS' => 'Positivo',
|
640 |
+
'3P' => 'Positivo BGH',
|
641 |
+
'P3' => 'PPTV',
|
642 |
+
'FP' => 'Premio',
|
643 |
'PR' => 'Prestigio',
|
644 |
+
'P9' => 'Primepad',
|
645 |
'6P' => 'Primux',
|
646 |
+
'2P' => 'Prixton',
|
647 |
+
'P6' => 'Proline',
|
648 |
'P1' => 'ProScan',
|
649 |
+
'P7' => 'Protruly',
|
650 |
'PU' => 'PULID',
|
651 |
+
'QH' => 'Q-Touch',
|
652 |
'QB' => 'Q.Bell',
|
653 |
'QI' => 'Qilive',
|
|
|
|
|
654 |
'QM' => 'QMobile',
|
655 |
+
'QT' => 'Qtek',
|
656 |
'QA' => 'Quantum',
|
657 |
'QU' => 'Quechua',
|
658 |
'QO' => 'Qumo',
|
659 |
+
'R2' => 'R-TV',
|
660 |
'RA' => 'Ramos',
|
|
|
|
|
661 |
'R9' => 'Ravoz',
|
662 |
'RZ' => 'Razer',
|
663 |
'RC' => 'RCA Tablets',
|
664 |
+
'2R' => 'Reach',
|
665 |
'RB' => 'Readboy',
|
666 |
+
'RE' => 'Realme',
|
667 |
+
'R8' => 'RED',
|
668 |
+
'RD' => 'Reeder',
|
669 |
'RI' => 'Rikomagic',
|
670 |
+
'RM' => 'RIM',
|
671 |
'RN' => 'Rinno',
|
672 |
+
'RX' => 'Ritmix',
|
673 |
+
'R7' => 'Ritzviva',
|
674 |
'RV' => 'Riviera',
|
|
|
|
|
|
|
|
|
675 |
'RR' => 'Roadrover',
|
676 |
'R1' => 'Rokit',
|
677 |
+
'RK' => 'Roku',
|
678 |
'R3' => 'Rombica',
|
|
|
|
|
|
|
679 |
'R5' => 'Ross&Moor',
|
680 |
+
'RO' => 'Rover',
|
681 |
+
'R6' => 'RoverPad',
|
682 |
+
'RT' => 'RT Project',
|
683 |
'RG' => 'RugGear',
|
684 |
'RU' => 'Runbo',
|
685 |
'RY' => 'Ryte',
|
686 |
+
'X1' => 'Safaricom',
|
687 |
+
'SG' => 'Sagem',
|
688 |
+
'4L' => 'Salora',
|
689 |
'SA' => 'Samsung',
|
690 |
'S0' => 'Sanei',
|
691 |
+
'12' => 'Sansui',
|
692 |
+
'SQ' => 'Santin',
|
693 |
+
'SY' => 'Sanyo',
|
694 |
+
'S9' => 'Savio',
|
695 |
'CZ' => 'Schneider',
|
696 |
'SD' => 'Sega',
|
697 |
+
'9G' => 'Selenga',
|
698 |
+
'SV' => 'Selevision',
|
699 |
'SL' => 'Selfix',
|
700 |
+
'0S' => 'SEMP TCL',
|
|
|
701 |
'S1' => 'Sencor',
|
702 |
+
'SN' => 'Sendo',
|
703 |
+
'01' => 'Senkatel',
|
704 |
+
'S6' => 'Senseit',
|
705 |
+
'EW' => 'Senwa',
|
706 |
'SX' => 'SFR',
|
|
|
707 |
'SH' => 'Sharp',
|
708 |
'7S' => 'Shift Phones',
|
709 |
'RS' => 'Shtrikh-M',
|
710 |
'3S' => 'Shuttle',
|
711 |
+
'13' => 'Sico',
|
712 |
'SI' => 'Siemens',
|
|
|
713 |
'1S' => 'Sigma',
|
714 |
+
'70' => 'Silelis',
|
715 |
+
'SJ' => 'Silent Circle',
|
716 |
+
'10' => 'Simbans',
|
717 |
+
'31' => 'Siragon',
|
718 |
'SW' => 'Sky',
|
719 |
'SK' => 'Skyworth',
|
720 |
+
'14' => 'Smadl',
|
721 |
+
'19' => 'Smailo',
|
722 |
+
'SR' => 'Smart',
|
723 |
+
'80' => 'SMARTEC',
|
724 |
'SC' => 'Smartfren',
|
725 |
+
'S7' => 'Smartisan',
|
726 |
+
'SF' => 'Softbank',
|
727 |
+
'16' => 'Solone',
|
728 |
'OI' => 'Sonim',
|
729 |
+
'SO' => 'Sony',
|
730 |
+
'SE' => 'Sony Ericsson',
|
731 |
'X2' => 'Soundmax',
|
732 |
'8S' => 'Soyes',
|
733 |
+
'FS' => 'SPC',
|
734 |
'6S' => 'Spectrum',
|
735 |
+
'SP' => 'Spice',
|
736 |
+
'QS' => 'SQOOL',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
737 |
'S4' => 'Star',
|
738 |
'OL' => 'Starlight',
|
739 |
+
'18' => 'Starmobile',
|
740 |
+
'2S' => 'Starway',
|
741 |
'SB' => 'STF Mobile',
|
742 |
'S8' => 'STK',
|
|
|
|
|
|
|
743 |
'S2' => 'Stonex',
|
744 |
+
'ST' => 'Storex',
|
745 |
+
'9S' => 'Sugar',
|
746 |
'SZ' => 'Sumvision',
|
747 |
+
'0H' => 'Sunstech',
|
748 |
+
'S3' => 'SunVan',
|
749 |
+
'5S' => 'Sunvell',
|
750 |
+
'SU' => 'SuperSonic',
|
751 |
+
'S5' => 'Supra',
|
752 |
+
'0W' => 'Swipe',
|
753 |
'SS' => 'SWISSMOBILITY',
|
754 |
'1W' => 'Swisstone',
|
755 |
+
'SM' => 'Symphony',
|
756 |
+
'4S' => 'Syrox',
|
757 |
+
'TM' => 'T-Mobile',
|
|
|
|
|
758 |
'TK' => 'Takara',
|
759 |
+
'9N' => 'Tanix',
|
|
|
760 |
'T5' => 'TB Touch',
|
761 |
'TC' => 'TCL',
|
762 |
+
'T0' => 'TD Systems',
|
763 |
+
'TX' => 'TechniSat',
|
764 |
+
'TT' => 'TechnoTrend',
|
765 |
+
'TP' => 'TechPad',
|
766 |
+
'9E' => 'Techwood',
|
767 |
'T7' => 'Teclast',
|
|
|
|
|
|
|
|
|
768 |
'TB' => 'Tecno Mobile',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
769 |
'2L' => 'Tele2',
|
770 |
+
'TL' => 'Telefunken',
|
771 |
+
'TG' => 'Telego',
|
772 |
'T2' => 'Telenor',
|
773 |
+
'TE' => 'Telit',
|
774 |
+
'TD' => 'Tesco',
|
775 |
+
'TA' => 'Tesla',
|
776 |
+
'9T' => 'Tetratab',
|
777 |
+
'TZ' => 'teXet',
|
778 |
+
'T4' => 'ThL',
|
779 |
'TN' => 'Thomson',
|
780 |
+
'O0' => 'Thuraya',
|
781 |
+
'TI' => 'TIANYU',
|
782 |
'8T' => 'Time2',
|
783 |
'TQ' => 'Timovi',
|
784 |
+
'2T' => 'Tinai',
|
785 |
+
'TF' => 'Tinmo',
|
786 |
+
'TH' => 'TiPhone',
|
787 |
'T1' => 'Tolino',
|
788 |
+
'0T' => 'Tone',
|
789 |
+
'TY' => 'Tooky',
|
790 |
'T9' => 'Top House',
|
791 |
'TO' => 'Toplux',
|
792 |
'7T' => 'Torex',
|
|
|
793 |
'TS' => 'Toshiba',
|
794 |
+
'T8' => 'Touchmate',
|
795 |
+
'5R' => 'Transpeed',
|
796 |
'T6' => 'TrekStor',
|
797 |
'T3' => 'Trevi',
|
798 |
+
'TJ' => 'Trifone',
|
799 |
+
'4T' => 'Tronsmart',
|
800 |
+
'11' => 'True',
|
801 |
+
'5C' => 'TTEC',
|
802 |
'TU' => 'Tunisie Telecom',
|
|
|
803 |
'1T' => 'Turbo',
|
804 |
+
'TR' => 'Turbo-X',
|
805 |
'5T' => 'TurboKids',
|
|
|
806 |
'TV' => 'TVC',
|
807 |
'TW' => 'TWM',
|
808 |
'6T' => 'Twoe',
|
809 |
+
'15' => 'Tymes',
|
|
|
810 |
'UC' => 'U.S. Cellular',
|
|
|
|
|
811 |
'UG' => 'Ugoos',
|
812 |
+
'U1' => 'Uhans',
|
813 |
+
'UH' => 'Uhappy',
|
814 |
'UL' => 'Ulefone',
|
815 |
+
'UA' => 'Umax',
|
816 |
+
'UM' => 'UMIDIGI',
|
817 |
+
'UZ' => 'Unihertz',
|
818 |
'UX' => 'Unimax',
|
819 |
+
'US' => 'Uniscope',
|
820 |
'U2' => 'UNIWA',
|
821 |
+
'UO' => 'Unnecto',
|
822 |
'UU' => 'Unonu',
|
823 |
+
'UN' => 'Unowhy',
|
824 |
'UK' => 'UTOK',
|
|
|
825 |
'UT' => 'UTStarcom',
|
826 |
+
'5V' => 'VAIO',
|
827 |
'VA' => 'Vastking',
|
|
|
|
|
828 |
'VN' => 'Venso',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
829 |
'4V' => 'Verico',
|
830 |
+
'V4' => 'Verizon',
|
831 |
+
'VR' => 'Vernee',
|
832 |
+
'VX' => 'Vertex',
|
833 |
+
'VE' => 'Vertu',
|
834 |
'VL' => 'Verykool',
|
835 |
+
'V8' => 'Vesta',
|
836 |
+
'VT' => 'Vestel',
|
837 |
'V6' => 'VGO TEL',
|
838 |
+
'VD' => 'Videocon',
|
839 |
+
'VW' => 'Videoweb',
|
840 |
+
'VS' => 'ViewSonic',
|
841 |
+
'V7' => 'Vinga',
|
842 |
'V3' => 'Vinsoc',
|
843 |
+
'0V' => 'Vipro',
|
844 |
+
'VI' => 'Vitelcom',
|
845 |
+
'8V' => 'Viumee',
|
846 |
+
'V5' => 'Vivax',
|
847 |
+
'VV' => 'Vivo',
|
848 |
+
'VZ' => 'Vizio',
|
849 |
+
'VK' => 'VK Mobile',
|
850 |
+
'V0' => 'VKworld',
|
851 |
+
'VM' => 'Vodacom',
|
852 |
+
'VF' => 'Vodafone',
|
853 |
'V2' => 'Vonino',
|
854 |
'1V' => 'Vontar',
|
855 |
'VG' => 'Vorago',
|
856 |
'2V' => 'Vorke',
|
857 |
'V1' => 'Voto',
|
858 |
'VO' => 'Voxtel',
|
|
|
|
|
|
|
859 |
'VY' => 'Voyo',
|
860 |
+
'VH' => 'Vsmart',
|
861 |
+
'V9' => 'Vsun',
|
862 |
'VU' => 'Vulcan',
|
863 |
+
'3V' => 'VVETIME',
|
864 |
'WA' => 'Walton',
|
|
|
|
|
865 |
'WM' => 'Weimei',
|
866 |
'WE' => 'WellcoM',
|
867 |
+
'WT' => 'Westpoint',
|
868 |
'WY' => 'Wexler',
|
869 |
+
'WP' => 'Wieppo',
|
870 |
'W2' => 'Wigor',
|
871 |
'WI' => 'Wiko',
|
872 |
+
'WF' => 'Wileyfox',
|
873 |
'WS' => 'Winds',
|
874 |
+
'WN' => 'Wink',
|
875 |
+
'9W' => 'Winmax',
|
876 |
+
'W0' => 'Wiseasy',
|
877 |
+
'2W' => 'Wizz',
|
878 |
'WL' => 'Wolder',
|
879 |
'WG' => 'Wolfgang',
|
880 |
'WO' => 'Wonu',
|
881 |
'W1' => 'Woo',
|
|
|
882 |
'WR' => 'Wortmann',
|
883 |
+
'WX' => 'Woxter',
|
884 |
+
'X3' => 'X-BO',
|
885 |
+
'XT' => 'X-TIGI',
|
886 |
'XV' => 'X-View',
|
887 |
+
'X4' => 'X.Vision',
|
888 |
+
'XG' => 'Xgody',
|
889 |
'XL' => 'Xiaolajiao',
|
890 |
+
'XI' => 'Xiaomi',
|
891 |
'XN' => 'Xion',
|
892 |
'XO' => 'Xolo',
|
893 |
'XR' => 'Xoro',
|
894 |
+
'XS' => 'Xshitou',
|
895 |
+
'4X' => 'Xtouch',
|
896 |
'YD' => 'Yandex',
|
897 |
+
'YA' => 'Yarvik',
|
898 |
'Y2' => 'Yes',
|
899 |
'YE' => 'Yezz',
|
900 |
+
'YK' => 'Yoka TV',
|
901 |
+
'YO' => 'Yota',
|
902 |
+
'YT' => 'Ytone',
|
903 |
'Y1' => 'Yu',
|
904 |
'YU' => 'Yuandao',
|
905 |
'YS' => 'Yusun',
|
|
|
|
|
906 |
'YX' => 'Yxtel',
|
907 |
'0Z' => 'Zatec',
|
908 |
+
'PZ' => 'Zebra',
|
909 |
'ZE' => 'Zeemi',
|
910 |
+
'ZN' => 'Zen',
|
911 |
'ZK' => 'Zenek',
|
912 |
+
'ZL' => 'Zentality',
|
913 |
'ZF' => 'Zfiner',
|
|
|
914 |
'ZI' => 'Zidoo',
|
915 |
'ZX' => 'Ziox',
|
916 |
+
'ZO' => 'Zonda',
|
917 |
'ZP' => 'Zopo',
|
918 |
'ZT' => 'ZTE',
|
919 |
'ZU' => 'Zuum',
|
|
|
920 |
'ZY' => 'Zync',
|
921 |
'ZQ' => 'ZYQ',
|
922 |
+
'OW' => 'öwn',
|
|
|
|
|
|
|
|
|
923 |
// legacy brands, might be removed in future versions
|
924 |
'WB' => 'Web TV',
|
925 |
'XX' => 'Unknown',
|
app/vendor/matomo/device-detector/Parser/OperatingSystem.php
CHANGED
@@ -51,11 +51,14 @@ class OperatingSystem extends AbstractParser
|
|
51 |
'COS' => 'Chrome OS',
|
52 |
'CYN' => 'CyanogenMod',
|
53 |
'DEB' => 'Debian',
|
|
|
54 |
'DFB' => 'DragonFly',
|
55 |
'FED' => 'Fedora',
|
56 |
'FOS' => 'Firefox OS',
|
57 |
'FIR' => 'Fire OS',
|
|
|
58 |
'BSD' => 'FreeBSD',
|
|
|
59 |
'GNT' => 'Gentoo',
|
60 |
'GTV' => 'Google TV',
|
61 |
'HPX' => 'HP-UX',
|
@@ -95,6 +98,7 @@ class OperatingSystem extends AbstractParser
|
|
95 |
'SAB' => 'Sabayon',
|
96 |
'SSE' => 'SUSE',
|
97 |
'SAF' => 'Sailfish OS',
|
|
|
98 |
'SLW' => 'Slackware',
|
99 |
'SOS' => 'Solaris',
|
100 |
'SYL' => 'Syllable',
|
@@ -107,7 +111,9 @@ class OperatingSystem extends AbstractParser
|
|
107 |
'TIZ' => 'Tizen',
|
108 |
'TOS' => 'TmaxOS',
|
109 |
'UBT' => 'Ubuntu',
|
|
|
110 |
'WTV' => 'WebTV',
|
|
|
111 |
'WIN' => 'Windows',
|
112 |
'WCE' => 'Windows CE',
|
113 |
'WIO' => 'Windows IoT',
|
@@ -134,17 +140,17 @@ class OperatingSystem extends AbstractParser
|
|
134 |
'BlackBerry' => ['BLB', 'QNX'],
|
135 |
'Brew' => ['BMP'],
|
136 |
'BeOS' => ['BEO', 'HAI'],
|
137 |
-
'Chrome OS' => ['COS'],
|
138 |
'Firefox OS' => ['FOS', 'KOS'],
|
139 |
'Gaming Console' => ['WII', 'PS3'],
|
140 |
'Google TV' => ['GTV'],
|
141 |
'IBM' => ['OS2'],
|
142 |
-
'iOS' => ['IOS'],
|
143 |
'RISC OS' => ['ROS'],
|
144 |
'GNU/Linux' => [
|
145 |
'LIN', 'ARL', 'DEB', 'KNO', 'MIN', 'UBT', 'KBT', 'XBT', 'LBT', 'FED',
|
146 |
'RHT', 'VLN', 'MDR', 'GNT', 'SAB', 'SLW', 'SSE', 'CES', 'BTR', 'SAF',
|
147 |
-
'ORD', 'TOS', 'RSO',
|
148 |
],
|
149 |
'Mac' => ['MAC'],
|
150 |
'Mobile Gaming Console' => ['PSP', 'NDS', 'XBX'],
|
@@ -155,6 +161,7 @@ class OperatingSystem extends AbstractParser
|
|
155 |
'WebTV' => ['WTV'],
|
156 |
'Windows' => ['WIN'],
|
157 |
'Windows Mobile' => ['WPH', 'WMO', 'WCE', 'WRT', 'WIO'],
|
|
|
158 |
];
|
159 |
|
160 |
/**
|
@@ -268,10 +275,18 @@ class OperatingSystem extends AbstractParser
|
|
268 |
*/
|
269 |
protected function parsePlatform(): string
|
270 |
{
|
271 |
-
if ($this->matchUserAgent('arm')) {
|
272 |
return 'ARM';
|
273 |
}
|
274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
if ($this->matchUserAgent('WOW64|x64|win64|amd64|x86_64')) {
|
276 |
return 'x64';
|
277 |
}
|
51 |
'COS' => 'Chrome OS',
|
52 |
'CYN' => 'CyanogenMod',
|
53 |
'DEB' => 'Debian',
|
54 |
+
'DEE' => 'Deepin',
|
55 |
'DFB' => 'DragonFly',
|
56 |
'FED' => 'Fedora',
|
57 |
'FOS' => 'Firefox OS',
|
58 |
'FIR' => 'Fire OS',
|
59 |
+
'FRE' => 'Freebox',
|
60 |
'BSD' => 'FreeBSD',
|
61 |
+
'FYD' => 'FydeOS',
|
62 |
'GNT' => 'Gentoo',
|
63 |
'GTV' => 'Google TV',
|
64 |
'HPX' => 'HP-UX',
|
98 |
'SAB' => 'Sabayon',
|
99 |
'SSE' => 'SUSE',
|
100 |
'SAF' => 'Sailfish OS',
|
101 |
+
'SEE' => 'SeewoOS',
|
102 |
'SLW' => 'Slackware',
|
103 |
'SOS' => 'Solaris',
|
104 |
'SYL' => 'Syllable',
|
111 |
'TIZ' => 'Tizen',
|
112 |
'TOS' => 'TmaxOS',
|
113 |
'UBT' => 'Ubuntu',
|
114 |
+
'WAS' => 'watchOS',
|
115 |
'WTV' => 'WebTV',
|
116 |
+
'WHS' => 'Whale OS',
|
117 |
'WIN' => 'Windows',
|
118 |
'WCE' => 'Windows CE',
|
119 |
'WIO' => 'Windows IoT',
|
140 |
'BlackBerry' => ['BLB', 'QNX'],
|
141 |
'Brew' => ['BMP'],
|
142 |
'BeOS' => ['BEO', 'HAI'],
|
143 |
+
'Chrome OS' => ['COS', 'FYD', 'SEE'],
|
144 |
'Firefox OS' => ['FOS', 'KOS'],
|
145 |
'Gaming Console' => ['WII', 'PS3'],
|
146 |
'Google TV' => ['GTV'],
|
147 |
'IBM' => ['OS2'],
|
148 |
+
'iOS' => ['IOS', 'WAS'],
|
149 |
'RISC OS' => ['ROS'],
|
150 |
'GNU/Linux' => [
|
151 |
'LIN', 'ARL', 'DEB', 'KNO', 'MIN', 'UBT', 'KBT', 'XBT', 'LBT', 'FED',
|
152 |
'RHT', 'VLN', 'MDR', 'GNT', 'SAB', 'SLW', 'SSE', 'CES', 'BTR', 'SAF',
|
153 |
+
'ORD', 'TOS', 'RSO', 'DEE', 'FRE',
|
154 |
],
|
155 |
'Mac' => ['MAC'],
|
156 |
'Mobile Gaming Console' => ['PSP', 'NDS', 'XBX'],
|
161 |
'WebTV' => ['WTV'],
|
162 |
'Windows' => ['WIN'],
|
163 |
'Windows Mobile' => ['WPH', 'WMO', 'WCE', 'WRT', 'WIO'],
|
164 |
+
'Other Smart TV' => ['WHS'],
|
165 |
];
|
166 |
|
167 |
/**
|
275 |
*/
|
276 |
protected function parsePlatform(): string
|
277 |
{
|
278 |
+
if ($this->matchUserAgent('arm|aarch64|Watch ?OS|Watch1,[12]')) {
|
279 |
return 'ARM';
|
280 |
}
|
281 |
|
282 |
+
if ($this->matchUserAgent('mips')) {
|
283 |
+
return 'MIPS';
|
284 |
+
}
|
285 |
+
|
286 |
+
if ($this->matchUserAgent('sh4')) {
|
287 |
+
return 'SuperH';
|
288 |
+
}
|
289 |
+
|
290 |
if ($this->matchUserAgent('WOW64|x64|win64|amd64|x86_64')) {
|
291 |
return 'x64';
|
292 |
}
|
app/vendor/matomo/device-detector/README.md
CHANGED
@@ -8,7 +8,10 @@ DeviceDetector
|
|
8 |
|
9 |
## Code Status
|
10 |
|
11 |
-
|
|
|
|
|
|
|
12 |
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/matomo-org/device-detector.svg)](http://isitmaintained.com/project/matomo-org/device-detector "Average time to resolve an issue")
|
13 |
[![Percentage of issues still open](http://isitmaintained.com/badge/open/matomo-org/device-detector.svg)](http://isitmaintained.com/project/matomo-org/device-detector "Percentage of issues still open")
|
14 |
|
@@ -203,15 +206,15 @@ There are already a few ports of this tool to other languages:
|
|
203 |
|
204 |
The lists below are auto generated and updated from time to time. Some of them might not be complete.
|
205 |
|
206 |
-
*Last update:
|
207 |
|
208 |
### List of detected operating systems:
|
209 |
|
210 |
-
AIX, Android, AmigaOS, Apple TV, Arch Linux, BackTrack, Bada, BeOS, BlackBerry OS, BlackBerry Tablet OS, Brew, CentOS, Chrome OS, CyanogenMod, Debian, DragonFly, Fedora, Firefox OS, Fire OS, FreeBSD, Gentoo, Google TV, HP-UX, Haiku OS, IRIX, Inferno, KaiOS, Knoppix, Kubuntu, GNU/Linux, Lubuntu, VectorLinux, Mac, Maemo, Mandriva, MeeGo, MocorDroid, Mint, MildWild, MorphOS, NetBSD, MTK / Nucleus, MRE, Nintendo, Nintendo Mobile, OS/2, OSF1, OpenBSD, Ordissimo, PlayStation Portable, PlayStation, Red Hat, RISC OS, Rosa, Remix OS, RazoDroiD, Sabayon, SUSE, Sailfish OS, Slackware, Solaris, Syllable, Symbian, Symbian OS, Symbian OS Series 40, Symbian OS Series 60, Symbian^3, ThreadX, Tizen, TmaxOS, Ubuntu, WebTV, Windows, Windows CE, Windows IoT, Windows Mobile, Windows Phone, Windows RT, Xbox, Xubuntu, YunOs, iOS, palmOS, webOS
|
211 |
|
212 |
### List of detected browsers:
|
213 |
|
214 |
-
115 Browser, 2345 Browser, 360 Phone Browser, 360 Browser, Avant Browser, ABrowse, ANT Fresco, ANTGalio, Aloha Browser, Aloha Browser Lite, Amaya, Amigo, Android Browser, AOL Desktop, AOL Shield, Arora, Arctic Fox, Amiga Voyager, Amiga Aweb, Atom, Atomic Web Browser, Avast Secure Browser, AVG Secure Browser, Beaker Browser, Beamrise, BlackBerry Browser, Baidu Browser, Baidu Spark, Basilisk, Beonex, BlackHawk, Bunjalloo, B-Line, Blue Browser, Borealis Navigator, Brave, BriskBard, BrowseX, Browzar, Camino, CCleaner, Centaury, Coc Coc, Colibri, Comodo Dragon, Coast, Charon, CM Browser, Chrome Frame, Headless Chrome, Chrome, Chrome Mobile iOS, Conkeror, Chrome Mobile, CoolNovo, CometBird, COS Browser, ChromePlus, Chromium, Cyberfox, Cheshire, Crusta, Crazy Browser, Cunaguaro, Chrome Webview, dbrowser, Deepnet Explorer, Delta Browser, Dolphin, Dorado, Dooble, Dillo, DuckDuckGo Privacy Browser, Ecosia, Epic, Elinks, Element Browser, Elements Browser, eZ Browser, EUI Browser, GNOME Web, Espial TV Browser, Falkon, Faux Browser, Firefox Mobile iOS, Firebird, Fluid, Fennec, Firefox, Firefox Focus, Firefox Reality, Firefox Rocket, Flock, Firefox Mobile, Fireweb, Fireweb Navigator, FreeU, Galeon, Ghostery Privacy Browser, Glass Browser, Google Earth, GOG Galaxy, Hawk Turbo Browser, hola! Browser, HotJava, Huawei Browser, IBrowse, iCab, iCab Mobile, Iridium, Iron Mobile, IceCat, IceDragon, Isivioo, Iceweasel, Internet Explorer, IE Mobile, Iron, Japan Browser, Jasmine, Jig Browser, Jig Browser Plus, Jio Browser, K.Browser, Kindle Browser, K-meleon, Konqueror, Kapiko, Kinza, Kiwi, Kylo, Kazehakase, Cheetah Browser, LieBaoFast, LG Browser, Light, Links, Lovense Browser, LuaKit, Lulumi, Lunascape, Lunascape Lite, Lynx, mCent, MicroB, NCSA Mosaic, Meizu Browser, Mercury, Mobile Safari, Midori, Mobicip, MIUI Browser, Mobile Silk, Minimo, Mint Browser, Maxthon, MxNitro, Mypal, Monument Browser, MAUI WAP Browser, NFS Browser, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, Nox Browser, NetSurf, NetFront, NetFront Life, NetPositive, Netscape, NTENT Browser, Oculus Browser, Opera Mini iOS, Obigo, Odyssey Web Browser, Off By One, OhHai Browser, ONE Browser, Opera GX, Opera Neon, Opera Devices, Opera Mini, Opera Mobile, Opera, Opera Next, Opera Touch, Ordissimo, Oregano, Origin In-Game Overlay, Origyn Web Browser, Openwave Mobile Browser, OmniWeb, Otter Browser, Palm Blazer, Pale Moon, Polypane, Oppo Browser, Palm Pre, Puffin, Palm WebPro, Palmscape, Phoenix, Phoenix Browser, Polaris, Polarity, PrivacyWall, Microsoft Edge, QQ Browser Mini, QQ Browser, Qutebrowser, Quark, QupZilla, Qwant Mobile, QtWebEngine, Realme Browser, Rekonq, RockMelt, Samsung Browser, Sailfish Browser, SEMC-Browser, Sogou Explorer, Safari, Safe Exam Browser, SalamWeb, Shiira, SimpleBrowser, Sizzy, Skyfire, Seraphic Sraf, Sleipnir, Slimjet, 7Star, Smart Lenovo Browser, Snowshoe, Sogou Mobile Browser, Splash, Sputnik Browser, Sunrise, SuperBird, Super Fast Browser, surf, Stargon, START Internet Browser, Steam In-Game Overlay, Streamy, Swiftfox, Seznam Browser, t-online.de Browser, Tao Browser, TenFourFox, Tenta Browser, Tizen Browser, Tungsten, ToGate, TweakStyle, TV Bro, UBrowser, UC Browser, UC Browser Mini, UC Browser Turbo, Uzbl, Vivaldi, vivo Browser, Vision Mobile Browser, VMware AirWatch, Wear Internet Browser, Web Explorer, WebPositive, Waterfox, Whale Browser, wOSBrowser, WeTab Browser, Yahoo! Japan Browser, Yandex Browser, Yandex Browser Lite, Yaani Browser, Yolo Browser, Xiino, Xvast, Zvu
|
215 |
|
216 |
### List of detected browser engines:
|
217 |
|
@@ -227,7 +230,7 @@ Audacious, Banshee, Boxee, Clementine, Deezer, FlyCast, Foobar2000, Google Podca
|
|
227 |
|
228 |
### List of detected mobile apps:
|
229 |
|
230 |
-
AndroidDownloadManager, AntennaPod, Apple News, Baidu Box App, BeyondPod, BingWebApp, bPod, CastBox, Castro, Castro 2, CrosswalkApp, DingTalk, DoggCatcher, douban App, Facebook, Facebook Messenger, FeedR, Flipboard App, Google Go, Google Play Newsstand, Google Plus, Google Search App, HeyTapBrowser, iCatcher, Instacast, Instagram App, Line, LinkedIn, NewsArticle App, Overcast, Pinterest, Player FM, Pocket Casts, Podcast & Radio Addict, Podcast Republic, Podcasts, Podcat, Podcatcher Deluxe, Podkicker, Roblox, RSSRadio, Sina Weibo, Siri, Snapchat, SogouSearch App, tieba, TopBuzz, Twitter, U-Cursos, UnityPlayer, Viber, WeChat, WhatsApp, Yahoo! Japan, Yelp Mobile, YouTube and *mobile apps using [AFNetworking](https://github.com/AFNetworking/AFNetworking)*
|
231 |
|
232 |
### List of detected PIMs (personal information manager):
|
233 |
|
@@ -239,8 +242,8 @@ Akregator, Apple PubSub, BashPodder, Breaker, Downcast, FeedDemon, Feeddler RSS
|
|
239 |
|
240 |
### List of brands with detected devices:
|
241 |
|
242 |
-
2E, 3Q, 4Good, 360, 8848, A1, Accent, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Alcor, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, altron, Amazon, AMGOO, Amigoo, Amoi, Anry, ANS, Aoson, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Asano, Ask, Assistant, Asus, AT&T, Atom, Audiovox, Avenzo, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes & Noble, BBK, BB Mobile, BDF, Becker, Beeline, Beelink, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, BIHEE, Billion, Bird, Bitel, Bitmore, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, Bobarry, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, Cloudfone, Cloudpad, Clout, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Conquest, Contixo, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datawind, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, Divisat, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Element, Elenberg, Elephone, Eltex, Energizer, Energy Sistem, Enot, Ergo, Ericsson, Ericy, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, Fengxiang, Fero, FiGO, FinePower, FireFly Mobile, Fly, FNB, Fondi, Fonos, FORME, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, GEOFOX, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, Gome, GoMobile, Google, Goophone, Gradiente, Grape, Gree, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Highscreen, Hipstreet, Hisense, Hoffmann, Hometech, Homtom, Hoozo, Hosin, Hotwav, How, HP, HTC, Huadoo, Huawei, Humax, Hyrican, Hyundai, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iDroid, iGet, iHunt, Ikea, iKoMo, iLA, iLife, iMars, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, Invin, iOcean, iPro, IQM, Irbis, Iris, iRola, iRulu, iTel, iTruck, iVA, iView, iVooMi, iZotron, JAY-Tech, JFone, Jiayu, Jinga, JKL, Jolla, Just5, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler & Strauss, Keneksi, Kenxinda, Kiano, Kingsun, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Kooper, KOPO, Koridy, KRONO, Krüger&Matz, KT-Tech, Kuliao, Kumai, Kyocera, Kzen, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Lingwin, Loewe, Logic, Logicom, Lumigon, Lumus, Luna, LYF, M.T.T., M4tel, Macoox, Majestic, Mann, Manta Multimedia, Masstel, Matrix, Maxcom, Maxtron, MAXVI, Maxwest, Maze, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mio, Miray, Mito, Mitsubishi, MIXC, MiXzo, MLLED, MLS, Mobicel, Mobiistar, Mobiola, Mobistel, Mobo, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, Multilaser, MYFON, MyPhone, Myria, Mystery, MyTab, MyWigo, National, Navitech, Navon, NEC, Neffos, Neomi, Netgear, NeuImage, Newgen, Newland, Newman, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nomu, Nos, Nous, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Okapia, Onda, OnePlus, Onix, ONN, Openbox, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Phicomm, Philco, Philips, Phonemax, phoneOne, Pioneer, Pixelphone, Pixus, Ployer, Plum, PocketBook, POCO, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, Positivo BGH, PPTV, Prestigio, Primepad, Primux, Prixton, Proline, ProScan, Protruly, PULID, Q-Touch, Q.Bell, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, Ravoz, Razer, RCA Tablets, Readboy, Realme, RED, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Ryte, Safaricom, Sagem, Samsung, Sanei, Santin, Sanyo, Savio, Schneider, Sega, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, SFR, Sharp, Shift Phones, Shtrikh-M, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Sony Ericsson, Soundmax, Soyes, Spectrum, Spice, SQOOL, Star, Starlight, Starway, STF Mobile, STK, Stonex, Storex, Sugar, Sumvision, Sunstech, SunVan, Sunvell, SuperSonic, Supra, Swipe, SWISSMOBILITY, Swisstone, Symphony, Syrox, T-Mobile, Takara, TB Touch, TCL, TD Systems, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Tele2, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, TIANYU, Time2, Timovi, Tinai, Tinmo, TiPhone, Tolino, Tone, Tooky, Top House, Toplux, Torex, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Tronsmart, True, TTEC, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TVC, TWM, Twoe, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, Vastking, Venso, Verico, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Vitelcom, Vivax, Vivo, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, Web TV, Weimei, WellcoM, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Wiseasy, Wolder, Wolfgang, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Yandex, Yarvik, Yes, Yezz, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zatec, Zeemi, Zen, Zenek, Zfiner, Zidoo, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn
|
243 |
|
244 |
### List of detected bots:
|
245 |
|
246 |
-
360Spider, Aboundexbot, Acoon, AddThis.com, ADMantX, ADmantX Service Fetcher, aHrefs Bot, Alexa Crawler, Alexa Site Audit, Amazon Route53 Health Check, Amorank Spider, Analytics SEO Crawler, ApacheBench, Applebot, Arachni, archive.org bot, Ask Jeeves, AspiegelBot, Awario, Awario, Backlink-Check.de, BacklinkCrawler, Baidu Spider, Barkrowler, BazQux Reader, BingBot, BitlyBot, Blekkobot, BLEXBot Crawler, Bloglovin, Blogtrottr, BoardReader, BoardReader Blog Indexer, Bountii Bot, BrandVerity, Browsershots, BUbiNG, Buck, Butterfly Robot, Bytespider, CareerBot, Castro 2, Catchpoint, CATExplorador, ccBot crawler, Charlotte, Cliqzbot, CloudFlare Always Online, CloudFlare AMP Fetcher, Collectd, CommaFeed, CSS Certificate Spider, Cốc Cốc Bot, Datadog Agent, Datanyze, Dataprovider, Daum, Dazoobot, Discobot, Domain Re-Animator Bot, Domains Project, DotBot, DuckDuckGo Bot, Easou Spider, eCairn-Grabber, EMail Exractor, EmailWolf, Embedly, evc-batch, ExaBot, ExactSeek Crawler, Ezooms, eZ Publish Link Validator, Facebook External Hit, Feedbin, FeedBurner, Feedly, Feedspot, Feed Wrangler, Fever, Findxbot, Flipboard, FreshRSS, Generic Bot, Generic Bot, Genieo Web filter, Gigablast, Gigabot, Gluten Free Crawler, Gmail Image Proxy, Goo, Googlebot, Google Cloud Scheduler, Google Favicon, Google PageSpeed Insights, Google Partner Monitoring, Google Search Console, Google Stackdriver Monitoring, Google Structured Data Testing Tool, Grammarly, Grapeshot, GTmetrix, Heritrix, Heureka Feed, HTTPMon, HubPages, HubSpot, ICC-Crawler, ichiro, IDG/IT, IIS Site Analysis, Inktomi Slurp, inoreader, IP-Guide Crawler, IPS Agent, Kaspersky, Kouio, Larbin web crawler, LCC, Let's Encrypt Validation, Lighthouse, Linkdex Bot, LinkedIn Bot, LTX71, Lycos, Magpie-Crawler, MagpieRSS, Mail.Ru Bot, masscan, Mastodon Bot, Meanpath Bot, MetaInspector, MetaJobBot, Mixrank Bot, MJ12 Bot, Mnogosearch, MojeekBot, Monitor.Us, Munin, Nagios check_http, NalezenCzBot, nbertaupete95, Netcraft Survey Bot, netEstate, NetLyzer FastProbe, NetResearchServer, Netvibes, NewsBlur, NewsGator, NLCrawler, Nmap, Nutch-based Bot, Nuzzel, oBot, Octopus, Omgili bot, Openindex Spider, OpenLinkProfiler, OpenWebSpider, Orange Bot, Outbrain, PagePeeker, PaperLiBot, Petal Bot, Phantomas, PHP Server Monitor, Picsearch bot, Pingdom Bot, Pinterest, PocketParser, Pompos, PritTorrent, PRTG Network Monitor, QuerySeekerSpider, Quora Link Preview, Qwantify, Rainmeter, RamblerMail Image Proxy, Reddit Bot, Riddler, Robozilla, Rogerbot, ROI Hunter, RSSRadio Bot, SafeDNSBot, Scooter, ScoutJet, Scrapy, Screaming Frog SEO Spider, ScreenerBot, Semantic Scholar Bot, Semrush Bot, Sensika Bot, Sentry Bot, Seobility, SEOENGBot, SEOkicks-Robot, Seoscanners.net, Serendeputy Bot, Server Density, Seznam Bot, Seznam Email Proxy, Seznam Zbozi.cz, ShopAlike, Shopify Partner, ShopWiki, SilverReader, SimplePie, SISTRIX Crawler, SISTRIX Optimizer, Site24x7 Website Monitoring, Siteimprove, SiteSucker, Sixy.ch, Skype URI Preview, Slackbot, SMTBot, Snapchat Proxy, Sogou Spider, Soso Spider, Sparkler, Speedy, Spinn3r, Spotify, Sprinklr, Sputnik Bot, sqlmap, SSL Labs, Startpagina Linkchecker, StatusCake, Superfeedr Bot, Survey Bot, Tarmot Gezgin, TelegramBot, The Knowledge AI, theoldreader, TinEye Crawler, Tiny Tiny RSS, TLSProbe, TraceMyFile, Trendiction Bot, TurnitinBot, TweetedTimes Bot, Tweetmeme Bot, Twingly Recon, Twitterbot, UkrNet Mail Proxy, UniversalFeedParser, Uptimebot, Uptime Robot, URLAppendBot, Vagabondo, Velen Public Web Crawler, Vercel Bot, Visual Site Mapper Crawler, VK Share Button, W3C CSS Validator, W3C I18N Checker, W3C Link Checker, W3C Markup Validation Service, W3C MobileOK Checker, W3C Unified Validator, Wappalyzer, WebbCrawler, Weborama, WebPageTest, WebSitePulse, WebThumbnail, WeSEE:Search, WikiDo, Willow Internet Crawler, WooRank, WordPress, Wotbox, XenForo, YaCy, Yahoo! Cache System, Yahoo! Japan BRW, Yahoo! Link Preview, Yahoo! Slurp, Yahoo Gemini, Yandex Bot, Yeti/Naverbot, Yottaa Site Monitor, Youdao Bot, Yourls, Yunyun Bot, Zao, Ze List, zgrab, Zookabot, ZumBot
|
8 |
|
9 |
## Code Status
|
10 |
|
11 |
+
![PHPUnit](https://github.com/matomo-org/device-detector/workflows/PHPUnit/badge.svg?branch=master)
|
12 |
+
![PHPStan](https://github.com/matomo-org/device-detector/workflows/PHPStan%20check/badge.svg?branch=master)
|
13 |
+
![PHPCS](https://github.com/matomo-org/device-detector/workflows/PHPCS%20check/badge.svg?branch=master)
|
14 |
+
![YAML Lint](https://github.com/matomo-org/device-detector/workflows/YAML%20Lint/badge.svg?branch=master)
|
15 |
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/matomo-org/device-detector.svg)](http://isitmaintained.com/project/matomo-org/device-detector "Average time to resolve an issue")
|
16 |
[![Percentage of issues still open](http://isitmaintained.com/badge/open/matomo-org/device-detector.svg)](http://isitmaintained.com/project/matomo-org/device-detector "Percentage of issues still open")
|
17 |
|
206 |
|
207 |
The lists below are auto generated and updated from time to time. Some of them might not be complete.
|
208 |
|
209 |
+
*Last update: 2021/01/08*
|
210 |
|
211 |
### List of detected operating systems:
|
212 |
|
213 |
+
AIX, Android, AmigaOS, Apple TV, Arch Linux, BackTrack, Bada, BeOS, BlackBerry OS, BlackBerry Tablet OS, Brew, CentOS, Chrome OS, CyanogenMod, Debian, Deepin, DragonFly, Fedora, Firefox OS, Fire OS, Freebox, FreeBSD, FydeOS, Gentoo, Google TV, HP-UX, Haiku OS, IRIX, Inferno, KaiOS, Knoppix, Kubuntu, GNU/Linux, Lubuntu, VectorLinux, Mac, Maemo, Mandriva, MeeGo, MocorDroid, Mint, MildWild, MorphOS, NetBSD, MTK / Nucleus, MRE, Nintendo, Nintendo Mobile, OS/2, OSF1, OpenBSD, Ordissimo, PlayStation Portable, PlayStation, Red Hat, RISC OS, Rosa, Remix OS, RazoDroiD, Sabayon, SUSE, Sailfish OS, SeewoOS, Slackware, Solaris, Syllable, Symbian, Symbian OS, Symbian OS Series 40, Symbian OS Series 60, Symbian^3, ThreadX, Tizen, TmaxOS, Ubuntu, watchOS, WebTV, Whale OS, Windows, Windows CE, Windows IoT, Windows Mobile, Windows Phone, Windows RT, Xbox, Xubuntu, YunOs, iOS, palmOS, webOS
|
214 |
|
215 |
### List of detected browsers:
|
216 |
|
217 |
+
115 Browser, 2345 Browser, 360 Phone Browser, 360 Browser, Avant Browser, ABrowse, ANT Fresco, ANTGalio, Aloha Browser, Aloha Browser Lite, Amaya, Amigo, Android Browser, AOL Desktop, AOL Shield, Arora, Arctic Fox, Amiga Voyager, Amiga Aweb, Atom, Atomic Web Browser, Avast Secure Browser, AVG Secure Browser, Beaker Browser, Beamrise, BlackBerry Browser, Baidu Browser, Baidu Spark, Basilisk, Beonex, BlackHawk, Bunjalloo, B-Line, Blue Browser, Borealis Navigator, Brave, BriskBard, BrowseX, Browzar, Camino, CCleaner, Centaury, Coc Coc, Colibri, Comodo Dragon, Coast, Charon, CM Browser, Chrome Frame, Headless Chrome, Chrome, Chrome Mobile iOS, Conkeror, Chrome Mobile, CoolNovo, CometBird, COS Browser, Chim Lac, ChromePlus, Chromium, Cyberfox, Cheshire, Crusta, Crazy Browser, Cunaguaro, Chrome Webview, dbrowser, Deepnet Explorer, Delta Browser, Dolphin, Dorado, Dooble, Dillo, DuckDuckGo Privacy Browser, Ecosia, Epic, Elinks, Element Browser, Elements Browser, eZ Browser, EUI Browser, GNOME Web, Espial TV Browser, Falkon, Faux Browser, Firefox Mobile iOS, Firebird, Fluid, Fennec, Firefox, Firefox Focus, Firefox Reality, Firefox Rocket, Flock, Firefox Mobile, Fireweb, Fireweb Navigator, FreeU, Galeon, Ghostery Privacy Browser, Glass Browser, Google Earth, GOG Galaxy, Hawk Turbo Browser, hola! Browser, HotJava, Huawei Browser, IBrowse, iCab, iCab Mobile, Iridium, Iron Mobile, IceCat, IceDragon, Isivioo, Iceweasel, Internet Explorer, IE Mobile, Iron, Japan Browser, Jasmine, Jig Browser, Jig Browser Plus, Jio Browser, K.Browser, Kindle Browser, K-meleon, Konqueror, Kapiko, Kinza, Kiwi, Kode Browser, Kylo, Kazehakase, Cheetah Browser, LieBaoFast, LG Browser, Light, Links, Lovense Browser, LuaKit, Lulumi, Lunascape, Lunascape Lite, Lynx, mCent, MicroB, NCSA Mosaic, Meizu Browser, Mercury, Mobile Safari, Midori, Mobicip, MIUI Browser, Mobile Silk, Minimo, Mint Browser, Maxthon, MxNitro, Mypal, Monument Browser, MAUI WAP Browser, Navigateur Web, NFS Browser, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, Nox Browser, NetSurf, NetFront, NetFront Life, NetPositive, Netscape, NTENT Browser, Oculus Browser, Opera Mini iOS, Obigo, Odin, Odyssey Web Browser, Off By One, OhHai Browser, ONE Browser, Opera GX, Opera Neon, Opera Devices, Opera Mini, Opera Mobile, Opera, Opera Next, Opera Touch, Ordissimo, Oregano, Origin In-Game Overlay, Origyn Web Browser, Openwave Mobile Browser, OmniWeb, Otter Browser, Palm Blazer, Pale Moon, Polypane, Oppo Browser, Palm Pre, Puffin, Palm WebPro, Palmscape, Phoenix, Phoenix Browser, PlayFree Browser, Polaris, Polarity, PrivacyWall, Microsoft Edge, QQ Browser Mini, QQ Browser, Qutebrowser, Quark, QupZilla, Qwant Mobile, QtWebEngine, Realme Browser, Rekonq, RockMelt, Samsung Browser, Sailfish Browser, Seewo Browser, SEMC-Browser, Sogou Explorer, Safari, Safe Exam Browser, SalamWeb, SFive, Shiira, SimpleBrowser, Sizzy, Skyfire, Seraphic Sraf, Sleipnir, Slimjet, 7Star, Smart Lenovo Browser, Snowshoe, Sogou Mobile Browser, Splash, Sputnik Browser, Sunrise, SuperBird, Super Fast Browser, surf, Stargon, START Internet Browser, Steam In-Game Overlay, Streamy, Swiftfox, Seznam Browser, T-Browser, t-online.de Browser, Tao Browser, TenFourFox, Tenta Browser, Tizen Browser, Tungsten, ToGate, TweakStyle, TV Bro, UBrowser, UC Browser, UC Browser Mini, UC Browser Turbo, UR Browser, Uzbl, Vivaldi, vivo Browser, Vision Mobile Browser, VMware AirWatch, Wear Internet Browser, Web Explorer, WebPositive, Waterfox, Whale Browser, wOSBrowser, WeTab Browser, Yahoo! Japan Browser, Yandex Browser, Yandex Browser Lite, Yaani Browser, Yolo Browser, Xiino, Xvast, Zvu
|
218 |
|
219 |
### List of detected browser engines:
|
220 |
|
230 |
|
231 |
### List of detected mobile apps:
|
232 |
|
233 |
+
AndroidDownloadManager, AntennaPod, Apple News, Baidu Box App, BeyondPod, BingWebApp, bPod, CastBox, Castro, Castro 2, CrosswalkApp, DingTalk, DoggCatcher, douban App, Facebook, Facebook Messenger, FeedR, Flipboard App, Google Go, Google Play Newsstand, Google Plus, Google Search App, HeyTapBrowser, iCatcher, Instacast, Instagram App, Instapaper, Keeper Password Manager, Kik, Line, LinkedIn, NewsArticle App, Overcast, Pinterest, Player FM, Pocket Casts, Podcast & Radio Addict, Podcast Republic, Podcasts, Podcat, Podcatcher Deluxe, Podkicker, Roblox, RSSRadio, Sina Weibo, Siri, Skyeng Teachers, Snapchat, SogouSearch App, tieba, TopBuzz, Twitter, U-Cursos, UnityPlayer, Viber, WeChat, WeChat Share Extension, WhatsApp, Yahoo! Japan, Yelp Mobile, YouTube and *mobile apps using [AFNetworking](https://github.com/AFNetworking/AFNetworking)*
|
234 |
|
235 |
### List of detected PIMs (personal information manager):
|
236 |
|
242 |
|
243 |
### List of brands with detected devices:
|
244 |
|
245 |
+
2E, 3Q, 4Good, 4ife, 360, 8848, A1, Accent, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Alcor, ALDI SÜD, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, Altice, altron, Amazon, AMGOO, Amigoo, Amoi, Andowl, Anry, ANS, Aoson, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Artizlee, Asano, Asanzo, Ask, Assistant, Asus, AT&T, Atom, Audiovox, Avenzo, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes & Noble, BBK, BB Mobile, BDF, Becker, Beeline, Beelink, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, Bigben, BIHEE, Billion, BioRugged, Bird, Bitel, Bitmore, Bkav, Black Bear, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluedot, Bluegood, Bluewave, Bmobile, Bobarry, bogo, Boway, bq, Brandt, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celcus, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, Cloudfone, Cloudpad, Clout, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Conquest, Contixo, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datawind, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digihome, Digiland, Digma, Diva, Divisat, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, ELARI, Element, Elenberg, Elephone, Eltex, Energizer, Energy Sistem, Enot, Epik One, Ergo, Ericsson, Ericy, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, FarEasTone, Fengxiang, Fero, FiGO, FinePower, Finlux, FireFly Mobile, Fly, FNB, Fondi, Fonos, FORME, Forstar, Fortis, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, GEOFOX, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, Gome, GoMobile, Google, Goophone, Gradiente, Grape, Gree, Grundig, Hafury, Haier, HannSpree, Hardkernel, Hasee, Helio, Hezire, Hi-Level, Highscreen, Hipstreet, Hisense, Hitachi, Hoffmann, Hometech, Homtom, Hoozo, Hosin, Hotel, Hotwav, How, HP, HTC, Huadoo, Huawei, Humax, Hurricane, Hyrican, Hyundai, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iDroid, iGet, iHunt, Ikea, iKoMo, iLA, iLife, iMars, IMO Mobile, Impression, Inco, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, Invin, iOcean, iPro, IQM, Irbis, Iris, iRola, iRulu, iSWAG, iTel, iTruck, iVA, iView, iVooMi, iZotron, JAY-Tech, JFone, Jiayu, Jinga, JKL, Jolla, Just5, JVC, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler & Strauss, Keneksi, Kenxinda, Kiano, Kingsun, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Koolnee, Kooper, KOPO, Koridy, KRONO, Krüger&Matz, KT-Tech, Kuliao, Kult, Kumai, Kyocera, Kzen, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Leff, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Lingwin, Linsar, Loewe, Logic, Logicom, Lumigon, Lumus, Luna, Luxor, LYF, M.T.T., M4tel, Macoox, Majestic, Mann, Manta Multimedia, Masstel, Matrix, Maxcom, Maxtron, MAXVI, Maxwest, Maze, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mintt, Mio, Miray, Mito, Mitsubishi, MIXC, MiXzo, MLLED, MLS, Mobicel, Mobiistar, Mobiola, Mobistel, MobiWire, Mobo, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, Multilaser, MYFON, MyPhone, Myria, Mystery, MyTab, MyWigo, National, Navitech, Navon, NEC, Neffos, Neomi, Netgear, NeuImage, Newgen, Newland, Newman, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nomu, Nordmende, NorthTech, Nos, Nous, NuAns, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Oale, Obi, Odys, Okapia, Onda, OnePlus, Onix, ONN, OpelMobile, Openbox, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Phicomm, Philco, Philips, Phonemax, phoneOne, Pioneer, Pixelphone, Pixus, Planet Computers, Ployer, Plum, PocketBook, POCO, Point of View, Polaroid, PolyPad, Polytron, Pomp, Poppox, Positivo, Positivo BGH, PPTV, Premio, Prestigio, Primepad, Primux, Prixton, Proline, ProScan, Protruly, PULID, Q-Touch, Q.Bell, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, Ravoz, Razer, RCA Tablets, Reach, Readboy, Realme, RED, Reeder, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Ryte, Safaricom, Sagem, Salora, Samsung, Sanei, Sansui, Santin, Sanyo, Savio, Schneider, Sega, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, SFR, Sharp, Shift Phones, Shtrikh-M, Shuttle, Sico, Siemens, Sigma, Silelis, Silent Circle, Simbans, Siragon, Sky, Skyworth, Smadl, Smailo, Smart, SMARTEC, Smartfren, Smartisan, Softbank, Solone, Sonim, Sony, Sony Ericsson, Soundmax, Soyes, SPC, Spectrum, Spice, SQOOL, Star, Starlight, Starmobile, Starway, STF Mobile, STK, Stonex, Storex, Sugar, Sumvision, Sunstech, SunVan, Sunvell, SuperSonic, Supra, Swipe, SWISSMOBILITY, Swisstone, Symphony, Syrox, T-Mobile, Takara, Tanix, TB Touch, TCL, TD Systems, TechniSat, TechnoTrend, TechPad, Techwood, Teclast, Tecno Mobile, Tele2, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, Thuraya, TIANYU, Time2, Timovi, Tinai, Tinmo, TiPhone, Tolino, Tone, Tooky, Top House, Toplux, Torex, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Trifone, Tronsmart, True, TTEC, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TVC, TWM, Twoe, Tymes, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, UNIWA, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, VAIO, Vastking, Venso, Verico, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Vitelcom, Viumee, Vivax, Vivo, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, Web TV, Weimei, WellcoM, Westpoint, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Winmax, Wiseasy, Wizz, Wolder, Wolfgang, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, X.Vision, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Yandex, Yarvik, Yes, Yezz, Yoka TV, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zatec, Zebra, Zeemi, Zen, Zenek, Zentality, Zfiner, Zidoo, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn
|
246 |
|
247 |
### List of detected bots:
|
248 |
|
249 |
+
360Spider, Aboundexbot, Acoon, Adbeat, AddThis.com, ADMantX, ADmantX Service Fetcher, aHrefs Bot, Alexa Crawler, Alexa Site Audit, Amazon Route53 Health Check, Amorank Spider, Analytics SEO Crawler, ApacheBench, Applebot, Arachni, archive.org bot, Ask Jeeves, AspiegelBot, Awario, Awario, Backlink-Check.de, BacklinkCrawler, Baidu Spider, Barkrowler, BazQux Reader, BDCbot, BingBot, BitlyBot, Blekkobot, BLEXBot Crawler, Bloglovin, Blogtrottr, BoardReader, BoardReader Blog Indexer, Bountii Bot, BrandVerity, Browsershots, BUbiNG, Buck, BuiltWith, Butterfly Robot, Bytespider, CareerBot, Castro 2, Catchpoint, CATExplorador, ccBot crawler, Charlotte, Cliqzbot, CloudFlare Always Online, CloudFlare AMP Fetcher, Cloudflare Diagnostics, Collectd, CommaFeed, ContentKing, CSS Certificate Spider, Cốc Cốc Bot, Datadog Agent, Datanyze, Dataprovider, Daum, Dazoobot, Discobot, Domain Re-Animator Bot, Domains Project, DotBot, DuckDuckGo Bot, Easou Spider, eCairn-Grabber, EMail Exractor, EmailWolf, Embedly, evc-batch, ExaBot, ExactSeek Crawler, Ezooms, eZ Publish Link Validator, Facebook External Hit, Feedbin, FeedBurner, Feedly, Feedspot, Feed Wrangler, Fever, Findxbot, Flipboard, FreshRSS, Generic Bot, Generic Bot, Genieo Web filter, Gigablast, Gigabot, Gluten Free Crawler, Gmail Image Proxy, Goo, Googlebot, Google Cloud Scheduler, Google Favicon, Google PageSpeed Insights, Google Partner Monitoring, Google Search Console, Google Stackdriver Monitoring, Google Structured Data Testing Tool, Grammarly, Grapeshot, GTmetrix, Heritrix, Heureka Feed, HTTPMon, HubPages, HubSpot, ICC-Crawler, ichiro, IDG/IT, IIS Site Analysis, Inktomi Slurp, inoreader, IP-Guide Crawler, IPS Agent, Kaspersky, Kouio, Larbin web crawler, LCC, Let's Encrypt Validation, Lighthouse, Linkdex Bot, LinkedIn Bot, LTX71, Lycos, Magpie-Crawler, MagpieRSS, Mail.Ru Bot, masscan, Mastodon Bot, Meanpath Bot, MetaInspector, MetaJobBot, MicroAdBot, Mixrank Bot, MJ12 Bot, Mnogosearch, MojeekBot, Monitor.Us, Munin, Nagios check_http, NalezenCzBot, nbertaupete95, Netcraft Survey Bot, netEstate, NetLyzer FastProbe, NetResearchServer, Netvibes, NewsBlur, NewsGator, NLCrawler, Nmap, Nutch-based Bot, Nuzzel, oBot, Octopus, Omgili bot, Openindex Spider, OpenLinkProfiler, OpenWebSpider, Orange Bot, Outbrain, PagePeeker, PaperLiBot, parse.ly, Petal Bot, Phantomas, PHP Server Monitor, Picsearch bot, PingAdmin.Ru, Pingdom Bot, Pinterest, PocketParser, Pompos, PritTorrent, PRTG Network Monitor, QuerySeekerSpider, Quora Link Preview, Qwantify, Rainmeter, RamblerMail Image Proxy, Reddit Bot, Riddler, Robozilla, Rogerbot, ROI Hunter, RSSRadio Bot, SafeDNSBot, Scooter, ScoutJet, Scrapy, Screaming Frog SEO Spider, ScreenerBot, Semantic Scholar Bot, Semrush Bot, Sensika Bot, Sentry Bot, Seobility, SEOENGBot, SEOkicks-Robot, Seoscanners.net, Serendeputy Bot, Server Density, Seznam Bot, Seznam Email Proxy, Seznam Zbozi.cz, ShopAlike, Shopify Partner, ShopWiki, SilverReader, SimplePie, SISTRIX Crawler, SISTRIX Optimizer, Site24x7 Website Monitoring, Siteimprove, SiteSucker, Sixy.ch, Skype URI Preview, Slackbot, SMTBot, Snapchat Proxy, Sogou Spider, Soso Spider, Sparkler, Speedy, Spinn3r, Spotify, Sprinklr, Sputnik Bot, sqlmap, SSL Labs, Startpagina Linkchecker, StatusCake, Superfeedr Bot, Survey Bot, Tarmot Gezgin, TelegramBot, The Knowledge AI, theoldreader, TinEye Crawler, Tiny Tiny RSS, TLSProbe, TraceMyFile, Trendiction Bot, TurnitinBot, TweetedTimes Bot, Tweetmeme Bot, Twingly Recon, Twitterbot, UkrNet Mail Proxy, UniversalFeedParser, Uptimebot, Uptime Robot, URLAppendBot, Vagabondo, Velen Public Web Crawler, Vercel Bot, Visual Site Mapper Crawler, VK Share Button, W3C CSS Validator, W3C I18N Checker, W3C Link Checker, W3C Markup Validation Service, W3C MobileOK Checker, W3C Unified Validator, Wappalyzer, WebbCrawler, WebDataStats, Weborama, WebPageTest, WebSitePulse, WebThumbnail, WeSEE:Search, WikiDo, Willow Internet Crawler, WooRank, WordPress, Wotbox, XenForo, YaCy, Yahoo! Cache System, Yahoo! Japan BRW, Yahoo! Link Preview, Yahoo! Slurp, Yahoo Gemini, Yandex Bot, Yeti/Naverbot, Yottaa Site Monitor, Youdao Bot, Yourls, Yunyun Bot, Zao, Ze List, zgrab, Zookabot, ZumBot
|
app/vendor/matomo/device-detector/regexes/bots.yml
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
- regex: '360Spider(-Image|-Video)?'
|
9 |
name: '360Spider'
|
10 |
category: 'Search bot'
|
11 |
-
url: '
|
12 |
producer:
|
13 |
name: 'Online Media Group, Inc.'
|
14 |
url: ''
|
@@ -40,26 +40,26 @@
|
|
40 |
- regex: 'AhrefsBot'
|
41 |
name: 'aHrefs Bot'
|
42 |
category: 'Crawler'
|
43 |
-
url: '
|
44 |
producer:
|
45 |
name: 'Ahrefs Pte Ltd'
|
46 |
-
url: '
|
47 |
|
48 |
- regex: 'ia_archiver|alexabot|verifybot'
|
49 |
name: 'Alexa Crawler'
|
50 |
category: 'Search bot'
|
51 |
-
url: 'https://alexa.
|
52 |
producer:
|
53 |
name: 'Alexa Internet'
|
54 |
-
url: '
|
55 |
|
56 |
- regex: 'alexa site audit'
|
57 |
name: 'Alexa Site Audit'
|
58 |
category: 'Site Monitor'
|
59 |
-
url: '
|
60 |
producer:
|
61 |
name: 'Alexa Internet'
|
62 |
-
url: '
|
63 |
|
64 |
- regex: 'Amazon[ -]Route ?53[ -]Health[ -]Check[ -]Service'
|
65 |
name: 'Amazon Route53 Health Check'
|
@@ -82,23 +82,23 @@
|
|
82 |
url: 'https://httpd.apache.org/docs/2.4/programs/ab.html'
|
83 |
producer:
|
84 |
name: 'The Apache Software Foundation'
|
85 |
-
url: '
|
86 |
|
87 |
- regex: 'Applebot'
|
88 |
name: 'Applebot'
|
89 |
category: 'Crawler'
|
90 |
-
url: '
|
91 |
producer:
|
92 |
name: 'Apple Inc'
|
93 |
-
url: '
|
94 |
|
95 |
- regex: 'Arachni'
|
96 |
name: 'Arachni'
|
97 |
category: 'Security Checker'
|
98 |
-
url: '
|
99 |
producer:
|
100 |
name: 'Sarosys LLC'
|
101 |
-
url: '
|
102 |
|
103 |
- regex: 'AspiegelBot'
|
104 |
name: 'AspiegelBot'
|
@@ -127,10 +127,10 @@
|
|
127 |
- regex: 'archive\.org_bot|special_archiver'
|
128 |
name: 'archive.org bot'
|
129 |
category: 'Crawler'
|
130 |
-
url: '
|
131 |
producer:
|
132 |
name: 'The Internet Archive'
|
133 |
-
url: '
|
134 |
|
135 |
- regex: 'Ask Jeeves/Teoma'
|
136 |
name: 'Ask Jeeves'
|
@@ -217,7 +217,7 @@
|
|
217 |
category: 'Crawler'
|
218 |
producer:
|
219 |
name: 'BoardReader'
|
220 |
-
url: '
|
221 |
|
222 |
- regex: 'BountiiBot'
|
223 |
name: 'Bountii Bot'
|
@@ -283,6 +283,14 @@
|
|
283 |
name: 'CloudFlare'
|
284 |
url: 'http://www.cloudflare.com'
|
285 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
- regex: 'CloudFlare-AlwaysOnline'
|
287 |
name: 'CloudFlare Always Online'
|
288 |
category: 'Site Monitor'
|
@@ -339,7 +347,6 @@
|
|
339 |
name: 'Datanyze'
|
340 |
url: 'https://www.datanyze.com'
|
341 |
|
342 |
-
|
343 |
- regex: 'Dataprovider'
|
344 |
name: 'Dataprovider'
|
345 |
category: 'Crawler'
|
@@ -649,7 +656,7 @@
|
|
649 |
name: 'Visual Meta'
|
650 |
url: 'https://www.shopalike.cz/'
|
651 |
|
652 |
-
- regex: 'AdsBot-Google(-Mobile)?|Adwords-(DisplayAds|Express|Instant)|Google Web Preview|Google[ -]Publisher[ -]Plugin|Google-(Adwords|AMPHTML|Assess|HotelAdsVerifier|Read-Aloud|Shopping-Quality|Site-Verification|speakr|Test|Youtube-Links)|(APIs|DuplexWeb|Feedfetcher|Mediapartners)-Google|Googlebot(-Mobile|-Image|-Video|-News)?|GoogleProducer|Google.*/\+/web/snippet'
|
653 |
name: 'Googlebot'
|
654 |
category: 'Search bot'
|
655 |
url: 'http://www.google.com/bot.html'
|
@@ -663,7 +670,7 @@
|
|
663 |
url: 'https://webarchive.jira.com/wiki/display/Heritrix/Heritrix'
|
664 |
producer:
|
665 |
name: 'The Internet Archive'
|
666 |
-
url: '
|
667 |
|
668 |
- regex: 'HubSpot '
|
669 |
name: 'HubSpot'
|
@@ -672,7 +679,6 @@
|
|
672 |
name: 'HubSpot Inc.'
|
673 |
url: 'https://www.hubspot.com'
|
674 |
|
675 |
-
|
676 |
- regex: 'HTTPMon'
|
677 |
name: 'HTTPMon'
|
678 |
category: 'Site Monitor'
|
@@ -1971,10 +1977,10 @@
|
|
1971 |
- regex: 'BoardReader Favicon Fetcher'
|
1972 |
name: 'BoardReader'
|
1973 |
category: 'Search bot'
|
1974 |
-
url: '
|
1975 |
producer:
|
1976 |
name: 'Effyis Inc'
|
1977 |
-
url: '
|
1978 |
|
1979 |
- regex: 'IDG/IT'
|
1980 |
name: 'IDG/IT'
|
@@ -2019,7 +2025,7 @@
|
|
2019 |
- regex: 'oBot'
|
2020 |
name: 'oBot'
|
2021 |
category: 'Search bot'
|
2022 |
-
url: '
|
2023 |
producer:
|
2024 |
name: 'IBM Germany Research & Development GmbH'
|
2025 |
url: 'https://exchange.xforce.ibmcloud.com/'
|
@@ -2062,7 +2068,7 @@
|
|
2062 |
url: 'https://nutch.apache.org'
|
2063 |
producer:
|
2064 |
name: 'The Apache Software Foundation'
|
2065 |
-
url: '
|
2066 |
|
2067 |
- regex: 'Seobility'
|
2068 |
name: 'Seobility'
|
@@ -2077,7 +2083,7 @@
|
|
2077 |
- regex: 'Grammarly'
|
2078 |
name: 'Grammarly'
|
2079 |
category: 'Service bot'
|
2080 |
-
url: '
|
2081 |
|
2082 |
- regex: 'Robozilla'
|
2083 |
name: 'Robozilla'
|
@@ -2096,7 +2102,7 @@
|
|
2096 |
- regex: 'SerendeputyBot'
|
2097 |
name: 'Serendeputy Bot'
|
2098 |
category: 'Crawler'
|
2099 |
-
url: '
|
2100 |
|
2101 |
- regex: 'ias-va.*admantx.*service-fetcher'
|
2102 |
name: 'ADmantX Service Fetcher'
|
@@ -2118,6 +2124,67 @@
|
|
2118 |
category: 'Crawler'
|
2119 |
url: 'http://www.exensa.com/crawl'
|
2120 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2121 |
# Generic detections
|
2122 |
|
2123 |
- regex: '[a-z0-9\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9])|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)'
|
8 |
- regex: '360Spider(-Image|-Video)?'
|
9 |
name: '360Spider'
|
10 |
category: 'Search bot'
|
11 |
+
url: 'https://www.so.com/help/help_3_2.html'
|
12 |
producer:
|
13 |
name: 'Online Media Group, Inc.'
|
14 |
url: ''
|
40 |
- regex: 'AhrefsBot'
|
41 |
name: 'aHrefs Bot'
|
42 |
category: 'Crawler'
|
43 |
+
url: 'https://ahrefs.com/robot'
|
44 |
producer:
|
45 |
name: 'Ahrefs Pte Ltd'
|
46 |
+
url: 'https://ahrefs.com/robot'
|
47 |
|
48 |
- regex: 'ia_archiver|alexabot|verifybot'
|
49 |
name: 'Alexa Crawler'
|
50 |
category: 'Search bot'
|
51 |
+
url: 'https://support.alexa.com/hc/en-us/sections/200100794-Crawlers'
|
52 |
producer:
|
53 |
name: 'Alexa Internet'
|
54 |
+
url: 'https://www.alexa.com'
|
55 |
|
56 |
- regex: 'alexa site audit'
|
57 |
name: 'Alexa Site Audit'
|
58 |
category: 'Site Monitor'
|
59 |
+
url: 'https://support.alexa.com/hc/en-us/articles/200450194'
|
60 |
producer:
|
61 |
name: 'Alexa Internet'
|
62 |
+
url: 'https://www.alexa.com'
|
63 |
|
64 |
- regex: 'Amazon[ -]Route ?53[ -]Health[ -]Check[ -]Service'
|
65 |
name: 'Amazon Route53 Health Check'
|
82 |
url: 'https://httpd.apache.org/docs/2.4/programs/ab.html'
|
83 |
producer:
|
84 |
name: 'The Apache Software Foundation'
|
85 |
+
url: 'https://www.apache.org/foundation/'
|
86 |
|
87 |
- regex: 'Applebot'
|
88 |
name: 'Applebot'
|
89 |
category: 'Crawler'
|
90 |
+
url: 'https://support.apple.com/en-us/HT204683'
|
91 |
producer:
|
92 |
name: 'Apple Inc'
|
93 |
+
url: 'https://www.apple.com'
|
94 |
|
95 |
- regex: 'Arachni'
|
96 |
name: 'Arachni'
|
97 |
category: 'Security Checker'
|
98 |
+
url: 'https://www.arachni-scanner.com/'
|
99 |
producer:
|
100 |
name: 'Sarosys LLC'
|
101 |
+
url: 'https://www.sarosys.com/'
|
102 |
|
103 |
- regex: 'AspiegelBot'
|
104 |
name: 'AspiegelBot'
|
127 |
- regex: 'archive\.org_bot|special_archiver'
|
128 |
name: 'archive.org bot'
|
129 |
category: 'Crawler'
|
130 |
+
url: 'https://archive.org/details/archive.org_bot'
|
131 |
producer:
|
132 |
name: 'The Internet Archive'
|
133 |
+
url: 'https://archive.org'
|
134 |
|
135 |
- regex: 'Ask Jeeves/Teoma'
|
136 |
name: 'Ask Jeeves'
|
217 |
category: 'Crawler'
|
218 |
producer:
|
219 |
name: 'BoardReader'
|
220 |
+
url: 'https://boardreader.com/'
|
221 |
|
222 |
- regex: 'BountiiBot'
|
223 |
name: 'Bountii Bot'
|
283 |
name: 'CloudFlare'
|
284 |
url: 'http://www.cloudflare.com'
|
285 |
|
286 |
+
- regex: 'CloudflareDiagnostics'
|
287 |
+
name: 'Cloudflare Diagnostics'
|
288 |
+
category: 'Site Monitor'
|
289 |
+
url: 'https://www.cloudflare.com/'
|
290 |
+
producer:
|
291 |
+
name: 'Cloudflare'
|
292 |
+
url: 'https://www.cloudflare.com'
|
293 |
+
|
294 |
- regex: 'CloudFlare-AlwaysOnline'
|
295 |
name: 'CloudFlare Always Online'
|
296 |
category: 'Site Monitor'
|
347 |
name: 'Datanyze'
|
348 |
url: 'https://www.datanyze.com'
|
349 |
|
|
|
350 |
- regex: 'Dataprovider'
|
351 |
name: 'Dataprovider'
|
352 |
category: 'Crawler'
|
656 |
name: 'Visual Meta'
|
657 |
url: 'https://www.shopalike.cz/'
|
658 |
|
659 |
+
- regex: 'AdsBot-Google(-Mobile)?|Adwords-(DisplayAds|Express|Instant)|Google Web Preview|Google[ -]Publisher[ -]Plugin|Google-(Ads-Qualify|Adwords|AMPHTML|Assess|HotelAdsVerifier|Read-Aloud|Shopping-Quality|Site-Verification|speakr|Test|Youtube-Links)|(APIs|DuplexWeb|Feedfetcher|Mediapartners)-Google|Googlebot(-Mobile|-Image|-Video|-News)?|GoogleProducer|Google.*/\+/web/snippet'
|
660 |
name: 'Googlebot'
|
661 |
category: 'Search bot'
|
662 |
url: 'http://www.google.com/bot.html'
|
670 |
url: 'https://webarchive.jira.com/wiki/display/Heritrix/Heritrix'
|
671 |
producer:
|
672 |
name: 'The Internet Archive'
|
673 |
+
url: 'https://archive.org'
|
674 |
|
675 |
- regex: 'HubSpot '
|
676 |
name: 'HubSpot'
|
679 |
name: 'HubSpot Inc.'
|
680 |
url: 'https://www.hubspot.com'
|
681 |
|
|
|
682 |
- regex: 'HTTPMon'
|
683 |
name: 'HTTPMon'
|
684 |
category: 'Site Monitor'
|
1977 |
- regex: 'BoardReader Favicon Fetcher'
|
1978 |
name: 'BoardReader'
|
1979 |
category: 'Search bot'
|
1980 |
+
url: 'https://boardreader.com/'
|
1981 |
producer:
|
1982 |
name: 'Effyis Inc'
|
1983 |
+
url: 'https://boardreader.com/'
|
1984 |
|
1985 |
- regex: 'IDG/IT'
|
1986 |
name: 'IDG/IT'
|
2025 |
- regex: 'oBot'
|
2026 |
name: 'oBot'
|
2027 |
category: 'Search bot'
|
2028 |
+
url: 'https://www.xforce-security.com/crawler/'
|
2029 |
producer:
|
2030 |
name: 'IBM Germany Research & Development GmbH'
|
2031 |
url: 'https://exchange.xforce.ibmcloud.com/'
|
2068 |
url: 'https://nutch.apache.org'
|
2069 |
producer:
|
2070 |
name: 'The Apache Software Foundation'
|
2071 |
+
url: 'https://www.apache.org/foundation/'
|
2072 |
|
2073 |
- regex: 'Seobility'
|
2074 |
name: 'Seobility'
|
2083 |
- regex: 'Grammarly'
|
2084 |
name: 'Grammarly'
|
2085 |
category: 'Service bot'
|
2086 |
+
url: 'https://www.grammarly.com'
|
2087 |
|
2088 |
- regex: 'Robozilla'
|
2089 |
name: 'Robozilla'
|
2102 |
- regex: 'SerendeputyBot'
|
2103 |
name: 'Serendeputy Bot'
|
2104 |
category: 'Crawler'
|
2105 |
+
url: 'https://serendeputy.com/about/serendeputy-bot'
|
2106 |
|
2107 |
- regex: 'ias-va.*admantx.*service-fetcher'
|
2108 |
name: 'ADmantX Service Fetcher'
|
2124 |
category: 'Crawler'
|
2125 |
url: 'http://www.exensa.com/crawl'
|
2126 |
|
2127 |
+
- regex: 'BDCbot'
|
2128 |
+
name: 'BDCbot'
|
2129 |
+
category: 'Crawler'
|
2130 |
+
url: 'https://bigweb.bigdatacorp.com.br/pages/faq.aspx'
|
2131 |
+
producer:
|
2132 |
+
name: 'BIG Data Solucoes Em Tecnologia de Informatica LTDA'
|
2133 |
+
url: 'https://bigdatacorp.com.br/'
|
2134 |
+
|
2135 |
+
- regex: 'adbeat'
|
2136 |
+
name: 'Adbeat'
|
2137 |
+
category: 'Crawler'
|
2138 |
+
url: 'https://www.adbeat.com/operation_policy'
|
2139 |
+
producer:
|
2140 |
+
name: 'PPC Labs LLC'
|
2141 |
+
url: 'https://www.adbeat.com/'
|
2142 |
+
|
2143 |
+
- regex: 'BW/(?:(\d+[\.\d]+))'
|
2144 |
+
name: 'BuiltWith'
|
2145 |
+
category: 'Crawler'
|
2146 |
+
url: 'https://builtwith.com/biup'
|
2147 |
+
producer:
|
2148 |
+
name: 'BuiltWith Pty Ltd'
|
2149 |
+
url: 'https://builtwith.com/'
|
2150 |
+
|
2151 |
+
- regex: 'https://whatis.contentkingapp.com'
|
2152 |
+
name: 'ContentKing'
|
2153 |
+
category: 'Site Monitor'
|
2154 |
+
url: 'https://whatis.contentkingapp.com/'
|
2155 |
+
producer:
|
2156 |
+
name: 'ContentKing BV'
|
2157 |
+
url: 'https://www.contentkingapp.com/'
|
2158 |
+
|
2159 |
+
- regex: 'MicroAdBot'
|
2160 |
+
name: 'MicroAdBot'
|
2161 |
+
category: 'Crawler'
|
2162 |
+
url: 'https://www.microad.co.jp/'
|
2163 |
+
producer:
|
2164 |
+
name: 'MicroAd, Inc.'
|
2165 |
+
url: 'https://www.microad.co.jp/'
|
2166 |
+
|
2167 |
+
- regex: 'PingAdmin.Ru'
|
2168 |
+
name: 'PingAdmin.Ru'
|
2169 |
+
category: 'Site Monitor'
|
2170 |
+
url: 'https://ping-admin.ru/'
|
2171 |
+
|
2172 |
+
- regex: 'WebDataStats'
|
2173 |
+
name: 'WebDataStats'
|
2174 |
+
category: 'Crawler'
|
2175 |
+
url: 'https://webdatastats.com/policy.html'
|
2176 |
+
producer:
|
2177 |
+
name: 'WebTehRazrabotka LLC'
|
2178 |
+
url: 'https://webdatastats.com/'
|
2179 |
+
|
2180 |
+
- regex: 'parse.ly scraper'
|
2181 |
+
name: 'parse.ly'
|
2182 |
+
category: 'Crawler'
|
2183 |
+
url: 'https://www.parse.ly/help/integration/crawler'
|
2184 |
+
producer:
|
2185 |
+
name: 'Parsely, Inc.'
|
2186 |
+
url: 'https://www.parse.ly/'
|
2187 |
+
|
2188 |
# Generic detections
|
2189 |
|
2190 |
- regex: '[a-z0-9\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9])|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)'
|
app/vendor/matomo/device-detector/regexes/client/browser_engine.yml
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
- regex: 'Trident'
|
15 |
name: 'Trident'
|
16 |
|
17 |
-
- regex: 'Blink'
|
18 |
name: 'Blink'
|
19 |
|
20 |
- regex: '(?:Apple)?WebKit'
|
14 |
- regex: 'Trident'
|
15 |
name: 'Trident'
|
16 |
|
17 |
+
- regex: '(?<!SmartHu)Blink'
|
18 |
name: 'Blink'
|
19 |
|
20 |
- regex: '(?:Apple)?WebKit'
|
app/vendor/matomo/device-detector/regexes/client/browsers.yml
CHANGED
@@ -5,6 +5,62 @@
|
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
# Kode Browser (https://www.kodebrowser.com/ | https://play.google.com/store/apps/details?id=com.app.downloadmanager | https://apps.apple.com/us/app/kode-browser-fast-private/id625458492)
|
9 |
- regex: '(?:Kode(?:iOS)?/(?:(\d+[\.\d]+))?|TansoDL)'
|
10 |
name: 'Kode Browser'
|
@@ -30,7 +86,7 @@
|
|
30 |
# Browzar (https://www.browzar.com/)
|
31 |
- regex: 'Browzar'
|
32 |
name: 'Browzar'
|
33 |
-
version: '
|
34 |
|
35 |
# Stargon (http://www.stargon.org/ | https://play.google.com/store/apps/details?id=net.onecook.browser)
|
36 |
- regex: 'Stargon/(?:(\d+[\.\d]+))?'
|
@@ -1733,13 +1789,6 @@
|
|
1733 |
name: 'SEMC-Browser'
|
1734 |
version: '$1'
|
1735 |
|
1736 |
-
#Seraphic Sraf
|
1737 |
-
- regex: 'Sraf(?:[/ ](\d+[\.\d]+))?'
|
1738 |
-
name: 'Seraphic Sraf'
|
1739 |
-
version: '$1'
|
1740 |
-
engine:
|
1741 |
-
default: 'Blink'
|
1742 |
-
|
1743 |
#Shiira
|
1744 |
- regex: 'Shiira(?:[/ ](\d+[\.\d]+))?'
|
1745 |
name: 'Shiira'
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
8 |
+
|
9 |
+
# PlayFree Browser
|
10 |
+
- regex: 'PlayFreeBrowser/(?:(\d+[\.\d]+))?'
|
11 |
+
name: 'PlayFree Browser'
|
12 |
+
version: '$1'
|
13 |
+
|
14 |
+
# Chim Lac (https://chimlac.com.vn/)
|
15 |
+
- regex: '(?:chimlac_browser|chimlac)/(?:(\d+[\.\d]+))'
|
16 |
+
name: 'Chim Lac'
|
17 |
+
version: '$1'
|
18 |
+
engine:
|
19 |
+
default: 'Blink'
|
20 |
+
|
21 |
+
# Odin (https://www.hisense.com/)
|
22 |
+
- regex: 'Odin/(?:(\d+[\.\d]+))'
|
23 |
+
name: 'Odin'
|
24 |
+
version: '$1'
|
25 |
+
engine:
|
26 |
+
default: 'Blink'
|
27 |
+
|
28 |
+
# T-Browser (https://play.google.com/store/apps/details?id=com.tcl.browser)
|
29 |
+
- regex: 'Tbrowser/(\d+[\.\d]+)'
|
30 |
+
name: 'T-Browser'
|
31 |
+
version: '$1'
|
32 |
+
engine:
|
33 |
+
default: 'Blink'
|
34 |
+
|
35 |
+
# SFive (https://sfive.vn/)
|
36 |
+
- regex: 'SFive(?:_Android)?/.+ Chrome/(\d+[\.\d]+)'
|
37 |
+
name: 'SFive'
|
38 |
+
version: '$1'
|
39 |
+
engine:
|
40 |
+
default: 'Blink'
|
41 |
+
- regex: 'SFive_IOS/(\d+[\.\d]+)'
|
42 |
+
name: 'SFive'
|
43 |
+
version: '$1'
|
44 |
+
|
45 |
+
# Navigateur Web
|
46 |
+
- regex: 'Navigateur web/(?:(\d+[\.\d]+))?'
|
47 |
+
name: 'Navigateur Web'
|
48 |
+
version: '$1'
|
49 |
+
|
50 |
+
#Seraphic Sraf (https://www.seraphic-corp.com/)
|
51 |
+
- regex: 'Sraf(?:[/ ](\d+[\.\d]+))?'
|
52 |
+
name: 'Seraphic Sraf'
|
53 |
+
version: '$1'
|
54 |
+
engine:
|
55 |
+
default: 'Blink'
|
56 |
+
|
57 |
+
# Seewo Browser (http://e.seewo.com/)
|
58 |
+
- regex: 'SeewoBrowser/(?:(\d+[\.\d]+))?'
|
59 |
+
name: 'Seewo Browser'
|
60 |
+
version: '$1'
|
61 |
+
engine:
|
62 |
+
default: 'Blink'
|
63 |
+
|
64 |
# Kode Browser (https://www.kodebrowser.com/ | https://play.google.com/store/apps/details?id=com.app.downloadmanager | https://apps.apple.com/us/app/kode-browser-fast-private/id625458492)
|
65 |
- regex: '(?:Kode(?:iOS)?/(?:(\d+[\.\d]+))?|TansoDL)'
|
66 |
name: 'Kode Browser'
|
86 |
# Browzar (https://www.browzar.com/)
|
87 |
- regex: 'Browzar'
|
88 |
name: 'Browzar'
|
89 |
+
version: ''
|
90 |
|
91 |
# Stargon (http://www.stargon.org/ | https://play.google.com/store/apps/details?id=net.onecook.browser)
|
92 |
- regex: 'Stargon/(?:(\d+[\.\d]+))?'
|
1789 |
name: 'SEMC-Browser'
|
1790 |
version: '$1'
|
1791 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1792 |
#Shiira
|
1793 |
- regex: 'Shiira(?:[/ ](\d+[\.\d]+))?'
|
1794 |
name: 'Shiira'
|
app/vendor/matomo/device-detector/regexes/client/feed_readers.yml
CHANGED
@@ -113,7 +113,7 @@
|
|
113 |
url: 'http://readkitapp.com/'
|
114 |
type: 'Feed Reader App'
|
115 |
|
116 |
-
- regex: 'Reeder
|
117 |
name: 'Reeder'
|
118 |
version: '$1'
|
119 |
url: 'http://reederapp.com/'
|
113 |
url: 'http://readkitapp.com/'
|
114 |
type: 'Feed Reader App'
|
115 |
|
116 |
+
- regex: 'Reeder[/ ](\d+[\.\d]+)'
|
117 |
name: 'Reeder'
|
118 |
version: '$1'
|
119 |
url: 'http://reederapp.com/'
|
app/vendor/matomo/device-detector/regexes/client/mobile_apps.yml
CHANGED
@@ -56,6 +56,9 @@
|
|
56 |
- regex: 'MicroMessenger/([^ ]+)'
|
57 |
name: 'WeChat'
|
58 |
version: '$1'
|
|
|
|
|
|
|
59 |
|
60 |
# DingTalk
|
61 |
- regex: 'DingTalk/([0-9\.]+)'
|
@@ -101,146 +104,111 @@
|
|
101 |
- regex: 'Instacast(?:HD)?/(\d\.[\d\.abc]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
|
102 |
name: 'Instacast'
|
103 |
version: '$1'
|
104 |
-
-
|
105 |
-
regex: 'Podcasts/([\d\.]+)'
|
106 |
name: 'Podcasts'
|
107 |
version: '$1'
|
108 |
-
-
|
109 |
-
regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?'
|
110 |
name: 'Pocket Casts'
|
111 |
version: '$1'
|
112 |
-
-
|
113 |
-
regex: 'Podcat/([\d\.]+)'
|
114 |
name: 'Podcat'
|
115 |
version: '$1'
|
116 |
|
117 |
-
-
|
118 |
-
regex: 'BeyondPod'
|
119 |
name: 'BeyondPod'
|
120 |
version:
|
121 |
-
-
|
122 |
-
regex: 'AntennaPod/?([\d\.]+)?'
|
123 |
name: 'AntennaPod'
|
124 |
version: '$1'
|
125 |
-
-
|
126 |
-
regex: 'Overcast/([\d\.]+)'
|
127 |
name: 'Overcast'
|
128 |
version: '$1'
|
129 |
-
-
|
130 |
-
regex: '(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\d\.]+)?'
|
131 |
name: 'CastBox'
|
132 |
version: '$1'
|
133 |
-
-
|
134 |
-
regex: 'Player FM'
|
135 |
name: 'Player FM'
|
136 |
version: ''
|
137 |
-
-
|
138 |
-
regex: 'Podkicker(?: Pro)?/([\d\.]+)'
|
139 |
name: 'Podkicker'
|
140 |
version: '$1'
|
141 |
-
-
|
142 |
-
regex: 'PodcastRepublic/([\d\.]+)'
|
143 |
name: 'Podcast Republic'
|
144 |
version: '$1'
|
145 |
-
-
|
146 |
-
regex: 'Castro/(\d+)'
|
147 |
name: 'Castro'
|
148 |
version: '$1'
|
149 |
-
-
|
150 |
-
regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes'
|
151 |
name: 'Castro 2'
|
152 |
version: '$1'
|
153 |
-
-
|
154 |
-
regex: 'Castro 2'
|
155 |
name: 'Castro 2'
|
156 |
version: ''
|
157 |
-
-
|
158 |
-
regex: 'DoggCatcher'
|
159 |
name: 'DoggCatcher'
|
160 |
version:
|
161 |
-
-
|
162 |
-
regex: 'PodcastAddict/v([\d]+)'
|
163 |
name: 'Podcast & Radio Addict'
|
164 |
version: '$1'
|
165 |
-
-
|
166 |
-
regex: 'Podcat/([\d]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
|
167 |
name: 'Podcat'
|
168 |
version: '$1'
|
169 |
-
-
|
170 |
-
regex: 'i[cC]atcher[^\d]+([\d\.]+)'
|
171 |
name: 'iCatcher'
|
172 |
version: '$1'
|
173 |
-
-
|
174 |
-
regex: 'YelpApp/([\d\.]+)'
|
175 |
name: 'Yelp Mobile'
|
176 |
version: '$1'
|
177 |
-
-
|
178 |
-
regex: 'jp.co.yahoo.android.yjtop/([\d\.]+)'
|
179 |
name: 'Yahoo! Japan'
|
180 |
version: '$1'
|
181 |
-
-
|
182 |
-
regex: 'RSSRadio/([\d]+)?'
|
183 |
name: 'RSSRadio'
|
184 |
version: '$1'
|
185 |
-
-
|
186 |
-
regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?'
|
187 |
name: 'SogouSearch App'
|
188 |
version: '$1'
|
189 |
-
-
|
190 |
-
regex: 'NewsArticle/([\d\.]+)?'
|
191 |
name: 'NewsArticle App'
|
192 |
version: '$1'
|
193 |
-
-
|
194 |
-
regex: 'tieba/([\d\.]+)?'
|
195 |
name: 'tieba'
|
196 |
version: '$1'
|
197 |
-
-
|
198 |
-
regex: 'com\.douban\.group/([\d\.]+)?'
|
199 |
name: 'douban App'
|
200 |
version: '$1'
|
201 |
-
-
|
202 |
-
regex: 'BingWeb/([\d\.]+)?'
|
203 |
name: 'BingWebApp'
|
204 |
version: '$1'
|
205 |
-
-
|
206 |
-
regex: 'GSA/([\d\.]+)?'
|
207 |
name: 'Google Search App'
|
208 |
version: '$1'
|
209 |
-
-
|
210 |
-
regex: 'Flipboard/([\d\.]+)?'
|
211 |
name: 'Flipboard App'
|
212 |
version: '$1'
|
213 |
-
-
|
214 |
-
regex: 'Instagram[ /]([\d\.]+)?'
|
215 |
name: 'Instagram App'
|
216 |
version: '$1'
|
217 |
-
-
|
218 |
-
regex: 'baiduboxapp/([\d\.]+)?'
|
219 |
name: 'Baidu Box App'
|
220 |
version: '$1'
|
221 |
-
-
|
222 |
-
regex: 'Crosswalk(?!.*(?:Streamy|QwantMobile))/([\d\.]+)?'
|
223 |
name: 'CrosswalkApp'
|
224 |
version: '$1'
|
225 |
-
-
|
226 |
-
regex: 'Twitter for iPhone[/]?([\d\.]+)?'
|
227 |
name: 'Twitter'
|
228 |
version: '$1'
|
229 |
-
-
|
230 |
-
regex: 'Twitter/([\d\.]+)'
|
231 |
name: 'Twitter'
|
232 |
version: '$1'
|
233 |
-
-
|
234 |
-
regex: 'TwitterAndroid[/]?([\d\.]+)?'
|
235 |
name: 'Twitter'
|
236 |
version: '$1'
|
237 |
|
238 |
-
-
|
239 |
-
regex: 'TopBuzz/([\d\.]+)'
|
240 |
name: 'TopBuzz'
|
241 |
version: '$1'
|
242 |
-
-
|
243 |
-
regex: 'Snapchat/([\d\.]+)'
|
244 |
name: 'Snapchat'
|
245 |
version: '$1'
|
246 |
|
@@ -275,3 +243,22 @@
|
|
275 |
- regex: 'LinkedIn/([\d\.]+)'
|
276 |
name: 'LinkedIn'
|
277 |
version: '$1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
- regex: 'MicroMessenger/([^ ]+)'
|
57 |
name: 'WeChat'
|
58 |
version: '$1'
|
59 |
+
- regex: 'WeChatShareExtensionNew/([^ ]+)'
|
60 |
+
name: 'WeChat Share Extension'
|
61 |
+
version: '$1'
|
62 |
|
63 |
# DingTalk
|
64 |
- regex: 'DingTalk/([0-9\.]+)'
|
104 |
- regex: 'Instacast(?:HD)?/(\d\.[\d\.abc]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
|
105 |
name: 'Instacast'
|
106 |
version: '$1'
|
107 |
+
- regex: 'Podcasts/([\d\.]+)'
|
|
|
108 |
name: 'Podcasts'
|
109 |
version: '$1'
|
110 |
+
- regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?'
|
|
|
111 |
name: 'Pocket Casts'
|
112 |
version: '$1'
|
113 |
+
- regex: 'Podcat/([\d\.]+)'
|
|
|
114 |
name: 'Podcat'
|
115 |
version: '$1'
|
116 |
|
117 |
+
- regex: 'BeyondPod'
|
|
|
118 |
name: 'BeyondPod'
|
119 |
version:
|
120 |
+
- regex: 'AntennaPod/?([\d\.]+)?'
|
|
|
121 |
name: 'AntennaPod'
|
122 |
version: '$1'
|
123 |
+
- regex: 'Overcast/([\d\.]+)'
|
|
|
124 |
name: 'Overcast'
|
125 |
version: '$1'
|
126 |
+
- regex: '(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\d\.]+)?'
|
|
|
127 |
name: 'CastBox'
|
128 |
version: '$1'
|
129 |
+
- regex: 'Player FM'
|
|
|
130 |
name: 'Player FM'
|
131 |
version: ''
|
132 |
+
- regex: 'Podkicker(?: Pro)?/([\d\.]+)'
|
|
|
133 |
name: 'Podkicker'
|
134 |
version: '$1'
|
135 |
+
- regex: 'PodcastRepublic/([\d\.]+)'
|
|
|
136 |
name: 'Podcast Republic'
|
137 |
version: '$1'
|
138 |
+
- regex: 'Castro/(\d+)'
|
|
|
139 |
name: 'Castro'
|
140 |
version: '$1'
|
141 |
+
- regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes'
|
|
|
142 |
name: 'Castro 2'
|
143 |
version: '$1'
|
144 |
+
- regex: 'Castro 2'
|
|
|
145 |
name: 'Castro 2'
|
146 |
version: ''
|
147 |
+
- regex: 'DoggCatcher'
|
|
|
148 |
name: 'DoggCatcher'
|
149 |
version:
|
150 |
+
- regex: 'PodcastAddict/v([\d]+)'
|
|
|
151 |
name: 'Podcast & Radio Addict'
|
152 |
version: '$1'
|
153 |
+
- regex: 'Podcat/([\d]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
|
|
|
154 |
name: 'Podcat'
|
155 |
version: '$1'
|
156 |
+
- regex: 'i[cC]atcher[^\d]+([\d\.]+)'
|
|
|
157 |
name: 'iCatcher'
|
158 |
version: '$1'
|
159 |
+
- regex: 'YelpApp/([\d\.]+)'
|
|
|
160 |
name: 'Yelp Mobile'
|
161 |
version: '$1'
|
162 |
+
- regex: 'jp.co.yahoo.android.yjtop/([\d\.]+)'
|
|
|
163 |
name: 'Yahoo! Japan'
|
164 |
version: '$1'
|
165 |
+
- regex: 'RSSRadio/([\d]+)?'
|
|
|
166 |
name: 'RSSRadio'
|
167 |
version: '$1'
|
168 |
+
- regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?'
|
|
|
169 |
name: 'SogouSearch App'
|
170 |
version: '$1'
|
171 |
+
- regex: 'NewsArticle/([\d\.]+)?'
|
|
|
172 |
name: 'NewsArticle App'
|
173 |
version: '$1'
|
174 |
+
- regex: 'tieba/([\d\.]+)?'
|
|
|
175 |
name: 'tieba'
|
176 |
version: '$1'
|
177 |
+
- regex: 'com\.douban\.group/([\d\.]+)?'
|
|
|
178 |
name: 'douban App'
|
179 |
version: '$1'
|
180 |
+
- regex: 'BingWeb/([\d\.]+)?'
|
|
|
181 |
name: 'BingWebApp'
|
182 |
version: '$1'
|
183 |
+
- regex: 'GSA/([\d\.]+)?'
|
|
|
184 |
name: 'Google Search App'
|
185 |
version: '$1'
|
186 |
+
- regex: 'Flipboard/([\d\.]+)?'
|
|
|
187 |
name: 'Flipboard App'
|
188 |
version: '$1'
|
189 |
+
- regex: 'Instagram[ /]([\d\.]+)?'
|
|
|
190 |
name: 'Instagram App'
|
191 |
version: '$1'
|
192 |
+
- regex: 'baiduboxapp/([\d\.]+)?'
|
|
|
193 |
name: 'Baidu Box App'
|
194 |
version: '$1'
|
195 |
+
- regex: 'Crosswalk(?!.*(?:Streamy|QwantMobile))/([\d\.]+)?'
|
|
|
196 |
name: 'CrosswalkApp'
|
197 |
version: '$1'
|
198 |
+
- regex: 'Twitter for iPhone[/]?([\d\.]+)?'
|
|
|
199 |
name: 'Twitter'
|
200 |
version: '$1'
|
201 |
+
- regex: 'Twitter/([\d\.]+)'
|
|
|
202 |
name: 'Twitter'
|
203 |
version: '$1'
|
204 |
+
- regex: 'TwitterAndroid[/]?([\d\.]+)?'
|
|
|
205 |
name: 'Twitter'
|
206 |
version: '$1'
|
207 |
|
208 |
+
- regex: 'TopBuzz/([\d\.]+)'
|
|
|
209 |
name: 'TopBuzz'
|
210 |
version: '$1'
|
211 |
+
- regex: 'Snapchat/([\d\.]+)'
|
|
|
212 |
name: 'Snapchat'
|
213 |
version: '$1'
|
214 |
|
243 |
- regex: 'LinkedIn/([\d\.]+)'
|
244 |
name: 'LinkedIn'
|
245 |
version: '$1'
|
246 |
+
|
247 |
+
# https://apps.apple.com/ru/app/instapaper/id288545208
|
248 |
+
- regex: 'Instapaper/([\d\.]+)'
|
249 |
+
name: 'Instapaper'
|
250 |
+
version: '$1'
|
251 |
+
|
252 |
+
# https://apps.apple.com/us/app/keeper-password-manager/id287170072
|
253 |
+
- regex: 'Keeper/([\d\.]+)'
|
254 |
+
name: 'Keeper Password Manager'
|
255 |
+
version: '$1'
|
256 |
+
|
257 |
+
# https://apps.apple.com/us/app/skyeng-teachers/id1483049537
|
258 |
+
- regex: 'Skyeng Teachers/([\d\.]+)'
|
259 |
+
name: 'Skyeng Teachers'
|
260 |
+
version: '$1'
|
261 |
+
|
262 |
+
- regex: 'Kik/([\d\.]+) \(Android'
|
263 |
+
name: 'Kik'
|
264 |
+
version: '$1'
|
app/vendor/matomo/device-detector/regexes/device/mobiles.yml
CHANGED
@@ -5,15 +5,23 @@
|
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
8 |
-
# Ace (
|
9 |
Ace:
|
10 |
-
regex: 'BUZZ 1 (?:
|
11 |
-
device: 'smartphone'
|
12 |
-
models:
|
13 |
-
- regex: 'BUZZ
|
14 |
-
model: 'Buzz 1 Lite'
|
15 |
-
- regex: 'BUZZ
|
16 |
-
model: 'Buzz 1 Plus'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
'Tunisie Telecom':
|
19 |
regex: 'StarTrail TT(?:[);/ ]|$)'
|
@@ -64,9 +72,9 @@ SFR:
|
|
64 |
- regex: '((?:StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem)[^;/]*) Build'
|
65 |
model: '$1'
|
66 |
|
67 |
-
# HTC
|
68 |
HTC:
|
69 |
-
regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\))|(Amaze[ _]4G|One ?[XELSV\+]+)(?:[);/ ]|$)|SPV E6[05]0|(One M8|X525a|PG86100|PC36100|XV6975|PJ83100|2PYB2|2PZC5|0PJA10|0PJA2|HTV33|0PM92|0PCV1|601HT|0PAJ5|HTL2[23]|
|
70 |
device: 'smartphone'
|
71 |
models:
|
72 |
# explicit smartphone models
|
@@ -108,12 +116,16 @@ HTC:
|
|
108 |
model: 'Vox'
|
109 |
- regex: '2PYB2'
|
110 |
model: 'Bolt'
|
|
|
|
|
111 |
- regex: '0PM92(?:[);/ ]|$)'
|
112 |
model: 'Desire 626S'
|
113 |
- regex: '0PCV1(?:[);/ ]|$)'
|
114 |
model: 'Desire 510'
|
115 |
- regex: '608t(?:[);/ ]|$)'
|
116 |
model: 'Desire 608t'
|
|
|
|
|
117 |
|
118 |
- regex: 'NexusHD2' # custom rom for hd2
|
119 |
model: 'HD2'
|
@@ -160,6 +172,8 @@ HTC:
|
|
160 |
model: 'One E8'
|
161 |
- regex: 'HTV32(?:[);/ ]|$)'
|
162 |
model: '10'
|
|
|
|
|
163 |
|
164 |
# microsoft
|
165 |
Microsoft:
|
@@ -502,12 +516,52 @@ TiPhone:
|
|
502 |
|
503 |
# Apple
|
504 |
Apple:
|
505 |
-
regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork|HomePod'
|
506 |
models:
|
507 |
- regex: 'HomePod'
|
508 |
device: 'smart speaker'
|
509 |
model: 'HomePod'
|
510 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
511 |
# specific smartphone devices
|
512 |
- regex: '(?:Apple-)?iPh(?:one)?1[C,_]1'
|
513 |
model: 'iPhone'
|
@@ -584,6 +638,18 @@ Apple:
|
|
584 |
- regex: '(?:Apple-)?iPh(?:one)?12[C,_][8]'
|
585 |
model: 'iPhone SE (2020)'
|
586 |
device: 'phablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
587 |
|
588 |
# specific tablet devices
|
589 |
- regex: '(?:Apple-)?iPad1[C,_]1'
|
@@ -1066,15 +1132,15 @@ Airness:
|
|
1066 |
|
1067 |
# Aiwa
|
1068 |
Aiwa:
|
1069 |
-
regex: '(?:AW790|M300|
|
1070 |
device: 'smartphone'
|
1071 |
models:
|
1072 |
- regex: 'AW790(?:[);/ ]|$)'
|
1073 |
model: 'AW790'
|
1074 |
- regex: 'AW500(?:[);/ ]|$)'
|
1075 |
model: 'AW500'
|
1076 |
-
- regex: '
|
1077 |
-
model: '
|
1078 |
- regex: 'M300(?:[);/ ]|$)'
|
1079 |
model: 'M300'
|
1080 |
device: 'phablet'
|
@@ -1118,7 +1184,7 @@ Arian Space:
|
|
1118 |
|
1119 |
# Alcatel (alcatelmobile.com)
|
1120 |
Alcatel:
|
1121 |
-
regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|TIMXL|(?:(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|
|
1122 |
device: 'smartphone'
|
1123 |
models:
|
1124 |
- regex: '5022[EDX]|5070D'
|
@@ -1189,8 +1255,12 @@ Alcatel:
|
|
1189 |
model: 'One Touch Dawn'
|
1190 |
- regex: '5024[ADF]|5028Y'
|
1191 |
model: '1S'
|
|
|
|
|
1192 |
- regex: '5002[AD]'
|
1193 |
model: '1B (2020)'
|
|
|
|
|
1194 |
- regex: '5002F'
|
1195 |
model: '1A (2020)'
|
1196 |
- regex: '5034D'
|
@@ -1275,6 +1345,12 @@ Alcatel:
|
|
1275 |
- regex: '9009G'
|
1276 |
model: '1T'
|
1277 |
device: 'tablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
1278 |
- regex: '9022X'
|
1279 |
model: 'One Touch Pixi 3 8"'
|
1280 |
device: 'phablet'
|
@@ -1389,6 +1465,8 @@ Alcatel:
|
|
1389 |
model: 'One Touch 813'
|
1390 |
- regex: 'OT871A'
|
1391 |
model: 'One Touch 871A'
|
|
|
|
|
1392 |
- regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
|
1393 |
device: 'tablet'
|
1394 |
model: 'One Touch $1'
|
@@ -1422,15 +1500,15 @@ Alcatel:
|
|
1422 |
model: 'Go Flip'
|
1423 |
- regex: '5044[GS]'
|
1424 |
model: 'U50'
|
1425 |
-
- regex: '5033[
|
1426 |
model: '1'
|
1427 |
- regex: '5009[AD]'
|
1428 |
model: '1C'
|
1429 |
-
- regex: '5008[
|
1430 |
model: '1X (2019)'
|
1431 |
- regex: '5007[AU]'
|
1432 |
model: '1V (2020)'
|
1433 |
-
- regex: '5003[
|
1434 |
model: '1C (2019)'
|
1435 |
- regex: '5006D'
|
1436 |
model: '3C (2019)'
|
@@ -1442,14 +1520,14 @@ Alcatel:
|
|
1442 |
model: '1SE (2020)'
|
1443 |
- regex: '5001[ADJTU]'
|
1444 |
model: '1V'
|
1445 |
-
- regex: '5059[
|
1446 |
model: '1X'
|
1447 |
- regex: '5059S'
|
1448 |
model: 'Avalon V'
|
1449 |
-
- regex: '
|
1450 |
model: '5V'
|
1451 |
device: 'phablet'
|
1452 |
-
- regex: '5052[ADY]|5053[
|
1453 |
model: '3'
|
1454 |
- regex: '5029E'
|
1455 |
model: '3 (2020)'
|
@@ -1459,7 +1537,7 @@ Alcatel:
|
|
1459 |
model: '3V'
|
1460 |
- regex: '5026[ADJ]'
|
1461 |
model: '3C'
|
1462 |
-
- regex: '5039[
|
1463 |
model: '3L'
|
1464 |
device: 'phablet'
|
1465 |
- regex: '5058[AIY]'
|
@@ -1654,13 +1732,16 @@ Allview:
|
|
1654 |
|
1655 |
# Allwinner
|
1656 |
Allwinner:
|
1657 |
-
regex: '(?:QUAD-CORE A64 p3|ZY-07B)(?:[);/ ]|$)'
|
1658 |
device: 'tablet'
|
1659 |
models:
|
1660 |
- regex: 'QUAD-CORE A64 p3'
|
1661 |
model: 'A64 QUAD-CORE p3'
|
1662 |
- regex: 'ZY-07B'
|
1663 |
model: 'ZY-07B'
|
|
|
|
|
|
|
1664 |
|
1665 |
# altron
|
1666 |
altron:
|
@@ -1729,6 +1810,8 @@ Ainol:
|
|
1729 |
models:
|
1730 |
- regex: 'Numy 3G AX1'
|
1731 |
model: 'Novo 7 Numy AX1 3G'
|
|
|
|
|
1732 |
- regex: 'NOVO10 Spark'
|
1733 |
model: 'Novo 10 Spark'
|
1734 |
- regex: 'AX10PRO'
|
@@ -1741,6 +1824,8 @@ Ainol:
|
|
1741 |
model: 'Numy 3G Talos 2'
|
1742 |
- regex: 'NUMY3GAX9(?:[);/ ]|$)'
|
1743 |
model: 'Numy 3G AX9'
|
|
|
|
|
1744 |
- regex: '(Novo 10 Hero QuadCore)'
|
1745 |
model: '$1'
|
1746 |
- regex: 'Aurora-II'
|
@@ -1973,7 +2058,7 @@ Garmin-Asus:
|
|
1973 |
|
1974 |
# Asus
|
1975 |
Asus:
|
1976 |
-
regex: 'Asus|Transformer|ZenFone Max|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)(?:[);/ ]|$)|G55[023]KL|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(
|
1977 |
device: 'smartphone'
|
1978 |
models:
|
1979 |
# explicit tablet models
|
@@ -2073,6 +2158,9 @@ Asus:
|
|
2073 |
- regex: 'ASUS Tablet P1801-T'
|
2074 |
model: 'Transformer AiO P1801 18.4"'
|
2075 |
device: 'tablet'
|
|
|
|
|
|
|
2076 |
|
2077 |
# explicit phablet models
|
2078 |
- regex: 'ME371MG(?:[);/ ]|$)'
|
@@ -2094,6 +2182,10 @@ Asus:
|
|
2094 |
# explicit smartphone models
|
2095 |
- regex: '(?:ASUS_)?T00N'
|
2096 |
model: 'PadFone S'
|
|
|
|
|
|
|
|
|
2097 |
- regex: '(?:ASUS_)?A002(A)?'
|
2098 |
model: 'ZenFone AR'
|
2099 |
- regex: '(?:ASUS_)?A006'
|
@@ -2120,7 +2212,7 @@ Asus:
|
|
2120 |
model: 'ZenFone Lite L1'
|
2121 |
- regex: '(?:ASUS_)Z00YD'
|
2122 |
model: 'Live'
|
2123 |
-
- regex: '(?:ASUS_)?(?:Z00[
|
2124 |
model: 'ZenFone 2 Laser'
|
2125 |
- regex: '(?:ASUS_)?(?:T00[IQ1]|Z01KD)'
|
2126 |
model: 'ZenFone 4'
|
@@ -2215,7 +2307,7 @@ Asus:
|
|
2215 |
- regex: '(?:Asus|Transformer) ((?:Pad |Prime )?TF[0-9a-z]+)'
|
2216 |
device: 'tablet'
|
2217 |
model: 'Transformer $1'
|
2218 |
-
- regex: 'Chromebook Flip (
|
2219 |
device: 'desktop'
|
2220 |
model: 'Chromebook Flip $1'
|
2221 |
|
@@ -2247,9 +2339,11 @@ AVH:
|
|
2247 |
|
2248 |
# Avvio
|
2249 |
Avvio:
|
2250 |
-
regex: 'Avvio[ _]?([a-z0-9\-]+)'
|
2251 |
device: 'smartphone'
|
2252 |
models:
|
|
|
|
|
2253 |
- regex: 'Avvio[ _]PAD'
|
2254 |
model: 'PAD'
|
2255 |
device: 'tablet'
|
@@ -2309,15 +2403,15 @@ Bitel:
|
|
2309 |
|
2310 |
# Blu
|
2311 |
Blu:
|
2312 |
-
regex: 'BLU[ _]|(?:blu|Dash)[ _]([^/;)]+)(?: Build|[;)])|Studio (5.0K|5.5|View XL|Mega|C 8\+8|
|
2313 |
device: 'smartphone'
|
2314 |
models:
|
2315 |
-
- regex: 'Advance (4.0 ?[LM]|4.0|5.[02](?: HD)?|A4|
|
2316 |
model: 'Advance $1'
|
2317 |
-
- regex: 'Studio (5.0 C|5.5|View XL|Mega|C 8\+8|C HD|C|G|Touch|M HD|M5 Plus|J[1258]|
|
2318 |
model: 'Studio $1'
|
2319 |
-
- regex: 'Studio
|
2320 |
-
model: 'Studio
|
2321 |
- regex: 'STUDIO SELFIE LTE'
|
2322 |
model: 'Studio Selfie LTE'
|
2323 |
- regex: 'STUDIO ONE'
|
@@ -2326,8 +2420,8 @@ Blu:
|
|
2326 |
model: 'Studio Selfie $1'
|
2327 |
- regex: 'STUDIO SELFIE'
|
2328 |
model: 'Studio Selfie'
|
2329 |
-
- regex: '
|
2330 |
-
model: '
|
2331 |
- regex: 'ENERGY DIAMOND'
|
2332 |
model: 'Energy Diamond'
|
2333 |
- regex: 'ENERGY XL'
|
@@ -2338,14 +2432,22 @@ Blu:
|
|
2338 |
model: 'Energy X Plus'
|
2339 |
- regex: 'LIFE XL'
|
2340 |
model: 'Life XL'
|
|
|
|
|
|
|
|
|
2341 |
- regex: 'Dash XL'
|
2342 |
model: 'Dash XL'
|
2343 |
- regex: 'PURE XL'
|
2344 |
model: 'Pure XL'
|
2345 |
- regex: 'Life One X2'
|
2346 |
model: 'Life One X2'
|
|
|
|
|
2347 |
- regex: 'LIFE ONE'
|
2348 |
model: 'Life One'
|
|
|
|
|
2349 |
- regex: 'NEO X PLUS'
|
2350 |
model: 'Neo X Plus'
|
2351 |
- regex: 'NEO (XL|X)'
|
@@ -2356,28 +2458,41 @@ Blu:
|
|
2356 |
model: 'Grand X LTE'
|
2357 |
- regex: 'Grand XL LTE'
|
2358 |
model: 'Grand XL LTE'
|
|
|
|
|
2359 |
- regex: 'B110DL'
|
2360 |
model: 'View Mega'
|
2361 |
- regex: 'R1 HD'
|
2362 |
model: 'R1 HD'
|
2363 |
- regex: 'R1 PLUS'
|
2364 |
model: 'R1 Plus'
|
|
|
|
|
2365 |
- regex: 'Tank Xtreme 5.0'
|
2366 |
model: 'Tank Xtreme 5.0'
|
2367 |
- regex: 'Tank Xtreme Pro'
|
2368 |
model: 'Tank Xtreme Pro'
|
2369 |
- regex: 'VIVO AIR LTE'
|
2370 |
model: 'Vivo Air LTE'
|
|
|
|
|
|
|
|
|
2371 |
|
2372 |
- regex: 'Touchbook M7 Pro'
|
2373 |
model: 'Touchbook M7 Pro'
|
2374 |
device: 'tablet'
|
|
|
|
|
|
|
2375 |
|
2376 |
-
- regex: 'DASH[
|
2377 |
model: 'Dash $1'
|
2378 |
-
|
|
|
2379 |
model: 'Dash $1'
|
2380 |
-
|
|
|
2381 |
model: '$1'
|
2382 |
|
2383 |
# Bluegood
|
@@ -2441,7 +2556,7 @@ Bluboo:
|
|
2441 |
|
2442 |
# Black Fox
|
2443 |
'Black Fox':
|
2444 |
-
regex: 'BMM[ _-]?(?:44[123]D|44[12]S|431D|533D|54[12]S|541[ABW]|54[123]D|543S|531[ABD])(?:[);/ ]|$)'
|
2445 |
device: 'smartphone'
|
2446 |
models:
|
2447 |
- regex: 'BMM443D'
|
@@ -2472,6 +2587,8 @@ Bluboo:
|
|
2472 |
model: 'B3'
|
2473 |
- regex: 'BMM541W'
|
2474 |
model: 'B7R Fox'
|
|
|
|
|
2475 |
- regex: 'BMM[ _-]?(533D|431D|54[12]S)(?:[);/ ]|$)'
|
2476 |
model: 'BMM $1'
|
2477 |
|
@@ -2810,9 +2927,9 @@ BenQ:
|
|
2810 |
- regex: 'BENQ(?:[ \-])?([a-z0-9]+)'
|
2811 |
model: '$1'
|
2812 |
|
2813 |
-
# Blaupunkt
|
2814 |
Blaupunkt:
|
2815 |
-
regex: 'Blaupunkt|Atlantis[_ ](?:1001A|1010A|A10\.G40[23])|SLplus02|Discovery[_ ](?:A10_302|111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803'
|
2816 |
device: 'tablet'
|
2817 |
models:
|
2818 |
- regex: 'Discovery[_ ]111C'
|
@@ -2825,6 +2942,8 @@ Blaupunkt:
|
|
2825 |
model: 'Discovery 1001A'
|
2826 |
- regex: 'Discovery[_ ]1001'
|
2827 |
model: 'Discovery 1001'
|
|
|
|
|
2828 |
- regex: 'Endeavour[_ ](101[GLM]|785|100[01]|101[03]|1100)'
|
2829 |
model: 'Endeavour $1'
|
2830 |
- regex: 'Polaris[_ ](803)'
|
@@ -2833,7 +2952,7 @@ Blaupunkt:
|
|
2833 |
model: 'Atlantis $1'
|
2834 |
- regex: 'SLplus02'
|
2835 |
model: 'SL Plus 02'
|
2836 |
-
- regex: 'Blaupunkt (SL 0[124]|SM
|
2837 |
device: 'smartphone'
|
2838 |
model: '$1'
|
2839 |
|
@@ -3182,8 +3301,8 @@ bq:
|
|
3182 |
- regex: 'Aquaris M8'
|
3183 |
model: 'Aquaris M8'
|
3184 |
device: 'tablet'
|
3185 |
-
- regex: '
|
3186 |
-
model: 'Aquaris
|
3187 |
- regex: 'BQ(?:ru)?[_ ]5590(?:[);/ ]|$)'
|
3188 |
model: 'Spring'
|
3189 |
- regex: 'BQ[S]?-(?:6016L|5520)(?:[);/ ]|$)'
|
@@ -3252,7 +3371,7 @@ bq:
|
|
3252 |
device: 'tablet'
|
3253 |
- regex: '(?:bq )?(Aquaris[^/;]*) Build'
|
3254 |
model: '$1'
|
3255 |
-
- regex: 'Aquaris (E(4.5|[56])|M(5|10)|U2 Lite|U2|U (Lite|Plus)|V Plus|X5 Plus|
|
3256 |
model: 'Aquaris $1'
|
3257 |
- regex: 'bq ([^/;]+) Build'
|
3258 |
model: '$1'
|
@@ -3260,9 +3379,12 @@ bq:
|
|
3260 |
|
3261 |
# Bush
|
3262 |
Bush:
|
3263 |
-
regex: 'Bush[ _-]'
|
3264 |
device: 'smartphone'
|
3265 |
models:
|
|
|
|
|
|
|
3266 |
- regex: 'BUSH ([^;/)]+)Tablet(?: Build|[);])'
|
3267 |
model: '$1Tablet'
|
3268 |
device: 'tablet'
|
@@ -3308,7 +3430,7 @@ Casper:
|
|
3308 |
regex: 'CASPER[_ ]|VIA[- _](T7D|A[34]|E3|F[123]|G4|M4|[LS]8|S7|P2|V8C|A1_Plus|A1|S10|S|T17_M|T1[07]|T7|T7-3G|T8B|T8D-3G)(?:[);/ ]|$)'
|
3309 |
device: 'smartphone'
|
3310 |
models:
|
3311 |
-
- regex: 'CASPER[_ ]
|
3312 |
model: 'VIA $1'
|
3313 |
- regex: 'CASPER_VIA_E1c'
|
3314 |
model: 'VIA E1C'
|
@@ -3324,8 +3446,6 @@ Casper:
|
|
3324 |
- regex: 'VIA[- _](T7D|S10|[LS]8|S7|T17_M|T1[07]|T7|T8B)(?:[);/ ]|$)'
|
3325 |
model: 'VIA $1'
|
3326 |
device: 'tablet'
|
3327 |
-
- regex: 'VIA[_ ](A[34]|E3|F[123]|G4|M4|P2|S|V8C|A1_Plus|A1)'
|
3328 |
-
model: 'VIA $1'
|
3329 |
|
3330 |
# Cat (Caterpillar, Catphones)
|
3331 |
Cat:
|
@@ -3387,49 +3507,63 @@ Changhong:
|
|
3387 |
|
3388 |
# Cherry Mobile
|
3389 |
'Cherry Mobile':
|
3390 |
-
regex: 'Cherry|Flare([ _])?(2X|4|A[123]|J[
|
3391 |
device: 'smartphone'
|
3392 |
models:
|
3393 |
-
|
3394 |
-
model: '$1'
|
3395 |
- regex: '(Flare2X)'
|
3396 |
model: '$1'
|
|
|
|
|
3397 |
- regex: 'Flare_HD_MAX'
|
3398 |
model: 'Flare HD Max'
|
3399 |
- regex: 'FLARE LITE'
|
3400 |
model: 'Flare Lite'
|
3401 |
- regex: 'Flare S Play'
|
3402 |
model: 'Flare S Play'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3403 |
- regex: 'Flare XL Plus'
|
3404 |
model: 'Flare XL Plus'
|
3405 |
- regex: 'Flare[ _]X[_ ]V2'
|
3406 |
model: 'Flare X V2'
|
3407 |
-
- regex: 'Flare[ _](A2|J3|P1|S[
|
3408 |
model: 'Flare $1 Lite'
|
3409 |
-
- regex: 'Flare[ _](J[12]|
|
3410 |
model: 'Flare $1 Mini'
|
3411 |
-
- regex: '
|
3412 |
-
model: 'Flare
|
3413 |
- regex: 'Flare S4 Max LTE'
|
3414 |
model: 'Flare S4 Max LTE'
|
3415 |
-
- regex: 'Flare
|
3416 |
-
model: 'Flare
|
3417 |
- regex: 'FlareS5LiteDTV'
|
3418 |
model: 'Flare S5 Lite DTV'
|
3419 |
-
- regex: 'Flare
|
3420 |
-
model: 'Flare
|
3421 |
-
- regex: 'Flare_S6_Plus'
|
3422 |
-
model: 'Flare S6 Plus'
|
3423 |
- regex: 'FLARE S6 POWER'
|
3424 |
model: 'Flare S6 Power'
|
3425 |
-
- regex: 'Flare(?:[ _])?(4|A[
|
3426 |
model: 'Flare $1'
|
3427 |
- regex: 'OMEGA HD 4'
|
3428 |
model: 'Omega HD 4'
|
3429 |
-
- regex: '
|
|
|
|
|
3430 |
model: '$1'
|
3431 |
device: 'tablet'
|
3432 |
|
|
|
|
|
|
|
3433 |
# China Mobile
|
3434 |
'China Mobile':
|
3435 |
regex: '(M812C|1501_M02|9930i|A1303|A309W|M651CY) Build'
|
@@ -3455,9 +3589,7 @@ Comio:
|
|
3455 |
model: 'CT701G Plus'
|
3456 |
device: 'tablet'
|
3457 |
|
3458 |
-
- regex: 'Comio[ _-]?([^;/)]+) Build'
|
3459 |
-
model: '$1'
|
3460 |
-
- regex: 'Comio[ _-]?([^;/)]+)'
|
3461 |
model: '$1'
|
3462 |
|
3463 |
# Compal
|
@@ -3468,9 +3600,11 @@ Compal:
|
|
3468 |
|
3469 |
# Artel
|
3470 |
Artel:
|
3471 |
-
regex: 'Artel[_ ]|\w+_ARTEL_\w
|
3472 |
device: 'smartphone'
|
3473 |
models:
|
|
|
|
|
3474 |
- regex: 'Artel[_ ](Quadro(?: Pro)?|Tesla|Air|Tomchi|Premium|U3_4G|Z5|Sentinel (?:X 8G|X D5|X))'
|
3475 |
model: '$1'
|
3476 |
- regex: 'Artel[_ ]Komi3'
|
@@ -3485,7 +3619,7 @@ Artel:
|
|
3485 |
|
3486 |
# ComTrade Tesla
|
3487 |
ComTrade Tesla:
|
3488 |
-
regex: 'Tesla|Impulse 7.85 3G|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)'
|
3489 |
device: 'smartphone'
|
3490 |
models:
|
3491 |
- regex: 'TeslaEvo5.0'
|
@@ -3496,6 +3630,9 @@ ComTrade Tesla:
|
|
3496 |
- regex: '(Impulse 7.85 3G)'
|
3497 |
model: '$1'
|
3498 |
device: 'tablet'
|
|
|
|
|
|
|
3499 |
- regex: 'Tesla_SP([^/;]+)L Build'
|
3500 |
model: 'Smartphone $1 Lite'
|
3501 |
- regex: 'Smartphone_6.1'
|
@@ -3633,6 +3770,8 @@ Condor:
|
|
3633 |
model: 'Griffe T7'
|
3634 |
- regex: 'Griffe T8 Plus'
|
3635 |
model: 'Griffe T8 Plus'
|
|
|
|
|
3636 |
- regex: 'Griffe T9'
|
3637 |
model: 'Griffe T9'
|
3638 |
- regex: 'PGN\-?522'
|
@@ -3667,8 +3806,14 @@ Condor:
|
|
3667 |
model: 'Plume L1'
|
3668 |
- regex: 'Plume L2 Pro'
|
3669 |
model: 'Plume L2 Pro'
|
|
|
|
|
3670 |
- regex: 'Plume L3 Plus'
|
3671 |
model: 'Plume L3 Plus'
|
|
|
|
|
|
|
|
|
3672 |
- regex: 'Plume P8 Pro'
|
3673 |
model: 'Plume P8 Pro'
|
3674 |
|
@@ -3677,7 +3822,7 @@ Condor:
|
|
3677 |
|
3678 |
# Coolpad
|
3679 |
Coolpad:
|
3680 |
-
regex: '(?:YL-)?Coolpad|(?:Cool_9S|8190Q|1831-A0|8676-[AM]01|CP8298_I00|CP3648A|CP8676_I0[23]|REVVLPLUS C3701A|VCR-[AI]0|C105-E0|C106-[79]|MTS-T0|cp3705A[S]?|ORL-C0|DLS-E0|8298-M02|5560S)(?:[);/ ]|$)|(8295|5860S) Build'
|
3681 |
device: 'smartphone'
|
3682 |
models:
|
3683 |
- regex: 'VCR-[AI]0'
|
@@ -3691,6 +3836,8 @@ Coolpad:
|
|
3691 |
model: '8190Q'
|
3692 |
- regex: 'DLS-E0(?:[);/ ]|$)'
|
3693 |
model: 'N5'
|
|
|
|
|
3694 |
- regex: 'CP3705A[S]?(?:[);/ ]|$)'
|
3695 |
model: 'Legacy'
|
3696 |
- regex: 'CP3648A(?:[);/ ]|$)'
|
@@ -3727,8 +3874,8 @@ Clarmin:
|
|
3727 |
regex: 'Clarmin'
|
3728 |
device: 'smartphone'
|
3729 |
models:
|
3730 |
-
- regex: '
|
3731 |
-
model: '
|
3732 |
|
3733 |
# Cricket
|
3734 |
Cricket:
|
@@ -3760,13 +3907,17 @@ Crosscall:
|
|
3760 |
- regex: 'Trekker-([MSX][1234](?: Core)?)'
|
3761 |
model: 'Trekker-$1'
|
3762 |
|
3763 |
-
# AllDocube (
|
3764 |
AllDocube:
|
3765 |
-
regex: '(?:T1001XS?|iPlay_20|U1006H?)(?:[);/ ]|$)'
|
3766 |
device: 'tablet'
|
3767 |
models:
|
3768 |
- regex: 'T1001XS(?:[);/ ]|$)'
|
3769 |
model: 'M5XS'
|
|
|
|
|
|
|
|
|
3770 |
- regex: 'T1001X(?:[);/ ]|$)'
|
3771 |
model: 'M5X'
|
3772 |
- regex: 'U1006H?(?:[);/ ]|$)'
|
@@ -3942,12 +4093,12 @@ Danew:
|
|
3942 |
device: 'tablet'
|
3943 |
model: 'Geodroid A5'
|
3944 |
|
3945 |
-
# Denver Electronics
|
3946 |
Denver:
|
3947 |
regex: '(?:TA[CDQ]-[0-9]+)|P(?:.+)TAQ-(?:[0-9]+)'
|
3948 |
device: 'tablet'
|
3949 |
models:
|
3950 |
-
- regex: 'P(?:.+)TAQ-(10172MK3|10242MK2|70242MK2|[0-9]+)(?:[);/ ]|$)'
|
3951 |
model: 'TAQ-$1'
|
3952 |
- regex: '(TA[CDQ]-[0-9]+)'
|
3953 |
model: '$1'
|
@@ -3989,7 +4140,7 @@ Desay:
|
|
3989 |
|
3990 |
# DEXP
|
3991 |
DEXP:
|
3992 |
-
regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|IxionML4.7|M150Storm|(?:SENIOR|F4[38]D8000K|VA[12]10|VA170|ML450|MS[56]50|BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|AL[23]50|AS155|AS260| (?:N280i|P380i|R110|B450|B340|A1[45]0))(?:[);/ ]|$)'
|
3993 |
device: 'smartphone'
|
3994 |
models:
|
3995 |
- regex: 'Ixion[_ ]([^;/]+)(?: Build|\))'
|
@@ -4029,7 +4180,7 @@ DEXP:
|
|
4029 |
- regex: 'H135[ _]Build'
|
4030 |
model: 'Atlas'
|
4031 |
device: 'desktop'
|
4032 |
-
- regex: '(BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|A1[45]0)(?:[);/ ]|$)'
|
4033 |
model: '$1'
|
4034 |
- regex: 'DEXP[ _]([^;/]+) Build'
|
4035 |
model: '$1'
|
@@ -4076,12 +4227,13 @@ Digicel:
|
|
4076 |
|
4077 |
# Digiland
|
4078 |
Digiland:
|
4079 |
-
regex: 'DL1008M'
|
4080 |
-
device: '
|
4081 |
models:
|
4082 |
- regex: 'DL1008M'
|
4083 |
-
device: 'tablet'
|
4084 |
model: 'DL1008M'
|
|
|
|
|
4085 |
|
4086 |
# Digma
|
4087 |
Digma:
|
@@ -4293,15 +4445,15 @@ Doro:
|
|
4293 |
|
4294 |
# DNS
|
4295 |
DNS:
|
4296 |
-
regex: '(?:DNS|AirTab)[ _\-]([^;/)]+)
|
4297 |
device: 'smartphone'
|
4298 |
models:
|
4299 |
- regex: '(?:DNS[_ ])?(S4505M|S4004M|SD01M|S4502|S4003|S4003)(?:[);/ ]|$)'
|
4300 |
model: '$1'
|
4301 |
-
- regex: 'AirTab[ _\-]([^;/]+)Build'
|
4302 |
model: 'AirTab $1'
|
4303 |
device: 'tablet'
|
4304 |
-
- regex: 'DNS[ _\-]([^;/]+)Build'
|
4305 |
model: '$1'
|
4306 |
|
4307 |
# E-Boda
|
@@ -4340,16 +4492,18 @@ EBEST:
|
|
4340 |
|
4341 |
# Echo Mobiles
|
4342 |
Echo Mobiles:
|
4343 |
-
regex: 'ECHO[ _](HOLI|HORIZON|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA)|HORIZON_M'
|
4344 |
device: 'smartphone'
|
4345 |
models:
|
4346 |
- regex: 'ECHO_HORIZON_LITE'
|
4347 |
model: 'HORIZON Lite'
|
4348 |
-
- regex: '(HORIZON_M)(?:[);/ ]|$)'
|
4349 |
model: '$1'
|
|
|
|
|
4350 |
- regex: 'ECHO_SMART_4G'
|
4351 |
model: 'SMART 4G'
|
4352 |
-
- regex: 'ECHO[ _](HOLI|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA)'
|
4353 |
model: '$1'
|
4354 |
|
4355 |
# ECS
|
@@ -4399,10 +4553,11 @@ Elephone:
|
|
4399 |
model: 'P6000 01'
|
4400 |
- regex: 'P6000 ?Pro(?:[);/ ]|$)'
|
4401 |
model: 'P6000 Pro'
|
4402 |
-
- regex: '(?:Elephone[ _])?(P[
|
4403 |
model: '$1'
|
4404 |
-
- regex: 'Elephone[ _\-]([^/;]+) Build'
|
4405 |
model: '$1'
|
|
|
4406 |
# Element
|
4407 |
Element:
|
4408 |
regex: 'AFTRS'
|
@@ -4516,7 +4671,7 @@ Senseit:
|
|
4516 |
|
4517 |
# Sony & Sony Ericsson (combined as they are mixed up)
|
4518 |
Sony:
|
4519 |
-
regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOG01|SOL2[246]|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|J3173|J82[17]0|J9110|J92[16]0|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A001SO|I4193|E6508|SOT31|SO-[45]1A|XQ-A[DT]51|XQ-AT42|XQ-AS72|XQ-A[TSU]52|SOL25|SOG02|A002SO|NW-A100Series'
|
4520 |
device: 'smartphone'
|
4521 |
models:
|
4522 |
# SONY ERICSSON: explicit smartphone models
|
@@ -4654,7 +4809,7 @@ Sony:
|
|
4654 |
model: 'Xperia 10'
|
4655 |
- regex: '(?:Sony(?:Ericsson)?)?J3173(?:[);/ ]|$)'
|
4656 |
model: 'Xperia Ace'
|
4657 |
-
- regex: '(?:A001SO|XQ-A[TU]52|SO-41A|SOV43)(?:[);/ ]|$)'
|
4658 |
model: 'Xperia 10 II'
|
4659 |
- regex: '(?:Sony(?:Ericsson)?)?I(?:42[19]3|3223)'
|
4660 |
model: 'Xperia 10 Plus'
|
@@ -4672,7 +4827,7 @@ Sony:
|
|
4672 |
model: 'Xperia 5 Dual'
|
4673 |
- regex: '(?:Sony(?:Ericsson)?)?(?:J82[17]0|SO-01M|SOV41|901SO)'
|
4674 |
model: 'Xperia 5'
|
4675 |
-
- regex: '(?:Sony(?:Ericsson)?)?(?:SOG02|A002SO|XQ-AS[75]2)'
|
4676 |
model: 'Xperia 5 II'
|
4677 |
- regex: '(?:Sony(?:Ericsson)?)?(?:SOV42|902SO)'
|
4678 |
model: 'Xperia 8'
|
@@ -4802,6 +4957,9 @@ Sony:
|
|
4802 |
- regex: 'Xperia Z2 Tablet Wifi'
|
4803 |
model: 'Xperia Z2 Tablet WiFi'
|
4804 |
device: 'tablet'
|
|
|
|
|
|
|
4805 |
- regex: '(?:Sony(?:Ericsson)?)?(?:D65(?:0[23]|43)|SO-03F)|Xperia Z2(?:[);/ ]|$)'
|
4806 |
model: 'Xperia Z2'
|
4807 |
- regex: 'D6563'
|
@@ -5142,7 +5300,7 @@ Evolveo:
|
|
5142 |
|
5143 |
# Explay
|
5144 |
Explay:
|
5145 |
-
regex: 'Explay|[\w]+-EXPLAY-FIN|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay|Leader|Infinityll|Imperium[78]'
|
5146 |
device: 'tablet'
|
5147 |
models:
|
5148 |
- regex: 'ActiveD[ _]7.4[ _]3G'
|
@@ -5166,6 +5324,9 @@ Explay:
|
|
5166 |
- regex: 'Atlant(?:[);/ ]|$)'
|
5167 |
device: 'smartphone'
|
5168 |
model: 'Atlant'
|
|
|
|
|
|
|
5169 |
|
5170 |
- regex: '[\w]+-EXPLAY-FIN'
|
5171 |
device: 'feature phone'
|
@@ -5189,6 +5350,8 @@ EvroMedia:
|
|
5189 |
models:
|
5190 |
- regex: 'Playpad 3G GOO'
|
5191 |
model: 'Play Pad 3G Goo'
|
|
|
|
|
5192 |
- regex: 'Play Pad PRO'
|
5193 |
model: 'Play Pad Pro'
|
5194 |
- regex: 'PLAY_PAD_PRO_XL'
|
@@ -5312,7 +5475,7 @@ FNB:
|
|
5312 |
|
5313 |
# Fujitsu
|
5314 |
Fujitsu:
|
5315 |
-
regex: '(?:F-01[FHJKL]|F-02[EFGHLK]|F-03[
|
5316 |
device: 'smartphone'
|
5317 |
models:
|
5318 |
- regex: 'F-51A(?:[);/ ]|$)'
|
@@ -5321,8 +5484,14 @@ Fujitsu:
|
|
5321 |
model: 'Arrows NX F-01F'
|
5322 |
- regex: 'F-01L(?:[);/ ]|$)'
|
5323 |
model: 'Easy Phone F-01L'
|
|
|
|
|
5324 |
- regex: 'F-03K(?:[);/ ]|$)'
|
5325 |
model: 'Easy Phone F-03K'
|
|
|
|
|
|
|
|
|
5326 |
- regex: 'F-01J(?:[);/ ]|$)'
|
5327 |
model: 'Arrows NX F-01J'
|
5328 |
- regex: 'F-01K(?:[);/ ]|$)'
|
@@ -5333,6 +5502,8 @@ Fujitsu:
|
|
5333 |
model: 'Arrows X F-02E'
|
5334 |
- regex: 'F-02G(?:[);/ ]|$)'
|
5335 |
model: 'Arrows NX F-02G'
|
|
|
|
|
5336 |
- regex: 'F-02H(?:[);/ ]|$)'
|
5337 |
model: 'Arrows NX F-02H'
|
5338 |
- regex: 'F-03D(?:[);/ ]|$)'
|
@@ -5392,17 +5563,8 @@ Fujitsu:
|
|
5392 |
- regex: 'arrowsM(0[45])(?:[);/ ]|$)'
|
5393 |
model: 'Arrows M$1'
|
5394 |
|
5395 |
-
- regex: 'F-
|
5396 |
-
model: 'Arrows Tab
|
5397 |
-
device: 'tablet'
|
5398 |
-
- regex: 'F-02K(?:[);/ ]|$)'
|
5399 |
-
model: 'Arrows Tab F-02K'
|
5400 |
-
device: 'tablet'
|
5401 |
-
- regex: 'F-03G(?:[);/ ]|$)'
|
5402 |
-
model: 'Arrows Tab F-03G'
|
5403 |
-
device: 'tablet'
|
5404 |
-
- regex: 'F-05E(?:[);/ ]|$)'
|
5405 |
-
model: 'Arrows Tab F-05E'
|
5406 |
device: 'tablet'
|
5407 |
- regex: 'FARTM933KZ'
|
5408 |
model: 'Arrows Tab M504/HA4'
|
@@ -5433,7 +5595,7 @@ Gemini:
|
|
5433 |
|
5434 |
# General Mobile
|
5435 |
General Mobile:
|
5436 |
-
regex: 'GM 5 Plus|GM8 go|GM [68] d|GM 8|General Mobile 4G'
|
5437 |
device: 'smartphone'
|
5438 |
models:
|
5439 |
- regex: 'GM 5 Plus'
|
@@ -5444,6 +5606,10 @@ General Mobile:
|
|
5444 |
model: 'GM 8'
|
5445 |
- regex: 'GM8 go'
|
5446 |
model: 'GM 8 Go'
|
|
|
|
|
|
|
|
|
5447 |
- regex: 'General Mobile 4G Dual'
|
5448 |
model: '4G Dual'
|
5449 |
- regex: 'General Mobile 4G'
|
@@ -5474,21 +5640,21 @@ Ghia:
|
|
5474 |
|
5475 |
# Gigabyte
|
5476 |
Gigabyte:
|
5477 |
-
regex: 'GSmart[ _][a-z0-9 ]+(?: Build|\))|Gigabyte-[a-z0-9]+|Simba SX1|Classic[_ ](?:Joy|Pro)'
|
5478 |
device: 'smartphone'
|
5479 |
models:
|
5480 |
-
- regex: '(GSmart[ _][a-z0-9 ]+)(?: Build
|
5481 |
model: '$1'
|
5482 |
- regex: 'Gigabyte-([a-z0-9]+)'
|
5483 |
model: '$1'
|
5484 |
-
- regex: '(Classic[ _](?:Joy|Pro))'
|
5485 |
model: '$1'
|
5486 |
- regex: 'Simba SX1'
|
5487 |
model: 'GSmart Simba SX1'
|
5488 |
|
5489 |
# Gigaset
|
5490 |
Gigaset:
|
5491 |
-
regex: 'Gigaset|(?:GS5[357]-6|GS[23]70(?:_Plus)?)(?:[);/ ]|$)'
|
5492 |
device: 'smartphone'
|
5493 |
models:
|
5494 |
- regex: 'Gigaset QV(1030|830)'
|
@@ -5497,7 +5663,7 @@ Gigaset:
|
|
5497 |
|
5498 |
- regex: 'G(S[23]70)[_ ]Plus(?:[);/ ]|$)'
|
5499 |
model: 'G$1 Plus'
|
5500 |
-
- regex: 'GS([23]70)(?:[);/ ]|$)'
|
5501 |
model: 'GS$1'
|
5502 |
- regex: 'GS57-6'
|
5503 |
model: 'ME Pro'
|
@@ -5668,6 +5834,8 @@ Google:
|
|
5668 |
model: 'Pixel 3a'
|
5669 |
- regex: 'Pixel 4 XL'
|
5670 |
model: 'Pixel 4 XL'
|
|
|
|
|
5671 |
- regex: 'pixel 4a'
|
5672 |
model: 'Pixel 4a'
|
5673 |
- regex: 'G011A'
|
@@ -5881,7 +6049,7 @@ Homtom:
|
|
5881 |
regex: 'Homtom|(?:HT[0-9]{1,2})(?: ?Pro)?(?:[);/ ]|$)'
|
5882 |
device: 'smartphone'
|
5883 |
models:
|
5884 |
-
- regex: '(?:Homtom[_ ])?HT([0-9]{1,2}(?: ?Pro)?)(?:[);/ ]|$)'
|
5885 |
model: 'HT$1'
|
5886 |
- regex: 'Homtom ([^;/]+) Build'
|
5887 |
model: '$1'
|
@@ -5897,9 +6065,13 @@ Hosin:
|
|
5897 |
|
5898 |
# Hoozo
|
5899 |
Hoozo:
|
5900 |
-
regex: 'HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)(?:[);/ ]|$)'
|
5901 |
device: 'tablet'
|
5902 |
-
|
|
|
|
|
|
|
|
|
5903 |
|
5904 |
# Minix (minix.us)
|
5905 |
Minix:
|
@@ -5929,7 +6101,7 @@ Minix:
|
|
5929 |
|
5930 |
# Huawei
|
5931 |
Huawei:
|
5932 |
-
regex: '(HW-)?(?:Huawei|MediaPad T1|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[23]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21[Lw]|A23L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|NIC-LX1A|MRX-(AL09|W09)|CDY-(?:[AT]N00|AN90|NX9A)|GLK-[AT]L00|JER-[AT]N10|ELS-(?:[AT]N[10]0|NX9|N39|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-AN[12]0|AQM-([AT]L[01]0|LX1)|MOA-(
|
5933 |
device: 'smartphone'
|
5934 |
models:
|
5935 |
- regex: 'POT-[TA]L00a(?:[);/ ]|$)'
|
@@ -5994,6 +6166,8 @@ Huawei:
|
|
5994 |
model: 'Enjoy 8e'
|
5995 |
- regex: 'MRD-[TA]L00(?:[);/ ]|$)'
|
5996 |
model: 'Enjoy 9e'
|
|
|
|
|
5997 |
- regex: 'U8665(?:[);/ ]|$)'
|
5998 |
model: 'Fusion 2'
|
5999 |
- regex: 'MED-LX9N?(?:[);/ ]|$)'
|
@@ -6052,6 +6226,8 @@ Huawei:
|
|
6052 |
model: 'Honor 4A'
|
6053 |
- regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?(?:[);/ ]|$)'
|
6054 |
model: 'Honor 4C'
|
|
|
|
|
6055 |
- regex: 'AQM-AL10(?:[);/ ]|$)'
|
6056 |
model: 'Honor 4T Pro'
|
6057 |
- regex: '(CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:1[12]|23)|Che1-L04|CHE-TL00)(?:[);/ ]|$)'
|
@@ -6110,13 +6286,13 @@ Huawei:
|
|
6110 |
model: 'Honor 8A Pro'
|
6111 |
- regex: 'BKK-(?:AL[10]0|L21|L22|LX2|TL00)(?:[);/ ]|$)'
|
6112 |
model: 'Honor 8C'
|
6113 |
-
- regex: 'KSA-(LX[
|
6114 |
model: 'Honor 8S'
|
6115 |
- regex: 'JSN-L(?:2[123]|42)|JSN-[TA]L00[a]?(?:[);/ ]|$)'
|
6116 |
model: 'Honor 8X'
|
6117 |
-
- regex: 'ARE-(?:AL[10]0|
|
6118 |
model: 'Honor 8X Max'
|
6119 |
-
- regex: 'STF-(?:AL[10]0|
|
6120 |
model: 'Honor 9'
|
6121 |
- regex: 'MOA-LX9N(?:[);/ ]|$)'
|
6122 |
model: 'Honor 9A'
|
@@ -6130,7 +6306,7 @@ Huawei:
|
|
6130 |
model: 'Honor 9S'
|
6131 |
- regex: 'HLK-AL00a?(?:[);/ ]|$)'
|
6132 |
model: 'Honor 9X'
|
6133 |
-
- regex: 'HLK-AL10(?:[);/ ]|$)'
|
6134 |
model: 'Honor 9X Pro'
|
6135 |
- regex: 'CAM-UL00(?:[);/ ]|$)'
|
6136 |
model: 'Honor Holly 3'
|
@@ -6164,7 +6340,7 @@ Huawei:
|
|
6164 |
model: 'Honor Play 7'
|
6165 |
- regex: 'JAT-[AT]L00(?:[);/ ]|$)'
|
6166 |
model: 'Honor Play 8A'
|
6167 |
-
- regex: 'MOA-
|
6168 |
model: 'Honor Play 9A'
|
6169 |
- regex: 'BKL-(?:AL00|AL20|AL30|L09|TL10)(?:[);/ ]|$)'
|
6170 |
model: 'Honor V10'
|
@@ -6232,13 +6408,15 @@ Huawei:
|
|
6232 |
model: 'Mate 30 Pro'
|
6233 |
- regex: 'LIO-N29(?:[);/ ]|$)'
|
6234 |
model: 'Mate 30 Pro 5G'
|
|
|
|
|
6235 |
- regex: 'NXT-(?:AL10|L29)(?:[);/ ]|$)'
|
6236 |
model: 'Mate 8'
|
6237 |
- regex: 'MHA-(?:L[02]9|[AT]L00)(?:[);/ ]|$)'
|
6238 |
model: 'Mate 9'
|
6239 |
- regex: 'BLL-L23(?:[);/ ]|$)'
|
6240 |
model: 'Mate 9 Lite'
|
6241 |
-
- regex: 'LON-(?:AL00
|
6242 |
model: 'Mate 9 Pro'
|
6243 |
- regex: 'NEO-AL00(?:[);/ ]|$)'
|
6244 |
model: 'Mate RS'
|
@@ -6278,7 +6456,7 @@ Huawei:
|
|
6278 |
model: 'Nova 5'
|
6279 |
- regex: 'SEA-AL10(?:[);/ ]|$)'
|
6280 |
model: 'Nova 5 Pro'
|
6281 |
-
- regex: 'GLK-[AT]L00(?:[);/ ]|$)'
|
6282 |
model: 'Nova 5i'
|
6283 |
- regex: 'SPN-TL00(?:[);/ ]|$)'
|
6284 |
model: 'Nova 5i Pro'
|
@@ -6344,7 +6522,7 @@ Huawei:
|
|
6344 |
model: 'P40 Pro Plus'
|
6345 |
- regex: 'GRA-(?:L09|UL00)(?:[);/ ]|$)'
|
6346 |
model: 'P8'
|
6347 |
-
- regex: '(?:ALE-L(?:02|21|23)|ALE-UL00|ALE-TL00)(?:[);/ ]|$)'
|
6348 |
model: 'P8 Lite (2015)'
|
6349 |
- regex: '(?:PRA-L(?:A1|X2|X1|X3)|hi6210sft)(?:[);/ ]|$)'
|
6350 |
model: 'P8 Lite (2017)'
|
@@ -6390,7 +6568,7 @@ Huawei:
|
|
6390 |
model: 'Y5 Pro (2017)'
|
6391 |
- regex: 'CUN-(?:L(?:0[123]|2[123]|33)|U29)(?:[);/ ]|$)'
|
6392 |
model: 'Y5II'
|
6393 |
-
- regex: 'SCC-U21(?:[);/ ]|$)'
|
6394 |
model: 'Y6'
|
6395 |
- regex: 'MYA-L11(?:[);/ ]|$)'
|
6396 |
model: 'Y6 (2016)'
|
@@ -6418,7 +6596,7 @@ Huawei:
|
|
6418 |
model: 'Y7 (2017)'
|
6419 |
- regex: 'LDN-L(?:01|X3)(?:[);/ ]|$)'
|
6420 |
model: 'Y7 (2018)'
|
6421 |
-
- regex: 'DUB-(?:LX[13]|TL00)(?:[);/ ]|$)'
|
6422 |
model: 'Y7 (2019)'
|
6423 |
- regex: '(LDN-(?:AL00|L21)|TRT-TL10)(?:[);/ ]|$)'
|
6424 |
model: 'Y7 Prime'
|
@@ -6428,6 +6606,8 @@ Huawei:
|
|
6428 |
model: 'Y7 Pro (2019)'
|
6429 |
- regex: 'DUB-AL20(?:[);/ ]|$)'
|
6430 |
model: 'Y7 Pro (2019)'
|
|
|
|
|
6431 |
- regex: 'AQM-LX1(?:[);/ ]|$)'
|
6432 |
model: 'Y8p'
|
6433 |
- regex: 'FLA-(LX[123]|AL20|TL10)(?:[);/ ]|$)'
|
@@ -6455,6 +6635,9 @@ Huawei:
|
|
6455 |
- regex: 'JDN-(?:AL00|W09)(?:[);/ ]|$)'
|
6456 |
model: 'Honor Pad 2'
|
6457 |
device: 'tablet'
|
|
|
|
|
|
|
6458 |
- regex: 'MON-(W|AL)19(?:[);/ ]|$)'
|
6459 |
device: 'tablet'
|
6460 |
model: 'MatePad C5 8'
|
@@ -6506,12 +6689,15 @@ Huawei:
|
|
6506 |
- regex: '(AGS2-AL00|JDN2-W09)HN(?:[);/ ]|$)'
|
6507 |
device: 'tablet'
|
6508 |
model: 'Honor Tab 5'
|
6509 |
-
- regex: 'AGS2-(?:[LW]09|L03)(?:[);/ ]|$)'
|
6510 |
device: 'tablet'
|
6511 |
model: 'MediaPad T5 10'
|
6512 |
- regex: 'KOB2-[LW]09(?:[);/ ]|$)'
|
6513 |
device: 'tablet'
|
6514 |
model: 'MediaPad T 8.0"'
|
|
|
|
|
|
|
6515 |
- regex: 'AGS-(?:L0[39]|W09)(?:[);/ ]|$)'
|
6516 |
device: 'tablet'
|
6517 |
model: 'MediaPad T3 10'
|
@@ -6551,6 +6737,9 @@ Huawei:
|
|
6551 |
- regex: '(?:d-01J|d-02[HK])(?:[);/ ]|$)'
|
6552 |
device: 'tablet'
|
6553 |
model: 'D Tab Compact'
|
|
|
|
|
|
|
6554 |
|
6555 |
|
6556 |
# smart watch regex
|
@@ -6569,18 +6758,20 @@ Huawei:
|
|
6569 |
model: 'Ascend Mate $1'
|
6570 |
- regex: 'Huawei[ _\-]?([^/;]*) Build'
|
6571 |
model: '$1'
|
6572 |
-
- regex: '(?:HW-)?Huawei(?:/1\.0/0?(?:Huawei))?[_\- /]?([a-z0-9\-_]+)'
|
6573 |
model: '$1'
|
6574 |
- regex: 'Huawei; ([a-z0-9 \-]+)'
|
6575 |
model: '$1'
|
6576 |
|
6577 |
# Hyundai
|
6578 |
Hyundai:
|
6579 |
-
regex: 'Hyundai|Ultra (?:Active|Air|Charm|Dream|Energy|Latitude|Link|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)|G(24027|2552[34])K|W25042L|HP554O'
|
6580 |
device: 'smartphone'
|
6581 |
models:
|
6582 |
- regex: 'Ultra (Active|Air|Charm|Dream|Energy Lite|Energy Plus|Energy|Latitude|Link|Live II|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)'
|
6583 |
model: 'Ultra $1'
|
|
|
|
|
6584 |
- regex: 'G25523K'
|
6585 |
model: 'Eternity G23'
|
6586 |
- regex: 'G25524K'
|
@@ -6591,6 +6782,22 @@ Hyundai:
|
|
6591 |
model: 'Eternity W42'
|
6592 |
- regex: 'HP554O'
|
6593 |
model: 'HP554O'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6594 |
- regex: 'Hyundai ([^;/]+) Build'
|
6595 |
model: '$1'
|
6596 |
device: 'tablet'
|
@@ -6632,13 +6839,19 @@ Hyundai:
|
|
6632 |
|
6633 |
# iBall
|
6634 |
iBall:
|
6635 |
-
regex: 'iBall[ _]([^;/)]+)[ _]Build|(?:Snap_4G2|6351-Q400i)(?:[);/ ]|$)'
|
6636 |
device: 'tablet'
|
6637 |
models:
|
6638 |
-
- regex: '(Snap_4G2)(?:[);/ ]|$)'
|
6639 |
model: '$1'
|
6640 |
- regex: '6351-Q400i(?:[);/ ]|$)'
|
6641 |
model: 'Slide'
|
|
|
|
|
|
|
|
|
|
|
|
|
6642 |
- regex: 'iBall[ _]([^;/)]+)[ _]Build'
|
6643 |
model: '$1'
|
6644 |
|
@@ -6667,7 +6880,7 @@ iRulu:
|
|
6667 |
|
6668 |
# Irbis
|
6669 |
Irbis:
|
6670 |
-
regex: 'IRBIS|TZ(1(?:0[04]|42|5[01]|84|65|7[01345-89]|8[356]|9[12578])|49|7(?:1[12467]|2[01567]|37|4[257]|5[23457]|6[12]|72|7[17]|8[1]|9[
|
6671 |
device: 'tablet'
|
6672 |
models:
|
6673 |
- regex: '(TZ(?:[0-9]+)|TZ(?:one|art|HIT|81L))(?:[);/ ]|$)'
|
@@ -6688,7 +6901,7 @@ iBerry:
|
|
6688 |
|
6689 |
# iHunt
|
6690 |
iHunt:
|
6691 |
-
regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019|S60_Discovery_2019|AlienXLite2020'
|
6692 |
device: 'smartphone'
|
6693 |
models:
|
6694 |
- regex: 'iHunt_Like'
|
@@ -6711,6 +6924,14 @@ iHunt:
|
|
6711 |
model: 'S60 Discovery (2019)'
|
6712 |
- regex: 'AlienXLite2020'
|
6713 |
model: 'Alien X Lite (2020)'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6714 |
|
6715 |
# IconBIT
|
6716 |
IconBIT:
|
@@ -6890,15 +7111,17 @@ M4tel:
|
|
6890 |
- regex: 'M4_B([23])'
|
6891 |
model: 'B$1'
|
6892 |
|
6893 |
-
# IMO Mobile
|
6894 |
IMO Mobile:
|
6895 |
regex: '(?:IMO)(?:[);/ ]|$)'
|
6896 |
device: 'smartphone'
|
6897 |
models:
|
6898 |
-
- regex: 'IMO[ _]
|
6899 |
-
model: '
|
6900 |
- regex: 'IMO[ _]Q2(?:[);/ ]|$)'
|
6901 |
model: 'Q2'
|
|
|
|
|
6902 |
- regex: 'IMO[ _]FEEL A2(?:[);/ ]|$)'
|
6903 |
model: 'Feel A2'
|
6904 |
- regex: 'IMO[ _]S50(?:[);/ ]|$)'
|
@@ -6953,7 +7176,7 @@ iNew:
|
|
6953 |
|
6954 |
# iPro
|
6955 |
iPro:
|
6956 |
-
regex: 'Kylin[ _]5.[05]|
|
6957 |
device: 'smartphone'
|
6958 |
models:
|
6959 |
- regex: 'Kylin_5.0S'
|
@@ -6962,7 +7185,14 @@ iPro:
|
|
6962 |
model: 'Kylin $1'
|
6963 |
- regex: 'Jade7s'
|
6964 |
model: 'Jade 7s'
|
6965 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6966 |
|
6967 |
# Infinix
|
6968 |
Infinix:
|
@@ -7267,14 +7497,11 @@ iOcean:
|
|
7267 |
- regex: 'iOCEAN[ _\-]?([^);/ ]+)'
|
7268 |
model: '$1'
|
7269 |
|
7270 |
-
# iView
|
7271 |
iView:
|
7272 |
-
regex: '733TPC'
|
7273 |
-
device: '
|
7274 |
-
|
7275 |
-
- regex: '733TPC'
|
7276 |
-
device: 'tablet'
|
7277 |
-
model: '733TPC'
|
7278 |
|
7279 |
# Impression
|
7280 |
Impression:
|
@@ -7377,13 +7604,21 @@ Just5:
|
|
7377 |
- regex: 'BLASTER'
|
7378 |
model: 'Blaster'
|
7379 |
|
7380 |
-
# Kalley
|
7381 |
Kalley:
|
7382 |
-
regex: 'ELEMENT Q'
|
7383 |
device: 'smartphone'
|
7384 |
models:
|
7385 |
- regex: 'ELEMENT Q'
|
7386 |
model: 'Element Q'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7387 |
|
7388 |
# Kaan
|
7389 |
Kaan:
|
@@ -7616,9 +7851,15 @@ K-Touch:
|
|
7616 |
- regex: 'K-?Touch[ _]([a-z0-9]+)'
|
7617 |
model: '$1'
|
7618 |
|
|
|
|
|
|
|
|
|
|
|
|
|
7619 |
# kyocera (kyocera.co.jp, kyocera.com)
|
7620 |
Kyocera:
|
7621 |
-
regex: 'Kyocera|KWC-|QC
|
7622 |
device: 'smartphone'
|
7623 |
models:
|
7624 |
# explicit smartphone models
|
@@ -7634,6 +7875,8 @@ Kyocera:
|
|
7634 |
model: 'Digno G'
|
7635 |
- regex: '503KC(?:[);/ ]|$)'
|
7636 |
model: 'Digno E'
|
|
|
|
|
7637 |
- regex: '704KC(?:[);/ ]|$)'
|
7638 |
model: 'Digno J'
|
7639 |
- regex: '302KC(?:[);/ ]|$)'
|
@@ -7642,8 +7885,12 @@ Kyocera:
|
|
7642 |
model: 'Digno'
|
7643 |
- regex: 'KYV36(?:[);/ ]|$)'
|
7644 |
model: 'Digno Rafre'
|
|
|
|
|
7645 |
- regex: 'KYV39(?:[);/ ]|$)'
|
7646 |
model: 'Miraie F'
|
|
|
|
|
7647 |
- regex: 'C5170(?:[);/ ]|$)'
|
7648 |
model: 'Hydro'
|
7649 |
- regex: 'C5215(?:[);/ ]|$)'
|
@@ -7700,7 +7947,7 @@ Kyocera:
|
|
7700 |
model: 'Qua Phone'
|
7701 |
- regex: 'KYV42(?:[);/ ]|$)'
|
7702 |
model: 'Qua Phone QX'
|
7703 |
-
- regex: 'KYV44(?:
|
7704 |
model: 'Qua Phone QZ'
|
7705 |
- regex: 'KYT33(?:[);/ ]|$)'
|
7706 |
model: 'Qua Tab QZ10'
|
@@ -7749,14 +7996,16 @@ Kyocera:
|
|
7749 |
model: 'KZ $1'
|
7750 |
- regex: 'Kyocera(?:[\-/])?([a-z0-9]+)'
|
7751 |
model: '$1'
|
7752 |
-
- regex: '(
|
7753 |
-
model: '$1'
|
7754 |
|
7755 |
# Krüger&Matz (Kruger&Matz)
|
7756 |
Krüger&Matz:
|
7757 |
-
regex: 'Kruger[ _&]Matz|KrugerMatz[ _]|FLOW5PLUS|FLOW7|
|
7758 |
device: 'smartphone'
|
7759 |
models:
|
|
|
|
|
7760 |
- regex: 'MOVE_6_mini'
|
7761 |
model: 'MOVE 6 Mini'
|
7762 |
- regex: 'MOVE[_ ]([78]|6S)'
|
@@ -7767,6 +8016,8 @@ Krüger&Matz:
|
|
7767 |
model: 'DRIVE $1'
|
7768 |
- regex: 'FLOW5PLUS(?:[);/ ]|$)'
|
7769 |
model: 'FLOW 5 Plus'
|
|
|
|
|
7770 |
- regex: 'FLOW[ _]?([476][S]?)(?:[);/ ]|$)'
|
7771 |
model: 'FLOW $1'
|
7772 |
- regex: 'LIVE4_(KM043[89])(?:[);/ ]|$)'
|
@@ -7779,6 +8030,8 @@ Krüger&Matz:
|
|
7779 |
model: 'LIVE 5 Plus'
|
7780 |
- regex: 'LIVE_6plus(?:[);/ ]|$)'
|
7781 |
model: 'LIVE 6 Plus' # KM0454
|
|
|
|
|
7782 |
|
7783 |
- regex: 'KM(106[67])(?:[);/ ]|$)'
|
7784 |
device: 'tablet'
|
@@ -7816,7 +8069,7 @@ AIS:
|
|
7816 |
|
7817 |
# Lava (Lavamobiles.com)
|
7818 |
Lava:
|
7819 |
-
regex: 'Lava[ _]|LAVAA1|(?:DISCOVER136|KKT QUADRA)|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair Z1|PixelV1|Z61_2GB|A97 IPS)(?:[);/ ]|$)'
|
7820 |
device: 'smartphone'
|
7821 |
models:
|
7822 |
- regex: 'Flair Z1(?:[);/ ]|$)'
|
@@ -7827,8 +8080,8 @@ Lava:
|
|
7827 |
model: 'A67'
|
7828 |
- regex: 'A76 Build'
|
7829 |
model: 'A76'
|
7830 |
-
- regex: '
|
7831 |
-
model: 'Pixel
|
7832 |
- regex: 'X1 Selfie Build'
|
7833 |
model: 'Iris X1 Selfie'
|
7834 |
- regex: 'X41 Plus Build'
|
@@ -7839,6 +8092,16 @@ Lava:
|
|
7839 |
model: 'R1'
|
7840 |
- regex: 'Z61_2GB(?:[);/ ]|$)'
|
7841 |
model: 'Z61'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7842 |
|
7843 |
- regex: 'DISCOVER136'
|
7844 |
device: 'feature phone'
|
@@ -7877,15 +8140,15 @@ Land Rover:
|
|
7877 |
|
7878 |
# lanix
|
7879 |
Lanix:
|
7880 |
-
regex: 'LANIX-([a-z0-9]+)|Ilium[ _]|X120C|Alpha 950'
|
7881 |
device: 'smartphone'
|
7882 |
models:
|
7883 |
-
- regex: 'ILIUM[ _]PAD[ _]([^;/]+) Build'
|
7884 |
model: 'Ilium Pad $1'
|
7885 |
device: 'tablet'
|
7886 |
- regex: 'X120C'
|
7887 |
model: 'Ilium X120C'
|
7888 |
-
- regex: 'Ilium[ _](Alpha
|
7889 |
model: 'Ilium $1'
|
7890 |
- regex: 'ILIUM[ _]([^;/]+) Build'
|
7891 |
model: 'Ilium $1'
|
@@ -7954,7 +8217,7 @@ LCT:
|
|
7954 |
|
7955 |
# Leagoo
|
7956 |
Leagoo:
|
7957 |
-
regex: 'LEAGOO[ _-]?|(?:M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _]7s|Elite
|
7958 |
device: 'smartphone'
|
7959 |
models:
|
7960 |
- regex: 'LEAGOO[- _]M8[_-]?Pro(?:[);/ ]|$)'
|
@@ -7969,8 +8232,8 @@ Leagoo:
|
|
7969 |
model: 'KICCAA Power'
|
7970 |
- regex: 'KIICAA MIX'
|
7971 |
model: 'KICCAA Mix'
|
7972 |
-
- regex: 'Elite
|
7973 |
-
model: 'Elite 1'
|
7974 |
- regex: 'Venture 1(?:[);/ ]|$)'
|
7975 |
model: 'Venture 1'
|
7976 |
- regex: '(Z10-E)(?:[);/ ]|$)'
|
@@ -8054,9 +8317,9 @@ Lenco:
|
|
8054 |
device: 'tablet'
|
8055 |
model: '$1'
|
8056 |
|
8057 |
-
# lenovo
|
8058 |
Lenovo:
|
8059 |
-
regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|YT3-X50[ML]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|S6000|Z2 Plus|Vibe P1|VIBE C|VIBE [ZX]2|Vibe K5(?: Plus)?|P2A42|L18011|[5-8]01LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC)(?:[);/ ]|$)'
|
8060 |
device: 'smartphone'
|
8061 |
models:
|
8062 |
- regex: 'Lenovo ?G780'
|
@@ -8065,7 +8328,7 @@ Lenovo:
|
|
8065 |
- regex: 'Lenovo ?A3500-FL'
|
8066 |
model: 'IdeaTab A7-40'
|
8067 |
device: 'tablet'
|
8068 |
-
- regex: 'Lenovo ?A3500-(H|HV|F)'
|
8069 |
model: 'IdeaTab A7-50'
|
8070 |
device: 'tablet'
|
8071 |
- regex: '(?:Lenovo[ _])?A5500-[HF]'
|
@@ -8077,6 +8340,9 @@ Lenovo:
|
|
8077 |
- regex: 'A2107A-H'
|
8078 |
model: 'A2107'
|
8079 |
device: 'tablet'
|
|
|
|
|
|
|
8080 |
- regex: 'TB2-X30[FL]'
|
8081 |
model: 'Tab 2 A10-30'
|
8082 |
device: 'tablet'
|
@@ -8089,19 +8355,40 @@ Lenovo:
|
|
8089 |
- regex: 'TB3-710[IF]'
|
8090 |
model: 'TAB3 7 Essential'
|
8091 |
device: 'tablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8092 |
- regex: 'TAB 2 A8-50LC'
|
8093 |
model: 'TAB2 A8-50LC'
|
8094 |
device: 'tablet'
|
8095 |
- regex: '501LV(?:[);/ ]|$)'
|
8096 |
model: 'TAB2 8.0"'
|
8097 |
device: 'tablet'
|
|
|
|
|
|
|
8098 |
- regex: '(?:TB3-850[FM]|601LV)(?:[);/ ]|$)'
|
8099 |
model: 'TAB3 8'
|
8100 |
device: 'tablet'
|
8101 |
-
- regex: '
|
|
|
|
|
|
|
8102 |
model: 'TAB4 10'
|
8103 |
device: 'tablet'
|
8104 |
-
- regex: '
|
|
|
|
|
|
|
|
|
|
|
|
|
8105 |
model: 'TAB4 10 Plus'
|
8106 |
device: 'tablet'
|
8107 |
- regex: '801LV(?:[);/ ]|$)'
|
@@ -8116,6 +8403,21 @@ Lenovo:
|
|
8116 |
- regex: 'TB-X605F(?:[);/ ]|$)'
|
8117 |
model: 'Tab M10'
|
8118 |
device: 'tablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8119 |
- regex: 'Lenovo ?B8000(-[FH])?'
|
8120 |
model: 'Yoga Tablet 10'
|
8121 |
device: 'tablet'
|
@@ -8140,6 +8442,9 @@ Lenovo:
|
|
8140 |
- regex: 'YT3-850M'
|
8141 |
model: 'Yoga Tab 3 10'
|
8142 |
device: 'tablet'
|
|
|
|
|
|
|
8143 |
|
8144 |
- regex: 'S6000(?:[);/ ]|$)'
|
8145 |
model: 'IdeaTab S6000'
|
@@ -8153,25 +8458,22 @@ Lenovo:
|
|
8153 |
- regex: 'ThinkPad ?Tablet([^;/]*) Build'
|
8154 |
model: 'ThinkPad Tablet$1'
|
8155 |
device: 'tablet'
|
8156 |
-
- regex: 'IdeaPad ?([^;/]*) Build'
|
8157 |
-
model: 'IdeaPad $1'
|
8158 |
-
device: 'tablet'
|
8159 |
-
- regex: 'Lenovo TAB ?([^/;]*) Build'
|
8160 |
-
model: 'TAB $1'
|
8161 |
-
device: 'tablet'
|
8162 |
- regex: 'Lenovo ?A3300-(?:GV|H)'
|
8163 |
model: 'TAB 2 A7-30'
|
8164 |
device: 'tablet'
|
|
|
|
|
|
|
8165 |
- regex: 'TB-8504F'
|
8166 |
model: 'TAB 4 8'
|
8167 |
device: 'tablet'
|
8168 |
- regex: 'TB-X304F'
|
8169 |
-
model: '
|
8170 |
device: 'tablet'
|
8171 |
-
- regex: '
|
8172 |
model: 'M10'
|
8173 |
device: 'tablet'
|
8174 |
-
- regex: '
|
8175 |
model: 'E10'
|
8176 |
device: 'tablet'
|
8177 |
- regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
|
@@ -8183,8 +8485,8 @@ Lenovo:
|
|
8183 |
- regex: 'Yoga Tablet([^;/]+) Build'
|
8184 |
model: 'Yoga Tablet$1'
|
8185 |
device: 'tablet'
|
8186 |
-
- regex: '
|
8187 |
-
model: 'Tab
|
8188 |
device: 'tablet'
|
8189 |
- regex: 'Lenovo (TB[0-9]?\-[a-z0-9\-]+) Build'
|
8190 |
model: '$1'
|
@@ -8209,6 +8511,8 @@ Lenovo:
|
|
8209 |
model: 'K4 Note'
|
8210 |
- regex: 'K350t(?:[);/ ]|$)'
|
8211 |
model: 'K5'
|
|
|
|
|
8212 |
- regex: 'A7020a4[08](?:[);/ ]|$)'
|
8213 |
model: 'K5 Note'
|
8214 |
- regex: 'K31-t3(?:[);/ ]|$)'
|
@@ -8251,11 +8555,25 @@ Lenovo:
|
|
8251 |
model: 'A3'
|
8252 |
- regex: 'PB2-670M(?:[);/ ]|$)'
|
8253 |
model: 'Phab 2'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8254 |
- regex: 'Lenovo ([^/;]*) Build'
|
8255 |
model: '$1'
|
8256 |
- regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]?([a-z0-9_+\-]+)'
|
8257 |
model: '$1'
|
8258 |
|
|
|
8259 |
# Lexand
|
8260 |
Lexand:
|
8261 |
regex: '(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802)(?:[);/ ]|$)|Lexand ([^;/]+) Build'
|
@@ -8347,7 +8665,7 @@ Lexibook:
|
|
8347 |
|
8348 |
# LG
|
8349 |
LG:
|
8350 |
-
regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127]))(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[0578]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05D|L-03K|L-01[LJK]|L-[45]1A|901LG|A001LG|
|
8351 |
device: 'smartphone'
|
8352 |
models:
|
8353 |
- regex: 'LG-D325'
|
@@ -8366,7 +8684,7 @@ LG:
|
|
8366 |
model: 'G2'
|
8367 |
- regex: 'LG-D6(?:18|20)'
|
8368 |
model: 'G2 Mini'
|
8369 |
-
- regex: 'LG-D85[
|
8370 |
model: 'G3'
|
8371 |
- regex: 'LG-D72[2458]'
|
8372 |
model: 'G3 Beat'
|
@@ -8380,7 +8698,7 @@ LG:
|
|
8380 |
model: 'G4s'
|
8381 |
- regex: 'LG-H735'
|
8382 |
model: 'G4 Beat'
|
8383 |
-
- regex: 'LG-H8(?:20|
|
8384 |
model: 'G5'
|
8385 |
- regex: 'LG-H84[05]'
|
8386 |
model: 'G5 SE'
|
@@ -8396,7 +8714,7 @@ LG:
|
|
8396 |
model: 'G8S ThinQ'
|
8397 |
- regex: '901LG(?:[);/ ]|$)'
|
8398 |
model: 'G8X ThinQ'
|
8399 |
-
- regex: 'VS501'
|
8400 |
model: 'K20'
|
8401 |
- regex: '(?:LG-)?H502'
|
8402 |
model: 'Magna'
|
@@ -8424,6 +8742,8 @@ LG:
|
|
8424 |
model: 'V20'
|
8425 |
- regex: 'LM-Q710(?:\(FGN\)|[\.]?FGN)'
|
8426 |
model: 'Q Stylus Plus'
|
|
|
|
|
8427 |
- regex: 'LM-Q[67]10\.FG(?:[);/ ]|$)'
|
8428 |
model: 'Q7'
|
8429 |
- regex: 'LM-(Q725[KL]|Q610.FGN)(?:[);/ ]|$)'
|
@@ -8466,7 +8786,7 @@ LG:
|
|
8466 |
model: 'X4'
|
8467 |
- regex: 'LM-X(415[LS]|410L)'
|
8468 |
model: 'X4+'
|
8469 |
-
- regex: 'LM-X410
|
8470 |
model: 'K11'
|
8471 |
- regex: 'LM-X(?:320|410[UP]M)'
|
8472 |
model: 'K30'
|
@@ -8597,6 +8917,9 @@ LG:
|
|
8597 |
- regex: 'VS870 4G'
|
8598 |
model: 'Lucid 2'
|
8599 |
|
|
|
|
|
|
|
8600 |
- regex: 'LG-V490'
|
8601 |
model: 'G Pad 8.0'
|
8602 |
device: 'tablet'
|
@@ -8668,11 +8991,11 @@ Lingwin:
|
|
8668 |
|
8669 |
# Logicom
|
8670 |
Logicom:
|
8671 |
-
regex: 'LOGICOM[_ ]|(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|La Tab
|
8672 |
device: 'tablet'
|
8673 |
models:
|
8674 |
-
- regex: 'La Tab
|
8675 |
-
model: 'La Tab
|
8676 |
- regex: 'LOGICOM_LA_TAB_LINK_71'
|
8677 |
model: 'La Tab Link 71'
|
8678 |
- regex: 'KT712A_4.4'
|
@@ -8683,7 +9006,7 @@ Logicom:
|
|
8683 |
model: 'L-ixir Tab $1'
|
8684 |
- regex: 'L-ITE[ _]([^;/]+) Build'
|
8685 |
model: 'L-ite Tab $1'
|
8686 |
-
- regex: 'L-EMENT ?(
|
8687 |
model: 'L-ement $1'
|
8688 |
device: 'smartphone'
|
8689 |
- regex: 'L-?EMENT[ _](?:TAB)?([^;/]+) Build'
|
@@ -8753,9 +9076,9 @@ Konka:
|
|
8753 |
device: 'feature phone'
|
8754 |
model: '$1'
|
8755 |
|
8756 |
-
# Konrow
|
8757 |
Konrow:
|
8758 |
-
regex: '(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5)(?:[);/ ]|$)'
|
8759 |
device: 'smartphone'
|
8760 |
models:
|
8761 |
- regex: 'BIGCOOL(?:[);/ ]|$)'
|
@@ -8768,10 +9091,14 @@ Konrow:
|
|
8768 |
model: 'Just 5'
|
8769 |
- regex: 'Link5(?:[);/ ]|$)'
|
8770 |
model: 'Link 5'
|
|
|
|
|
|
|
|
|
8771 |
|
8772 |
# Karbonn (karbonnmobiles.com)
|
8773 |
Karbonn:
|
8774 |
-
regex: '(?:Browser-)?Karbonn|K9 Kavach 4G|K9 Music 4G|K9 Smart|K9 VIRAAT 4G|Aura Sleek Plus|Aura Note Play|Titanium[ _](?:3D-Plex|Octane Plus|Vista 4G|Jumbo|S360|S1[059]|S35|S20[13]|S22|S1|S200 HD)|K-lite F3'
|
8775 |
device: 'smartphone'
|
8776 |
models:
|
8777 |
- regex: 'K9 Kavach 4G'
|
@@ -8788,6 +9115,8 @@ Karbonn:
|
|
8788 |
model: 'K9 Smart Yuva'
|
8789 |
- regex: 'K9 Smart'
|
8790 |
model: 'K9 Smart'
|
|
|
|
|
8791 |
- regex: 'Aura Sleek Plus'
|
8792 |
model: 'Aura Sleek Plus'
|
8793 |
- regex: 'Aura Note Play'
|
@@ -8804,6 +9133,8 @@ Karbonn:
|
|
8804 |
model: 'Titanium Jumbo 2'
|
8805 |
- regex: 'Titanium Jumbo'
|
8806 |
model: 'Titanium Jumbo'
|
|
|
|
|
8807 |
- regex: 'Titanium Octane Plus'
|
8808 |
model: 'Titanium Octane Plus'
|
8809 |
- regex: 'Titanium[ _]3D-Plex'
|
@@ -8923,25 +9254,29 @@ Masstel:
|
|
8923 |
|
8924 |
# Maxwest
|
8925 |
Maxwest:
|
8926 |
-
regex: '(?:Astro_5N_LTE|Virtue Z5|Astro X55s|Nitro_4)(?:[);/ ]|$)'
|
8927 |
device: 'smartphone'
|
8928 |
models:
|
8929 |
- regex: 'Astro_5N_LTE'
|
8930 |
model: 'Astro 5N LTE'
|
|
|
|
|
8931 |
- regex: 'Virtue Z5'
|
8932 |
model: 'Virtue Z5'
|
8933 |
- regex: 'Astro X55s'
|
8934 |
model: 'Astro X55s'
|
8935 |
- regex: 'Nitro_4'
|
8936 |
model: 'Nitro 4'
|
|
|
|
|
8937 |
|
8938 |
# Maze
|
8939 |
Maze:
|
8940 |
-
regex: '(?:SSB-500|Alpha[_ ]X|Maze Alpha|SSB504R)(?:[);/ ]|$)'
|
8941 |
device: 'smartphone'
|
8942 |
models:
|
8943 |
-
- regex: 'SSB-500(?:[);/ ]|$)'
|
8944 |
-
model: 'SSB
|
8945 |
- regex: 'SSB504R(?:[);/ ]|$)'
|
8946 |
model: 'Speed'
|
8947 |
- regex: 'Alpha[_ ]X(?:[);/ ]|$)'
|
@@ -8951,7 +9286,7 @@ Maze:
|
|
8951 |
|
8952 |
# Mediacom
|
8953 |
Mediacom:
|
8954 |
-
regex: '(?:SmartPad7503G|M-SP10MXA|SmartPad970s2(?:3G)?|M[_-][MPS]P[0-9a-z]+|M-IPRO[0-9a-z]
|
8955 |
device: 'tablet'
|
8956 |
models:
|
8957 |
- regex: 'SmartPad7503G(?:[);/ ]|$)'
|
@@ -8966,6 +9301,10 @@ Mediacom:
|
|
8966 |
model: 'SmartPad 9.7 Mobile'
|
8967 |
- regex: 'M-SP10MXA(?:[);/ ]|$)'
|
8968 |
model: 'SmartPad MX 10'
|
|
|
|
|
|
|
|
|
8969 |
- regex: 'M-MP(?:710|720|725|726|740)GOx?(?:[);/ ]|$)'
|
8970 |
model: 'SmartPad 7.0 Go'
|
8971 |
- regex: 'M-MP876S2(?:[);/ ]|$)'
|
@@ -8978,6 +9317,8 @@ Mediacom:
|
|
8978 |
model: 'SmartPad 875 S2 3G'
|
8979 |
- regex: 'M-SP1AGO3G'
|
8980 |
model: 'SmartPad 10 Go 3G'
|
|
|
|
|
8981 |
- regex: 'M-MP10[45][01]S2(?:[);/ ]|$)'
|
8982 |
model: 'SmartPad 10.1 S2'
|
8983 |
- regex: 'M-MP1S2[AB]3G(?:[);/ ]|$)'
|
@@ -9018,6 +9359,9 @@ Mediacom:
|
|
9018 |
- regex: 'M-PPAG550(?:[);/ ]|$)'
|
9019 |
model: 'PhonePad Duo G550'
|
9020 |
device: 'phablet'
|
|
|
|
|
|
|
9021 |
- regex: 'M-PP2G530(?:[);/ ]|$)'
|
9022 |
model: 'PhonePad Duo G530'
|
9023 |
device: 'phablet'
|
@@ -9049,9 +9393,12 @@ Mediacom:
|
|
9049 |
- regex: 'M-PPxG(400|501|[457][PM]?)(?:[);/ ]|$)'
|
9050 |
model: 'PhonePad Duo G$1'
|
9051 |
device: 'smartphone'
|
9052 |
-
- regex: 'M-PPxS(470|501|5P?)(?:[);/ ]|$)'
|
9053 |
model: 'PhonePad Duo S$1'
|
9054 |
device: 'smartphone'
|
|
|
|
|
|
|
9055 |
|
9056 |
- regex: 'M-MP([0-9a-z]+)'
|
9057 |
model: 'SmartPad $1'
|
@@ -9089,7 +9436,7 @@ MEEG:
|
|
9089 |
|
9090 |
# Meizu
|
9091 |
Meizu:
|
9092 |
-
regex: 'Meizu|MZ-[a-z]|(M04[05]|MZ-16th(?: Plus)?|MZ-16[st]|M7[12]1C|M35[1356]|M612C|M578CA|M181[36]|M1822|M681C|M6T|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M621C|M1852|M57[18]C|M3[ESX]|M031|m1 metal|M1 E|M2|M2 E|M5s Build|PRO 6|PRO 7-H|MZ-15 (?:Lite|Plus)|MZ-16 X)(?:[);/ ]|$)'
|
9093 |
device: 'smartphone'
|
9094 |
models:
|
9095 |
- regex: '(?:MZ-)?M571C'
|
@@ -9153,13 +9500,13 @@ Meizu:
|
|
9153 |
model: 'Note 8'
|
9154 |
- regex: 'MZ-16T(?:[);/ ]|$)'
|
9155 |
model: '16T'
|
9156 |
-
- regex: 'MZ-16th Plus(?:[);/ ]|$)'
|
9157 |
model: '16th Plus'
|
9158 |
- regex: 'MZ-15 Plus(?:[);/ ]|$)'
|
9159 |
model: '15 Plus'
|
9160 |
-
- regex: 'MZ-15 Lite(?:[);/ ]|$)'
|
9161 |
model: '15 Lite'
|
9162 |
-
- regex: 'MZ-16th(?:[);/ ]|$)'
|
9163 |
model: '16th'
|
9164 |
- regex: 'MZ-16 X(?:[);/ ]|$)'
|
9165 |
model: '16X'
|
@@ -9314,13 +9661,25 @@ Mobiola:
|
|
9314 |
|
9315 |
# Mobicel
|
9316 |
Mobicel:
|
9317 |
-
regex: 'Mobicel_(R1)|(?:Matrix|TRENDY PLUS)(?:[);/ ]|$)'
|
9318 |
device: 'smartphone'
|
9319 |
models:
|
9320 |
- regex: 'Matrix'
|
9321 |
model: 'Matrix'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9322 |
- regex: 'TRENDY PLUS'
|
9323 |
model: 'Trendy Plus'
|
|
|
|
|
|
|
|
|
9324 |
- regex: 'Mobicel_(R1)'
|
9325 |
model: '$1'
|
9326 |
|
@@ -9415,7 +9774,7 @@ Mobistel:
|
|
9415 |
|
9416 |
# Mecool
|
9417 |
Mecool:
|
9418 |
-
regex: '(?:KM9PRO|BB2 PRO|
|
9419 |
device: 'tv'
|
9420 |
models:
|
9421 |
- regex: 'KM9PRO(?:[);/ ]|$)'
|
@@ -9424,8 +9783,10 @@ Mecool:
|
|
9424 |
model: 'KM9 TV Box'
|
9425 |
- regex: 'BB2 PRO(?:[);/ ]|$)'
|
9426 |
model: 'BB2 Pro'
|
9427 |
-
- regex: '
|
9428 |
-
model: '
|
|
|
|
|
9429 |
- regex: 'M8SPROW(?:[);/ ]|$)'
|
9430 |
model: 'M8S Pro W'
|
9431 |
- regex: 'M8S PLUS DVB(?:[);/ ]|$)'
|
@@ -9548,8 +9909,10 @@ Motorola:
|
|
9548 |
model: 'Moto E'
|
9549 |
- regex: '(?:MOT-|Motorola-)?XT1706'
|
9550 |
model: 'Moto E3 Power'
|
9551 |
-
- regex: '(?:MOT-|Motorola-)?XT1924-9'
|
9552 |
model: 'Moto E5 Plus'
|
|
|
|
|
9553 |
- regex: '(?:MOT-|Motorola-)?XT1030'
|
9554 |
model: 'Droid Mini'
|
9555 |
- regex: '(?:MOT-|Motorola-)?XT1096'
|
@@ -9622,8 +9985,10 @@ Motorola:
|
|
9622 |
model: 'Moto $1$2$3'
|
9623 |
- regex: 'Moto ?([CGEXZ])( Plus| Play)?'
|
9624 |
model: 'Moto $1$2'
|
|
|
|
|
9625 |
|
9626 |
-
- regex: 'Motorola[ _\-]([
|
9627 |
model: '$1'
|
9628 |
- regex: 'MOTORAZR[ _\-]([a-z0-9]+)'
|
9629 |
model: 'RAZR $1'
|
@@ -9679,7 +10044,7 @@ MyTab:
|
|
9679 |
|
9680 |
# myphone (myphone.com.ph)
|
9681 |
MyPhone:
|
9682 |
-
regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\))|Cube_LTE|myTab10II|HAMMER[ _](Blade2_PRO|IRON_3|Explorer|ENERGY|Titan 2|AXE[_ ](?:M[_ ]LTE|Pro)|Iron 2|Active[2]?(_LTE)?)|C-Smart_pix|myPhone_Fun_8|myA17|myX12|Pocket_2|myT6 DTV|myXI1 (?:Plus|Pro)|myXI3'
|
9683 |
device: 'smartphone'
|
9684 |
models:
|
9685 |
# explicit table models
|
@@ -9702,6 +10067,8 @@ MyPhone:
|
|
9702 |
# explicit smartphones models
|
9703 |
- regex: 'Cube_LTE'
|
9704 |
model: 'Cube LTE'
|
|
|
|
|
9705 |
- regex: 'HAMMER[ _]ENERGY'
|
9706 |
model: 'Hammer Energy'
|
9707 |
- regex: 'HAMMER_AXE[_ ]M[_ ]LTE'
|
@@ -9785,7 +10152,7 @@ M.T.T.:
|
|
9785 |
|
9786 |
# Navon
|
9787 |
Navon:
|
9788 |
-
regex: 'Navon[_ ]|(?:Superme_Max|Supreme[_ ](?:Fine|Chief|Pure|Pro)(?:[_ ](?:Mini|Plus))?)(?:[);/ ]|$)'
|
9789 |
device: 'smartphone'
|
9790 |
models:
|
9791 |
- regex: 'Superme_Max(?:[);/ ]|$)'
|
@@ -9809,6 +10176,10 @@ Navon:
|
|
9809 |
- regex: 'Navon[_ ]Platinum 10 3G(?:[);/ ]|$)'
|
9810 |
model: 'Platinum 10.1" 3G'
|
9811 |
|
|
|
|
|
|
|
|
|
9812 |
# NOA
|
9813 |
NOA:
|
9814 |
regex: 'NOA[ _]|Hummer(?:_2019_R|LE)|NextSE'
|
@@ -9852,7 +10223,7 @@ Nobby:
|
|
9852 |
|
9853 |
# nec
|
9854 |
NEC:
|
9855 |
-
regex: 'NEC[ _\-]|KGT/2\.0|PC-
|
9856 |
device: 'smartphone'
|
9857 |
models:
|
9858 |
- regex: 'N-06C(?:[);/ ]|$)'
|
@@ -9865,9 +10236,27 @@ NEC:
|
|
9865 |
model: '$1'
|
9866 |
- regex: '(?:portalmmm|o2imode)/2\.0[ ,](N[a-z0-9]+)'
|
9867 |
model: '$1'
|
9868 |
-
- regex: 'PC-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9869 |
device: 'tablet'
|
9870 |
model: 'LAVIE Tab E TE508'
|
|
|
|
|
|
|
9871 |
|
9872 |
# Neffos (TP-Link)
|
9873 |
Neffos:
|
@@ -10106,12 +10495,12 @@ Nous:
|
|
10106 |
|
10107 |
# Nvidia
|
10108 |
Nvidia:
|
10109 |
-
regex: '
|
10110 |
device: 'tablet'
|
10111 |
models:
|
10112 |
- regex: 'TegraNote-P1640'
|
10113 |
model: 'Tegra Note P1640'
|
10114 |
-
- regex: '(SHIELD Tablet K1|Tegra Note 7)(?: Build
|
10115 |
model: '$1'
|
10116 |
- regex: 'SHIELD Android TV'
|
10117 |
model: 'SHIELD Android TV'
|
@@ -10345,13 +10734,15 @@ Onda:
|
|
10345 |
|
10346 |
# OnePlus
|
10347 |
OnePlus:
|
10348 |
-
regex: '(?:du_)?ONEPLUS|(?:A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|E100[135]|GM191[03517]|GM190[0135]|GM1920|HD191[013]|HD190[01357]|HD1925|IN201[01357]|IN202[0135])(?: Build|\))'
|
10349 |
device: 'smartphone'
|
10350 |
models:
|
10351 |
- regex: 'AC200[13](?:[);/ ]|$)'
|
10352 |
model: 'Nord 5G'
|
10353 |
- regex: 'IN202[0135](?:[);/ ]|$)'
|
10354 |
model: '8 Pro'
|
|
|
|
|
10355 |
- regex: 'IN201[01357](?:[);/ ]|$)'
|
10356 |
model: '8'
|
10357 |
- regex: '(?:GM191[03517]|OnePlus 7 Pro)(?:[);/ ]|$)'
|
@@ -10741,7 +11132,7 @@ Opsson:
|
|
10741 |
|
10742 |
# orange
|
10743 |
Orange:
|
10744 |
-
regex: 'SPV[ \-]?([a-z0-9]+)|(?<!FBCR/)Orange[ _-](?!Tahiti-LS\))([^/;]+)( Build|\))(?<!Tahiti-LS\))|SC/IHD92|Nura 2|FunTab ([^/;]+) Build'
|
10745 |
device: 'smartphone'
|
10746 |
models:
|
10747 |
- regex: 'SC/IHD92'
|
@@ -10759,23 +11150,23 @@ Orange:
|
|
10759 |
model: '$1 $2'
|
10760 |
- regex: 'Orange[ _-](Dive)72(?:[);/ ]|$)'
|
10761 |
model: '$1 72'
|
10762 |
-
- regex: 'Orange[ _-](Daytona|Dive (30|7[13])|Dublin|Fova|Gova|Hi 4G|Hiro|Kivo|Monte Carlo|Neva 80|Neva play|Nura|Reyo|Rise[_ ](3[034]|40|5[345])|Rono|Roya|San Francisco|Tactile internet 2|Tado|Yomi|Yumo|Zali)(?:[);/ ]|$)'
|
10763 |
model: '$1'
|
10764 |
- regex: 'SPV[ \-]?([a-z0-9]+)'
|
10765 |
model: 'SPV $1'
|
10766 |
|
10767 |
# Oukitel
|
10768 |
Oukitel:
|
10769 |
-
regex: 'OUKITEL|(?:(?:C15|C16|K10000|K[46]000)(?:[ _]Pro)|K4000Pro|U20_Plus|WP5000|WP[58] Pro|K[46]000[ _](?:Plus|Lite)|Y4800|K10000|K[4567]000| WP[5-7])(?:[);/ ]|$)'
|
10770 |
device: 'smartphone'
|
10771 |
models:
|
10772 |
- regex: '(C15|C16|K10000|K[46]000|WP[258]|U15)[ _]?Pro(?:[);/ ]|$)'
|
10773 |
model: '$1 Pro'
|
10774 |
- regex: 'OUKITEL K([37])(?:[);/ ]|$)'
|
10775 |
model: 'K$1'
|
10776 |
-
- regex: '(K10000)[ _]Max(?:[);/ ]|$)'
|
10777 |
model: '$1 Max'
|
10778 |
-
- regex: '(U20|K[46]000)[_ ]?Plus(?:[);/ ]|$)'
|
10779 |
model: '$1 Plus'
|
10780 |
- regex: '(K4000)[_ ]Lite(?:[);/ ]|$)'
|
10781 |
model: '$1 Lite'
|
@@ -10851,9 +11242,10 @@ Oysters:
|
|
10851 |
model: 'T74MAi 3G'
|
10852 |
- regex: 'Oysters ([^/;]+)( Build|\))'
|
10853 |
model: '$1'
|
10854 |
-
|
|
|
10855 |
öwn:
|
10856 |
-
regex: 'OWN|S4035[ _][34]G'
|
10857 |
device: 'smartphone'
|
10858 |
models:
|
10859 |
- regex: 'FUN ([67])'
|
@@ -10868,6 +11260,8 @@ Oysters:
|
|
10868 |
model: 'One'
|
10869 |
- regex: 'SMART 9'
|
10870 |
model: 'Smart 9'
|
|
|
|
|
10871 |
|
10872 |
# Panacom
|
10873 |
Panacom:
|
@@ -10880,11 +11274,13 @@ Panacom:
|
|
10880 |
|
10881 |
# panasonic
|
10882 |
Panasonic:
|
10883 |
-
regex: 'Panasonic|PANATV[0-9]+|Viera/|(?:P902i|P-
|
10884 |
device: 'smartphone'
|
10885 |
models:
|
10886 |
- regex: 'P-01J(?:[);/ ]|$)'
|
10887 |
model: 'P-smart Keitai'
|
|
|
|
|
10888 |
- regex: 'Eluga[ _-]([^;/]+) Build'
|
10889 |
model: 'Eluga $1'
|
10890 |
- regex: 'Eluga[ _-]([^;/]+)(?:[;/)]|$)'
|
@@ -10892,6 +11288,8 @@ Panasonic:
|
|
10892 |
- regex: '(DMC-CM1)'
|
10893 |
model: 'Lumix $1'
|
10894 |
device: 'camera'
|
|
|
|
|
10895 |
- regex: '(FZ-[XN]1)(?:[);/ ]|$)'
|
10896 |
model: 'Toughpad $1'
|
10897 |
- regex: 'FZ-B2D(?:[);/ ]|$)'
|
@@ -10977,6 +11375,51 @@ Pentagram:
|
|
10977 |
model: '$1'
|
10978 |
device: 'smartphone'
|
10979 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10980 |
# philips
|
10981 |
Philips:
|
10982 |
regex: 'Philips|AND1E(?:[);/ ]|$)|NETTV/|PI3210G|TLE(821L|722G)|TPM1[79]1E|70PUH6774_96|QM16[134]E|Xenium S[25]66|S397|W5510'
|
@@ -11010,6 +11453,9 @@ Philips:
|
|
11010 |
- regex: 'Philips, BDP([0-9]{4})'
|
11011 |
model: 'Blu-ray Player (BDP$1)'
|
11012 |
device: 'tv'
|
|
|
|
|
|
|
11013 |
- regex: '(NETTV/[0-9\.]{5})'
|
11014 |
model: 'NetTV Series'
|
11015 |
device: 'tv'
|
@@ -11052,7 +11498,7 @@ Pioneer:
|
|
11052 |
|
11053 |
# Pixus
|
11054 |
Pixus:
|
11055 |
-
regex: 'Pixus|(Ride[_ ][34]G|Play[ _]Three[ _]v(?:[24].0|3.1))(?:[);/ ]|$)'
|
11056 |
device: 'tablet'
|
11057 |
models:
|
11058 |
- regex: 'Ride[_ ]([34])G'
|
@@ -11063,6 +11509,8 @@ Pixus:
|
|
11063 |
model: 'Play Two'
|
11064 |
- regex: 'Play Five'
|
11065 |
model: 'Play Five'
|
|
|
|
|
11066 |
- regex: 'Pixus[ _]Sprint'
|
11067 |
model: 'Sprint'
|
11068 |
- regex: 'Touch 7 3G'
|
@@ -11156,7 +11604,7 @@ ProScan:
|
|
11156 |
|
11157 |
# RCA Tablets (RCA)
|
11158 |
'RCA Tablets':
|
11159 |
-
regex: 'RCT([^;/]+) Build|RCA RLTP4028|RCT6513W87|
|
11160 |
device: 'smartphone'
|
11161 |
models:
|
11162 |
- regex: 'RCA RLTP4028'
|
@@ -11164,9 +11612,27 @@ ProScan:
|
|
11164 |
- regex: 'RCT6513W87'
|
11165 |
device: 'tablet'
|
11166 |
model: 'Galileo Pro 11.5"'
|
11167 |
-
- regex: '
|
|
|
|
|
|
|
11168 |
device: 'tablet'
|
11169 |
model: 'Voyager III 7.0"'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11170 |
- regex: 'RCT([^;/]+) Build'
|
11171 |
device: 'tablet'
|
11172 |
model: 'RCT$1'
|
@@ -11197,12 +11663,12 @@ Rokit:
|
|
11197 |
|
11198 |
# Rombica
|
11199 |
Rombica:
|
11200 |
-
regex: '(Rombica|SSQ-A0500)(?:[);/ ]|$)'
|
11201 |
device: 'tv'
|
11202 |
models:
|
11203 |
- regex: 'SSQ-A0500(?:[);/ ]|$)'
|
11204 |
model: 'Smart Stick 4K'
|
11205 |
-
- regex: '(Infinity K8|Smart Box (?:
|
11206 |
model: '$1'
|
11207 |
|
11208 |
# Rover
|
@@ -11273,7 +11739,7 @@ Santin:
|
|
11273 |
model: 'Galaz'
|
11274 |
- regex: 'NEWDUN(?:[);/ ]|$)'
|
11275 |
model: 'Newdun'
|
11276 |
-
- regex: 'SANTIN[ _][#]?(Dante|Candy U7|Armor|YSL-Y7|ANT.W|N[13]|JS|S6|V9)(?:[);/ ]|$)'
|
11277 |
model: '$1'
|
11278 |
|
11279 |
# Siemens
|
@@ -11298,7 +11764,7 @@ Soundmax:
|
|
11298 |
|
11299 |
# Samsung
|
11300 |
Samsung:
|
11301 |
-
regex: 'SAMSUNG(?! ?Browser)|Maple |SC-(?:02[CHMKJG]|03[JLK]|04[ELJ]|05G|52A|01[HFGLKM])|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86(?:[);/ ]|$)|(?:OTV-)?SMT-E5015|ISW11SC|SCV4[0-8]|SCV3[1-9]|40[34]SC|SCL2[234]|SCG0[
|
11302 |
device: 'smartphone'
|
11303 |
models:
|
11304 |
# explicit tv models
|
@@ -11825,7 +12291,7 @@ Samsung:
|
|
11825 |
model: 'Galaxy S6 Edge'
|
11826 |
- regex: '(?:SAMSUNG-)?SM-G928(?:7C|R4|W8|[07ACFGIKLPSTVX])'
|
11827 |
model: 'Galaxy S6 Edge+'
|
11828 |
-
- regex: '(?:SAMSUNG-)?SM-G930(?:FD|W8|[0AFKLPRSTUVX8])?(?:[);/ ]|$)'
|
11829 |
model: 'Galaxy S7'
|
11830 |
- regex: '(?:SAMSUNG-)?SM-G935(?:R4|W8|[0AFKLPSTUVX])|SC-02H|SCV33'
|
11831 |
model: 'Galaxy S7 Edge'
|
@@ -11849,13 +12315,15 @@ Samsung:
|
|
11849 |
model: 'Galaxy S10 Lite'
|
11850 |
- regex: '(?:SAMSUNG-)?(?:SM-G975[0FUWNX]|SCV42|SC-04L)'
|
11851 |
model: 'Galaxy S10+'
|
11852 |
-
- regex: '(?:SAMSUNG-)?SM-G970[08FUNWX](?:[);/ ]|$)'
|
11853 |
model: 'Galaxy S10e'
|
11854 |
- regex: '(?:SAMSUNG-)?SM-G980F'
|
11855 |
model: 'Galaxy S20'
|
11856 |
- regex: '(?:SAMSUNG-)?SM-G981(?:[0BNUW]|U1)|SCG01'
|
11857 |
model: 'Galaxy S20 5G'
|
11858 |
-
- regex: '(?:SAMSUNG-)?SM-
|
|
|
|
|
11859 |
model: 'Galaxy S20 Ultra 5G'
|
11860 |
- regex: '(?:SAMSUNG-)?SM-G985F|SCG02'
|
11861 |
model: 'Galaxy S20+'
|
@@ -11877,6 +12345,8 @@ Samsung:
|
|
11877 |
model: 'Galaxy Avant'
|
11878 |
- regex: '(?:SAMSUNG-)?SM-A015[AFGM]'
|
11879 |
model: 'Galaxy A01'
|
|
|
|
|
11880 |
- regex: '(?:SAMSUNG-)?SM-A260[FG]'
|
11881 |
model: 'Galaxy A2 Core'
|
11882 |
- regex: '(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|[09FGHMY])'
|
@@ -11943,13 +12413,13 @@ Samsung:
|
|
11943 |
model: 'Galaxy A10s'
|
11944 |
- regex: '(?:SAMSUNG-)?SM-(?:S102DL|A102[NWU])'
|
11945 |
model: 'Galaxy A10e'
|
11946 |
-
- regex: '(?:SAMSUNG-)?SM-
|
11947 |
model: 'Galaxy A11'
|
11948 |
- regex: '(?:SAMSUNG-)?SM-(?:A205(?:[FGSWU]|YN|U1)|S205DL)|SC-02M|SCV46'
|
11949 |
model: 'Galaxy A20'
|
11950 |
- regex: '(?:SAMSUNG-)?SM-A215U(?:[);/ ]|$)'
|
11951 |
model: 'Galaxy A21'
|
11952 |
-
- regex: '(?:SAMSUNG-)?SM-
|
11953 |
model: 'Galaxy A21s'
|
11954 |
- regex: '(?:SAMSUNG-)?SM-A202[FG]'
|
11955 |
model: 'Galaxy A20e'
|
@@ -11973,8 +12443,10 @@ Samsung:
|
|
11973 |
model: 'Galaxy A50s'
|
11974 |
- regex: '(?:SAMSUNG-)?SM-A507FN'
|
11975 |
model: 'Galaxy A50s'
|
11976 |
-
- regex: '(?:SAMSUNG-)?SM-A515[
|
11977 |
model: 'Galaxy A51'
|
|
|
|
|
11978 |
- regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|F|[W0X])'
|
11979 |
model: 'Galaxy A70'
|
11980 |
- regex: '(?:SAMSUNG-)?SM-A707[0F]'
|
@@ -12173,6 +12645,9 @@ Samsung:
|
|
12173 |
- regex: '(?:SAMSUNG-)?SM-(?:F900[0FU]|F907[BN])|SCV44'
|
12174 |
model: 'Galaxy Fold'
|
12175 |
device: 'phablet'
|
|
|
|
|
|
|
12176 |
- regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)'
|
12177 |
model: 'Galaxy Grand Neo'
|
12178 |
device: 'phablet'
|
@@ -12390,6 +12865,8 @@ Sencor:
|
|
12390 |
model: 'Element 9.7'
|
12391 |
- regex: '(?:SENCOR[ _])?ELEMENT10[ _]1'
|
12392 |
model: 'Element 10.1'
|
|
|
|
|
12393 |
|
12394 |
- regex: '(?:SENCOR[ _])?ELEMENT[ _]?P([0-9]+)'
|
12395 |
model: 'Element P$1'
|
@@ -12422,15 +12899,26 @@ Senwa:
|
|
12422 |
- regex: 'Senwa[ _-]*([^ ;/)]+)(?:[);/ ]|$)'
|
12423 |
model: '$1'
|
12424 |
|
12425 |
-
# Sky
|
12426 |
Sky:
|
12427 |
-
regex: '(SKY|Elite|Fuego)[_ ][3-7]\.[05]([A-Z]{1,2})?|Elite_5_5_Octa|
|
12428 |
device: 'smartphone'
|
12429 |
models:
|
12430 |
-
- regex: 'Platinum_(5.0M|M5)'
|
12431 |
model: 'Platinum 5.0M'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12432 |
- regex: 'Elite_5_5_Octa'
|
12433 |
model: 'Elite 5.5 Octa'
|
|
|
|
|
|
|
|
|
12434 |
- regex: 'Elite[_ ]([3-7]\.[05](?:[A-Z]{1,2})?\+?)'
|
12435 |
model: 'Elite $1'
|
12436 |
- regex: 'Fuego[_ ]([3-7]\.[05](?:[A-Z]{1,2})?\+?)'
|
@@ -12518,7 +13006,7 @@ Smartisan:
|
|
12518 |
|
12519 |
# STF Mobile
|
12520 |
STF Mobile:
|
12521 |
-
regex: 'Fractal|AERIAL PLUS|Origins Pro'
|
12522 |
device: 'smartphone'
|
12523 |
models:
|
12524 |
- regex: 'Fractal'
|
@@ -12527,6 +13015,10 @@ STF Mobile:
|
|
12527 |
model: 'Origins Pro'
|
12528 |
- regex: 'AERIAL PLUS'
|
12529 |
model: 'Aerial Plus'
|
|
|
|
|
|
|
|
|
12530 |
|
12531 |
# STK
|
12532 |
STK:
|
@@ -12599,7 +13091,7 @@ SWISSMOBILITY:
|
|
12599 |
|
12600 |
# Thomson
|
12601 |
Thomson:
|
12602 |
-
regex: '(?:Primo(7|8)|QM73[45]-8G|QM734-2|QM736-8G\(HD\)|8950|MID1002|5014G)(?:[);/ ]|$)|(?:Tlink|Every)[0-9]+'
|
12603 |
device: 'tablet'
|
12604 |
models:
|
12605 |
# already detected as manta device
|
@@ -12615,8 +13107,10 @@ Thomson:
|
|
12615 |
model: 'QM735-8G'
|
12616 |
- regex: 'QM736-8G\(HD\)'
|
12617 |
model: 'QM736-8G (HD)'
|
12618 |
-
- regex: '8950(?:[);/ ]|$)'
|
12619 |
model: '3G 8950'
|
|
|
|
|
12620 |
|
12621 |
- regex: '5014G(?:[);/ ]|$)'
|
12622 |
device: 'smartphone'
|
@@ -12627,10 +13121,19 @@ Thomson:
|
|
12627 |
- regex: 'Every([0-9]+)'
|
12628 |
device: 'smartphone'
|
12629 |
model: 'Every$1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12630 |
|
12631 |
# pantech
|
12632 |
Pantech:
|
12633 |
-
regex: 'Pantech|P[GN]-|PT-[a-z0-9]{3,}|TX[T]?[0-9]+|IM-[a-z0-9]+(?:[);/ ]|$)|ADR910L'
|
12634 |
device: 'smartphone'
|
12635 |
models:
|
12636 |
# explicit smartphone models
|
@@ -12664,17 +13167,30 @@ Ployer:
|
|
12664 |
- regex: 'MOMO([0-9][^);/]*)(?:[);/]|$)'
|
12665 |
model: 'MOMO $1'
|
12666 |
|
12667 |
-
# Plum
|
12668 |
Plum:
|
12669 |
-
regex: 'PLUM '
|
12670 |
device: 'smartphone'
|
12671 |
models:
|
12672 |
- regex: 'Z405'
|
12673 |
model: 'Gator 3'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12674 |
|
12675 |
# Polaroid
|
12676 |
Polaroid:
|
12677 |
-
regex: 'Polaroid|(?:PMID|MIDC)[0-9a-z]+(?:[);/ ]|$)|MID(?:1014|0714)|PRO[VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z])|(?:P(?:400[56]|4526|500[56]|502[56]|504[67]|552[56])A|P902/A900|PSPC(?:505|550|[MZL]20A0|K21NA)|SIGMA 5)(?:[);/ ]|$)'
|
12678 |
device: 'smartphone'
|
12679 |
models:
|
12680 |
# explicit smartphone models
|
@@ -12721,9 +13237,12 @@ Polaroid:
|
|
12721 |
- regex: 'PRO([VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z]))'
|
12722 |
model: 'Pro$1'
|
12723 |
|
12724 |
-
- regex: '
|
|
|
|
|
12725 |
model: '$1'
|
12726 |
device: 'tablet'
|
|
|
12727 |
- regex: '((?:PMID|MIDC)[0-9a-z]+)(?:[);/ ]|$)'
|
12728 |
model: '$1'
|
12729 |
device: 'tablet'
|
@@ -12882,7 +13401,7 @@ Sanyo:
|
|
12882 |
- regex: 'MobilePhone ([a-z0-9\-]+)'
|
12883 |
model: '$1'
|
12884 |
|
12885 |
-
# Qilive
|
12886 |
Qilive:
|
12887 |
regex: 'Qilive [0-9][^;/]*|Q(7S5[5]?IN4G|7T10INP|8T10IN|8S55IN4G2|8S[56]IN4G|10S5[37]IN4G|10S[56]IN4G|10S[56]IN4GR|9S5IN4G|6T7IN)'
|
12888 |
device: 'smartphone'
|
@@ -12929,9 +13448,13 @@ Qilive:
|
|
12929 |
|
12930 |
# QMobile
|
12931 |
QMobile:
|
12932 |
-
regex: 'QMobile|QTab|Q-Smart|Noir X1S|LUNA PRO|NICE S'
|
12933 |
device: 'smartphone'
|
12934 |
models:
|
|
|
|
|
|
|
|
|
12935 |
- regex: 'QTab[ _-]([^;/]+) Build'
|
12936 |
model: '$1 Tab'
|
12937 |
device: 'tablet'
|
@@ -13064,7 +13587,7 @@ Spice:
|
|
13064 |
|
13065 |
# Sharp (jp.sharp)
|
13066 |
Sharp:
|
13067 |
-
regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?(?:[);/ ]|$)|AQUOS|(?:SH-M0[
|
13068 |
device: 'smartphone'
|
13069 |
models:
|
13070 |
# explicit smartphone models
|
@@ -13076,6 +13599,8 @@ Sharp:
|
|
13076 |
model: 'Aquos Xx2'
|
13077 |
- regex: '[34]04SH(?:[);/ ]|$)'
|
13078 |
model: 'Aquos Xx'
|
|
|
|
|
13079 |
- regex: '507SH(?:[);/ ]|$)'
|
13080 |
model: 'Android One'
|
13081 |
- regex: 'S3-SH(?:[);/ ]|$)'
|
@@ -13092,7 +13617,9 @@ Sharp:
|
|
13092 |
model: 'Aquos Sense Lite'
|
13093 |
- regex: 'SH-M07(?:[);/ ]|$)'
|
13094 |
model: 'Aquos Sense Plus'
|
13095 |
-
- regex: 'SH-
|
|
|
|
|
13096 |
model: 'Aquos S3 Dual SIM'
|
13097 |
- regex: '(?:SH-[MZ]10|801SH)(?:[);/ ]|$)'
|
13098 |
model: 'Aquos Zero'
|
@@ -13106,24 +13633,28 @@ Sharp:
|
|
13106 |
model: 'Aquos Phone Zeta'
|
13107 |
- regex: 'SH06D(?:[);/ ]|$)'
|
13108 |
model: 'Aquos Phone SH-06D'
|
13109 |
-
- regex: '
|
13110 |
-
model: 'Aquos Phone
|
13111 |
- regex: 'SH-L02(?:[);/ ]|$)'
|
13112 |
model: 'Aquos L2'
|
13113 |
- regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)'
|
13114 |
model: 'Aquos R'
|
13115 |
- regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)'
|
13116 |
model: 'Aquos R'
|
13117 |
-
- regex: '(?:701SH|SHV41)(?:[);/ ]|$)'
|
13118 |
model: 'Aquos R Compact'
|
13119 |
- regex: '(?:SH-M09|SHV42|706SH|SH-03K)(?:[);/ ]|$)'
|
13120 |
model: 'Aquos R2'
|
13121 |
- regex: '803SH(?:[);/ ]|$)'
|
13122 |
model: 'Aquos R2 Compact'
|
13123 |
-
- regex: '(?:908SH|SHG01)(?:[);/ ]|$)'
|
13124 |
model: 'Aquos R5G'
|
|
|
|
|
13125 |
- regex: 'SH-C02(?:[);/ ]|$)'
|
13126 |
model: 'Aquos V'
|
|
|
|
|
13127 |
- regex: '704SH(?:[);/ ]|$)'
|
13128 |
model: 'Simple Smartphone 4'
|
13129 |
- regex: '(?:SH-02J|SH-04G)(?:[);/ ]|$)'
|
@@ -13134,6 +13665,8 @@ Sharp:
|
|
13134 |
model: 'Aquos Crystal'
|
13135 |
- regex: '402SH(?:[);/ ]|$)'
|
13136 |
model: 'Aquos Crystal X'
|
|
|
|
|
13137 |
- regex: '509SH(?:[);/ ]|$)'
|
13138 |
model: 'Aquos 3'
|
13139 |
- regex: 'NP601SH(?:[);/ ]|$)'
|
@@ -13146,11 +13679,13 @@ Sharp:
|
|
13146 |
model: 'Aquos S Mini'
|
13147 |
- regex: '(?:FS8010|SH-M08|SHV43(?:-u)?|SH-01[KL])(?:[);/ ]|$)'
|
13148 |
model: 'Aquos S2'
|
|
|
|
|
13149 |
- regex: '(?:SHV46|SH-R?M11|901SH)(?:[);/ ]|$)'
|
13150 |
model: 'Aquos S3 Plus'
|
13151 |
- regex: '(?:SHV44|808SH|SH-04L|SH-03G)(?:[);/ ]|$)'
|
13152 |
model: 'Aquos R3'
|
13153 |
-
- regex: '(?:FS8032|SH-02M|SHV45(?:-U)?)(?:[);/ ]|$)'
|
13154 |
model: 'Aquos S3'
|
13155 |
- regex: 'FS8018(?:[);/ ]|$)'
|
13156 |
model: 'Aquos S3 Mini'
|
@@ -13158,6 +13693,8 @@ Sharp:
|
|
13158 |
model: 'Aquos S3 Basic'
|
13159 |
- regex: 'SH-RM12(?:[);/ ]|$)'
|
13160 |
model: 'Aquos S3 Lite'
|
|
|
|
|
13161 |
- regex: 'SH-51A(?:[);/ ]|$)'
|
13162 |
model: 'Aquos R5G'
|
13163 |
- regex: 'SHV3[57](?:_u)?(?:[);/ ]|$)'
|
@@ -13182,11 +13719,16 @@ Sharp:
|
|
13182 |
model: 'Aquos 401SH'
|
13183 |
- regex: 'DM-01J'
|
13184 |
model: 'Disney Mobile'
|
|
|
|
|
13185 |
|
13186 |
# explicit tablet models
|
13187 |
- regex: 'SH-08E(?:[);/ ]|$)'
|
13188 |
device: 'tablet'
|
13189 |
model: 'Sharp Aquos Pad'
|
|
|
|
|
|
|
13190 |
|
13191 |
- regex: '(LC-(?:[0-9]{2})[a-z0-9]+)(?:[);/ ]|$)'
|
13192 |
device: 'tv'
|
@@ -13237,6 +13779,18 @@ Star:
|
|
13237 |
- regex: 'N(9[5678]00|8800|9977)(?:[);/ ]|$)'
|
13238 |
model: 'N$1'
|
13239 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13240 |
# Kindle
|
13241 |
Amazon:
|
13242 |
regex: 'KF(?:OT|ONWI|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|KAWI|MAWI|MEWI|MUWI|SUWI)(?:[);/ ]|$)|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[ABMNRST]|SD4930UR|AEO(BC|KN)(?:[);/ ]|$)'
|
@@ -13331,6 +13885,12 @@ Symphony:
|
|
13331 |
- regex: 'SYMPHONY[ \_]([a-z0-9]+)'
|
13332 |
model: '$1'
|
13333 |
|
|
|
|
|
|
|
|
|
|
|
|
|
13334 |
# Syrox
|
13335 |
Syrox:
|
13336 |
regex: '(SYX-(?:T70[04]|T10[12]))(?:[);/ ]|$)'
|
@@ -13373,37 +13933,9 @@ T-Mobile:
|
|
13373 |
- regex: 'Ignis ([89])'
|
13374 |
model: 'Ignis $1'
|
13375 |
|
13376 |
-
#
|
13377 |
-
TCL:
|
13378 |
-
regex: 'TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|A502DL|T780H|5199I|7040N|5133A|5159[AJ]|5152D|T770H)(?:[);/ ]|$)'
|
13379 |
-
device: 'smartphone'
|
13380 |
-
models:
|
13381 |
-
- regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)'
|
13382 |
-
model: 'Gala G60'
|
13383 |
-
- regex: '5199I(?:[);/ ]|$)'
|
13384 |
-
model: 'C9'
|
13385 |
-
- regex: '5152D(?:[);/ ]|$)'
|
13386 |
-
model: 'C5'
|
13387 |
-
- regex: '5133A(?:[);/ ]|$)'
|
13388 |
-
model: 'L5'
|
13389 |
-
- regex: 'T780H(?:[);/ ]|$)'
|
13390 |
-
model: 'Plex'
|
13391 |
-
- regex: 'TCL[_ -]([^;/]+) Build'
|
13392 |
-
model: '$1'
|
13393 |
-
- regex: 'TCL[_ -]([a-z0-9]+)'
|
13394 |
-
model: '$1'
|
13395 |
-
- regex: '(7040N)(?:[);/ ]|$)'
|
13396 |
-
model: '$1'
|
13397 |
-
- regex: 'A502DL(?:[);/ ]|$)'
|
13398 |
-
model: 'LX'
|
13399 |
-
- regex: '5159[AJ](?:[);/ ]|$)'
|
13400 |
-
model: 'L9'
|
13401 |
-
- regex: 'T770H(?:[);/ ]|$)'
|
13402 |
-
model: '10L'
|
13403 |
-
|
13404 |
-
# Teclast
|
13405 |
Teclast:
|
13406 |
-
regex: 'Teclast|X98 Air III|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|(?:T30|P80X|P20HD)_(?:ROW|EEA)|T10\(E3C6\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)'
|
13407 |
device: 'tablet'
|
13408 |
models:
|
13409 |
- regex: 'Tbook[_ -]([^;/]+) Build'
|
@@ -13418,6 +13950,12 @@ Teclast:
|
|
13418 |
model: 'P10S'
|
13419 |
- regex: 'P20HD_(?:ROW|EEA)'
|
13420 |
model: 'P20HD'
|
|
|
|
|
|
|
|
|
|
|
|
|
13421 |
- regex: '98\(M1E[45789]\)|98\(M3E3\)'
|
13422 |
model: 'TPad 98 10.1" 4G'
|
13423 |
- regex: 'X80 Power\(B2N4\)(?:[);/ ]|$)'
|
@@ -13475,20 +14013,30 @@ TechPad:
|
|
13475 |
models:
|
13476 |
- regex: 'S813G'
|
13477 |
model: 'S813G'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13478 |
- regex: 'Dual C1081HD'
|
13479 |
model: 'XTAB C1081HD'
|
13480 |
- regex: 'XTAB[ _-]([^/;]+) Build'
|
13481 |
model: 'XTAB $1'
|
13482 |
-
- regex: 'Tech ?pad[ _-]([^/;]+) Build'
|
13483 |
model: '$1'
|
13484 |
device: 'smartphone'
|
13485 |
|
13486 |
# Tesco
|
13487 |
Tesco:
|
13488 |
-
regex: 'Hudl ([^/;]+) Build|W032i-C3(?:[);/ ]|$)'
|
13489 |
device: 'tablet'
|
13490 |
models:
|
13491 |
-
- regex: 'Hudl ([^/;]+) Build'
|
13492 |
model: 'Hudl $1'
|
13493 |
- regex: 'W032i-C3(?:[);/ ]|$)'
|
13494 |
model: 'Op3n Dott'
|
@@ -13654,13 +14202,13 @@ Telego:
|
|
13654 |
|
13655 |
# Telenor
|
13656 |
Telenor:
|
13657 |
-
regex: '(?<!FBCR/)Telenor'
|
13658 |
device: 'smartphone'
|
13659 |
models:
|
13660 |
-
- regex: 'Telenor[ _]([^;/]+) Build'
|
13661 |
-
model: '$1'
|
13662 |
-
- regex: 'Telenor[ _]([^a-z0-9_]+)\)'
|
13663 |
model: '$1'
|
|
|
|
|
13664 |
|
13665 |
# Telit
|
13666 |
Telit:
|
@@ -13874,7 +14422,7 @@ UTStarcom:
|
|
13874 |
|
13875 |
# Ulefone
|
13876 |
Ulefone:
|
13877 |
-
regex: 'Ulefone|Gemini Pro|Power_[356]|S10_Pro|(?:Armor(?:(?:[ _])(?:[2367]|X[236]|6[SE]|3WT|3W|X))?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?)(?:[);/ ]|$)'
|
13878 |
device: 'smartphone'
|
13879 |
models:
|
13880 |
- regex: 'S10_Pro'
|
@@ -13899,19 +14447,21 @@ Ulefone:
|
|
13899 |
model: 'Armor X$1'
|
13900 |
- regex: 'Armor[ _]6S(?:[);/ ]|$)'
|
13901 |
model: 'Armor 6S'
|
13902 |
-
- regex: 'Armor[ _]
|
13903 |
-
model: 'Armor
|
13904 |
-
- regex: 'Armor[ _]
|
13905 |
-
model: 'Armor
|
13906 |
-
- regex: 'Armor[ _]
|
13907 |
-
model: 'Armor
|
|
|
|
|
13908 |
- regex: 'Armor[ _]X(?:[);/ ]|$)'
|
13909 |
model: 'Armor X'
|
13910 |
- regex: 'Armor[ _]3W(?:[);/ ]|$)'
|
13911 |
model: 'Armor 3W'
|
13912 |
- regex: 'Armor[ _]3WT(?:[);/ ]|$)'
|
13913 |
model: 'Armor 3WT'
|
13914 |
-
- regex: 'Armor[ _]([
|
13915 |
model: 'Armor $1'
|
13916 |
- regex: 'Armor(?:[);/ ]|$)'
|
13917 |
model: 'Armor'
|
@@ -13926,9 +14476,9 @@ Ulefone:
|
|
13926 |
- regex: 'Ulefone[ _-]?([^;/)]+)(?:[;/)]|$)'
|
13927 |
model: '$1'
|
13928 |
|
13929 |
-
# UMIDIGI
|
13930 |
UMIDIGI:
|
13931 |
-
regex: 'UMI(?:DIGI)?[ _]|A5_Pro|ROME[_ ]X'
|
13932 |
device: 'smartphone'
|
13933 |
models:
|
13934 |
- regex: 'A5_Pro'
|
@@ -13939,9 +14489,13 @@ UMIDIGI:
|
|
13939 |
model: 'Touch'
|
13940 |
- regex: 'ROME[_ ]X'
|
13941 |
model: 'Rome X'
|
|
|
|
|
|
|
|
|
13942 |
- regex: 'UMI_(London|Diamond(?:_X)?)'
|
13943 |
model: '$1'
|
13944 |
-
- regex: 'UMI(?:DIGI)?[ _]([^/;)]+)(?: Build
|
13945 |
model: '$1'
|
13946 |
|
13947 |
# Uniscope
|
@@ -14044,9 +14598,9 @@ Fengxiang:
|
|
14044 |
|
14045 |
# VK Mobile
|
14046 |
VK Mobile:
|
14047 |
-
regex: 'VK(
|
14048 |
device: 'feature phone'
|
14049 |
-
model: '$1'
|
14050 |
|
14051 |
# Vernee
|
14052 |
Vernee:
|
@@ -14124,7 +14678,7 @@ Verykool:
|
|
14124 |
|
14125 |
# Vestel (vestel.com)
|
14126 |
Vestel:
|
14127 |
-
regex: 'Vestel[ _]|Venus[ _](GO|E[
|
14128 |
device: 'smartphone'
|
14129 |
models:
|
14130 |
- regex: 'VT97PRO'
|
@@ -14160,7 +14714,11 @@ Vestel:
|
|
14160 |
model: 'Venus Z$1'
|
14161 |
- regex: 'Venus[ _]GO'
|
14162 |
model: 'Venus Go'
|
14163 |
-
- regex: 'Venus
|
|
|
|
|
|
|
|
|
14164 |
model: 'Venus E$1'
|
14165 |
- regex: 'Vestel_5000_Dual'
|
14166 |
model: '5000 Dual'
|
@@ -14292,7 +14850,7 @@ Vodafone:
|
|
14292 |
|
14293 |
# Vonino
|
14294 |
Vonino:
|
14295 |
-
regex: 'Vonino|Epic (?:E8|P7)|Gyga[ _](?:X|S|QS|XS)|Jax[ _](?:QS|[SXQN]|Mini)|Magnet[ _]M[19]|Navo_QS|Onyx_(QS|Z)|Orin_QS|Pluri[ _](?:[BCMQ]7|[
|
14296 |
device: 'smartphone'
|
14297 |
models:
|
14298 |
- regex: 'Zun[ _]XO'
|
@@ -14329,7 +14887,7 @@ Vonino:
|
|
14329 |
- regex: 'Pluri[ _](B|C|M|Q)7'
|
14330 |
model: 'Pluri $17'
|
14331 |
device: 'tablet'
|
14332 |
-
- regex: 'Pluri[ _](
|
14333 |
model: 'Pluri $18'
|
14334 |
device: 'tablet'
|
14335 |
- regex: 'Magnet[ _]M([19])'
|
@@ -14382,11 +14940,18 @@ Voxtel:
|
|
14382 |
|
14383 |
# Vulcan
|
14384 |
Vulcan:
|
14385 |
-
regex: 'VP5004A'
|
14386 |
device: 'smartphone'
|
14387 |
models:
|
14388 |
-
- regex: 'VP5004A'
|
14389 |
-
model: '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14390 |
|
14391 |
# Walton
|
14392 |
Walton:
|
@@ -14440,7 +15005,7 @@ Wexler:
|
|
14440 |
|
14441 |
# Wiko (wikomobile.com)
|
14442 |
Wiko:
|
14443 |
-
regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa(?!nna)|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 Go|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V8[30]0|P[36]11|K420|K510S?|K130)-(?:TMV|TIM|TVM|EEA|SUN|SWI|OPE|BYT|DU|TH)|WIM Lite|W-K360-TV|W-V600|W-K200|W-U300|U307AS|CINK PEAX 2|HIGHWAY PURE'
|
14444 |
device: 'smartphone'
|
14445 |
models:
|
14446 |
- regex: '(?:WIKO-)?Cink Peax 2'
|
@@ -14513,6 +15078,8 @@ Wiko:
|
|
14513 |
model: 'Kite'
|
14514 |
- regex: 'W_K400'
|
14515 |
model: 'Lenny 5'
|
|
|
|
|
14516 |
- regex: 'U307AS(?:[);/ ]|$)'
|
14517 |
model: 'Life 2'
|
14518 |
- regex: '(?:WIKO-)?Lenny[ -_]?3 Max'
|
@@ -14707,11 +15274,20 @@ Woxter:
|
|
14707 |
|
14708 |
# X-View
|
14709 |
X-View:
|
14710 |
-
regex: 'ZEN_U5
|
14711 |
device: 'smartphone'
|
14712 |
models:
|
14713 |
-
- regex: 'ZEN_U5
|
14714 |
model: 'ZEN U5+'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14715 |
|
14716 |
# POCO (sub brand Xiaomi)
|
14717 |
POCO:
|
@@ -14727,7 +15303,7 @@ POCO:
|
|
14727 |
|
14728 |
# Xiaomi
|
14729 |
Xiaomi:
|
14730 |
-
regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|MI_NOTE_Pro|POCOPHONE|(?:SHARK )?(KLE|MBU)-[AH]0|SKR-[AH]0|SKW-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(MSSP[01]|AXSO0)|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|MiTV4A|M2006C3(?:L[IGC]|LVG|MN?G)|M2007J1SC|M2002J9[EG]|HM2014819|WT88047|M2004J(?:7[AB]|19)C|M2006C3MII|M2003J15SC|M2007J3S[CYG]|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01'
|
14731 |
device: 'smartphone'
|
14732 |
models:
|
14733 |
# specific smartphone models
|
@@ -14833,6 +15409,8 @@ Xiaomi:
|
|
14833 |
model: 'Redmi K20 Pro'
|
14834 |
- regex: 'Redmi K30 5G(?:[);/ ]|$)'
|
14835 |
model: 'Redmi K30 5G'
|
|
|
|
|
14836 |
|
14837 |
- regex: 'MI PAD 4 PLUS(?:[);/ ]|$)'
|
14838 |
model: 'Mi Pad 4 Plus'
|
@@ -15195,7 +15773,7 @@ Toshiba:
|
|
15195 |
|
15196 |
# Vivax (www.vivax.com)
|
15197 |
Vivax:
|
15198 |
-
regex: 'VIVAX|(?:Fly5[_ ]Lite|Fun[_ ]S500|
|
15199 |
device: 'smartphone'
|
15200 |
models:
|
15201 |
- regex: 'Fly5[_ ]Lite(?:[);/ ]|$)'
|
@@ -15206,7 +15784,9 @@ Vivax:
|
|
15206 |
model: 'Fun S500'
|
15207 |
- regex: 'VIVAX[ _]Fly3(?:[);/ ]|$)'
|
15208 |
model: 'Fly 3'
|
15209 |
-
- regex: 'VIVAX
|
|
|
|
|
15210 |
model: '$1'
|
15211 |
- regex: 'SMART Point X5010(?:[);/ ]|$)'
|
15212 |
model: 'Smart Point X5010'
|
@@ -15215,6 +15795,10 @@ Vivax:
|
|
15215 |
- regex: 'VIVAX TABLET TPC 802 3G(?:[);/ ]|$)'
|
15216 |
model: 'TPC-802 3G'
|
15217 |
|
|
|
|
|
|
|
|
|
15218 |
# MLS
|
15219 |
MLS:
|
15220 |
regex: 'IQ(?:0705|L550|1010w?|1012N?|1019N|1025|1380|1401|1436|1452a|1453|1470|1502a|1511|1552|1553|1568|1570|1805N|1806|1808|1810B_M|1832|1850|1890|5017|9610|181011N|E[12]00|EL41|G550|GW516|L30|L5[01]|M801|M1001|N700|P50|R300|S300|S1001|W503|W511T|W553N?|W60[38]|W626|M960|D700|9013_4N)(?:[);/ ]|$)'
|
@@ -15679,7 +16263,7 @@ Zopo:
|
|
15679 |
|
15680 |
# ZTE
|
15681 |
ZTE:
|
15682 |
-
regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580|V Ultra|Q Lux)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|5[48]9J|551J|563J|569[HJ]|573J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|907J)|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|5031O|559DL|6621O|667T|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A510|A[
|
15683 |
device: 'smartphone'
|
15684 |
models:
|
15685 |
# explicit smartphone models
|
@@ -15689,6 +16273,10 @@ ZTE:
|
|
15689 |
model: 'Libero 3'
|
15690 |
- regex: '901ZT(?:[);/ ]|$)'
|
15691 |
model: 'Libero S10'
|
|
|
|
|
|
|
|
|
15692 |
- regex: 'A7020(?:[);/ ]|$)'
|
15693 |
model: 'Blade A7s (2020)'
|
15694 |
- regex: 'ZTE 2050(?:[);/ ]|$)'
|
@@ -15748,7 +16336,7 @@ ZTE:
|
|
15748 |
- regex: 'N9810(?:[);/ ]|$)'
|
15749 |
model: 'Vital'
|
15750 |
- regex: 'NX40[X2](?:[);/ ]|$)'
|
15751 |
-
model: 'Nubia Z5
|
15752 |
- regex: 'NX(403[AE]|406E|404H)(?:[);/ ]|$)'
|
15753 |
model: 'Nubia Z5S Mini'
|
15754 |
- regex: 'NX503A(?:[);/ ]|$)'
|
@@ -15756,31 +16344,31 @@ ZTE:
|
|
15756 |
- regex: 'NX506J(?:[);/ ]|$)'
|
15757 |
model: 'Nubia Z7'
|
15758 |
- regex: 'NX507J(?:[);/ ]|$)'
|
15759 |
-
model: 'Nubia Z7
|
15760 |
- regex: 'NX505J(?:[);/ ]|$)'
|
15761 |
-
model: 'Nubia Z7
|
15762 |
- regex: 'NX508J(?:[);/ ]|$)'
|
15763 |
model: 'Nubia Z9'
|
15764 |
- regex: '(NX5[12]1J|Nubia Z9 mini)(?:[);/ ]|$)'
|
15765 |
-
model: 'Nubia Z9
|
15766 |
- regex: '(NX510J|Nubia Z9 Max)(?:[);/ ]|$)'
|
15767 |
-
model: 'Nubia Z9
|
15768 |
- regex: 'NX512J(?:[);/ ]|$)'
|
15769 |
-
model: 'Nubia Z9
|
15770 |
- regex: 'NX531J(?:[);/ ]|$)'
|
15771 |
model: 'Nubia Z11'
|
15772 |
- regex: 'NX523J_V1'
|
15773 |
model: 'Nubia Z11 Max'
|
15774 |
-
- regex: 'NX529J(?:[);/ ]|$)'
|
15775 |
-
model: 'Nubia Z11 mini'
|
15776 |
- regex: '(?:NX549J|Nubia Z11 mini S)(?:[);/ ]|$)'
|
15777 |
-
model: 'Nubia Z11
|
|
|
|
|
15778 |
- regex: 'NX606J(?:[);/ ]|$)'
|
15779 |
model: 'Nubia Z18'
|
15780 |
- regex: 'NX616J(?:[);/ ]|$)'
|
15781 |
model: 'Nubia Z18S'
|
15782 |
- regex: 'NX611J(?:[);/ ]|$)'
|
15783 |
-
model: 'Nubia Z18
|
15784 |
- regex: 'NX551J(?:[);/ ]|$)'
|
15785 |
model: 'Nubia M2'
|
15786 |
- regex: 'NX563J(?:[);/ ]|$)'
|
@@ -15891,6 +16479,10 @@ ZTE:
|
|
15891 |
model: 'Blade L8'
|
15892 |
- regex: 'Blade A3 2019-T(?:[);/ ]|$)'
|
15893 |
model: 'Blade A3 (2019)'
|
|
|
|
|
|
|
|
|
15894 |
- regex: 'Blade A5 2019-T(?:[);/ ]|$)'
|
15895 |
model: 'Blade A5 (2019)'
|
15896 |
- regex: 'BLADE A0622(?:[);/ ]|$)'
|
@@ -15925,8 +16517,8 @@ ZTE:
|
|
15925 |
model: 'Blade V8 SE'
|
15926 |
- regex: 'Blade V9 Vita(?:[);/ ]|$)'
|
15927 |
model: 'Blade V9 Vita'
|
15928 |
-
- regex: 'Blade
|
15929 |
-
model: 'Blade
|
15930 |
- regex: 'Blade V10 Vita(?:[);/ ]|$)'
|
15931 |
model: 'Blade V10 Vita'
|
15932 |
- regex: 'BLADE V0820(?:[);/ ]|$)'
|
@@ -16068,6 +16660,11 @@ ZTE:
|
|
16068 |
- regex: 'Z6621O(?:[);/ ]|$)'
|
16069 |
model: 'Optus X Vista'
|
16070 |
|
|
|
|
|
|
|
|
|
|
|
16071 |
- regex: 'AxonPhone ([^;/]+) Build'
|
16072 |
model: 'AxonPhone $1'
|
16073 |
- regex: '([a-z0-9]+)_USA_Cricket'
|
@@ -16083,7 +16680,7 @@ ZTE:
|
|
16083 |
model: '$1'
|
16084 |
|
16085 |
Zuum:
|
16086 |
-
regex: 'Zuum[ _-]|COVET|MAGNO|ONIX S|STEDI|STELLAR Z'
|
16087 |
device: 'smartphone'
|
16088 |
models:
|
16089 |
- regex: 'COVET'
|
@@ -16096,6 +16693,10 @@ Zuum:
|
|
16096 |
model: 'Stedi'
|
16097 |
- regex: 'STELLAR Z'
|
16098 |
model: 'Stellar Z'
|
|
|
|
|
|
|
|
|
16099 |
- regex: 'Zuum[ _-]([^;/]+) Build'
|
16100 |
model: '$1'
|
16101 |
- regex: 'Zuum[ _-]?([^;/)]+)(?:[);/ ]|$)'
|
@@ -16195,6 +16796,8 @@ Inoi:
|
|
16195 |
model: '2 Lite (2019)'
|
16196 |
- regex: 'INOI 2 2019'
|
16197 |
model: '2 (2019)'
|
|
|
|
|
16198 |
- regex: 'INOI[_ ]([^;/]+)(?: Build|[;)])'
|
16199 |
model: '$1'
|
16200 |
|
@@ -16232,11 +16835,9 @@ Starway:
|
|
16232 |
|
16233 |
# Savio
|
16234 |
Savio:
|
16235 |
-
regex: 'TB-PO1
|
16236 |
device: 'tv'
|
16237 |
-
|
16238 |
-
- regex: '(TB-PO1)'
|
16239 |
-
model: '$1'
|
16240 |
|
16241 |
# Simbans
|
16242 |
Simbans:
|
@@ -16264,7 +16865,7 @@ MYFON:
|
|
16264 |
|
16265 |
# X-TIGI
|
16266 |
X-TIGI:
|
16267 |
-
regex: 'X[-_]TIGI|Hope7[_ ]Mate'
|
16268 |
device: 'smartphone'
|
16269 |
models:
|
16270 |
- regex: 'X-TIGI_JOY10_PRO'
|
@@ -16282,6 +16883,8 @@ X-TIGI:
|
|
16282 |
model: 'V19'
|
16283 |
- regex: 'X-TIGI[_ ]Photo[_ ]P11'
|
16284 |
model: 'Photo P11'
|
|
|
|
|
16285 |
- regex: 'X[-_]TIGI[ _-]([^/;)]+) Build'
|
16286 |
model: '$1'
|
16287 |
|
@@ -16338,7 +16941,7 @@ NEXBOX:
|
|
16338 |
|
16339 |
# True
|
16340 |
'True':
|
16341 |
-
regex: 'SMART[ _](MAX 4.0 PLUS|4G GEN C [45].[05]|
|
16342 |
device: 'smartphone'
|
16343 |
models:
|
16344 |
- regex: 'SMART MAX 4.0 PLUS'
|
@@ -16349,6 +16952,12 @@ NEXBOX:
|
|
16349 |
model: 'Smart 4G Speedy 5.0 Plus'
|
16350 |
- regex: 'SMART[ _]4G[_ ]Speedy[_ ]5inch'
|
16351 |
model: 'Smart 4G Speedy 5'
|
|
|
|
|
|
|
|
|
|
|
|
|
16352 |
|
16353 |
Yandex:
|
16354 |
regex: '(YNDX-?000SB)(?:[);/ ]|$)'
|
@@ -16383,7 +16992,7 @@ BDF:
|
|
16383 |
|
16384 |
# Highscreen
|
16385 |
Highscreen:
|
16386 |
-
regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ]Power|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ _]?(?:Pro|Evo|Max|Max(?:Lite|2))|PowerFour|BOOST II(?:se)?|FestXL|Fest-Pro|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse)(?:[);/ ]|$)'
|
16387 |
device: 'smartphone'
|
16388 |
models:
|
16389 |
- regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS])(?:[);/ ]|$)'
|
@@ -16406,6 +17015,8 @@ Highscreen:
|
|
16406 |
model: 'Power Four'
|
16407 |
- regex: 'Pure[_ ]Power(?:[);/ ]|$)'
|
16408 |
model: 'Pure Power'
|
|
|
|
|
16409 |
- regex: 'Razar_Pro(?:[);/ ]|$)'
|
16410 |
model: 'Razar Pro'
|
16411 |
- regex: 'Easy[_ ]([SLF]|XL)[_ ]Pro(?:[);/ ]|$)'
|
@@ -16434,6 +17045,8 @@ Highscreen:
|
|
16434 |
model: 'WinWin'
|
16435 |
- regex: 'Expanse(?:[);/ ]|$)'
|
16436 |
model: 'Expanse'
|
|
|
|
|
16437 |
|
16438 |
# CVTE
|
16439 |
CVTE:
|
@@ -16510,7 +17123,7 @@ Unihertz:
|
|
16510 |
|
16511 |
# Chuwi
|
16512 |
Chuwi:
|
16513 |
-
regex: '(?:CW-(Hi8-super|Hi12|V99|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiBox-hero|HiBook pro
|
16514 |
device: 'tablet'
|
16515 |
models:
|
16516 |
- regex: '(CW-Hi8-super)(?:[);/ ]|$)'
|
@@ -16527,8 +17140,12 @@ Chuwi:
|
|
16527 |
model: '$1 Pro'
|
16528 |
- regex: 'HiBook pro(?:[);/ ]|$)'
|
16529 |
model: 'HiBook Pro'
|
16530 |
-
- regex: '
|
16531 |
-
model: '
|
|
|
|
|
|
|
|
|
16532 |
- regex: 'Hi8 pro(?:[);/ ]|$)'
|
16533 |
model: 'Hi8 Pro'
|
16534 |
|
@@ -16603,6 +17220,12 @@ Vinga:
|
|
16603 |
- regex: 'VMP-011-81'
|
16604 |
model: '011'
|
16605 |
|
|
|
|
|
|
|
|
|
|
|
|
|
16606 |
# Nuvo
|
16607 |
Nuvo:
|
16608 |
regex: 'Nuvo[_ ](NS35|Blue ND40|Green[_ ]ND[_ ]45)(?:[);/ ]|$)'
|
@@ -16723,10 +17346,10 @@ Spectrum:
|
|
16723 |
|
16724 |
# Kivi
|
16725 |
Kivi:
|
16726 |
-
regex: '(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|
|
16727 |
device: 'tv'
|
16728 |
models:
|
16729 |
-
- regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|
|
16730 |
model: '$1'
|
16731 |
- regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)'
|
16732 |
model: '$1 v$2'
|
@@ -16749,7 +17372,7 @@ Kanji:
|
|
16749 |
- regex: 'KJ-YUBI(?:[);/ ]|$)'
|
16750 |
model: 'Yubi 3G'
|
16751 |
|
16752 |
-
#Kaiomy
|
16753 |
Kaiomy:
|
16754 |
regex: 'KaiCloud[ ]?(7[48]4|942)(?:[);/ ]|$)'
|
16755 |
device: 'tablet'
|
@@ -16763,13 +17386,15 @@ National:
|
|
16763 |
|
16764 |
# Vsun
|
16765 |
Vsun:
|
16766 |
-
regex: '(?:VSUN (?:ILLUSION|RACE|V9)|MARS TOUCH)(?:[);/ ]|$)'
|
16767 |
device: 'smartphone'
|
16768 |
models:
|
16769 |
- regex: 'ILLUSION(?:[);/ ]|$)'
|
16770 |
model: 'Illusion'
|
16771 |
- regex: 'MARS TOUCH(?:[);/ ]|$)'
|
16772 |
model: 'Mars Touch'
|
|
|
|
|
16773 |
- regex: 'RACE(?:[);/ ]|$)'
|
16774 |
model: 'Race'
|
16775 |
- regex: '(V9)(?:[);/ ]|$)'
|
@@ -16861,11 +17486,11 @@ iGet:
|
|
16861 |
|
16862 |
# iVA
|
16863 |
iVA:
|
16864 |
-
regex: '(LAMCY
|
16865 |
device: 'smartphone'
|
16866 |
models:
|
16867 |
-
- regex: 'LAMCY
|
16868 |
-
model: 'Lamcy
|
16869 |
- regex: 'IVA S6(?:[);/ ]|$)'
|
16870 |
model: 'S6'
|
16871 |
|
@@ -16909,9 +17534,13 @@ Gome:
|
|
16909 |
|
16910 |
# Voyo
|
16911 |
Voyo:
|
16912 |
-
regex: 'VOYO[_ ](A15)(?:[);/ ]|$)'
|
16913 |
device: 'tablet'
|
16914 |
-
|
|
|
|
|
|
|
|
|
16915 |
|
16916 |
# Ryte (Ryte Mobile)
|
16917 |
Ryte:
|
@@ -16937,7 +17566,7 @@ Vontar:
|
|
16937 |
|
16938 |
# Vorke
|
16939 |
Vorke:
|
16940 |
-
regex: 'VORKE (Z[
|
16941 |
device: 'tv'
|
16942 |
model: '$1'
|
16943 |
|
@@ -16955,7 +17584,7 @@ NEXON:
|
|
16955 |
|
16956 |
# ONN
|
16957 |
ONN:
|
16958 |
-
regex: '(ONA19TB00[327])(?:[);/ ]|$)'
|
16959 |
device: 'tablet'
|
16960 |
model: '$1'
|
16961 |
|
@@ -17003,9 +17632,13 @@ Goophone:
|
|
17003 |
|
17004 |
# PocketBook
|
17005 |
PocketBook:
|
17006 |
-
regex: 'PocketBook
|
17007 |
device: 'tablet'
|
17008 |
-
|
|
|
|
|
|
|
|
|
17009 |
|
17010 |
# Bitmore
|
17011 |
Bitmore:
|
@@ -17025,17 +17658,16 @@ Kuliao:
|
|
17025 |
|
17026 |
# Sugar
|
17027 |
Sugar:
|
17028 |
-
regex: 'SUGAR (?:C[12]1|[YF]11|[YFS]9|C6|[FY]7|Y8|Y1[
|
17029 |
device: 'smartphone'
|
17030 |
models:
|
17031 |
- regex: 'SUGAR Y([78]) MAX(?:[);/ ]|$)'
|
17032 |
model: 'Y$1 Max'
|
17033 |
- regex: 'SUGAR F7 Mini(?:[);/ ]|$)'
|
17034 |
model: 'F7 Mini'
|
17035 |
-
- regex: 'SUGAR (C[12]1|[YF]11|[YFS]9|C6|Y7|Y1[
|
17036 |
model: '$1'
|
17037 |
|
17038 |
-
|
17039 |
# Xshitou
|
17040 |
Xshitou:
|
17041 |
regex: 'Xshitou[_ ](P7)(?:[);/ ]|$)'
|
@@ -17062,13 +17694,17 @@ Vodacom:
|
|
17062 |
|
17063 |
# VKworld
|
17064 |
VKworld:
|
17065 |
-
regex: '(?:(?:VK700)-MAX|T5SE)(?:[);/ ]|$)'
|
17066 |
device: 'smartphone'
|
17067 |
models:
|
17068 |
- regex: '(VK700)-MAX(?:[);/ ]|$)'
|
17069 |
model: '$1 Max'
|
|
|
|
|
17070 |
- regex: 'T5SE(?:[);/ ]|$)'
|
17071 |
model: 'T5 SE'
|
|
|
|
|
17072 |
|
17073 |
# Mito
|
17074 |
Mito:
|
@@ -17083,14 +17719,17 @@ Mito:
|
|
17083 |
device: 'tablet'
|
17084 |
model: '$1'
|
17085 |
|
17086 |
-
# TWM
|
17087 |
TWM:
|
17088 |
-
regex: 'Amazing[ _](X[35]s|X[
|
17089 |
device: 'smartphone'
|
17090 |
models:
|
17091 |
- regex: 'Amazing[ _](X[35])s(?:[);/ ]|$)'
|
17092 |
model: 'Amazing $1S'
|
17093 |
-
- regex: 'Amazing[ _](A5S|X[
|
|
|
|
|
|
|
17094 |
model: 'Amazing $1'
|
17095 |
|
17096 |
# Onix
|
@@ -17099,11 +17738,19 @@ Onix:
|
|
17099 |
device: 'tablet'
|
17100 |
model: '$1'
|
17101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17102 |
# Mobo
|
17103 |
Mobo:
|
17104 |
-
regex: '(MT7-442D)(?:[);/ ]|$)'
|
17105 |
device: 'tablet'
|
17106 |
-
|
|
|
|
|
17107 |
|
17108 |
# Macoox
|
17109 |
Macoox:
|
@@ -17141,23 +17788,29 @@ RED:
|
|
17141 |
|
17142 |
# Contixo
|
17143 |
Contixo:
|
17144 |
-
regex: 'Contixo|(?:CX-1045 3G)(?:[);/ ]|$)'
|
17145 |
device: 'tablet'
|
17146 |
models:
|
17147 |
- regex: 'CX-1045 3G(?:[);/ ]|$)'
|
17148 |
model: 'CX-1045 3G'
|
17149 |
- regex: 'CONTIXO GX 1035(?:[);/ ]|$)'
|
17150 |
model: 'GX-1035 4G 10.1"'
|
|
|
|
|
17151 |
- regex: 'B105(?:[);/ ]|$)'
|
17152 |
model: 'B105 3G 10.1"'
|
17153 |
- regex: 'B108(?:[);/ ]|$)'
|
17154 |
model: 'B108 4G 10.1"'
|
17155 |
- regex: 'KT107(?: 3G)?(?:[);/ ]|$)'
|
17156 |
model: 'KT107 3G 10.1"'
|
|
|
|
|
17157 |
- regex: 'KT715 3G(?:[);/ ]|$)'
|
17158 |
model: 'KT715 3G 7.0"'
|
17159 |
- regex: 'KT995(?:[);/ ]|$)'
|
17160 |
model: 'KT995 3G 10.1"'
|
|
|
|
|
17161 |
|
17162 |
# E-Ceros
|
17163 |
'E-Ceros':
|
@@ -17408,7 +18061,7 @@ Asano:
|
|
17408 |
|
17409 |
# Phonemax
|
17410 |
Phonemax:
|
17411 |
-
regex: 'PHONEMAX[_ ](Saturn(?:[_ ]X)?|Mars)(?:[);/ ]|$)'
|
17412 |
device: 'smartphone'
|
17413 |
models:
|
17414 |
- regex: 'PHONEMAX[_ ]Saturn[_ ]X(?:[);/ ]|$)'
|
@@ -17417,6 +18070,8 @@ Phonemax:
|
|
17417 |
model: 'Saturn'
|
17418 |
- regex: 'PHONEMAX[_ ]Mars(?:[);/ ]|$)'
|
17419 |
model: 'Mars'
|
|
|
|
|
17420 |
|
17421 |
# Vipro (Vipro Mobile)
|
17422 |
Vipro:
|
@@ -17488,13 +18143,15 @@ Neomi:
|
|
17488 |
|
17489 |
# Eltex (eltex-co.ru)
|
17490 |
Eltex:
|
17491 |
-
regex: '(?:
|
17492 |
device: 'tv'
|
17493 |
models:
|
17494 |
-
- regex: '
|
17495 |
-
model: 'NV-
|
17496 |
- regex: 'NV501(?:[);/ ]|$)'
|
17497 |
model: 'NV-501'
|
|
|
|
|
17498 |
|
17499 |
# Senkatel
|
17500 |
Senkatel:
|
@@ -17508,11 +18165,11 @@ Bobarry:
|
|
17508 |
device: 'tablet'
|
17509 |
model: 'K10 SE'
|
17510 |
|
17511 |
-
# Wortmann
|
17512 |
Wortmann:
|
17513 |
-
regex: 'TERRA PAD
|
17514 |
device: 'tablet'
|
17515 |
-
model: 'Terra Pad
|
17516 |
|
17517 |
# BB Mobile
|
17518 |
BB Mobile:
|
@@ -17557,34 +18214,38 @@ Billion:
|
|
17557 |
device: 'smartphone'
|
17558 |
model: 'Capture Plus'
|
17559 |
|
17560 |
-
# Tele2 (mobile operator
|
17561 |
Tele2:
|
17562 |
-
regex: 'Tele2[ _]
|
17563 |
device: 'smartphone'
|
17564 |
models:
|
17565 |
-
- regex: 'Tele2[ _]
|
17566 |
-
model: '
|
17567 |
-
- regex: 'Tele2[ _]Midi[ _]2
|
17568 |
model: 'Midi 2.0'
|
17569 |
-
- regex: 'Tele2[ _](Maxi(?:[_ ](?:Plus|LTE))?)(?:[);/ ]|$)'
|
17570 |
model: '$1'
|
17571 |
-
- regex: 'Tele2[ _](
|
17572 |
model: '$1'
|
17573 |
|
17574 |
# Alfawise
|
17575 |
Alfawise:
|
17576 |
-
regex: '(A95X_R1)(?:[);/ ]|$)'
|
17577 |
device: 'tv'
|
17578 |
-
|
|
|
|
|
|
|
|
|
17579 |
|
17580 |
# Klipad
|
17581 |
Klipad:
|
17582 |
-
regex: 'KLIPAD_|(?:KL-V905|KL4889)(?:[);/ ]|$)'
|
17583 |
device: 'smartphone'
|
17584 |
models:
|
17585 |
- regex: '(?:KLIPAD_)?(V355B?|KL600|KL-V905)(?:[);/ ]|$)'
|
17586 |
model: '$1'
|
17587 |
-
- regex: '(KL4889)(?:[);/ ]|$)'
|
17588 |
device: 'tablet'
|
17589 |
model: '$1'
|
17590 |
|
@@ -17602,15 +18263,19 @@ TurboKids:
|
|
17602 |
|
17603 |
# Jinga
|
17604 |
Jinga:
|
17605 |
-
regex: 'Jinga[-_ ]|(?:
|
17606 |
device: 'smartphone'
|
17607 |
models:
|
17608 |
- regex: 'Optim4G(?:[);/ ]|$)'
|
17609 |
model: 'Optim 4G'
|
|
|
|
|
17610 |
- regex: 'Hotz[_ ]M1(?:[);/ ]|$)'
|
17611 |
model: 'Hotz M1'
|
17612 |
- regex: 'PassPlus(?:[);/ ]|$)'
|
17613 |
model: 'Pass Plus'
|
|
|
|
|
17614 |
- regex: 'WinPRO(?:[);/ ]|$)'
|
17615 |
model: 'Win Pro'
|
17616 |
- regex: 'Touch4G(?:[);/ ]|$)'
|
@@ -17623,8 +18288,8 @@ Jinga:
|
|
17623 |
model: 'Iron'
|
17624 |
- regex: 'Jinga Basco neo(?:[);/ ]|$)'
|
17625 |
model: 'Basco Neo'
|
17626 |
-
- regex: 'Jinga Basco L3(?:[);/ ]|$)'
|
17627 |
-
model: 'Basco
|
17628 |
- regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)'
|
17629 |
model: 'Trezor S1 Plus'
|
17630 |
- regex: 'JINGA_IGO_L2(?:[);/ ]|$)'
|
@@ -17636,9 +18301,13 @@ Jinga:
|
|
17636 |
|
17637 |
# Twoe
|
17638 |
Twoe:
|
17639 |
-
regex: 'TWOE[-_ ]
|
17640 |
device: 'smartphone'
|
17641 |
-
|
|
|
|
|
|
|
|
|
17642 |
|
17643 |
# iTruck
|
17644 |
iTruck:
|
@@ -17674,9 +18343,13 @@ Primux:
|
|
17674 |
|
17675 |
# iMars
|
17676 |
iMars:
|
17677 |
-
regex: 'IMARS VEGA X7(?:[);/ ]|$)'
|
17678 |
device: 'smartphone'
|
17679 |
-
|
|
|
|
|
|
|
|
|
17680 |
|
17681 |
# Logic
|
17682 |
Logic:
|
@@ -17716,7 +18389,7 @@ Cloudfone:
|
|
17716 |
|
17717 |
# Vsmart
|
17718 |
Vsmart:
|
17719 |
-
regex: '(?:Joy 1\+|Active 1\+|Bee 3)(?:[);/ ]|$)'
|
17720 |
device: 'smartphone'
|
17721 |
models:
|
17722 |
- regex: 'Joy 1\+(?:[);/ ]|$)'
|
@@ -17725,18 +18398,19 @@ Vsmart:
|
|
17725 |
model: 'Active 1 Plus'
|
17726 |
- regex: 'Bee 3(?:[);/ ]|$)'
|
17727 |
model: 'Bee 3'
|
|
|
|
|
17728 |
|
17729 |
# MiXzo
|
17730 |
MiXzo:
|
17731 |
-
regex: '(?:MiXzo[ _])?(?:ME1023|ME1030|MX1037|MX1024|MX10[24]1)([ _][34]G)?(?:[);/ ]|$)'
|
17732 |
device: 'tablet'
|
17733 |
models:
|
17734 |
- regex: 'MiXzo[_ ]ME(1023|1030)(?:[_ ]3G)(?:[);/ ]|$)'
|
17735 |
model: 'ME$1 3G'
|
17736 |
- regex: 'MiXzo[_ ]MX1021(?:[_ ]3G)?(?:[);/ ]|$)'
|
17737 |
model: 'MX1021 3G'
|
17738 |
-
|
17739 |
-
- regex: '(?:MiXzo[ _])?MX(1037|1041|1024)[ _]4G(?:[);/ ]|$)'
|
17740 |
model: 'MX$1 4G'
|
17741 |
|
17742 |
# Openbox
|
@@ -17781,17 +18455,21 @@ Aoson:
|
|
17781 |
|
17782 |
# FireFly Mobile
|
17783 |
FireFly Mobile:
|
17784 |
-
regex: '(AURII[ _](?:Passion|Virtuoso|Secret Lite|FORCE|FUSION|F8[_ ]Premium|XCITE)|INTENSE[ _](?:POWER|METAL_2|XT))(?:[);/ ]|$)'
|
17785 |
device: 'smartphone'
|
17786 |
models:
|
17787 |
- regex: 'AURII[ _]FORCE(?:[);/ ]|$)'
|
17788 |
-
model: '
|
|
|
|
|
|
|
|
|
17789 |
- regex: 'AURII[ _]FUSION(?:[);/ ]|$)'
|
17790 |
-
model: '
|
17791 |
- regex: 'AURII[ _]XCITE(?:[);/ ]|$)'
|
17792 |
-
model: '
|
17793 |
-
- regex: '
|
17794 |
-
model: '$1'
|
17795 |
- regex: 'INTENSE POWER(?:[);/ ]|$)'
|
17796 |
model: 'Intense Power'
|
17797 |
- regex: 'INTENSE_XT(?:[);/ ]|$)'
|
@@ -17845,9 +18523,13 @@ Dolamee:
|
|
17845 |
|
17846 |
# INVIN
|
17847 |
Invin:
|
17848 |
-
regex: 'INVIN[ _-]
|
17849 |
device: 'tv'
|
17850 |
-
|
|
|
|
|
|
|
|
|
17851 |
|
17852 |
# Doopro
|
17853 |
Doopro:
|
@@ -17885,11 +18567,21 @@ Nos:
|
|
17885 |
- regex: 'NOS Roya(?:[);/ ]|$)'
|
17886 |
model: 'Roya'
|
17887 |
|
17888 |
-
# Accent
|
17889 |
Accent:
|
17890 |
-
regex: '
|
17891 |
device: 'smartphone'
|
17892 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17893 |
|
17894 |
# Avenzo (www.avenzo.es)
|
17895 |
Avenzo:
|
@@ -17903,9 +18595,15 @@ Avenzo:
|
|
17903 |
|
17904 |
# Beelink
|
17905 |
Beelink:
|
17906 |
-
regex: 'Beelink (GT1|LAKE I|SEA I|A1)(?:[);/ ]|$)'
|
17907 |
device: 'tv'
|
17908 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
17909 |
|
17910 |
# MAXVI
|
17911 |
MAXVI:
|
@@ -18055,15 +18753,19 @@ Pixelphone:
|
|
18055 |
|
18056 |
# Iris
|
18057 |
Iris:
|
18058 |
-
regex: '(?:Vox[_ ](?:
|
18059 |
device: 'smartphone'
|
18060 |
models:
|
18061 |
-
- regex: '
|
18062 |
-
model: 'Vox
|
18063 |
- regex: 'VOX Alpha Plus'
|
18064 |
model: 'Vox Alpha Plus'
|
|
|
|
|
18065 |
- regex: 'VOX Alpha'
|
18066 |
model: 'Vox Alpha'
|
|
|
|
|
18067 |
- regex: 'VOX POP plus'
|
18068 |
model: 'Vox Pop Plus'
|
18069 |
- regex: 'VOX POP Pro'
|
@@ -18173,13 +18875,15 @@ eSTAR:
|
|
18173 |
|
18174 |
# Hometech
|
18175 |
Hometech:
|
18176 |
-
regex: 'Ideal (?:10S|Tab [79])(?:[);/ ]|$)'
|
18177 |
device: 'tablet'
|
18178 |
models:
|
18179 |
-
- regex: '(Ideal (?:10S|Tab 9))'
|
18180 |
model: '$1'
|
18181 |
- regex: 'Ideal Tab 7 Ips( 3G)?'
|
18182 |
model: 'Ideal Tab 7 IPS$1'
|
|
|
|
|
18183 |
|
18184 |
# ExMobile
|
18185 |
ExMobile:
|
@@ -18217,6 +18921,436 @@ Andowl:
|
|
18217 |
device: 'tv'
|
18218 |
model: '$1'
|
18219 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18220 |
# Hardkernel (www.hardkernel.com)
|
18221 |
Hardkernel:
|
18222 |
regex: 'ODROID[-]?(C2|U2|XU[34])(?:[);/ ]|$)'
|
@@ -18234,3 +19368,29 @@ Shtrikh-M:
|
|
18234 |
regex: 'SHTRIH-SMARTPOS-F2(?:[);/ ]|$)'
|
18235 |
device: 'peripheral'
|
18236 |
model: 'Smartpos F2'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
8 |
+
# Ace or ACE France (www.acemobile.fr)
|
9 |
Ace:
|
10 |
+
regex: '(?:BUZZ [12]|BUZZ 2|CLEVER 1|URBAN 1(?: Pro)?)(?:[);/ ]|$)'
|
11 |
+
device: 'smartphone'
|
12 |
+
models:
|
13 |
+
- regex: 'BUZZ ([12]) Lite'
|
14 |
+
model: 'Buzz $1 Lite'
|
15 |
+
- regex: 'BUZZ ([12]) Plus'
|
16 |
+
model: 'Buzz $1 Plus'
|
17 |
+
- regex: 'BUZZ ([12])'
|
18 |
+
model: 'Buzz $1'
|
19 |
+
- regex: 'CLEVER 1'
|
20 |
+
model: 'Clever 1'
|
21 |
+
- regex: 'URBAN 1 Pro'
|
22 |
+
model: 'Urban 1 Pro'
|
23 |
+
- regex: 'URBAN 1'
|
24 |
+
model: 'Urban 1'
|
25 |
|
26 |
'Tunisie Telecom':
|
27 |
regex: 'StarTrail TT(?:[);/ ]|$)'
|
72 |
- regex: '((?:StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem)[^;/]*) Build'
|
73 |
model: '$1'
|
74 |
|
75 |
+
# HTC (htc.com)
|
76 |
HTC:
|
77 |
+
regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\))|(Amaze[ _]4G|(?<!BLU LIFE )One ?[XELSV\+]+)(?:[);/ ]|$)|SPV E6[05]0|(One M8|X525a|PG86100|PC36100|XV6975|PJ83100|2PYB2|2PS64|2PZC5|0PJA10|0PJA2|HTV33|0PM92|0PCV1|601HT|0PAJ5|HTL2[23]|HTV3[12]|2PQ93|X2-HT|EXODUS 1)(?:[);/ ]|$)'
|
78 |
device: 'smartphone'
|
79 |
models:
|
80 |
# explicit smartphone models
|
116 |
model: 'Vox'
|
117 |
- regex: '2PYB2'
|
118 |
model: 'Bolt'
|
119 |
+
- regex: '2PS64'
|
120 |
+
model: '10'
|
121 |
- regex: '0PM92(?:[);/ ]|$)'
|
122 |
model: 'Desire 626S'
|
123 |
- regex: '0PCV1(?:[);/ ]|$)'
|
124 |
model: 'Desire 510'
|
125 |
- regex: '608t(?:[);/ ]|$)'
|
126 |
model: 'Desire 608t'
|
127 |
+
- regex: 'EXODUS 1(?:[);/ ]|$)'
|
128 |
+
model: 'Exodus 1'
|
129 |
|
130 |
- regex: 'NexusHD2' # custom rom for hd2
|
131 |
model: 'HD2'
|
172 |
model: 'One E8'
|
173 |
- regex: 'HTV32(?:[);/ ]|$)'
|
174 |
model: '10'
|
175 |
+
- regex: 'HTV31(?:[);/ ]|$)'
|
176 |
+
model: 'J Butterfly'
|
177 |
|
178 |
# microsoft
|
179 |
Microsoft:
|
516 |
|
517 |
# Apple
|
518 |
Apple:
|
519 |
+
regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork|HomePod|Watch ?OS|Watch1,[12]'
|
520 |
models:
|
521 |
- regex: 'HomePod'
|
522 |
device: 'smart speaker'
|
523 |
model: 'HomePod'
|
524 |
|
525 |
+
- regex: 'Watch1,1'
|
526 |
+
device: 'wearable'
|
527 |
+
model: 'Watch 38mm'
|
528 |
+
|
529 |
+
- regex: 'Watch1,2'
|
530 |
+
device: 'wearable'
|
531 |
+
model: 'Watch 42mm'
|
532 |
+
|
533 |
+
- regex: 'Watch2,6'
|
534 |
+
device: 'wearable'
|
535 |
+
model: 'Watch Series 1 38mm'
|
536 |
+
|
537 |
+
- regex: 'Watch2,7'
|
538 |
+
device: 'wearable'
|
539 |
+
model: 'Watch Series 1 42mm'
|
540 |
+
|
541 |
+
- regex: 'Watch2,3'
|
542 |
+
device: 'wearable'
|
543 |
+
model: 'Watch Series 2 38mm'
|
544 |
+
|
545 |
+
- regex: 'Watch2,4'
|
546 |
+
device: 'wearable'
|
547 |
+
model: 'Watch Series 2 42mm'
|
548 |
+
|
549 |
+
- regex: 'Watch3,[13]'
|
550 |
+
device: 'wearable'
|
551 |
+
model: 'Watch Series 3 38mm'
|
552 |
+
|
553 |
+
- regex: 'Watch3,[24]'
|
554 |
+
device: 'wearable'
|
555 |
+
model: 'Watch Series 3 42mm'
|
556 |
+
|
557 |
+
- regex: 'Watch([456]),[13]'
|
558 |
+
device: 'wearable'
|
559 |
+
model: 'Watch Series $1 40mm'
|
560 |
+
|
561 |
+
- regex: 'Watch([456]),[24]'
|
562 |
+
device: 'wearable'
|
563 |
+
model: 'Watch Series $1 44mm'
|
564 |
+
|
565 |
# specific smartphone devices
|
566 |
- regex: '(?:Apple-)?iPh(?:one)?1[C,_]1'
|
567 |
model: 'iPhone'
|
638 |
- regex: '(?:Apple-)?iPh(?:one)?12[C,_][8]'
|
639 |
model: 'iPhone SE (2020)'
|
640 |
device: 'phablet'
|
641 |
+
- regex: '(?:Apple-)?iPh(?:one)?13[C,_][1]'
|
642 |
+
model: 'iPhone 12 Mini'
|
643 |
+
device: 'smartphone'
|
644 |
+
- regex: '(?:Apple-)?iPh(?:one)?13[C,_][2]'
|
645 |
+
model: 'iPhone 12'
|
646 |
+
device: 'phablet'
|
647 |
+
- regex: '(?:Apple-)?iPh(?:one)?13[C,_][3]'
|
648 |
+
model: 'iPhone 12 Pro'
|
649 |
+
device: 'phablet'
|
650 |
+
- regex: '(?:Apple-)?iPh(?:one)?13[C,_][4]'
|
651 |
+
model: 'iPhone 12 Pro Max'
|
652 |
+
device: 'phablet'
|
653 |
|
654 |
# specific tablet devices
|
655 |
- regex: '(?:Apple-)?iPad1[C,_]1'
|
1132 |
|
1133 |
# Aiwa
|
1134 |
Aiwa:
|
1135 |
+
regex: '(?:AW790|M300|AWM(?:533|50[19]|561)|AW500)(?:[);/ ]|$)'
|
1136 |
device: 'smartphone'
|
1137 |
models:
|
1138 |
- regex: 'AW790(?:[);/ ]|$)'
|
1139 |
model: 'AW790'
|
1140 |
- regex: 'AW500(?:[);/ ]|$)'
|
1141 |
model: 'AW500'
|
1142 |
+
- regex: 'AWM(533|50[19]|561)(?:[);/ ]|$)'
|
1143 |
+
model: 'AWM$1'
|
1144 |
- regex: 'M300(?:[);/ ]|$)'
|
1145 |
model: 'M300'
|
1146 |
device: 'phablet'
|
1184 |
|
1185 |
# Alcatel (alcatelmobile.com)
|
1186 |
Alcatel:
|
1187 |
+
regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|TIMXL|(?:(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGXTL]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|A466BG|A621BL|4114E|5001[ADJTU]|5002[ADF]|5003[ADGU]|5006D|5007[AU]|5008[ADUYT]|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024[ADJF]|5025[DEG]|5026[ADJ]|5027B|5028[AYD]|5029[EYD]|5030D|5032W|5033[AEFXDJGMOTXYQS]|5034D|5036D|5038[ADEX]|5039[DY]|5041[CD]|5042[ADEFGWXT]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5048[AYUI]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[ADY]|5053[ADKY]|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADJXYZIST]|5060[ADJ]|5061[KU]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6042D|6043[AD]|6044D|6045[BFIKOYX]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060S|6062W|6070K|7040[ADEFKRT]|7041[DX]|7042A|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7053D|7055A|7070X|7071[ADX]|8030Y|8050[DEGX]|8063|8088[XQ]|9001[DIX]|9002X|9003[AX]|9024O|9005X|9026X|9007[ATX]|9008[ADIJNTUX]|9009G|9010X|9020A|9022X|9027[FTWX]|9203A|A(?:464BG|570BL|50[13]DL|57[17]VL|574BL)|I213|I216X|(?<!\.)80(?:82|6[78]))(?:_(?:EEA|RU))?|P360X)(?:[);/ ]|$)'
|
1188 |
device: 'smartphone'
|
1189 |
models:
|
1190 |
- regex: '5022[EDX]|5070D'
|
1255 |
model: 'One Touch Dawn'
|
1256 |
- regex: '5024[ADF]|5028Y'
|
1257 |
model: '1S'
|
1258 |
+
- regex: '7071[ADX]'
|
1259 |
+
model: 'A7 XL'
|
1260 |
- regex: '5002[AD]'
|
1261 |
model: '1B (2020)'
|
1262 |
+
- regex: '4034T'
|
1263 |
+
model: '1E'
|
1264 |
- regex: '5002F'
|
1265 |
model: '1A (2020)'
|
1266 |
- regex: '5034D'
|
1345 |
- regex: '9009G'
|
1346 |
model: '1T'
|
1347 |
device: 'tablet'
|
1348 |
+
- regex: '(?!<\.)8082(?:_(?:EEA|RU))?(?:[);/ ]|$)'
|
1349 |
+
model: '1T 10'
|
1350 |
+
device: 'tablet'
|
1351 |
+
- regex: '(?!<\.)806[78](?:_(?:EEA|RU))?(?:[);/ ]|$)'
|
1352 |
+
model: '1T 7'
|
1353 |
+
device: 'tablet'
|
1354 |
- regex: '9022X'
|
1355 |
model: 'One Touch Pixi 3 8"'
|
1356 |
device: 'phablet'
|
1465 |
model: 'One Touch 813'
|
1466 |
- regex: 'OT871A'
|
1467 |
model: 'One Touch 871A'
|
1468 |
+
- regex: 'P360X'
|
1469 |
+
model: 'One Touch Pop 10'
|
1470 |
- regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
|
1471 |
device: 'tablet'
|
1472 |
model: 'One Touch $1'
|
1500 |
model: 'Go Flip'
|
1501 |
- regex: '5044[GS]'
|
1502 |
model: 'U50'
|
1503 |
+
- regex: '5033[ADXJEFGMOTXYQS]'
|
1504 |
model: '1'
|
1505 |
- regex: '5009[AD]'
|
1506 |
model: '1C'
|
1507 |
+
- regex: '5008[ADUYT]'
|
1508 |
model: '1X (2019)'
|
1509 |
- regex: '5007[AU]'
|
1510 |
model: '1V (2020)'
|
1511 |
+
- regex: '5003[ADGU]'
|
1512 |
model: '1C (2019)'
|
1513 |
- regex: '5006D'
|
1514 |
model: '3C (2019)'
|
1520 |
model: '1SE (2020)'
|
1521 |
- regex: '5001[ADJTU]'
|
1522 |
model: '1V'
|
1523 |
+
- regex: '5059[ADJXYZIT]'
|
1524 |
model: '1X'
|
1525 |
- regex: '5059S'
|
1526 |
model: 'Avalon V'
|
1527 |
+
- regex: '5060[ADJ]'
|
1528 |
model: '5V'
|
1529 |
device: 'phablet'
|
1530 |
+
- regex: '5052[ADY]|5053[ADKY]'
|
1531 |
model: '3'
|
1532 |
- regex: '5029E'
|
1533 |
model: '3 (2020)'
|
1537 |
model: '3V'
|
1538 |
- regex: '5026[ADJ]'
|
1539 |
model: '3C'
|
1540 |
+
- regex: '5039[DY]'
|
1541 |
model: '3L'
|
1542 |
device: 'phablet'
|
1543 |
- regex: '5058[AIY]'
|
1732 |
|
1733 |
# Allwinner
|
1734 |
Allwinner:
|
1735 |
+
regex: '(?:QUAD-CORE A64 p3|ZY-07B|UltraOcta-T8)(?:[);/ ]|$)'
|
1736 |
device: 'tablet'
|
1737 |
models:
|
1738 |
- regex: 'QUAD-CORE A64 p3'
|
1739 |
model: 'A64 QUAD-CORE p3'
|
1740 |
- regex: 'ZY-07B'
|
1741 |
model: 'ZY-07B'
|
1742 |
+
- regex: 'UltraOcta-T8'
|
1743 |
+
device: 'car browser'
|
1744 |
+
model: 'Ultra Octa T8'
|
1745 |
|
1746 |
# altron
|
1747 |
altron:
|
1810 |
models:
|
1811 |
- regex: 'Numy 3G AX1'
|
1812 |
model: 'Novo 7 Numy AX1 3G'
|
1813 |
+
- regex: 'Numy[_ ]?3G[_ ]?Sword'
|
1814 |
+
model: 'Numy 3G Sword'
|
1815 |
- regex: 'NOVO10 Spark'
|
1816 |
model: 'Novo 10 Spark'
|
1817 |
- regex: 'AX10PRO'
|
1824 |
model: 'Numy 3G Talos 2'
|
1825 |
- regex: 'NUMY3GAX9(?:[);/ ]|$)'
|
1826 |
model: 'Numy 3G AX9'
|
1827 |
+
- regex: 'Numy3G_AX10(?:[);/ ]|$)'
|
1828 |
+
model: 'Numy 3G AX10'
|
1829 |
- regex: '(Novo 10 Hero QuadCore)'
|
1830 |
model: '$1'
|
1831 |
- regex: 'Aurora-II'
|
2058 |
|
2059 |
# Asus
|
2060 |
Asus:
|
2061 |
+
regex: 'Asus|Transformer|ZenFone Max|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)(?:[);/ ]|$)|G55[023]KL|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(5[02]0|620|55[2345])KL|ZD55[23]KL|ZS661KS|ZS(6[0236]0|55[10])KL|ZB(500KG|601KL)|MeMo Pad FHD 10 LTE|Z00[SV]D'
|
2062 |
device: 'smartphone'
|
2063 |
models:
|
2064 |
# explicit tablet models
|
2158 |
- regex: 'ASUS Tablet P1801-T'
|
2159 |
model: 'Transformer AiO P1801 18.4"'
|
2160 |
device: 'tablet'
|
2161 |
+
- regex: 'ASUS TAB A8'
|
2162 |
+
model: 'TAB A8'
|
2163 |
+
device: 'tablet'
|
2164 |
|
2165 |
# explicit phablet models
|
2166 |
- regex: 'ME371MG(?:[);/ ]|$)'
|
2182 |
# explicit smartphone models
|
2183 |
- regex: '(?:ASUS_)?T00N'
|
2184 |
model: 'PadFone S'
|
2185 |
+
- regex: '(?:ASUS_)?T00E'
|
2186 |
+
model: 'PadFone Mini'
|
2187 |
+
- regex: '(?:ASUS[-_])?T00T'
|
2188 |
+
model: 'PadFone X Mini'
|
2189 |
- regex: '(?:ASUS_)?A002(A)?'
|
2190 |
model: 'ZenFone AR'
|
2191 |
- regex: '(?:ASUS_)?A006'
|
2212 |
model: 'ZenFone Lite L1'
|
2213 |
- regex: '(?:ASUS_)Z00YD'
|
2214 |
model: 'Live'
|
2215 |
+
- regex: '(?:ASUS_)?(?:Z00[ERLMTW]D|Z011D|ZE500KL)'
|
2216 |
model: 'ZenFone 2 Laser'
|
2217 |
- regex: '(?:ASUS_)?(?:T00[IQ1]|Z01KD)'
|
2218 |
model: 'ZenFone 4'
|
2307 |
- regex: '(?:Asus|Transformer) ((?:Pad |Prime )?TF[0-9a-z]+)'
|
2308 |
device: 'tablet'
|
2309 |
model: 'Transformer $1'
|
2310 |
+
- regex: 'Chromebook Flip (C10[01]PA|C302)'
|
2311 |
device: 'desktop'
|
2312 |
model: 'Chromebook Flip $1'
|
2313 |
|
2339 |
|
2340 |
# Avvio
|
2341 |
Avvio:
|
2342 |
+
regex: 'Avvio[ _]?([a-z0-9\-]+)|CHIVAS_55(?:[);/ ]|$)'
|
2343 |
device: 'smartphone'
|
2344 |
models:
|
2345 |
+
- regex: 'CHIVAS_55'
|
2346 |
+
model: 'Chivas 55'
|
2347 |
- regex: 'Avvio[ _]PAD'
|
2348 |
model: 'PAD'
|
2349 |
device: 'tablet'
|
2403 |
|
2404 |
# Blu
|
2405 |
Blu:
|
2406 |
+
regex: 'BLU[ _]|(?:blu|Dash)[ _]([^/;)]+)(?: Build|[;)])|(?:Studio (5.0K|5.5|View XL|Mega|C 8\+8|[CM] HD|[CGX]|Selfie LTE|Touch|M5 Plus|J[1258]|X8 HD)|Advance (4.0 ?[LM]|5.[02](?: HD)?|A4|L[45])|ENERGY (DIAMOND|XL)|LIFE XL|B110DL|Dash (?:X[2L]|L3)|PURE XL|Life One X2|Grand M3|GRAND (?:5.5 HD|XL LTE)|R1 (?:HD|PLUS)|Tank Xtreme 5.0|Tank Xtreme Pro|STUDIO SELFIE|Touchbook M7 Pro|DASH X PLUS|C[456] 2019)(?:[);/ ]|$)'
|
2407 |
device: 'smartphone'
|
2408 |
models:
|
2409 |
+
- regex: 'Advance (4.0 ?[LM]|4.0|5.[02](?: HD)?|A4|L[54])'
|
2410 |
model: 'Advance $1'
|
2411 |
+
- regex: '(?:BLU[_ ])?Studio[ _](5.0 C|5.5|View XL|Mega|C 8\+8|C HD|C|G|Touch|M HD|M5 Plus|J[1258]|X8 HD|X5|XL|X)(?:[);/ ]|$)'
|
2412 |
model: 'Studio $1'
|
2413 |
+
- regex: '(?:BLU[_ ])?Studio[ _]5.0 ?K(?:[);/ ]|$)'
|
2414 |
+
model: 'Studio 5.0 K'
|
2415 |
- regex: 'STUDIO SELFIE LTE'
|
2416 |
model: 'Studio Selfie LTE'
|
2417 |
- regex: 'STUDIO ONE'
|
2420 |
model: 'Studio Selfie $1'
|
2421 |
- regex: 'STUDIO SELFIE'
|
2422 |
model: 'Studio Selfie'
|
2423 |
+
- regex: '(?:BLU[_ ])?NEO_ENERGY_MINI'
|
2424 |
+
model: 'Neo Energy Mini'
|
2425 |
- regex: 'ENERGY DIAMOND'
|
2426 |
model: 'Energy Diamond'
|
2427 |
- regex: 'ENERGY XL'
|
2432 |
model: 'Energy X Plus'
|
2433 |
- regex: 'LIFE XL'
|
2434 |
model: 'Life XL'
|
2435 |
+
- regex: 'DASH X PLUS'
|
2436 |
+
model: 'Dash X Plus'
|
2437 |
+
- regex: 'DASH 4.5'
|
2438 |
+
model: 'Dash 4.5'
|
2439 |
- regex: 'Dash XL'
|
2440 |
model: 'Dash XL'
|
2441 |
- regex: 'PURE XL'
|
2442 |
model: 'Pure XL'
|
2443 |
- regex: 'Life One X2'
|
2444 |
model: 'Life One X2'
|
2445 |
+
- regex: 'LIFE ONE X'
|
2446 |
+
model: 'Life One X'
|
2447 |
- regex: 'LIFE ONE'
|
2448 |
model: 'Life One'
|
2449 |
+
- regex: 'LIFE MARK'
|
2450 |
+
model: 'Life Mark'
|
2451 |
- regex: 'NEO X PLUS'
|
2452 |
model: 'Neo X Plus'
|
2453 |
- regex: 'NEO (XL|X)'
|
2458 |
model: 'Grand X LTE'
|
2459 |
- regex: 'Grand XL LTE'
|
2460 |
model: 'Grand XL LTE'
|
2461 |
+
- regex: 'Grand M3'
|
2462 |
+
model: 'Grand M3'
|
2463 |
- regex: 'B110DL'
|
2464 |
model: 'View Mega'
|
2465 |
- regex: 'R1 HD'
|
2466 |
model: 'R1 HD'
|
2467 |
- regex: 'R1 PLUS'
|
2468 |
model: 'R1 Plus'
|
2469 |
+
- regex: 'C([456]) (2019)'
|
2470 |
+
model: 'C$1 ($2)'
|
2471 |
- regex: 'Tank Xtreme 5.0'
|
2472 |
model: 'Tank Xtreme 5.0'
|
2473 |
- regex: 'Tank Xtreme Pro'
|
2474 |
model: 'Tank Xtreme Pro'
|
2475 |
- regex: 'VIVO AIR LTE'
|
2476 |
model: 'Vivo Air LTE'
|
2477 |
+
- regex: 'Touchbook G7'
|
2478 |
+
model: 'Touchbook G7'
|
2479 |
+
- regex: '(?:BLU[_ ])?VIVO[ _]SELFIE'
|
2480 |
+
model: 'Vivo Selfie'
|
2481 |
|
2482 |
- regex: 'Touchbook M7 Pro'
|
2483 |
model: 'Touchbook M7 Pro'
|
2484 |
device: 'tablet'
|
2485 |
+
- regex: 'STUDIO 7.0 II'
|
2486 |
+
model: 'Studio 7.0" II'
|
2487 |
+
device: 'tablet'
|
2488 |
|
2489 |
+
- regex: 'DASH (L[45] LTE|5.0|L[45]X|L3|X2|[LMX])(?:[);/ ]|$)'
|
2490 |
model: 'Dash $1'
|
2491 |
+
|
2492 |
+
- regex: 'DASH[ _]([^/;]+) Build'
|
2493 |
model: 'Dash $1'
|
2494 |
+
|
2495 |
+
- regex: 'blu[ _]([^/;]+)( Build|[);])'
|
2496 |
model: '$1'
|
2497 |
|
2498 |
# Bluegood
|
2556 |
|
2557 |
# Black Fox
|
2558 |
'Black Fox':
|
2559 |
+
regex: 'BMM[ _-]?(?:44[123]D|44[12]S|431D|533D|54[12]S|541[ABW]|54[123]D|543S|531[ABD]|532 S)(?:[);/ ]|$)'
|
2560 |
device: 'smartphone'
|
2561 |
models:
|
2562 |
- regex: 'BMM443D'
|
2587 |
model: 'B3'
|
2588 |
- regex: 'BMM541W'
|
2589 |
model: 'B7R Fox'
|
2590 |
+
- regex: 'BMM 532 S'
|
2591 |
+
model: 'BMM 532S'
|
2592 |
- regex: 'BMM[ _-]?(533D|431D|54[12]S)(?:[);/ ]|$)'
|
2593 |
model: 'BMM $1'
|
2594 |
|
2927 |
- regex: 'BENQ(?:[ \-])?([a-z0-9]+)'
|
2928 |
model: '$1'
|
2929 |
|
2930 |
+
# Blaupunkt (blaupunkt.com)
|
2931 |
Blaupunkt:
|
2932 |
+
regex: 'Blaupunkt|Soundphone S2|Atlantis[_ ](?:1001A|1010A|A10\.G40[23])|SLplus02|Discovery[_ ](?:A10_302|111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803'
|
2933 |
device: 'tablet'
|
2934 |
models:
|
2935 |
- regex: 'Discovery[_ ]111C'
|
2942 |
model: 'Discovery 1001A'
|
2943 |
- regex: 'Discovery[_ ]1001'
|
2944 |
model: 'Discovery 1001'
|
2945 |
+
- regex: 'Soundphone S2'
|
2946 |
+
model: 'Soundphone S2'
|
2947 |
- regex: 'Endeavour[_ ](101[GLM]|785|100[01]|101[03]|1100)'
|
2948 |
model: 'Endeavour $1'
|
2949 |
- regex: 'Polaris[_ ](803)'
|
2952 |
model: 'Atlantis $1'
|
2953 |
- regex: 'SLplus02'
|
2954 |
model: 'SL Plus 02'
|
2955 |
+
- regex: 'Blaupunkt[_ ](SL[_ ]0[124]|SM[_ ]0[12])'
|
2956 |
device: 'smartphone'
|
2957 |
model: '$1'
|
2958 |
|
3301 |
- regex: 'Aquaris M8'
|
3302 |
model: 'Aquaris M8'
|
3303 |
device: 'tablet'
|
3304 |
+
- regex: 'Aquaris_([AM])4.5'
|
3305 |
+
model: 'Aquaris $14.5'
|
3306 |
- regex: 'BQ(?:ru)?[_ ]5590(?:[);/ ]|$)'
|
3307 |
model: 'Spring'
|
3308 |
- regex: 'BQ[S]?-(?:6016L|5520)(?:[);/ ]|$)'
|
3371 |
device: 'tablet'
|
3372 |
- regex: '(?:bq )?(Aquaris[^/;]*) Build'
|
3373 |
model: '$1'
|
3374 |
+
- regex: 'Aquaris (E(4.5|[56])|M(5|10)|U2 Lite|U2|U (Lite|Plus)|V Plus|X5 Plus|X2? Pro|X[25]|[CMUVX])'
|
3375 |
model: 'Aquaris $1'
|
3376 |
- regex: 'bq ([^/;]+) Build'
|
3377 |
model: '$1'
|
3379 |
|
3380 |
# Bush
|
3381 |
Bush:
|
3382 |
+
regex: 'Bush[ _-]|Bush10Nou'
|
3383 |
device: 'smartphone'
|
3384 |
models:
|
3385 |
+
- regex: 'Bush10Nou'
|
3386 |
+
device: 'tablet'
|
3387 |
+
model: '10Nou'
|
3388 |
- regex: 'BUSH ([^;/)]+)Tablet(?: Build|[);])'
|
3389 |
model: '$1Tablet'
|
3390 |
device: 'tablet'
|
3430 |
regex: 'CASPER[_ ]|VIA[- _](T7D|A[34]|E3|F[123]|G4|M4|[LS]8|S7|P2|V8C|A1_Plus|A1|S10|S|T17_M|T1[07]|T7|T7-3G|T8B|T8D-3G)(?:[);/ ]|$)'
|
3431 |
device: 'smartphone'
|
3432 |
models:
|
3433 |
+
- regex: '(?:CASPER[_ ])?VIA[_ ](G1_Plus|G1|E1|[AE]2|M[123]|V[35689]|V10|G3|V6X|A[34]|E3|F[123]|G4|M4|P2|S|V8C|A1_Plus|A1)(?:[);/ ]|$)'
|
3434 |
model: 'VIA $1'
|
3435 |
- regex: 'CASPER_VIA_E1c'
|
3436 |
model: 'VIA E1C'
|
3446 |
- regex: 'VIA[- _](T7D|S10|[LS]8|S7|T17_M|T1[07]|T7|T8B)(?:[);/ ]|$)'
|
3447 |
model: 'VIA $1'
|
3448 |
device: 'tablet'
|
|
|
|
|
3449 |
|
3450 |
# Cat (Caterpillar, Catphones)
|
3451 |
Cat:
|
3507 |
|
3508 |
# Cherry Mobile
|
3509 |
'Cherry Mobile':
|
3510 |
+
regex: 'Cherry|Flare([ _])?(2X|4|A[123]|J[123568]|P[13]|S[4-8]|X2|Y[367]|S Play|HD|LITE|XL|X_V2|Y3s|Tab)(?:[ _](?:Pro|Plus|Max|LTE))?|Fusion Bolt|OMEGA HD 4|Spin Max 2'
|
3511 |
device: 'smartphone'
|
3512 |
models:
|
3513 |
+
|
|
|
3514 |
- regex: '(Flare2X)'
|
3515 |
model: '$1'
|
3516 |
+
- regex: 'Flare_HD_([45])'
|
3517 |
+
model: 'Flare HD $1'
|
3518 |
- regex: 'Flare_HD_MAX'
|
3519 |
model: 'Flare HD Max'
|
3520 |
- regex: 'FLARE LITE'
|
3521 |
model: 'Flare Lite'
|
3522 |
- regex: 'Flare S Play'
|
3523 |
model: 'Flare S Play'
|
3524 |
+
- regex: 'Flare[_ ]J([26])S'
|
3525 |
+
model: 'Flare J$1s'
|
3526 |
+
- regex: 'Flare_(J2|S7)_Prime'
|
3527 |
+
model: 'Flare $1 Prime'
|
3528 |
+
- regex: 'Flare_S7_Deluxe'
|
3529 |
+
model: 'Flare S7 Deluxe'
|
3530 |
+
- regex: 'Flare_S7_Power'
|
3531 |
+
model: 'Flare S7 Power'
|
3532 |
+
- regex: 'Flare[_ ]Y([367])[_ ]Pro'
|
3533 |
+
model: 'Flare Y$1 Pro'
|
3534 |
- regex: 'Flare XL Plus'
|
3535 |
model: 'Flare XL Plus'
|
3536 |
- regex: 'Flare[ _]X[_ ]V2'
|
3537 |
model: 'Flare X V2'
|
3538 |
+
- regex: 'Flare[ _](A2|J3|P1|S[467])[ _]Lite'
|
3539 |
model: 'Flare $1 Lite'
|
3540 |
+
- regex: 'Flare[ _](J[12]|S[57]|Y3|J6)[ _]mini'
|
3541 |
model: 'Flare $1 Mini'
|
3542 |
+
- regex: 'Flare_J2_2018'
|
3543 |
+
model: 'Flare J2 (2018)'
|
3544 |
- regex: 'Flare S4 Max LTE'
|
3545 |
model: 'Flare S4 Max LTE'
|
3546 |
+
- regex: 'Flare[_ ](S[47]|J2)[_ ]Max'
|
3547 |
+
model: 'Flare $1 Max'
|
3548 |
- regex: 'FlareS5LiteDTV'
|
3549 |
model: 'Flare S5 Lite DTV'
|
3550 |
+
- regex: 'Flare[_ ](S[567]|J6)[_ ]Plus'
|
3551 |
+
model: 'Flare $1 Plus'
|
|
|
|
|
3552 |
- regex: 'FLARE S6 POWER'
|
3553 |
model: 'Flare S6 Power'
|
3554 |
+
- regex: 'Flare(?:[ _])?(4|A[123]|J8 LTE|J[13568]|P[13]|S[4-8]|X2|Y3s|Y7_LTE|Y[673])'
|
3555 |
model: 'Flare $1'
|
3556 |
- regex: 'OMEGA HD 4'
|
3557 |
model: 'Omega HD 4'
|
3558 |
+
- regex: 'Spin Max 2'
|
3559 |
+
model: 'Spin Max 2'
|
3560 |
+
- regex: '(Fusion Bolt|Flare Tab Pro|Flare Tab)'
|
3561 |
model: '$1'
|
3562 |
device: 'tablet'
|
3563 |
|
3564 |
+
- regex: 'Cherry(?:[ _]?Mobile)?[ _]?([^/;]+)(?: Build|[);])'
|
3565 |
+
model: '$1'
|
3566 |
+
|
3567 |
# China Mobile
|
3568 |
'China Mobile':
|
3569 |
regex: '(M812C|1501_M02|9930i|A1303|A309W|M651CY) Build'
|
3589 |
model: 'CT701G Plus'
|
3590 |
device: 'tablet'
|
3591 |
|
3592 |
+
- regex: 'Comio[ _-]?([^;/)]+)(?: Build|[);])'
|
|
|
|
|
3593 |
model: '$1'
|
3594 |
|
3595 |
# Compal
|
3600 |
|
3601 |
# Artel
|
3602 |
Artel:
|
3603 |
+
regex: 'Artel[_ ]|\w+_ARTEL_\w+|GAP YOQ(?:[);/ ]|$)'
|
3604 |
device: 'smartphone'
|
3605 |
models:
|
3606 |
+
- regex: 'GAP YOQ(?:[);/ ]|$)'
|
3607 |
+
model: 'Gap Yo Q'
|
3608 |
- regex: 'Artel[_ ](Quadro(?: Pro)?|Tesla|Air|Tomchi|Premium|U3_4G|Z5|Sentinel (?:X 8G|X D5|X))'
|
3609 |
model: '$1'
|
3610 |
- regex: 'Artel[_ ]Komi3'
|
3619 |
|
3620 |
# ComTrade Tesla
|
3621 |
ComTrade Tesla:
|
3622 |
+
regex: 'Tesla|Impulse 7.85 3G|Impulse 10.1 OCTA|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)'
|
3623 |
device: 'smartphone'
|
3624 |
models:
|
3625 |
- regex: 'TeslaEvo5.0'
|
3630 |
- regex: '(Impulse 7.85 3G)'
|
3631 |
model: '$1'
|
3632 |
device: 'tablet'
|
3633 |
+
- regex: 'Impulse 10.1 OCTA'
|
3634 |
+
model: 'Impulse 10.1" OCTA'
|
3635 |
+
device: 'tablet'
|
3636 |
- regex: 'Tesla_SP([^/;]+)L Build'
|
3637 |
model: 'Smartphone $1 Lite'
|
3638 |
- regex: 'Smartphone_6.1'
|
3770 |
model: 'Griffe T7'
|
3771 |
- regex: 'Griffe T8 Plus'
|
3772 |
model: 'Griffe T8 Plus'
|
3773 |
+
- regex: 'Griffe T8'
|
3774 |
+
model: 'Griffe T8'
|
3775 |
- regex: 'Griffe T9'
|
3776 |
model: 'Griffe T9'
|
3777 |
- regex: 'PGN\-?522'
|
3806 |
model: 'Plume L1'
|
3807 |
- regex: 'Plume L2 Pro'
|
3808 |
model: 'Plume L2 Pro'
|
3809 |
+
- regex: 'Plume L2'
|
3810 |
+
model: 'Plume L2'
|
3811 |
- regex: 'Plume L3 Plus'
|
3812 |
model: 'Plume L3 Plus'
|
3813 |
+
- regex: 'Plume L3 Smart'
|
3814 |
+
model: 'Plume L3 Smart'
|
3815 |
+
- regex: 'Plume L3'
|
3816 |
+
model: 'Plume L3'
|
3817 |
- regex: 'Plume P8 Pro'
|
3818 |
model: 'Plume P8 Pro'
|
3819 |
|
3822 |
|
3823 |
# Coolpad
|
3824 |
Coolpad:
|
3825 |
+
regex: '(?:YL-)?Coolpad|(?:Cool_9S|1824-S0|8190Q|1831-A0|8676-[AM]01|CP8298_I00|CP3648A|CP8676_I0[23]|REVVLPLUS C3701A|VCR-[AI]0|C105-E0|C106-[79]| C106|MTS-T0|cp3705A[S]?|ORL-C0|DLS-E0|8298-M02|5560S)(?:[);/ ]|$)|(8295|5860S) Build'
|
3826 |
device: 'smartphone'
|
3827 |
models:
|
3828 |
- regex: 'VCR-[AI]0'
|
3836 |
model: '8190Q'
|
3837 |
- regex: 'DLS-E0(?:[);/ ]|$)'
|
3838 |
model: 'N5'
|
3839 |
+
- regex: '1824-S0(?:[);/ ]|$)'
|
3840 |
+
model: 'N5C'
|
3841 |
- regex: 'CP3705A[S]?(?:[);/ ]|$)'
|
3842 |
model: 'Legacy'
|
3843 |
- regex: 'CP3648A(?:[);/ ]|$)'
|
3874 |
regex: 'Clarmin'
|
3875 |
device: 'smartphone'
|
3876 |
models:
|
3877 |
+
- regex: 'Clarmin[_ ](B6|C1)'
|
3878 |
+
model: '$1'
|
3879 |
|
3880 |
# Cricket
|
3881 |
Cricket:
|
3907 |
- regex: 'Trekker-([MSX][1234](?: Core)?)'
|
3908 |
model: 'Trekker-$1'
|
3909 |
|
3910 |
+
# AllDocube (alldocube.com)
|
3911 |
AllDocube:
|
3912 |
+
regex: '(?:T1001XS?|T1006S?|iPlay_20|U1006H?)(?:[);/ ]|$)'
|
3913 |
device: 'tablet'
|
3914 |
models:
|
3915 |
- regex: 'T1001XS(?:[);/ ]|$)'
|
3916 |
model: 'M5XS'
|
3917 |
+
- regex: 'T1006S(?:[);/ ]|$)'
|
3918 |
+
model: 'M5S'
|
3919 |
+
- regex: 'T1006(?:[);/ ]|$)'
|
3920 |
+
model: 'M5'
|
3921 |
- regex: 'T1001X(?:[);/ ]|$)'
|
3922 |
model: 'M5X'
|
3923 |
- regex: 'U1006H?(?:[);/ ]|$)'
|
4093 |
device: 'tablet'
|
4094 |
model: 'Geodroid A5'
|
4095 |
|
4096 |
+
# Denver Electronics (denver-electronics.com)
|
4097 |
Denver:
|
4098 |
regex: '(?:TA[CDQ]-[0-9]+)|P(?:.+)TAQ-(?:[0-9]+)'
|
4099 |
device: 'tablet'
|
4100 |
models:
|
4101 |
+
- regex: 'P(?:.+)TAQ-(10213GMK2|10172MK3|10242MK2|70242MK2|[0-9]+)(?:[);/ ]|$)'
|
4102 |
model: 'TAQ-$1'
|
4103 |
- regex: '(TA[CDQ]-[0-9]+)'
|
4104 |
model: '$1'
|
4140 |
|
4141 |
# DEXP
|
4142 |
DEXP:
|
4143 |
+
regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|IxionML4.7|M150Storm|(?:SENIOR|F4[38]D8000K|VA[12]10|VA170|ML450|MS[56]50|BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|AL[23]50|AS155|AS260|GS15[035]| (?:N280i|P380i|R110|B450|B340|A1[45]0|AS160|GL355))(?:[);/ ]|$)'
|
4144 |
device: 'smartphone'
|
4145 |
models:
|
4146 |
- regex: 'Ixion[_ ]([^;/]+)(?: Build|\))'
|
4180 |
- regex: 'H135[ _]Build'
|
4181 |
model: 'Atlas'
|
4182 |
device: 'desktop'
|
4183 |
+
- regex: '(BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|A1[45]0|GS15[035]|AS160|GL355)(?:[);/ ]|$)'
|
4184 |
model: '$1'
|
4185 |
- regex: 'DEXP[ _]([^;/]+) Build'
|
4186 |
model: '$1'
|
4227 |
|
4228 |
# Digiland
|
4229 |
Digiland:
|
4230 |
+
regex: '(?:DL1008M|DL1023)(?:[);/ ]|$)'
|
4231 |
+
device: 'tablet'
|
4232 |
models:
|
4233 |
- regex: 'DL1008M'
|
|
|
4234 |
model: 'DL1008M'
|
4235 |
+
- regex: 'DL1023'
|
4236 |
+
model: 'DL1023'
|
4237 |
|
4238 |
# Digma
|
4239 |
Digma:
|
4445 |
|
4446 |
# DNS
|
4447 |
DNS:
|
4448 |
+
regex: '(?:DNS|AirTab)[ _\-]([^;/)]+)|(?:S4505M|S4004M|SD01M)(?:[);/ ]|$)'
|
4449 |
device: 'smartphone'
|
4450 |
models:
|
4451 |
- regex: '(?:DNS[_ ])?(S4505M|S4004M|SD01M|S4502|S4003|S4003)(?:[);/ ]|$)'
|
4452 |
model: '$1'
|
4453 |
+
- regex: 'AirTab[ _\-]([^;/]+)(?: Build|[);])'
|
4454 |
model: 'AirTab $1'
|
4455 |
device: 'tablet'
|
4456 |
+
- regex: 'DNS[ _\-]([^;/]+)(?: Build|[);])'
|
4457 |
model: '$1'
|
4458 |
|
4459 |
# E-Boda
|
4492 |
|
4493 |
# Echo Mobiles
|
4494 |
Echo Mobiles:
|
4495 |
+
regex: 'ECHO[ _](HOLI|HORIZON|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)|HORIZON_M|Stellar 3G|FEELING'
|
4496 |
device: 'smartphone'
|
4497 |
models:
|
4498 |
- regex: 'ECHO_HORIZON_LITE'
|
4499 |
model: 'HORIZON Lite'
|
4500 |
+
- regex: '(HORIZON_M|FEELING)(?:[);/ ]|$)'
|
4501 |
model: '$1'
|
4502 |
+
- regex: 'STELLAR 3G'
|
4503 |
+
model: 'STELLAR 3G'
|
4504 |
- regex: 'ECHO_SMART_4G'
|
4505 |
model: 'SMART 4G'
|
4506 |
+
- regex: 'ECHO[ _](HOLI|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)'
|
4507 |
model: '$1'
|
4508 |
|
4509 |
# ECS
|
4553 |
model: 'P6000 01'
|
4554 |
- regex: 'P6000 ?Pro(?:[);/ ]|$)'
|
4555 |
model: 'P6000 Pro'
|
4556 |
+
- regex: '(?:Elephone[ _])?(P[768]000|S2)(?:[);/ ]|$)'
|
4557 |
model: '$1'
|
4558 |
+
- regex: 'Elephone[ _\-]([^/;]+)(?: Build|[;)])'
|
4559 |
model: '$1'
|
4560 |
+
|
4561 |
# Element
|
4562 |
Element:
|
4563 |
regex: 'AFTRS'
|
4671 |
|
4672 |
# Sony & Sony Ericsson (combined as they are mixed up)
|
4673 |
Sony:
|
4674 |
+
regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOG01|SOL2[246]|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|J3173|J82[17]0|J9110|J92[16]0|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A001SO|I4193|E6508|SOT31|SO-[45]1A|SO-52A|XQ-A[DT]51|XQ-AT42|XQ-AU42|XQ-AS72|XQ-A[TSU]52|SOL25|SOG02|A002SO|NW-A100Series'
|
4675 |
device: 'smartphone'
|
4676 |
models:
|
4677 |
# SONY ERICSSON: explicit smartphone models
|
4809 |
model: 'Xperia 10'
|
4810 |
- regex: '(?:Sony(?:Ericsson)?)?J3173(?:[);/ ]|$)'
|
4811 |
model: 'Xperia Ace'
|
4812 |
+
- regex: '(?:A001SO|XQ-A[TU]52|XQ-AU42|SO-41A|SOV43)(?:[);/ ]|$)'
|
4813 |
model: 'Xperia 10 II'
|
4814 |
- regex: '(?:Sony(?:Ericsson)?)?I(?:42[19]3|3223)'
|
4815 |
model: 'Xperia 10 Plus'
|
4827 |
model: 'Xperia 5 Dual'
|
4828 |
- regex: '(?:Sony(?:Ericsson)?)?(?:J82[17]0|SO-01M|SOV41|901SO)'
|
4829 |
model: 'Xperia 5'
|
4830 |
+
- regex: '(?:Sony(?:Ericsson)?)?(?:SOG02|A002SO|XQ-AS[75]2|SO-52A)'
|
4831 |
model: 'Xperia 5 II'
|
4832 |
- regex: '(?:Sony(?:Ericsson)?)?(?:SOV42|902SO)'
|
4833 |
model: 'Xperia 8'
|
4957 |
- regex: 'Xperia Z2 Tablet Wifi'
|
4958 |
model: 'Xperia Z2 Tablet WiFi'
|
4959 |
device: 'tablet'
|
4960 |
+
- regex: 'SGP561'
|
4961 |
+
model: 'Xperia Z2 Tablet'
|
4962 |
+
device: 'tablet'
|
4963 |
- regex: '(?:Sony(?:Ericsson)?)?(?:D65(?:0[23]|43)|SO-03F)|Xperia Z2(?:[);/ ]|$)'
|
4964 |
model: 'Xperia Z2'
|
4965 |
- regex: 'D6563'
|
5300 |
|
5301 |
# Explay
|
5302 |
Explay:
|
5303 |
+
regex: 'Explay|[\w]+-EXPLAY-FIN|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay|Leader|Infinityll|Imperium[78]|Indigo'
|
5304 |
device: 'tablet'
|
5305 |
models:
|
5306 |
- regex: 'ActiveD[ _]7.4[ _]3G'
|
5324 |
- regex: 'Atlant(?:[);/ ]|$)'
|
5325 |
device: 'smartphone'
|
5326 |
model: 'Atlant'
|
5327 |
+
- regex: 'Indigo(?:[);/ ]|$)'
|
5328 |
+
device: 'smartphone'
|
5329 |
+
model: 'Indigo'
|
5330 |
|
5331 |
- regex: '[\w]+-EXPLAY-FIN'
|
5332 |
device: 'feature phone'
|
5350 |
models:
|
5351 |
- regex: 'Playpad 3G GOO'
|
5352 |
model: 'Play Pad 3G Goo'
|
5353 |
+
- regex: 'Play Pad 3G 2Goo'
|
5354 |
+
model: 'Play Pad 3G 2Goo'
|
5355 |
- regex: 'Play Pad PRO'
|
5356 |
model: 'Play Pad Pro'
|
5357 |
- regex: 'PLAY_PAD_PRO_XL'
|
5475 |
|
5476 |
# Fujitsu
|
5477 |
Fujitsu:
|
5478 |
+
regex: '(?:F-01[FHJKL]|F-02[EFGHLK]|F-03[DEFGKHL]|F-04[EGHKJ]|F-05[DEFJ]|F-06[EF]|F-07[DE]|F-08D|F-09[DE]|F-10D|F-[45]1A|F-42A|F-11D|F-12C|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL21)(?:[);/ ]|$)'
|
5479 |
device: 'smartphone'
|
5480 |
models:
|
5481 |
- regex: 'F-51A(?:[);/ ]|$)'
|
5484 |
model: 'Arrows NX F-01F'
|
5485 |
- regex: 'F-01L(?:[);/ ]|$)'
|
5486 |
model: 'Easy Phone F-01L'
|
5487 |
+
- regex: 'F-06F(?:[);/ ]|$)'
|
5488 |
+
model: 'Easy Phone F-06F'
|
5489 |
- regex: 'F-03K(?:[);/ ]|$)'
|
5490 |
model: 'Easy Phone F-03K'
|
5491 |
+
- regex: 'F-42A(?:[);/ ]|$)'
|
5492 |
+
model: 'Easy Phone F-42A'
|
5493 |
+
- regex: 'F-03L(?:[);/ ]|$)'
|
5494 |
+
model: 'Arrows Phone F-03L'
|
5495 |
- regex: 'F-01J(?:[);/ ]|$)'
|
5496 |
model: 'Arrows NX F-01J'
|
5497 |
- regex: 'F-01K(?:[);/ ]|$)'
|
5502 |
model: 'Arrows X F-02E'
|
5503 |
- regex: 'F-02G(?:[);/ ]|$)'
|
5504 |
model: 'Arrows NX F-02G'
|
5505 |
+
- regex: 'FJL21(?:[);/ ]|$)'
|
5506 |
+
model: 'Arrows EF FJL21'
|
5507 |
- regex: 'F-02H(?:[);/ ]|$)'
|
5508 |
model: 'Arrows NX F-02H'
|
5509 |
- regex: 'F-03D(?:[);/ ]|$)'
|
5563 |
- regex: 'arrowsM(0[45])(?:[);/ ]|$)'
|
5564 |
model: 'Arrows M$1'
|
5565 |
|
5566 |
+
- regex: '(F-0[32]F|F-03G|F-04H|F-05E|F-02K)(?:[);/ ]|$)'
|
5567 |
+
model: 'Arrows Tab $1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5568 |
device: 'tablet'
|
5569 |
- regex: 'FARTM933KZ'
|
5570 |
model: 'Arrows Tab M504/HA4'
|
5595 |
|
5596 |
# General Mobile
|
5597 |
General Mobile:
|
5598 |
+
regex: 'GM 5 Plus|GM8 go|GM [68] d|GM 8|General Mobile 4G|GM 9 (?:Pro|Plus)'
|
5599 |
device: 'smartphone'
|
5600 |
models:
|
5601 |
- regex: 'GM 5 Plus'
|
5606 |
model: 'GM 8'
|
5607 |
- regex: 'GM8 go'
|
5608 |
model: 'GM 8 Go'
|
5609 |
+
- regex: 'GM 9 Pro'
|
5610 |
+
model: 'GM 9 Pro'
|
5611 |
+
- regex: 'GM 9 Plus'
|
5612 |
+
model: 'GM 9 Plus'
|
5613 |
- regex: 'General Mobile 4G Dual'
|
5614 |
model: '4G Dual'
|
5615 |
- regex: 'General Mobile 4G'
|
5640 |
|
5641 |
# Gigabyte
|
5642 |
Gigabyte:
|
5643 |
+
regex: 'GSmart[ _][a-z0-9 ]+(?: Build|\))|Gigabyte-[a-z0-9]+|Simba SX1|GSmart_Classic_Lite|Classic[_ ](?:Joy|Pro)'
|
5644 |
device: 'smartphone'
|
5645 |
models:
|
5646 |
+
- regex: '(GSmart[ _][a-z0-9 ]+)(?: Build|[);])'
|
5647 |
model: '$1'
|
5648 |
- regex: 'Gigabyte-([a-z0-9]+)'
|
5649 |
model: '$1'
|
5650 |
+
- regex: '(Classic[ _](?:Joy|Pro)|GSmart_Classic_Lite)'
|
5651 |
model: '$1'
|
5652 |
- regex: 'Simba SX1'
|
5653 |
model: 'GSmart Simba SX1'
|
5654 |
|
5655 |
# Gigaset
|
5656 |
Gigaset:
|
5657 |
+
regex: 'Gigaset|(?: GS80|GS1[0189]0|GS1[89]5|GS2[89]0|GS5[357]-6|GS[23]70(?:_Plus)?)(?:[);/ ]|$)'
|
5658 |
device: 'smartphone'
|
5659 |
models:
|
5660 |
- regex: 'Gigaset QV(1030|830)'
|
5663 |
|
5664 |
- regex: 'G(S[23]70)[_ ]Plus(?:[);/ ]|$)'
|
5665 |
model: 'G$1 Plus'
|
5666 |
+
- regex: 'GS([23]70|1[0189]0|1[89]5|2[89]0|80)(?:[);/ ]|$)'
|
5667 |
model: 'GS$1'
|
5668 |
- regex: 'GS57-6'
|
5669 |
model: 'ME Pro'
|
5834 |
model: 'Pixel 3a'
|
5835 |
- regex: 'Pixel 4 XL'
|
5836 |
model: 'Pixel 4 XL'
|
5837 |
+
- regex: 'Pixel 4a \(5G\)'
|
5838 |
+
model: 'Pixel 4a (5G)'
|
5839 |
- regex: 'pixel 4a'
|
5840 |
model: 'Pixel 4a'
|
5841 |
- regex: 'G011A'
|
6049 |
regex: 'Homtom|(?:HT[0-9]{1,2})(?: ?Pro)?(?:[);/ ]|$)'
|
6050 |
device: 'smartphone'
|
6051 |
models:
|
6052 |
+
- regex: '(?:Homtom[_ ])?HT ?([0-9]{1,2}(?: ?Pro)?)(?:[);/ ]|$)'
|
6053 |
model: 'HT$1'
|
6054 |
- regex: 'Homtom ([^;/]+) Build'
|
6055 |
model: '$1'
|
6065 |
|
6066 |
# Hoozo
|
6067 |
Hoozo:
|
6068 |
+
regex: '(?:HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)|HZ0010)(?:[);/ ]|$)'
|
6069 |
device: 'tablet'
|
6070 |
+
models:
|
6071 |
+
- regex: 'HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)(?:[);/ ]|$)'
|
6072 |
+
model: '$1'
|
6073 |
+
- regex: '(HZ0010)(?:[);/ ]|$)'
|
6074 |
+
model: '$1'
|
6075 |
|
6076 |
# Minix (minix.us)
|
6077 |
Minix:
|
6101 |
|
6102 |
# Huawei
|
6103 |
Huawei:
|
6104 |
+
regex: '(HW-)?(?:Huawei|MediaPad T1|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[23]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21[Lw]|A23L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|NIC-LX1A|MRX-(AL09|W09)|CDY-(?:[AT]N00|AN90|NX9A)|GLK-(?:[AT]L00|LX1U)|JER-[AT]N10|ELS-(?:[AT]N[10]0|NX9|N39|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-AN[12]0|AQM-([AT]L[01]0|LX1)|MOA-(AL[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|JEF-(?:[AT]N00|AN20)|MED-(?:[AT]L00|LX9N?)|EBG-AN[01]0|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN00|MXW-AN00|JKM-AL00[ab]|TAH-(?:N29|AN00)m|C8817D|T1-821W|d-01[JK]|d-02[HK]|KRJ-W09|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN00)|TNNH-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2-[LW]09|PPA-LX2|AGS3-L09|DNN-LX9|NEY-NX9|LON-AL00|HLK-L41|503HW'
|
6105 |
device: 'smartphone'
|
6106 |
models:
|
6107 |
- regex: 'POT-[TA]L00a(?:[);/ ]|$)'
|
6166 |
model: 'Enjoy 8e'
|
6167 |
- regex: 'MRD-[TA]L00(?:[);/ ]|$)'
|
6168 |
model: 'Enjoy 9e'
|
6169 |
+
- regex: 'DVC-TN20(?:[);/ ]|$)'
|
6170 |
+
model: 'Enjoy 20 Pro'
|
6171 |
- regex: 'U8665(?:[);/ ]|$)'
|
6172 |
model: 'Fusion 2'
|
6173 |
- regex: 'MED-LX9N?(?:[);/ ]|$)'
|
6226 |
model: 'Honor 4A'
|
6227 |
- regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?(?:[);/ ]|$)'
|
6228 |
model: 'Honor 4C'
|
6229 |
+
- regex: 'Honor 4c Pro(?:[);/ ]|$)'
|
6230 |
+
model: 'Honor 4C Pro'
|
6231 |
- regex: 'AQM-AL10(?:[);/ ]|$)'
|
6232 |
model: 'Honor 4T Pro'
|
6233 |
- regex: '(CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:1[12]|23)|Che1-L04|CHE-TL00)(?:[);/ ]|$)'
|
6286 |
model: 'Honor 8A Pro'
|
6287 |
- regex: 'BKK-(?:AL[10]0|L21|L22|LX2|TL00)(?:[);/ ]|$)'
|
6288 |
model: 'Honor 8C'
|
6289 |
+
- regex: 'KSA-(LX[239]|AL00)(?:[);/ ]|$)'
|
6290 |
model: 'Honor 8S'
|
6291 |
- regex: 'JSN-L(?:2[123]|42)|JSN-[TA]L00[a]?(?:[);/ ]|$)'
|
6292 |
model: 'Honor 8X'
|
6293 |
+
- regex: 'ARE-(?:AL[10]0|L22(?:HN)?|TL00)(?:[);/ ]|$)'
|
6294 |
model: 'Honor 8X Max'
|
6295 |
+
- regex: 'STF-(?:AL[10]0|L09S?|TL10)(?:[);/ ]|$)'
|
6296 |
model: 'Honor 9'
|
6297 |
- regex: 'MOA-LX9N(?:[);/ ]|$)'
|
6298 |
model: 'Honor 9A'
|
6306 |
model: 'Honor 9S'
|
6307 |
- regex: 'HLK-AL00a?(?:[);/ ]|$)'
|
6308 |
model: 'Honor 9X'
|
6309 |
+
- regex: 'HLK-(?:AL10|L41)(?:[);/ ]|$)'
|
6310 |
model: 'Honor 9X Pro'
|
6311 |
- regex: 'CAM-UL00(?:[);/ ]|$)'
|
6312 |
model: 'Honor Holly 3'
|
6340 |
model: 'Honor Play 7'
|
6341 |
- regex: 'JAT-[AT]L00(?:[);/ ]|$)'
|
6342 |
model: 'Honor Play 8A'
|
6343 |
+
- regex: 'MOA-AL[02]0(?:[);/ ]|$)'
|
6344 |
model: 'Honor Play 9A'
|
6345 |
- regex: 'BKL-(?:AL00|AL20|AL30|L09|TL10)(?:[);/ ]|$)'
|
6346 |
model: 'Honor V10'
|
6408 |
model: 'Mate 30 Pro'
|
6409 |
- regex: 'LIO-N29(?:[);/ ]|$)'
|
6410 |
model: 'Mate 30 Pro 5G'
|
6411 |
+
- regex: 'NOH-(?:NX9|AN00)(?:[);/ ]|$)'
|
6412 |
+
model: 'Mate 40 Pro'
|
6413 |
- regex: 'NXT-(?:AL10|L29)(?:[);/ ]|$)'
|
6414 |
model: 'Mate 8'
|
6415 |
- regex: 'MHA-(?:L[02]9|[AT]L00)(?:[);/ ]|$)'
|
6416 |
model: 'Mate 9'
|
6417 |
- regex: 'BLL-L23(?:[);/ ]|$)'
|
6418 |
model: 'Mate 9 Lite'
|
6419 |
+
- regex: 'LON-(?:AL00(?:-PD)?|L29)(?:[);/ ]|$)'
|
6420 |
model: 'Mate 9 Pro'
|
6421 |
- regex: 'NEO-AL00(?:[);/ ]|$)'
|
6422 |
model: 'Mate RS'
|
6456 |
model: 'Nova 5'
|
6457 |
- regex: 'SEA-AL10(?:[);/ ]|$)'
|
6458 |
model: 'Nova 5 Pro'
|
6459 |
+
- regex: 'GLK-(?:[AT]L00|LX1U)(?:[);/ ]|$)'
|
6460 |
model: 'Nova 5i'
|
6461 |
- regex: 'SPN-TL00(?:[);/ ]|$)'
|
6462 |
model: 'Nova 5i Pro'
|
6522 |
model: 'P40 Pro Plus'
|
6523 |
- regex: 'GRA-(?:L09|UL00)(?:[);/ ]|$)'
|
6524 |
model: 'P8'
|
6525 |
+
- regex: '(?:ALE-L(?:02|21|23)|ALE-UL00|ALE-TL00|503HW)(?:[);/ ]|$)'
|
6526 |
model: 'P8 Lite (2015)'
|
6527 |
- regex: '(?:PRA-L(?:A1|X2|X1|X3)|hi6210sft)(?:[);/ ]|$)'
|
6528 |
model: 'P8 Lite (2017)'
|
6568 |
model: 'Y5 Pro (2017)'
|
6569 |
- regex: 'CUN-(?:L(?:0[123]|2[123]|33)|U29)(?:[);/ ]|$)'
|
6570 |
model: 'Y5II'
|
6571 |
+
- regex: '(?:SCC-U21|SCL-U31)(?:[);/ ]|$)'
|
6572 |
model: 'Y6'
|
6573 |
- regex: 'MYA-L11(?:[);/ ]|$)'
|
6574 |
model: 'Y6 (2016)'
|
6596 |
model: 'Y7 (2017)'
|
6597 |
- regex: 'LDN-L(?:01|X3)(?:[);/ ]|$)'
|
6598 |
model: 'Y7 (2018)'
|
6599 |
+
- regex: '(?:HUAWEI[ _]?)?DUB-(?:LX[13]|TL00)(?:[);/ ]|$)'
|
6600 |
model: 'Y7 (2019)'
|
6601 |
- regex: '(LDN-(?:AL00|L21)|TRT-TL10)(?:[);/ ]|$)'
|
6602 |
model: 'Y7 Prime'
|
6606 |
model: 'Y7 Pro (2019)'
|
6607 |
- regex: 'DUB-AL20(?:[);/ ]|$)'
|
6608 |
model: 'Y7 Pro (2019)'
|
6609 |
+
- regex: 'ART-L28(?:[);/ ]|$)'
|
6610 |
+
model: 'Y7p'
|
6611 |
- regex: 'AQM-LX1(?:[);/ ]|$)'
|
6612 |
model: 'Y8p'
|
6613 |
- regex: 'FLA-(LX[123]|AL20|TL10)(?:[);/ ]|$)'
|
6635 |
- regex: 'JDN-(?:AL00|W09)(?:[);/ ]|$)'
|
6636 |
model: 'Honor Pad 2'
|
6637 |
device: 'tablet'
|
6638 |
+
- regex: 'KRJ-W09(?:[);/ ]|$)'
|
6639 |
+
model: 'Honor Pad V6'
|
6640 |
+
device: 'tablet'
|
6641 |
- regex: 'MON-(W|AL)19(?:[);/ ]|$)'
|
6642 |
device: 'tablet'
|
6643 |
model: 'MatePad C5 8'
|
6689 |
- regex: '(AGS2-AL00|JDN2-W09)HN(?:[);/ ]|$)'
|
6690 |
device: 'tablet'
|
6691 |
model: 'Honor Tab 5'
|
6692 |
+
- regex: 'AGS2-(?:[LW]09|W19|L03)(?:[);/ ]|$)'
|
6693 |
device: 'tablet'
|
6694 |
model: 'MediaPad T5 10'
|
6695 |
- regex: 'KOB2-[LW]09(?:[);/ ]|$)'
|
6696 |
device: 'tablet'
|
6697 |
model: 'MediaPad T 8.0"'
|
6698 |
+
- regex: 'AGR-L09(?:[);/ ]|$)'
|
6699 |
+
device: 'tablet'
|
6700 |
+
model: 'MediaPad T 10'
|
6701 |
- regex: 'AGS-(?:L0[39]|W09)(?:[);/ ]|$)'
|
6702 |
device: 'tablet'
|
6703 |
model: 'MediaPad T3 10'
|
6737 |
- regex: '(?:d-01J|d-02[HK])(?:[);/ ]|$)'
|
6738 |
device: 'tablet'
|
6739 |
model: 'D Tab Compact'
|
6740 |
+
- regex: '(d-01K)(?:[);/ ]|$)'
|
6741 |
+
device: 'tablet'
|
6742 |
+
model: 'dtab d-01K'
|
6743 |
|
6744 |
|
6745 |
# smart watch regex
|
6758 |
model: 'Ascend Mate $1'
|
6759 |
- regex: 'Huawei[ _\-]?([^/;]*) Build'
|
6760 |
model: '$1'
|
6761 |
+
- regex: '(?:HW-)?Huawei(?!Browser)(?:/1\.0/0?(?:Huawei))?[_\- /]?([a-z0-9\-_]+)'
|
6762 |
model: '$1'
|
6763 |
- regex: 'Huawei; ([a-z0-9 \-]+)'
|
6764 |
model: '$1'
|
6765 |
|
6766 |
# Hyundai
|
6767 |
Hyundai:
|
6768 |
+
regex: 'Hyundai|Ultra (?:Active|Air|Charm|Dream|Energy|Latitude|Link|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)|G(24027|2552[34])K|W25042L|HP554O|Seoul S8|L503F Plus|HT0701L16|HT0704K08|HT1004L16|Koral_8W2'
|
6769 |
device: 'smartphone'
|
6770 |
models:
|
6771 |
- regex: 'Ultra (Active|Air|Charm|Dream|Energy Lite|Energy Plus|Energy|Latitude|Link|Live II|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)'
|
6772 |
model: 'Ultra $1'
|
6773 |
+
- regex: 'Seoul S8'
|
6774 |
+
model: 'Seoul S8'
|
6775 |
- regex: 'G25523K'
|
6776 |
model: 'Eternity G23'
|
6777 |
- regex: 'G25524K'
|
6782 |
model: 'Eternity W42'
|
6783 |
- regex: 'HP554O'
|
6784 |
model: 'HP554O'
|
6785 |
+
- regex: 'L503F Plus'
|
6786 |
+
model: 'L503F Plus'
|
6787 |
+
|
6788 |
+
# explicit tables models
|
6789 |
+
- regex: 'HT0701L16'
|
6790 |
+
model: 'Koral 7XL'
|
6791 |
+
device: 'tablet'
|
6792 |
+
- regex: 'Koral_8W2'
|
6793 |
+
model: 'Koral 8W2'
|
6794 |
+
device: 'tablet'
|
6795 |
+
- regex: 'HT1004L16'
|
6796 |
+
model: 'Koral 10XL'
|
6797 |
+
device: 'tablet'
|
6798 |
+
- regex: 'HT0704K08'
|
6799 |
+
model: 'Koral 7M4'
|
6800 |
+
device: 'tablet'
|
6801 |
- regex: 'Hyundai ([^;/]+) Build'
|
6802 |
model: '$1'
|
6803 |
device: 'tablet'
|
6839 |
|
6840 |
# iBall
|
6841 |
iBall:
|
6842 |
+
regex: 'iBall[ _]([^;/)]+)[ _]Build|(?:Snap_4G2|6351-Q400i|iT-KSA0003|iT-KSA0012|iT-KSA0066|Avid|Twinkle_i5)(?:[);/ ]|$)'
|
6843 |
device: 'tablet'
|
6844 |
models:
|
6845 |
+
- regex: '(Snap_4G2|Avid|Twinkle_i5)(?:[);/ ]|$)'
|
6846 |
model: '$1'
|
6847 |
- regex: '6351-Q400i(?:[);/ ]|$)'
|
6848 |
model: 'Slide'
|
6849 |
+
- regex: 'iT-KSA0003(?:[);/ ]|$)'
|
6850 |
+
model: 'iTAB BizniZ'
|
6851 |
+
- regex: 'iT-KSA0066(?:[);/ ]|$)'
|
6852 |
+
model: 'iTAB BizniZ Mini'
|
6853 |
+
- regex: 'iT-KSA0012(?:[);/ ]|$)'
|
6854 |
+
model: 'iTAB Moviez Pro'
|
6855 |
- regex: 'iBall[ _]([^;/)]+)[ _]Build'
|
6856 |
model: '$1'
|
6857 |
|
6880 |
|
6881 |
# Irbis
|
6882 |
Irbis:
|
6883 |
+
regex: 'IRBIS|TZ(1(?:0[04]|42|5[01]|84|65|7[01345-89]|8[356]|9[12578])|49|7(?:1[12467]|2[01567]|37|4[257]|5[23457]|6[12]|72|7[17]|8[1]|9[147])|8(?:[34]1|5[3-8]|6[45]|7[2478]|8[1-5]|9[0127])|96[0-9])|TZ85|TZ13|TZ(?:one|art|HIT|81L)|(SP(?:0[56]|2[01]|4[1-36]|40[12]|45[345]|49[34]|50|51[0147]|531|54[12]|55[0124]|571))(?:[);/ ]|$)'
|
6884 |
device: 'tablet'
|
6885 |
models:
|
6886 |
- regex: '(TZ(?:[0-9]+)|TZ(?:one|art|HIT|81L))(?:[);/ ]|$)'
|
6901 |
|
6902 |
# iHunt
|
6903 |
iHunt:
|
6904 |
+
regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019|S60_Discovery_2019|AlienXLite2020|Alien X Lite|Alien_X'
|
6905 |
device: 'smartphone'
|
6906 |
models:
|
6907 |
- regex: 'iHunt_Like'
|
6924 |
model: 'S60 Discovery (2019)'
|
6925 |
- regex: 'AlienXLite2020'
|
6926 |
model: 'Alien X Lite (2020)'
|
6927 |
+
- regex: 'Alien X Lite PRO'
|
6928 |
+
model: 'Alien X Lite Pro'
|
6929 |
+
- regex: 'Alien X Lite'
|
6930 |
+
model: 'Alien X Lite'
|
6931 |
+
- regex: 'Alien_X_ApeX'
|
6932 |
+
model: 'Alien X ApeX'
|
6933 |
+
- regex: 'Alien_X'
|
6934 |
+
model: 'Alien X'
|
6935 |
|
6936 |
# IconBIT
|
6937 |
IconBIT:
|
7111 |
- regex: 'M4_B([23])'
|
7112 |
model: 'B$1'
|
7113 |
|
7114 |
+
# IMO Mobile or In My Opinion Mobile
|
7115 |
IMO Mobile:
|
7116 |
regex: '(?:IMO)(?:[);/ ]|$)'
|
7117 |
device: 'smartphone'
|
7118 |
models:
|
7119 |
+
- regex: 'IMO[ _]Q([23]) Plus(?:[);/ ]|$)'
|
7120 |
+
model: 'Q$1 Plus'
|
7121 |
- regex: 'IMO[ _]Q2(?:[);/ ]|$)'
|
7122 |
model: 'Q2'
|
7123 |
+
- regex: 'IMO[ _]S2(?:[);/ ]|$)'
|
7124 |
+
model: 'S2'
|
7125 |
- regex: 'IMO[ _]FEEL A2(?:[);/ ]|$)'
|
7126 |
model: 'Feel A2'
|
7127 |
- regex: 'IMO[ _]S50(?:[);/ ]|$)'
|
7176 |
|
7177 |
# iPro
|
7178 |
iPro:
|
7179 |
+
regex: '(?:Kylin[ _]5.[05]S?|Jade7s|Amber[67]S?|Amber5S_Pro|Phonenix50S)(?:[);/ ]|$)'
|
7180 |
device: 'smartphone'
|
7181 |
models:
|
7182 |
- regex: 'Kylin_5.0S'
|
7185 |
model: 'Kylin $1'
|
7186 |
- regex: 'Jade7s'
|
7187 |
model: 'Jade 7s'
|
7188 |
+
- regex: 'Amber7S'
|
7189 |
+
model: 'Amber 7S'
|
7190 |
+
- regex: 'Amber5S_Pro'
|
7191 |
+
model: 'Amber 5S Pro'
|
7192 |
+
- regex: 'Amber6'
|
7193 |
+
model: 'Amber 6'
|
7194 |
+
- regex: 'Phonenix50S'
|
7195 |
+
model: 'Phonenix 50S'
|
7196 |
|
7197 |
# Infinix
|
7198 |
Infinix:
|
7497 |
- regex: 'iOCEAN[ _\-]?([^);/ ]+)'
|
7498 |
model: '$1'
|
7499 |
|
7500 |
+
# iView (iviewus.com)
|
7501 |
iView:
|
7502 |
+
regex: '(733TPC|730TPC|769TPCII|930TPC)(?:[);/ ]|$)'
|
7503 |
+
device: 'tablet'
|
7504 |
+
model: '$1'
|
|
|
|
|
|
|
7505 |
|
7506 |
# Impression
|
7507 |
Impression:
|
7604 |
- regex: 'BLASTER'
|
7605 |
model: 'Blaster'
|
7606 |
|
7607 |
+
# Kalley (www.kalley.com.co)
|
7608 |
Kalley:
|
7609 |
+
regex: 'KALLEY|(?:ELEMENT Q|ELEMENT_PRO_2|K-BOOK(?:8MG|73G))(?:[);/ ]|$)'
|
7610 |
device: 'smartphone'
|
7611 |
models:
|
7612 |
- regex: 'ELEMENT Q'
|
7613 |
model: 'Element Q'
|
7614 |
+
- regex: 'ELEMENT_PRO_2'
|
7615 |
+
model: 'Element Pro 2'
|
7616 |
+
- regex: 'K-BOOK(8MG|73G)'
|
7617 |
+
device: 'tablet'
|
7618 |
+
model: 'K-BOOK$1'
|
7619 |
+
- regex: 'KALLEY,(55D1240)'
|
7620 |
+
device: 'tv'
|
7621 |
+
model: '$1'
|
7622 |
|
7623 |
# Kaan
|
7624 |
Kaan:
|
7851 |
- regex: 'K-?Touch[ _]([a-z0-9]+)'
|
7852 |
model: '$1'
|
7853 |
|
7854 |
+
# Diva
|
7855 |
+
Diva:
|
7856 |
+
regex: '(QC-(?:703GN|704GA|803GN|1013G|7BHD))(?:[);/ ]|$)'
|
7857 |
+
device: 'tablet'
|
7858 |
+
model: '$1'
|
7859 |
+
|
7860 |
# kyocera (kyocera.co.jp, kyocera.com)
|
7861 |
Kyocera:
|
7862 |
+
regex: 'Kyocera|KWC-|QC-[0-9]{4}|(?:QC6035|NP501KC|302KC|503KC|602KC|705KC|901KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[13-9]|KYT3[123]|KYF3[123579]|KYX31|KYY2[1-4]|S2151|KC-S701|S4-KC|KYV40U?|KYV4[1-8]|KYV4[47]|KC-S301AE|X3-KC|S6-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|[47]04KC|A001KC)(?:[-_]u2?)?(?:[);/ ]|$)'
|
7863 |
device: 'smartphone'
|
7864 |
models:
|
7865 |
# explicit smartphone models
|
7875 |
model: 'Digno G'
|
7876 |
- regex: '503KC(?:[);/ ]|$)'
|
7877 |
model: 'Digno E'
|
7878 |
+
- regex: '404KC(?:[);/ ]|$)'
|
7879 |
+
model: 'Digno C'
|
7880 |
- regex: '704KC(?:[);/ ]|$)'
|
7881 |
model: 'Digno J'
|
7882 |
- regex: '302KC(?:[);/ ]|$)'
|
7885 |
model: 'Digno'
|
7886 |
- regex: 'KYV36(?:[);/ ]|$)'
|
7887 |
model: 'Digno Rafre'
|
7888 |
+
- regex: '901KC(?:[);/ ]|$)'
|
7889 |
+
model: 'Digno BX'
|
7890 |
- regex: 'KYV39(?:[);/ ]|$)'
|
7891 |
model: 'Miraie F'
|
7892 |
+
- regex: 'KYX31(?:[);/ ]|$)'
|
7893 |
+
model: 'Infobar XV'
|
7894 |
- regex: 'C5170(?:[);/ ]|$)'
|
7895 |
model: 'Hydro'
|
7896 |
- regex: 'C5215(?:[);/ ]|$)'
|
7947 |
model: 'Qua Phone'
|
7948 |
- regex: 'KYV42(?:[);/ ]|$)'
|
7949 |
model: 'Qua Phone QX'
|
7950 |
+
- regex: 'KYV44(?:_u2?)?(?:[);/ ]|$)'
|
7951 |
model: 'Qua Phone QZ'
|
7952 |
- regex: 'KYT33(?:[);/ ]|$)'
|
7953 |
model: 'Qua Tab QZ10'
|
7996 |
model: 'KZ $1'
|
7997 |
- regex: 'Kyocera(?:[\-/])?([a-z0-9]+)'
|
7998 |
model: '$1'
|
7999 |
+
- regex: '(KWC|QC)-?([a-z0-9]+)'
|
8000 |
+
model: '$1-$2'
|
8001 |
|
8002 |
# Krüger&Matz (Kruger&Matz)
|
8003 |
Krüger&Matz:
|
8004 |
+
regex: 'Kruger[ _&]Matz|KrugerMatz[ _]|FLOW5PLUS|FLOW7|FLOW6(?:S|Lite)|DRIVE[_ ]6S?|MOVE8mini|MOVE_|LIVE_6plus|LIVE 5 PLUS|LIVE4_KM043[89]|LIVE 7S|KM(?:106[67]|1065G|0701_1|0702|0805_1)'
|
8005 |
device: 'smartphone'
|
8006 |
models:
|
8007 |
+
- regex: 'MOVE8mini'
|
8008 |
+
model: 'MOVE 8 Mini'
|
8009 |
- regex: 'MOVE_6_mini'
|
8010 |
model: 'MOVE 6 Mini'
|
8011 |
- regex: 'MOVE[_ ]([78]|6S)'
|
8016 |
model: 'DRIVE $1'
|
8017 |
- regex: 'FLOW5PLUS(?:[);/ ]|$)'
|
8018 |
model: 'FLOW 5 Plus'
|
8019 |
+
- regex: 'FLOW6Lite(?:[);/ ]|$)'
|
8020 |
+
model: 'FLOW 6 Lite'
|
8021 |
- regex: 'FLOW[ _]?([476][S]?)(?:[);/ ]|$)'
|
8022 |
model: 'FLOW $1'
|
8023 |
- regex: 'LIVE4_(KM043[89])(?:[);/ ]|$)'
|
8030 |
model: 'LIVE 5 Plus'
|
8031 |
- regex: 'LIVE_6plus(?:[);/ ]|$)'
|
8032 |
model: 'LIVE 6 Plus' # KM0454
|
8033 |
+
- regex: 'LIVE 7S(?:[);/ ]|$)'
|
8034 |
+
model: 'LIVE 7S'
|
8035 |
|
8036 |
- regex: 'KM(106[67])(?:[);/ ]|$)'
|
8037 |
device: 'tablet'
|
8069 |
|
8070 |
# Lava (Lavamobiles.com)
|
8071 |
Lava:
|
8072 |
+
regex: 'Lava[ _]|LAVAA1|(?:DISCOVER136|KKT QUADRA)|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair Z1|PixelV1|Pixel V2|Z61_2GB|A97 IPS|L[EH]9920(?:[_ ]P)?|L[EH]9910)(?:[);/ ]|$)'
|
8073 |
device: 'smartphone'
|
8074 |
models:
|
8075 |
- regex: 'Flair Z1(?:[);/ ]|$)'
|
8080 |
model: 'A67'
|
8081 |
- regex: 'A76 Build'
|
8082 |
model: 'A76'
|
8083 |
+
- regex: 'Pixel ?V([12])(?:[);/ ]|$)'
|
8084 |
+
model: 'Pixel V$1'
|
8085 |
- regex: 'X1 Selfie Build'
|
8086 |
model: 'Iris X1 Selfie'
|
8087 |
- regex: 'X41 Plus Build'
|
8092 |
model: 'R1'
|
8093 |
- regex: 'Z61_2GB(?:[);/ ]|$)'
|
8094 |
model: 'Z61'
|
8095 |
+
- regex: 'LE9920[ _]P(?:[);/ ]|$)'
|
8096 |
+
model: 'V7'
|
8097 |
+
- regex: 'LE9920(?:[);/ ]|$)'
|
8098 |
+
model: 'Z53'
|
8099 |
+
- regex: 'LH9910(?:[);/ ]|$)'
|
8100 |
+
model: 'Z52'
|
8101 |
+
- regex: 'LE9910(?:[);/ ]|$)'
|
8102 |
+
model: 'V8'
|
8103 |
+
- regex: 'LH9920(?:[);/ ]|$)'
|
8104 |
+
model: 'V+6'
|
8105 |
|
8106 |
- regex: 'DISCOVER136'
|
8107 |
device: 'feature phone'
|
8140 |
|
8141 |
# lanix
|
8142 |
Lanix:
|
8143 |
+
regex: 'LANIX-([a-z0-9]+)|Ilium[ _]|IliumPad|X120C|Alpha 950'
|
8144 |
device: 'smartphone'
|
8145 |
models:
|
8146 |
+
- regex: 'ILIUM[ _]?PAD[ _]?([^;/]+)(?: Build|[;)])'
|
8147 |
model: 'Ilium Pad $1'
|
8148 |
device: 'tablet'
|
8149 |
- regex: 'X120C'
|
8150 |
model: 'Ilium X120C'
|
8151 |
+
- regex: 'Ilium[ _](Alpha [15]s|Alpha [379]|L(?:200|6[12]0|9[125]0|1[0124]00|1050|1120)|LT5[012]0|M[13579]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710))(?:[);/ ]|$)'
|
8152 |
model: 'Ilium $1'
|
8153 |
- regex: 'ILIUM[ _]([^;/]+) Build'
|
8154 |
model: 'Ilium $1'
|
8217 |
|
8218 |
# Leagoo
|
8219 |
Leagoo:
|
8220 |
+
regex: 'LEAGOO[ _-]?|(?:M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _]7s|Elite [15]|Venture 1|Z10-E)(?:[);/ ]|$)'
|
8221 |
device: 'smartphone'
|
8222 |
models:
|
8223 |
- regex: 'LEAGOO[- _]M8[_-]?Pro(?:[);/ ]|$)'
|
8232 |
model: 'KICCAA Power'
|
8233 |
- regex: 'KIICAA MIX'
|
8234 |
model: 'KICCAA Mix'
|
8235 |
+
- regex: 'Elite ([15])(?:[);/ ]|$)'
|
8236 |
+
model: 'Elite $1'
|
8237 |
- regex: 'Venture 1(?:[);/ ]|$)'
|
8238 |
model: 'Venture 1'
|
8239 |
- regex: '(Z10-E)(?:[);/ ]|$)'
|
8317 |
device: 'tablet'
|
8318 |
model: '$1'
|
8319 |
|
8320 |
+
# lenovo (lenovo.com)
|
8321 |
Lenovo:
|
8322 |
+
regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|YT3-X50[ML]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|A3500-HV|A2109A|S6000|Z2 Plus|Vibe P1|VIBE C|VIBE [ZX]2|Vibe K5(?: Plus)?|P2A42|L38011|L18011|[5-8]01LV|[67]02LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC|S90-A|P70-A|VR-1541F)(?:[);/ ]|$)'
|
8323 |
device: 'smartphone'
|
8324 |
models:
|
8325 |
- regex: 'Lenovo ?G780'
|
8328 |
- regex: 'Lenovo ?A3500-FL'
|
8329 |
model: 'IdeaTab A7-40'
|
8330 |
device: 'tablet'
|
8331 |
+
- regex: '(?:Lenovo ?)?A3500-(?:H|HV|F)'
|
8332 |
model: 'IdeaTab A7-50'
|
8333 |
device: 'tablet'
|
8334 |
- regex: '(?:Lenovo[ _])?A5500-[HF]'
|
8340 |
- regex: 'A2107A-H'
|
8341 |
model: 'A2107'
|
8342 |
device: 'tablet'
|
8343 |
+
- regex: 'A2109A'
|
8344 |
+
model: 'IdeaTab A2109A'
|
8345 |
+
device: 'tablet'
|
8346 |
- regex: 'TB2-X30[FL]'
|
8347 |
model: 'Tab 2 A10-30'
|
8348 |
device: 'tablet'
|
8355 |
- regex: 'TB3-710[IF]'
|
8356 |
model: 'TAB3 7 Essential'
|
8357 |
device: 'tablet'
|
8358 |
+
- regex: 'TB-7703X'
|
8359 |
+
model: 'TAB3 7 Plus'
|
8360 |
+
device: 'tablet'
|
8361 |
+
- regex: 'TB3-X70L'
|
8362 |
+
model: 'TAB3 10 Plus'
|
8363 |
+
device: 'tablet'
|
8364 |
+
- regex: 'TB-8703X'
|
8365 |
+
model: 'TAB3 8 Plus'
|
8366 |
+
device: 'tablet'
|
8367 |
- regex: 'TAB 2 A8-50LC'
|
8368 |
model: 'TAB2 A8-50LC'
|
8369 |
device: 'tablet'
|
8370 |
- regex: '501LV(?:[);/ ]|$)'
|
8371 |
model: 'TAB2 8.0"'
|
8372 |
device: 'tablet'
|
8373 |
+
- regex: 'TAB 2 A10-70L(?:[);/ ]|$)'
|
8374 |
+
model: 'TAB 2 A10'
|
8375 |
+
device: 'tablet'
|
8376 |
- regex: '(?:TB3-850[FM]|601LV)(?:[);/ ]|$)'
|
8377 |
model: 'TAB3 8'
|
8378 |
device: 'tablet'
|
8379 |
+
- regex: '602LV(?:[);/ ]|$)'
|
8380 |
+
model: 'TAB3 8 Dual'
|
8381 |
+
device: 'tablet'
|
8382 |
+
- regex: 'TB-X304[FL]'
|
8383 |
model: 'TAB4 10'
|
8384 |
device: 'tablet'
|
8385 |
+
- regex: 'TB-8504X'
|
8386 |
+
model: 'TAB4 8'
|
8387 |
+
device: 'tablet'
|
8388 |
+
- regex: 'TB-8704X'
|
8389 |
+
model: 'TAB4 8 Plus'
|
8390 |
+
device: 'tablet'
|
8391 |
+
- regex: '(?:TB-X704[FVL]|70[12]LV)(?:[);/ ]|$)'
|
8392 |
model: 'TAB4 10 Plus'
|
8393 |
device: 'tablet'
|
8394 |
- regex: '801LV(?:[);/ ]|$)'
|
8403 |
- regex: 'TB-X605F(?:[);/ ]|$)'
|
8404 |
model: 'Tab M10'
|
8405 |
device: 'tablet'
|
8406 |
+
- regex: 'TB-7104I(?:[);/ ]|$)'
|
8407 |
+
model: 'Tab E7'
|
8408 |
+
device: 'tablet'
|
8409 |
+
- regex: 'TB-8304F1(?:[);/ ]|$)'
|
8410 |
+
model: 'Tab E8'
|
8411 |
+
device: 'tablet'
|
8412 |
+
- regex: 'TB-7304X(?:[);/ ]|$)'
|
8413 |
+
model: 'Tab 7 Essential'
|
8414 |
+
device: 'tablet'
|
8415 |
+
- regex: 'TB-7504X(?:[);/ ]|$)'
|
8416 |
+
model: 'Tab 7'
|
8417 |
+
device: 'tablet'
|
8418 |
+
- regex: 'TB-X606[FX](?:[);/ ]|$)'
|
8419 |
+
model: 'Tab M10 FHD Plus'
|
8420 |
+
device: 'tablet'
|
8421 |
- regex: 'Lenovo ?B8000(-[FH])?'
|
8422 |
model: 'Yoga Tablet 10'
|
8423 |
device: 'tablet'
|
8442 |
- regex: 'YT3-850M'
|
8443 |
model: 'Yoga Tab 3 10'
|
8444 |
device: 'tablet'
|
8445 |
+
- regex: 'YT-X703L'
|
8446 |
+
model: 'Yoga Tab 3 Plus'
|
8447 |
+
device: 'tablet'
|
8448 |
|
8449 |
- regex: 'S6000(?:[);/ ]|$)'
|
8450 |
model: 'IdeaTab S6000'
|
8458 |
- regex: 'ThinkPad ?Tablet([^;/]*) Build'
|
8459 |
model: 'ThinkPad Tablet$1'
|
8460 |
device: 'tablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
8461 |
- regex: 'Lenovo ?A3300-(?:GV|H)'
|
8462 |
model: 'TAB 2 A7-30'
|
8463 |
device: 'tablet'
|
8464 |
+
- regex: 'TAB 2 A7-30[HGD]C'
|
8465 |
+
model: 'TAB 2 A7'
|
8466 |
+
device: 'tablet'
|
8467 |
- regex: 'TB-8504F'
|
8468 |
model: 'TAB 4 8'
|
8469 |
device: 'tablet'
|
8470 |
- regex: 'TB-X304F'
|
8471 |
+
model: 'TAB4 10'
|
8472 |
device: 'tablet'
|
8473 |
+
- regex: 'TB-X505[FX]'
|
8474 |
model: 'M10'
|
8475 |
device: 'tablet'
|
8476 |
+
- regex: 'TB-X104[FXL]'
|
8477 |
model: 'E10'
|
8478 |
device: 'tablet'
|
8479 |
- regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
|
8485 |
- regex: 'Yoga Tablet([^;/]+) Build'
|
8486 |
model: 'Yoga Tablet$1'
|
8487 |
device: 'tablet'
|
8488 |
+
- regex: 'TB-8505F'
|
8489 |
+
model: 'Tab M8'
|
8490 |
device: 'tablet'
|
8491 |
- regex: 'Lenovo (TB[0-9]?\-[a-z0-9\-]+) Build'
|
8492 |
model: '$1'
|
8511 |
model: 'K4 Note'
|
8512 |
- regex: 'K350t(?:[);/ ]|$)'
|
8513 |
model: 'K5'
|
8514 |
+
- regex: 'L38011(?:[);/ ]|$)'
|
8515 |
+
model: 'K5 Play'
|
8516 |
- regex: 'A7020a4[08](?:[);/ ]|$)'
|
8517 |
model: 'K5 Note'
|
8518 |
- regex: 'K31-t3(?:[);/ ]|$)'
|
8555 |
model: 'A3'
|
8556 |
- regex: 'PB2-670M(?:[);/ ]|$)'
|
8557 |
model: 'Phab 2'
|
8558 |
+
- regex: '(S90-A|P70-A)(?:[);/ ]|$)'
|
8559 |
+
model: '$1'
|
8560 |
+
- regex: 'IdeaPad ?([^;/]*) Build'
|
8561 |
+
model: 'IdeaPad $1'
|
8562 |
+
device: 'tablet'
|
8563 |
+
|
8564 |
+
- regex: 'VR-1541F' # VR headset
|
8565 |
+
device: 'wearable'
|
8566 |
+
model: 'Mirage Solo'
|
8567 |
+
|
8568 |
+
- regex: 'Lenovo TAB ?([^/;]*) Build'
|
8569 |
+
model: 'TAB $1'
|
8570 |
+
device: 'tablet'
|
8571 |
- regex: 'Lenovo ([^/;]*) Build'
|
8572 |
model: '$1'
|
8573 |
- regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]?([a-z0-9_+\-]+)'
|
8574 |
model: '$1'
|
8575 |
|
8576 |
+
|
8577 |
# Lexand
|
8578 |
Lexand:
|
8579 |
regex: '(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802)(?:[);/ ]|$)|Lexand ([^;/]+) Build'
|
8665 |
|
8666 |
# LG
|
8667 |
LG:
|
8668 |
+
regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127]))(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[0578]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05D|L-03K|L-01[LJK]|L-[45]1A|901LG|A001LG|80[12]LG|402LG|LGT32|L-02K|L-01F|LM-V40'
|
8669 |
device: 'smartphone'
|
8670 |
models:
|
8671 |
- regex: 'LG-D325'
|
8684 |
model: 'G2'
|
8685 |
- regex: 'LG-D6(?:18|20)'
|
8686 |
model: 'G2 Mini'
|
8687 |
+
- regex: 'LG-D85[01258]|VS985'
|
8688 |
model: 'G3'
|
8689 |
- regex: 'LG-D72[2458]'
|
8690 |
model: 'G3 Beat'
|
8698 |
model: 'G4s'
|
8699 |
- regex: 'LG-H735'
|
8700 |
model: 'G4 Beat'
|
8701 |
+
- regex: 'LG-H8(?:20|3[01]|5[08]|60)|VS987|RS988'
|
8702 |
model: 'G5'
|
8703 |
- regex: 'LG-H84[05]'
|
8704 |
model: 'G5 SE'
|
8714 |
model: 'G8S ThinQ'
|
8715 |
- regex: '901LG(?:[);/ ]|$)'
|
8716 |
model: 'G8X ThinQ'
|
8717 |
+
- regex: 'VS501|LM-X120'
|
8718 |
model: 'K20'
|
8719 |
- regex: '(?:LG-)?H502'
|
8720 |
model: 'Magna'
|
8742 |
model: 'V20'
|
8743 |
- regex: 'LM-Q710(?:\(FGN\)|[\.]?FGN)'
|
8744 |
model: 'Q Stylus Plus'
|
8745 |
+
- regex: '801LG'
|
8746 |
+
model: 'Q Stylus'
|
8747 |
- regex: 'LM-Q[67]10\.FG(?:[);/ ]|$)'
|
8748 |
model: 'Q7'
|
8749 |
- regex: 'LM-(Q725[KL]|Q610.FGN)(?:[);/ ]|$)'
|
8786 |
model: 'X4'
|
8787 |
- regex: 'LM-X(415[LS]|410L)'
|
8788 |
model: 'X4+'
|
8789 |
+
- regex: 'LM-X410(?:\.FN|\(FG\))'
|
8790 |
model: 'K11'
|
8791 |
- regex: 'LM-X(?:320|410[UP]M)'
|
8792 |
model: 'K30'
|
8917 |
- regex: 'VS870 4G'
|
8918 |
model: 'Lucid 2'
|
8919 |
|
8920 |
+
- regex: 'LGUK410'
|
8921 |
+
model: 'G Pad 7.0" LTE'
|
8922 |
+
device: 'tablet'
|
8923 |
- regex: 'LG-V490'
|
8924 |
model: 'G Pad 8.0'
|
8925 |
device: 'tablet'
|
8991 |
|
8992 |
# Logicom
|
8993 |
Logicom:
|
8994 |
+
regex: 'LOGICOM[_ ]|(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|La[ _]Tab[ _](?:7[24]|10[57]|114)|(?:B|C|M|ID|VR)[ _]?BOT[ _]?(?:TAB[ _])?([0-9]+\+?)(?:PLUS)?|KT712A_4\.4|L-?IXIR[0-9]*|L-ITE|L-EGANTONE-R|L-?EMENT|L-EMENT551|Le[ _]?(?:Hop|Lift|Hola|Moov[2]?|Must 2|Fit FR|Spark|Prime|Smooth(?: FR)?))[_);/ ]'
|
8995 |
device: 'tablet'
|
8996 |
models:
|
8997 |
+
- regex: 'La[ _]Tab[ _](7[24]|10[57]|114)(?:[);/ ]|$)'
|
8998 |
+
model: 'La Tab $1'
|
8999 |
- regex: 'LOGICOM_LA_TAB_LINK_71'
|
9000 |
model: 'La Tab Link 71'
|
9001 |
- regex: 'KT712A_4.4'
|
9006 |
model: 'L-ixir Tab $1'
|
9007 |
- regex: 'L-ITE[ _]([^;/]+) Build'
|
9008 |
model: 'L-ite Tab $1'
|
9009 |
+
- regex: 'L-EMENT[ _]?(40[03]|55[13]|505)(?:[);/ ]|$)'
|
9010 |
model: 'L-ement $1'
|
9011 |
device: 'smartphone'
|
9012 |
- regex: 'L-?EMENT[ _](?:TAB)?([^;/]+) Build'
|
9076 |
device: 'feature phone'
|
9077 |
model: '$1'
|
9078 |
|
9079 |
+
# Konrow (konrow.com)
|
9080 |
Konrow:
|
9081 |
+
regex: '(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5|EASY5|CITY55)(?:[);/ ]|$)'
|
9082 |
device: 'smartphone'
|
9083 |
models:
|
9084 |
- regex: 'BIGCOOL(?:[);/ ]|$)'
|
9091 |
model: 'Just 5'
|
9092 |
- regex: 'Link5(?:[);/ ]|$)'
|
9093 |
model: 'Link 5'
|
9094 |
+
- regex: 'EASY5(?:[);/ ]|$)'
|
9095 |
+
model: 'Easy 5'
|
9096 |
+
- regex: 'CITY55(?:[);/ ]|$)'
|
9097 |
+
model: 'City 55'
|
9098 |
|
9099 |
# Karbonn (karbonnmobiles.com)
|
9100 |
Karbonn:
|
9101 |
+
regex: '(?:Browser-)?Karbonn|K9 Kavach 4G|K9[_ ]Viraat[_ ]Plus|K9 Music 4G|K9 Smart|K9 VIRAAT 4G|Aura Sleek Plus|Aura Note Play|Titanium[ _](?:3D-Plex|Octane Plus|Vista 4G|Jumbo|S360|S1[059]|S35|S20[13]|S22|S1|S200 HD|Frames S7)|K-lite F3'
|
9102 |
device: 'smartphone'
|
9103 |
models:
|
9104 |
- regex: 'K9 Kavach 4G'
|
9115 |
model: 'K9 Smart Yuva'
|
9116 |
- regex: 'K9 Smart'
|
9117 |
model: 'K9 Smart'
|
9118 |
+
- regex: 'K9[_ ]Viraat[_ ]Plus'
|
9119 |
+
model: 'K9 Viraat Plus'
|
9120 |
- regex: 'Aura Sleek Plus'
|
9121 |
model: 'Aura Sleek Plus'
|
9122 |
- regex: 'Aura Note Play'
|
9133 |
model: 'Titanium Jumbo 2'
|
9134 |
- regex: 'Titanium Jumbo'
|
9135 |
model: 'Titanium Jumbo'
|
9136 |
+
- regex: 'Titanium Frames S7'
|
9137 |
+
model: 'Titanium Frames S7'
|
9138 |
- regex: 'Titanium Octane Plus'
|
9139 |
model: 'Titanium Octane Plus'
|
9140 |
- regex: 'Titanium[ _]3D-Plex'
|
9254 |
|
9255 |
# Maxwest
|
9256 |
Maxwest:
|
9257 |
+
regex: '(?:Astro_5N_LTE|Virtue Z5|Astro X55s|Astro_5_GO_LTE|Nitro_4|Gravity_55?_GO)(?:[);/ ]|$)'
|
9258 |
device: 'smartphone'
|
9259 |
models:
|
9260 |
- regex: 'Astro_5N_LTE'
|
9261 |
model: 'Astro 5N LTE'
|
9262 |
+
- regex: 'Astro_5_GO_LTE'
|
9263 |
+
model: 'Astro 5 Go LTE'
|
9264 |
- regex: 'Virtue Z5'
|
9265 |
model: 'Virtue Z5'
|
9266 |
- regex: 'Astro X55s'
|
9267 |
model: 'Astro X55s'
|
9268 |
- regex: 'Nitro_4'
|
9269 |
model: 'Nitro 4'
|
9270 |
+
- regex: 'Gravity_(55?)_GO'
|
9271 |
+
model: 'Gravity $1 GO'
|
9272 |
|
9273 |
# Maze
|
9274 |
Maze:
|
9275 |
+
regex: '(?:SSB-(?:500|508E)|Alpha[_ ]X|Maze Alpha|SSB504R)(?:[);/ ]|$)'
|
9276 |
device: 'smartphone'
|
9277 |
models:
|
9278 |
+
- regex: 'SSB-(500|508E)(?:[);/ ]|$)'
|
9279 |
+
model: 'SSB-$1'
|
9280 |
- regex: 'SSB504R(?:[);/ ]|$)'
|
9281 |
model: 'Speed'
|
9282 |
- regex: 'Alpha[_ ]X(?:[);/ ]|$)'
|
9286 |
|
9287 |
# Mediacom
|
9288 |
Mediacom:
|
9289 |
+
regex: '(?:SmartPad7503G|M-SP10MXA|M-PPAB500|SmartPad970s2(?:3G)?|M[_-][MPS]P[0-9a-z]+|M-IPRO[0-9a-z]+|1AEC)(?:[);/ ]|$)'
|
9290 |
device: 'tablet'
|
9291 |
models:
|
9292 |
- regex: 'SmartPad7503G(?:[);/ ]|$)'
|
9301 |
model: 'SmartPad 9.7 Mobile'
|
9302 |
- regex: 'M-SP10MXA(?:[);/ ]|$)'
|
9303 |
model: 'SmartPad MX 10'
|
9304 |
+
- regex: 'M-SP8MXA(?:[);/ ]|$)'
|
9305 |
+
model: 'SmartPad MX 8'
|
9306 |
+
- regex: 'M-SP8HXAH(?:[);/ ]|$)'
|
9307 |
+
model: 'SmartPad HX 8 HD'
|
9308 |
- regex: 'M-MP(?:710|720|725|726|740)GOx?(?:[);/ ]|$)'
|
9309 |
model: 'SmartPad 7.0 Go'
|
9310 |
- regex: 'M-MP876S2(?:[);/ ]|$)'
|
9317 |
model: 'SmartPad 875 S2 3G'
|
9318 |
- regex: 'M-SP1AGO3G'
|
9319 |
model: 'SmartPad 10 Go 3G'
|
9320 |
+
- regex: '1AEC'
|
9321 |
+
model: 'SmartPad 10 Eclipse'
|
9322 |
- regex: 'M-MP10[45][01]S2(?:[);/ ]|$)'
|
9323 |
model: 'SmartPad 10.1 S2'
|
9324 |
- regex: 'M-MP1S2[AB]3G(?:[);/ ]|$)'
|
9359 |
- regex: 'M-PPAG550(?:[);/ ]|$)'
|
9360 |
model: 'PhonePad Duo G550'
|
9361 |
device: 'phablet'
|
9362 |
+
- regex: 'M-PPAB500(?:[);/ ]|$)'
|
9363 |
+
model: 'PhonePad Duo B500'
|
9364 |
+
device: 'phablet'
|
9365 |
- regex: 'M-PP2G530(?:[);/ ]|$)'
|
9366 |
model: 'PhonePad Duo G530'
|
9367 |
device: 'phablet'
|
9393 |
- regex: 'M-PPxG(400|501|[457][PM]?)(?:[);/ ]|$)'
|
9394 |
model: 'PhonePad Duo G$1'
|
9395 |
device: 'smartphone'
|
9396 |
+
- regex: 'M-PPxS(532[LU]|470|501|5P?)(?:[);/ ]|$)'
|
9397 |
model: 'PhonePad Duo S$1'
|
9398 |
device: 'smartphone'
|
9399 |
+
- regex: 'M-PPxG(450)(?:[);/ ]|$)'
|
9400 |
+
model: 'PhonePad Duo G$1'
|
9401 |
+
device: 'smartphone'
|
9402 |
|
9403 |
- regex: 'M-MP([0-9a-z]+)'
|
9404 |
model: 'SmartPad $1'
|
9436 |
|
9437 |
# Meizu
|
9438 |
Meizu:
|
9439 |
+
regex: 'Meizu|MZ-[a-z]|(M04[05]|MZ-16th(?: Plus)?|MZ-16[st]|M7[12]1C|M35[1356]|M612C|M578CA|M181[36]|M1822|M681C|M6T|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M621C|M1852|M57[18]C|M3[ESX]|M031|m1 metal|M1 E|M2|M2 E|M5s Build|PRO 6|PRO 7-H| 15 Lite| 16th|MZ-15 (?:Lite|Plus)|MZ-16 X)(?:[);/ ]|$)'
|
9440 |
device: 'smartphone'
|
9441 |
models:
|
9442 |
- regex: '(?:MZ-)?M571C'
|
9500 |
model: 'Note 8'
|
9501 |
- regex: 'MZ-16T(?:[);/ ]|$)'
|
9502 |
model: '16T'
|
9503 |
+
- regex: '(?:MZ-)?16th Plus(?:[);/ ]|$)'
|
9504 |
model: '16th Plus'
|
9505 |
- regex: 'MZ-15 Plus(?:[);/ ]|$)'
|
9506 |
model: '15 Plus'
|
9507 |
+
- regex: '(?:MZ-15 Lite| 15 Lite)(?:[);/ ]|$)'
|
9508 |
model: '15 Lite'
|
9509 |
+
- regex: 'MZ-16th| 16th(?:[);/ ]|$)'
|
9510 |
model: '16th'
|
9511 |
- regex: 'MZ-16 X(?:[);/ ]|$)'
|
9512 |
model: '16X'
|
9661 |
|
9662 |
# Mobicel
|
9663 |
Mobicel:
|
9664 |
+
regex: 'Mobicel_(R1)|(?:HYPE|DANDY|(?<!SMADL )Matrix|TRENDY PLUS|BLINK|BERRY[_ ]?(?:[12]|PLUS))(?:[);/ ]|$)'
|
9665 |
device: 'smartphone'
|
9666 |
models:
|
9667 |
- regex: 'Matrix'
|
9668 |
model: 'Matrix'
|
9669 |
+
- regex: 'BLINK'
|
9670 |
+
model: 'Blink'
|
9671 |
+
- regex: 'BERRY1'
|
9672 |
+
model: 'Berry 1'
|
9673 |
+
- regex: 'BERRY 2'
|
9674 |
+
model: 'Berry 2'
|
9675 |
+
- regex: 'BERRY[_ ]PLUS'
|
9676 |
+
model: 'Berry Plus'
|
9677 |
- regex: 'TRENDY PLUS'
|
9678 |
model: 'Trendy Plus'
|
9679 |
+
- regex: 'HYPE'
|
9680 |
+
model: 'Hype'
|
9681 |
+
- regex: 'DANDY'
|
9682 |
+
model: 'Dandy'
|
9683 |
- regex: 'Mobicel_(R1)'
|
9684 |
model: '$1'
|
9685 |
|
9774 |
|
9775 |
# Mecool
|
9776 |
Mecool:
|
9777 |
+
regex: '(?:KM9PRO|BB2 PRO|K[I]{1,3} PRO|KI PLUS|KM9_TV_BOX|M8SPROW|M8S (?:PLUS|PRO) (?:DVB|[LW]|PLUS)|M8S (?:MAX|PRO))(?:[);/ ]|$)'
|
9778 |
device: 'tv'
|
9779 |
models:
|
9780 |
- regex: 'KM9PRO(?:[);/ ]|$)'
|
9783 |
model: 'KM9 TV Box'
|
9784 |
- regex: 'BB2 PRO(?:[);/ ]|$)'
|
9785 |
model: 'BB2 Pro'
|
9786 |
+
- regex: '(K[I]{1,3}) PRO(?:[);/ ]|$)'
|
9787 |
+
model: '$1 Pro'
|
9788 |
+
- regex: 'KI PLUS(?:[);/ ]|$)'
|
9789 |
+
model: 'KI Plus'
|
9790 |
- regex: 'M8SPROW(?:[);/ ]|$)'
|
9791 |
model: 'M8S Pro W'
|
9792 |
- regex: 'M8S PLUS DVB(?:[);/ ]|$)'
|
9909 |
model: 'Moto E'
|
9910 |
- regex: '(?:MOT-|Motorola-)?XT1706'
|
9911 |
model: 'Moto E3 Power'
|
9912 |
+
- regex: '(?:MOT-|Motorola-)?XT1924-9|moto e5 plus'
|
9913 |
model: 'Moto E5 Plus'
|
9914 |
+
- regex: 'Moto E5 Play'
|
9915 |
+
model: 'Moto E5 Play'
|
9916 |
- regex: '(?:MOT-|Motorola-)?XT1030'
|
9917 |
model: 'Droid Mini'
|
9918 |
- regex: '(?:MOT-|Motorola-)?XT1096'
|
9985 |
model: 'Moto $1$2$3'
|
9986 |
- regex: 'Moto ?([CGEXZ])( Plus| Play)?'
|
9987 |
model: 'Moto $1$2'
|
9988 |
+
- regex: 'MotoroiX'
|
9989 |
+
model: 'MotoroiX'
|
9990 |
|
9991 |
+
- regex: 'Motorola[ _\-]([^/;]+)(?: Build|[);])'
|
9992 |
model: '$1'
|
9993 |
- regex: 'MOTORAZR[ _\-]([a-z0-9]+)'
|
9994 |
model: 'RAZR $1'
|
10044 |
|
10045 |
# myphone (myphone.com.ph)
|
10046 |
MyPhone:
|
10047 |
+
regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\))|Cube_LTE|myTab10II|HAMMER[ _](Blade2_PRO|IRON_3|Explorer|ENERGY|Titan 2|AXE[_ ](?:M[_ ]LTE|Pro)|Iron 2|Active[2]?(_LTE)?)|C-Smart_pix|myPhone_Fun_8|Prime_4_Lite|myA17|myX12|Pocket_2|myT6 DTV|myXI1 (?:Plus|Pro)|myXI3'
|
10048 |
device: 'smartphone'
|
10049 |
models:
|
10050 |
# explicit table models
|
10067 |
# explicit smartphones models
|
10068 |
- regex: 'Cube_LTE'
|
10069 |
model: 'Cube LTE'
|
10070 |
+
- regex: 'Prime_4_Lite'
|
10071 |
+
model: 'Prime 4 Lite'
|
10072 |
- regex: 'HAMMER[ _]ENERGY'
|
10073 |
model: 'Hammer Energy'
|
10074 |
- regex: 'HAMMER_AXE[_ ]M[_ ]LTE'
|
10152 |
|
10153 |
# Navon
|
10154 |
Navon:
|
10155 |
+
regex: 'Navon[_ ]|(?:Vision_Tab_(?:7|10)|Superme_Max|Supreme[_ ](?:Fine|Chief|Pure|Pro)(?:[_ ](?:Mini|Plus))?)(?:[);/ ]|$)'
|
10156 |
device: 'smartphone'
|
10157 |
models:
|
10158 |
- regex: 'Superme_Max(?:[);/ ]|$)'
|
10176 |
- regex: 'Navon[_ ]Platinum 10 3G(?:[);/ ]|$)'
|
10177 |
model: 'Platinum 10.1" 3G'
|
10178 |
|
10179 |
+
- regex: 'Vision_Tab_(7|10)(?:[);/ ]|$)'
|
10180 |
+
device: 'tablet'
|
10181 |
+
model: 'Vision Tab $1'
|
10182 |
+
|
10183 |
# NOA
|
10184 |
NOA:
|
10185 |
regex: 'NOA[ _]|Hummer(?:_2019_R|LE)|NextSE'
|
10223 |
|
10224 |
# nec
|
10225 |
NEC:
|
10226 |
+
regex: 'NEC[ _\-]|KGT/2\.0|PC-TE508(?:S1|[BH]AW)|PC-TE510(?:HAW|BAL)|PC-TS708T1W|PC-TS507N1S|PC-TE507JAW|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N|(?:N-06C|N-02E|LAVIE Tab E (?:10|8)FHD1)(?:[);/ ]|$)'
|
10227 |
device: 'smartphone'
|
10228 |
models:
|
10229 |
- regex: 'N-06C(?:[);/ ]|$)'
|
10236 |
model: '$1'
|
10237 |
- regex: '(?:portalmmm|o2imode)/2\.0[ ,](N[a-z0-9]+)'
|
10238 |
model: '$1'
|
10239 |
+
- regex: 'PC-TE508[BH]AW(?:[);/ ]|$)'
|
10240 |
+
device: 'tablet'
|
10241 |
+
model: 'LAVIE Tab E TE508'
|
10242 |
+
- regex: 'PC-TE510(?:BAL|HAW)(?:[);/ ]|$)'
|
10243 |
+
device: 'tablet'
|
10244 |
+
model: 'LAVIE Tab E TE510'
|
10245 |
+
- regex: 'PC-TS507N1S(?:[);/ ]|$)'
|
10246 |
+
device: 'tablet'
|
10247 |
+
model: 'LAVIE Tab S TS507'
|
10248 |
+
- regex: 'PC-TS708T1W(?:[);/ ]|$)'
|
10249 |
+
device: 'tablet'
|
10250 |
+
model: 'LAVIE Tab S TS708'
|
10251 |
+
- regex: 'PC-TE507JAW(?:[);/ ]|$)'
|
10252 |
+
device: 'tablet'
|
10253 |
+
model: 'LAVIE Tab E TS507'
|
10254 |
+
- regex: 'PC-TE508S1(?:[);/ ]|$)'
|
10255 |
device: 'tablet'
|
10256 |
model: 'LAVIE Tab E TE508'
|
10257 |
+
- regex: '(LAVIE Tab E (?:10|8)FHD1)(?:[);/ ]|$)'
|
10258 |
+
device: 'tablet'
|
10259 |
+
model: '$1'
|
10260 |
|
10261 |
# Neffos (TP-Link)
|
10262 |
Neffos:
|
10495 |
|
10496 |
# Nvidia
|
10497 |
Nvidia:
|
10498 |
+
regex: 'SHIELD Tablet K1|SHIELD Android TV|Tegra(Note-P1640| Note 7)'
|
10499 |
device: 'tablet'
|
10500 |
models:
|
10501 |
- regex: 'TegraNote-P1640'
|
10502 |
model: 'Tegra Note P1640'
|
10503 |
+
- regex: '(SHIELD Tablet K1|Tegra Note 7)(?: Build|[;)])'
|
10504 |
model: '$1'
|
10505 |
- regex: 'SHIELD Android TV'
|
10506 |
model: 'SHIELD Android TV'
|
10734 |
|
10735 |
# OnePlus
|
10736 |
OnePlus:
|
10737 |
+
regex: '(?:du_)?ONEPLUS|(?:A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|E100[135]|GM191[03517]|GM190[0135]|GM1920|HD191[013]|HD190[01357]|HD1925|IN201[01357]|IN202[0135]|KB2000)(?: Build|\))'
|
10738 |
device: 'smartphone'
|
10739 |
models:
|
10740 |
- regex: 'AC200[13](?:[);/ ]|$)'
|
10741 |
model: 'Nord 5G'
|
10742 |
- regex: 'IN202[0135](?:[);/ ]|$)'
|
10743 |
model: '8 Pro'
|
10744 |
+
- regex: 'KB2000(?:[);/ ]|$)'
|
10745 |
+
model: '8T'
|
10746 |
- regex: 'IN201[01357](?:[);/ ]|$)'
|
10747 |
model: '8'
|
10748 |
- regex: '(?:GM191[03517]|OnePlus 7 Pro)(?:[);/ ]|$)'
|
11132 |
|
11133 |
# orange
|
11134 |
Orange:
|
11135 |
+
regex: 'SPV[ \-]?([a-z0-9]+)|(?<!FBCR/)Orange[ _-](?!Tahiti-LS\))([^/;]+)( Build|\))(?<!Tahiti-LS\))|SC/IHD92|Nura 2|FunTab ([^/;]+) Build|Orange Mahpee'
|
11136 |
device: 'smartphone'
|
11137 |
models:
|
11138 |
- regex: 'SC/IHD92'
|
11150 |
model: '$1 $2'
|
11151 |
- regex: 'Orange[ _-](Dive)72(?:[);/ ]|$)'
|
11152 |
model: '$1 72'
|
11153 |
+
- regex: 'Orange[ _-](Daytona|Dive (30|7[13])|Dublin|Fova|Gova|Hi 4G|Hiro|Kivo|Monte Carlo|Neva 80|Neva play|Nura|Reyo|Rise[_ ](3[034]|40|5[345])|Rono|Roya|San Francisco|Tactile internet 2|Tado|Yomi|Yumo|Zali|Mahpee)(?:[);/ ]|$)'
|
11154 |
model: '$1'
|
11155 |
- regex: 'SPV[ \-]?([a-z0-9]+)'
|
11156 |
model: 'SPV $1'
|
11157 |
|
11158 |
# Oukitel
|
11159 |
Oukitel:
|
11160 |
+
regex: 'OUKITEL|(?:(?:C15|C16|K10000|K[46]000)(?:[ _]Pro)|K4000Pro|U16 Max|U7 Max|U7 Plus|U11[_ ]Plus|U20_Plus|WP5000|WP[58] Pro|K[46]000[ _](?:Plus|Lite)|Y4800|K10000|K[4567]000| WP[5-7])(?:[);/ ]|$)'
|
11161 |
device: 'smartphone'
|
11162 |
models:
|
11163 |
- regex: '(C15|C16|K10000|K[46]000|WP[258]|U15)[ _]?Pro(?:[);/ ]|$)'
|
11164 |
model: '$1 Pro'
|
11165 |
- regex: 'OUKITEL K([37])(?:[);/ ]|$)'
|
11166 |
model: 'K$1'
|
11167 |
+
- regex: '(K10000|U16|U7)[ _]Max(?:[);/ ]|$)'
|
11168 |
model: '$1 Max'
|
11169 |
+
- regex: '(U20|K[46]000|U7|U11)[_ ]?Plus(?:[);/ ]|$)'
|
11170 |
model: '$1 Plus'
|
11171 |
- regex: '(K4000)[_ ]Lite(?:[);/ ]|$)'
|
11172 |
model: '$1 Lite'
|
11242 |
model: 'T74MAi 3G'
|
11243 |
- regex: 'Oysters ([^/;]+)( Build|\))'
|
11244 |
model: '$1'
|
11245 |
+
|
11246 |
+
# öwn (own mobile)
|
11247 |
öwn:
|
11248 |
+
regex: 'OWN[ _]|(?:S4035[ _][34]G|Smart8)(?:[);/ ]|$)'
|
11249 |
device: 'smartphone'
|
11250 |
models:
|
11251 |
- regex: 'FUN ([67])'
|
11260 |
model: 'One'
|
11261 |
- regex: 'SMART 9'
|
11262 |
model: 'Smart 9'
|
11263 |
+
- regex: 'Smart8(?:[);/ ]|$)'
|
11264 |
+
model: 'Smart 8'
|
11265 |
|
11266 |
# Panacom
|
11267 |
Panacom:
|
11274 |
|
11275 |
# panasonic
|
11276 |
Panasonic:
|
11277 |
+
regex: 'Panasonic|PANATV[0-9]+|Viera/|(?:P902i|P-0[28]D|FZ-B2D|FZ-[NX]1|DMC-CM1|P-01J|P-03E)(?:[);/ ]|$)|Eluga[ _]|P55 Novo 4G'
|
11278 |
device: 'smartphone'
|
11279 |
models:
|
11280 |
- regex: 'P-01J(?:[);/ ]|$)'
|
11281 |
model: 'P-smart Keitai'
|
11282 |
+
- regex: 'P-03E(?:[);/ ]|$)'
|
11283 |
+
model: 'Eluga P'
|
11284 |
- regex: 'Eluga[ _-]([^;/]+) Build'
|
11285 |
model: 'Eluga $1'
|
11286 |
- regex: 'Eluga[ _-]([^;/]+)(?:[;/)]|$)'
|
11288 |
- regex: '(DMC-CM1)'
|
11289 |
model: 'Lumix $1'
|
11290 |
device: 'camera'
|
11291 |
+
- regex: 'P-02D(?:[);/ ]|$)'
|
11292 |
+
model: 'Lumix Phone P-02D'
|
11293 |
- regex: '(FZ-[XN]1)(?:[);/ ]|$)'
|
11294 |
model: 'Toughpad $1'
|
11295 |
- regex: 'FZ-B2D(?:[);/ ]|$)'
|
11375 |
model: '$1'
|
11376 |
device: 'smartphone'
|
11377 |
|
11378 |
+
# Tcl
|
11379 |
+
TCL:
|
11380 |
+
regex: 'TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|A502DL|T780H|5199I|7040N|5133A|5159[AJ]|5152D|T770H|T799B|Percee TV)(?:[);/ ]|$)'
|
11381 |
+
device: 'smartphone'
|
11382 |
+
models:
|
11383 |
+
- regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)'
|
11384 |
+
model: 'Gala G60'
|
11385 |
+
- regex: '5199I(?:[);/ ]|$)'
|
11386 |
+
model: 'C9'
|
11387 |
+
- regex: '5152D(?:[);/ ]|$)'
|
11388 |
+
model: 'C5'
|
11389 |
+
- regex: '5133A(?:[);/ ]|$)'
|
11390 |
+
model: 'L5'
|
11391 |
+
- regex: 'T780H(?:[);/ ]|$)'
|
11392 |
+
model: 'Plex'
|
11393 |
+
- regex: 'TCL[_ -]([^;/]+) Build'
|
11394 |
+
model: '$1'
|
11395 |
+
- regex: 'TCL[_ -]([a-z0-9]+)'
|
11396 |
+
model: '$1'
|
11397 |
+
- regex: '(7040N)(?:[);/ ]|$)'
|
11398 |
+
model: '$1'
|
11399 |
+
- regex: 'A502DL(?:[);/ ]|$)'
|
11400 |
+
model: 'LX'
|
11401 |
+
- regex: '5159[AJ](?:[);/ ]|$)'
|
11402 |
+
model: 'L9'
|
11403 |
+
- regex: 'T770H(?:[);/ ]|$)'
|
11404 |
+
model: '10L'
|
11405 |
+
- regex: 'T799B(?:[);/ ]|$)'
|
11406 |
+
model: '10 Pro'
|
11407 |
+
|
11408 |
+
- regex: '(Percee TV)(?:[);/ ]|$)'
|
11409 |
+
device: 'tv'
|
11410 |
+
model: '$1'
|
11411 |
+
- regex: 'TCL,(43S62FS)'
|
11412 |
+
device: 'tv'
|
11413 |
+
model: '$1'
|
11414 |
+
|
11415 |
+
# JVC
|
11416 |
+
JVC:
|
11417 |
+
regex: 'JVC[;,]'
|
11418 |
+
device: 'tv'
|
11419 |
+
models:
|
11420 |
+
- regex: 'JVC[;,](32D1290)'
|
11421 |
+
model: '$1'
|
11422 |
+
|
11423 |
# philips
|
11424 |
Philips:
|
11425 |
regex: 'Philips|AND1E(?:[);/ ]|$)|NETTV/|PI3210G|TLE(821L|722G)|TPM1[79]1E|70PUH6774_96|QM16[134]E|Xenium S[25]66|S397|W5510'
|
11453 |
- regex: 'Philips, BDP([0-9]{4})'
|
11454 |
model: 'Blu-ray Player (BDP$1)'
|
11455 |
device: 'tv'
|
11456 |
+
- regex: 'Philips, ([a-z0-9-]+)'
|
11457 |
+
model: '$1'
|
11458 |
+
device: 'tv'
|
11459 |
- regex: '(NETTV/[0-9\.]{5})'
|
11460 |
model: 'NetTV Series'
|
11461 |
device: 'tv'
|
11498 |
|
11499 |
# Pixus
|
11500 |
Pixus:
|
11501 |
+
regex: 'Pixus|(hiPower|Ride[_ ][34]G|Play[ _]Three[ _]v(?:[24].0|3.1))(?:[);/ ]|$)'
|
11502 |
device: 'tablet'
|
11503 |
models:
|
11504 |
- regex: 'Ride[_ ]([34])G'
|
11509 |
model: 'Play Two'
|
11510 |
- regex: 'Play Five'
|
11511 |
model: 'Play Five'
|
11512 |
+
- regex: 'hiPower'
|
11513 |
+
model: 'hiPower'
|
11514 |
- regex: 'Pixus[ _]Sprint'
|
11515 |
model: 'Sprint'
|
11516 |
- regex: 'Touch 7 3G'
|
11604 |
|
11605 |
# RCA Tablets (RCA)
|
11606 |
'RCA Tablets':
|
11607 |
+
regex: 'RCT([^;/]+) Build|RCA RLTP4028|RCT6513W87|RCT6973W43(?:MD)?|RCT6703W12|RCT6A06P22|RCT6303W87(?:DK|M)|RCT6773W22B|RCT6203W46L|RCT6873W42M|RCT6K03W13'
|
11608 |
device: 'smartphone'
|
11609 |
models:
|
11610 |
- regex: 'RCA RLTP4028'
|
11612 |
- regex: 'RCT6513W87'
|
11613 |
device: 'tablet'
|
11614 |
model: 'Galileo Pro 11.5"'
|
11615 |
+
- regex: 'RCT6873W42M'
|
11616 |
+
device: 'tablet'
|
11617 |
+
model: 'Voyager 7.0"'
|
11618 |
+
- regex: 'RCT6973W43(?:MD)?'
|
11619 |
device: 'tablet'
|
11620 |
model: 'Voyager III 7.0"'
|
11621 |
+
- regex: 'RCT6773W22B'
|
11622 |
+
device: 'tablet'
|
11623 |
+
model: 'Voyager II 7.0"'
|
11624 |
+
- regex: 'RCT6703W12'
|
11625 |
+
device: 'tablet'
|
11626 |
+
model: 'Atlas 10.0"'
|
11627 |
+
- regex: 'RCT6203W46L'
|
11628 |
+
device: 'tablet'
|
11629 |
+
model: 'Pro 10 Edition II'
|
11630 |
+
- regex: 'RCT6A06P22'
|
11631 |
+
device: 'tablet'
|
11632 |
+
model: 'Endeavor 10.0" HD'
|
11633 |
+
- regex: 'RCT6303W87(?:DK|M)|RCT6K03W13'
|
11634 |
+
device: 'tablet'
|
11635 |
+
model: 'Viking Pro 10.0"'
|
11636 |
- regex: 'RCT([^;/]+) Build'
|
11637 |
device: 'tablet'
|
11638 |
model: 'RCT$1'
|
11663 |
|
11664 |
# Rombica
|
11665 |
Rombica:
|
11666 |
+
regex: '(Rombica|SSQ-A0500|Smart Box v[0-9]+)(?:[);/ ]|$)'
|
11667 |
device: 'tv'
|
11668 |
models:
|
11669 |
- regex: 'SSQ-A0500(?:[);/ ]|$)'
|
11670 |
model: 'Smart Stick 4K'
|
11671 |
+
- regex: '(Infinity K8|Smart Box (?:v00[345789]|Quad|Ultra HD v002|4K V001))(?:[);/ ]|$)'
|
11672 |
model: '$1'
|
11673 |
|
11674 |
# Rover
|
11739 |
model: 'Galaz'
|
11740 |
- regex: 'NEWDUN(?:[);/ ]|$)'
|
11741 |
model: 'Newdun'
|
11742 |
+
- regex: 'SANTIN[ _][#]?(Dante|Candy U7|Armor|YSL-Y7|ANT.W|N[13]|JS|S6|V9|Life Shine)(?:[);/ ]|$)'
|
11743 |
model: '$1'
|
11744 |
|
11745 |
# Siemens
|
11764 |
|
11765 |
# Samsung
|
11766 |
Samsung:
|
11767 |
+
regex: 'SAMSUNG(?! ?Browser)|Maple |SC-(?:02[CHMKJG]|03[JLK]|04[ELJ]|05G|52A|01[HFGLKM])|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86(?:[);/ ]|$)|(?:OTV-)?SMT-E5015|ISW11SC|SCV4[0-8]|SCV3[1-9]|40[34]SC|SCL2[234]|SCG0[123567]|SCT21'
|
11768 |
device: 'smartphone'
|
11769 |
models:
|
11770 |
# explicit tv models
|
12291 |
model: 'Galaxy S6 Edge'
|
12292 |
- regex: '(?:SAMSUNG-)?SM-G928(?:7C|R4|W8|[07ACFGIKLPSTVX])'
|
12293 |
model: 'Galaxy S6 Edge+'
|
12294 |
+
- regex: '(?:SAMSUNG-)?SM-G930(?:FD|W8|[0AFKLPRSTUVX8]|T1|AZ)?(?:[);/ ]|$)'
|
12295 |
model: 'Galaxy S7'
|
12296 |
- regex: '(?:SAMSUNG-)?SM-G935(?:R4|W8|[0AFKLPSTUVX])|SC-02H|SCV33'
|
12297 |
model: 'Galaxy S7 Edge'
|
12315 |
model: 'Galaxy S10 Lite'
|
12316 |
- regex: '(?:SAMSUNG-)?(?:SM-G975[0FUWNX]|SCV42|SC-04L)'
|
12317 |
model: 'Galaxy S10+'
|
12318 |
+
- regex: '(?:SAMSUNG-)?SM-G970(?:[08FUNWX]|U1)(?:[);/ ]|$)'
|
12319 |
model: 'Galaxy S10e'
|
12320 |
- regex: '(?:SAMSUNG-)?SM-G980F'
|
12321 |
model: 'Galaxy S20'
|
12322 |
- regex: '(?:SAMSUNG-)?SM-G981(?:[0BNUW]|U1)|SCG01'
|
12323 |
model: 'Galaxy S20 5G'
|
12324 |
+
- regex: '(?:SAMSUNG-)?SM-G780F'
|
12325 |
+
model: 'Galaxy S20 FE'
|
12326 |
+
- regex: '(?:SAMSUNG-)?SM-G988(?:[0BNUW]|U1)|SCG03'
|
12327 |
model: 'Galaxy S20 Ultra 5G'
|
12328 |
- regex: '(?:SAMSUNG-)?SM-G985F|SCG02'
|
12329 |
model: 'Galaxy S20+'
|
12345 |
model: 'Galaxy Avant'
|
12346 |
- regex: '(?:SAMSUNG-)?SM-A015[AFGM]'
|
12347 |
model: 'Galaxy A01'
|
12348 |
+
- regex: '(?:SAMSUNG-)?SM-A013M'
|
12349 |
+
model: 'Galaxy A01 Core'
|
12350 |
- regex: '(?:SAMSUNG-)?SM-A260[FG]'
|
12351 |
model: 'Galaxy A2 Core'
|
12352 |
- regex: '(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|[09FGHMY])'
|
12413 |
model: 'Galaxy A10s'
|
12414 |
- regex: '(?:SAMSUNG-)?SM-(?:S102DL|A102[NWU])'
|
12415 |
model: 'Galaxy A10e'
|
12416 |
+
- regex: '(?:SAMSUNG-)?SM-A115[FM]'
|
12417 |
model: 'Galaxy A11'
|
12418 |
- regex: '(?:SAMSUNG-)?SM-(?:A205(?:[FGSWU]|YN|U1)|S205DL)|SC-02M|SCV46'
|
12419 |
model: 'Galaxy A20'
|
12420 |
- regex: '(?:SAMSUNG-)?SM-A215U(?:[);/ ]|$)'
|
12421 |
model: 'Galaxy A21'
|
12422 |
+
- regex: '(?:SAMSUNG-)?SM-A217[FM](?:[);/ ]|$)'
|
12423 |
model: 'Galaxy A21s'
|
12424 |
- regex: '(?:SAMSUNG-)?SM-A202[FG]'
|
12425 |
model: 'Galaxy A20e'
|
12443 |
model: 'Galaxy A50s'
|
12444 |
- regex: '(?:SAMSUNG-)?SM-A507FN'
|
12445 |
model: 'Galaxy A50s'
|
12446 |
+
- regex: '(?:SAMSUNG-)?SM-A515[FU]'
|
12447 |
model: 'Galaxy A51'
|
12448 |
+
- regex: '(?:SAMSUNG-)?SCG07'
|
12449 |
+
model: 'Galaxy A51 5G'
|
12450 |
- regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|F|[W0X])'
|
12451 |
model: 'Galaxy A70'
|
12452 |
- regex: '(?:SAMSUNG-)?SM-A707[0F]'
|
12645 |
- regex: '(?:SAMSUNG-)?SM-(?:F900[0FU]|F907[BN])|SCV44'
|
12646 |
model: 'Galaxy Fold'
|
12647 |
device: 'phablet'
|
12648 |
+
- regex: '(?:SAMSUNG-)?SCG05'
|
12649 |
+
model: 'Galaxy Z Fold 2'
|
12650 |
+
device: 'phablet'
|
12651 |
- regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)'
|
12652 |
model: 'Galaxy Grand Neo'
|
12653 |
device: 'phablet'
|
12865 |
model: 'Element 9.7'
|
12866 |
- regex: '(?:SENCOR[ _])?ELEMENT10[ _]1'
|
12867 |
model: 'Element 10.1'
|
12868 |
+
- regex: '(?:SENCOR[ _])?(7Q105)(?:[);/ ]|$)'
|
12869 |
+
model: '$1'
|
12870 |
|
12871 |
- regex: '(?:SENCOR[ _])?ELEMENT[ _]?P([0-9]+)'
|
12872 |
model: 'Element P$1'
|
12899 |
- regex: 'Senwa[ _-]*([^ ;/)]+)(?:[);/ ]|$)'
|
12900 |
model: '$1'
|
12901 |
|
12902 |
+
# Sky or Sky Devices (skydevices.com)
|
12903 |
Sky:
|
12904 |
+
regex: '(?:SKY|Elite|Fuego)[_ ][3-7]\.[05](?:[A-Z]{1,2})?|Elite_5_5_Octa|Elite (?:M45|GO|M5Plus|T4)|Platinum[_ ](?:5.0M|M5|[ABC]4|[CG]55|[BDEFG]5|P9|X|UNO|VIEW2)'
|
12905 |
device: 'smartphone'
|
12906 |
models:
|
12907 |
+
- regex: 'Platinum_(?:5.0M|M5)'
|
12908 |
model: 'Platinum 5.0M'
|
12909 |
+
- regex: 'Platinum[_ ](P9) Pro(?:[);/ ]|$)'
|
12910 |
+
model: 'Platinum $1 Pro'
|
12911 |
+
- regex: 'Platinum[_ ]([ABC]4|[CG]55|[BDEFG]5|P9|X|UNO)(?:[);/ ]|$)'
|
12912 |
+
model: 'Platinum $1'
|
12913 |
+
- regex: 'Platinum[_ ]VIEW2(?:[);/ ]|$)'
|
12914 |
+
device: 'tablet'
|
12915 |
+
model: 'Platinum View2'
|
12916 |
- regex: 'Elite_5_5_Octa'
|
12917 |
model: 'Elite 5.5 Octa'
|
12918 |
+
- regex: 'Elite M5Plus'
|
12919 |
+
model: 'Elite M5 Plus'
|
12920 |
+
- regex: 'Elite (M45|Go|T4)'
|
12921 |
+
model: 'Elite $1'
|
12922 |
- regex: 'Elite[_ ]([3-7]\.[05](?:[A-Z]{1,2})?\+?)'
|
12923 |
model: 'Elite $1'
|
12924 |
- regex: 'Fuego[_ ]([3-7]\.[05](?:[A-Z]{1,2})?\+?)'
|
13006 |
|
13007 |
# STF Mobile
|
13008 |
STF Mobile:
|
13009 |
+
regex: '(?:Fractal|AERIAL PLUS|Origins Pro|BLOCK GO|BLOCK 3)(?:[);/ ]|$)'
|
13010 |
device: 'smartphone'
|
13011 |
models:
|
13012 |
- regex: 'Fractal'
|
13015 |
model: 'Origins Pro'
|
13016 |
- regex: 'AERIAL PLUS'
|
13017 |
model: 'Aerial Plus'
|
13018 |
+
- regex: 'BLOCK 3'
|
13019 |
+
model: 'Block 3'
|
13020 |
+
- regex: 'BLOCK GO'
|
13021 |
+
model: 'Block Go'
|
13022 |
|
13023 |
# STK
|
13024 |
STK:
|
13091 |
|
13092 |
# Thomson
|
13093 |
Thomson:
|
13094 |
+
regex: '(?:Primo(7|8)|QM73[45]-8G|QM734-2|QM736-8G\(HD\)|(?<!\.)8950|MID1002|5014G|TEO7RK|Delight TH201)(?:[);/ ]|$)|(?:Tlink|Every)[0-9]+'
|
13095 |
device: 'tablet'
|
13096 |
models:
|
13097 |
# already detected as manta device
|
13107 |
model: 'QM735-8G'
|
13108 |
- regex: 'QM736-8G\(HD\)'
|
13109 |
model: 'QM736-8G (HD)'
|
13110 |
+
- regex: '(?<!\.)8950(?:[);/ ]|$)'
|
13111 |
model: '3G 8950'
|
13112 |
+
- regex: 'TEO7RK(?:[);/ ]|$)'
|
13113 |
+
model: 'TEO7RK'
|
13114 |
|
13115 |
- regex: '5014G(?:[);/ ]|$)'
|
13116 |
device: 'smartphone'
|
13121 |
- regex: 'Every([0-9]+)'
|
13122 |
device: 'smartphone'
|
13123 |
model: 'Every$1'
|
13124 |
+
- regex: 'Delight TH201'
|
13125 |
+
device: 'smartphone'
|
13126 |
+
model: 'Delight TH201'
|
13127 |
+
|
13128 |
+
# Tanix
|
13129 |
+
Tanix:
|
13130 |
+
regex: 'TX5 MAX(?:[);/ ]|$)'
|
13131 |
+
device: 'tv'
|
13132 |
+
model: 'TX5 Max'
|
13133 |
|
13134 |
# pantech
|
13135 |
Pantech:
|
13136 |
+
regex: 'Pantech|P[GN]-|PT-[a-z0-9]{3,}|(?<!Winmax )TX[T]?[0-9]+|IM-[a-z0-9]+(?:[);/ ]|$)|ADR910L'
|
13137 |
device: 'smartphone'
|
13138 |
models:
|
13139 |
# explicit smartphone models
|
13167 |
- regex: 'MOMO([0-9][^);/]*)(?:[);/]|$)'
|
13168 |
model: 'MOMO $1'
|
13169 |
|
13170 |
+
# Plum (plum-mobile.com)
|
13171 |
Plum:
|
13172 |
+
regex: 'PLUM[ _]'
|
13173 |
device: 'smartphone'
|
13174 |
models:
|
13175 |
- regex: 'Z405'
|
13176 |
model: 'Gator 3'
|
13177 |
+
- regex: 'Z407'
|
13178 |
+
model: 'Axe 4'
|
13179 |
+
- regex: 'Z516'
|
13180 |
+
model: 'Compass'
|
13181 |
+
- regex: 'Z811'
|
13182 |
+
device: 'tablet'
|
13183 |
+
model: 'Optimax 11'
|
13184 |
+
- regex: 'Z709'
|
13185 |
+
device: 'tablet'
|
13186 |
+
model: 'Optimax 7'
|
13187 |
+
- regex: 'Z712'
|
13188 |
+
device: 'tablet'
|
13189 |
+
model: 'Optimax 12'
|
13190 |
|
13191 |
# Polaroid
|
13192 |
Polaroid:
|
13193 |
+
regex: 'Polaroid|(?:PMID|MIDC)[0-9a-z]+(?:[);/ ]|$)|MID(?:1014|0714)|PRO[VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z])|(?:P(?:400[56]|4526|500[56]|502[56]|504[67]|552[56])A|P902/A900|PSPC(?:505|550|[MZL]20A0|K21NA)|SIGMA 5|MIDS145PXE|MIDS747PX|MID4004JBL|MIDS185PR)(?:[);/ ]|$)'
|
13194 |
device: 'smartphone'
|
13195 |
models:
|
13196 |
# explicit smartphone models
|
13237 |
- regex: 'PRO([VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z]))'
|
13238 |
model: 'Pro$1'
|
13239 |
|
13240 |
+
- regex: 'MIDS185PR'
|
13241 |
+
model: 'Pure 10.1"'
|
13242 |
+
- regex: '(MID(?:1014|0714|S145PXE|S747PX|4004JBL))'
|
13243 |
model: '$1'
|
13244 |
device: 'tablet'
|
13245 |
+
|
13246 |
- regex: '((?:PMID|MIDC)[0-9a-z]+)(?:[);/ ]|$)'
|
13247 |
model: '$1'
|
13248 |
device: 'tablet'
|
13401 |
- regex: 'MobilePhone ([a-z0-9\-]+)'
|
13402 |
model: '$1'
|
13403 |
|
13404 |
+
# Qilive
|
13405 |
Qilive:
|
13406 |
regex: 'Qilive [0-9][^;/]*|Q(7S5[5]?IN4G|7T10INP|8T10IN|8S55IN4G2|8S[56]IN4G|10S5[37]IN4G|10S[56]IN4G|10S[56]IN4GR|9S5IN4G|6T7IN)'
|
13407 |
device: 'smartphone'
|
13448 |
|
13449 |
# QMobile
|
13450 |
QMobile:
|
13451 |
+
regex: 'QMobile|QTab|Q-Smart|Noir X1S|LUNA PRO|NICE S|JazzX JS(?:[27]|10)(?: PRO)?'
|
13452 |
device: 'smartphone'
|
13453 |
models:
|
13454 |
+
- regex: 'JazzX JS7 PRO'
|
13455 |
+
model: 'Jazz X JS7 Pro'
|
13456 |
+
- regex: 'JazzX JS(2|10)'
|
13457 |
+
model: 'Jazz X JS$1'
|
13458 |
- regex: 'QTab[ _-]([^;/]+) Build'
|
13459 |
model: '$1 Tab'
|
13460 |
device: 'tablet'
|
13587 |
|
13588 |
# Sharp (jp.sharp)
|
13589 |
Sharp:
|
13590 |
+
regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?(?:[);/ ]|$)|AQUOS|(?:SH-M0[1456789]|SH-M1[12346](?:-y)?|S[357]-SH|SH-[MZ](10|01)|SH-[CL]02|SH-RM(?:1[125]|02)|[34]04SH|401SH|[45]02SH|306SH|[36]05SH|70[1246]SH|80[138]SH|90[1678]SH|50[3679]SH|SHL2[25]|SHV4[0-8]|SHV3[1-9](?:[-_]u)?|FS80(?:1[08]|32|28|0[29])|TG-L900S|NP601SH|403SH|603SH|SHF3[34]|SHV4[035][-_]u|SW001SH|SHG0[12]|X4-SH|A002SH|SH-A01|DM-01J|SH-D01|A001SH|606SH|FS801[56]|d-41A)(?:[);/ ]|$)'
|
13591 |
device: 'smartphone'
|
13592 |
models:
|
13593 |
# explicit smartphone models
|
13599 |
model: 'Aquos Xx2'
|
13600 |
- regex: '[34]04SH(?:[);/ ]|$)'
|
13601 |
model: 'Aquos Xx'
|
13602 |
+
- regex: '606SH(?:[);/ ]|$)'
|
13603 |
+
model: 'Aquos ea'
|
13604 |
- regex: '507SH(?:[);/ ]|$)'
|
13605 |
model: 'Android One'
|
13606 |
- regex: 'S3-SH(?:[);/ ]|$)'
|
13617 |
model: 'Aquos Sense Lite'
|
13618 |
- regex: 'SH-M07(?:[);/ ]|$)'
|
13619 |
model: 'Aquos Sense Plus'
|
13620 |
+
- regex: 'SH-D01(?:[);/ ]|$)'
|
13621 |
+
model: 'Aquos D10'
|
13622 |
+
- regex: 'SH-M12(?:-y)?(?:[);/ ]|$)'
|
13623 |
model: 'Aquos S3 Dual SIM'
|
13624 |
- regex: '(?:SH-[MZ]10|801SH)(?:[);/ ]|$)'
|
13625 |
model: 'Aquos Zero'
|
13633 |
model: 'Aquos Phone Zeta'
|
13634 |
- regex: 'SH06D(?:[);/ ]|$)'
|
13635 |
model: 'Aquos Phone SH-06D'
|
13636 |
+
- regex: '(SHL2[25]|SH-M01)(?:[);/ ]|$)'
|
13637 |
+
model: 'Aquos Phone $1'
|
13638 |
- regex: 'SH-L02(?:[);/ ]|$)'
|
13639 |
model: 'Aquos L2'
|
13640 |
- regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)'
|
13641 |
model: 'Aquos R'
|
13642 |
- regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)'
|
13643 |
model: 'Aquos R'
|
13644 |
+
- regex: '(?:701SH|SHV41|SH-M06)(?:[);/ ]|$)'
|
13645 |
model: 'Aquos R Compact'
|
13646 |
- regex: '(?:SH-M09|SHV42|706SH|SH-03K)(?:[);/ ]|$)'
|
13647 |
model: 'Aquos R2'
|
13648 |
- regex: '803SH(?:[);/ ]|$)'
|
13649 |
model: 'Aquos R2 Compact'
|
13650 |
+
- regex: '(?:908SH|SHG01|SH-M14)(?:[);/ ]|$)'
|
13651 |
model: 'Aquos R5G'
|
13652 |
+
- regex: 'SH-M16(?:[);/ ]|$)'
|
13653 |
+
model: 'Aquos S4 Plus'
|
13654 |
- regex: 'SH-C02(?:[);/ ]|$)'
|
13655 |
model: 'Aquos V'
|
13656 |
+
- regex: '(SHF3[34])(?:[);/ ]|$)'
|
13657 |
+
model: 'Aquos K $1'
|
13658 |
- regex: '704SH(?:[);/ ]|$)'
|
13659 |
model: 'Simple Smartphone 4'
|
13660 |
- regex: '(?:SH-02J|SH-04G)(?:[);/ ]|$)'
|
13665 |
model: 'Aquos Crystal'
|
13666 |
- regex: '402SH(?:[);/ ]|$)'
|
13667 |
model: 'Aquos Crystal X'
|
13668 |
+
- regex: '403SH(?:[);/ ]|$)'
|
13669 |
+
model: 'Aquos Crystal 2'
|
13670 |
- regex: '509SH(?:[);/ ]|$)'
|
13671 |
model: 'Aquos 3'
|
13672 |
- regex: 'NP601SH(?:[);/ ]|$)'
|
13679 |
model: 'Aquos S Mini'
|
13680 |
- regex: '(?:FS8010|SH-M08|SHV43(?:-u)?|SH-01[KL])(?:[);/ ]|$)'
|
13681 |
model: 'Aquos S2'
|
13682 |
+
- regex: 'FS8016(?:[);/ ]|$)'
|
13683 |
+
model: 'Aquos S2 Plus'
|
13684 |
- regex: '(?:SHV46|SH-R?M11|901SH)(?:[);/ ]|$)'
|
13685 |
model: 'Aquos S3 Plus'
|
13686 |
- regex: '(?:SHV44|808SH|SH-04L|SH-03G)(?:[);/ ]|$)'
|
13687 |
model: 'Aquos R3'
|
13688 |
+
- regex: '(?:FS8032|FS8015|SH-02M|SHV45(?:-U)?)(?:[);/ ]|$)'
|
13689 |
model: 'Aquos S3'
|
13690 |
- regex: 'FS8018(?:[);/ ]|$)'
|
13691 |
model: 'Aquos S3 Mini'
|
13693 |
model: 'Aquos S3 Basic'
|
13694 |
- regex: 'SH-RM12(?:[);/ ]|$)'
|
13695 |
model: 'Aquos S3 Lite'
|
13696 |
+
- regex: 'SH-RM15(?:[);/ ]|$)'
|
13697 |
+
model: 'Aquos S4 Lite'
|
13698 |
- regex: 'SH-51A(?:[);/ ]|$)'
|
13699 |
model: 'Aquos R5G'
|
13700 |
- regex: 'SHV3[57](?:_u)?(?:[);/ ]|$)'
|
13719 |
model: 'Aquos 401SH'
|
13720 |
- regex: 'DM-01J'
|
13721 |
model: 'Disney Mobile'
|
13722 |
+
- regex: 'A001SH'
|
13723 |
+
model: 'Simple Sumaho 5' # (Simple Smartphone 5)
|
13724 |
|
13725 |
# explicit tablet models
|
13726 |
- regex: 'SH-08E(?:[);/ ]|$)'
|
13727 |
device: 'tablet'
|
13728 |
model: 'Sharp Aquos Pad'
|
13729 |
+
- regex: 'd-41A(?:[);/ ]|$)'
|
13730 |
+
device: 'tablet'
|
13731 |
+
model: 'dtab d-41A'
|
13732 |
|
13733 |
- regex: '(LC-(?:[0-9]{2})[a-z0-9]+)(?:[);/ ]|$)'
|
13734 |
device: 'tv'
|
13779 |
- regex: 'N(9[5678]00|8800|9977)(?:[);/ ]|$)'
|
13780 |
model: 'N$1'
|
13781 |
|
13782 |
+
# Starmobile (starmobile.ph)
|
13783 |
+
Starmobile:
|
13784 |
+
regex: '(?:Starmobile (?:Play (?:Neo|Spark|GO))|UP[_ ](?:Groove|Prime|Selfie|Xtreme|XL))(?:[);/ ]|$)'
|
13785 |
+
device: 'smartphone'
|
13786 |
+
models:
|
13787 |
+
- regex: 'Starmobile PLAY GO(?:[);/ ]|$)'
|
13788 |
+
model: 'Play Go'
|
13789 |
+
- regex: 'Starmobile (Play (?:Neo|Spark))(?:[);/ ]|$)'
|
13790 |
+
model: '$1'
|
13791 |
+
- regex: 'UP[_ ](Groove|Prime|Selfie|Xtreme|XL)(?:[);/ ]|$)'
|
13792 |
+
model: 'UP $1'
|
13793 |
+
|
13794 |
# Kindle
|
13795 |
Amazon:
|
13796 |
regex: 'KF(?:OT|ONWI|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|KAWI|MAWI|MEWI|MUWI|SUWI)(?:[);/ ]|$)|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[ABMNRST]|SD4930UR|AEO(BC|KN)(?:[);/ ]|$)'
|
13885 |
- regex: 'SYMPHONY[ \_]([a-z0-9]+)'
|
13886 |
model: '$1'
|
13887 |
|
13888 |
+
# Helio
|
13889 |
+
Helio:
|
13890 |
+
regex: 'Helio (S60|S5)(?:[);/ ]|$)'
|
13891 |
+
device: 'smartphone'
|
13892 |
+
model: '$1'
|
13893 |
+
|
13894 |
# Syrox
|
13895 |
Syrox:
|
13896 |
regex: '(SYX-(?:T70[04]|T10[12]))(?:[);/ ]|$)'
|
13933 |
- regex: 'Ignis ([89])'
|
13934 |
model: 'Ignis $1'
|
13935 |
|
13936 |
+
# Teclast (teclast.com)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13937 |
Teclast:
|
13938 |
+
regex: 'Teclast|TLA002|TLA016|X98 Air III|M20_4G|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|(?:T30|P80X|P20HD)_(?:ROW|EEA)|T10\(E3C6\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)'
|
13939 |
device: 'tablet'
|
13940 |
models:
|
13941 |
- regex: 'Tbook[_ -]([^;/]+) Build'
|
13950 |
model: 'P10S'
|
13951 |
- regex: 'P20HD_(?:ROW|EEA)'
|
13952 |
model: 'P20HD'
|
13953 |
+
- regex: 'M20_4G'
|
13954 |
+
model: 'M20 4G'
|
13955 |
+
- regex: 'TLA002'
|
13956 |
+
model: 'M30 4G'
|
13957 |
+
- regex: 'TLA016'
|
13958 |
+
model: 'M16'
|
13959 |
- regex: '98\(M1E[45789]\)|98\(M3E3\)'
|
13960 |
model: 'TPad 98 10.1" 4G'
|
13961 |
- regex: 'X80 Power\(B2N4\)(?:[);/ ]|$)'
|
14013 |
models:
|
14014 |
- regex: 'S813G'
|
14015 |
model: 'S813G'
|
14016 |
+
- regex: 'TechPad10QC'
|
14017 |
+
model: '10QC'
|
14018 |
+
- regex: 'TechPad_10xx'
|
14019 |
+
model: '10XX'
|
14020 |
+
- regex: 'TechPad703'
|
14021 |
+
model: '703'
|
14022 |
+
- regex: 'TechPad[_ ](10Y|9x|i700)'
|
14023 |
+
model: '$1'
|
14024 |
+
- regex: 'TechPad[_ ]3Gx'
|
14025 |
+
model: '3Gx'
|
14026 |
- regex: 'Dual C1081HD'
|
14027 |
model: 'XTAB C1081HD'
|
14028 |
- regex: 'XTAB[ _-]([^/;]+) Build'
|
14029 |
model: 'XTAB $1'
|
14030 |
+
- regex: 'Tech ?pad[ _-]([^/;)]+)(?: Build|[;)])'
|
14031 |
model: '$1'
|
14032 |
device: 'smartphone'
|
14033 |
|
14034 |
# Tesco
|
14035 |
Tesco:
|
14036 |
+
regex: 'Hudl (?:[^/;]+)(?: Build|[;)])|W032i-C3(?:[);/ ]|$)'
|
14037 |
device: 'tablet'
|
14038 |
models:
|
14039 |
+
- regex: 'Hudl ([^/;]+)(?: Build|[;)])'
|
14040 |
model: 'Hudl $1'
|
14041 |
- regex: 'W032i-C3(?:[);/ ]|$)'
|
14042 |
model: 'Op3n Dott'
|
14202 |
|
14203 |
# Telenor
|
14204 |
Telenor:
|
14205 |
+
regex: '(?<!FBCR/)Telenor|Infinity E5'
|
14206 |
device: 'smartphone'
|
14207 |
models:
|
14208 |
+
- regex: 'Telenor[ _]([^;/]+)(?: Build|[;)])'
|
|
|
|
|
14209 |
model: '$1'
|
14210 |
+
- regex: 'Infinity E5'
|
14211 |
+
model: 'Infinity E5'
|
14212 |
|
14213 |
# Telit
|
14214 |
Telit:
|
14422 |
|
14423 |
# Ulefone
|
14424 |
Ulefone:
|
14425 |
+
regex: 'Ulefone|Gemini Pro|Power_[356]|S10_Pro|(?:Armor(?:(?:[ _])(?:[2367]|2S|X[236]|6[SE]|3WT|3W|X))?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?)(?:[);/ ]|$)'
|
14426 |
device: 'smartphone'
|
14427 |
models:
|
14428 |
- regex: 'S10_Pro'
|
14447 |
model: 'Armor X$1'
|
14448 |
- regex: 'Armor[ _]6S(?:[);/ ]|$)'
|
14449 |
model: 'Armor 6S'
|
14450 |
+
- regex: 'Armor[ _]([679])E(?:[);/ ]|$)'
|
14451 |
+
model: 'Armor $1E'
|
14452 |
+
- regex: 'Armor[ _]X([57]) Pro(?:[);/ ]|$)'
|
14453 |
+
model: 'Armor X$1 Pro'
|
14454 |
+
- regex: 'Armor[ _]X([578])(?:[);/ ]|$)'
|
14455 |
+
model: 'Armor X$1'
|
14456 |
+
- regex: 'Armor[ _]([25])S(?:[);/ ]|$)'
|
14457 |
+
model: 'Armor $1S'
|
14458 |
- regex: 'Armor[ _]X(?:[);/ ]|$)'
|
14459 |
model: 'Armor X'
|
14460 |
- regex: 'Armor[ _]3W(?:[);/ ]|$)'
|
14461 |
model: 'Armor 3W'
|
14462 |
- regex: 'Armor[ _]3WT(?:[);/ ]|$)'
|
14463 |
model: 'Armor 3WT'
|
14464 |
+
- regex: 'Armor[ _]([236789])(?:[);/ ]|$)'
|
14465 |
model: 'Armor $1'
|
14466 |
- regex: 'Armor(?:[);/ ]|$)'
|
14467 |
model: 'Armor'
|
14476 |
- regex: 'Ulefone[ _-]?([^;/)]+)(?:[;/)]|$)'
|
14477 |
model: '$1'
|
14478 |
|
14479 |
+
# UMIDIGI or UMI
|
14480 |
UMIDIGI:
|
14481 |
+
regex: 'UMI(?:DIGI)?[ _]|(?:A5_Pro|ROME[_ ]X|BISON|hammer_S)(?:[;/) ]|$)'
|
14482 |
device: 'smartphone'
|
14483 |
models:
|
14484 |
- regex: 'A5_Pro'
|
14489 |
model: 'Touch'
|
14490 |
- regex: 'ROME[_ ]X'
|
14491 |
model: 'Rome X'
|
14492 |
+
- regex: 'BISON'
|
14493 |
+
model: 'Bison'
|
14494 |
+
- regex: 'hammer_S'
|
14495 |
+
model: 'Hammer S'
|
14496 |
- regex: 'UMI_(London|Diamond(?:_X)?)'
|
14497 |
model: '$1'
|
14498 |
+
- regex: 'UMI(?:DIGI)?[ _]([^/;)]+)(?: Build|[;)])'
|
14499 |
model: '$1'
|
14500 |
|
14501 |
# Uniscope
|
14598 |
|
14599 |
# VK Mobile
|
14600 |
VK Mobile:
|
14601 |
+
regex: 'VK-VK([79]00)(?:[);/ ]|$)'
|
14602 |
device: 'feature phone'
|
14603 |
+
model: 'VK$1'
|
14604 |
|
14605 |
# Vernee
|
14606 |
Vernee:
|
14678 |
|
14679 |
# Vestel (vestel.com)
|
14680 |
Vestel:
|
14681 |
+
regex: 'Vestel[ _]|Venus[ _](GO|E[2-5]|V[1-9]|Z[1-9]0)|V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual'
|
14682 |
device: 'smartphone'
|
14683 |
models:
|
14684 |
- regex: 'VT97PRO'
|
14714 |
model: 'Venus Z$1'
|
14715 |
- regex: 'Venus[ _]GO'
|
14716 |
model: 'Venus Go'
|
14717 |
+
- regex: 'Venus E2 Plus Dual'
|
14718 |
+
model: 'Venus E2 Plus Dual'
|
14719 |
+
- regex: 'Venus[ _]E2 Plus'
|
14720 |
+
model: 'Venus E2 Plus'
|
14721 |
+
- regex: 'Venus[ _]E([345])'
|
14722 |
model: 'Venus E$1'
|
14723 |
- regex: 'Vestel_5000_Dual'
|
14724 |
model: '5000 Dual'
|
14850 |
|
14851 |
# Vonino
|
14852 |
Vonino:
|
14853 |
+
regex: 'Vonino|Epic (?:E8|P7)|Gyga[ _](?:X|S|QS|XS)|Jax[ _](?:QS|[SXQN]|Mini)|Magnet[ _]M[19]|Navo_QS|Onyx_(QS|Z)|Orin_QS|Pluri[ _](?:[BCMQ]7|[CQM]8)|Sirius_QS|Volt[ _][XS]|Xavy_(T7|L8)|Xylo[ _][XSPQ]|Zun[ _]X[OS]?|JAX_N'
|
14854 |
device: 'smartphone'
|
14855 |
models:
|
14856 |
- regex: 'Zun[ _]XO'
|
14887 |
- regex: 'Pluri[ _](B|C|M|Q)7'
|
14888 |
model: 'Pluri $17'
|
14889 |
device: 'tablet'
|
14890 |
+
- regex: 'Pluri[ _]([CQM])8'
|
14891 |
model: 'Pluri $18'
|
14892 |
device: 'tablet'
|
14893 |
- regex: 'Magnet[ _]M([19])'
|
14940 |
|
14941 |
# Vulcan
|
14942 |
Vulcan:
|
14943 |
+
regex: '(?:VP5004A|HT0704W08|VS5513|VS4011|VR6031)(?:[);/ ]|$)'
|
14944 |
device: 'smartphone'
|
14945 |
models:
|
14946 |
+
- regex: '(VP5004A|VR6031)(?:[);/ ]|$)'
|
14947 |
+
model: '$1'
|
14948 |
+
- regex: 'VS5513(?:[);/ ]|$)'
|
14949 |
+
model: 'Tempo S13'
|
14950 |
+
- regex: 'VS4011(?:[);/ ]|$)'
|
14951 |
+
model: 'Tempo S11'
|
14952 |
+
- regex: 'HT0704W08' # Hyundai
|
14953 |
+
model: 'Koral 7W4'
|
14954 |
+
device: 'tablet'
|
14955 |
|
14956 |
# Walton
|
14957 |
Walton:
|
15005 |
|
15006 |
# Wiko (wikomobile.com)
|
15007 |
Wiko:
|
15008 |
+
regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa(?!nna)|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 Go|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V8[30]0|P[36]11|K420|K510S?|K130)-(?:TMV|TIM|TVM|EEA|SUN|SWI|OPE|BYT|DU|TH)|WIM Lite|W-K360-TV|W-V600|W-K200|W-U300|U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE'
|
15009 |
device: 'smartphone'
|
15010 |
models:
|
15011 |
- regex: '(?:WIKO-)?Cink Peax 2'
|
15078 |
model: 'Kite'
|
15079 |
- regex: 'W_K400'
|
15080 |
model: 'Lenny 5'
|
15081 |
+
- regex: 'C210AE(?:[);/ ]|$)'
|
15082 |
+
model: 'Life'
|
15083 |
- regex: 'U307AS(?:[);/ ]|$)'
|
15084 |
model: 'Life 2'
|
15085 |
- regex: '(?:WIKO-)?Lenny[ -_]?3 Max'
|
15274 |
|
15275 |
# X-View
|
15276 |
X-View:
|
15277 |
+
regex: 'ZEN_U5\+|AMBER_KIDS|Proton_Amber_HD|PROTON_JADE_2_PRO'
|
15278 |
device: 'smartphone'
|
15279 |
models:
|
15280 |
+
- regex: 'ZEN_U5\+'
|
15281 |
model: 'ZEN U5+'
|
15282 |
+
- regex: 'AMBER_KIDS'
|
15283 |
+
device: 'tablet'
|
15284 |
+
model: 'Amber Kids'
|
15285 |
+
- regex: 'Proton_Amber_HD'
|
15286 |
+
device: 'tablet'
|
15287 |
+
model: 'Proton Amber HD'
|
15288 |
+
- regex: 'PROTON_JADE_2_PRO'
|
15289 |
+
device: 'tablet'
|
15290 |
+
model: 'Proton Jade 2 Pro'
|
15291 |
|
15292 |
# POCO (sub brand Xiaomi)
|
15293 |
POCO:
|
15303 |
|
15304 |
# Xiaomi
|
15305 |
Xiaomi:
|
15306 |
+
regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|MI_NOTE_Pro|POCOPHONE|(?:SHARK )?(KLE|MBU)-[AH]0|SKR-[AH]0|SKW-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(MSSP[01]|AXSO0)|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|MiTV4A|M2006J10C|M2006C3(?:L[IGC]|LVG|MN?G)|M2007J1SC|M2002J9[EG]|HM2014819|WT88047|M2004J(?:7[AB]|19)C|M2006C3MII|M2003J15SC|M2007J3S[CYG]|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01'
|
15307 |
device: 'smartphone'
|
15308 |
models:
|
15309 |
# specific smartphone models
|
15409 |
model: 'Redmi K20 Pro'
|
15410 |
- regex: 'Redmi K30 5G(?:[);/ ]|$)'
|
15411 |
model: 'Redmi K30 5G'
|
15412 |
+
- regex: 'M2006J10C(?:[);/ ]|$)'
|
15413 |
+
model: 'Redmi K30 Ultra'
|
15414 |
|
15415 |
- regex: 'MI PAD 4 PLUS(?:[);/ ]|$)'
|
15416 |
model: 'Mi Pad 4 Plus'
|
15773 |
|
15774 |
# Vivax (www.vivax.com)
|
15775 |
Vivax:
|
15776 |
+
regex: 'VIVAX|(?:Fly5[_ ]Lite|Fun[_ ]S500|Point_(?:X2|X501)|PRO3|32LE77SM|40LE77SM)(?:[);/ ]|$)'
|
15777 |
device: 'smartphone'
|
15778 |
models:
|
15779 |
- regex: 'Fly5[_ ]Lite(?:[);/ ]|$)'
|
15784 |
model: 'Fun S500'
|
15785 |
- regex: 'VIVAX[ _]Fly3(?:[);/ ]|$)'
|
15786 |
model: 'Fly 3'
|
15787 |
+
- regex: 'VIVAX[ _]Fly[ _]V1(?:[);/ ]|$)'
|
15788 |
+
model: 'Fly V1'
|
15789 |
+
- regex: '(?:VIVAX )?(Point[ _](?:X551|X501))(?:[);/ ]|$)'
|
15790 |
model: '$1'
|
15791 |
- regex: 'SMART Point X5010(?:[);/ ]|$)'
|
15792 |
model: 'Smart Point X5010'
|
15795 |
- regex: 'VIVAX TABLET TPC 802 3G(?:[);/ ]|$)'
|
15796 |
model: 'TPC-802 3G'
|
15797 |
|
15798 |
+
- regex: '(32LE77SM|40LE77SM)'
|
15799 |
+
device: 'tv'
|
15800 |
+
model: '$1'
|
15801 |
+
|
15802 |
# MLS
|
15803 |
MLS:
|
15804 |
regex: 'IQ(?:0705|L550|1010w?|1012N?|1019N|1025|1380|1401|1436|1452a|1453|1470|1502a|1511|1552|1553|1568|1570|1805N|1806|1808|1810B_M|1832|1850|1890|5017|9610|181011N|E[12]00|EL41|G550|GW516|L30|L5[01]|M801|M1001|N700|P50|R300|S300|S1001|W503|W511T|W553N?|W60[38]|W626|M960|D700|9013_4N)(?:[);/ ]|$)'
|
16263 |
|
16264 |
# ZTE
|
16265 |
ZTE:
|
16266 |
+
regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:V0820|L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580|V Ultra|Q Lux)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|5[48]9J|551J|563J|569[HJ]|573J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|907J)|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|5031O|559DL|6621O|667T|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A510|A[357] 2019-T|A6 MAX|A0622|X9)|Z3153V|Nubia Z(?:9|11)|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|dandelion|901ZT|A001ZT|Z-01K|UZTE V808|ZR01|ZTG01|K83CA)(?:[);/ ]|$)'
|
16267 |
device: 'smartphone'
|
16268 |
models:
|
16269 |
# explicit smartphone models
|
16273 |
model: 'Libero 3'
|
16274 |
- regex: '901ZT(?:[);/ ]|$)'
|
16275 |
model: 'Libero S10'
|
16276 |
+
- regex: 'ZR01(?:[);/ ]|$)'
|
16277 |
+
model: 'Rakuten Big'
|
16278 |
+
- regex: 'ZTG01(?:[);/ ]|$)'
|
16279 |
+
model: 'A1'
|
16280 |
- regex: 'A7020(?:[);/ ]|$)'
|
16281 |
model: 'Blade A7s (2020)'
|
16282 |
- regex: 'ZTE 2050(?:[);/ ]|$)'
|
16336 |
- regex: 'N9810(?:[);/ ]|$)'
|
16337 |
model: 'Vital'
|
16338 |
- regex: 'NX40[X2](?:[);/ ]|$)'
|
16339 |
+
model: 'Nubia Z5 Mini'
|
16340 |
- regex: 'NX(403[AE]|406E|404H)(?:[);/ ]|$)'
|
16341 |
model: 'Nubia Z5S Mini'
|
16342 |
- regex: 'NX503A(?:[);/ ]|$)'
|
16344 |
- regex: 'NX506J(?:[);/ ]|$)'
|
16345 |
model: 'Nubia Z7'
|
16346 |
- regex: 'NX507J(?:[);/ ]|$)'
|
16347 |
+
model: 'Nubia Z7 Mini'
|
16348 |
- regex: 'NX505J(?:[);/ ]|$)'
|
16349 |
+
model: 'Nubia Z7 Max'
|
16350 |
- regex: 'NX508J(?:[);/ ]|$)'
|
16351 |
model: 'Nubia Z9'
|
16352 |
- regex: '(NX5[12]1J|Nubia Z9 mini)(?:[);/ ]|$)'
|
16353 |
+
model: 'Nubia Z9 Mini'
|
16354 |
- regex: '(NX510J|Nubia Z9 Max)(?:[);/ ]|$)'
|
16355 |
+
model: 'Nubia Z9 Max'
|
16356 |
- regex: 'NX512J(?:[);/ ]|$)'
|
16357 |
+
model: 'Nubia Z9 Max Dual'
|
16358 |
- regex: 'NX531J(?:[);/ ]|$)'
|
16359 |
model: 'Nubia Z11'
|
16360 |
- regex: 'NX523J_V1'
|
16361 |
model: 'Nubia Z11 Max'
|
|
|
|
|
16362 |
- regex: '(?:NX549J|Nubia Z11 mini S)(?:[);/ ]|$)'
|
16363 |
+
model: 'Nubia Z11 Mini S'
|
16364 |
+
- regex: '(?:NX529J|Nubia Z11 mini)(?:[);/ ]|$)'
|
16365 |
+
model: 'Nubia Z11 Mini'
|
16366 |
- regex: 'NX606J(?:[);/ ]|$)'
|
16367 |
model: 'Nubia Z18'
|
16368 |
- regex: 'NX616J(?:[);/ ]|$)'
|
16369 |
model: 'Nubia Z18S'
|
16370 |
- regex: 'NX611J(?:[);/ ]|$)'
|
16371 |
+
model: 'Nubia Z18 Mini'
|
16372 |
- regex: 'NX551J(?:[);/ ]|$)'
|
16373 |
model: 'Nubia M2'
|
16374 |
- regex: 'NX563J(?:[);/ ]|$)'
|
16479 |
model: 'Blade L8'
|
16480 |
- regex: 'Blade A3 2019-T(?:[);/ ]|$)'
|
16481 |
model: 'Blade A3 (2019)'
|
16482 |
+
- regex: 'Blade A7 2019-T(?:[);/ ]|$)'
|
16483 |
+
model: 'Blade A7 (2019)'
|
16484 |
+
- regex: 'Blade A7 2020(?:[);/ ]|$)'
|
16485 |
+
model: 'Blade A7 (2020)'
|
16486 |
- regex: 'Blade A5 2019-T(?:[);/ ]|$)'
|
16487 |
model: 'Blade A5 (2019)'
|
16488 |
- regex: 'BLADE A0622(?:[);/ ]|$)'
|
16517 |
model: 'Blade V8 SE'
|
16518 |
- regex: 'Blade V9 Vita(?:[);/ ]|$)'
|
16519 |
model: 'Blade V9 Vita'
|
16520 |
+
- regex: 'Blade V([89])(?:[);/ ]|$)'
|
16521 |
+
model: 'Blade V$1'
|
16522 |
- regex: 'Blade V10 Vita(?:[);/ ]|$)'
|
16523 |
model: 'Blade V10 Vita'
|
16524 |
- regex: 'BLADE V0820(?:[);/ ]|$)'
|
16660 |
- regex: 'Z6621O(?:[);/ ]|$)'
|
16661 |
model: 'Optus X Vista'
|
16662 |
|
16663 |
+
# explicit tablet models
|
16664 |
+
- regex: 'K83CA(?:[);/ ]|$)'
|
16665 |
+
device: 'tablet'
|
16666 |
+
model: 'Grand X View 3'
|
16667 |
+
|
16668 |
- regex: 'AxonPhone ([^;/]+) Build'
|
16669 |
model: 'AxonPhone $1'
|
16670 |
- regex: '([a-z0-9]+)_USA_Cricket'
|
16680 |
model: '$1'
|
16681 |
|
16682 |
Zuum:
|
16683 |
+
regex: 'Zuum[ _-]|(?:COVET|MAGNO|ONIX S|STEDI|STELLAR Z|GRAVITY Z|AURA X)(?:[);/ ]|$)'
|
16684 |
device: 'smartphone'
|
16685 |
models:
|
16686 |
- regex: 'COVET'
|
16693 |
model: 'Stedi'
|
16694 |
- regex: 'STELLAR Z'
|
16695 |
model: 'Stellar Z'
|
16696 |
+
- regex: 'GRAVITY Z'
|
16697 |
+
model: 'Gravity Z'
|
16698 |
+
- regex: 'AURA X'
|
16699 |
+
model: 'Aura X'
|
16700 |
- regex: 'Zuum[ _-]([^;/]+) Build'
|
16701 |
model: '$1'
|
16702 |
- regex: 'Zuum[ _-]?([^;/)]+)(?:[);/ ]|$)'
|
16796 |
model: '2 Lite (2019)'
|
16797 |
- regex: 'INOI 2 2019'
|
16798 |
model: '2 (2019)'
|
16799 |
+
- regex: 'INOI 7 2020'
|
16800 |
+
model: '7 (2020)'
|
16801 |
- regex: 'INOI[_ ]([^;/]+)(?: Build|[;)])'
|
16802 |
model: '$1'
|
16803 |
|
16835 |
|
16836 |
# Savio
|
16837 |
Savio:
|
16838 |
+
regex: ' (TB-PO1|TB-B01)(?:[);/ ]|$)'
|
16839 |
device: 'tv'
|
16840 |
+
model: '$1'
|
|
|
|
|
16841 |
|
16842 |
# Simbans
|
16843 |
Simbans:
|
16865 |
|
16866 |
# X-TIGI
|
16867 |
X-TIGI:
|
16868 |
+
regex: 'X[-_]TIGI|Hope7[_ ]Mate|Photo_P15_Lite'
|
16869 |
device: 'smartphone'
|
16870 |
models:
|
16871 |
- regex: 'X-TIGI_JOY10_PRO'
|
16883 |
model: 'V19'
|
16884 |
- regex: 'X-TIGI[_ ]Photo[_ ]P11'
|
16885 |
model: 'Photo P11'
|
16886 |
+
- regex: 'Photo_P15_Lite'
|
16887 |
+
model: 'Photo P15 Lite'
|
16888 |
- regex: 'X[-_]TIGI[ _-]([^/;)]+) Build'
|
16889 |
model: '$1'
|
16890 |
|
16941 |
|
16942 |
# True
|
16943 |
'True':
|
16944 |
+
regex: 'SMART[ _](MAX 4.0 PLUS|4G[ _](?:GEN C [45].[05]|Champion|Speedy 5.0 Plus|Speedy[_ ]5inch|P1))'
|
16945 |
device: 'smartphone'
|
16946 |
models:
|
16947 |
- regex: 'SMART MAX 4.0 PLUS'
|
16952 |
model: 'Smart 4G Speedy 5.0 Plus'
|
16953 |
- regex: 'SMART[ _]4G[_ ]Speedy[_ ]5inch'
|
16954 |
model: 'Smart 4G Speedy 5'
|
16955 |
+
- regex: 'SMART[ _]4G[_ ]Champion'
|
16956 |
+
model: 'Smart 4G Champion'
|
16957 |
+
- regex: 'SMART[ _]4G[_ ]P1 Prime'
|
16958 |
+
model: 'Smart 4G P1 Prime'
|
16959 |
+
- regex: 'SMART[ _]4G[_ ]P1'
|
16960 |
+
model: 'Smart 4G P1'
|
16961 |
|
16962 |
Yandex:
|
16963 |
regex: '(YNDX-?000SB)(?:[);/ ]|$)'
|
16992 |
|
16993 |
# Highscreen
|
16994 |
Highscreen:
|
16995 |
+
regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ](?:Power|F)|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ matrixstyle _]?(?:Pro|Evo|Max|Max(?:Lite|2))|PowerFour|BOOST II(?:se)?|FestXL|Fest-Pro|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse|Hercules)(?:[);/ ]|$)'
|
16996 |
device: 'smartphone'
|
16997 |
models:
|
16998 |
- regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS])(?:[);/ ]|$)'
|
17015 |
model: 'Power Four'
|
17016 |
- regex: 'Pure[_ ]Power(?:[);/ ]|$)'
|
17017 |
model: 'Pure Power'
|
17018 |
+
- regex: 'Pure[ _]F(?:[);/ ]|$)'
|
17019 |
+
model: 'Pure F'
|
17020 |
- regex: 'Razar_Pro(?:[);/ ]|$)'
|
17021 |
model: 'Razar Pro'
|
17022 |
- regex: 'Easy[_ ]([SLF]|XL)[_ ]Pro(?:[);/ ]|$)'
|
17045 |
model: 'WinWin'
|
17046 |
- regex: 'Expanse(?:[);/ ]|$)'
|
17047 |
model: 'Expanse'
|
17048 |
+
- regex: 'Hercules(?:[);/ ]|$)'
|
17049 |
+
model: 'Hercules'
|
17050 |
|
17051 |
# CVTE
|
17052 |
CVTE:
|
17123 |
|
17124 |
# Chuwi
|
17125 |
Chuwi:
|
17126 |
+
regex: '(?:CW-(Hi8-super|Hi12|V99|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiPad X|HiBox-hero|HiBook(?: pro)?|Hi[89] ?(?:Air|Pro))(?:[);/ ]|$)'
|
17127 |
device: 'tablet'
|
17128 |
models:
|
17129 |
- regex: '(CW-Hi8-super)(?:[);/ ]|$)'
|
17140 |
model: '$1 Pro'
|
17141 |
- regex: 'HiBook pro(?:[);/ ]|$)'
|
17142 |
model: 'HiBook Pro'
|
17143 |
+
- regex: 'HiBook(?:[);/ ]|$)'
|
17144 |
+
model: 'HiBook'
|
17145 |
+
- regex: 'HiPad X(?:[);/ ]|$)'
|
17146 |
+
model: 'HiPad X'
|
17147 |
+
- regex: 'Hi([89]) ?Air(?:[);/ ]|$)'
|
17148 |
+
model: 'Hi$1 Air'
|
17149 |
- regex: 'Hi8 pro(?:[);/ ]|$)'
|
17150 |
model: 'Hi8 Pro'
|
17151 |
|
17220 |
- regex: 'VMP-011-81'
|
17221 |
model: '011'
|
17222 |
|
17223 |
+
# Viumee (viumee.com)
|
17224 |
+
Viumee:
|
17225 |
+
regex: 'SMART[_ ](EV[56])(?:[);/ ]|$)'
|
17226 |
+
device: 'smartphone'
|
17227 |
+
model: 'Smart $1'
|
17228 |
+
|
17229 |
# Nuvo
|
17230 |
Nuvo:
|
17231 |
regex: 'Nuvo[_ ](NS35|Blue ND40|Green[_ ]ND[_ ]45)(?:[);/ ]|$)'
|
17346 |
|
17347 |
# Kivi
|
17348 |
Kivi:
|
17349 |
+
regex: '(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55U600G[RU]|65UP50GU|55U[PC]50G[RU]|50U600G[RU]|50UX10S|55UR50G[RU]|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|55UC30G|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G)(?:_-Ver0[0-9])?(?:[);/ ]|$)'
|
17350 |
device: 'tv'
|
17351 |
models:
|
17352 |
+
- regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55U600G[RU]|65UP50GU|55U[PC]50G[RU]|50UX10S|50U600G[RU]|55UR50G[RU]|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G)(?:[);/ ]|$)'
|
17353 |
model: '$1'
|
17354 |
- regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)'
|
17355 |
model: '$1 v$2'
|
17372 |
- regex: 'KJ-YUBI(?:[);/ ]|$)'
|
17373 |
model: 'Yubi 3G'
|
17374 |
|
17375 |
+
# Kaiomy
|
17376 |
Kaiomy:
|
17377 |
regex: 'KaiCloud[ ]?(7[48]4|942)(?:[);/ ]|$)'
|
17378 |
device: 'tablet'
|
17386 |
|
17387 |
# Vsun
|
17388 |
Vsun:
|
17389 |
+
regex: '(?:VSUN (?:ILLUSION|RACE|V9)|MARS TOUCH|SATURN SELFIE)(?:[);/ ]|$)'
|
17390 |
device: 'smartphone'
|
17391 |
models:
|
17392 |
- regex: 'ILLUSION(?:[);/ ]|$)'
|
17393 |
model: 'Illusion'
|
17394 |
- regex: 'MARS TOUCH(?:[);/ ]|$)'
|
17395 |
model: 'Mars Touch'
|
17396 |
+
- regex: 'SATURN SELFIE(?:[);/ ]|$)'
|
17397 |
+
model: 'Saturn Selfie'
|
17398 |
- regex: 'RACE(?:[);/ ]|$)'
|
17399 |
model: 'Race'
|
17400 |
- regex: '(V9)(?:[);/ ]|$)'
|
17486 |
|
17487 |
# iVA
|
17488 |
iVA:
|
17489 |
+
regex: '(LAMCY (?:L3[05]0|C100|L400)|IVA S6)(?:[);/ ]|$)'
|
17490 |
device: 'smartphone'
|
17491 |
models:
|
17492 |
+
- regex: 'LAMCY (L3[05]0|C100|L400)(?:[);/ ]|$)'
|
17493 |
+
model: 'Lamcy $1'
|
17494 |
- regex: 'IVA S6(?:[);/ ]|$)'
|
17495 |
model: 'S6'
|
17496 |
|
17534 |
|
17535 |
# Voyo
|
17536 |
Voyo:
|
17537 |
+
regex: '(?:VOYO[_ ](A15)|i8-Max)(?:[);/ ]|$)'
|
17538 |
device: 'tablet'
|
17539 |
+
models:
|
17540 |
+
- regex: 'i8-Max(?:[);/ ]|$)'
|
17541 |
+
model: 'i8 Max'
|
17542 |
+
- regex: 'VOYO[_ ](A15)(?:[);/ ]|$)'
|
17543 |
+
model: '$1'
|
17544 |
|
17545 |
# Ryte (Ryte Mobile)
|
17546 |
Ryte:
|
17566 |
|
17567 |
# Vorke
|
17568 |
Vorke:
|
17569 |
+
regex: 'VORKE (Z[157]|Z6(?: Plus)?)(?:[);/ ]|$)'
|
17570 |
device: 'tv'
|
17571 |
model: '$1'
|
17572 |
|
17584 |
|
17585 |
# ONN
|
17586 |
ONN:
|
17587 |
+
regex: '(ONA19TB00[327]|10000520[6-9])(?:[);/ ]|$)'
|
17588 |
device: 'tablet'
|
17589 |
model: '$1'
|
17590 |
|
17632 |
|
17633 |
# PocketBook
|
17634 |
PocketBook:
|
17635 |
+
regex: 'PocketBook[ _/]'
|
17636 |
device: 'tablet'
|
17637 |
+
models:
|
17638 |
+
- regex: 'PocketBook SURFpad 3 \(([\d]+).([\d]+)["]?\)(?:[);/ ]|$)'
|
17639 |
+
model: 'Surfpad 3 $1.$2"'
|
17640 |
+
- regex: 'PocketBook/(62[67]|63[12]|740|840)(?:[);/ ]|$)'
|
17641 |
+
model: '$1'
|
17642 |
|
17643 |
# Bitmore
|
17644 |
Bitmore:
|
17658 |
|
17659 |
# Sugar
|
17660 |
Sugar:
|
17661 |
+
regex: 'SUGAR (?:C[12]1|C1[23]|S11|C11s|[YF]11|[SF]20|S20s|Y12s|[YFS]9|C6|[FY]7|Y8|Y1[256]|P1)(?:[);/ ]|$)'
|
17662 |
device: 'smartphone'
|
17663 |
models:
|
17664 |
- regex: 'SUGAR Y([78]) MAX(?:[);/ ]|$)'
|
17665 |
model: 'Y$1 Max'
|
17666 |
- regex: 'SUGAR F7 Mini(?:[);/ ]|$)'
|
17667 |
model: 'F7 Mini'
|
17668 |
+
- regex: 'SUGAR (C[12]1|C1[23]|S11|C11s|[SF]20s?|[YF]11|[YFS]9|C6|Y7|Y12s|Y1[256]|P1)(?:[);/ ]|$)'
|
17669 |
model: '$1'
|
17670 |
|
|
|
17671 |
# Xshitou
|
17672 |
Xshitou:
|
17673 |
regex: 'Xshitou[_ ](P7)(?:[);/ ]|$)'
|
17694 |
|
17695 |
# VKworld
|
17696 |
VKworld:
|
17697 |
+
regex: '(?:(?:VK700)-MAX|VK700 Pro|T5SE|VK700X|vk6050|vk6735|vk700)(?:[);/ ]|$)'
|
17698 |
device: 'smartphone'
|
17699 |
models:
|
17700 |
- regex: '(VK700)-MAX(?:[);/ ]|$)'
|
17701 |
model: '$1 Max'
|
17702 |
+
- regex: '(VK700) Pro(?:[);/ ]|$)'
|
17703 |
+
model: '$1 Pro'
|
17704 |
- regex: 'T5SE(?:[);/ ]|$)'
|
17705 |
model: 'T5 SE'
|
17706 |
+
- regex: 'VK(700X|6050|6735|700)(?:[);/ ]|$)'
|
17707 |
+
model: 'VK$1'
|
17708 |
|
17709 |
# Mito
|
17710 |
Mito:
|
17719 |
device: 'tablet'
|
17720 |
model: '$1'
|
17721 |
|
17722 |
+
# TWM or TaiwanMobile
|
17723 |
TWM:
|
17724 |
+
regex: 'Amazing[ _](X[35]s|X[123567]|A5S|A3[025]|A[468]|A4S|A5[057]|P6)(?:[);/ ]|$)'
|
17725 |
device: 'smartphone'
|
17726 |
models:
|
17727 |
- regex: 'Amazing[ _](X[35])s(?:[);/ ]|$)'
|
17728 |
model: 'Amazing $1S'
|
17729 |
+
- regex: 'Amazing[ _](A5S|X[123567]|A[468]|A4S|A5[057]|A3[025])(?:[);/ ]|$)'
|
17730 |
+
model: 'Amazing $1'
|
17731 |
+
- regex: 'Amazing[ _](P6)(?:[);/ ]|$)'
|
17732 |
+
device: 'tablet'
|
17733 |
model: 'Amazing $1'
|
17734 |
|
17735 |
# Onix
|
17738 |
device: 'tablet'
|
17739 |
model: '$1'
|
17740 |
|
17741 |
+
# Oale
|
17742 |
+
Oale:
|
17743 |
+
regex: 'Apex([13])(?:[);/ ]|$)'
|
17744 |
+
device: 'smartphone'
|
17745 |
+
model: 'Apex $1'
|
17746 |
+
|
17747 |
# Mobo
|
17748 |
Mobo:
|
17749 |
+
regex: '(?:(?:MOBO[_ ]MB7005|MT7-421HD)|(?:MT7-442D|MT7-411D))(?:[);/ ]|$)'
|
17750 |
device: 'tablet'
|
17751 |
+
models:
|
17752 |
+
- regex: '(?:MOBO[_ ])?(MB7005|MT7-421HD|MT7-442D|MT7-411D)(?:[);/ ]|$)'
|
17753 |
+
model: '$1'
|
17754 |
|
17755 |
# Macoox
|
17756 |
Macoox:
|
17788 |
|
17789 |
# Contixo
|
17790 |
Contixo:
|
17791 |
+
regex: 'Contixo|(?:CX-1045 3G|KT995 3G)(?:[);/ ]|$)'
|
17792 |
device: 'tablet'
|
17793 |
models:
|
17794 |
- regex: 'CX-1045 3G(?:[);/ ]|$)'
|
17795 |
model: 'CX-1045 3G'
|
17796 |
- regex: 'CONTIXO GX 1035(?:[);/ ]|$)'
|
17797 |
model: 'GX-1035 4G 10.1"'
|
17798 |
+
- regex: 'Contixo GT1160 4G(?:[);/ ]|$)'
|
17799 |
+
model: 'GT1160 4G 10.1"'
|
17800 |
- regex: 'B105(?:[);/ ]|$)'
|
17801 |
model: 'B105 3G 10.1"'
|
17802 |
- regex: 'B108(?:[);/ ]|$)'
|
17803 |
model: 'B108 4G 10.1"'
|
17804 |
- regex: 'KT107(?: 3G)?(?:[);/ ]|$)'
|
17805 |
model: 'KT107 3G 10.1"'
|
17806 |
+
- regex: 'K109(?:[);/ ]|$)'
|
17807 |
+
model: 'KT109 4G 10.1"'
|
17808 |
- regex: 'KT715 3G(?:[);/ ]|$)'
|
17809 |
model: 'KT715 3G 7.0"'
|
17810 |
- regex: 'KT995(?:[);/ ]|$)'
|
17811 |
model: 'KT995 3G 10.1"'
|
17812 |
+
- regex: 'KT1100GT(?:[);/ ]|$)'
|
17813 |
+
model: 'KT1100GT'
|
17814 |
|
17815 |
# E-Ceros
|
17816 |
'E-Ceros':
|
18061 |
|
18062 |
# Phonemax
|
18063 |
Phonemax:
|
18064 |
+
regex: 'PHONEMAX[_ ](Saturn(?:[_ ]X)?|Mars|Venus X)(?:[);/ ]|$)'
|
18065 |
device: 'smartphone'
|
18066 |
models:
|
18067 |
- regex: 'PHONEMAX[_ ]Saturn[_ ]X(?:[);/ ]|$)'
|
18070 |
model: 'Saturn'
|
18071 |
- regex: 'PHONEMAX[_ ]Mars(?:[);/ ]|$)'
|
18072 |
model: 'Mars'
|
18073 |
+
- regex: 'PHONEMAX[_ ]Venus X(?:[);/ ]|$)'
|
18074 |
+
model: 'Venus X'
|
18075 |
|
18076 |
# Vipro (Vipro Mobile)
|
18077 |
Vipro:
|
18143 |
|
18144 |
# Eltex (eltex-co.ru)
|
18145 |
Eltex:
|
18146 |
+
regex: '(?:NV5(?:01|10)WAC|NV501|NV510WB)(?:[);/ ]|$)'
|
18147 |
device: 'tv'
|
18148 |
models:
|
18149 |
+
- regex: 'NV5(01|10)WAC(?:[);/ ]|$)'
|
18150 |
+
model: 'NV-5$1-Wac'
|
18151 |
- regex: 'NV501(?:[);/ ]|$)'
|
18152 |
model: 'NV-501'
|
18153 |
+
- regex: 'NV510WB(?:[);/ ]|$)'
|
18154 |
+
model: 'NV-510-WB'
|
18155 |
|
18156 |
# Senkatel
|
18157 |
Senkatel:
|
18165 |
device: 'tablet'
|
18166 |
model: 'K10 SE'
|
18167 |
|
18168 |
+
# Wortmann (wortmann.de)
|
18169 |
Wortmann:
|
18170 |
+
regex: 'TERRA[ _]PAD[ _](100[45])(?:[);/ ]|$)'
|
18171 |
device: 'tablet'
|
18172 |
+
model: 'Terra Pad $1'
|
18173 |
|
18174 |
# BB Mobile
|
18175 |
BB Mobile:
|
18214 |
device: 'smartphone'
|
18215 |
model: 'Capture Plus'
|
18216 |
|
18217 |
+
# Tele2 (www.tele2.com) mobile operator
|
18218 |
Tele2:
|
18219 |
+
regex: 'Tele2[ _]'
|
18220 |
device: 'smartphone'
|
18221 |
models:
|
18222 |
+
- regex: 'Tele2[ _](Mi[dn]i)[ _]1.1(?:[);/ ]|$)'
|
18223 |
+
model: '$1 1.1'
|
18224 |
+
- regex: 'Tele2[ _]Midi[ _]2.0(?:[);/ ]|$)'
|
18225 |
model: 'Midi 2.0'
|
18226 |
+
- regex: 'Tele2[ _]((?:Maxi|Midi)(?:[_ ](?:Plus|LTE))?)(?:[);/ ]|$)'
|
18227 |
model: '$1'
|
18228 |
+
- regex: 'Tele2[ _](Mi[dn]i)(?:[);/ ]|$)'
|
18229 |
model: '$1'
|
18230 |
|
18231 |
# Alfawise
|
18232 |
Alfawise:
|
18233 |
+
regex: '(?:Alfawise (?:A9)|(?:A95X_R1))(?:[);/ ]|$)'
|
18234 |
device: 'tv'
|
18235 |
+
models:
|
18236 |
+
- regex: '(A95X_R1)(?:[);/ ]|$)'
|
18237 |
+
model: '$1'
|
18238 |
+
- regex: 'Alfawise (A9)'
|
18239 |
+
model: '$1'
|
18240 |
|
18241 |
# Klipad
|
18242 |
Klipad:
|
18243 |
+
regex: 'KLIPAD_|(?:KL-V905|KL4889|7589AN)(?:[);/ ]|$)'
|
18244 |
device: 'smartphone'
|
18245 |
models:
|
18246 |
- regex: '(?:KLIPAD_)?(V355B?|KL600|KL-V905)(?:[);/ ]|$)'
|
18247 |
model: '$1'
|
18248 |
+
- regex: '(KL4889|7589AN)(?:[);/ ]|$)'
|
18249 |
device: 'tablet'
|
18250 |
model: '$1'
|
18251 |
|
18263 |
|
18264 |
# Jinga
|
18265 |
Jinga:
|
18266 |
+
regex: 'Jinga[-_ ]|(?:(?:Fresh|Optim)4G|Pass(?:Plus|3G)|PicassoNote|Hotz[_ ]M1|WinPRO|Touch4G|Start3G|IGO[ _]L[41]|Basco (?:L3|L[45]00|XS1|S2))(?:[);/ ]|$)'
|
18267 |
device: 'smartphone'
|
18268 |
models:
|
18269 |
- regex: 'Optim4G(?:[);/ ]|$)'
|
18270 |
model: 'Optim 4G'
|
18271 |
+
- regex: 'Fresh4G(?:[);/ ]|$)'
|
18272 |
+
model: 'Fresh 4G'
|
18273 |
- regex: 'Hotz[_ ]M1(?:[);/ ]|$)'
|
18274 |
model: 'Hotz M1'
|
18275 |
- regex: 'PassPlus(?:[);/ ]|$)'
|
18276 |
model: 'Pass Plus'
|
18277 |
+
- regex: 'Pass3G(?:[);/ ]|$)'
|
18278 |
+
model: 'Pass 3G'
|
18279 |
- regex: 'WinPRO(?:[);/ ]|$)'
|
18280 |
model: 'Win Pro'
|
18281 |
- regex: 'Touch4G(?:[);/ ]|$)'
|
18288 |
model: 'Iron'
|
18289 |
- regex: 'Jinga Basco neo(?:[);/ ]|$)'
|
18290 |
model: 'Basco Neo'
|
18291 |
+
- regex: '(?:Jinga )?Basco (L3|L[45]00|XS1|S2)(?:[);/ ]|$)'
|
18292 |
+
model: 'Basco $1'
|
18293 |
- regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)'
|
18294 |
model: 'Trezor S1 Plus'
|
18295 |
- regex: 'JINGA_IGO_L2(?:[);/ ]|$)'
|
18301 |
|
18302 |
# Twoe
|
18303 |
Twoe:
|
18304 |
+
regex: '(?:TWOE[-_ ]E450R|F534L|F572L)(?:[);/ ]|$)'
|
18305 |
device: 'smartphone'
|
18306 |
+
models:
|
18307 |
+
- regex: 'TWOE[-_ ](E450R)(?:[);/ ]|$)'
|
18308 |
+
model: '$1'
|
18309 |
+
- regex: '(F534L|F572L)(?:[);/ ]|$)'
|
18310 |
+
model: '$1'
|
18311 |
|
18312 |
# iTruck
|
18313 |
iTruck:
|
18343 |
|
18344 |
# iMars
|
18345 |
iMars:
|
18346 |
+
regex: '(?:IMARS VEGA X7|VIVI_8)(?:[);/ ]|$)'
|
18347 |
device: 'smartphone'
|
18348 |
+
models:
|
18349 |
+
- regex: 'IMARS VEGA X7'
|
18350 |
+
model: 'Vega X7'
|
18351 |
+
- regex: 'VIVI_8'
|
18352 |
+
model: 'VIVI 8'
|
18353 |
|
18354 |
# Logic
|
18355 |
Logic:
|
18389 |
|
18390 |
# Vsmart
|
18391 |
Vsmart:
|
18392 |
+
regex: '(?:Joy 1\+|Active 1\+|Bee 3|Active 3)(?:[);/ ]|$)'
|
18393 |
device: 'smartphone'
|
18394 |
models:
|
18395 |
- regex: 'Joy 1\+(?:[);/ ]|$)'
|
18398 |
model: 'Active 1 Plus'
|
18399 |
- regex: 'Bee 3(?:[);/ ]|$)'
|
18400 |
model: 'Bee 3'
|
18401 |
+
- regex: 'Active 3(?:[);/ ]|$)'
|
18402 |
+
model: 'Active 3'
|
18403 |
|
18404 |
# MiXzo
|
18405 |
MiXzo:
|
18406 |
+
regex: '(?:MiXzo[ _])?(?:ME1023|ME1030|MX1037|MX1024|MX10[24]1|MX1397)([ _][34]G)?(?:[);/ ]|$)'
|
18407 |
device: 'tablet'
|
18408 |
models:
|
18409 |
- regex: 'MiXzo[_ ]ME(1023|1030)(?:[_ ]3G)(?:[);/ ]|$)'
|
18410 |
model: 'ME$1 3G'
|
18411 |
- regex: 'MiXzo[_ ]MX1021(?:[_ ]3G)?(?:[);/ ]|$)'
|
18412 |
model: 'MX1021 3G'
|
18413 |
+
- regex: '(?:MiXzo[ _])?MX(1037|1041|1024|1397)[ _]4G(?:[);/ ]|$)'
|
|
|
18414 |
model: 'MX$1 4G'
|
18415 |
|
18416 |
# Openbox
|
18455 |
|
18456 |
# FireFly Mobile
|
18457 |
FireFly Mobile:
|
18458 |
+
regex: '(?:AURII[ _](?:Passion|Virtuoso|ULTRA|Secret Lite|AMUSE[_ ]3G|FORCE|FUSION|F8[_ ]Premium|XCITE)|INTENSE[ _](?:POWER|METAL_2|XT))(?:[);/ ]|$)'
|
18459 |
device: 'smartphone'
|
18460 |
models:
|
18461 |
- regex: 'AURII[ _]FORCE(?:[);/ ]|$)'
|
18462 |
+
model: 'Aurii Force'
|
18463 |
+
- regex: 'AURII[ _]ULTRA(?:[);/ ]|$)'
|
18464 |
+
model: 'Aurii Ultra'
|
18465 |
+
- regex: 'AURII[ _]AMUSE[_ ]3G(?:[);/ ]|$)'
|
18466 |
+
model: 'Aurii Amuse 3G'
|
18467 |
- regex: 'AURII[ _]FUSION(?:[);/ ]|$)'
|
18468 |
+
model: 'Aurii Fusion'
|
18469 |
- regex: 'AURII[ _]XCITE(?:[);/ ]|$)'
|
18470 |
+
model: 'Aurii xCite'
|
18471 |
+
- regex: 'AURII[ _]((?:Passion|Virtuoso|Secret Lite|F8[_ ]Premium))(?:[);/ ]|$)'
|
18472 |
+
model: 'Aurii $1'
|
18473 |
- regex: 'INTENSE POWER(?:[);/ ]|$)'
|
18474 |
model: 'Intense Power'
|
18475 |
- regex: 'INTENSE_XT(?:[);/ ]|$)'
|
18523 |
|
18524 |
# INVIN
|
18525 |
Invin:
|
18526 |
+
regex: 'INVIN[ _-]|KM5PRO(?:[);/ ]|$)'
|
18527 |
device: 'tv'
|
18528 |
+
models:
|
18529 |
+
- regex: 'INVIN[ _-](X[24]|KM[678])'
|
18530 |
+
model: '$1'
|
18531 |
+
- regex: 'KM5PRO'
|
18532 |
+
model: 'KM5 Pro'
|
18533 |
|
18534 |
# Doopro
|
18535 |
Doopro:
|
18567 |
- regex: 'NOS Roya(?:[);/ ]|$)'
|
18568 |
model: 'Roya'
|
18569 |
|
18570 |
+
# Accent (DBM Maroc) (accent.ma)
|
18571 |
Accent:
|
18572 |
+
regex: '(?:ACCENT[_ ]NEON|PEARL[_ ]A[24567]|CAMELEON[_ ]C[56](?:[_ ]PLUS)?)(?:[);/ ]|$)'
|
18573 |
device: 'smartphone'
|
18574 |
+
models:
|
18575 |
+
- regex: 'ACCENT[_ ]NEON(?:[);/ ]|$)'
|
18576 |
+
model: 'Neon'
|
18577 |
+
- regex: 'CAMELEON[_ ]C6[_ ]PLUS(?:[);/ ]|$)'
|
18578 |
+
model: 'Cameleon C6 Plus'
|
18579 |
+
- regex: 'CAMELEON[_ ]C([56])(?:[);/ ]|$)'
|
18580 |
+
model: 'Cameleon C$1'
|
18581 |
+
- regex: 'PEARL A4 Lite(?:[);/ ]|$)'
|
18582 |
+
model: 'Pearl A4 Lite'
|
18583 |
+
- regex: 'PEARL[_ ]A([2567])(?:[);/ ]|$)'
|
18584 |
+
model: 'Pearl A$1'
|
18585 |
|
18586 |
# Avenzo (www.avenzo.es)
|
18587 |
Avenzo:
|
18595 |
|
18596 |
# Beelink
|
18597 |
Beelink:
|
18598 |
+
regex: '(?:Beelink (?:GT1|LAKE I|SEA I|A1)|GT1mini-2|GT1-mini(?:-AT)?)(?:[);/ ]|$)'
|
18599 |
device: 'tv'
|
18600 |
+
models:
|
18601 |
+
- regex: 'Beelink (GT1|LAKE I|SEA I|A1)(?:[);/ ]|$)'
|
18602 |
+
model: '$1'
|
18603 |
+
- regex: 'GT1-mini(?:-AT)?(?:[);/ ]|$)'
|
18604 |
+
model: 'GT1 Mini'
|
18605 |
+
- regex: 'GT1mini-2(?:[);/ ]|$)'
|
18606 |
+
model: 'GT1 Mini 2'
|
18607 |
|
18608 |
# MAXVI
|
18609 |
MAXVI:
|
18753 |
|
18754 |
# Iris
|
18755 |
Iris:
|
18756 |
+
regex: '(?:Vox[_ ](?:[45]S|Alpha|POP|STEEL Plus|Energy))(?:[);/ ]|$)'
|
18757 |
device: 'smartphone'
|
18758 |
models:
|
18759 |
+
- regex: 'Vox[_ ]([45])S'
|
18760 |
+
model: 'Vox $1S'
|
18761 |
- regex: 'VOX Alpha Plus'
|
18762 |
model: 'Vox Alpha Plus'
|
18763 |
+
- regex: 'VOX STEEL Plus'
|
18764 |
+
model: 'Vox Steel Plus'
|
18765 |
- regex: 'VOX Alpha'
|
18766 |
model: 'Vox Alpha'
|
18767 |
+
- regex: 'VOX Energy'
|
18768 |
+
model: 'Vox Energy'
|
18769 |
- regex: 'VOX POP plus'
|
18770 |
model: 'Vox Pop Plus'
|
18771 |
- regex: 'VOX POP Pro'
|
18875 |
|
18876 |
# Hometech
|
18877 |
Hometech:
|
18878 |
+
regex: '(?:Ideal (?:10S|Tab [79])|ALFA[_ ](?:10RC|7RS|[78]RC|7M)|HT[ _](?:7RT|8MZ))(?:[);/ ]|$)'
|
18879 |
device: 'tablet'
|
18880 |
models:
|
18881 |
+
- regex: '(Ideal (?:10S|Tab 9)|ALFA[_ ](?:10RC|7RS|[78]RC|7M))'
|
18882 |
model: '$1'
|
18883 |
- regex: 'Ideal Tab 7 Ips( 3G)?'
|
18884 |
model: 'Ideal Tab 7 IPS$1'
|
18885 |
+
- regex: 'HT[ _](7RT|8MZ)(?:[);/ ]|$)'
|
18886 |
+
model: 'HT $1'
|
18887 |
|
18888 |
# ExMobile
|
18889 |
ExMobile:
|
18921 |
device: 'tv'
|
18922 |
model: '$1'
|
18923 |
|
18924 |
+
# Silelis (silelis.com)
|
18925 |
+
Silelis:
|
18926 |
+
regex: 'Silelis[ _](T-1)(?:[);/ ]|$)'
|
18927 |
+
device: 'tv'
|
18928 |
+
model: '$1'
|
18929 |
+
|
18930 |
+
# Bluedot (bluedot.co.jp)
|
18931 |
+
Bluedot:
|
18932 |
+
regex: 'BLUEDOT[_ ]|(?:BNT-71)(?:[);/ ]|$)'
|
18933 |
+
device: 'tablet'
|
18934 |
+
models:
|
18935 |
+
- regex: '(?:BLUEDOT[_ ])?(BNP-500)(?:[);/ ]|$)'
|
18936 |
+
device: 'smartphone'
|
18937 |
+
model: '$1'
|
18938 |
+
- regex: '(BNT-71)(?:[);/ ]|$)'
|
18939 |
+
model: '$1'
|
18940 |
+
|
18941 |
+
# Planet Computers
|
18942 |
+
Planet Computers:
|
18943 |
+
regex: '(Cosmo_Communicator)(?:[);/ ]|$)'
|
18944 |
+
device: 'tablet'
|
18945 |
+
model: '$1'
|
18946 |
+
|
18947 |
+
# Reach
|
18948 |
+
Reach:
|
18949 |
+
regex: '(Allure[_ ](?:Ultra(?:[_]Curve)?|Secure|Admire|Rise))(?:[);/ ]|$)'
|
18950 |
+
device: 'smartphone'
|
18951 |
+
model: '$1'
|
18952 |
+
|
18953 |
+
# Inco (incomobile.com)
|
18954 |
+
Inco:
|
18955 |
+
regex: '(?:Inco[ _](Aurora II|Sphere|Plain[_ ]2)|(Horizon_S|Horizon \+))(?:[);/ ]|$)'
|
18956 |
+
device: 'smartphone'
|
18957 |
+
models:
|
18958 |
+
- regex: '(?:Inco[ _])?(Plain[_ ]2|Horizon_S|Horizon \+|Aurora II)(?:[);/ ]|$)'
|
18959 |
+
model: '$1'
|
18960 |
+
- regex: 'Inco Sphere(?:[);/ ]|$)'
|
18961 |
+
device: 'tablet'
|
18962 |
+
model: 'Sphere'
|
18963 |
+
|
18964 |
+
# MobiWire
|
18965 |
+
MobiWire:
|
18966 |
+
regex: '(?:Kiona|KANUNA|Halona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|KWANITA|Lonan|Hotah|Kicka 5|Kiona)(?:[);/ ]|$)'
|
18967 |
+
device: 'smartphone'
|
18968 |
+
models:
|
18969 |
+
- regex: 'KANUNA'
|
18970 |
+
model: 'Kanuna'
|
18971 |
+
- regex: 'KWANITA'
|
18972 |
+
model: 'Kwanita'
|
18973 |
+
- regex: '(Kiona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|Lonan|Halona|Hotah|Kicka 5|Kiona)(?:[);/ ]|$)'
|
18974 |
+
model: '$1'
|
18975 |
+
|
18976 |
+
# Hezire
|
18977 |
+
Hezire:
|
18978 |
+
regex: '(HTB801)(?:[);/ ]|$)'
|
18979 |
+
device: 'tablet'
|
18980 |
+
model: '$1'
|
18981 |
+
|
18982 |
+
# Hurricane (hurricanemobile.com)
|
18983 |
+
Hurricane:
|
18984 |
+
regex: 'Hurricane[ _]'
|
18985 |
+
device: 'smartphone'
|
18986 |
+
models:
|
18987 |
+
- regex: 'Hurricane[ _]IGNITE'
|
18988 |
+
model: 'Ignite'
|
18989 |
+
- regex: 'Hurricane[ _]Bolt'
|
18990 |
+
model: 'Bolt'
|
18991 |
+
- regex: 'Hurricane[ _]VORTEX'
|
18992 |
+
model: 'Vortex'
|
18993 |
+
- regex: 'Hurricane[ _]GIGA'
|
18994 |
+
model: 'Giga'
|
18995 |
+
|
18996 |
+
# iSwag (iswagmobile.com)
|
18997 |
+
iSWAG:
|
18998 |
+
regex: 'ISWAG[ _]'
|
18999 |
+
device: 'smartphone'
|
19000 |
+
models:
|
19001 |
+
- regex: 'ISWAG[_ ]VIPER'
|
19002 |
+
model: 'Viper'
|
19003 |
+
- regex: 'iSWAG[_ ]Lynx'
|
19004 |
+
model: 'Lynx'
|
19005 |
+
- regex: 'iSWAG[_ ]MANTRA'
|
19006 |
+
model: 'Mantra'
|
19007 |
+
- regex: 'iSWAG[_ ]MEGA'
|
19008 |
+
model: 'Mega'
|
19009 |
+
- regex: 'iSWAG[_ ]NEMESIS'
|
19010 |
+
model: 'Nemesis'
|
19011 |
+
|
19012 |
+
# Reeder (reeder.com.tr)
|
19013 |
+
Reeder:
|
19014 |
+
regex: 'reeder[_ ](3G_Tablet|A7iC|A[78]i[_ ]Quad|A8i Q2|M8 Plus|[TM]8|M10 Plus|P11SE)(?:[);/ ]|$)'
|
19015 |
+
device: 'tablet'
|
19016 |
+
model: '$1'
|
19017 |
+
|
19018 |
+
# ELARI (elari.net)
|
19019 |
+
ELARI:
|
19020 |
+
regex: 'KidPhone4G(?:[);/ ]|$)'
|
19021 |
+
device: 'wearable'
|
19022 |
+
model: 'KidPhone 4G'
|
19023 |
+
|
19024 |
+
# Epik One or EPIKONE (epikmobile.com)
|
19025 |
+
'Epik One':
|
19026 |
+
regex: '(K501 Plus|[ ]K5(?:0[0-4]|1[01]|03T|3[456]|4[05]|73)|[ ]K60[01]|[ ]X507T|[ ]K40[56]|[ ]T700)(?:[);/ ]|$)'
|
19027 |
+
device: 'smartphone'
|
19028 |
+
models:
|
19029 |
+
- regex: 'K501 Plus'
|
19030 |
+
model: 'Leo Plus'
|
19031 |
+
- regex: 'K501'
|
19032 |
+
model: 'Leo'
|
19033 |
+
- regex: 'K500'
|
19034 |
+
model: 'Omega Lite'
|
19035 |
+
- regex: 'K502'
|
19036 |
+
model: 'Omega'
|
19037 |
+
- regex: 'K503T'
|
19038 |
+
model: 'Leo Turbo'
|
19039 |
+
- regex: 'K503'
|
19040 |
+
model: 'Leo Max'
|
19041 |
+
- regex: 'K504'
|
19042 |
+
model: 'Titan 3G'
|
19043 |
+
- regex: 'X507T'
|
19044 |
+
model: 'Titan II'
|
19045 |
+
- regex: 'K510'
|
19046 |
+
model: 'Bolt'
|
19047 |
+
- regex: 'K511'
|
19048 |
+
model: 'Bolt Pro'
|
19049 |
+
- regex: 'K534'
|
19050 |
+
model: 'Hada'
|
19051 |
+
- regex: 'K535'
|
19052 |
+
model: 'Hada Turbo'
|
19053 |
+
- regex: 'K545'
|
19054 |
+
model: 'Rocket'
|
19055 |
+
- regex: 'K536'
|
19056 |
+
model: 'Royal'
|
19057 |
+
- regex: 'K540'
|
19058 |
+
model: 'Excalibur'
|
19059 |
+
- regex: 'K573'
|
19060 |
+
model: 'Panther'
|
19061 |
+
- regex: 'K600'
|
19062 |
+
model: 'Jupiter'
|
19063 |
+
- regex: 'K601'
|
19064 |
+
model: 'Jupiter One'
|
19065 |
+
- regex: 'K406'
|
19066 |
+
model: 'Pebble Plus'
|
19067 |
+
- regex: 'K405'
|
19068 |
+
model: 'Pebble II'
|
19069 |
+
- regex: 'T700'
|
19070 |
+
model: 'Palette'
|
19071 |
+
device: 'tablet'
|
19072 |
+
|
19073 |
+
# Altice
|
19074 |
+
Altice:
|
19075 |
+
regex: 'Altice[ _](S62|S31|S43)(?:[);/ ]|$)'
|
19076 |
+
device: 'smartphone'
|
19077 |
+
model: '$1'
|
19078 |
+
|
19079 |
+
# Kult
|
19080 |
+
Kult:
|
19081 |
+
regex: '(Ambition|Beyond)(?:[);/ ]|$)'
|
19082 |
+
device: 'smartphone'
|
19083 |
+
model: '$1'
|
19084 |
+
|
19085 |
+
# BioRugged (biorugged.com)
|
19086 |
+
BioRugged:
|
19087 |
+
regex: '(?:BioWolf 8-F30|BIOWOLF8F30|Ruggbo 20 Lite)(?:[);/ ]|$)'
|
19088 |
+
device: 'tablet'
|
19089 |
+
models:
|
19090 |
+
- regex: 'BioWolf 8-F30|BIOWOLF8F30'
|
19091 |
+
model: 'BioWolf 8-F30'
|
19092 |
+
- regex: 'Ruggbo 20 Lite'
|
19093 |
+
model: 'Ruggbo 20 Lite'
|
19094 |
+
|
19095 |
+
# VAIO (vaio.com)
|
19096 |
+
VAIO:
|
19097 |
+
regex: 'VPA051(?:[);/ ]|$)'
|
19098 |
+
device: 'smartphone'
|
19099 |
+
model: 'Phone A'
|
19100 |
+
|
19101 |
+
|
19102 |
+
# SPC or SPC Universe or SPC Mobile (spc.es)
|
19103 |
+
SPC:
|
19104 |
+
regex: '(?:Gravity Max|GRAVITY_OCTACORE|SPC SMART LITE)(?:[);/ ]|$)'
|
19105 |
+
device: 'tablet'
|
19106 |
+
models:
|
19107 |
+
- regex: 'GRAVITY_OCTACORE'
|
19108 |
+
model: 'Gravity OctaCore'
|
19109 |
+
- regex: 'Gravity Max'
|
19110 |
+
model: 'Gravity Max'
|
19111 |
+
- regex: 'SPC SMART LITE'
|
19112 |
+
device: 'smartphone'
|
19113 |
+
model: 'Smart Lite'
|
19114 |
+
|
19115 |
+
# Winmax (winmaxmobile.com)
|
19116 |
+
Winmax:
|
19117 |
+
regex: 'Winmax[ _](?:XC14|XC[46]|TX30)(?:[);/ ]|$)|MAUI.+Winmax_BD45'
|
19118 |
+
device: 'smartphone'
|
19119 |
+
models:
|
19120 |
+
- regex: 'Winmax[ _](XC14|XC[46])(?:[);/ ]|$)'
|
19121 |
+
model: '$1'
|
19122 |
+
- regex: 'Winmax[ _](TX30)(?:[);/ ]|$)'
|
19123 |
+
device: 'tablet'
|
19124 |
+
model: '$1'
|
19125 |
+
- regex: 'MAUI.+Winmax_(BD45)'
|
19126 |
+
device: 'feature phone'
|
19127 |
+
model: '$1'
|
19128 |
+
|
19129 |
+
# Zebra (zebra.com)
|
19130 |
+
Zebra:
|
19131 |
+
regex: ' (TC5[16]|TC2[05]|TC75|TC7[05]x|TC700H)(?:[);/ ]|$)'
|
19132 |
+
device: 'smartphone'
|
19133 |
+
model: '$1'
|
19134 |
+
|
19135 |
+
# Thuraya (thuraya.com)
|
19136 |
+
Thuraya:
|
19137 |
+
regex: 'Thuraya[ _](X5-Touch)(?:[);/ ]|$)'
|
19138 |
+
device: 'smartphone'
|
19139 |
+
model: '$1'
|
19140 |
+
|
19141 |
+
# Bkav (bkav.com)
|
19142 |
+
Bkav:
|
19143 |
+
regex: 'Bphone[ _](B111[45]|B2017)(?:[);/ ]|$)'
|
19144 |
+
device: 'smartphone'
|
19145 |
+
model: 'Bphone $1'
|
19146 |
+
|
19147 |
+
# Brandt
|
19148 |
+
Brandt:
|
19149 |
+
regex: '(BPRIME|BSTAR\+?|BPRIMES|B-ONE)(?:[);/ ]|$)'
|
19150 |
+
device: 'smartphone'
|
19151 |
+
model: '$1'
|
19152 |
+
|
19153 |
+
# Bigben
|
19154 |
+
Bigben:
|
19155 |
+
regex: 'GAMETAB-ONE(?:[);/ ]|$)'
|
19156 |
+
device: 'tablet'
|
19157 |
+
model: 'GameTab-One'
|
19158 |
+
|
19159 |
+
# smartec (smartec.tn)
|
19160 |
+
SMARTEC:
|
19161 |
+
regex: '(Atractivo)(?:[);/ ]|$)'
|
19162 |
+
device: 'smartphone'
|
19163 |
+
model: '$1'
|
19164 |
+
|
19165 |
+
# Asanzo (asanzo.vn)
|
19166 |
+
Asanzo:
|
19167 |
+
regex: 'ASANZO[ _](?:A2|S[23]|[SZ]5|S3_PLUS)(?:[);/ ]|$)'
|
19168 |
+
device: 'smartphone'
|
19169 |
+
models:
|
19170 |
+
- regex: 'ASANZO[ _]S3[ _]PLUS'
|
19171 |
+
model: 'S3 Plus'
|
19172 |
+
- regex: 'ASANZO[ _](A2|S[23]|[SZ]5)(?:[);/ ]|$)'
|
19173 |
+
model: '$1'
|
19174 |
+
|
19175 |
+
# Artizlee
|
19176 |
+
Artizlee:
|
19177 |
+
regex: 'Artizlee[ _]S9|ATL-(?:16|21(?:PLUS|[XT])?|31|26)(?:[);/ ]|$)'
|
19178 |
+
device: 'tablet'
|
19179 |
+
models:
|
19180 |
+
- regex: 'ATL-21PLUS(?:[);/ ]|$)'
|
19181 |
+
model: 'ATL-21 Plus'
|
19182 |
+
- regex: '(ATL-(?:16|21[XT]?|31|26))(?:[);/ ]|$)'
|
19183 |
+
model: '$1'
|
19184 |
+
- regex: 'Artizlee[ _]S9'
|
19185 |
+
device: 'smartphone'
|
19186 |
+
model: 'S9'
|
19187 |
+
|
19188 |
+
# Mintt
|
19189 |
+
Mintt:
|
19190 |
+
regex: '(?:Coolmintt(?:A3|M2)?|Ultramintt(?:S2)?|FRESHMINTT(?:A7|A10)?)(?:[);/ ]|$)'
|
19191 |
+
device: 'smartphone'
|
19192 |
+
models:
|
19193 |
+
- regex: 'Coolmintt ?([PM]1|P3|A3|M2)(?:[);/ ]|$)'
|
19194 |
+
model: 'CoolMintt $1'
|
19195 |
+
- regex: 'Ultramintt ?([SR]1|S2)(?:[);/ ]|$)'
|
19196 |
+
model: 'UltraMintt $1'
|
19197 |
+
- regex: 'FRESHMINTT ?(A7|A10)(?:[);/ ]|$)'
|
19198 |
+
device: 'tablet'
|
19199 |
+
model: 'FreshMintt $1'
|
19200 |
+
|
19201 |
+
# Premio
|
19202 |
+
Premio:
|
19203 |
+
regex: '(?:186HS2080531|186HS1050531|186HS1050232|186FT1080231|185FT5050231)(?:[);/ ]|$)'
|
19204 |
+
device: 'smartphone'
|
19205 |
+
models:
|
19206 |
+
- regex: '186HS2080531'
|
19207 |
+
model: 'X1'
|
19208 |
+
- regex: '186HS1050531'
|
19209 |
+
model: 'P541'
|
19210 |
+
- regex: '185FT5050231'
|
19211 |
+
model: 'P511'
|
19212 |
+
- regex: '186FT1080231'
|
19213 |
+
model: 'P571'
|
19214 |
+
- regex: '186HS1050232'
|
19215 |
+
model: 'P630'
|
19216 |
+
|
19217 |
+
# Trifone
|
19218 |
+
Trifone:
|
19219 |
+
regex: 'Passion[-_](?:1S|PRO|PLUS)(?:[);/ ]|$)'
|
19220 |
+
device: 'smartphone'
|
19221 |
+
models:
|
19222 |
+
- regex: 'Passion-1S'
|
19223 |
+
model: 'Passion 1S'
|
19224 |
+
- regex: 'Passion-Plus'
|
19225 |
+
model: 'Passion Plus'
|
19226 |
+
- regex: 'Passion_Pro'
|
19227 |
+
model: 'Passion Pro'
|
19228 |
+
|
19229 |
+
# Bluewave
|
19230 |
+
Bluewave:
|
19231 |
+
regex: '(?:33GT HD|WV8R-M|WV8R[_-]N)(?:[);/ ]|$)'
|
19232 |
+
device: 'tablet'
|
19233 |
+
models:
|
19234 |
+
- regex: '33GT HD'
|
19235 |
+
model: 'Wave 8 HD+'
|
19236 |
+
- regex: 'WV8R-M'
|
19237 |
+
model: 'Wave 8 Red Marshmallow'
|
19238 |
+
- regex: 'WV8R[_-]N'
|
19239 |
+
model: 'Wave 8 Red Nougat'
|
19240 |
+
|
19241 |
+
# Siragon (siragon.com)
|
19242 |
+
Siragon:
|
19243 |
+
regex: '(SP-5250)(?:[);/ ]|$)'
|
19244 |
+
device: 'smartphone'
|
19245 |
+
model: '$1'
|
19246 |
+
|
19247 |
+
# Poppox
|
19248 |
+
Poppox:
|
19249 |
+
regex: 'Poppox P3'
|
19250 |
+
device: 'smartphone'
|
19251 |
+
model: 'P3'
|
19252 |
+
|
19253 |
+
# Zentality (zentalityinfo.com)
|
19254 |
+
Zentality:
|
19255 |
+
regex: 'C-723ULTRA(?:[);/ ]|$)'
|
19256 |
+
device: 'tablet'
|
19257 |
+
model: 'C-723 Ultra'
|
19258 |
+
|
19259 |
+
# Black Bear
|
19260 |
+
'Black Bear':
|
19261 |
+
regex: '(B6 Master|B6 Note X)(?:[);/ ]|$)'
|
19262 |
+
device: 'smartphone'
|
19263 |
+
model: '$1'
|
19264 |
+
|
19265 |
+
# Fortis
|
19266 |
+
Fortis:
|
19267 |
+
regex: '(Apollo 5 Neo)(?:[);/ ]|$)'
|
19268 |
+
device: 'smartphone'
|
19269 |
+
model: '$1'
|
19270 |
+
|
19271 |
+
# OpelMobile (opelmobile.com.au)
|
19272 |
+
OpelMobile:
|
19273 |
+
regex: ' OpelMobile_(SmartJX)(?:[);/ ]|$)'
|
19274 |
+
device: 'smartphone'
|
19275 |
+
model: '$1'
|
19276 |
+
|
19277 |
+
# NuAns
|
19278 |
+
NuAns:
|
19279 |
+
regex: 'NEO \[Reloaded\](?:[);/ ]|$)'
|
19280 |
+
device: 'smartphone'
|
19281 |
+
model: 'NEO Reloaded'
|
19282 |
+
|
19283 |
+
# Koolnee (sub brand from Koobee)
|
19284 |
+
Koolnee:
|
19285 |
+
regex: '(K1 Trio)(?:[);/ ]|$)'
|
19286 |
+
device: 'smartphone'
|
19287 |
+
model: '$1'
|
19288 |
+
|
19289 |
+
# Sansui (sansui-global.com)
|
19290 |
+
Sansui:
|
19291 |
+
regex: 'Sansui[_ ]'
|
19292 |
+
device: 'smartphone'
|
19293 |
+
models:
|
19294 |
+
- regex: 'Sansui[_ ](Switch|Play|Fun|SA4[01]|U4[56]|U3[02]|Nova)(?:[);/ ]|$)'
|
19295 |
+
model: '$1'
|
19296 |
+
|
19297 |
+
# Sico (sico.com.eg)
|
19298 |
+
Sico:
|
19299 |
+
regex: 'SICO[_ ](?:PLUS|e1002)'
|
19300 |
+
device: 'smartphone'
|
19301 |
+
models:
|
19302 |
+
- regex: 'SICO[_ ]PLUS'
|
19303 |
+
model: 'Plus'
|
19304 |
+
- regex: 'SICO[_ ]e1002'
|
19305 |
+
device: 'tablet'
|
19306 |
+
model: 'E1002'
|
19307 |
+
|
19308 |
+
# Smadl (smadlethiopia.com)
|
19309 |
+
Smadl:
|
19310 |
+
regex: 'Android.+(?:Safari)(?!/[\d.]+)(?: Build|\) AppleWebKit)|SMADL[ _]'
|
19311 |
+
device: 'smartphone'
|
19312 |
+
models:
|
19313 |
+
- regex: 'Android.+(?:Safari)(?!/[\d.]+)(?: Build|\) AppleWebKit)'
|
19314 |
+
model: 'Safari'
|
19315 |
+
- regex: 'SMADL[ _]Matri([2X])'
|
19316 |
+
model: 'Matri $1'
|
19317 |
+
|
19318 |
+
# Tymes
|
19319 |
+
Tymes:
|
19320 |
+
regex: 'Tymes[ _](V5)(?:[);/ ]|$)'
|
19321 |
+
device: 'smartphone'
|
19322 |
+
model: '$1'
|
19323 |
+
|
19324 |
+
# Solone
|
19325 |
+
Solone:
|
19326 |
+
regex: '(?:E1457|W145[02])(?:[);/ ]|$)'
|
19327 |
+
device: 'smartphone'
|
19328 |
+
models:
|
19329 |
+
- regex: 'E1457'
|
19330 |
+
model: 'Earth Iron E1457'
|
19331 |
+
- regex: 'W1450'
|
19332 |
+
model: 'Wind Breeze W1450'
|
19333 |
+
- regex: 'W1452'
|
19334 |
+
model: 'Wind Air W1452'
|
19335 |
+
|
19336 |
+
# Far Eas Tone (Fareastone)
|
19337 |
+
FarEasTone:
|
19338 |
+
regex: 'Smart ?(601|550|50[59])(?:[);/ ]|$)'
|
19339 |
+
device: 'smartphone'
|
19340 |
+
model: 'Smart $1'
|
19341 |
+
|
19342 |
+
# Smailo
|
19343 |
+
Smailo:
|
19344 |
+
regex: 'Smailo_(2GO)(?:[);/ ]|$)'
|
19345 |
+
device: 'tablet'
|
19346 |
+
model: '$1'
|
19347 |
+
|
19348 |
+
# Leff
|
19349 |
+
Leff:
|
19350 |
+
regex: 'Leff Shell (?:HV320WHB-N55|LC390TA2A)(?:[);/ ]|$)'
|
19351 |
+
device: 'tv'
|
19352 |
+
model: ''
|
19353 |
+
|
19354 |
# Hardkernel (www.hardkernel.com)
|
19355 |
Hardkernel:
|
19356 |
regex: 'ODROID[-]?(C2|U2|XU[34])(?:[);/ ]|$)'
|
19368 |
regex: 'SHTRIH-SMARTPOS-F2(?:[);/ ]|$)'
|
19369 |
device: 'peripheral'
|
19370 |
model: 'Smartpos F2'
|
19371 |
+
|
19372 |
+
# BBK (bbk.ru)
|
19373 |
+
BBK:
|
19374 |
+
regex: '([65]5|4[03]|3[29]|28)LEX[-_](81(?:27|39|45|58|61)|71(?:[23]7|4[345]|5[45]|6[368]|[57]8))[_/]([FU]?TS2C)(?:[);/ ]|$)'
|
19375 |
+
device: 'tv'
|
19376 |
+
model: '$1LEX-$2/$3'
|
19377 |
+
|
19378 |
+
# 4ife
|
19379 |
+
4ife:
|
19380 |
+
regex: '4ife (4K Smart TV Box)(?:[);/ ]|$)'
|
19381 |
+
device: 'tv'
|
19382 |
+
model: '$1'
|
19383 |
+
|
19384 |
+
# Westpoint
|
19385 |
+
Westpoint:
|
19386 |
+
regex: 'WESTPOINT[;,]'
|
19387 |
+
device: 'tv'
|
19388 |
+
models:
|
19389 |
+
- regex: '(TETS-4919SM)'
|
19390 |
+
model: '$1'
|
19391 |
+
|
19392 |
+
# Yoka TV
|
19393 |
+
'Yoka TV':
|
19394 |
+
regex: 'KB2 PRO(?:[);/ ]|$)'
|
19395 |
+
device: 'tv'
|
19396 |
+
model: 'KB2 Pro'
|
app/vendor/matomo/device-detector/regexes/device/portable_media_player.yml
CHANGED
@@ -35,8 +35,8 @@ Microsoft:
|
|
35 |
model: 'Zune HD'
|
36 |
|
37 |
Panasonic:
|
38 |
-
device: 'portable media player'
|
39 |
regex: '(SV-MV100)'
|
|
|
40 |
model: '$1'
|
41 |
|
42 |
Samsung:
|
@@ -57,3 +57,8 @@ Samsung:
|
|
57 |
model: 'Galaxy Player 50'
|
58 |
- regex: 'YP-GB70D'
|
59 |
model: 'Galaxy Player 70 Plus'
|
|
|
|
|
|
|
|
|
|
35 |
model: 'Zune HD'
|
36 |
|
37 |
Panasonic:
|
|
|
38 |
regex: '(SV-MV100)'
|
39 |
+
device: 'portable media player'
|
40 |
model: '$1'
|
41 |
|
42 |
Samsung:
|
57 |
model: 'Galaxy Player 50'
|
58 |
- regex: 'YP-GB70D'
|
59 |
model: 'Galaxy Player 70 Plus'
|
60 |
+
|
61 |
+
Wizz:
|
62 |
+
regex: '(DV-PTB1080)(?:[);/ ]|$)'
|
63 |
+
device: 'portable media player'
|
64 |
+
model: '$1'
|
app/vendor/matomo/device-detector/regexes/device/televisions.yml
CHANGED
@@ -16,6 +16,12 @@ Airties:
|
|
16 |
- regex: 'Airties; ?([^);/]+)'
|
17 |
model: '$1'
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
# Altech UEC
|
20 |
'Altech UEC':
|
21 |
regex: 'Altech UEC'
|
@@ -30,6 +36,18 @@ BangOlufsen:
|
|
30 |
device: 'tv'
|
31 |
model: 'BeoVision'
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
# Changhong
|
34 |
Changhong:
|
35 |
regex: 'Changhong'
|
@@ -44,12 +62,24 @@ CreNova:
|
|
44 |
device: 'tv'
|
45 |
model: 'CNV001'
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
# DMM
|
48 |
DMM:
|
49 |
regex: 'DMM'
|
50 |
device: 'tv'
|
51 |
model: 'Dreambox'
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
# Grundig
|
54 |
Grundig:
|
55 |
regex: '(OWB|Grundig|Arcelik)'
|
@@ -66,6 +96,18 @@ Hisense:
|
|
66 |
- regex: '(H[A-Z]?[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,4})'
|
67 |
model: '$1'
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
# Humax
|
70 |
Humax:
|
71 |
regex: 'Humax'
|
@@ -104,6 +146,12 @@ Inverto:
|
|
104 |
- regex: '(Volksbox Web Edition|Volksbox Essential|Volksbox II|Volksbox)'
|
105 |
model: '$1'
|
106 |
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
# LG
|
108 |
LG:
|
109 |
regex: 'LGE'
|
@@ -116,6 +164,12 @@ LG:
|
|
116 |
- regex: 'LGE;? ?([0-9]{2}[A-Z]{2}[0-9]{2,4}[A-Z]?)'
|
117 |
model: '$1'
|
118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
# Loewe
|
120 |
Loewe:
|
121 |
regex: 'Loewe'
|
@@ -124,6 +178,12 @@ Loewe:
|
|
124 |
- regex: '([A-Z]{2}[0-9]{3})'
|
125 |
model: '$1'
|
126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
# MediaTek
|
128 |
MediaTek:
|
129 |
regex: 'MTK'
|
@@ -140,6 +200,12 @@ Medion:
|
|
140 |
- regex: '(MB[0-9]{2})'
|
141 |
model: '$1'
|
142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
# Metz
|
144 |
Metz:
|
145 |
regex: 'Metz'
|
@@ -155,6 +221,8 @@ Panasonic:
|
|
155 |
model: '$1'
|
156 |
- regex: 'DIGA Webkit ([A-Z]{1}[0-9]{4})'
|
157 |
model: 'DIGA $1'
|
|
|
|
|
158 |
|
159 |
# PEAQ
|
160 |
PEAQ:
|
@@ -174,12 +242,26 @@ Philips:
|
|
174 |
- regex: 'NETTV/[0-9\.]{5}'
|
175 |
model: 'NetTV Series'
|
176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
# Samsung
|
178 |
Samsung:
|
179 |
regex: 'Samsung|Maple_2011'
|
180 |
device: 'tv'
|
181 |
models:
|
182 |
-
- regex: 'SmartTV(201[2-9])'
|
|
|
|
|
183 |
model: 'Smart TV $1'
|
184 |
- regex: 'Maple_2011'
|
185 |
model: 'Smart TV 2011'
|
@@ -196,13 +278,15 @@ Selevision:
|
|
196 |
|
197 |
# Sharp
|
198 |
Sharp:
|
199 |
-
regex: 'Sharp'
|
200 |
device: 'tv'
|
201 |
models:
|
202 |
- regex: 'Sharp[,;] ?((?! |HbbTV)[^),;/]+)'
|
203 |
model: '$1'
|
204 |
- regex: '(LE[0-9]{3}[A-Z]{0,3})'
|
205 |
model: '$1'
|
|
|
|
|
206 |
|
207 |
# Skyworth
|
208 |
Skyworth:
|
@@ -246,6 +330,12 @@ TechnoTrend:
|
|
246 |
- regex: '([A-Z]{1}-[0-9]{3})'
|
247 |
model: '$1'
|
248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
# Telefunken
|
250 |
Telefunken:
|
251 |
regex: 'Telefunken'
|
@@ -308,3 +398,9 @@ Videoweb:
|
|
308 |
model: '$1'
|
309 |
- regex: '(videowebtv)'
|
310 |
model: 'VideoWeb TV'
|
|
|
|
|
|
|
|
|
|
|
|
16 |
- regex: 'Airties; ?([^);/]+)'
|
17 |
model: '$1'
|
18 |
|
19 |
+
# ALDI SÜD
|
20 |
+
'ALDI SÜD':
|
21 |
+
regex: 'ALDISUED[;,]'
|
22 |
+
device: 'tv'
|
23 |
+
model: ''
|
24 |
+
|
25 |
# Altech UEC
|
26 |
'Altech UEC':
|
27 |
regex: 'Altech UEC'
|
36 |
device: 'tv'
|
37 |
model: 'BeoVision'
|
38 |
|
39 |
+
# Bush
|
40 |
+
Bush:
|
41 |
+
regex: 'BUSH[;,]'
|
42 |
+
device: 'tv'
|
43 |
+
model: ''
|
44 |
+
|
45 |
+
# Celcus
|
46 |
+
Celcus:
|
47 |
+
regex: 'CELCUS[;,]'
|
48 |
+
device: 'tv'
|
49 |
+
model: ''
|
50 |
+
|
51 |
# Changhong
|
52 |
Changhong:
|
53 |
regex: 'Changhong'
|
62 |
device: 'tv'
|
63 |
model: 'CNV001'
|
64 |
|
65 |
+
# Digihome
|
66 |
+
Digihome:
|
67 |
+
regex: 'DIGIHOME[;,]'
|
68 |
+
device: 'tv'
|
69 |
+
model: ''
|
70 |
+
|
71 |
# DMM
|
72 |
DMM:
|
73 |
regex: 'DMM'
|
74 |
device: 'tv'
|
75 |
model: 'Dreambox'
|
76 |
|
77 |
+
# Finlux
|
78 |
+
Finlux:
|
79 |
+
regex: 'FINLUX[;,]'
|
80 |
+
device: 'tv'
|
81 |
+
model: ''
|
82 |
+
|
83 |
# Grundig
|
84 |
Grundig:
|
85 |
regex: '(OWB|Grundig|Arcelik)'
|
96 |
- regex: '(H[A-Z]?[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,4})'
|
97 |
model: '$1'
|
98 |
|
99 |
+
# Hitachi
|
100 |
+
Hitachi:
|
101 |
+
regex: 'Hitachi[;,]'
|
102 |
+
device: 'tv'
|
103 |
+
model: ''
|
104 |
+
|
105 |
+
# Hotel
|
106 |
+
Hotel:
|
107 |
+
regex: 'HOTEL[;,]'
|
108 |
+
device: 'tv'
|
109 |
+
model: ''
|
110 |
+
|
111 |
# Humax
|
112 |
Humax:
|
113 |
regex: 'Humax'
|
146 |
- regex: '(Volksbox Web Edition|Volksbox Essential|Volksbox II|Volksbox)'
|
147 |
model: '$1'
|
148 |
|
149 |
+
# JVC
|
150 |
+
JVC:
|
151 |
+
regex: 'JVC[;,]'
|
152 |
+
device: 'tv'
|
153 |
+
model: ''
|
154 |
+
|
155 |
# LG
|
156 |
LG:
|
157 |
regex: 'LGE'
|
164 |
- regex: 'LGE;? ?([0-9]{2}[A-Z]{2}[0-9]{2,4}[A-Z]?)'
|
165 |
model: '$1'
|
166 |
|
167 |
+
# Linsar
|
168 |
+
Linsar:
|
169 |
+
regex: 'LINSAR[;,]'
|
170 |
+
device: 'tv'
|
171 |
+
model: ''
|
172 |
+
|
173 |
# Loewe
|
174 |
Loewe:
|
175 |
regex: 'Loewe'
|
178 |
- regex: '([A-Z]{2}[0-9]{3})'
|
179 |
model: '$1'
|
180 |
|
181 |
+
# Luxor
|
182 |
+
Luxor:
|
183 |
+
regex: 'LUXOR[;,]'
|
184 |
+
device: 'tv'
|
185 |
+
model: ''
|
186 |
+
|
187 |
# MediaTek
|
188 |
MediaTek:
|
189 |
regex: 'MTK'
|
200 |
- regex: '(MB[0-9]{2})'
|
201 |
model: '$1'
|
202 |
|
203 |
+
# Nordmende
|
204 |
+
Nordmende:
|
205 |
+
regex: 'NORDMENDE[;,]'
|
206 |
+
device: 'tv'
|
207 |
+
model: ''
|
208 |
+
|
209 |
# Metz
|
210 |
Metz:
|
211 |
regex: 'Metz'
|
221 |
model: '$1'
|
222 |
- regex: 'DIGA Webkit ([A-Z]{1}[0-9]{4})'
|
223 |
model: 'DIGA $1'
|
224 |
+
- regex: 'SmartTV(201[89]|202[0-1])'
|
225 |
+
model: 'Smart TV ($1)'
|
226 |
|
227 |
# PEAQ
|
228 |
PEAQ:
|
242 |
- regex: 'NETTV/[0-9\.]{5}'
|
243 |
model: 'NetTV Series'
|
244 |
|
245 |
+
# Polaroid
|
246 |
+
Polaroid:
|
247 |
+
regex: 'POLAROID[;,]'
|
248 |
+
device: 'tv'
|
249 |
+
model: ''
|
250 |
+
|
251 |
+
# Salora
|
252 |
+
Salora:
|
253 |
+
regex: 'Salora[;,]'
|
254 |
+
device: 'tv'
|
255 |
+
model: ''
|
256 |
+
|
257 |
# Samsung
|
258 |
Samsung:
|
259 |
regex: 'Samsung|Maple_2011'
|
260 |
device: 'tv'
|
261 |
models:
|
262 |
+
- regex: 'SmartTV(201[2-9]|202[0-1]):([^);/]+)'
|
263 |
+
model: '$2'
|
264 |
+
- regex: 'SmartTV(201[2-9]|202[0-1])'
|
265 |
model: 'Smart TV $1'
|
266 |
- regex: 'Maple_2011'
|
267 |
model: 'Smart TV 2011'
|
278 |
|
279 |
# Sharp
|
280 |
Sharp:
|
281 |
+
regex: '(?:UMC-)?Sharp'
|
282 |
device: 'tv'
|
283 |
models:
|
284 |
- regex: 'Sharp[,;] ?((?! |HbbTV)[^),;/]+)'
|
285 |
model: '$1'
|
286 |
- regex: '(LE[0-9]{3}[A-Z]{0,3})'
|
287 |
model: '$1'
|
288 |
+
- regex: 'LC-([^);/]+)'
|
289 |
+
model: 'LC-$1'
|
290 |
|
291 |
# Skyworth
|
292 |
Skyworth:
|
330 |
- regex: '([A-Z]{1}-[0-9]{3})'
|
331 |
model: '$1'
|
332 |
|
333 |
+
# Techwood
|
334 |
+
Techwood:
|
335 |
+
regex: 'Techwood[;,]'
|
336 |
+
device: 'tv'
|
337 |
+
model: ''
|
338 |
+
|
339 |
# Telefunken
|
340 |
Telefunken:
|
341 |
regex: 'Telefunken'
|
398 |
model: '$1'
|
399 |
- regex: '(videowebtv)'
|
400 |
model: 'VideoWeb TV'
|
401 |
+
|
402 |
+
# X.Vision
|
403 |
+
X.Vision:
|
404 |
+
regex: 'X-VISION[;,]'
|
405 |
+
device: 'tv'
|
406 |
+
model: ''
|
app/vendor/matomo/device-detector/regexes/oss.yml
CHANGED
@@ -5,6 +5,13 @@
|
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
##########
|
9 |
# Tizen
|
10 |
##########
|
@@ -94,6 +101,10 @@
|
|
94 |
name: 'Fire OS'
|
95 |
version: '$1'
|
96 |
|
|
|
|
|
|
|
|
|
97 |
##########
|
98 |
# Android
|
99 |
##########
|
@@ -193,7 +204,7 @@
|
|
193 |
name: '$1'
|
194 |
version: '$2'
|
195 |
|
196 |
-
- regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
|
197 |
name: '$1'
|
198 |
version: '$2'
|
199 |
|
@@ -206,7 +217,7 @@
|
|
206 |
##########
|
207 |
# webOS
|
208 |
##########
|
209 |
-
- regex: '(?:webOS|web0S|Palm webOS)(
|
210 |
name: 'webOS'
|
211 |
version: '$1'
|
212 |
|
@@ -300,26 +311,89 @@
|
|
300 |
version: ''
|
301 |
|
302 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
303 |
##########
|
304 |
# iOS
|
305 |
##########
|
306 |
-
- regex: 'CFNetwork/
|
307 |
name: 'iOS'
|
308 |
-
version: '
|
309 |
|
310 |
-
- regex: 'CFNetwork/
|
311 |
-
name: '
|
312 |
-
version: '
|
313 |
|
314 |
-
- regex: 'CFNetwork/
|
315 |
name: 'iOS'
|
316 |
-
version: '
|
317 |
|
318 |
-
- regex: 'CFNetwork/
|
319 |
-
name: '
|
320 |
-
version: '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
|
322 |
-
- regex: 'CFNetwork/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
name: 'iOS'
|
324 |
version: '10.3'
|
325 |
|
@@ -447,7 +521,7 @@
|
|
447 |
name: 'iOS'
|
448 |
version: '$1'
|
449 |
|
450 |
-
- regex: 'Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|i[cC]atcher|RSSRadio/'
|
451 |
name: 'iOS'
|
452 |
version: ''
|
453 |
|
@@ -459,27 +533,214 @@
|
|
459 |
##########
|
460 |
# Mac
|
461 |
##########
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
462 |
|
463 |
- regex: 'CFNetwork/807'
|
464 |
name: 'Mac'
|
465 |
version: '10.12'
|
466 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
467 |
- regex: 'CFNetwork/760'
|
468 |
name: 'Mac'
|
469 |
version: '10.11'
|
470 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
471 |
- regex: 'CFNetwork/720'
|
472 |
name: 'Mac'
|
473 |
version: '10.10'
|
474 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
475 |
- regex: 'CFNetwork/673'
|
476 |
name: 'Mac'
|
477 |
version: '10.9'
|
478 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
479 |
- regex: 'CFNetwork/596'
|
480 |
name: 'Mac'
|
481 |
version: '10.8'
|
482 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
483 |
- regex: 'CFNetwork/520'
|
484 |
name: 'Mac'
|
485 |
version: '10.7'
|
@@ -517,6 +778,14 @@
|
|
517 |
version: ''
|
518 |
|
519 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
520 |
##########
|
521 |
# ChromeOS
|
522 |
##########
|
@@ -524,7 +793,6 @@
|
|
524 |
name: 'Chrome OS'
|
525 |
version: '$1'
|
526 |
|
527 |
-
|
528 |
##########
|
529 |
# BlackBerry
|
530 |
##########
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
8 |
+
##########
|
9 |
+
# Whale OS (https://www.zeasn.com/)
|
10 |
+
##########
|
11 |
+
- regex: '(?:WH|WhaleTV/)(\d+[\.\d]+)'
|
12 |
+
name: 'Whale OS'
|
13 |
+
version: '$1'
|
14 |
+
|
15 |
##########
|
16 |
# Tizen
|
17 |
##########
|
101 |
name: 'Fire OS'
|
102 |
version: '$1'
|
103 |
|
104 |
+
- regex: 'FydeOS'
|
105 |
+
name: 'FydeOS'
|
106 |
+
version: ''
|
107 |
+
|
108 |
##########
|
109 |
# Android
|
110 |
##########
|
204 |
name: '$1'
|
205 |
version: '$2'
|
206 |
|
207 |
+
- regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Deepin|Freebox)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
|
208 |
name: '$1'
|
209 |
version: '$2'
|
210 |
|
217 |
##########
|
218 |
# webOS
|
219 |
##########
|
220 |
+
- regex: '(?:Web0S; .*WEBOS|webOS|web0S|Palm webOS)(?:[/]?(\d+[\.\d]+))?'
|
221 |
name: 'webOS'
|
222 |
version: '$1'
|
223 |
|
311 |
version: ''
|
312 |
|
313 |
|
314 |
+
##########
|
315 |
+
# watchOS (https://developer.apple.com/watchos/)
|
316 |
+
##########
|
317 |
+
- regex: '(?:Watch1,[12]/|Watch OS,|watchOS[ /])(\d+[\.\d]*)'
|
318 |
+
name: 'watchOS'
|
319 |
+
version: '$1'
|
320 |
+
|
321 |
##########
|
322 |
# iOS
|
323 |
##########
|
324 |
+
- regex: 'CFNetwork/.+ Darwin/20.2.0(?!.*x86_64)'
|
325 |
name: 'iOS'
|
326 |
+
version: '14.3'
|
327 |
|
328 |
+
- regex: 'CFNetwork/.+ Darwin/20.1.0(?!.*x86_64)'
|
329 |
+
name: 'iOS'
|
330 |
+
version: '14.2'
|
331 |
|
332 |
+
- regex: 'CFNetwork/.+ Darwin/20.0.0(?!.*x86_64)'
|
333 |
name: 'iOS'
|
334 |
+
version: '14.0'
|
335 |
|
336 |
+
- regex: 'CFNetwork/.+ Darwin/19.6.0(?!.*x86_64)'
|
337 |
+
name: 'iOS'
|
338 |
+
version: '13.6'
|
339 |
+
|
340 |
+
- regex: 'CFNetwork/.+ Darwin/19.5.0(?!.*x86_64)'
|
341 |
+
name: 'iOS'
|
342 |
+
version: '13.5'
|
343 |
+
|
344 |
+
- regex: 'CFNetwork/.+ Darwin/19.4.0(?!.*x86_64)'
|
345 |
+
name: 'iOS'
|
346 |
+
version: '13.4'
|
347 |
+
|
348 |
+
- regex: 'CFNetwork/.+ Darwin/19.3.0(?!.*x86_64)'
|
349 |
+
name: 'iOS'
|
350 |
+
version: '13.3.1'
|
351 |
+
|
352 |
+
- regex: 'CFNetwork/.+ Darwin/19.2.0(?!.*x86_64)'
|
353 |
+
name: 'iOS'
|
354 |
+
version: '13.3'
|
355 |
+
|
356 |
+
- regex: 'CFNetwork/.+ Darwin/19.0.0(?!.*x86_64)'
|
357 |
+
name: 'iOS'
|
358 |
+
version: '13.0'
|
359 |
+
|
360 |
+
- regex: 'CFNetwork/.+ Darwin/18.7.0(?!.*x86_64)'
|
361 |
+
name: 'iOS'
|
362 |
+
version: '12.4'
|
363 |
+
|
364 |
+
- regex: 'CFNetwork/.+ Darwin/18.6.0(?!.*x86_64)'
|
365 |
+
name: 'iOS'
|
366 |
+
version: '12.3'
|
367 |
+
|
368 |
+
- regex: 'CFNetwork/.+ Darwin/18.5.0(?!.*x86_64)'
|
369 |
+
name: 'iOS'
|
370 |
+
version: '12.2'
|
371 |
+
|
372 |
+
- regex: 'CFNetwork/.+ Darwin/18.2.0(?!.*x86_64)'
|
373 |
+
name: 'iOS'
|
374 |
+
version: '12.1'
|
375 |
+
|
376 |
+
- regex: 'CFNetwork/.+ Darwin/18.0.0(?!.*x86_64)'
|
377 |
+
name: 'iOS'
|
378 |
+
version: '12.0'
|
379 |
|
380 |
+
- regex: 'CFNetwork/.+ Darwin/17.7.0(?!.*x86_64)'
|
381 |
+
name: 'iOS'
|
382 |
+
version: '11.4.1'
|
383 |
+
|
384 |
+
- regex: 'CFNetwork/.+ Darwin/17.6.0(?!.*x86_64)'
|
385 |
+
name: 'iOS'
|
386 |
+
version: '11.4'
|
387 |
+
|
388 |
+
- regex: 'CFNetwork/889(?!.*x86_64)'
|
389 |
+
name: 'iOS'
|
390 |
+
version: '11.1'
|
391 |
+
|
392 |
+
- regex: 'CFNetwork/887(?!.*x86_64)'
|
393 |
+
name: 'iOS'
|
394 |
+
version: '11.0'
|
395 |
+
|
396 |
+
- regex: 'CFNetwork/811(?!.*x86_64)'
|
397 |
name: 'iOS'
|
398 |
version: '10.3'
|
399 |
|
521 |
name: 'iOS'
|
522 |
version: '$1'
|
523 |
|
524 |
+
- regex: '(?:Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|i[cC]atcher|RSSRadio/|MobileSafari/)(?!.*x86_64)'
|
525 |
name: 'iOS'
|
526 |
version: ''
|
527 |
|
533 |
##########
|
534 |
# Mac
|
535 |
##########
|
536 |
+
- regex: 'CFNetwork/.+ Darwin/20.2.0.*(x86_64)'
|
537 |
+
name: 'Mac'
|
538 |
+
version: '11.1'
|
539 |
+
|
540 |
+
- regex: 'CFNetwork/.+ Darwin/20.[01].0.*(x86_64)'
|
541 |
+
name: 'Mac'
|
542 |
+
version: '11.0'
|
543 |
+
|
544 |
+
- regex: 'CFNetwork/.+ Darwin/19.6.0.*(x86_64)'
|
545 |
+
name: 'Mac'
|
546 |
+
version: '10.15.6'
|
547 |
+
|
548 |
+
- regex: 'CFNetwork/.+ Darwin/19.5.0.*(x86_64)'
|
549 |
+
name: 'Mac'
|
550 |
+
version: '10.15.5'
|
551 |
+
|
552 |
+
- regex: 'CFNetwork/.+ Darwin/19.4.0.*(x86_64)'
|
553 |
+
name: 'Mac'
|
554 |
+
version: '10.15.4'
|
555 |
+
|
556 |
+
- regex: 'CFNetwork/.+ Darwin/19.3.0.*(x86_64)'
|
557 |
+
name: 'Mac'
|
558 |
+
version: '10.15.3'
|
559 |
+
|
560 |
+
- regex: 'CFNetwork/.+ Darwin/19.2.0.*(x86_64)'
|
561 |
+
name: 'Mac'
|
562 |
+
version: '10.15.2'
|
563 |
+
|
564 |
+
- regex: 'CFNetwork/(?:108[258]|109[18]|1103).*(x86_64)'
|
565 |
+
name: 'Mac'
|
566 |
+
version: '10.15'
|
567 |
+
|
568 |
+
- regex: 'CFNetwork/.+ Darwin/18.2.0.*(x86_64)'
|
569 |
+
name: 'Mac'
|
570 |
+
version: '10.14.1'
|
571 |
+
|
572 |
+
- regex: 'CFNetwork/(?:96[29]|97[14568]).*(x86_64)'
|
573 |
+
name: 'Mac'
|
574 |
+
version: '10.14'
|
575 |
+
|
576 |
+
- regex: 'CFNetwork/.+ Darwin/17.7.0.*(x86_64)'
|
577 |
+
name: 'Mac'
|
578 |
+
version: '10.13.6'
|
579 |
+
|
580 |
+
- regex: 'CFNetwork/.+ Darwin/17.6.0.*(x86_64)'
|
581 |
+
name: 'Mac'
|
582 |
+
version: '10.13.5'
|
583 |
+
|
584 |
+
- regex: 'CFNetwork/.+ Darwin/17.5.0.*(x86_64)'
|
585 |
+
name: 'Mac'
|
586 |
+
version: '10.13.4'
|
587 |
+
|
588 |
+
- regex: 'CFNetwork/.+ Darwin/17.4.0.*(x86_64)'
|
589 |
+
name: 'Mac'
|
590 |
+
version: '10.13.3'
|
591 |
+
|
592 |
+
- regex: 'CFNetwork/.+ Darwin/17.3.0.*(x86_64)'
|
593 |
+
name: 'Mac'
|
594 |
+
version: '10.13.2'
|
595 |
+
|
596 |
+
- regex: 'CFNetwork/.+ Darwin/17.2.0.*(x86_64)'
|
597 |
+
name: 'Mac'
|
598 |
+
version: '10.13.1'
|
599 |
+
|
600 |
+
- regex: 'CFNetwork/(?:887|889|893|897|901|902).*(x86_64)'
|
601 |
+
name: 'Mac'
|
602 |
+
version: '10.13'
|
603 |
+
|
604 |
+
- regex: 'CFNetwork/.+ Darwin/16.7.0.*(x86_64)'
|
605 |
+
name: 'Mac'
|
606 |
+
version: '10.12.6'
|
607 |
+
|
608 |
+
- regex: 'CFNetwork/.+ Darwin/16.6.0.*(x86_64)'
|
609 |
+
name: 'Mac'
|
610 |
+
version: '10.12.5'
|
611 |
+
|
612 |
+
- regex: 'CFNetwork/.+ Darwin/16.5.0.*(x86_64)'
|
613 |
+
name: 'Mac'
|
614 |
+
version: '10.12.4'
|
615 |
+
|
616 |
+
- regex: 'CFNetwork/.+ Darwin/16.3.0.*(x86_64)'
|
617 |
+
name: 'Mac'
|
618 |
+
version: '10.12.3'
|
619 |
+
|
620 |
+
- regex: 'CFNetwork/.+ Darwin/16.2.0.*(x86_64)'
|
621 |
+
name: 'Mac'
|
622 |
+
version: '10.12.2'
|
623 |
+
|
624 |
+
- regex: 'CFNetwork/.+ Darwin/16.1.0.*(x86_64)'
|
625 |
+
name: 'Mac'
|
626 |
+
version: '10.12.1'
|
627 |
+
|
628 |
+
- regex: 'CFNetwork/811.*(x86_64)'
|
629 |
+
name: 'Mac'
|
630 |
+
version: '10.12'
|
631 |
|
632 |
- regex: 'CFNetwork/807'
|
633 |
name: 'Mac'
|
634 |
version: '10.12'
|
635 |
|
636 |
+
- regex: 'CFNetwork/.+ Darwin/15.6.0.*(x86_64)'
|
637 |
+
name: 'Mac'
|
638 |
+
version: '10.11.6'
|
639 |
+
|
640 |
+
- regex: 'CFNetwork/.+ Darwin/15.5.0.*(x86_64)'
|
641 |
+
name: 'Mac'
|
642 |
+
version: '10.11.5'
|
643 |
+
|
644 |
+
- regex: 'CFNetwork/.+ Darwin/15.4.0.*(x86_64)'
|
645 |
+
name: 'Mac'
|
646 |
+
version: '10.11.4'
|
647 |
+
|
648 |
+
- regex: 'CFNetwork/.+ Darwin/15.3.0.*(x86_64)'
|
649 |
+
name: 'Mac'
|
650 |
+
version: '10.11.3'
|
651 |
+
|
652 |
+
- regex: 'CFNetwork/.+ Darwin/15.2.0.*(x86_64)'
|
653 |
+
name: 'Mac'
|
654 |
+
version: '10.11.2'
|
655 |
+
|
656 |
- regex: 'CFNetwork/760'
|
657 |
name: 'Mac'
|
658 |
version: '10.11'
|
659 |
|
660 |
+
- regex: 'CFNetwork/.+ Darwin/14.5.0.*(x86_64)'
|
661 |
+
name: 'Mac'
|
662 |
+
version: '10.10.5'
|
663 |
+
|
664 |
+
- regex: 'CFNetwork/.+ Darwin/14.4.0.*(x86_64)'
|
665 |
+
name: 'Mac'
|
666 |
+
version: '10.10.4'
|
667 |
+
|
668 |
+
- regex: 'CFNetwork/.+ Darwin/14.3.0.*(x86_64)'
|
669 |
+
name: 'Mac'
|
670 |
+
version: '10.10.3'
|
671 |
+
|
672 |
+
- regex: 'CFNetwork/.+ Darwin/14.1.0.*(x86_64)'
|
673 |
+
name: 'Mac'
|
674 |
+
version: '10.10.2'
|
675 |
+
|
676 |
- regex: 'CFNetwork/720'
|
677 |
name: 'Mac'
|
678 |
version: '10.10'
|
679 |
|
680 |
+
- regex: 'CFNetwork/.+ Darwin/13.4.0.*(x86_64)'
|
681 |
+
name: 'Mac'
|
682 |
+
version: '10.9.5'
|
683 |
+
|
684 |
+
- regex: 'CFNetwork/.+ Darwin/13.3.0.*(x86_64)'
|
685 |
+
name: 'Mac'
|
686 |
+
version: '10.9.4'
|
687 |
+
|
688 |
+
- regex: 'CFNetwork/.+ Darwin/13.2.0.*(x86_64)'
|
689 |
+
name: 'Mac'
|
690 |
+
version: '10.9.3'
|
691 |
+
|
692 |
+
- regex: 'CFNetwork/.+ Darwin/13.1.0.*(x86_64)'
|
693 |
+
name: 'Mac'
|
694 |
+
version: '10.9.2'
|
695 |
+
|
696 |
- regex: 'CFNetwork/673'
|
697 |
name: 'Mac'
|
698 |
version: '10.9'
|
699 |
|
700 |
+
- regex: 'CFNetwork/.+ Darwin/12.5.0.*(x86_64)'
|
701 |
+
name: 'Mac'
|
702 |
+
version: '10.8.5'
|
703 |
+
|
704 |
+
- regex: 'CFNetwork/.+ Darwin/12.4.0.*(x86_64)'
|
705 |
+
name: 'Mac'
|
706 |
+
version: '10.8.4'
|
707 |
+
|
708 |
+
- regex: 'CFNetwork/.+ Darwin/12.3.0.*(x86_64)'
|
709 |
+
name: 'Mac'
|
710 |
+
version: '10.8.3'
|
711 |
+
|
712 |
+
- regex: 'CFNetwork/.+ Darwin/12.2.0.*(x86_64)'
|
713 |
+
name: 'Mac'
|
714 |
+
version: '10.8.2'
|
715 |
+
|
716 |
+
- regex: 'CFNetwork/.+ Darwin/12.1.0.*(x86_64)'
|
717 |
+
name: 'Mac'
|
718 |
+
version: '10.8.1'
|
719 |
+
|
720 |
- regex: 'CFNetwork/596'
|
721 |
name: 'Mac'
|
722 |
version: '10.8'
|
723 |
|
724 |
+
- regex: 'CFNetwork/.+ Darwin/11.5.0.*(x86_64)'
|
725 |
+
name: 'Mac'
|
726 |
+
version: '10.7.5'
|
727 |
+
|
728 |
+
- regex: 'CFNetwork/.+ Darwin/11.4.0.*(x86_64)'
|
729 |
+
name: 'Mac'
|
730 |
+
version: '10.7.4'
|
731 |
+
|
732 |
+
- regex: 'CFNetwork/.+ Darwin/11.3.0.*(x86_64)'
|
733 |
+
name: 'Mac'
|
734 |
+
version: '10.7.3'
|
735 |
+
|
736 |
+
- regex: 'CFNetwork/.+ Darwin/11.2.0.*(x86_64)'
|
737 |
+
name: 'Mac'
|
738 |
+
version: '10.7.2'
|
739 |
+
|
740 |
+
- regex: 'CFNetwork/.+ Darwin/11.1.0.*(x86_64)'
|
741 |
+
name: 'Mac'
|
742 |
+
version: '10.7.1'
|
743 |
+
|
744 |
- regex: 'CFNetwork/520'
|
745 |
name: 'Mac'
|
746 |
version: '10.7'
|
778 |
version: ''
|
779 |
|
780 |
|
781 |
+
##########
|
782 |
+
# SeewoOS
|
783 |
+
##########
|
784 |
+
- regex: 'SeewoOS x86_64 (\d+[\.\d]+)'
|
785 |
+
name: 'SeewoOS'
|
786 |
+
version: '$1'
|
787 |
+
|
788 |
+
|
789 |
##########
|
790 |
# ChromeOS
|
791 |
##########
|
793 |
name: 'Chrome OS'
|
794 |
version: '$1'
|
795 |
|
|
|
796 |
##########
|
797 |
# BlackBerry
|
798 |
##########
|
assets/js/asset_manager_core_js.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
/* Matomo Javascript - cb=
|
2 |
|
3 |
/*!
|
4 |
* Matomo - free/libre analytics platform
|
@@ -969,7 +969,7 @@ selectionMarkup+='</select></div>';$('.limitSelection',domElem).append(selection
|
|
969 |
else{$limitSelect.toggleClass('disabled');}
|
970 |
$limitSelect.material_select();$('.limitSelection input',domElem).attr('title',_pk_translate('General_RowsToDisplay'));}
|
971 |
else{$('.limitSelection',domElem).hide();}},handlePeriod:function(domElem){var $periodSelect=$('.dataTablePeriods .tableIcon',domElem);var self=this;$periodSelect.click(function(){var period=$(this).attr('data-period');if(!period||period==self.param['period']){return;}
|
972 |
-
self.param['period']=period;self.reloadAjaxDataTable();});},handleSort:function(domElem){var self=this;if(self.props.enable_sort){$('.sortable',domElem).off('click.dataTableSort').on('click.dataTableSort',function(){$(this).off('click.dataTableSort');self.onClickSort(this);});}
|
973 |
if(self.param.filter_sort_column){var currentIsSubDataTable=$(domElem).parent().hasClass('cellSubDataTable');var imageSortClassType=currentIsSubDataTable?'sortSubtable':''
|
974 |
var imageSortWidth=16;var imageSortHeight=16;var sortOrder=self.param.filter_sort_order||'desc';var head=$('th',domElem).filter(function(){return $(this).attr('id')==self.param.filter_sort_column;}).addClass('columnSorted');var sortIconHtml='<span class="sortIcon '+sortOrder+' '+imageSortClassType+'" width="'+imageSortWidth+'" height="'+imageSortHeight+'" />';var div=head.find('.thDIV');if(head.hasClass('first')||head.attr('id')=='label'){div.append(sortIconHtml);}else{div.prepend(sortIconHtml);}}},handleSearchBox:function(domElem,callbackSuccess){var self=this;var currentPattern=self.param.filter_pattern;if(typeof self.param.filter_pattern!="undefined"&&self.param.filter_pattern.length>0){currentPattern=self.param.filter_pattern;}
|
975 |
else if(typeof self.param.filter_pattern_recursive!="undefined"&&self.param.filter_pattern_recursive.length>0){currentPattern=self.param.filter_pattern_recursive;}
|
@@ -1031,7 +1031,8 @@ tooltip.css({marginLeft:left,marginTop:top,top:0});tooltip.stop(true,true).fadeI
|
|
1031 |
$(this).hide();else
|
1032 |
$(this).show();});},thisReport=$('.datatableRelatedReports span:hidden',domElem)[0];function replaceReportTitleAndHelp(domElem,relatedReportName){if(!domElem||!domElem.length){return;}
|
1033 |
var $title='';var $headline=domElem.prev('h2');if($headline.length){$title=$headline.find('.title:not(.ng-hide)');}else{var $widget=domElem.parents('.widget');if($widget.length){$title=$widget.find('.widgetName > span');}}
|
1034 |
-
if($title.length){$title.text(relatedReportName);var scope=$title.scope();if(scope){var $doc=domElem.find('.reportDocumentation');if($doc.length){
|
|
|
1035 |
scope.featureName=$.trim(relatedReportName);setTimeout(function(){scope.$apply();},1);}}}
|
1036 |
hideShowRelatedReports(thisReport);var relatedReports=$('.datatableRelatedReports span',domElem);if(!relatedReports.length){$('.datatableRelatedReports',domElem).hide();}
|
1037 |
relatedReports.each(function(){var clicked=this;$(this).unbind('click').click(function(e){var $this=$(this);var url=$this.attr('href');self.resetAllFilters();var newParams=broadcast.getValuesFromUrl(url);for(var key in newParams){self.param[key]=decodeURIComponent(newParams[key]);}
|
@@ -1121,7 +1122,7 @@ dataTable.trigger('reload',params);});}});});};}(jQuery));
|
|
1121 |
*/
|
1122 |
(function($){$(function(){var headerMessageParent=$('#header_message').parent();initTopControls();headerMessageParent.on('click','#updateCheckLinkContainer',function(e){var headerMessage=$(this).closest('#header_message');var $titleElement=headerMessage.find('.title');if($titleElement.attr('target')){return;}
|
1123 |
e.preventDefault();var ajaxRequest=new ajaxHelper();ajaxRequest.setLoadingElement('#header_message .loadingPiwik');ajaxRequest.addParams({module:'CoreHome',action:'checkForUpdates'},'get');ajaxRequest.withTokenInUrl();$titleElement.addClass('activityIndicator');ajaxRequest.setCallback(function(response){headerMessage.fadeOut('slow',function(){response=$('#header_message',$('<div>'+response+'</div>'));$titleElement.removeClass('activityIndicator');var newVersionAvailable=response.hasClass('update_available');if(newVersionAvailable){headerMessage.replaceWith(response);headerMessage.show();}
|
1124 |
-
else{headerMessage.find('.title').html(_pk_translate('CoreHome_YouAreUsingTheLatestVersion'));headerMessage.show();setTimeout(function(){headerMessage.fadeOut('slow',function(){headerMessage.replaceWith(response);});},4000);}});});ajaxRequest.setFormat('html');ajaxRequest.send();return false;});headerMessageParent.on('click','#header_message',function(e){if(e.target.tagName.toLowerCase()!='a'){$(this).toggleClass('expanded');}});});}(jQuery));$(document).ready(function(){$('.accessibility-skip-to-content').click(function(e){$('a[name="main"]').attr('tabindex',-1).focus();$(window).scrollTo($('a[name="main"]'));});$("#mobile-top-menu").sideNav({closeOnClick:true,edge:'right'});$('select').material_select();piwikHelper.registerShortcut('?',_pk_translate('CoreHome_ShortcutHelp'),function(event){if(event.altKey||$('.modal.open').length){return;}
|
1125 |
if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}
|
1126 |
var list=$('#shortcuthelp dl');list.empty();var keys=Object.keys(piwikHelper.shortcuts).sort();jQuery.each(keys,function(i,key){if(piwikHelper.shortcuts.hasOwnProperty(key)){list.append($('<dt />').append($('<kbd />').text(key)));list.append($('<dd />').text(piwikHelper.shortcuts[key]));}});var isMac=navigator.userAgent.indexOf('Mac OS X')!=-1;list.append($('<dt />').append($('<kbd />').text(_pk_translate(isMac?"CoreHome_MacPageUp":"CoreHome_HomeShortcut"))));list.append($('<dd />').text(_pk_translate('CoreHome_PageUpShortcutDescription')));list.append($('<dt />').append($('<kbd />').text(_pk_translate(isMac?"CoreHome_MacPageDown":"CoreHome_EndShortcut"))));list.append($('<dd />').text(_pk_translate('CoreHome_PageDownShortcutDescription')));piwikHelper.modalConfirm('#shortcuthelp');});});
|
1127 |
/*!
|
@@ -1925,7 +1926,7 @@ function fetchPage(category,subcategory){resetPage();var pagesPromise=reportingP
|
|
1925 |
(function(){angular.module('piwikApp').controller('ReportingMenuController',ReportingMenuController);ReportingMenuController.$inject=['$scope','piwik','$location','$timeout','reportingMenuModel','$rootScope','piwikUrl'];function ReportingMenuController($scope,piwik,$location,$timeout,menuModel,$rootScope,piwikUrl){var idSite=piwikUrl.getSearchParam('idSite');var period=piwikUrl.getSearchParam('period');var date=piwikUrl.getSearchParam('date');var segment=piwikUrl.getSearchParam('segment');var comparePeriods=piwikUrl.getSearchParam('comparePeriods');var compareDates=piwikUrl.getSearchParam('compareDates');var compareSegments=piwikUrl.getSearchParam('compareSegments');function markAllCategoriesAsInactive(){angular.forEach(menuModel.menu,function(cat){cat.active=false;});}
|
1926 |
function markAllCategoriesAndChildrenInactive(){angular.forEach(menuModel.menu,function(cat){cat.active=false;angular.forEach(cat.subcategories,function(subcat){subcat.active=false;if(subcat.isGroup&&subcat.subcategories){angular.forEach(subcat.subcategories,function(sub){sub.active=false;});}});});}
|
1927 |
$scope.menuModel=menuModel;function enterSubcategory(category,subcategory,subsubcategory){if(!category||!subcategory){return;}
|
1928 |
-
markAllCategoriesAndChildrenInactive();category.active=true;subcategory.active=true;if(subsubcategory){subcategory.name=subsubcategory.name;subsubcategory.active=true;}};$scope.makeUrl=function(category,subcategory){var params={idSite:idSite,period:period,date:date,segment:decodeURIComponent(segment),category:category.id,subcategory:subcategory.id,};if(compareDates){params.compareDates=compareDates;}
|
1929 |
if(comparePeriods){params.comparePeriods=comparePeriods;}
|
1930 |
if(compareSegments){params.compareSegments=compareSegments;}
|
1931 |
return $.param(params);};$scope.loadCategory=function(category){if(category.active){category.active=false;}else{markAllCategoriesAsInactive();category.active=true;}
|
@@ -2457,7 +2458,7 @@ var messageToDisplay=uninstallConfirmMessage.replace('%s',pluginName);$('#uninst
|
|
2457 |
* @link https://matomo.org
|
2458 |
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
2459 |
*/
|
2460 |
-
(function(){angular.module('piwikApp').directive('piwikPluginUpload',piwikPluginUpload);piwikPluginUpload.$inject=['piwik'];function piwikPluginUpload(piwik){return{restrict:'A',compile:function(element,attrs){return function(scope,element,attrs){$('.uploadPlugin').click(function(event){event.preventDefault();piwikHelper.modalConfirm('#installPluginByUpload',{});});$('#uploadPluginForm').submit(function(event){var $zipFile=$('[name=pluginZip]');var fileName=$zipFile.val();if(!fileName||'.zip'!=fileName.slice(-4)){event.preventDefault();alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));}});};}};}})();
|
2461 |
/*!
|
2462 |
* Matomo - free/libre analytics platform
|
2463 |
*
|
1 |
+
/* Matomo Javascript - cb=41ec3fea579c0e22efc9eb9a42e483eb*/
|
2 |
|
3 |
/*!
|
4 |
* Matomo - free/libre analytics platform
|
969 |
else{$limitSelect.toggleClass('disabled');}
|
970 |
$limitSelect.material_select();$('.limitSelection input',domElem).attr('title',_pk_translate('General_RowsToDisplay'));}
|
971 |
else{$('.limitSelection',domElem).hide();}},handlePeriod:function(domElem){var $periodSelect=$('.dataTablePeriods .tableIcon',domElem);var self=this;$periodSelect.click(function(){var period=$(this).attr('data-period');if(!period||period==self.param['period']){return;}
|
972 |
+
var piwikPeriods=piwikHelper.getAngularDependency('piwikPeriods');var currentPeriod=piwikPeriods.parse(self.param['period'],self.param['date']);var endDateOfPeriod=currentPeriod.getDateRange()[1];endDateOfPeriod=piwikPeriods.format(endDateOfPeriod);self.param['period']=period;self.param['date']=endDateOfPeriod;self.reloadAjaxDataTable();});},handleSort:function(domElem){var self=this;if(self.props.enable_sort){$('.sortable',domElem).off('click.dataTableSort').on('click.dataTableSort',function(){$(this).off('click.dataTableSort');self.onClickSort(this);});}
|
973 |
if(self.param.filter_sort_column){var currentIsSubDataTable=$(domElem).parent().hasClass('cellSubDataTable');var imageSortClassType=currentIsSubDataTable?'sortSubtable':''
|
974 |
var imageSortWidth=16;var imageSortHeight=16;var sortOrder=self.param.filter_sort_order||'desc';var head=$('th',domElem).filter(function(){return $(this).attr('id')==self.param.filter_sort_column;}).addClass('columnSorted');var sortIconHtml='<span class="sortIcon '+sortOrder+' '+imageSortClassType+'" width="'+imageSortWidth+'" height="'+imageSortHeight+'" />';var div=head.find('.thDIV');if(head.hasClass('first')||head.attr('id')=='label'){div.append(sortIconHtml);}else{div.prepend(sortIconHtml);}}},handleSearchBox:function(domElem,callbackSuccess){var self=this;var currentPattern=self.param.filter_pattern;if(typeof self.param.filter_pattern!="undefined"&&self.param.filter_pattern.length>0){currentPattern=self.param.filter_pattern;}
|
975 |
else if(typeof self.param.filter_pattern_recursive!="undefined"&&self.param.filter_pattern_recursive.length>0){currentPattern=self.param.filter_pattern_recursive;}
|
1031 |
$(this).hide();else
|
1032 |
$(this).show();});},thisReport=$('.datatableRelatedReports span:hidden',domElem)[0];function replaceReportTitleAndHelp(domElem,relatedReportName){if(!domElem||!domElem.length){return;}
|
1033 |
var $title='';var $headline=domElem.prev('h2');if($headline.length){$title=$headline.find('.title:not(.ng-hide)');}else{var $widget=domElem.parents('.widget');if($widget.length){$title=$widget.find('.widgetName > span');}}
|
1034 |
+
if($title.length){$title.text(relatedReportName);var scope=$title.scope();if(scope){var $doc=domElem.find('.reportDocumentation');if($doc.length){var helpParagraph=$('p[ng-bind-html]',$doc);if(helpParagraph.length){var $parse=angular.element(document).injector().get('$parse');helpParagraph.html($parse(helpParagraph.attr('ng-bind-html')));}
|
1035 |
+
scope.inlineHelp=$.trim($doc.html());}
|
1036 |
scope.featureName=$.trim(relatedReportName);setTimeout(function(){scope.$apply();},1);}}}
|
1037 |
hideShowRelatedReports(thisReport);var relatedReports=$('.datatableRelatedReports span',domElem);if(!relatedReports.length){$('.datatableRelatedReports',domElem).hide();}
|
1038 |
relatedReports.each(function(){var clicked=this;$(this).unbind('click').click(function(e){var $this=$(this);var url=$this.attr('href');self.resetAllFilters();var newParams=broadcast.getValuesFromUrl(url);for(var key in newParams){self.param[key]=decodeURIComponent(newParams[key]);}
|
1122 |
*/
|
1123 |
(function($){$(function(){var headerMessageParent=$('#header_message').parent();initTopControls();headerMessageParent.on('click','#updateCheckLinkContainer',function(e){var headerMessage=$(this).closest('#header_message');var $titleElement=headerMessage.find('.title');if($titleElement.attr('target')){return;}
|
1124 |
e.preventDefault();var ajaxRequest=new ajaxHelper();ajaxRequest.setLoadingElement('#header_message .loadingPiwik');ajaxRequest.addParams({module:'CoreHome',action:'checkForUpdates'},'get');ajaxRequest.withTokenInUrl();$titleElement.addClass('activityIndicator');ajaxRequest.setCallback(function(response){headerMessage.fadeOut('slow',function(){response=$('#header_message',$('<div>'+response+'</div>'));$titleElement.removeClass('activityIndicator');var newVersionAvailable=response.hasClass('update_available');if(newVersionAvailable){headerMessage.replaceWith(response);headerMessage.show();}
|
1125 |
+
else{headerMessage.find('.title').html(_pk_translate('CoreHome_YouAreUsingTheLatestVersion'));headerMessage.show();setTimeout(function(){headerMessage.fadeOut('slow',function(){headerMessage.replaceWith(response);});},4000);}});});ajaxRequest.setFormat('html');ajaxRequest.send();return false;});headerMessageParent.on('click','#header_message',function(e){if(e.target.tagName.toLowerCase()!='a'){$(this).toggleClass('expanded');}});});}(jQuery));$(document).ready(function(){$('.accessibility-skip-to-content').click(function(e){$('a[name="main"]').attr('tabindex',-1).focus();$(window).scrollTo($('a[name="main"]'));});$("#mobile-top-menu").sideNav({closeOnClick:true,edge:'right'});$('.navbar.collapsible').collapsible();$('select').material_select();piwikHelper.registerShortcut('?',_pk_translate('CoreHome_ShortcutHelp'),function(event){if(event.altKey||$('.modal.open').length){return;}
|
1126 |
if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}
|
1127 |
var list=$('#shortcuthelp dl');list.empty();var keys=Object.keys(piwikHelper.shortcuts).sort();jQuery.each(keys,function(i,key){if(piwikHelper.shortcuts.hasOwnProperty(key)){list.append($('<dt />').append($('<kbd />').text(key)));list.append($('<dd />').text(piwikHelper.shortcuts[key]));}});var isMac=navigator.userAgent.indexOf('Mac OS X')!=-1;list.append($('<dt />').append($('<kbd />').text(_pk_translate(isMac?"CoreHome_MacPageUp":"CoreHome_HomeShortcut"))));list.append($('<dd />').text(_pk_translate('CoreHome_PageUpShortcutDescription')));list.append($('<dt />').append($('<kbd />').text(_pk_translate(isMac?"CoreHome_MacPageDown":"CoreHome_EndShortcut"))));list.append($('<dd />').text(_pk_translate('CoreHome_PageDownShortcutDescription')));piwikHelper.modalConfirm('#shortcuthelp');});});
|
1128 |
/*!
|
1926 |
(function(){angular.module('piwikApp').controller('ReportingMenuController',ReportingMenuController);ReportingMenuController.$inject=['$scope','piwik','$location','$timeout','reportingMenuModel','$rootScope','piwikUrl'];function ReportingMenuController($scope,piwik,$location,$timeout,menuModel,$rootScope,piwikUrl){var idSite=piwikUrl.getSearchParam('idSite');var period=piwikUrl.getSearchParam('period');var date=piwikUrl.getSearchParam('date');var segment=piwikUrl.getSearchParam('segment');var comparePeriods=piwikUrl.getSearchParam('comparePeriods');var compareDates=piwikUrl.getSearchParam('compareDates');var compareSegments=piwikUrl.getSearchParam('compareSegments');function markAllCategoriesAsInactive(){angular.forEach(menuModel.menu,function(cat){cat.active=false;});}
|
1927 |
function markAllCategoriesAndChildrenInactive(){angular.forEach(menuModel.menu,function(cat){cat.active=false;angular.forEach(cat.subcategories,function(subcat){subcat.active=false;if(subcat.isGroup&&subcat.subcategories){angular.forEach(subcat.subcategories,function(sub){sub.active=false;});}});});}
|
1928 |
$scope.menuModel=menuModel;function enterSubcategory(category,subcategory,subsubcategory){if(!category||!subcategory){return;}
|
1929 |
+
markAllCategoriesAndChildrenInactive();category.active=true;subcategory.active=true;if(subsubcategory){subcategory.name=subsubcategory.name;subsubcategory.active=true;}};$scope.makeUrl=function(category,subcategory){var params={idSite:idSite,period:period,date:decodeURIComponent(date),segment:decodeURIComponent(segment),category:category.id,subcategory:subcategory.id,};if(compareDates){params.compareDates=compareDates;}
|
1930 |
if(comparePeriods){params.comparePeriods=comparePeriods;}
|
1931 |
if(compareSegments){params.compareSegments=compareSegments;}
|
1932 |
return $.param(params);};$scope.loadCategory=function(category){if(category.active){category.active=false;}else{markAllCategoriesAsInactive();category.active=true;}
|
2458 |
* @link https://matomo.org
|
2459 |
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
2460 |
*/
|
2461 |
+
(function(){angular.module('piwikApp').directive('piwikPluginUpload',piwikPluginUpload);piwikPluginUpload.$inject=['piwik'];function piwikPluginUpload(piwik){return{restrict:'A',compile:function(element,attrs){return function(scope,element,attrs){$('.uploadPlugin').click(function(event){event.preventDefault();piwikHelper.modalConfirm('#installPluginByUpload',{});});$('#uploadPluginForm').submit(function(event){var $zipFile=$('[name=pluginZip]');var fileName=$zipFile.val();if(!fileName||'.zip'!=fileName.slice(-4)){event.preventDefault();alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));}else if($zipFile.data('maxSize')>0&&$zipFile[0].files[0].size>$zipFile.data('maxSize')*1048576){event.preventDefault();alert(_pk_translate('CorePluginsAdmin_FileExceedsUploadLimit'));}});};}};}})();
|
2462 |
/*!
|
2463 |
* Matomo - free/libre analytics platform
|
2464 |
*
|
classes/WpMatomo/Admin/SystemReport.php
CHANGED
@@ -52,6 +52,7 @@ class SystemReport {
|
|
52 |
|
53 |
private $not_compatible_plugins = array(
|
54 |
'background-manager', // Uses an old version of Twig and plugin is no longer maintained.
|
|
|
55 |
'data-tables-generator-by-supsystic', // uses an old version of twig causing some styles to go funny in the reporting and admin
|
56 |
'tweet-old-post-pro', // uses a newer version of monolog
|
57 |
'secupress', // see #369 depending on setting might have issues
|
@@ -1384,6 +1385,19 @@ class SystemReport {
|
|
1384 |
'comment' => get_option('stylesheet')
|
1385 |
);
|
1386 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1387 |
return $rows;
|
1388 |
}
|
1389 |
|
52 |
|
53 |
private $not_compatible_plugins = array(
|
54 |
'background-manager', // Uses an old version of Twig and plugin is no longer maintained.
|
55 |
+
'all-in-one-event-calendar', // Uses an old version of Twig
|
56 |
'data-tables-generator-by-supsystic', // uses an old version of twig causing some styles to go funny in the reporting and admin
|
57 |
'tweet-old-post-pro', // uses a newer version of monolog
|
58 |
'secupress', // see #369 depending on setting might have issues
|
1385 |
'comment' => get_option('stylesheet')
|
1386 |
);
|
1387 |
|
1388 |
+
|
1389 |
+
if ( is_plugin_active('better-wp-security/better-wp-security.php')) {
|
1390 |
+
if (method_exists('\ITSEC_Modules', 'get_setting')
|
1391 |
+
&& \ITSEC_Modules::get_setting( 'system-tweaks', 'long_url_strings' ) ) {
|
1392 |
+
$rows[] = array(
|
1393 |
+
'name' => 'iThemes Security Long URLs Enabled',
|
1394 |
+
'value' => true,
|
1395 |
+
'comment' => 'Tracking might not work because it looks like you have Long URLs disabled in iThemes Security. To fix this please go to "Security -> Settings -> System Tweaks" and disable the setting "Long URL Strings".',
|
1396 |
+
'is_error' => true,
|
1397 |
+
);
|
1398 |
+
}
|
1399 |
+
}
|
1400 |
+
|
1401 |
return $rows;
|
1402 |
}
|
1403 |
|
classes/WpMatomo/Admin/TrackingSettings.php
CHANGED
@@ -12,6 +12,7 @@ namespace WpMatomo\Admin;
|
|
12 |
use WpMatomo\Capabilities;
|
13 |
use WpMatomo\Settings;
|
14 |
use WpMatomo\Site;
|
|
|
15 |
use WpMatomo\TrackingCode\TrackingCodeGenerator;
|
16 |
|
17 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -112,6 +113,23 @@ class TrackingSettings implements AdminSettingsInterface {
|
|
112 |
|
113 |
$valid_currencies = $this->get_supported_currencies();
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
if ( empty( $_POST[ self::FORM_NAME ][Settings::SITE_CURRENCY] )
|
116 |
|| !array_key_exists( $_POST[ self::FORM_NAME ][Settings::SITE_CURRENCY], $valid_currencies ) ) {
|
117 |
$_POST[ self::FORM_NAME ][Settings::SITE_CURRENCY] = 'USD';
|
12 |
use WpMatomo\Capabilities;
|
13 |
use WpMatomo\Settings;
|
14 |
use WpMatomo\Site;
|
15 |
+
use WpMatomo\Site\Sync\SyncConfig as SiteConfigSync;
|
16 |
use WpMatomo\TrackingCode\TrackingCodeGenerator;
|
17 |
|
18 |
if ( ! defined( 'ABSPATH' ) ) {
|
113 |
|
114 |
$valid_currencies = $this->get_supported_currencies();
|
115 |
|
116 |
+
if ( !empty( $_POST[ self::FORM_NAME ]['tracker_debug'] ) ) {
|
117 |
+
$site_config_sync = new SiteConfigSync( $this->settings );
|
118 |
+
switch ($_POST[ self::FORM_NAME ]['tracker_debug']) {
|
119 |
+
case 'always':
|
120 |
+
$site_config_sync->set_config_value('Tracker', 'debug', 1);
|
121 |
+
$site_config_sync->set_config_value('Tracker', 'debug_on_demand', 0);
|
122 |
+
break;
|
123 |
+
case 'on_demand':
|
124 |
+
$site_config_sync->set_config_value('Tracker', 'debug', 0);
|
125 |
+
$site_config_sync->set_config_value('Tracker', 'debug_on_demand', 1);
|
126 |
+
break;
|
127 |
+
default:
|
128 |
+
$site_config_sync->set_config_value('Tracker', 'debug', 0);
|
129 |
+
$site_config_sync->set_config_value('Tracker', 'debug_on_demand', 0);
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
if ( empty( $_POST[ self::FORM_NAME ][Settings::SITE_CURRENCY] )
|
134 |
|| !array_key_exists( $_POST[ self::FORM_NAME ][Settings::SITE_CURRENCY], $valid_currencies ) ) {
|
135 |
$_POST[ self::FORM_NAME ][Settings::SITE_CURRENCY] = 'USD';
|
classes/WpMatomo/Admin/TrackingSettings/Forms.php
CHANGED
@@ -13,7 +13,9 @@
|
|
13 |
|
14 |
namespace WpMatomo\Admin\TrackingSettings;
|
15 |
|
|
|
16 |
use WpMatomo\Admin\TrackingSettings;
|
|
|
17 |
use WpMatomo\Settings;
|
18 |
|
19 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -134,7 +136,19 @@ class Forms {
|
|
134 |
*/
|
135 |
public function show_select( $id, $name, $options = array(), $description = '', $on_change = '', $is_hidden = false, $group_name = '', $hide_description = true, $global = true ) {
|
136 |
$options_list = '';
|
137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
if ( is_array( $options ) ) {
|
139 |
foreach ( $options as $key => $value ) {
|
140 |
$options_list .= sprintf( '<option value="%s"' . ( $key == $default ? ' selected="selected"' : '' ) . '>%s</option>', esc_attr( $key ), esc_html( $value ) );
|
13 |
|
14 |
namespace WpMatomo\Admin\TrackingSettings;
|
15 |
|
16 |
+
use Piwik\Config;
|
17 |
use WpMatomo\Admin\TrackingSettings;
|
18 |
+
use WpMatomo\Bootstrap;
|
19 |
use WpMatomo\Settings;
|
20 |
|
21 |
if ( ! defined( 'ABSPATH' ) ) {
|
136 |
*/
|
137 |
public function show_select( $id, $name, $options = array(), $description = '', $on_change = '', $is_hidden = false, $group_name = '', $hide_description = true, $global = true ) {
|
138 |
$options_list = '';
|
139 |
+
|
140 |
+
if ($id === 'tracker_debug' && !\WpMatomo::is_safe_mode() && !$this->settings->is_network_enabled()) {
|
141 |
+
Bootstrap::do_bootstrap();
|
142 |
+
if (Config::getInstance()->Tracker['debug']) {
|
143 |
+
$default = 'always';
|
144 |
+
} elseif (Config::getInstance()->Tracker['debug_on_demand']) {
|
145 |
+
$default = 'on_demand';
|
146 |
+
} else {
|
147 |
+
$default = 'disabled';
|
148 |
+
}
|
149 |
+
} else {
|
150 |
+
$default = $global ? $this->settings->get_global_option( $id ) : $this->settings->get_option( $id );
|
151 |
+
}
|
152 |
if ( is_array( $options ) ) {
|
153 |
foreach ( $options as $key => $value ) {
|
154 |
$options_list .= sprintf( '<option value="%s"' . ( $key == $default ? ' selected="selected"' : '' ) . '>%s</option>', esc_attr( $key ), esc_html( $value ) );
|
classes/WpMatomo/Admin/views/summary.php
CHANGED
@@ -37,7 +37,7 @@ $matomo_dashboard_nonce = wp_create_nonce(\WpMatomo\Admin\Summary::NONCE_DASHBOA
|
|
37 |
}
|
38 |
?>
|
39 |
<?php if ( ! $is_tracking ) { ?>
|
40 |
-
<div class="notice notice-warning"><p><?php esc_html_e( 'Matomo Tracking is not enabled.', 'matomo' ); ?></p></div>
|
41 |
<?php } ?>
|
42 |
<div class="wrap">
|
43 |
<div id="icon-plugins" class="icon32"></div>
|
37 |
}
|
38 |
?>
|
39 |
<?php if ( ! $is_tracking ) { ?>
|
40 |
+
<div class="notice notice-warning"><p><?php esc_html_e( 'Matomo Tracking is not enabled. If you have added the Matomo tracking code in a different way, for example using a consent plugin, then you can ignore this message.', 'matomo' ); ?></p></div>
|
41 |
<?php } ?>
|
42 |
<div class="wrap">
|
43 |
<div id="icon-plugins" class="icon32"></div>
|
classes/WpMatomo/Admin/views/tracking.php
CHANGED
@@ -215,6 +215,22 @@ if ( $was_updated ) {
|
|
215 |
$matomo_full_generated_tracking_group
|
216 |
);
|
217 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
echo $matomo_submit_button;
|
219 |
?>
|
220 |
|
215 |
$matomo_full_generated_tracking_group
|
216 |
);
|
217 |
|
218 |
+
$matomo_form->show_headline(esc_html__('For Developers', 'matomo'), 'matomo-track-option matomo-track-option-default matomo-track-option-disabled matomo-track-option-manually matomo-track-option-tagmanager');
|
219 |
+
|
220 |
+
$matomo_form->show_select(
|
221 |
+
'tracker_debug',
|
222 |
+
__( 'Tracker Debug Mode', 'matomo' ),
|
223 |
+
array(
|
224 |
+
'disabled' => esc_html__( 'Disabled (recommended)', 'matomo' ),
|
225 |
+
'always' => esc_html__( 'Always enabled', 'matomo' ),
|
226 |
+
'on_demand' => esc_html__( 'Enabled on demand', 'matomo' ),
|
227 |
+
),
|
228 |
+
__( 'For security and privacy reasons you should only enable this setting for as short time of a time as possible.', 'matomo' ),
|
229 |
+
'',
|
230 |
+
$matomo_is_not_tracking,
|
231 |
+
$matomo_full_generated_tracking_group . ' matomo-track-option-disabled matomo-track-option-manually matomo-track-option-tagmanager'
|
232 |
+
);
|
233 |
+
|
234 |
echo $matomo_submit_button;
|
235 |
?>
|
236 |
|
classes/WpMatomo/Site/Sync/SyncConfig.php
CHANGED
@@ -114,7 +114,7 @@ class SyncConfig
|
|
114 |
// need to update all config files
|
115 |
wp_schedule_single_event( time() + 5, ScheduledTasks::EVENT_SYNC );
|
116 |
|
117 |
-
}
|
118 |
Bootstrap::do_bootstrap();
|
119 |
$config = PiwikConfig::getInstance();
|
120 |
$the_group = $config->{$group};
|
114 |
// need to update all config files
|
115 |
wp_schedule_single_event( time() + 5, ScheduledTasks::EVENT_SYNC );
|
116 |
|
117 |
+
} elseif (!\WpMatomo::is_safe_mode()) {
|
118 |
Bootstrap::do_bootstrap();
|
119 |
$config = PiwikConfig::getInstance();
|
120 |
$the_group = $config->{$group};
|
matomo.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Description: The #1 Google Analytics alternative that gives you full control over your data and protects the privacy for your users. Free, secure and open.
|
5 |
* Author: Matomo
|
6 |
* Author URI: https://matomo.org
|
7 |
-
* Version: 4.1.
|
8 |
* Domain Path: /languages
|
9 |
* WC requires at least: 2.4.0
|
10 |
* WC tested up to: 4.8.0
|
4 |
* Description: The #1 Google Analytics alternative that gives you full control over your data and protects the privacy for your users. Free, secure and open.
|
5 |
* Author: Matomo
|
6 |
* Author URI: https://matomo.org
|
7 |
+
* Version: 4.1.2
|
8 |
* Domain Path: /languages
|
9 |
* WC requires at least: 2.4.0
|
10 |
* WC tested up to: 4.8.0
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
|
|
4 |
Tags: matomo,piwik,analytics,statistics,stats,tracking,ecommerce
|
5 |
Requires at least: 4.8
|
6 |
Tested up to: 5.6
|
7 |
-
Stable tag: 4.1.
|
8 |
Requires PHP: 7.2.5
|
9 |
License: GPLv3 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
4 |
Tags: matomo,piwik,analytics,statistics,stats,tracking,ecommerce
|
5 |
Requires at least: 4.8
|
6 |
Tested up to: 5.6
|
7 |
+
Stable tag: 4.1.2
|
8 |
Requires PHP: 7.2.5
|
9 |
License: GPLv3 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|