├── lang ├── am.json ├── ar.json ├── az.json ├── be.json ├── bn.json ├── bs.json ├── cy.json ├── dv.json ├── eo.json ├── fa.json ├── gl.json ├── hu.json ├── hy.json ├── is.json ├── ka.json ├── ko.json ├── ku.json ├── lb.json ├── lv.json ├── nn.json ├── si.json ├── sk.json ├── sl.json ├── te.json ├── th.json ├── tl.json ├── tzm.json ├── ur.json ├── vi.json ├── he.json ├── et.json ├── ro.json ├── lt.json ├── hr.json ├── ms.json ├── da.json ├── zh-tw.json ├── zh-cn.json ├── ja.json ├── fi.json ├── ru.json ├── cs.json ├── en.json ├── gu.json ├── nb.json ├── hi.json ├── tr.json ├── id.json ├── sr.json ├── eu.json ├── sv.json ├── bg.json ├── pl.json ├── nl.json ├── sq.json ├── pt-br.json ├── uk.json ├── it.json ├── ca.json ├── ga.json ├── pt.json ├── ta.json ├── fr.json ├── de.json ├── es-ar.json ├── es.json └── el.json ├── .github ├── FUNDING.yml └── workflows │ └── matomo-tests.yml ├── config ├── config.php └── tracker.php ├── vue ├── dist │ ├── umd.metadata.json │ └── ReferrersManager.umd.min.js └── src │ ├── index.ts │ ├── ManagePage │ └── ManagePage.vue │ ├── URLChecker │ └── URLChecker.vue │ ├── ManageSocials │ └── ManageSocials.vue │ └── ManageSearchEngines │ └── ManageSearchEngines.vue ├── screenshots ├── socials.jpg ├── check_url.jpg └── search_engines.jpg ├── templates └── index.twig ├── Menu.php ├── README.md ├── plugin.json ├── CHANGELOG.md ├── stylesheets └── styles.less ├── Activity ├── SocialAdded.php ├── SocialRemoved.php ├── SearchEngineAdded.php └── SearchEngineRemoved.php ├── Controller.php ├── ReferrersManager.php ├── API.php ├── Model.php └── LICENSE /lang/am.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/ar.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/az.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/be.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/bn.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/bs.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/cy.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/dv.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/eo.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/fa.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/gl.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/hu.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/hy.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/is.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/ka.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/ko.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/ku.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/lb.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/lv.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/nn.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/si.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/sk.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/sl.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/te.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/th.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/tl.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/tzm.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/ur.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /lang/vi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: sgiehl 2 | -------------------------------------------------------------------------------- /config/config.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /vue/src/index.ts: -------------------------------------------------------------------------------- 1 | /*! 2 | * Matomo - free/libre analytics platform 3 | * 4 | * @link https://matomo.org 5 | * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later 6 | */ 7 | 8 | export { default as ManagePage } from './ManagePage/ManagePage.vue'; 9 | export { default as ManageSearchEngines } from './ManageSearchEngines/ManageSearchEngines.vue'; 10 | export { default as ManageSocials } from './ManageSocials/ManageSocials.vue'; 11 | export { default as URLChecker } from './URLChecker/URLChecker.vue'; 12 | -------------------------------------------------------------------------------- /lang/ms.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddSocial": "Tambah rangkaian sosial baharu", 4 | "Hostname": "Nama hos", 5 | "PluginDescription": "Pemalam ini membolehkan untuk melihat dan mengurus enjin carian dan rangkaian sosial yang diiktiraf dengan Matomo.", 6 | "SearchEnginesAndSocialNetworks": "Enjin carian dan rangkaian sosial", 7 | "SearchEnginesList": "Senarai semua enjin carian yang dikenali oleh Matomo", 8 | "SocialsList": "Senarai semua sosial yang diketahui oleh Matomo" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lang/da.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "SearchEnginesAndSocialNetworks": "Søgemaskiner og sociale medier", 4 | "AddSocial": "Tilføj socialt medie", 5 | "SearchEnginesList": "Vis alle søgemaskiner, der er kendt af Matomo", 6 | "SocialsList": "Vis alle sociale medier, der er kendt af Matomo", 7 | "ManageSocialsAndEngines": "Administrer søgemaskiner og sociale netværk", 8 | "ManageSearchEngines": "Administrer søgemaskiner", 9 | "ManageSocials": "Administrer sociale netværk", 10 | "CommaSeparated": "(kommasepareret)" 11 | } 12 | } -------------------------------------------------------------------------------- /Menu.php: -------------------------------------------------------------------------------- 1 | addSystemItem( 21 | 'ReferrersManager_SearchEnginesAndSocialNetworks', 22 | $this->urlForAction('index'), 23 | $order = 20 24 | ); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Matomo Referrers Manager Plugin 2 | 3 | [![Plugin ReferrersManager Tests](https://github.com/sgiehl/piwik-plugin-ReferrersManager/actions/workflows/matomo-tests.yml/badge.svg)](https://github.com/sgiehl/piwik-plugin-ReferrersManager/actions/workflows/matomo-tests.yml) 4 | 5 | ## Description 6 | 7 | This plugin allows to view and manage custom search engines and social networks that are recognized with Matomo. 8 | Note: You can find the configuration panel for this plugin within the global administration. There are no changes done to the Matomo frontend/dashboard. 9 | 10 | ### Requirements 11 | 12 | [Matomo](https://github.com/matomo-org/matomo) 5.0.0-b1 or higher is required. 13 | 14 | ### Features 15 | 16 | - Shows a list of all search engines and social networks defined in Matomo core. 17 | - Ability to manage custom search engines and social networks 18 | - Ability to disable/enable Matomo's default social network list 19 | 20 | ## Support 21 | 22 | Please direct any feedback to [stefan@matomo.org](mailto:matomo@matomo.org) 23 | 24 | ## Contribute 25 | 26 | Feel free to create issues and pull requests. 27 | 28 | -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ReferrersManager", 3 | "version": "5.0.1", 4 | "description": "Allows to view and manage the search engines and social networks that Matomo is able to detect.", 5 | "keywords": ["referrer","search","engine","social"], 6 | "license": "GPL v3+", 7 | "homepage": "https://github.com/sgiehl/piwik-plugin-ReferrersManager", 8 | "require": { 9 | "matomo": ">=5.0.0-b1,<6.0.0-b1" 10 | }, 11 | "support": { 12 | "email": "stefan@matomo.org", 13 | "issues": "https://github.com/sgiehl/piwik-plugin-ReferrersManager/issues", 14 | "wiki": "https://github.com/sgiehl/piwik-plugin-ReferrersManager/issues", 15 | "source": "https://github.com/sgiehl/piwik-plugin-ReferrersManager/issues" 16 | }, 17 | "authors": [ 18 | { 19 | "name": "Stefan Giehl", 20 | "email": "stefan@matomo.org", 21 | "homepage": "https://github.com/sgiehl" 22 | } 23 | ], 24 | "donate": { 25 | "paypal": "stefangiehl@web.de", 26 | "flattr": "https://flattr.com/thing/3787742/sgiehlpiwik-plugin-ReferrersManager-on-GitHub" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Changelog 2 | 3 | __5.0.0__ 4 | 5 | * Migrate AngularJS components to Vue.js 6 | * Compatibility with Matomo 5 7 | 8 | __4.0.4__ 9 | 10 | * Minor code improvements 11 | * Translation updates 12 | 13 | __4.0.3__ 14 | 15 | * Small UI/UX improvements 16 | * Translation updates 17 | 18 | __4.0.2__ 19 | 20 | * Translation updates 21 | * Small UI improvements 22 | 23 | __4.0.1__ 24 | 25 | * Translation updates 26 | 27 | __4.0.0__ 28 | 29 | * Compatibility for Piwik 4.x 30 | 31 | __3.0.4__ 32 | 33 | * Piwik ist now Matomo 34 | 35 | __3.0__ 36 | 37 | * Compatibility for Piwik 3.x 38 | * Rewrote UI using angular JS 39 | * Materialised UI/UX 40 | * Searchable lists for search engines / social networks 41 | 42 | __1.9__ 43 | 44 | * Mark plugin as incompatible with 3.x 45 | * Translation updates 46 | 47 | __1.8__ 48 | 49 | * fixes minor bugs 50 | * adds possibility to refresh lists (clears caches) 51 | 52 | __1.7__ 53 | 54 | * Fix Compatibility with Piwik 2.16 55 | 56 | __1.6__ 57 | 58 | * Compatibility for Piwik > 2.15 / translation updates 59 | 60 | __1.5__ 61 | 62 | * Compatibility issues for older Piwik versions 63 | 64 | __1.4__ 65 | 66 | * Translation updates 67 | 68 | __1.3__ 69 | 70 | * Adjustments for new Piwik menu api 71 | 72 | __1.2__ 73 | 74 | * Compatibility fix for PHP < 5.4 75 | 76 | __1.1__ 77 | 78 | * Minor Changes 79 | 80 | __1.0__ 81 | 82 | * Initial release 83 | -------------------------------------------------------------------------------- /stylesheets/styles.less: -------------------------------------------------------------------------------- 1 | .url-checker { 2 | .engine, .keywords, .social { 3 | min-width: 150px; 4 | border-bottom: 1px solid #333; 5 | display: inline-block; 6 | margin-right: 20px; 7 | } 8 | 9 | .checkurlbutton { 10 | margin-bottom: 15px; 11 | } 12 | 13 | p.detectionresult, p.socialresult { 14 | margin: 10px 0; 15 | 16 | img { 17 | padding-right: 4px; 18 | } 19 | } 20 | } 21 | 22 | #referrersmanage { 23 | #socialTab, #searchengineTab { 24 | width: 100%; 25 | padding: 0; 26 | 27 | table { 28 | width: 100%; 29 | margin: 0; 30 | } 31 | } 32 | 33 | .add-element, .delete-element, .refresh-list { 34 | cursor: pointer; 35 | line-height: 20px; 36 | margin-top: 15px; 37 | display: inline-block; 38 | 39 | [class^="icon-"], [class*=" icon-"] { 40 | margin-right: 5px; 41 | } 42 | } 43 | 44 | .delete-element { 45 | margin-top: 0; 46 | } 47 | 48 | .refresh-list { 49 | margin-left: 10px; 50 | } 51 | 52 | .search-detections { 53 | float: right; 54 | } 55 | 56 | .tabs .tab a:focus, .tabs .tab a:focus.active { 57 | background-color: transparent; 58 | } 59 | 60 | .matomo-save-button+.matomo-save-button { 61 | margin-left: 4px; 62 | } 63 | } 64 | 65 | #removeDataConfirm .name { 66 | color: #f55; 67 | } -------------------------------------------------------------------------------- /Activity/SocialAdded.php: -------------------------------------------------------------------------------- 1 | [ 34 | [ 35 | 'type' => 'social', 36 | 'data' => [ 37 | 'name' => $finalAPIParameters['parameters']['name'], 38 | 'host' => $finalAPIParameters['parameters']['host'], 39 | ] 40 | ] 41 | ], 42 | ]; 43 | } 44 | 45 | /** 46 | * Returns the translated description of the logged event 47 | * 48 | * @param array $activityData 49 | * @param string $performingUser 50 | * @return string 51 | */ 52 | public function getTranslatedDescription($activityData, $performingUser) 53 | { 54 | return Piwik::translate('ReferrersManager_SocialAdded'); 55 | } 56 | } -------------------------------------------------------------------------------- /Activity/SocialRemoved.php: -------------------------------------------------------------------------------- 1 | getUserDefinedSocials(); 32 | $name = $userDefinedSocials[$host]; 33 | 34 | return [ 35 | 'items' => [ 36 | [ 37 | 'type' => 'searchengine', 38 | 'data' => [ 39 | 'name' => $name, 40 | 'host' => $host, 41 | ] 42 | ] 43 | ], 44 | ]; 45 | } 46 | 47 | /** 48 | * Returns the translated description of the logged event 49 | * 50 | * @param array $activityData 51 | * @param string $performingUser 52 | * @return string 53 | */ 54 | public function getTranslatedDescription($activityData, $performingUser) 55 | { 56 | return Piwik::translate('ReferrersManager_SocialRemoved'); 57 | } 58 | } -------------------------------------------------------------------------------- /Activity/SearchEngineAdded.php: -------------------------------------------------------------------------------- 1 | [ 34 | [ 35 | 'type' => 'searchengine', 36 | 'data' => [ 37 | 'name' => $finalAPIParameters['parameters']['name'], 38 | 'host' => $finalAPIParameters['parameters']['host'], 39 | ] 40 | ] 41 | ], 42 | ]; 43 | } 44 | 45 | /** 46 | * Returns the translated description of the logged event 47 | * 48 | * @param array $activityData 49 | * @param string $performingUser 50 | * @return string 51 | */ 52 | public function getTranslatedDescription($activityData, $performingUser) 53 | { 54 | return Piwik::translate('ReferrersManager_SearchEngineAdded'); 55 | } 56 | } -------------------------------------------------------------------------------- /Activity/SearchEngineRemoved.php: -------------------------------------------------------------------------------- 1 | getUserDefinedSearchEngines(); 32 | $name = $userDefinedSearchEngines[$host][0]; 33 | 34 | return [ 35 | 'items' => [ 36 | [ 37 | 'type' => 'searchengine', 38 | 'data' => [ 39 | 'name' => $name, 40 | 'host' => $host, 41 | ] 42 | ] 43 | ], 44 | ]; 45 | } 46 | 47 | /** 48 | * Returns the translated description of the logged event 49 | * 50 | * @param array $activityData 51 | * @param string $performingUser 52 | * @return string 53 | */ 54 | public function getTranslatedDescription($activityData, $performingUser) 55 | { 56 | return Piwik::translate('ReferrersManager_SearchEngineRemoved'); 57 | } 58 | } -------------------------------------------------------------------------------- /lang/zh-tw.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "新增搜尋引擎時發生錯誤。請檢查你的輸入內容並重試。", 4 | "AddSearchEngine": "新增搜尋引擎定義", 5 | "AddSocial": "新增社群網站", 6 | "AddSocialError": "新增社群網站時發生錯誤。請檢查你的輸入內容並重試。", 7 | "BacklinkPattern": "反向連結格式", 8 | "Charset": "編碼", 9 | "CheckUrl": "檢查搜尋引擎和社群網站的網址資訊", 10 | "CheckUrlDesc": "你可以在這裡貼上任何網址來檢查 Matomo 是否能辨識出該網址是搜尋引擎和/或是社群網站", 11 | "CheckUrlSend": "網址檢查", 12 | "CommaSeparated": "(以半形逗號分隔)", 13 | "ConfirmRemove": "你確定要從列表中刪除 %s?", 14 | "DetectedEngine": "偵測到的搜尋引擎", 15 | "DetectedKeywords": "偵測到的關鍵字", 16 | "DetectedSocial": "偵測到的社群網站", 17 | "DisableSocialList": "停用 Matomo 內建社群網站列表", 18 | "DuplicateHostnameInfo": "記住域名不能重複。重複的域名會覆蓋掉其他的。", 19 | "EnableSocialList": "啟用 Matomo 內建社群網站列表", 20 | "Hostname": "域名", 21 | "HostnameWildcardDesc": "針對不同地區的搜尋引擎,網址「{}.example.com」中的 {} 會以 ISO3166-1 alpha2 的國家代碼取代。同樣地,「example.{}」將會以有效的國家頂級域名取代,但須謹慎使用以防錯誤。", 22 | "ManageSearchEngines": "搜尋引擎管理", 23 | "ManageSocials": "社群網站管理", 24 | "ManageSocialsAndEngines": "搜尋引擎和社群網站管理", 25 | "Parameters": "參數", 26 | "PluginDescription": "這個外掛讓你查看並管理 Matomo 用來辨識的搜尋引擎和社群網站。", 27 | "ProvideEngineData": "請提供新的搜尋引擎資料。", 28 | "ProvideSocialData": "請提供新的社群網站資料。", 29 | "SearchEngineAdded": "新增自訂搜尋引擎", 30 | "SearchEngineRemoved": "移除自訂搜尋引擎", 31 | "SearchEnginesAndSocialNetworks": "搜尋引擎和社群網站", 32 | "SearchEnginesList": "Matomo 已知的搜尋引擎列表", 33 | "SocialAdded": "新增自訂社群網站", 34 | "SocialListDisabled": "注意:Matomo 內建的社群網站列表已停用。", 35 | "SocialRemoved": "移除自訂社群網站", 36 | "SocialsList": "Matomo 已知的社群網站列表", 37 | "UsingDefaultSocials": "你正在使用 Matomo 內建的社群網站列表。" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/zh-cn.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "PluginDescription": "这个插件可以查看和管理Matomo可以识别的搜索引擎和社交网络。", 4 | "SearchEnginesAndSocialNetworks": "搜索引擎和社交网络", 5 | "AddSocial": "添加新的社交网络", 6 | "Hostname": "主机名", 7 | "SearchEnginesList": "Matomo已知的所有搜索引擎列表", 8 | "SocialsList": "Matomo已知的所有社交列表", 9 | "ManageSocialsAndEngines": "管理搜索引擎和社交网络", 10 | "ConfirmRemove": "您真的要从列表中删除%s吗?", 11 | "ManageSearchEngines": "管理搜索引擎", 12 | "ManageSocials": "管理社交网络", 13 | "DetectedEngine": "检测引擎", 14 | "DetectedKeywords": "检测到的关键词", 15 | "DetectedSocial": "检测到的社交网络", 16 | "CheckUrl": "检查网址以获取搜索引擎和社交网络信息", 17 | "CheckUrlDesc": "在这里,您可以粘贴任何引荐来源网址,以检查Matomo是否会将其识别为搜索引擎和\/或社交网络", 18 | "CheckUrlSend": "检查网址", 19 | "AddSearchEngine": "添加搜索引擎定义", 20 | "Parameters": "参数", 21 | "BacklinkPattern": "反向链接模式", 22 | "Charset": "字符集", 23 | "AddEngineError": "添加搜索引擎时出错。 请检查您的输入,然后重试。", 24 | "CommaSeparated": "(以逗号分隔)", 25 | "AddSocialError": "添加社交内容时出错。 请检查您的输入,然后重试。", 26 | "SocialListDisabled": "注意:Matomo的内置社交网络列表已禁用。", 27 | "EnableSocialList": "激活Matomo的社交网络列表", 28 | "DisableSocialList": "禁用Matomo的社交网络列表", 29 | "UsingDefaultSocials": "您正在使用Matomo的内置社交网络列表。", 30 | "ProvideSocialData": "请提供新社交网络的数据。", 31 | "DuplicateHostnameInfo": "请记住,主机名必须是唯一的。 重复的主机名将覆盖另一个。", 32 | "ProvideEngineData": "请提供搜索引擎的数据。", 33 | "HostnameWildcardDesc": "对于特定地区的搜索引擎,URL“ {}.example.com”将与“ {}”匹配任何ISO3166-1 alpha2国家\/地区代码。 同样,“ example.{}”将与有效的国家\/地区顶级域名(TLD)相匹配,但应谨慎使用以避免误报。", 34 | "SearchEngineAdded": "添加了新的自定义搜索引擎", 35 | "SearchEngineRemoved": "删除了自定义搜索引擎", 36 | "SocialAdded": "添加了新的自定义社交网络", 37 | "SocialRemoved": "删除了自定义社交网络" 38 | } 39 | } -------------------------------------------------------------------------------- /Controller.php: -------------------------------------------------------------------------------- 1 | setBasicVariablesView($view); 33 | 34 | $view->ownSocialDefinitions = Model::getInstance()->areDefaultSocialsDisabled(); 35 | 36 | return $view->render(); 37 | } 38 | 39 | /** 40 | * Ajax action to check an url for search engine information that can be extracted 41 | * 42 | * @return string 43 | */ 44 | public function checkUrl() 45 | { 46 | Piwik::checkUserHasSuperUserAccess(); 47 | 48 | $urlToCheck = trim(Request::fromRequest()->getStringParameter('url', '')); 49 | 50 | Json::sendHeaderJSON(); 51 | return json_encode([ 52 | 'searchengine' => Model::getInstance()->detectSearchEngine($urlToCheck), 53 | 'social' => Model::getInstance()->detectSocial($urlToCheck), 54 | ]); 55 | } 56 | 57 | public function refresh() 58 | { 59 | Piwik::checkUserHasSuperUserAccess(); 60 | 61 | Json::sendHeaderJSON(); 62 | 63 | $type = Request::fromRequest()->getStringParameter('type', ''); 64 | 65 | if ($type === 'socials') { 66 | Model::getInstance()->clearSocialCache(); 67 | } else if ($type === 'searchengines') { 68 | Model::getInstance()->clearSearchEngineCache(); 69 | } 70 | 71 | return 1; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /lang/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "検索エンジンの追加時にエラーが発生しました。入力値を確認して、再試行してください。", 4 | "AddSearchEngine": "サーチエンジンの定義を追加", 5 | "AddSocial": "新しいソーシャルネットワークを追加", 6 | "AddSocialError": "ソーシャルを追加中にエラーが発生しました。入力値を確認して、再試行してください。", 7 | "BacklinkPattern": "被リンクパターン", 8 | "Charset": "Charset", 9 | "CheckUrl": "検索エンジンおよびソーシャルネットワーク情報のURLを確認してください", 10 | "CheckUrlDesc": "ここでは、Matomo が検索エンジンやソーシャルネットワークとして認識しているかどうかを確認するために、参照元の URL を貼り付けることができます", 11 | "CheckUrlSend": "URL を確認", 12 | "CommaSeparated": "( カンマ区切り )", 13 | "ConfirmRemove": "本当に %s をリストから削除しますか?", 14 | "DetectedEngine": "検出されたエンジン", 15 | "DetectedKeywords": "検出されたキーワード", 16 | "DetectedSocial": "検出されたソーシャルネットワーク", 17 | "DisableSocialList": "Matomo のソーシャルネットワークリストを無効にします", 18 | "DuplicateHostnameInfo": "ホスト名は一意である必要がある点に注意してください。重複したホスト名は上書きされます。", 19 | "EnableSocialList": "Matomo のソーシャルネットワークリストをアクティブにします", 20 | "Hostname": "ホスト名", 21 | "HostnameWildcardDesc": "地域固有の検索エンジンは、URL \"{}.example.com\" は \"{}\" に対して ISO3166-1 alpha2 国コードと一致します。同様に、 \"example.{}\" は有効な国の TLD に対して一致しますが、誤検出を避けるため慎重に使用する必要があります。", 22 | "ManageSearchEngines": "サーチエンジンの管理", 23 | "ManageSocials": "ソーシャルネットワークの管理", 24 | "ManageSocialsAndEngines": "検索エンジンとソーシャルネットワークの管理", 25 | "Parameters": "パラメーター", 26 | "PluginDescription": "このプラグインを使用すると、Matomo で認識されている検索エンジンとソーシャルネットワークを表示および管理できます。", 27 | "ProvideEngineData": "サーチエンジンのデータを入力してください。", 28 | "ProvideSocialData": "新しいソーシャルネットワークのデータを入力してください。", 29 | "SearchEngineAdded": "新しいカスタム検索エンジンを追加しました", 30 | "SearchEngineRemoved": "カスタム検索エンジンを削除しました", 31 | "SearchEnginesAndSocialNetworks": "サーチエンジンとソーシャルネットワーク", 32 | "SearchEnginesList": "Matomo が知っている全てのサーチエンジンのリスト", 33 | "SocialAdded": "新しいカスタムソーシャルネットワークを追加しました", 34 | "SocialListDisabled": "注意:Matomo 内のソーシャルネットワークリストが無効です。", 35 | "SocialRemoved": "カスタムソーシャルネットワークを削除しました", 36 | "SocialsList": "Matomo が知っているすべてのソーシャルリスト", 37 | "UsingDefaultSocials": "Matomo のソーシャル ネットワークのビルトインリストを使用しています。" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vue/src/ManagePage/ManagePage.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 39 | 40 | 70 | -------------------------------------------------------------------------------- /.github/workflows/matomo-tests.yml: -------------------------------------------------------------------------------- 1 | # Action for running tests 2 | # This file has been automatically created. 3 | # To recreate it you can run this command 4 | # ./console generate:test-action --plugin="ReferrersManager" --php-versions="7.2,8.2" --schedule-cron="10 2 * * 6" 5 | 6 | name: Plugin ReferrersManager Tests 7 | 8 | on: 9 | pull_request: 10 | types: [opened, synchronize] 11 | push: 12 | branches: 13 | - '**.x-dev' 14 | workflow_dispatch: 15 | schedule: 16 | - cron: "10 2 * * 6" 17 | 18 | permissions: 19 | actions: read 20 | checks: none 21 | contents: read 22 | deployments: none 23 | issues: read 24 | packages: none 25 | pull-requests: read 26 | repository-projects: none 27 | security-events: none 28 | statuses: none 29 | 30 | concurrency: 31 | group: php-${{ github.ref }} 32 | cancel-in-progress: true 33 | 34 | jobs: 35 | PluginTests: 36 | runs-on: ubuntu-20.04 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | php: [ '7.2', '8.2' ] 41 | target: ['minimum_required_matomo', 'maximum_supported_matomo'] 42 | steps: 43 | - uses: actions/checkout@v3 44 | with: 45 | lfs: true 46 | persist-credentials: false 47 | - name: Run tests 48 | uses: matomo-org/github-action-tests@main 49 | with: 50 | plugin-name: 'ReferrersManager' 51 | php-version: ${{ matrix.php }} 52 | test-type: 'PluginTests' 53 | matomo-test-branch: ${{ matrix.target }} 54 | artifacts-pass: ${{ secrets.ARTIFACTS_PASS }} 55 | upload-artifacts: ${{ matrix.php == '7.2' && matrix.target == 'maximum_supported_matomo' }} 56 | UI: 57 | runs-on: ubuntu-20.04 58 | steps: 59 | - uses: actions/checkout@v3 60 | with: 61 | lfs: true 62 | persist-credentials: false 63 | - name: running tests 64 | uses: matomo-org/github-action-tests@main 65 | with: 66 | plugin-name: 'ReferrersManager' 67 | matomo-test-branch: 'maximum_supported_matomo' 68 | test-type: 'UI' 69 | php-version: '7.2' 70 | node-version: '16' 71 | artifacts-pass: ${{ secrets.ARTIFACTS_PASS }} 72 | upload-artifacts: true 73 | -------------------------------------------------------------------------------- /lang/fi.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "PluginDescription": "Tämä liitännäinen mahdollistaa Matomon tunnistamien hakukoneiden ja sosiaalisten verkostojen katselun sekä hallinnan.", 4 | "SearchEnginesAndSocialNetworks": "Hakukoneet ja sosiaaliset verkostot", 5 | "AddSocial": "Lisää uusi sosiaalinen verkosto", 6 | "Hostname": "Isäntänimi", 7 | "SearchEnginesList": "Lista Matomon tunnistamista hakukoneista", 8 | "SocialsList": "Lista Matomon tunnistamista sosiaalisista verkostoista", 9 | "ManageSocialsAndEngines": "Hallitse hakukoneita ja sosiaalisia verkostoja", 10 | "ConfirmRemove": "Poistetaanko %s varmasti listalta?", 11 | "ManageSearchEngines": "Hallitse hakukoneita", 12 | "ManageSocials": "Hallitse sosiaalisia verkostoja", 13 | "DetectedEngine": "Havaittu hakukone", 14 | "DetectedKeywords": "Tunnistetut avainsanat", 15 | "DetectedSocial": "Havaittu sosiaalinen verkosto", 16 | "CheckUrl": "Tarkista osoitteen hakukone- ja sosiaalisten verkostojen tiedot", 17 | "CheckUrlSend": "Tarkista osoite", 18 | "AddSearchEngine": "Lisää hakukoneen tiedot", 19 | "Parameters": "Parametrit", 20 | "BacklinkPattern": "Paluulinkin muoto", 21 | "Charset": "Merkistö", 22 | "AddEngineError": "Hakukoneen lataamisessa tapahtui virhe. Tarkista syötteesi ja yritä uudelleen.", 23 | "CommaSeparated": "(pilkulla eroteltu)", 24 | "SocialListDisabled": "Huomio: Matomon sisäänrakennettu sosiaalisten verkostojen lista on pois käytöstä.", 25 | "EnableSocialList": "Aktivoi Matomon sosiaalisten verkostojen lista", 26 | "DisableSocialList": "Poista käytöstä Matomon sosiaalisten verkostojen lista", 27 | "UsingDefaultSocials": "Käytät Matomon sisäänrakennettua sosiaalisten verkostojen listaa.", 28 | "ProvideSocialData": "Syötä tiedot uudelle sosiaaliselle verkostolle.", 29 | "DuplicateHostnameInfo": "Huomioi, että osoitteen on oltava uniikki. Olemassaoleva osoite ylikirjoittaa edellisen osoitteen.", 30 | "ProvideEngineData": "Anna hakukoneen tiedot.", 31 | "SearchEngineAdded": "lisätty kustomoitu hakukone", 32 | "SearchEngineRemoved": "poistettu kustomoitu hakukone", 33 | "SocialAdded": "lisätty kustomoitu sosiaalinen verkosto", 34 | "SocialRemoved": "poistettu kustomoitu sosiaalinen verkosto" 35 | } 36 | } -------------------------------------------------------------------------------- /lang/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Во время добавления поисковой системы возникла ошибка. Пожалуйста, проверьте введенные данные и попробуйте снова.", 4 | "AddSearchEngine": "Добавить определение поисковой системы", 5 | "AddSocial": "Добавить новую социальную сеть", 6 | "AddSocialError": "Во время добавления социальной сети возникла ошибка. Пожалуйста, проверьте введенные данные и попробуйте снова.", 7 | "BacklinkPattern": "Шаблон обратных ссылок", 8 | "Charset": "Кодировка", 9 | "CheckUrl": "Проверьте URL-адрес поисковой системы и информации о социальных сетях", 10 | "CheckUrlDesc": "Здесь вы можете вставить любой URL-адрес реферера, чтобы проверить, распознает ли Matomo его как поисковую систему и/или социальную сеть", 11 | "CheckUrlSend": "Проверить URL-адрес", 12 | "CommaSeparated": "(разделенные запятыми)", 13 | "ConfirmRemove": "Вы действительно хотите удалить %s из списка?", 14 | "DetectedEngine": "Обнаруженная поисковая система", 15 | "DetectedKeywords": "Обнаруженные ключевые слова", 16 | "DetectedSocial": "Обнаруженная социальная сеть", 17 | "DisableSocialList": "Отключить список социальных сетей Matomo", 18 | "DuplicateHostnameInfo": "Помните, что имя хоста должно быть уникальным. Дублированное имя хоста затрет имеющееся.", 19 | "EnableSocialList": "Активировать список социальных сетей Matomo", 20 | "Hostname": "Имя хоста", 21 | "ManageSearchEngines": "Управлять поисковыми системами", 22 | "ManageSocials": "Управлять социальными сетями", 23 | "ManageSocialsAndEngines": "Управлять поисковыми системами и социальными сетями", 24 | "Parameters": "Параметры", 25 | "PluginDescription": "Этот плагин позволяет просматривать и управлять поисковыми движками и социальными сетями, которые распознает Matomo.", 26 | "ProvideEngineData": "Пожалуйста, добавьте информацию о поисковой системе.", 27 | "ProvideSocialData": "Пожалуйста, добавьте информацию о новой социальной сети.", 28 | "SearchEnginesAndSocialNetworks": "Поисковые системы и социальные сети", 29 | "SearchEnginesList": "Список всех поисковых роботов, знакомых Matomo", 30 | "SocialListDisabled": "Внимание: встроенный в Matomo список социальных сетей отключен.", 31 | "SocialsList": "Список всех социальных сетей, знакомых Matomo", 32 | "UsingDefaultSocials": "Вы используете встроенный список социальных сетей Matomo" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /lang/cs.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Chyba při přidávání vašeho vyhledávače. Zkontrolujte vstupy a zkuste to znovu.", 4 | "AddSearchEngine": "Přidat definici vyhledávače", 5 | "AddSocial": "Přidat novou sociální síť", 6 | "AddSocialError": "Chyba při přidávání sociální sítě. Zkontrolujte vstupní údaje a zkuste to znovu.", 7 | "BacklinkPattern": "Vzor zpětného odkazu", 8 | "Charset": "Znaková sada", 9 | "CheckUrl": "UEL pro kontrolu informací o vyhledávačích a sociálních sítích", 10 | "CheckUrlDesc": "Zde můžete vložit libovolnou URL referreru a dozvíte se, jestli ji Matomo rozpozná jako vyhledávač nebo sociální síť", 11 | "CheckUrlSend": "Ověřit URL", 12 | "CommaSeparated": "(oddělovaný čárkou)", 13 | "ConfirmRemove": "Opravdu chcete odstranit %s ze seznamu?", 14 | "DetectedEngine": "Detekovaný vyhledávač", 15 | "DetectedKeywords": "Detekovaná klíčová slova", 16 | "DetectedSocial": "Detekovaná sociální síť", 17 | "DisableSocialList": "Zakázat seznam sociálních sítí pro Matomo", 18 | "DuplicateHostnameInfo": "Mějte na paměti, že jméno hostitele musí být jedinečné. Duplikát přepíše předcházející.", 19 | "EnableSocialList": "Aktivovat seznam sociálních sítí pro Matomo", 20 | "Hostname": "Jméno hostitele", 21 | "HostnameWildcardDesc": "Pro na regionu závislé vyhledávače URL \"{}.example.com\" bude odpovídat libovolnému ISO3166-1 alpha2 kódu země z \"{}\". Podobně, \"example.{}\" bude odpovídat libovolné TLD země, ale to by mělo být použito zřídka, kvůli falešným shodám.", 22 | "ManageSearchEngines": "Spravovat vyhledávače", 23 | "ManageSocials": "Spravovat sociální sítě", 24 | "ManageSocialsAndEngines": "Spravovat vyhledávače a sociální sítě", 25 | "Parameters": "Parametry", 26 | "PluginDescription": "Tento zásuvný modul umožňuje spravovat vyhledávače a sociální sítě, které Matomo rozpozná.", 27 | "ProvideEngineData": "Prosím, zadejte data pro vyhledávač.", 28 | "ProvideSocialData": "Prosím, zadejte data pro novou sociální síť.", 29 | "SearchEngineAdded": "přidán nový vlastní vyhledávač", 30 | "SearchEngineRemoved": "odstraněn vlastní vyhledávač", 31 | "SearchEnginesAndSocialNetworks": "Vyhledávače a sociální sítě", 32 | "SearchEnginesList": "Seznam všech vyhledávačů, které Matomo zná", 33 | "SocialAdded": "přidána nová vlastní sociální síť", 34 | "SocialListDisabled": "Pozor: Vestavěný seznam sociálních sítí je zakázán.", 35 | "SocialRemoved": "odebrána vlastní sociální síť", 36 | "SocialsList": "Seznam všech sociálních sítí, které Matomo zná", 37 | "UsingDefaultSocials": "Používáte vestavěný seznam sociálních sítí pro Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "PluginDescription": "This plugin allows to view and manage search engines and social networks that are recognized with Matomo.", 4 | "SearchEnginesAndSocialNetworks": "Search engines and social networks", 5 | "AddSocial": "Add new social network", 6 | "Hostname": "Hostname", 7 | "SearchEnginesList": "List of all search engines known to Matomo", 8 | "SocialsList": "List of all socials known to Matomo", 9 | "ManageSocialsAndEngines": "Manage search engines and social networks", 10 | "ConfirmRemove": "Do your really want to remove %s from the list?", 11 | "ManageSearchEngines": "Manage search engines", 12 | "ManageSocials": "Manage social networks", 13 | "DetectedEngine": "Detected Engine", 14 | "DetectedKeywords": "Detected Keywords", 15 | "DetectedSocial": "Detected Social Network", 16 | "CheckUrl": "Check URL for search engine and social network information", 17 | "CheckUrlDesc": "Here you can paste any referrer url in order to check if Matomo would recognize it as a search engine and\/or a social network", 18 | "CheckUrlSend": "Check URL", 19 | "AddSearchEngine": "Add search engine definition", 20 | "Parameters": "Parameters", 21 | "BacklinkPattern": "Backlink pattern", 22 | "Charset": "Charset", 23 | "AddEngineError": "Error while adding the search engine. Please check your inputs and retry.", 24 | "CommaSeparated": "(comma separated)", 25 | "AddSocialError": "Error while adding the social. Please check your inputs and retry.", 26 | "SocialListDisabled": "Attention: Matomo's built-in list of social networks is disabled.", 27 | "EnableSocialList": "Activate Matomo's social network list", 28 | "DisableSocialList": "Disable Matomo's social network list", 29 | "UsingDefaultSocials": "You are using Matomo's built-in social network list.", 30 | "ProvideSocialData": "Please provide the data for the new social network.", 31 | "DuplicateHostnameInfo": "Keep in mind that the hostname needs to be unique. A duplicate hostname will overwrite the other.", 32 | "ProvideEngineData": "Please provide the data for the search engine.", 33 | "HostnameWildcardDesc": "For region-specific search engines, the URL, \"{}.example.com\" will match any ISO3166-1 alpha2 country code against \"{}\". Similarly, \"example.{}\" will match against valid country TLDs, but should be used sparingly to avoid false positives.", 34 | "SearchEngineAdded": "added a new custom search engine", 35 | "SearchEngineRemoved": "removed a custom search engine", 36 | "SocialAdded": "added a new custom social network", 37 | "SocialRemoved": "removed a custom social network" 38 | } 39 | } -------------------------------------------------------------------------------- /lang/gu.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "શોધ એન્જિન ઉમેરતી વખતે ભૂલ. કૃપા કરીને તમારા ઇનપુટ્સ તપાસો અને ફરીથી પ્રયાસ કરો.", 4 | "AddSearchEngine": "શોધ એન્જિન વ્યાખ્યા ઉમેરો", 5 | "AddSocial": "નવું સામાજિક નેટવર્ક ઉમેરો", 6 | "AddSocialError": "સામાજિક ઉમેરતી વખતે ભૂલ. કૃપા કરીને તમારા ઇનપુટ્સ તપાસો અને ફરી પ્રયાસ કરો.", 7 | "BacklinkPattern": "બેકલિંક પેટર્ન", 8 | "Charset": "અક્ષરસેટ", 9 | "CheckUrl": "સર્ચ એન્જિન અને સોશિયલ નેટવર્ક માહિતી માટે URL તપાસો", 10 | "CheckUrlDesc": "Matomo તેને સર્ચ એન્જિન અને/અથવા સોશિયલ નેટવર્ક તરીકે ઓળખશે કે કેમ તે તપાસવા માટે તમે અહીં કોઈપણ રેફરર url પેસ્ટ કરી શકો છો", 11 | "CheckUrlSend": "URL તપાસો", 12 | "CommaSeparated": "(અલ્પવિરામથી અલગ)", 13 | "ConfirmRemove": "શું તમે ખરેખર %s ને સૂચિમાંથી દૂર કરવા માંગો છો?", 14 | "DetectedEngine": "શોધાયેલ એન્જિન", 15 | "DetectedKeywords": "શોધાયેલ કીવર્ડ્સ", 16 | "DetectedSocial": "શોધાયેલ સામાજિક નેટવર્ક", 17 | "DisableSocialList": "Matomoની સામાજિક નેટવર્ક સૂચિને અક્ષમ કરો", 18 | "DuplicateHostnameInfo": "ધ્યાનમાં રાખો કે હોસ્ટનામ અનન્ય હોવું જરૂરી છે. ડુપ્લિકેટ હોસ્ટનામ બીજાને ઓવરરાઈટ કરશે.", 19 | "EnableSocialList": "Matomoની સોશિયલ નેટવર્ક સૂચિને સક્રિય કરો", 20 | "Hostname": "હોસ્ટનામ", 21 | "HostnameWildcardDesc": "પ્રદેશ-વિશિષ્ટ શોધ એંજીન માટે, URL, \"{}.example.com\" કોઈપણ ISO3166-1 alpha2 દેશના કોડ સાથે \"{}\" સાથે મેળ ખાશે. તેવી જ રીતે, \"ઉદાહરણ.{}\" માન્ય દેશના TLDs સાથે મેળ ખાશે, પરંતુ ખોટા હકારાત્મક ટાળવા માટે તેનો થોડો સમય ઉપયોગ કરવો જોઈએ.", 22 | "ManageSearchEngines": "શોધ એન્જિન મેનેજ કરો", 23 | "ManageSocials": "સામાજિક નેટવર્ક્સ મેનેજ કરો", 24 | "ManageSocialsAndEngines": "શોધ એન્જિન અને સામાજિક નેટવર્ક્સ મેનેજ કરો", 25 | "Parameters": "પેરામીટર્સ", 26 | "PluginDescription": "આ પ્લગઇન Matomo સાથે ઓળખાતા સર્ચ એન્જિન અને સોશિયલ નેટવર્કને જોવા અને સંચાલિત કરવાની મંજૂરી આપે છે.", 27 | "ProvideEngineData": "કૃપા કરીને સર્ચ એન્જિન માટે ડેટા પ્રદાન કરો.", 28 | "ProvideSocialData": "કૃપા કરીને નવા સામાજિક નેટવર્ક માટે ડેટા પ્રદાન કરો.", 29 | "SearchEngineAdded": "નવું કસ્ટમ સર્ચ એન્જિન ઉમેર્યું", 30 | "SearchEngineRemoved": "કસ્ટમ સર્ચ એન્જિન દૂર કર્યું", 31 | "SearchEnginesAndSocialNetworks": "શોધ એન્જિન અને સામાજિક નેટવર્ક્સ", 32 | "SearchEnginesList": "Matomo ને જાણીતા તમામ સર્ચ એન્જિનોની સૂચિ", 33 | "SocialAdded": "નવું કસ્ટમ સોશિયલ નેટવર્ક ઉમેર્યું", 34 | "SocialListDisabled": "ધ્યાન આપો: Matomoની સામાજિક નેટવર્ક્સની બિલ્ટ-ઇન સૂચિ અક્ષમ છે.", 35 | "SocialRemoved": "કસ્ટમ સોશિયલ નેટવર્ક કાઢી નાખ્યું", 36 | "SocialsList": "Matomo માટે જાણીતા તમામ સામાજિક લોકોની સૂચિ", 37 | "UsingDefaultSocials": "તમે Matomoની બિલ્ટ-ઇન સોશિયલ નેટવર્ક સૂચિનો ઉપયોગ કરી રહ્યાં છો." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/nb.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Kunne ikke legge til søkemotoren. Sjekk inndataen og prøv igjen.", 4 | "AddSearchEngine": "Legg en til søkemotordefinisjon", 5 | "AddSocial": "Legg til nytt sosialt nettverk", 6 | "AddSocialError": "Kunne ikke legge til det sosiale nettverket. Sjekk hva du har skrevet inn og prøv igjen.", 7 | "BacklinkPattern": "Tilbakelenkingsmønster", 8 | "Charset": "Tegnsett", 9 | "CheckUrl": "Sjekk nettadresse for info om søkemotor og sosiale nettverk", 10 | "CheckUrlDesc": "Her kan du lime inn en henviser-nettadresse for å sjekke om Matomo ville gjenkjent det som en søkemotor, eller et sosialt nettverk", 11 | "CheckUrlSend": "Sjekk URL", 12 | "CommaSeparated": "(kommaseparert)", 13 | "ConfirmRemove": "Vil du virkelig fjerne %s fra listen?", 14 | "DetectedEngine": "Oppdaget motor", 15 | "DetectedKeywords": "Gjenkjente nøkkelord", 16 | "DetectedSocial": "Oppdaget sosialt nettverk", 17 | "DisableSocialList": "Skru av Matomo sin sosiale nettverksliste", 18 | "DuplicateHostnameInfo": "Ha i minnet at vertsnavnet må være unikt. Et duplisert vertsnavn vil overskrive det andre.", 19 | "EnableSocialList": "Aktiver Matomo sin sosiale nettverksliste", 20 | "Hostname": "Vertsnavn", 21 | "HostnameWildcardDesc": "For regionspesifikke søkemotorer vil nettadressen «{}.example.com» samsvare med enhver ISO3166-1 alpha2-landskode mot «{}». På samme vis vil «example.{}» samsvare med gyldig lands-TLD-er, men bør brukes sparsomt for å unngå falske positiver.", 22 | "ManageSearchEngines": "Behandle søkemotorer", 23 | "ManageSocials": "Behandle sosiale nettverk", 24 | "ManageSocialsAndEngines": "Håndter søkemotorer og sosiale nettverk", 25 | "Parameters": "Parametere", 26 | "PluginDescription": "Dette programtillegget lar deg vise og håndtere søkemotorer og sosiale nettverks som gjenkjennes med Matomo.", 27 | "ProvideEngineData": "Angi dataen for søkemotoren.", 28 | "ProvideSocialData": "Angi dataen for det nye sosiale nettverket.", 29 | "SearchEngineAdded": "la til en ny egendefinert søkemotor", 30 | "SearchEngineRemoved": "fjernet en egendefinert søkemotor", 31 | "SearchEnginesAndSocialNetworks": "Søkemotorer og sosiale nettverk", 32 | "SearchEnginesList": "Liste over alle søkemotorer kjent av Matomo", 33 | "SocialAdded": "la til et nytt egendefinert sosialt nettverk", 34 | "SocialListDisabled": "Merk: Matomos innebygde liste over sosiale nettverk er avskrudd.", 35 | "SocialRemoved": "fjernet et egendefinert sosialt nettverk", 36 | "SocialsList": "Liste over alle sosiale nettverk som Matomo kjenner", 37 | "UsingDefaultSocials": "Du bruker Matomos innebygde liste over sosiale nettverk." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/hi.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "त्रुटि खोज इंजन जोड़ने। आपकी जानकारी के लिए जाँच करें और पुन: प्रयास करें ।", 4 | "AddSearchEngine": "खोज इंजन परिभाषा जोड़ें", 5 | "AddSocial": "नई सामाजिक नेटवर्क जोड़ें", 6 | "AddSocialError": "त्रुटि सामाजिक जोड़ने। आपकी जानकारी के लिए जाँच करें और पुन: प्रयास करें ।", 7 | "BacklinkPattern": "backlink पैटर्न", 8 | "Charset": "कॅरसेट", 9 | "CheckUrl": "खोज इंजन और सामाजिक नेटवर्क के बारे में जानकारी के लिए URL की जाँच करें", 10 | "CheckUrlDesc": "यहाँ आप Matomo एक खोज इंजन और / या एक सामाजिक नेटवर्क के रूप में पहचाना जाएगा अगर जांच के क्रम में किसी भी संदर्भ URL पेस्ट कर सकते हैं", 11 | "CheckUrlSend": "यूआरएल जांचें", 12 | "CommaSeparated": "(अल्पविराम से अलग)", 13 | "ConfirmRemove": "क्या आप सचमुच %s को सूची से हटाना चाहते हैं?", 14 | "DetectedEngine": "पता चला इंजन", 15 | "DetectedKeywords": "पता लगाया गया कीवर्ड", 16 | "DetectedSocial": "पता चला सामाजिक नेटवर्क", 17 | "DisableSocialList": "Matomo के सामाजिक नेटवर्क सूची अक्षम", 18 | "DuplicateHostnameInfo": "मेजबाननाम अद्वितीय की जरूरत है कि मन में रखो। कोई डुप्लिकेट होस्टनाम अन्य के ऊपर लिख देगा ।", 19 | "EnableSocialList": "Matomo के सामाजिक नेटवर्क सूची सक्रिय करें", 20 | "Hostname": "होस्ट नाम", 21 | "HostnameWildcardDesc": "क्षेत्र विशेष के खोज इंजन , यूआरएल, \"{ }.example.com\" के लिए \"{}\" के खिलाफ किसी भी ISO3166-1 alpha2 देश कोड मैच होगा। इसी तरह, \"example.{ }\" मान्य देश TLDs के खिलाफ मैच होगा, लेकिन झूठी सकारात्मक से बचने के लिए संयम से इस्तेमाल किया जाना चाहिए ।", 22 | "ManageSearchEngines": "खोज इंजन प्रबंधित करें", 23 | "ManageSocials": "सामाजिक नेटवर्क का प्रबंधन", 24 | "ManageSocialsAndEngines": "खोज इंजन और सामाजिक नेटवर्क का प्रबंधन", 25 | "Parameters": "पैरामीटर्स", 26 | "PluginDescription": "यह प्लगइन मैतोमो से मान्यता प्राप्त खोज इंजन और सामाजिक नेटवर्क को देखने और प्रबंधित करने की अनुमति देता है।", 27 | "ProvideEngineData": "खोज इंजन के लिए डेटा प्रदान करें।", 28 | "ProvideSocialData": "नई सामाजिक नेटवर्क के लिए डेटा प्रदान करें।", 29 | "SearchEngineAdded": "एक नया कस्टम खोज इंजन जोड़ा गया", 30 | "SearchEngineRemoved": "एक कस्टम खोज इंजन हटा दिया गया", 31 | "SearchEnginesAndSocialNetworks": "खोज इंजन और सामाजिक नेटवर्क", 32 | "SearchEnginesList": "Matomo करने के लिए जाना जाता है सभी खोज इंजन की सूची", 33 | "SocialAdded": "एक नया कस्टम सोशल नेटवर्क जोड़ा गया", 34 | "SocialListDisabled": "ध्यान दें: सामाजिक नेटवर्क के Matomo में बनाया सूची में अक्षम है।", 35 | "SocialRemoved": "एक कस्टम सोशल नेटवर्क हटा दिया गया", 36 | "SocialsList": "Matomo करने के लिए जाना जाता है सभी सामाजिक की सूची", 37 | "UsingDefaultSocials": "आप Matomo में बनाया सामाजिक नेटवर्क सूची का उपयोग कर रहे हैं।" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Arama motoru eklenirken bir sorun çıktı. Lütfen yazdığınız bilgileri denetleyip yeniden deneyin.", 4 | "AddSearchEngine": "Arama motoru açıklaması ekle", 5 | "AddSocial": "Yeni sosyal ağ ekle", 6 | "AddSocialError": "Sosyal ağ eklenirken bir sorun çıktı. Lütfen yazdığınız bilgileri denetleyip yeniden deneyin.", 7 | "BacklinkPattern": "Geri bağlantı modeli", 8 | "Charset": "Karakter kümesi", 9 | "CheckUrl": "Arama motoru ve sosyal ağ adresi denetimi", 10 | "CheckUrlDesc": "Yönlendirme adreslerini buraya yapıştırarak bu adresin Matomo tarafından arama motoru ya da sosyal ağ olarak tanınıp tanınmadığını denetleyebilirsiniz", 11 | "CheckUrlSend": "Adresi denetle", 12 | "CommaSeparated": "(virgül ile ayrılmış)", 13 | "ConfirmRemove": "%s ögesini silmek istediğinize emin misiniz?", 14 | "DetectedEngine": "Algılanan arama motoru", 15 | "DetectedKeywords": "Algılanan anahtar sözcükler", 16 | "DetectedSocial": "Algılanan sosyal ağ", 17 | "DisableSocialList": "Matomo sosyal ağ listesini kapat", 18 | "DuplicateHostnameInfo": "Sunucu adının eşsiz olması gerektiğini unutmayın. Var olan bir sunucu adı yazarsanız var olan bilgilerin üzerine yazılır.", 19 | "EnableSocialList": "Matomo sosyal ağ listesini etkinleştir", 20 | "Hostname": "Sunucu adı", 21 | "HostnameWildcardDesc": "Bölgeye özel arama motorları için, adres \"{}.site.com\" şeklinde yazıldığında \"{}\" yerine ISO3166-1 alpha2 ülke kodu bulunan adresler kabul edilir. Benzer şekilde \"site.{}\" yazıldığında ülke etki alanı uzantıları kullanılır. Bu biçim hatalı doğru sonuçlar verebileceğinden dikkatle kullanılmalıdır.", 22 | "ManageSearchEngines": "Arama motorları yönetimi", 23 | "ManageSocials": "Sosyal ağ yönetimi", 24 | "ManageSocialsAndEngines": "Arama motorları ve sosyal ağlar yönetimi", 25 | "Parameters": "Parametreler", 26 | "PluginDescription": "Bu eklenti Matomo tarafından tanınan arama motorları ve sosyal ağları görüntülemeyi ve yönetmeyi sağlar.", 27 | "ProvideEngineData": "Lütfen arama motoru verilerini yazın.", 28 | "ProvideSocialData": "Lütfen sosyal ağ verilerini yazın.", 29 | "SearchEngineAdded": "yeni bir arama motoru ekledi", 30 | "SearchEngineRemoved": "bir arama motorunu sildi", 31 | "SearchEnginesAndSocialNetworks": "Arama motorları ve sosyal ağlar", 32 | "SearchEnginesList": "Matomo tarafından tanınan tüm arama motorlarının listesi", 33 | "SocialAdded": "yeni bir sosyal ağ ekledi", 34 | "SocialListDisabled": "Dikkat: İç Matomo sosyal ağ listesi kapatılmış.", 35 | "SocialRemoved": "bir sosyal ağı sildi", 36 | "SocialsList": "Matomo tarafından tanınan sosyal ağların listesi", 37 | "UsingDefaultSocials": "İç Matomo sosyal ağ listesini kullanıyorsunuz." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/id.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Kesalahan saat menambahkan mesin pencari. Silakan periksa input Anda dan coba lagi.", 4 | "AddSearchEngine": "Tambahkan definisi mesin pencari", 5 | "AddSocial": "Tambah jejaring sosial baru", 6 | "AddSocialError": "Kesalahan saat menambahkan jejaring sosial. Silakan periksa input Anda dan coba lagi.", 7 | "BacklinkPattern": "Pola tautan balik", 8 | "Charset": "Pengodean karakter", 9 | "CheckUrl": "Periksa URL untuk mesin pencari dan informasi jejaring sosial", 10 | "CheckUrlDesc": "Di sini Anda dapat menempelkan url perujuk apa pun untuk memeriksa apakah Matomo akan mengenalinya sebagai mesin pencari dan/atau jejaring sosial", 11 | "CheckUrlSend": "Periksa URL", 12 | "CommaSeparated": "(dipisah koma)", 13 | "ConfirmRemove": "Apakah Anda benar-benar ingin menghapus %s dari daftar?", 14 | "DetectedEngine": "Mesin yang Terdeteksi", 15 | "DetectedKeywords": "Kata Kunci yang Terdeteksi", 16 | "DetectedSocial": "Jaringan Sosial yang Terdeteksi", 17 | "DisableSocialList": "Nonaktifkan daftar jejaring sosial Matomo", 18 | "DuplicateHostnameInfo": "Ingatlah bahwa nama host harus unik. Sebuah nama host duplikat akan menimpa yang lain.", 19 | "EnableSocialList": "Aktifkan daftar jejaring sosial Matomo", 20 | "Hostname": "Nama host", 21 | "HostnameWildcardDesc": "Untuk mesin pencari dengan kawasan khusus, URL, \"{}.contoh.com\" akan cocok dengan kode negara ISO3166-1 alpha2 dengan \"{}\". Demikian pula, \"contoh.{}\" akan cocok dengan TLD negara yang valid, tetapi harus digunakan dengan hemat untuk menghindari kesalahan positif.", 22 | "ManageSearchEngines": "Kelola mesin pencari", 23 | "ManageSocials": "Kelola jejaring sosial", 24 | "ManageSocialsAndEngines": "Kelola mesin pencari dan jejaring sosial", 25 | "Parameters": "Parameter", 26 | "PluginDescription": "Pengaya ini memungkinkan untuk melihat dan mengelola mesin pencari dan jejaring sosial yang dikenali dengan Matomo.", 27 | "ProvideEngineData": "Harap berikan data untuk mesin pencari.", 28 | "ProvideSocialData": "Harap berikan data untuk jejaring sosial baru.", 29 | "SearchEngineAdded": "menambahkan mesin pencari khusus baru", 30 | "SearchEngineRemoved": "menghapus mesin pencari khusus", 31 | "SearchEnginesAndSocialNetworks": "Mesin pencari dan jejaring sosial", 32 | "SearchEnginesList": "Daftar semua mesin pencari yang diketahui Matomo", 33 | "SocialAdded": "menambahkan jejaring sosial khusus baru", 34 | "SocialListDisabled": "Perhatian: Daftar jejaring sosial bawaan Matomo dinonaktifkan.", 35 | "SocialRemoved": "menghapus jejaring sosial khusus", 36 | "SocialsList": "Daftar semua jejaring sosial yang diketahui Matomo", 37 | "UsingDefaultSocials": "Anda menggunakan daftar jejaring sosial bawaan Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/sr.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "PluginDescription": "Pomoću ovog dodatka možete da upravljate pretraživačima i društvenim mrežama koje Matomo poznaje.", 4 | "SearchEnginesAndSocialNetworks": "Pretraživači i društvene mreže", 5 | "AddSocial": "Dodavanje društvene mreže", 6 | "Hostname": "Naziv hosta", 7 | "SearchEnginesList": "Spisak svih društvenih mreža za koje Matomo zna", 8 | "SocialsList": "Spisak društvenih mreža za koje Matomo zna", 9 | "ManageSocialsAndEngines": "Upravljanje pretraživačima i društvenim mrežama", 10 | "ConfirmRemove": "Da li zaista želite da uklonite %s sa liste?", 11 | "ManageSearchEngines": "Upravljanje pretraživačima", 12 | "ManageSocials": "Upravljanje društvenim mrežama", 13 | "DetectedEngine": "Prepoznat pretraživač", 14 | "DetectedKeywords": "Prepoznate ključne reči", 15 | "DetectedSocial": "Prepoznate društvene mreže", 16 | "CheckUrl": "Provera URL-a za informacije o pretraživačima i društvenim mrežama", 17 | "CheckUrlDesc": "Ovde možete da upišete bilo koji URL kako biste proverili da li će ga Matomo prepoznati kao pretraživač ili društvenu mrežu.", 18 | "CheckUrlSend": "Proveri URL", 19 | "AddSearchEngine": "Dodavanje definicije pretraživača", 20 | "Parameters": "Parametri", 21 | "BacklinkPattern": "Šablon povratnog linka", 22 | "Charset": "Kodni raspored", 23 | "AddEngineError": "Greška u dodavanju pretraživača. Molimo vas da proverite unos i pokušate ponovo.", 24 | "CommaSeparated": "(razdvojeno zapetama)", 25 | "AddSocialError": "Greška u dodavanju društvene mreže. Molimo vas da proverite unos i pokušate ponovo.", 26 | "SocialListDisabled": "Pažnja: Matomo-ova ugrađena lista društvenih mreža je isključena.", 27 | "EnableSocialList": "Aktiviraj Matomo-ovu listu društvenih mreža", 28 | "DisableSocialList": "Isključi Matomo-ovu listu društvenih mreža", 29 | "UsingDefaultSocials": "Koristite Matomo-ovu ugrađenu listu društvenih mreža", 30 | "ProvideSocialData": "Molimo vas da unesete podatke nove društvene mreže.", 31 | "DuplicateHostnameInfo": "Imajte na umu da naziv hosta mora da bude jedinstven. Dupli naziv će obrisati prethodne podatke.", 32 | "ProvideEngineData": "Molimo vas da unesete podatke o pretraživaču.", 33 | "HostnameWildcardDesc": "Za pretraživače koji su specifični za jedan region, URL, \"{}.example.com\" će se poklopiti sa bilo kojim ISO3166-1 alpha2 kodom zemlje \"{}\". Slično tome, \"example.{}\" će se poklopiti sa bilo kojim validnim top domenom zemalja ali treba biti oprezan kako bi se izbegla lažna poklapanja.", 34 | "SearchEngineAdded": "dodat nov korisnički pretraživač", 35 | "SearchEngineRemoved": "uklonjen korisnički pretraživač", 36 | "SocialAdded": "dodata nova korisnička društvena mreža", 37 | "SocialRemoved": "uklonjena korisnička društvena mreža" 38 | } 39 | } -------------------------------------------------------------------------------- /lang/eu.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Errorea bilatzailea gehitzean. Egiaztatu sarrerak eta saiatu berriro.", 4 | "AddSearchEngine": "Gehitu bilatzailearen definizioa", 5 | "AddSocial": "Gehitu sare sozial berria", 6 | "AddSocialError": "Errorea sare soziala gehitzean. Egiaztatu sarrerak eta saiatu berriro.", 7 | "BacklinkPattern": "Atzerako estekaren eredua", 8 | "Charset": "Karaktere-jokoa", 9 | "CheckUrl": "Egiaztatu URLa bilatzaileen eta sare sozialen informaziorako", 10 | "CheckUrlDesc": "Hemen edozein erreferentzia-egileren URLa itsatsi dezakezu, Matomok bilatzaile edota sare sozial bezala ezagutzen duen egiaztatzeko", 11 | "CheckUrlSend": "Egiaztatu URLa", 12 | "CommaSeparated": "(komaz banatuak)", 13 | "ConfirmRemove": "Ziur zaude %s kendu nahi duzula zerrendatik?", 14 | "DetectedEngine": "Detektatutako motorra", 15 | "DetectedKeywords": "Detektatutako gako-hitzak", 16 | "DetectedSocial": "Detektatutako sare soziala", 17 | "DisableSocialList": "Desgaitu Matomoren sare sozialen zerrenda", 18 | "DuplicateHostnameInfo": "Kontuan izan ostalari-izenak esklusiboa izan behar duela. Bikoiztutako ostalari-izen batek lehena gainidatziko du.", 19 | "EnableSocialList": "Aktibatu Matomoren sare sozialen zerrenda", 20 | "Hostname": "Ostalari-izena", 21 | "HostnameWildcardDesc": "Eskualde zehatz bateko bilatzaileentzat,\"{}.adibidea.eus\" URLan \"{}\" bat etorriko da ISO3166-1 alpha2 estandarreko edozein herrialde koderekin. Modu berean, \"adibidea.{}\" bat etorriko da herrialdeen baliozko edozein TLDrekin, baina tamainan erabili behar da, positibo faltsuak saihesteko.", 22 | "ManageSearchEngines": "Kudeatu bilatzaileak", 23 | "ManageSocials": "Kudeatu sare sozialak", 24 | "ManageSocialsAndEngines": "Kudeatu bilatzaileak eta sare sozialak", 25 | "Parameters": "Parametroak", 26 | "PluginDescription": "Plugin honek aukera ematen dizu Matomok ezagutzen dituen bilatzaile eta sare sozialak ikusi eta kudeatzeko.", 27 | "ProvideEngineData": "Eman bilatzailearen datuak.", 28 | "ProvideSocialData": "Eman sare sozial berriaren datuak.", 29 | "SearchEngineAdded": "bilatzaile pertsonalizatu berri bat gehitu da", 30 | "SearchEngineRemoved": "bilatzaile pertsonalizatu berri bat kendu da", 31 | "SearchEnginesAndSocialNetworks": "Bilatzaileak eta sare sozialak", 32 | "SearchEnginesList": "Matomok ezagutzen dituen bilatzaileen zerrenda", 33 | "SocialAdded": "sare sozial pertsonalizatu berri bat gehitu da", 34 | "SocialListDisabled": "Kontuz: Matomon integratutako sare sozialen zerrenda desgaituta dago.", 35 | "SocialRemoved": "sare sozial pertsonalizatu berri bat kendu da", 36 | "SocialsList": "Matomok ezagutzen dituen sare sozialen zerrenda", 37 | "UsingDefaultSocials": "Matomon integratutako sare sozialen zerrenda erabiltzen ari zara." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/sv.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Ett fel uppstod när sökmotorn skulle läggas till. Vänligen kontrollera fälten och försök igen.", 4 | "AddSearchEngine": "Lägg till definition av sökmotor", 5 | "AddSocial": "Lägg till ett nytt socialt nätverk", 6 | "AddSocialError": "Ett fel uppstod när det sociala nätverket skulle läggas till. Vänligen kontrollera fälten och försök igen.", 7 | "BacklinkPattern": "Tillbakalänksmönster", 8 | "Charset": "teckenuppsättning", 9 | "CheckUrl": "Kontrollera URL och information för sökmotor samt socialt nätverk", 10 | "CheckUrlDesc": "Här kan du klistra in någon hänvisningsadress för att kontrollera om Matomo skulle känna igen det som en sökmotor och/eller ett socialt nätverk", 11 | "CheckUrlSend": "Kontrollera URL", 12 | "CommaSeparated": "(kommaseparerad)", 13 | "ConfirmRemove": "Vill du verkligen ta bort %s från listan?", 14 | "DetectedEngine": "Upptäckt sökmotor", 15 | "DetectedKeywords": "Hittade nyckelord", 16 | "DetectedSocial": "Upptäckt socialt nätverk", 17 | "DisableSocialList": "Inaktivera Matomo lista över sociala nätverk", 18 | "DuplicateHostnameInfo": "Tänk på att värdnamnet behöver vara unikt. En kopia av värdnamnet kommer skriva över det andra.", 19 | "EnableSocialList": "Aktivera Matomo lista över sociala nätverk", 20 | "Hostname": "Värdnamn", 21 | "HostnameWildcardDesc": "För regionsspecifika sökmotorer Kommer URL'en \"{}.example.com\" matcha alla ISO3166-1 alpha2 landskoder mot \"{}\". Likaså kommer \"example.{}\" matcha mot giltiga landsspecifika toppdomäner men bör användas sparsamt för att undvika \"false positives\".", 22 | "ManageSearchEngines": "Hantera sökmotorer", 23 | "ManageSocials": "Hantera sociala nätverk", 24 | "ManageSocialsAndEngines": "Hantera sökmotorer och sociala nätverk", 25 | "Parameters": "Parametrar", 26 | "PluginDescription": "Detta tillägg ger tillgång till att lista och hantera sökmotorer och sociala nätverk som känns igen av Matomo.", 27 | "ProvideEngineData": "Vänligen skriv in datan för sökmotorn.", 28 | "ProvideSocialData": "Vänligen skriv in datan för det nya sociala nätverket.", 29 | "SearchEngineAdded": "lagt till en ny anpassad sökmotor", 30 | "SearchEngineRemoved": "tog bort en anpassad sökmotor", 31 | "SearchEnginesAndSocialNetworks": "Sökmotorer och sociala nätverk", 32 | "SearchEnginesList": "Lista över alla sökmotorer som Matomo känner till", 33 | "SocialAdded": "lagt till ett nytt anpassat socialt nätverk", 34 | "SocialListDisabled": "Noteringen: Matomo inbyggda listning av sociala nätverk är inaktiverad.", 35 | "SocialRemoved": "tog bort ett anpassat socialt nätverk", 36 | "SocialsList": "Lista över alla sociala nätverk som Matomo känner till", 37 | "UsingDefaultSocials": "Du använder Matomo inbyggda lista över sociala nätverk." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/bg.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Грешка при добавяне на търсачката. Моля, проверете въведените данни и опитайте отново.", 4 | "AddSearchEngine": "Добавете дефиниция на търсачка", 5 | "AddSocial": "Добавете нова социална мрежа", 6 | "AddSocialError": "Грешка при добавяне на социалната мрежа. Моля, проверете въведените данни и опитайте отново.", 7 | "BacklinkPattern": "Модел за обратна връзка", 8 | "Charset": "Набор от символи", 9 | "CheckUrl": "Проверете URL за информация за търсачката и социалната мрежа", 10 | "CheckUrlDesc": "Тук можете да поставите всеки препращащ URL адрес, за да проверите дали Matomo ще го разпознае като търсачка и/или социална мрежа", 11 | "CheckUrlSend": "Проверете URL", 12 | "CommaSeparated": "(разделено със запетая)", 13 | "ConfirmRemove": "Наистина ли искате да премахнете %s от списъка?", 14 | "DetectedEngine": "Открит енджин", 15 | "DetectedKeywords": "Открити ключови думи", 16 | "DetectedSocial": "Открита социална мрежа", 17 | "DisableSocialList": "Деактивирайте списъка със социални мрежи на Matomo", 18 | "DuplicateHostnameInfo": "Имайте предвид, че името на хоста трябва да е уникално. Дублирано име на хост ще замени другото.", 19 | "EnableSocialList": "Активирайте списъка със социални мрежи на Matomo", 20 | "Hostname": "Име на хост", 21 | "HostnameWildcardDesc": "За специфични за региона търсачки, URL адресът „{}.example.com“ ще съответства на всеки ISO3166-1 алфа2 код на държава срещу „{}“. По същия начин, „example.{}“ ще съвпада с валидни TLD за държави, но трябва да се използва пестеливо, за да се избегнат фалшиви положителни резултати.", 22 | "ManageSearchEngines": "Управление на търсещите машини", 23 | "ManageSocials": "Управление на социалните мрежи", 24 | "ManageSocialsAndEngines": "Управлявайте търсачките и социалните мрежи", 25 | "Parameters": "Параметри", 26 | "PluginDescription": "Този плъгин позволява да преглеждате и управлявате търсачките и социалните мрежи, които са разпознати от Matomo.", 27 | "ProvideEngineData": "Моля, предоставете данните за търсачката.", 28 | "ProvideSocialData": "Моля, предоставете данните за новата социална мрежа.", 29 | "SearchEngineAdded": "добави нова персонализирана търсачка", 30 | "SearchEngineRemoved": "премахна персонализирана търсачка", 31 | "SearchEnginesAndSocialNetworks": "Търсачки и социални мрежи", 32 | "SearchEnginesList": "Списък на всички търсачки, известни на Matomo", 33 | "SocialAdded": "добави нова персонализирана социална мрежа", 34 | "SocialListDisabled": "Внимание: Вграденият списък със социални мрежи на Matomo е деактивиран.", 35 | "SocialRemoved": "премахна персонализирана социална мрежа", 36 | "SocialsList": "Списък на всички социални мрежи, известни на Matomo", 37 | "UsingDefaultSocials": "Използвате вградения списък със социални мрежи на Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/pl.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "PluginDescription": "Wtyczka umożliwia przeglądanie i zarządzanie wyszukiwarkami oraz sieciami społecznościowymi rozpoznawanymi przez Matomo.", 4 | "SearchEnginesAndSocialNetworks": "Wyszukiwarki i sieci społecznościowe", 5 | "AddSocial": "Dodaj nową sieć społecznościową", 6 | "Hostname": "Nazwa hosta", 7 | "SearchEnginesList": "Lista wyszukiwarek znanych Matomo", 8 | "SocialsList": "Lista społecznościówek znanych Matomo", 9 | "ManageSocialsAndEngines": "Zarządzaj wyszukiwarkami i sieciami społecznościowymi", 10 | "ConfirmRemove": "Czy na pewno chcesz usunąć z listy %s?", 11 | "ManageSearchEngines": "Zarządzaj wyszukiwarkami", 12 | "ManageSocials": "Zarządzaj sieciami społecznościowymi", 13 | "DetectedEngine": "Wykryty silnik", 14 | "DetectedKeywords": "Wykryte słowa kluczowe", 15 | "DetectedSocial": "Wykryta sieć społecznościowa", 16 | "CheckUrl": "Sprawdź adres URL wyszukiwarki lub sieci społecznościowej", 17 | "CheckUrlDesc": "Wklej tu dowolny adres odsyłacza aby sprawdzić czy Matomo rozpozna go jako wyszukiwarkę i\/lub sieć społecznościową", 18 | "CheckUrlSend": "Sprawdzany adres", 19 | "AddSearchEngine": "Dodaj definicję wyszukiwarki", 20 | "Parameters": "Parametry", 21 | "BacklinkPattern": "Wzorzec linku zwrotnego", 22 | "Charset": "Zestaw znaków", 23 | "AddEngineError": "Błąd podczas dodawania wyszukiwarki. Sprawdź wprowadzone dane i spróbuj ponownie.", 24 | "CommaSeparated": "(rozdzielane przecinkami)", 25 | "AddSocialError": "Błąd podczas dodawania społecznościówki. Sprawdź wprowadzone dane i spróbuj ponownie.", 26 | "SocialListDisabled": "UWAGA: wbudowana lista sieci społecznościowych Matomo jest wyłączona.", 27 | "EnableSocialList": "Włącz listę sieci społecznościowych Matomo", 28 | "DisableSocialList": "Wyłącz listę sieci społecznościowych Matomo", 29 | "UsingDefaultSocials": "Korzystasz z wbudowanej listy sieci społecznościowych Matomo", 30 | "ProvideSocialData": "Proszę wprowadź dane nowej sieci społecznościowej.", 31 | "DuplicateHostnameInfo": "Pamiętaj że nazwa hosta musi być unikalna. Wpis z powieloną nazwą hosta spowoduje nadpisanie wcześniejszego wpisu.", 32 | "ProvideEngineData": "Proszę podaj dane wyszukiwarki.", 33 | "HostnameWildcardDesc": "W przypadku regionalnych wyszukiwarek, adres, \"{}.example.com\" zostanie dopasowany do dowolnego kodu kraju zawierającego się w ISO3166-1 alpha2 przez \"{}\". Podobnie \"example.{}\" zostanie dopasowane do dowolnej krajowej domeny TLD. Prosimy o ostrożność w stosowaniu, aby zapobiec błędnym dopasowaniom.", 34 | "SearchEngineAdded": "dodano nową spersonalizowaną wyszukiwarkę", 35 | "SearchEngineRemoved": "usunięto spersonalizowaną wyszukiwarkę", 36 | "SocialAdded": "dodano nową spersonalizowaną sieć społecznościową", 37 | "SocialRemoved": "usunięto spersonalizowaną sieć społecznościową" 38 | } 39 | } -------------------------------------------------------------------------------- /lang/nl.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Fout opgtereden tijdens het toevoegen van de zoekmachine. Gelieve je invoer te controleren en opnieuw te proberen.", 4 | "AddSearchEngine": "Voeg zoekmachine definities toe", 5 | "AddSocial": "Nieuw sociaal netwerk toevoegen", 6 | "AddSocialError": "Fout opgetereden tijdens het toevoegen van het sociaal netwerk. Controleer wat je hebt opgegeven en probeer opnieuw.", 7 | "BacklinkPattern": "Referer patroon", 8 | "Charset": "Karakterset", 9 | "CheckUrl": "Controleer de URL voor zoekmachine en sociale netwerk", 10 | "CheckUrlDesc": "Hier kan je een refererende URL plakken om te controleren of Matomo deze herkent als zoekmachine en/of een social netwerk", 11 | "CheckUrlSend": "Controleer de URL", 12 | "CommaSeparated": "(komma gescheiden)", 13 | "ConfirmRemove": "Weet je zeker dat je %s wil verwijderen van de lijst?", 14 | "DetectedEngine": "Gedetecteerde engine", 15 | "DetectedKeywords": "Gedetecteerde sleutelwoorden", 16 | "DetectedSocial": "Gedetecteerd sociaal netwerk", 17 | "DisableSocialList": "Schakel Matomo's sociale netwerken lijst uit", 18 | "DuplicateHostnameInfo": "Onthoud goed dat een hostname uniek moet zijn. Een dubbele hostname overschrijft de andere.", 19 | "EnableSocialList": "Activeer Matomo's sociale netwerken lijst", 20 | "Hostname": "Hostnaam", 21 | "HostnameWildcardDesc": "Voor regiospecifieke zoekmachines zal de URL, \"{}.example.com\" overeenkomen met elke ISO3166-1 alpha2 landcode voor \"{}\". Analoog zal \"example.{}\" overeenkomen met geldige land-TLD'en, maar dit moet met voorzichtigheid gebruikt worden om valse positieven te vermijden.", 22 | "ManageSearchEngines": "Zoekmachines beheren", 23 | "ManageSocials": "Sociale netwerken beheren", 24 | "ManageSocialsAndEngines": "Zoekmachines en sociale netwerken beheren", 25 | "Parameters": "Parameters", 26 | "PluginDescription": "Met deze plugin kunnen de zoekmachines en social media netwerken, welke herkent worden door Matomo bekeken en beheert worden.", 27 | "ProvideEngineData": "Verstrek a.u.b. de data voor de zoekmachine.", 28 | "ProvideSocialData": "Verstrek a.u.b. de data het nieuwe sociale netwerk.", 29 | "SearchEngineAdded": "nieuwe aangepaste zoekmachine toegevoegd", 30 | "SearchEngineRemoved": "aangepaste zoekmachine verwijderd", 31 | "SearchEnginesAndSocialNetworks": "Zoekmachines en sociale netwerken", 32 | "SearchEnginesList": "Lijst van alle zoekmachines die bekend zijn in Matomo", 33 | "SocialAdded": "nieuw aangepast sociaal netwerk toegevoegd", 34 | "SocialListDisabled": "Opmerking; Matomo's ingebouwde lijst van sociale netwerken is uitgeschakeld.", 35 | "SocialRemoved": "aangepast sociaal netwerk verwijderd", 36 | "SocialsList": "Lijst van alle social netwerken bekend in Matomo", 37 | "UsingDefaultSocials": "Je gebruikt de ingebouwde sociale netwerk lijst in Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/sq.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Gabim teksa shtohej motori i kërkimeve. Ju lutemi, kontrolloni çka dhatë dhe riprovoni.", 4 | "AddSearchEngine": "Shtoni përkufizim motori kërkimesh", 5 | "AddSocial": "Shtoni rrjet të ri shoqëror", 6 | "AddSocialError": "Gabim teksa shtohej rrjeti shoqëror. Ju lutemi, kontrolloni çka dhatë dhe riprovoni.", 7 | "BacklinkPattern": "Mostër paslidhjeje", 8 | "Charset": "Kodim shkronjash", 9 | "CheckUrl": "URL kontrolli për hollësi mbi motorë kërkimesh dhe rrjete shoqërorë", 10 | "CheckUrlDesc": "Këtu mund të hidhni çfarëdo URL-je sjellësi, për të kontrolluar nëse do ta njohë Matomo si motor kërkimi dhe/ose rrjet shoqëror", 11 | "CheckUrlSend": "Kontrollo URL-në", 12 | "CommaSeparated": "(ndarë me presje)", 13 | "ConfirmRemove": "Doni vërtet të hiqet %s nga lista?", 14 | "DetectedEngine": "Motor i Pikasur", 15 | "DetectedKeywords": "Fjalëkyça të Pikasur", 16 | "DetectedSocial": "U pikas Rrjet Shoqëror", 17 | "DisableSocialList": "Çaktivizoni listën Matomo të rrjeteve shoqërore", 18 | "DuplicateHostnameInfo": "Mbani parasysh se strehëemri lypset të jetë unik. Një strehëemër i përsëdytur do ta mbishkruajë tjetrin.", 19 | "EnableSocialList": "Aktivizoni listë Matomo të rrjeteve shoqërore", 20 | "Hostname": "Strehëemër", 21 | "HostnameWildcardDesc": "Për motorë kërkimesh specifikë për rajone, URL-ja, “{}.example.com” do të kërkojë përputhje për çfarëdo kodi vendi ISO3166-1 alpha2 me “{}”. Në mënyrë të ngjashme, “example.{}” do të kërkojë përputhje me TLD-ra të vlefshme vendesh, por duhet përdorur me kursim, për të shmangur sinjalizime të pavërteta nga programi.", 22 | "ManageSearchEngines": "Administroni motorë kërkimesh", 23 | "ManageSocials": "Administroni rrjete shoqërore", 24 | "ManageSocialsAndEngines": "Administroni motorë kërkimesh dhe rrjete shoqërorë", 25 | "Parameters": "Parametra", 26 | "PluginDescription": "Kjo shtojcë lejon të shihen dhe administrohen motorë kërkimesh dhe rrjete shoqërorë që njihen nga Matomo.", 27 | "ProvideEngineData": "Ju lutemi, jepni të dhënat për motorin e kërkimeve.", 28 | "ProvideSocialData": "Ju lutemi, jepni të dhënat për rrjetin e ri shoqëror.", 29 | "SearchEngineAdded": "u shtua një motor i ri vetjak kërkimesh", 30 | "SearchEngineRemoved": "u hoq një motor vetjak kërkimesh", 31 | "SearchEnginesAndSocialNetworks": "Motorë kërkimesh dhe rrjete shoqërore", 32 | "SearchEnginesList": "Listë e krejt motorëve të kërkimit të njohur nga Matomo", 33 | "SocialAdded": "u shtua një rrjet shoqëror i ri vetjak", 34 | "SocialListDisabled": "Vini re: Lista e brendshme për rrjete shoqërore e Matomo-s është e çaktivizuar.", 35 | "SocialRemoved": "u hoq një rrjet vetjak shoqëror", 36 | "SocialsList": "Listë e krejt rrjeteve shoqërore të njohura nga Matomo", 37 | "UsingDefaultSocials": "Po përdorni listën e brendshme të Matomo-s të rrjeteve shoqërore." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/pt-br.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Erro ao adicionar o motor de busca. Por favor verifique suas entradas e tente novamente.", 4 | "AddSearchEngine": "Adicionar definição do motor de busca", 5 | "AddSocial": "Adicionar nova rede social", 6 | "AddSocialError": "Erro ao adicionar a social. Por favor verifique suas entradas e tente novamente.", 7 | "BacklinkPattern": "Padrão do backlink", 8 | "Charset": "Conjunto de caracteres", 9 | "CheckUrl": "Verifique a URL para informações do motor de busca e rede social", 10 | "CheckUrlDesc": "Aqui você pode colar qualquer URL de um referenciador para verificar se o Matomo reconhece-o como um motor de busca e/ou uma rede social", 11 | "CheckUrlSend": "Verificar URL", 12 | "CommaSeparated": "(vírgula separada)", 13 | "ConfirmRemove": "Você realmente deseja remover %s da lista?", 14 | "DetectedEngine": "Mecanismo Detectado", 15 | "DetectedKeywords": "Palavras-chave detectadas", 16 | "DetectedSocial": "Rede Social Detectada", 17 | "DisableSocialList": "Desativar lista de redes sociais do Matomo", 18 | "DuplicateHostnameInfo": "Tenha em mente que o nome do host precisa ser único. Um nome de host duplicado irá sobrescrever o outro.", 19 | "EnableSocialList": "Ative a llista de redes sociais do Matomo", 20 | "Hostname": "Hostname | Nome do Host", 21 | "HostnameWildcardDesc": "Para os motores de busca específicos da região, a URL, \"{}.example.com\" irá corresponder a qualquer código de país alpha2 ISO3166-1 com \"{}\". Da mesma forma, \"example.{}\" irá corresponder a válidas TLDs de países, mas deve ser usado com moderação para evitar falsos positivos.", 22 | "ManageSearchEngines": "Gerenciar motores de busca", 23 | "ManageSocials": "Gerenciar redes sociais", 24 | "ManageSocialsAndEngines": "Gerencia mecanismos de buscas e redes sociais", 25 | "Parameters": "Parâmetros", 26 | "PluginDescription": "Este plugin permite visualizar e gerenciar os motores de busca e redes sociais que são reconhecidos com o Matomo.", 27 | "ProvideEngineData": "Por favor, forneça os dados para o motor de busca.", 28 | "ProvideSocialData": "Por favor, forneça os dados para a nova rede social.", 29 | "SearchEngineAdded": "adicionado um novo motor de busca personalizado", 30 | "SearchEngineRemoved": "removido um motor de busca personalizado", 31 | "SearchEnginesAndSocialNetworks": "Mecanismos de buscas e redes sociais", 32 | "SearchEnginesList": "Lista de todos os motores de busca conhecidos pelo Matomo", 33 | "SocialAdded": "adicionado uma nova rede social personalizada", 34 | "SocialListDisabled": "Atenção: a lista interna das redes sociais do Matomo está desativada.", 35 | "SocialRemoved": "removido uma rede social personalizada", 36 | "SocialsList": "Lista de todas as sociais conhecidas do Matomo", 37 | "UsingDefaultSocials": "Você está utilizando uma lista embutida de rede sociais do Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/uk.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Під час додавання пошукової системи виникла помилка. Будь ласка, перевірте введені дані і спробуйте знову.", 4 | "AddSearchEngine": "Додати визначення пошукової системи", 5 | "AddSocial": "Додати нову соціальну мережу", 6 | "AddSocialError": "Під час додавання соціальної мережі виникла помилка. Будь ласка, перевірте введені дані і спробуйте знову.", 7 | "BacklinkPattern": "Зворотній візерунок", 8 | "Charset": "Кодування", 9 | "CheckUrl": "Перевірте URL для пошукової системи і інформації в соціальній мережі", 10 | "CheckUrlDesc": "Тут ви можете вставити будь-яку URL для переходу, щоб перевірити, чи Matomo буде розпізнавати його як пошуковик і/або соціальну мережі", 11 | "CheckUrlSend": "Перевірте URL", 12 | "CommaSeparated": "(розділені комами)", 13 | "ConfirmRemove": "Ви дійсно хочете видалити %s зі списку?", 14 | "DetectedEngine": "Виявлена пошукова система", 15 | "DetectedKeywords": "Виявлені ключові слова", 16 | "DetectedSocial": "Виявлена соціальна мережа", 17 | "DisableSocialList": "Відключити список соціальних мереж Matomo", 18 | "DuplicateHostnameInfo": "Пам'ятайте, що ім'я хоста повинно бути унікальним. Дубльоване ім'я хоста затре наявне.", 19 | "EnableSocialList": "Задіяти список соціальних мереж Matomo", 20 | "Hostname": "Ім'я хосту", 21 | "HostnameWildcardDesc": "Для конкретних регіональних пошукових систем, для URL, \"{}.example.com\" повинно відповідати будь-якому ISO3166-1 alpha2 коду країни але \"{}\". аналогічним чином, \"example.{}\" буде збігатися з дійсною в країні торговою маркою, але це слід використовувати з обережністю, щоб уникнути помилкових спрацьовувань.", 22 | "ManageSearchEngines": "Керувати пошуковими системами", 23 | "ManageSocials": "Керувати соціальними мережами", 24 | "ManageSocialsAndEngines": "Керувати пошуковими системами і соціальними мережами", 25 | "Parameters": "Параметри", 26 | "PluginDescription": "Цей плагін дозволяє переглядати і управляти пошуковими системами і соціальними мережами, які розпізнає Matomo.", 27 | "ProvideEngineData": "Будь ласка, додайте інформацію про пошукову систему.", 28 | "ProvideSocialData": "Будь ласка, додайте інформацію про нову соціальну мережу.", 29 | "SearchEngineAdded": "додано нову користувальницьку пошукову систему", 30 | "SearchEngineRemoved": "видалено користувальницьку пошукову систему", 31 | "SearchEnginesAndSocialNetworks": "Пошук і соц. мережі", 32 | "SearchEnginesList": "Список всіх пошукових систем, відомих Matomo", 33 | "SocialAdded": "додано нову користувальницьку соціальну мережу", 34 | "SocialListDisabled": "Увага: вбудований в Matomo список соціальних мереж відключений.", 35 | "SocialRemoved": "видалено користувальницьку соціальну мережу", 36 | "SocialsList": "Список всіх соціальних мереж відомих Matomo", 37 | "UsingDefaultSocials": "Ви використовуєте вбудований список соціальних мереж Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/it.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "PluginDescription": "Questo plugin consente di visualizzare e gestire i motori di ricerca e i social networks che sono riconosciuti da Matomo.", 4 | "SearchEnginesAndSocialNetworks": "Motori di ricerca e social networks", 5 | "AddSocial": "Aggiungi un nuovo social network", 6 | "Hostname": "Nome host", 7 | "SearchEnginesList": "Elenco di tutti i motori di ricerca noti a Matomo", 8 | "SocialsList": "Elenco di tutti i social noti a Matomo", 9 | "ManageSocialsAndEngines": "Gestione motori di ricerca e social networks", 10 | "ConfirmRemove": "Vuoi proprio eliminare %s dall'elenco?", 11 | "ManageSearchEngines": "Gestione motori di ricerca", 12 | "ManageSocials": "Gestione social networks", 13 | "DetectedEngine": "Motore Rilevato", 14 | "DetectedKeywords": "Parole chiave Rilevate", 15 | "DetectedSocial": "Social Network Rilevato", 16 | "CheckUrl": "Controlla l'URL del motore di ricerca e le informazioni del social network", 17 | "CheckUrlDesc": "Qui puoi incollare un qualunque referrer url per verificare se Matomo lo riconosce come motore di ricerca e\/o social network", 18 | "CheckUrlSend": "Controlla URL", 19 | "AddSearchEngine": "Aggiungi la definizione per un motore di ricerca", 20 | "Parameters": "Parametri", 21 | "BacklinkPattern": "Modello backlink", 22 | "Charset": "Charset", 23 | "AddEngineError": "Errore durante l'aggiunta del motore di ricerca. Si prega di controllare i dati inseriti e di riprovare.", 24 | "CommaSeparated": "(separati da virgola)", 25 | "AddSocialError": "Errore durante l'aggiunta del social. Si prega di controllare i dati inseriti e di riprovare.", 26 | "SocialListDisabled": "Attenzione: l'elenco predefinito di social networks di Matomo è disabilitato.", 27 | "EnableSocialList": "Attiva l'elenco di social networks di Matomo", 28 | "DisableSocialList": "Disabilita l'elenco di social networks di Matomo", 29 | "UsingDefaultSocials": "Stai utilizzando l'elenco di social networks di Matomo.", 30 | "ProvideSocialData": "Si prega di fornire i dati del nuovo social network.", 31 | "DuplicateHostnameInfo": "Ricorda che il nome host deve essere unico. Un nome host duplicato sovrascriverà l'altro.", 32 | "ProvideEngineData": "Si prega di fornire i dati del motore di ricerca.", 33 | "HostnameWildcardDesc": "Per motori di ricerca specifici per alcune regioni, l'URL, \"{}.example.com\" corrisponderà a tutti i codici nazione ISO3166-1 alpha2 che contengono \"{}\". In modo simile, \"example.{}\" corrisponderà a dei TLD nazione validi ma va usato con parsimonia per evitare dei falsi positivi.", 34 | "SearchEngineAdded": "è stato aggiunto un nuovo motore di ricerca personalizzato", 35 | "SearchEngineRemoved": "è stato rimosso un motore di ricerca personalizzato", 36 | "SocialAdded": "è stato aggiunto un nuovo social network personalizzato", 37 | "SocialRemoved": "è stato rimosso un social network personalizzato" 38 | } 39 | } -------------------------------------------------------------------------------- /lang/ca.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "S'ha produït un error en afegir el motor de cerca. Comprova les teves entrades i torna-ho a provar.", 4 | "AddSearchEngine": "Afegeix la definició del motor de cerca", 5 | "AddSocial": "Afegeix una nova xarxa social", 6 | "AddSocialError": "S'ha produït un error en afegir la xarxa social. Comprova les teves entrades i torna-ho a provar.", 7 | "BacklinkPattern": "Patró d'enllaços de retorn", 8 | "Charset": "Conjunt de caracters", 9 | "CheckUrl": "Comproveu l'URL per obtenir informació sobre el motor de cerca i la xarxa social", 10 | "CheckUrlDesc": "Aquí podeu enganxar qualsevol URL de referent per comprovar si Matomo el reconeixeria com a motor de cerca i/o xarxa social", 11 | "CheckUrlSend": "Comproveu l'URL", 12 | "CommaSeparated": "(separat per comes)", 13 | "ConfirmRemove": "Realment voleu eliminar %s de la llista?", 14 | "DetectedEngine": "Motor detectat", 15 | "DetectedKeywords": "Paraules clau detectades", 16 | "DetectedSocial": "Xarxa social detectada", 17 | "DisableSocialList": "Desactiva la llista de xarxes socials de Matomo", 18 | "DuplicateHostnameInfo": "Tingueu en compte que el nom d'hoste ha de ser únic. Un nom d'hoste duplicat sobreescriurà l'altre.", 19 | "EnableSocialList": "Activa la llista de xarxes socials de Matomo", 20 | "Hostname": "Nom d'hoste", 21 | "HostnameWildcardDesc": "Per als motors de cerca específics d'una regió, l'URL \"{}.example.com\" coincidirà amb qualsevol codi de país ISO3166-1 alfa2 amb \"{}\". De la mateixa manera, \"exemple.{}\" coincidirà amb els TLD de països vàlids, però s'ha d'utilitzar amb moderació per evitar falsos positius.", 22 | "ManageSearchEngines": "Gestiona els motors de cerca", 23 | "ManageSocials": "Gestionar les xarxes socials", 24 | "ManageSocialsAndEngines": "Gestionar cercadors i xarxes socials", 25 | "Parameters": "Paràmetres", 26 | "PluginDescription": "Aquest connector permet visualitzar i gestionar els cercadors i les xarxes socials que es reconeixen amb Matomo.", 27 | "ProvideEngineData": "Proporcioneu les dades del motor de cerca.", 28 | "ProvideSocialData": "Si us plau proporcioneu les dades de la nova xarxa social.", 29 | "SearchEngineAdded": "s'ha afegit un nou motor de cerca personalitzat", 30 | "SearchEngineRemoved": "s'ha eliminat un motor de cerca personalitzat", 31 | "SearchEnginesAndSocialNetworks": "Cercadors i xarxes socials", 32 | "SearchEnginesList": "Llista de tots els motors de cerca coneguts per Matomo", 33 | "SocialAdded": "s'ha afegit una nova xarxa social personalitzada", 34 | "SocialListDisabled": "Atenció: la llista integrada de xarxes socials de Matomo està desactivada.", 35 | "SocialRemoved": "s'ha eliminat una xarxa social personalitzada", 36 | "SocialsList": "Llista de totes les xarxes socials conegudes per Matomo", 37 | "UsingDefaultSocials": "Esteu utilitzant la llista de xarxes socials integrada de Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/ga.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Earráid agus an t-inneall cuardaigh á chur leis. Seiceáil d'ionchuir agus bain triail eile as.", 4 | "AddSearchEngine": "Cuir sainmhíniú inneall cuardaigh leis", 5 | "AddSocial": "Cuir líonra sóisialta nua leis", 6 | "AddSocialError": "Earráid agus an sóisialta á chur leis. Seiceáil d'ionchuir agus bain triail eile as.", 7 | "BacklinkPattern": "Patrún backlink", 8 | "Charset": "Tacar Carachtair", 9 | "CheckUrl": "Seiceáil an URL le haghaidh faisnéise inneall cuardaigh agus líonra sóisialta", 10 | "CheckUrlDesc": "Anseo is féidir leat aon url atreoraithe a ghreamú le seiceáil an n-aithneodh Matomo mar inneall cuardaigh agus/nó líonra sóisialta é", 11 | "CheckUrlSend": "Seiceáil URL", 12 | "CommaSeparated": "(comma scartha)", 13 | "ConfirmRemove": "An bhfuil tú cinnte ag iarraidh %s a bhaint den liosta?", 14 | "DetectedEngine": "Inneall Braite", 15 | "DetectedKeywords": "Eochairfhocail Braite", 16 | "DetectedSocial": "Líonra Sóisialta Braite", 17 | "DisableSocialList": "Díchumasaigh liosta líonra sóisialta Matomo", 18 | "DuplicateHostnameInfo": "Coinnigh i gcuimhne go gcaithfidh an óstainm a bheith uathúil. Déanfaidh óstainm dúblach an ceann eile a fhorscríobh.", 19 | "EnableSocialList": "Gníomhachtaigh liosta líonra sóisialta Matomo", 20 | "Hostname": "Óstainm", 21 | "HostnameWildcardDesc": "Maidir le hinnill chuardaigh a bhaineann go sonrach le réigiúin, meaitseálfaidh an URL, \"{}.example.com\" cód tíre ar bith ISO3166-1 alpha2 in aghaidh \"{}\". Ar an gcaoi chéanna, meaitseálfaidh \"example.{}\" le TLDanna bailí na tíre, ach ba chóir é a úsáid go coigilteach chun dearfacha bréagacha a sheachaint.", 22 | "ManageSearchEngines": "Bainistigh innill chuardaigh", 23 | "ManageSocials": "Bainistigh líonraí sóisialta", 24 | "ManageSocialsAndEngines": "Bainistigh innill chuardaigh agus líonraí sóisialta", 25 | "Parameters": "Paraiméadair", 26 | "PluginDescription": "Ceadaíonn an breiseán seo innill chuardaigh agus líonraí sóisialta atá aitheanta le Matomo a fheiceáil agus a bhainistiú.", 27 | "ProvideEngineData": "Tabhair na sonraí don inneall cuardaigh.", 28 | "ProvideSocialData": "Tabhair na sonraí don líonra sóisialta nua le do thoil.", 29 | "SearchEngineAdded": "chuir inneall cuardaigh saincheaptha nua leis", 30 | "SearchEngineRemoved": "baineadh inneall cuardaigh saincheaptha", 31 | "SearchEnginesAndSocialNetworks": "Innill chuardaigh agus líonraí sóisialta", 32 | "SearchEnginesList": "Liosta de na hinnill chuardaigh ar fad atá ar eolas ag Matomo", 33 | "SocialAdded": "cuireadh líonra sóisialta saincheaptha nua leis", 34 | "SocialListDisabled": "Aird: Tá liosta ionsuite Matomo de líonraí sóisialta díchumasaithe.", 35 | "SocialRemoved": "bhaint líonra sóisialta saincheaptha", 36 | "SocialsList": "Liosta de na socials ar fad ar eolas ag Matomo", 37 | "UsingDefaultSocials": "Tá tú ag baint úsáide as liosta líonra sóisialta ionsuite Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "PluginDescription": "Esta extensão permite-lhe ver e gerir motores de pesquisa e redes sociais que são reconhecidas com o Matomo.", 4 | "SearchEnginesAndSocialNetworks": "Motores de pesquisa e redes sociais", 5 | "AddSocial": "Adicionar um nova rede social", 6 | "Hostname": "Nome do servidor", 7 | "SearchEnginesList": "Lista de todos os motores de pesquisa reconhecidos pelo Matomo", 8 | "SocialsList": "Lista de todas as redes sociais reconhecidas pelo Matomo", 9 | "ManageSocialsAndEngines": "Gerir motores de pesquisa e redes sociais", 10 | "ConfirmRemove": "Quer mesmo remover %s da lista?", 11 | "ManageSearchEngines": "Gerir motores de pesquisa", 12 | "ManageSocials": "Gerir redes sociais", 13 | "DetectedEngine": "Motor detetado", 14 | "DetectedKeywords": "Palavras-chave detetadas", 15 | "DetectedSocial": "Rede social detetada", 16 | "CheckUrl": "Analise do endereço para informações sobre o motor de pesquisa e rede social", 17 | "CheckUrlDesc": "Pode colocar qualquer endereço referenciador aqui para confirmar se o Matomo iria reconhecer como um motor de pesquisa e\/ou rede social", 18 | "CheckUrlSend": "Análise do endereço", 19 | "AddSearchEngine": "Adicionar definição do motor de pesquisa", 20 | "Parameters": "Parâmetros", 21 | "BacklinkPattern": "Padrão de backlink", 22 | "Charset": "Codificação de carateres", 23 | "AddEngineError": "Erro ao adicionar o motor de pesquisa. Por favor, confirme os valores introduzidos e tente novamente.", 24 | "CommaSeparated": "(separado por vírgulas)", 25 | "AddSocialError": "Erro ao adicionar a rede social. Por favor, confirme os valores introduzidos e tente novamente.", 26 | "SocialListDisabled": "Atenção: a lista integrada de redes sociais do Matomo está desativada.", 27 | "EnableSocialList": "Ativar a lista de redes sociais do Matomo", 28 | "DisableSocialList": "Desativar a lista de redes sociais do Matomo", 29 | "UsingDefaultSocials": "Está a utilizar a lista integrada de redes sociais do Matomo.", 30 | "ProvideSocialData": "Por favor, forneça os dados para a nova rede social.", 31 | "DuplicateHostnameInfo": "Tenha em consideração que o nome do servidor necessita de ser único. Um nome duplicado de servidor irá sobrepor-se ao anterior.", 32 | "ProvideEngineData": "Por favor, forneça os dados para o motor de pesquisa.", 33 | "HostnameWildcardDesc": "Para motores de pesquisa regionais, o endereço, \"{}.example.com\" irá corresponder qualquer código de país ISO3166-1 alpha2 com \"{}\". De modo similar, \"example.{}\" irá corresponder com qualquer TLDs de país válido, mas deve ser utilizado com ponderação para evitar falsos positivos.", 34 | "SearchEngineAdded": "foi adicionado um novo motor de pesquisa personalizado", 35 | "SearchEngineRemoved": "foi removido um motor de pesquisa personalizado", 36 | "SocialAdded": "foi adicionada uma nova rede social personalizada", 37 | "SocialRemoved": "foi removida uma nova rede social personalizada" 38 | } 39 | } -------------------------------------------------------------------------------- /lang/ta.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "தேடுபொறியைச் சேர்க்கும்போது பிழை. உங்கள் உள்ளீடுகளை சரிபார்த்து மீண்டும் முயற்சிக்கவும்.", 4 | "AddSearchEngine": "தேடுபொறி வரையறையைச் சேர்க்கவும்", 5 | "AddSocial": "புதிய சமூக வலைப்பின்னலைச் சேர்க்கவும்", 6 | "AddSocialError": "சமூகத்தைச் சேர்க்கும்போது பிழை. உங்கள் உள்ளீடுகளை சரிபார்த்து மீண்டும் முயற்சிக்கவும்.", 7 | "BacklinkPattern": "பின்னிணைப்பு முறை", 8 | "Charset": "சார்செட்", 9 | "CheckUrl": "தேடுபொறி மற்றும் சமூக வலைப்பின்னல் தகவல்களுக்கு முகவரி ஐ சரிபார்க்கவும்", 10 | "CheckUrlDesc": "மாடோமோ அதை ஒரு தேடுபொறி மற்றும்/அல்லது ஒரு சமூக வலைப்பின்னலாக அங்கீகரிக்குமா என்பதை சரிபார்க்க இங்கே நீங்கள் எந்த பரிந்துரைப்பாளர் முகவரி ஐ ஒட்டலாம்", 11 | "CheckUrlSend": "முகவரி ஐ சரிபார்க்கவும்", 12 | "CommaSeparated": "(கமா பிரிக்கப்பட்டது)", 13 | "ConfirmRemove": "பட்டியலில் இருந்து %s ஐ அகற்ற விரும்புகிறீர்களா?", 14 | "DetectedEngine": "கண்டறியப்பட்ட இயந்திரம்", 15 | "DetectedKeywords": "கண்டறியப்பட்ட முக்கிய வார்த்தைகள்", 16 | "DetectedSocial": "சமூக வலைப்பின்னல் கண்டறியப்பட்டது", 17 | "DisableSocialList": "மாடோமோவின் சமூக வலைப்பின்னல் பட்டியலை முடக்கு", 18 | "DuplicateHostnameInfo": "ஓச்ட்பெயர் தனித்துவமாக இருக்க வேண்டும் என்பதை நினைவில் கொள்ளுங்கள். ஒரு நகல் ஓச்ட்பெயர் மற்றொன்றை மேலெழுதும்.", 19 | "EnableSocialList": "மாடோமோவின் சமூக வலைப்பின்னல் பட்டியலை செயல்படுத்தவும்", 20 | "Hostname": "புரவலன்பெயர்", 21 | "HostnameWildcardDesc": "பிராந்திய-குறிப்பிட்ட தேடுபொறிகளுக்கு, முகவரி, \"{} .example.com\" \"{}\" க்கு எதிராக எந்த ISO3166-1 ஆல்பா 2 நாட்டு குறியீட்டையும் பொருத்தும். இதேபோல், \"எடுத்துக்காட்டு.}\" செல்லுபடியாகும் நாட்டு TLD களுடன் பொருந்தும், ஆனால் தவறான நேர்மறைகளைத் தவிர்க்க குறைவாகவே பயன்படுத்தப்பட வேண்டும்.", 22 | "ManageSearchEngines": "தேடுபொறிகளை நிர்வகிக்கவும்", 23 | "ManageSocials": "சமூக வலைப்பின்னல்களை நிர்வகிக்கவும்", 24 | "ManageSocialsAndEngines": "தேடுபொறிகள் மற்றும் சமூக வலைப்பின்னல்களை நிர்வகிக்கவும்", 25 | "Parameters": "அளவுருக்கள்", 26 | "PluginDescription": "இந்த சொருகி மாடோமோவுடன் அங்கீகரிக்கப்பட்ட தேடுபொறிகள் மற்றும் சமூக வலைப்பின்னல்களைக் காணவும் நிர்வகிக்கவும் அனுமதிக்கிறது.", 27 | "ProvideEngineData": "தேடுபொறிக்கான தரவை வழங்கவும்.", 28 | "ProvideSocialData": "புதிய சமூக வலைப்பின்னலுக்கான தரவை வழங்கவும்.", 29 | "SearchEngineAdded": "புதிய தனிப்பயன் தேடுபொறியைச் சேர்த்தது", 30 | "SearchEngineRemoved": "தனிப்பயன் தேடுபொறியை அகற்றியது", 31 | "SearchEnginesAndSocialNetworks": "தேடுபொறிகள் மற்றும் சமூக வலைப்பின்னல்கள்", 32 | "SearchEnginesList": "மாடோமோவுக்குத் தெரிந்த அனைத்து தேடுபொறிகளின் பட்டியல்", 33 | "SocialAdded": "புதிய தனிப்பயன் சமூக வலைப்பின்னலைச் சேர்த்தது", 34 | "SocialListDisabled": "கவனம்: சமூக வலைப்பின்னல்களின் மாடோமோவின் உள்ளமைக்கப்பட்ட பட்டியல் முடக்கப்பட்டுள்ளது.", 35 | "SocialRemoved": "தனிப்பயன் சமூக வலைப்பின்னலை அகற்றியது", 36 | "SocialsList": "மாடோமோவுக்குத் தெரிந்த அனைத்து சமூகங்களின் பட்டியல்", 37 | "UsingDefaultSocials": "நீங்கள் மாடோமோவின் உள்ளமைக்கப்பட்ட சமூக வலைப்பின்னல் பட்டியலைப் பயன்படுத்துகிறீர்கள்." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Erreur lors de l'ajout du moteur de recherche. Veuillez vérifier ce qui a été saisi et réessayer.", 4 | "AddSearchEngine": "Ajouter une définition de moteur de recherche", 5 | "AddSocial": "Ajouter un nouveau réseau social", 6 | "AddSocialError": "Erreur lors de l'ajout du réseau social. Veuillez vérifier les informations saisies et réessayer.", 7 | "BacklinkPattern": "Modèle de lien de retour", 8 | "Charset": "Codage", 9 | "CheckUrl": "Analyser l'URL à la recherche d'informations de réseaux sociaux et de moteurs de recherche", 10 | "CheckUrlDesc": "Vous pouvez coller ici n'importe quelle url de référent pour vérifier si Matomo le reconnaitrait comme moteur de recherche et/ou réseau social.", 11 | "CheckUrlSend": "Vérifier l'adresse", 12 | "CommaSeparated": "(séparés par virgules)", 13 | "ConfirmRemove": "Êtes-vous sûr(e) de vouloir supprimer %s de la liste ?", 14 | "DetectedEngine": "Moteur détecté", 15 | "DetectedKeywords": "Mots-clés détectés", 16 | "DetectedSocial": "Réseaux sociaux détectés", 17 | "DisableSocialList": "Désactiver la liste de réseaux sociaux de Matomo", 18 | "DuplicateHostnameInfo": "Gardez à l'esprit que le nom d'hôte doit être unique. Un duplicat écrasera l'autre.", 19 | "EnableSocialList": "Activer la liste de réseaux sociaux de Matomo", 20 | "Hostname": "Nom d'hôte", 21 | "HostnameWildcardDesc": "Pour des moteurs de recherche spécifiques à la localisation, l'URL \"{}.exemple.com\" détectera n'importe quel code de pays de type ISO3166-1 alpha2 à la place de \"{}\". De manière similaire \"exemple.{}\" détectera les TLD valides de pays mais devrait être utilisé avec parcimonie pour éviter les faux positifs.", 22 | "ManageSearchEngines": "Gérer les moteurs de recherche", 23 | "ManageSocials": "Gérer les réseaux sociaux", 24 | "ManageSocialsAndEngines": "Gérer les moteurs de recherche et réseaux sociaux", 25 | "Parameters": "Paramètres", 26 | "PluginDescription": "Ce composant permet de visualiser et de gérer les moteurs de recherche et les réseaux sociaux qui sont reconnus avec Matomo.", 27 | "ProvideEngineData": "Veuillez fournir les données du moteur de recherche.", 28 | "ProvideSocialData": "Veuillez fournir les données du nouveau réseau social.", 29 | "SearchEngineAdded": "nouveau moteur de recherche personnalisé ajouté", 30 | "SearchEngineRemoved": "moteur de recherche personnalisé supprimé", 31 | "SearchEnginesAndSocialNetworks": "Moteurs de recherche et réseaux sociaux", 32 | "SearchEnginesList": "Liste de tous les moteurs de recherche connus de Matomo", 33 | "SocialAdded": "réseau social personnalisé ajouté", 34 | "SocialListDisabled": "Attention : la liste par défaut des résaux sociaux de Matomo est désactivée.", 35 | "SocialRemoved": "réseau social personnalisé supprimé", 36 | "SocialsList": "List de tous les média sociaux connus de Matomo", 37 | "UsingDefaultSocials": "Vous utilisez la liste de réseaux sociaux fournie par Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Fehler beim Hinzufügen der Suchmaschine. Bitte überprüfen Sie Ihre Eingaben und probieren Sie es erneut.", 4 | "AddSearchEngine": "Suchmaschinendefinition hinzufügen", 5 | "AddSocial": "Soziales Netzwerk hinzufügen", 6 | "AddSocialError": "Fehler beim Hinzufügen des sozialen Netzwerks. Bitte überprüfen Sie Ihre Eingaben und probieren Sie es erneut.", 7 | "BacklinkPattern": "Link-Muster", 8 | "Charset": "Zeichensatz", 9 | "CheckUrl": "URL auf Informationen zu Suchmaschinen und sozialen Netzwerken überprüfen", 10 | "CheckUrlDesc": "Hier können Sie eine Referrer-Url einfügen, um zu überprüfen ob Matomo diese als Suchmaschine oder soziales Netzwerk erkennen würde.", 11 | "CheckUrlSend": "URL überprüfen", 12 | "CommaSeparated": "(kommasepariert)", 13 | "ConfirmRemove": "Wollen Sie %s wirklich von dieser Liste entfernen?", 14 | "DetectedEngine": "Erkannte Suchmaschine", 15 | "DetectedKeywords": "Erkannte Suchbegriffe", 16 | "DetectedSocial": "Erkanntes soziales Netzwerk", 17 | "DisableSocialList": "Matomo's Liste sozialer Netzwerke deaktivieren", 18 | "DuplicateHostnameInfo": "Bitte beachten Sie, dass Hostnamen eindeutig sein müssen. Doppelte Hostnamen überschreiben einander.", 19 | "EnableSocialList": "Matomo's Liste sozialer Netzwerke aktivieren", 20 | "Hostname": "Hostname", 21 | "HostnameWildcardDesc": "Für regionenspezifische Suchmaschinen wird die URL \"{}.example.com\" für sämtliche ISO3166-1 alpha2 Ländercodes zu \"{}\" passen. Ebenso wird \"example.{}\" gültige Länder-Top-Level-Domains akzeptieren. Dies sollte aber sparsam eingesetzt werden, um Falscherkennungen zu vermeiden.", 22 | "ManageSearchEngines": "Suchmaschinen verwalten", 23 | "ManageSocials": "Soziale Netzwerke verwalten", 24 | "ManageSocialsAndEngines": "Suchmaschinen und soziale Netzwerke verwalten", 25 | "Parameters": "Parameter", 26 | "PluginDescription": "Dieses Plugin bietet die Möglichkeit die Suchmaschinen und sozialen Netzwerke, die von Matomo erkannt werden, anzusehen und zu verwalten.", 27 | "ProvideEngineData": "Bitte geben Sie die Daten für die neue Suchmaschine an.", 28 | "ProvideSocialData": "Bitte geben Sie die Daten für das neue soziale Netzwerk an.", 29 | "SearchEngineAdded": "hat eine neue benutzerdefinierte Suchmaschine hinzugefügt", 30 | "SearchEngineRemoved": "hat eine benutzerdefinierte Suchmaschine entfernt", 31 | "SearchEnginesAndSocialNetworks": "Suchmaschinen und soziale Netzwerke", 32 | "SearchEnginesList": "Liste aller Suchmaschinen, die Matomo bekannt sind", 33 | "SocialAdded": "hat ein neues benutzerdefiniertes soziales Netzwerk hinzugefügt", 34 | "SocialListDisabled": "Achtung: Matomo's integrierte Liste sozialer Netzwerke ist deaktiviert.", 35 | "SocialRemoved": "hat ein benutzerdefiniertes soziales Netzwerk entfernt", 36 | "SocialsList": "Liste aller sozialen Netzwerke, die Matomo bekannt sind", 37 | "UsingDefaultSocials": "Sie verwenden Matomo's integrierte Liste sozialer Netzwerke." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/es-ar.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Ocurrió un error al agregar el motor de búsqueda. Por favor, revisá tu ingreso y reintentá.", 4 | "AddSearchEngine": "Agregar definición de motor de búsqueda", 5 | "AddSocial": "Agregar una nueva red social", 6 | "AddSocialError": "Ocurrió un error al agregar la red social. Por favor, revisá tu ingreso y reintentá.", 7 | "BacklinkPattern": "Patrón de enlace de retorno", 8 | "Charset": "Conjunto de caracteres", 9 | "CheckUrl": "Revisar dirección web para obtener información de motor de búsqueda o red social", 10 | "CheckUrlDesc": "Acá podés pegar cualquier dirección web referida para saber si Matomo la reconocería como motor de búsqueda y/o red social", 11 | "CheckUrlSend": "Revisar dirección web", 12 | "CommaSeparated": "[separados por coma]", 13 | "ConfirmRemove": "¿Estás seguro que querés quitar a %s de la lista?", 14 | "DetectedEngine": "Motor detectado", 15 | "DetectedKeywords": "Palabras claves detectadas", 16 | "DetectedSocial": "Red social detectada", 17 | "DisableSocialList": "Desactivar la lista de redes sociales de Matomo", 18 | "DuplicateHostnameInfo": "Tené en cuenta que el servidor necesita ser único. Un servidor duplicado sobreescribirá el otro.", 19 | "EnableSocialList": "Activar la lista de redes sociales de Matomo", 20 | "Hostname": "Nombre del servidor", 21 | "HostnameWildcardDesc": "Para motores de búsqueda específicos a una región, la dirección web, \"{}.example.com\" debe coincidir con cualquier código de país ISO3166-1 alpha2 contra \"{}\". De forma similar, \"example.{}\" coincidirá contra cualquier código de países de dominios de nivel superior (\"TLDs\"), pero debería usarse cada tanto, para evitar falsos positivos.", 22 | "ManageSearchEngines": "Administrar motores de búsqueda", 23 | "ManageSocials": "Administrar redes sociales", 24 | "ManageSocialsAndEngines": "Administrar motores de búsqueda y redes sociales", 25 | "Parameters": "Parámetros", 26 | "PluginDescription": "Este plugin permite ver y administrar motores de búsqueda y redes sociales que son reconocidas por Matomo.", 27 | "ProvideEngineData": "Por favor, ofrecé los datos para el nuevo motor de búsqueda.", 28 | "ProvideSocialData": "Por favor, ofrecé los datos para la nueva red social.", 29 | "SearchEngineAdded": "se agregó un nuevo motor de búsqueda personalizado", 30 | "SearchEngineRemoved": "se quitó un motor de búsqueda personalizado", 31 | "SearchEnginesAndSocialNetworks": "Motores de búsqueda y redes sociales", 32 | "SearchEnginesList": "Lista de todos los motores de búsqueda conocidos por Matomo", 33 | "SocialAdded": "se agregó una nueva red social personalizada", 34 | "SocialListDisabled": "Atención: la lista incorporada de redes sociales de Matomo está deshabilitada.", 35 | "SocialRemoved": "se quitó una red social personalizada", 36 | "SocialsList": "Lista de todas las redes sociales conocidas por Matomo", 37 | "UsingDefaultSocials": "Estás usando la lista incorporada de redes sociales de Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Error mientras se añadía el motor de búsqueda. Por favor compruebe los datos introducidos y vuelva a intentarlo.", 4 | "AddSearchEngine": "Añadir una definición al motor de búsqueda", 5 | "AddSocial": "Añadir una nueva red social", 6 | "AddSocialError": "Error mientras se añadía la red social. Por favor compruebe los datos introducidos y vuelva a intentarlo.", 7 | "BacklinkPattern": "Patrón para enlaces desde otras páginas web", 8 | "Charset": "Conjunto de caracteres", 9 | "CheckUrl": "Verifique la URL del motor de búsqueda y la información de la red social", 10 | "CheckUrlDesc": "Aquí puede pegar cualquier URL de referencia con el fin de comprobar si Matomo lo reconocería como un motor de búsqueda y/o red social", 11 | "CheckUrlSend": "Verificar URL", 12 | "CommaSeparated": "(separado por coma)", 13 | "ConfirmRemove": "¿Desea realmente eliminar %s de la lista?", 14 | "DetectedEngine": "Motor detectado", 15 | "DetectedKeywords": "Palabras clave detectadas", 16 | "DetectedSocial": "Red social detectada", 17 | "DisableSocialList": "Deshabilitar la lista de redes sociales de Matomo", 18 | "DuplicateHostnameInfo": "Tenga en cuenta que el nombre del host necesariamente debe ser único. Un nombre de host duplicado sobreescribirá al otro.", 19 | "EnableSocialList": "Habilitar la lista de redes sociales de Matomo", 20 | "Hostname": "Nombre del servidor", 21 | "HostnameWildcardDesc": "Para los motores de búsqueda específicos de una región, la URL, \"{}.example.com\" coincidirá con cualquier código de país ISO3166-1 alfa2 contra \"{}\". Del mismo modo, \"example.{}\" coincidirá contra los TLD de países válidos, pero deben utilizarse con moderación para evitar falsos positivos.", 22 | "ManageSearchEngines": "Administrar motores de búsqueda", 23 | "ManageSocials": "Administrar redes sociales", 24 | "ManageSocialsAndEngines": "Administrar los motores de búsqueda y redes sociales", 25 | "Parameters": "Parámetros", 26 | "PluginDescription": "Este complemento permite ver y gestionar motores de búsquedas y redes sociales que son reconocidas por Matomo.", 27 | "ProvideEngineData": "Por favor suministre la información del motor de búsqueda.", 28 | "ProvideSocialData": "Por favor suministre la información de la nueva red social.", 29 | "SearchEngineAdded": "añadido un nuevo motor de búsqueda personalizado", 30 | "SearchEngineRemoved": "eliminado un motor de búsqueda personalizado", 31 | "SearchEnginesAndSocialNetworks": "Motores de búsqueda y redes sociales", 32 | "SearchEnginesList": "Lista de todos los motores de búsqueda conocidos por Matomo", 33 | "SocialAdded": "añadida una nueva red social personalizada", 34 | "SocialListDisabled": "Atención: La lista de redes sociales incluida en Matomo está deshabilitada.", 35 | "SocialRemoved": "eliminada una red social personalizada", 36 | "SocialsList": "Lista de todas las redes sociales conocidas por Matomo", 37 | "UsingDefaultSocials": "Está utilizando la lista de redes sociales incluido en Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lang/el.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReferrersManager": { 3 | "AddEngineError": "Σφάλμα κατά την προσθήκη της μηχανής αναζήτησης. Ελέγξτε αυτό που εισάγατε και ξαναπροσπαθήστε.", 4 | "AddSearchEngine": "Προσθήκη ορισμού μηχανής αναζήτησης", 5 | "AddSocial": "Προσθήκη νέου κοινωνικού δικτύου", 6 | "AddSocialError": "Σφάλμα κατά την προσθήκη του κοινωνικού δικτύου. Ελέγξτε αυτό που εισάγατε και ξαναπροσπαθήστε.", 7 | "BacklinkPattern": "Πρότυπο για επιστρεφόμενο σύνδεσμο", 8 | "Charset": "Σετ χαρακτήρων", 9 | "CheckUrl": "Δείτε τη διεύθυνση URL για πληροφορίες σχετικά με τις μηχανές αναζήτησης και τα κοινωνικά δίκτυα", 10 | "CheckUrlDesc": "Μπορείτε να εισάγετε οποιαδήποτε διεύθυνση URL αναφορέα ώστε το Matomo να ελέγχει αν πρόκειται για μηχανή αναζήτησης και/ή κάποιο κοινωνικό δίκτυο", 11 | "CheckUrlSend": "Έλεγχος της διεύθυνσης URL", 12 | "CommaSeparated": "(χωρισμένα με κόμμα)", 13 | "ConfirmRemove": "Είστε σίγουροι ότι επιθυμείτε να αφαιρέσετε το %s από τη λίστα;", 14 | "DetectedEngine": "Μηχανή που εντοπίστηκε", 15 | "DetectedKeywords": "Λέξεις κλειδιά που εντοπίστηκαν", 16 | "DetectedSocial": "Κοινωνικά δίκτυα που εντοπίστηκαν", 17 | "DisableSocialList": "Απενεργοποίηση της ενσωματωμένης λίστας κοινωνικών δικτύων του Matomo", 18 | "DuplicateHostnameInfo": "Να έχετε υπόψη ότι το όνομα διακομιστή πρέπει να είναι μοναδικό. Ένα διπλότυπο όνομα θα αντικαταστήσει το άλλο.", 19 | "EnableSocialList": "Ενεργοποίηση της ενσωματωμένης λίστας κοινωνικών δικτύων του Matomo", 20 | "Hostname": "Όνομα διακομιστή", 21 | "HostnameWildcardDesc": "Για μηχανές αναζήτησης σχετιζόμενες με περιοχές, η διεύθυνση URL \"{}.example.com\" θα ταιριάξει όλους τους κωδικούς χώρας κατά ISO3166-1 alpha2 με το \"{}\". Παρόμοια, το \"example.{}\" θα ταιριάξει οποιαδήποτε έγκυρα ονόματα χωρών TLDs, αλλά θα πρέπει να χρησιμοποιείται σποραδικά για την αποφυγή των ψευδών θετικών ταιριασμάτων.", 22 | "ManageSearchEngines": "Διαχείριση των μηχανών αναζήτησης", 23 | "ManageSocials": "Διαχείριση των κοινωνικών δικτύων", 24 | "ManageSocialsAndEngines": "Διαχείριση των μηχανών αναζήτησης και των κοινωνικών δικτύων", 25 | "Parameters": "Παράμετροι", 26 | "PluginDescription": "Το πρόσθετο επιτρέπει να βλέπετε και να διαχειρίζεστε τις μηχανές αναζήτησης και τα κοινωνικά δίκτυα που αναγνωρίζει το Matomo.", 27 | "ProvideEngineData": "Εισάγετε τα δεδομένα για τη μηχανή αναζήτησης.", 28 | "ProvideSocialData": "Εισάγετε τα δεδομένα για το νέο κοινωνικό δίκτυο.", 29 | "SearchEngineAdded": "προστέθηκε μια νέα προσαρμοσμένη μηχανή αναζήτησης", 30 | "SearchEngineRemoved": "αφαιρέθηκα μια προσαρμοσμένη μηχανή αναζήτησης", 31 | "SearchEnginesAndSocialNetworks": "Μηχανές αναζήτησης και κοινωνικά δίκτυα", 32 | "SearchEnginesList": "Λίστα όλων των μηχανών αναζήτησης γνωστές στο Matomo", 33 | "SocialAdded": "προστέθηκε ένα νέο προσαρμοσμένο κοινωνικό δίκτυο", 34 | "SocialListDisabled": "Προσοχή: Η ενσωματωμένη λίστα κοινωνικών δικτύων του Matomo είναι απενεργοποιημένη.", 35 | "SocialRemoved": "αφαιρέθηκε ένα προσαρμοσμένο κοινωνικό δίκτυο", 36 | "SocialsList": "Λίστα όλων των κοινωνικών δικτύων γνωστά στο Matomo", 37 | "UsingDefaultSocials": "Χρησιμοποιείτε την ενσωματωμένη λίστα κοινωνικών δικτύων του Matomo." 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vue/src/URLChecker/URLChecker.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 29 | 30 | 108 | -------------------------------------------------------------------------------- /ReferrersManager.php: -------------------------------------------------------------------------------- 1 | 'addSearchEngineUrls', 25 | 'Referrer.addSocialUrls' => 'addSocialUrls', 26 | 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 27 | 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', 28 | ); 29 | } 30 | 31 | /** 32 | * Adds required CSS files 33 | * @param $stylesheets 34 | */ 35 | public function getStylesheetFiles(&$stylesheets) 36 | { 37 | $stylesheets[] = "plugins/ReferrersManager/stylesheets/styles.less"; 38 | } 39 | 40 | public function isTrackerPlugin() 41 | { 42 | return true; 43 | } 44 | 45 | /** 46 | * Adds the user defined search engines 47 | * @param $searchEngines 48 | */ 49 | public function addSearchEngineUrls(&$searchEngines) 50 | { 51 | try { 52 | $userEngines = Model::getInstance()->getUserDefinedSearchEngines(); 53 | $searchEngines = array_merge($searchEngines, $userEngines); 54 | } catch (\Exception $e) {} 55 | } 56 | 57 | /** 58 | * Adds the user defined social networks 59 | * @param $socials 60 | */ 61 | public function addSocialUrls(&$socials) 62 | { 63 | try { 64 | if(Model::getInstance()->areDefaultSocialsDisabled()) { 65 | $socials = array(); 66 | } 67 | 68 | $userSocials = Model::getInstance()->getUserDefinedSocials(); 69 | $socials = array_merge($socials, $userSocials); 70 | } catch (\Exception $e) {} 71 | } 72 | 73 | public function getClientSideTranslationKeys(&$translationKeys) 74 | { 75 | $translationKeys[] = "ReferrersManager_PluginDescription"; 76 | $translationKeys[] = "ReferrersManager_SearchEnginesAndSocialNetworks"; 77 | $translationKeys[] = "ReferrersManager_AddSocial"; 78 | $translationKeys[] = "ReferrersManager_Hostname"; 79 | $translationKeys[] = "ReferrersManager_SearchEnginesList"; 80 | $translationKeys[] = "ReferrersManager_SocialsList"; 81 | $translationKeys[] = "ReferrersManager_ManageSocialsAndEngines"; 82 | $translationKeys[] = "ReferrersManager_ConfirmRemove"; 83 | $translationKeys[] = "ReferrersManager_ManageSearchEngines"; 84 | $translationKeys[] = "ReferrersManager_ManageSocials"; 85 | $translationKeys[] = "ReferrersManager_DetectedEngine"; 86 | $translationKeys[] = "ReferrersManager_DetectedKeywords"; 87 | $translationKeys[] = "ReferrersManager_DetectedSocial"; 88 | $translationKeys[] = "ReferrersManager_CheckUrl"; 89 | $translationKeys[] = "ReferrersManager_CheckUrlDesc"; 90 | $translationKeys[] = "ReferrersManager_CheckUrlSend"; 91 | $translationKeys[] = "ReferrersManager_AddSearchEngine"; 92 | $translationKeys[] = "ReferrersManager_Parameters"; 93 | $translationKeys[] = "ReferrersManager_BacklinkPattern"; 94 | $translationKeys[] = "ReferrersManager_Charset"; 95 | $translationKeys[] = "ReferrersManager_AddEngineError"; 96 | $translationKeys[] = "ReferrersManager_CommaSeparated"; 97 | $translationKeys[] = "ReferrersManager_AddSocialError"; 98 | $translationKeys[] = "ReferrersManager_SocialListDisabled"; 99 | $translationKeys[] = "ReferrersManager_EnableSocialList"; 100 | $translationKeys[] = "ReferrersManager_DisableSocialList"; 101 | $translationKeys[] = "ReferrersManager_UsingDefaultSocials"; 102 | $translationKeys[] = "ReferrersManager_ProvideSocialData"; 103 | $translationKeys[] = "ReferrersManager_DuplicateHostnameInfo"; 104 | $translationKeys[] = "ReferrersManager_ProvideEngineData"; 105 | $translationKeys[] = "ReferrersManager_HostnameWildcardDesc"; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /API.php: -------------------------------------------------------------------------------- 1 | model = $model; 22 | } 23 | 24 | /** 25 | * Returns all search engine definitions 26 | * 27 | * @return array 28 | */ 29 | public function getSearchEngineDefinitions() 30 | { 31 | return $this->model->getSearchEngineDefinitions(); 32 | } 33 | 34 | /** 35 | * returns only user defined search engines 36 | * 37 | * @return array 38 | */ 39 | public function getUserDefinedSearchEngines() 40 | { 41 | return $this->model->getUserDefinedSearchEngines(); 42 | } 43 | 44 | /** 45 | * Returns only user defined social networks 46 | * 47 | * @return array 48 | */ 49 | public function getUserDefinedSocials() 50 | { 51 | return $this->model->getUserDefinedSocials(); 52 | } 53 | 54 | /** 55 | * Returns all defined social networks 56 | * 57 | * @return array 58 | */ 59 | public function getSocialDefinitions() 60 | { 61 | return $this->model->getSocialsDefinitions(); 62 | } 63 | 64 | /** 65 | * Returns logo urls for available search engines 66 | * 67 | * @return array 68 | * @internal 69 | */ 70 | public function getSearchEngineLogos() 71 | { 72 | return $this->model->getSearchEngineLogos(); 73 | } 74 | 75 | /** 76 | * Returns logo urls for available social networks 77 | * 78 | * @return array 79 | * @internal 80 | */ 81 | public function getSocialLogos() 82 | { 83 | return $this->model->getSocialsLogos(); 84 | } 85 | 86 | /** 87 | * Adds a new user defined search engine 88 | * 89 | * @param string $name 90 | * @param string $host 91 | * @param string $parameters 92 | * @param string $backlink 93 | * @param string $charset 94 | * @return bool 95 | */ 96 | public function addSearchEngine( 97 | string $name, 98 | string $host, 99 | $parameters = '', 100 | string $backlink = '', 101 | string $charset = '' 102 | ) { 103 | Piwik::checkUserHasSuperUserAccess(); 104 | 105 | if (empty($host) || empty($name)) { 106 | return false; 107 | } 108 | 109 | if (!empty($parameters)) { 110 | $parameters = explode(',', $parameters); 111 | } else { 112 | $parameters = []; 113 | } 114 | 115 | $engines = $this->model->getUserDefinedSearchEngines(); 116 | $engines[$host] = [ 117 | 'name' => $name, 118 | 'params' => $parameters, 119 | 'backlink' => $backlink, 120 | 'charsets' => explode(',', $charset), 121 | ]; 122 | $this->model->setUserDefinedSearchEngines($engines); 123 | return true; 124 | } 125 | 126 | /** 127 | * Removes a user defined search engine 128 | * 129 | * @param string $host 130 | * @return bool 131 | */ 132 | public function removeSearchEngine(string $host) 133 | { 134 | Piwik::checkUserHasSuperUserAccess(); 135 | 136 | if (empty($host)) { 137 | return false; 138 | } 139 | 140 | $engines = $this->model->getUserDefinedSearchEngines(); 141 | 142 | if (empty($engines[$host])) { 143 | return false; // does not exist 144 | } 145 | 146 | unset($engines[$host]); 147 | $this->model->setUserDefinedSearchEngines($engines); 148 | return true; 149 | } 150 | 151 | /** 152 | * Adds a new user defined social network 153 | * 154 | * @param string $name 155 | * @param string $host 156 | * @return bool 157 | */ 158 | public function addSocial(string $name, string $host) 159 | { 160 | Piwik::checkUserHasSuperUserAccess(); 161 | 162 | if (empty($host) || empty($name)) { 163 | return false; 164 | } 165 | 166 | $socials = $this->model->getUserDefinedSocials(); 167 | $socials[$host] = $name; 168 | $this->model->setUserDefinedSocials($socials); 169 | return true; 170 | } 171 | 172 | /** 173 | * Removes a user defined social network 174 | * 175 | * @param $host 176 | * @return bool 177 | */ 178 | public function removeSocial(string $host) 179 | { 180 | Piwik::checkUserHasSuperUserAccess(); 181 | 182 | if (empty($host)) { 183 | return false; 184 | } 185 | 186 | $socials = $this->model->getUserDefinedSocials(); 187 | 188 | if (empty($socials[$host])) { 189 | return false; // does not exist 190 | } 191 | 192 | unset($socials[$host]); 193 | $this->model->setUserDefinedSocials($socials); 194 | return true; 195 | } 196 | 197 | /** 198 | * Sets if default socials should be used or not 199 | * 200 | * @param bool $state 201 | * @return bool 202 | */ 203 | public function setDefaultSocialsDisabled(bool $state = false): bool 204 | { 205 | Piwik::checkUserHasSuperUserAccess(); 206 | 207 | Model::getInstance()->setDefaultSocialsDisabled((bool)$state); 208 | return true; 209 | } 210 | } 211 | -------------------------------------------------------------------------------- /vue/src/ManageSocials/ManageSocials.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 102 | 103 | 290 | -------------------------------------------------------------------------------- /Model.php: -------------------------------------------------------------------------------- 1 | clearSocialCache(); 51 | } 52 | 53 | /** 54 | * Clears cache for social data 55 | */ 56 | public function clearSocialCache() 57 | { 58 | Option::clearCachedOption(self::OPTION_KEY_DISABLE_DEFAULT_SOCIALS); 59 | Option::delete(Social::OPTION_STORAGE_NAME); 60 | $cacheId = 'Social-' . Social::OPTION_STORAGE_NAME; 61 | $cache = Cache::getEagerCache(); 62 | $cache->delete($cacheId); 63 | \Piwik\Tracker\Cache::deleteTrackerCache(); 64 | } 65 | 66 | /** 67 | * Returns the list of userdefined socials 68 | * 69 | * @return array 70 | */ 71 | public function getUserDefinedSocials() 72 | { 73 | $socials = json_decode(Option::get(self::OPTION_KEY_USERDEFINED_SOCIALS), true); 74 | 75 | if (!empty($socials)) { 76 | 77 | return (array)$socials; 78 | } 79 | 80 | return []; 81 | } 82 | 83 | /** 84 | * Sets user defined socials 85 | * 86 | * @param array $socialList 87 | */ 88 | public function setUserDefinedSocials($socialList = []) 89 | { 90 | Option::set(self::OPTION_KEY_USERDEFINED_SOCIALS, json_encode($socialList)); 91 | $this->clearSocialCache(); 92 | } 93 | 94 | /** 95 | * Returns the list of userdefined search engines 96 | * 97 | * @return array 98 | */ 99 | public function getUserDefinedSearchEngines() 100 | { 101 | $engines = json_decode(Option::get(self::OPTION_KEY_USERDEFINED_SEARCHENGINES), true); 102 | 103 | if (!empty($engines)) { 104 | 105 | // convert engines saved in legacy format 106 | foreach ($engines as $url => $definition) { 107 | if (!array_key_exists('name', $definition) && isset($definition[0]) && isset($definition[1])) { 108 | $engines[$url] = array( 109 | 'name' => $definition[0], 110 | 'params' => $definition[1], 111 | 'backlink' => @$definition[2], 112 | 'charsets' => @$definition[3] 113 | ); 114 | } 115 | } 116 | 117 | return $engines; 118 | } 119 | 120 | return []; 121 | } 122 | 123 | /** 124 | * Sets user defined search engines 125 | * 126 | * @param array $engineList 127 | */ 128 | public function setUserDefinedSearchEngines($engineList = []) 129 | { 130 | Option::set(self::OPTION_KEY_USERDEFINED_SEARCHENGINES, json_encode($engineList)); 131 | $this->clearSearchEngineCache(); 132 | } 133 | 134 | /** 135 | * Clears cache for social data 136 | */ 137 | public function clearSearchEngineCache() 138 | { 139 | Option::clearCachedOption(self::OPTION_KEY_USERDEFINED_SEARCHENGINES); 140 | Option::delete(SearchEngine::OPTION_STORAGE_NAME); 141 | $cache = Cache::getEagerCache(); 142 | $cacheId = 'SearchEngine-' . SearchEngine::OPTION_STORAGE_NAME; 143 | $cache->delete($cacheId); 144 | \Piwik\Tracker\Cache::deleteTrackerCache(); 145 | } 146 | 147 | /** 148 | * Wrapper method to Matomo's internal method to return search engine data 149 | * @return array 150 | */ 151 | public function getSearchEngines() 152 | { 153 | return \Piwik\Plugins\Referrers\SearchEngine::getInstance()->getDefinitions(); 154 | } 155 | 156 | /** 157 | * Returns all search engine information known to Matomo 158 | * 159 | * @return array 160 | */ 161 | public function getSearchEngineDefinitions() 162 | { 163 | $mergedSearchInfos = []; 164 | 165 | $searchEngineInfos = $this->getSearchEngines(); 166 | 167 | foreach ($searchEngineInfos AS $url => $infos) { 168 | $parameters = !is_array($infos['params']) ? $infos['params'] : implode(', ', $infos['params']); 169 | if (empty($mergedSearchInfos[$infos['name']])) { 170 | $mergedSearchInfos[$infos['name']] = []; 171 | } 172 | $mergedSearchInfos[$infos['name']][] = [ 173 | 'url' => $url, 174 | 'parameters' => $parameters, 175 | 'backlink' => !empty($infos['backlink']) ? $infos['backlink'] : '', 176 | 'charset' => !empty($infos['charsets']) ? implode(', ', $infos['charsets']) : '', 177 | ]; 178 | } 179 | 180 | ksort($mergedSearchInfos, SORT_LOCALE_STRING); 181 | 182 | return $mergedSearchInfos; 183 | } 184 | 185 | /** 186 | * Returns an array containing all logos for search engines 187 | * 188 | * @return array (name => logo-src) 189 | */ 190 | public function getSearchEngineLogos() 191 | { 192 | $searchEngineLogos = []; 193 | 194 | $searchEngineNames = \Piwik\Plugins\Referrers\SearchEngine::getInstance()->getNames(); 195 | 196 | foreach ($searchEngineNames AS $name => $url) { 197 | $searchEngineLogos[$name] = \Piwik\Plugins\Referrers\SearchEngine::getInstance()->getLogoFromUrl($url); 198 | } 199 | 200 | return $searchEngineLogos; 201 | } 202 | 203 | /** 204 | * Wrapper method to Matomo' internal method to return search engine data 205 | * @return array 206 | */ 207 | public function getSocials() 208 | { 209 | return \Piwik\Plugins\Referrers\Social::getInstance()->getDefinitions(); 210 | } 211 | 212 | /** 213 | * Returns all social informations known to Matomo 214 | * 215 | * @return array 216 | */ 217 | public function getSocialsDefinitions() 218 | { 219 | $mergedSocials = []; 220 | 221 | $urls = $this->getSocials(); 222 | 223 | foreach ($urls AS $url => $name) { 224 | $mergedSocials[urldecode($name)][] = $url; 225 | } 226 | 227 | ksort($mergedSocials, SORT_LOCALE_STRING); 228 | 229 | return $mergedSocials; 230 | } 231 | 232 | /** 233 | * Returns an array containing all logos for socials 234 | * 235 | * @return array (name => logo-src) 236 | */ 237 | public function getSocialsLogos() 238 | { 239 | $socialsLogos = []; 240 | 241 | $urls = \Piwik\Plugins\Referrers\Social::getInstance()->getDefinitions(); 242 | 243 | foreach ($urls AS $url => $name) { 244 | 245 | $socialsLogos[urldecode($name)] = \Piwik\Plugins\Referrers\Social::getInstance()->getLogoFromUrl($url); 246 | } 247 | return $socialsLogos; 248 | } 249 | 250 | public function detectSearchEngine($url) 251 | { 252 | $detectedEngine = SearchEngine::getInstance()->extractInformationFromUrl($url); 253 | 254 | if (!empty($detectedEngine['name'])) { 255 | $detectedEngine['image'] = SearchEngine::getInstance()->getLogoFromUrl(SearchEngine::getInstance()->getUrlFromName($detectedEngine['name'])); 256 | 257 | if ($detectedEngine['keywords'] === false) { 258 | $detectedEngine['keywords'] = '' . Piwik::translate('General_NotDefined', 259 | Piwik::translate('General_ColumnKeyword')) . ''; 260 | } 261 | } 262 | 263 | return $detectedEngine; 264 | } 265 | 266 | public function detectSocial($url) 267 | { 268 | $detectedSocial = Social::getInstance()->getSocialNetworkFromDomain($url); 269 | 270 | if (!empty($detectedSocial) && $detectedSocial != Piwik::translate('General_Unknown')) { 271 | 272 | $image = Social::getInstance()->getLogoFromUrl($url); 273 | 274 | $detectedSocial = [ 275 | 'name' => $detectedSocial, 276 | 'image' => $image 277 | ]; 278 | } else { 279 | 280 | $detectedSocial = false; 281 | } 282 | 283 | return $detectedSocial; 284 | } 285 | } -------------------------------------------------------------------------------- /vue/src/ManageSearchEngines/ManageSearchEngines.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 117 | 118 | 289 | -------------------------------------------------------------------------------- /vue/dist/ReferrersManager.umd.min.js: -------------------------------------------------------------------------------- 1 | (function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["ReferrersManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["ReferrersManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/ReferrersManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ManagePage",(function(){return Ke})),n.d(t,"ManageSearchEngines",(function(){return de})),n.d(t,"ManageSocials",(function(){return Ue})),n.d(t,"URLChecker",(function(){return M})),"undefined"!==typeof window){var r=window.document.currentScript,a=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var c=n("8bbf"),o={class:"row",ref:"tabs"},l={class:"tabs"},i={class:"tab col s6"},s={href:"#searchengineTab",class:"active"},d={class:"tab col s6"},u={href:"#socialTab"},b={id:"searchengineTab",class:"col s12"},m={id:"socialTab",class:"col s12"},j={class:"ui-confirm",id:"removeDataConfirm"},f=["innerHTML"],g=["value"],O=["value"];function h(e,t,n,r,a,h){var p=Object(c["resolveComponent"])("URLChecker"),E=Object(c["resolveComponent"])("ContentBlock"),S=Object(c["resolveComponent"])("ManageSearchEngines"),N=Object(c["resolveComponent"])("ManageSocials");return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],null,[Object(c["createVNode"])(E,{"content-title":e.title},{default:Object(c["withCtx"])((function(){return[Object(c["createVNode"])(p)]})),_:1},8,["content-title"]),Object(c["createVNode"])(E,{id:"referrersmanage"},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",o,[Object(c["createElementVNode"])("ul",l,[Object(c["createElementVNode"])("li",i,[Object(c["createElementVNode"])("a",s,Object(c["toDisplayString"])(e.translate("ReferrersManager_ManageSearchEngines")),1)]),Object(c["createElementVNode"])("li",d,[Object(c["createElementVNode"])("a",u,Object(c["toDisplayString"])(e.translate("ReferrersManager_ManageSocials")),1)])]),Object(c["createElementVNode"])("div",b,[Object(c["createVNode"])(S)]),Object(c["createElementVNode"])("div",m,[Object(c["createVNode"])(N,{"own-social-definitions":e.ownSocialDefinitions},null,8,["own-social-definitions"])])],512),Object(c["createElementVNode"])("div",j,[Object(c["createElementVNode"])("h2",{innerHTML:e.translate("ReferrersManager_ConfirmRemove","")},null,8,f),Object(c["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,g),Object(c["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_Cancel")},null,8,O)])]})),_:1})],64)}var p=n("19dc"),E={class:"url-checker"},S={class:"detectionresult"},N=["src"],y=["textContent"],V=["innerHTML"],v={class:"socialresult"},D=["src"],k=["textContent"];function w(e,t,n,r,a,o){var l=Object(c["resolveComponent"])("SaveButton");return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],null,[Object(c["createElementVNode"])("h3",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_CheckUrl")),1),Object(c["createElementVNode"])("p",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_CheckUrlDesc")),1),Object(c["createElementVNode"])("div",E,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text",size:"50","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.urlToCheck=t}),onChange:t[1]||(t[1]=function(t){return e.clearResult()})},null,544),[[c["vModelText"],e.urlToCheck]]),Object(c["createVNode"])(l,{onConfirm:t[2]||(t[2]=function(t){return e.checkResult()}),class:"checkurlbutton",value:e.translate("ReferrersManager_CheckUrlSend")},null,8,["value"]),Object(c["createElementVNode"])("p",S,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("ReferrersManager_DetectedEngine"))+": ",1),Object(c["createElementVNode"])("img",{src:e.detectedEngineImg,height:"16"},null,8,N),Object(c["createElementVNode"])("span",{class:"engine",textContent:Object(c["toDisplayString"])(e.detectedEngine)},null,8,y),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("ReferrersManager_DetectedKeywords"))+": ",1),Object(c["createElementVNode"])("span",{class:"keywords",innerHTML:e.$sanitize(e.detectedKeyword)},null,8,V)]),Object(c["createElementVNode"])("p",v,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("ReferrersManager_DetectedSocial"))+": ",1),Object(c["createElementVNode"])("img",{src:e.detectedSocialImg,height:"16"},null,8,D),Object(c["createElementVNode"])("span",{class:"social",textContent:Object(c["toDisplayString"])(e.detectedSocial)},null,8,k)])])],64)}var C=n("a5a2"),x=Object(c["defineComponent"])({data:function(){return{urlToCheck:"",detectedEngineImg:"",detectedEngine:"",detectedKeyword:"",detectedSocialImg:"",detectedSocial:""}},components:{SaveButton:C["SaveButton"]},created:function(){this.clearResult()},methods:{clearResult:function(){this.detectedEngine="",this.detectedKeyword="",this.detectedEngineImg="plugins/Morpheus/icons/dist/searchEngines/xx.png",this.detectedSocial="",this.detectedSocialImg="plugins/Morpheus/icons/dist/socials/xx.png"},checkResult:function(){var e=this;/^https?:\/\//.test(this.urlToCheck)||(this.urlToCheck="https://".concat(this.urlToCheck)),p["AjaxHelper"].fetch({module:"ReferrersManager",action:"checkUrl",url:this.urlToCheck},{withTokenInUrl:!0}).then((function(t){t.searchengine&&t.searchengine.name?(e.detectedEngine=t.searchengine.name,e.detectedKeyword=t.searchengine.keywords,e.detectedEngineImg=t.searchengine.image):(e.detectedEngine="",e.detectedKeyword="",e.detectedEngineImg="plugins/Morpheus/icons/dist/searchEngines/xx.png"),t.social&&t.social.name?(e.detectedSocial=t.social.name,e.detectedSocialImg=t.social.image):(e.detectedSocial="",e.detectedSocialImg="plugins/Morpheus/icons/dist/socials/xx.png")}))}}});x.render=w;var M=x,T=Object(c["createElementVNode"])("span",{class:"icon-add"},null,-1),B=Object(c["createElementVNode"])("span",{class:"icon-reload"},null,-1),R={class:"search-detections"},_=["placeholder"],A={key:0},L={key:0},H={rowspan:"6"},P={class:"loadingPiwik"},I=Object(c["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:"{{ translate('General_LoadingData') }}"},null,-1),F=["rowspan"],U=["src"],G=["title"],$=["title"],q=["title"],K={key:1},z=["onClick"],W=Object(c["createElementVNode"])("span",{class:"icon-delete"},null,-1),Y={for:"engineName"},J={for:"engineHost"},Q={for:"engineParameter"},X={for:"engineBacklink"},Z={for:"engineCharset"};function ee(e,t,n,r,a,o){var l=Object(c["resolveComponent"])("SaveButton"),i=Object(c["resolveDirective"])("content-table");return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("div",null,[Object(c["createElementVNode"])("h3",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_SearchEnginesList")),1),Object(c["createElementVNode"])("p",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_HostnameWildcardDesc")),1),Object(c["createElementVNode"])("span",{class:"add-element",onClick:t[0]||(t[0]=function(t){return e.showAddSearchEngineForm(!0)})},[T,Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("ReferrersManager_AddSearchEngine")),1)]),Object(c["createElementVNode"])("span",{class:"refresh-list",onClick:t[1]||(t[1]=function(t){return e.refreshList()})},[B,Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("General_Refresh")),1)]),Object(c["createElementVNode"])("div",R,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.searchText=t}),value:"",placeholder:e.translate("General_Search")},null,8,_),[[c["vModelText"],e.searchText]])]),Object(c["withDirectives"])(Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("thead",null,[Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.translate("General_Name")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_Hostname")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_Parameters")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_BacklinkPattern")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_Charset")),1),e.userDefinedSearchEngines?(Object(c["openBlock"])(),Object(c["createElementBlock"])("th",A)):Object(c["createCommentVNode"])("",!0)])]),Object(c["createElementVNode"])("tbody",null,[e.busy?(Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",L,[Object(c["createElementVNode"])("th",H,[Object(c["createElementVNode"])("div",P,[I,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("General_LoadingData")),1)])])])):Object(c["createCommentVNode"])("",!0),e.busy?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],{key:1},Object(c["renderList"])(e.searchEngineNames.filter((function(t){return t.toLowerCase().includes(e.searchText.toLowerCase())})),(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],{key:t},[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.searchEngines[t],(function(n,r){return Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",{key:r},[0===r?(Object(c["openBlock"])(),Object(c["createElementBlock"])("td",{key:0,rowspan:e.searchEngines[t].length},[Object(c["withDirectives"])(Object(c["createElementVNode"])("img",{src:e.searchEngineLogos[t],width:"16",height:"16"},null,8,U),[[c["vShow"],e.searchEngineLogos[t]]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t),1)],8,F)):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("td",{title:n.url},Object(c["toDisplayString"])(e.truncateText(n.url,40)),9,G),Object(c["createElementVNode"])("td",{title:n.parameters},Object(c["toDisplayString"])(e.truncateText(n.parameters,30)),9,$),Object(c["createElementVNode"])("td",{title:n.backlink},Object(c["toDisplayString"])(e.truncateText(n.backlink,30)),9,q),Object(c["createElementVNode"])("td",null,Object(c["toDisplayString"])(n.charset),1),e.userDefinedSearchEngines?(Object(c["openBlock"])(),Object(c["createElementBlock"])("td",K,[e.userDefinedSearchEngines[n.url]?(Object(c["openBlock"])(),Object(c["createElementBlock"])("span",{key:0,class:"delete-element",onClick:function(t){return e.removeEngine(n.url)}},[W,Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("General_Delete")),1)],8,z)):Object(c["createCommentVNode"])("",!0)])):Object(c["createCommentVNode"])("",!0)])})),128))],64)})),128))])],512),[[i]])],512),[[c["vShow"],!e.showEngineForm]]),Object(c["withDirectives"])(Object(c["createElementVNode"])("div",null,[Object(c["createElementVNode"])("h3",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_AddSearchEngine")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("ReferrersManager_ProvideEngineData"))+" ",1),Object(c["createElementVNode"])("p",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_DuplicateHostnameInfo")),1),Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("label",Y,Object(c["toDisplayString"])(e.translate("General_Name"))+"*:",1)]),Object(c["createElementVNode"])("td",null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[3]||(t[3]=function(t){return e.newEngineData["name"]=t}),id:"engineName"},null,512),[[c["vModelText"],e.newEngineData["name"]]])])]),Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("label",J,Object(c["toDisplayString"])(e.translate("ReferrersManager_Hostname"))+"*:",1)]),Object(c["createElementVNode"])("td",null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.newEngineData["host"]=t}),id:"engineHost"},null,512),[[c["vModelText"],e.newEngineData["host"]]])])]),Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("label",Q,Object(c["toDisplayString"])(e.translate("ReferrersManager_Parameters"))+" "+Object(c["toDisplayString"])(e.translate("ReferrersManager_CommaSeparated"))+":",1)]),Object(c["createElementVNode"])("td",null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.newEngineData["parameters"]=t}),id:"engineParameter"},null,512),[[c["vModelText"],e.newEngineData["parameters"]]])])]),Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("label",X,Object(c["toDisplayString"])(e.translate("ReferrersManager_BacklinkPattern"))+":",1)]),Object(c["createElementVNode"])("td",null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.newEngineData["backlink"]=t}),id:"engineBacklink"},null,512),[[c["vModelText"],e.newEngineData["backlink"]]])])]),Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("label",Z,Object(c["toDisplayString"])(e.translate("ReferrersManager_Charset"))+":",1)]),Object(c["createElementVNode"])("td",null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.newEngineData["charset"]=t}),id:"engineCharset"},null,512),[[c["vModelText"],e.newEngineData["charset"]]])])])]),Object(c["createVNode"])(l,{onConfirm:t[8]||(t[8]=function(t){return e.addSearchEngine()})}),Object(c["createVNode"])(l,{onConfirm:t[9]||(t[9]=function(t){return e.showAddSearchEngineForm(!1)}),value:e.translate("General_Cancel")},null,8,["value"])],512),[[c["vShow"],e.showEngineForm]])],64)}function te(e,t){return oe(e)||ce(e,t)||re(e,t)||ne()}function ne(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function re(e,t){if(e){if("string"===typeof e)return ae(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ae(e,t):void 0}}function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt?"".concat(e.substr(0,t-3),"..."):e},showAddEngineError:function(){p["NotificationsStore"].show({message:Object(p["translate"])("ReferrersManager_AddEngineError"),context:"error",noclear:!0,type:"toast",style:{display:"inline-block"},id:"addEngineError"})}}});se.render=ee;var de=se,ue={class:"notification system notification-warning"},be=Object(c["createTextVNode"])(),me={class:"notification system notification-success"},je=Object(c["createTextVNode"])(),fe=Object(c["createElementVNode"])("span",{class:"icon-add"},null,-1),ge=Object(c["createElementVNode"])("span",{class:"icon-reload"},null,-1),Oe={class:"search-detections"},he=["placeholder"],pe={key:0},Ee={key:0},Se={rowspan:"6"},Ne={class:"loadingPiwik"},ye=["alt"],Ve=["rowspan"],ve=["src"],De={key:1},ke=["onClick"],we=Object(c["createElementVNode"])("span",{class:"icon-delete"},null,-1),Ce={key:0},xe={for:"socialName"},Me={for:"socialHost"};function Te(e,t,n,r,a,o){var l=Object(c["resolveComponent"])("SaveButton"),i=Object(c["resolveDirective"])("content-table");return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("div",null,[Object(c["createElementVNode"])("h3",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_SocialsList")),1),Object(c["withDirectives"])(Object(c["createElementVNode"])("p",ue,[Object(c["createElementVNode"])("span",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_SocialListDisabled")),1),be,Object(c["createElementVNode"])("a",{href:"javascript:;",id:"enablesocials",onClick:t[0]||(t[0]=function(t){return e.setDefaultSocialsDisabled(!1)})},Object(c["toDisplayString"])(e.translate("ReferrersManager_EnableSocialList")),1)],512),[[c["vShow"],e.usesOwnSocialDefinitions]]),Object(c["withDirectives"])(Object(c["createElementVNode"])("p",me,[Object(c["createElementVNode"])("span",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_UsingDefaultSocials")),1),je,Object(c["createElementVNode"])("a",{href:"javascript:;",id:"disablesocials",onClick:t[1]||(t[1]=function(t){return e.setDefaultSocialsDisabled(!0)})},Object(c["toDisplayString"])(e.translate("ReferrersManager_DisableSocialList")),1)],512),[[c["vShow"],!e.usesOwnSocialDefinitions]]),Object(c["createElementVNode"])("span",{class:"add-element",onClick:t[2]||(t[2]=function(t){return e.showAddSocialForm(!0)})},[fe,Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("ReferrersManager_AddSocial")),1)]),Object(c["createElementVNode"])("span",{class:"refresh-list",onClick:t[3]||(t[3]=function(t){return e.refreshList()})},[ge,Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("General_Refresh")),1)]),Object(c["createElementVNode"])("div",Oe,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.searchText=t}),value:"",placeholder:e.translate("General_Search")},null,8,he),[[c["vModelText"],e.searchText]])]),Object(c["withDirectives"])(Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("thead",null,[Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.translate("General_Name")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_Hostname")),1),e.userDefinedSocials?(Object(c["openBlock"])(),Object(c["createElementBlock"])("th",pe)):Object(c["createCommentVNode"])("",!0)])]),Object(c["createElementVNode"])("tbody",null,[e.busy?(Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",Ee,[Object(c["createElementVNode"])("th",Se,[Object(c["createElementVNode"])("div",Ne,[Object(c["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,ye),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("General_LoadingData")),1)])])])):Object(c["createCommentVNode"])("",!0),e.busy?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],{key:1},Object(c["renderList"])(e.socialNames.filter((function(t){return t.toLowerCase().includes(e.searchText.toLowerCase())})),(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],{key:t},[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.socials[t],(function(n,r){return Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",{key:r},[0===r?(Object(c["openBlock"])(),Object(c["createElementBlock"])("td",{key:0,rowspan:e.socials[t].length},[e.socialLogos[t]?(Object(c["openBlock"])(),Object(c["createElementBlock"])("img",{key:0,src:e.socialLogos[t],width:"16",height:"16"},null,8,ve)):Object(c["createCommentVNode"])("",!0),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t),1)],8,Ve)):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("td",null,Object(c["toDisplayString"])(n),1),e.userDefinedSocials?(Object(c["openBlock"])(),Object(c["createElementBlock"])("td",De,[e.userDefinedSocials[n]?(Object(c["openBlock"])(),Object(c["createElementBlock"])("span",{key:0,class:"delete-element",onClick:function(t){return e.removeSocial(n)}},[we,Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("General_Delete")),1)],8,ke)):Object(c["createCommentVNode"])("",!0)])):Object(c["createCommentVNode"])("",!0)])})),128))],64)})),128))])],512),[[i]])],512),[[c["vShow"],!e.showSocialForm]]),e.showSocialForm?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Ce,[Object(c["createElementVNode"])("h2",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_AddSocial")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("ReferrersManager_ProvideSocialData"))+" ",1),Object(c["createElementVNode"])("p",null,Object(c["toDisplayString"])(e.translate("ReferrersManager_DuplicateHostnameInfo")),1),Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("label",xe,Object(c["toDisplayString"])(e.translate("General_Name"))+"*:",1)]),Object(c["createElementVNode"])("td",null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.newSocialData["name"]=t}),id:"socialName"},null,512),[[c["vModelText"],e.newSocialData["name"]]])])]),Object(c["createElementVNode"])("tr",null,[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("label",Me,Object(c["toDisplayString"])(e.translate("ReferrersManager_Hostname"))+"*:",1)]),Object(c["createElementVNode"])("td",null,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.newSocialData["host"]=t}),id:"socialHost"},null,512),[[c["vModelText"],e.newSocialData["host"]]])])])]),Object(c["createVNode"])(l,{onConfirm:t[7]||(t[7]=function(t){return e.addSocial()})}),Object(c["createVNode"])(l,{onConfirm:t[8]||(t[8]=function(t){return e.showAddSocialForm(!1)}),value:e.translate("General_Cancel")},null,8,["value"])])):Object(c["createCommentVNode"])("",!0)],64)}function Be(e,t){return He(e)||Le(e,t)||_e(e,t)||Re()}function Re(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _e(e,t){if(e){if("string"===typeof e)return Ae(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ae(e,t):void 0}}function Ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt?"".concat(e.substr(0,t-3),"..."):e},showAddEngineError:function(){p["NotificationsStore"].show({message:Object(p["translate"])("ReferrersManager_AddSocialError"),context:"error",noclear:!0,type:"toast",style:{display:"inline-block"},id:"addEngineError"})}}});Fe.render=Te;var Ue=Fe,Ge=window,$e=Ge.$,qe=Object(c["defineComponent"])({props:{title:String,ownSocialDefinitions:Boolean},mounted:function(){var e=this.$refs.tabs;setTimeout((function(){$e(".tabs",e).tabs()}))},components:{ContentBlock:p["ContentBlock"],URLChecker:M,ManageSearchEngines:de,ManageSocials:Ue}});qe.render=h;var Ke=qe; 2 | /*! 3 | * Matomo - free/libre analytics platform 4 | * 5 | * @link https://matomo.org 6 | * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later 7 | */}})})); 8 | //# sourceMappingURL=ReferrersManager.umd.min.js.map -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . --------------------------------------------------------------------------------