diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2015-10-19 20:12:51 +0300 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2015-10-19 20:12:51 +0300 |
commit | 1b6050626d18e966cb18f03320ead7af14525db5 (patch) | |
tree | d6192b535e944226f3e6acf12351db70a5fc36e1 /plugins | |
parent | 6a14b0ce8461e62a4a37298c370775380305d71b (diff) | |
parent | 48ca332907257c35a7d94c1b120c9ad6cfaf320d (diff) |
Merge branch 'master' into 3.0
Conflicts:
core/Version.php
plugins/Actions/Menu.php
plugins/CoreHome/angularjs/history/history.service.js
plugins/CoreHome/javascripts/menu.js
plugins/CoreHome/templates/_menu.twig
plugins/Dashboard/Menu.php
plugins/Ecommerce/Menu.php
plugins/ExampleUI/Menu.php
plugins/Goals/Menu.php
plugins/Referrers/Menu.php
plugins/VisitsSummary/Menu.php
tests/UI/expected-ui-screenshots
tests/UI/specs/UIIntegration_spec.js
Diffstat (limited to 'plugins')
45 files changed, 308 insertions, 164 deletions
diff --git a/plugins/Actions/lang/sq.json b/plugins/Actions/lang/sq.json index 7fb2909339..c91becf8f0 100644 --- a/plugins/Actions/lang/sq.json +++ b/plugins/Actions/lang/sq.json @@ -1,6 +1,6 @@ { "Actions": { - "AvgGenerationTimeTooltip": "Mesatare e bazuar në %s hit(s) %s mes %s dhe %s", + "AvgGenerationTimeTooltip": "Mesatare e bazuar në %s klikim(e) %s mes %s dhe %s", "ColumnClickedURL": "URL të klikuara", "ColumnClicks": "Klikime", "ColumnClicksDocumentation": "Sa herë është klikuar kjo lidhje.", diff --git a/plugins/Contents/lang/el.json b/plugins/Contents/lang/el.json index aeaed00105..9c3f844e73 100644 --- a/plugins/Contents/lang/el.json +++ b/plugins/Contents/lang/el.json @@ -8,6 +8,9 @@ "ContentName": "Όνομα Περιεχομένου", "ContentPiece": "Κομμάτι Περιεχομένου", "ContentTarget": "Στόχος Περιεχομένου", - "Contents": "Περιεχόμενα" + "Contents": "Περιεχόμενα", + "InteractionsMetricDocumentation": "Ο αριθμός αλληλεπιδράσεων σε ένα μπλοκ περιεχομένου (πχ. ένα 'κλικ' σε μια εικόνα ή διαφήμιση).", + "ImpressionsMetricDocumentation": "Ο αριθμός εμφανίσεων σε μια σελίδα ενός μπλοκ περιεχομένου, όπως μια εικόνα ή διαφήμιση.", + "InteractionRateMetricDocumentation": "Ο λόγος Εμφανίσεων περιεχομένου προς Αλληλεπιδράσεις." } }
\ No newline at end of file diff --git a/plugins/Contents/lang/it.json b/plugins/Contents/lang/it.json index a1b4866928..f9392699b9 100644 --- a/plugins/Contents/lang/it.json +++ b/plugins/Contents/lang/it.json @@ -8,6 +8,9 @@ "ContentName": "Nome Contenuto", "ContentPiece": "Pezzo del Contenuto", "ContentTarget": "Obiettivo del Contenuto", - "Contents": "Contenuti" + "Contents": "Contenuti", + "InteractionsMetricDocumentation": "Numero di volte in cui si è interagito con un blocco di contenuto (es. un 'click' su un banner o una inserzione).", + "ImpressionsMetricDocumentation": "Numero di volte in cui un blocco di contenuto, come un banner o una inserzione, è stato mostrato in una pagina.", + "InteractionRateMetricDocumentation": "Rapporto tra impressioni contenuto e interazioni." } }
\ No newline at end of file diff --git a/plugins/Contents/lang/pt-br.json b/plugins/Contents/lang/pt-br.json index f6cb986676..2a86d36828 100644 --- a/plugins/Contents/lang/pt-br.json +++ b/plugins/Contents/lang/pt-br.json @@ -8,6 +8,9 @@ "ContentName": "Nome do conteúdo", "ContentPiece": "Parte do conteúdo", "ContentTarget": "Destino do conteúdo", - "Contents": "Conteúdos" + "Contents": "Conteúdos", + "InteractionsMetricDocumentation": "O número de vezes que interagiram com um bloco de conteúdo (e.g., um 'clique' em um banner ou anúncio).", + "ImpressionsMetricDocumentation": "O número de vezes que um bloco de conteúdo, como um banner ou um anúncio, foi exibido em uma página.", + "InteractionRateMetricDocumentation": "A proporção de impressões de conteúdo para interações." } }
\ No newline at end of file diff --git a/plugins/CoreAdminHome/Commands/OptimizeArchiveTables.php b/plugins/CoreAdminHome/Commands/OptimizeArchiveTables.php index 9a09dd7350..0e3887b261 100644 --- a/plugins/CoreAdminHome/Commands/OptimizeArchiveTables.php +++ b/plugins/CoreAdminHome/Commands/OptimizeArchiveTables.php @@ -66,9 +66,9 @@ class OptimizeArchiveTables extends ConsoleCommand private function getTableMonthsToOptimize(InputInterface $input) { - $dateSpecifier = $input->getArgument('dates'); - if (count($dateSpecifier) === 1) { - $dateSpecifier = reset($dateSpecifier); + $dateSpecifiers = $input->getArgument('dates'); + if (count($dateSpecifiers) === 1) { + $dateSpecifier = reset($dateSpecifiers); if ($dateSpecifier == self::ALL_TABLES_STRING) { return $this->getAllArchiveTableMonths(); @@ -90,7 +90,7 @@ class OptimizeArchiveTables extends ConsoleCommand } $tableMonths = array(); - foreach ($dateSpecifier as $date) { + foreach ($dateSpecifiers as $date) { $date = Date::factory($date); $tableMonths[] = ArchiveTableCreator::getTableMonthFromDate($date); } diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php index 6070d81aae..7fa434b21f 100644 --- a/plugins/CoreAdminHome/Controller.php +++ b/plugins/CoreAdminHome/Controller.php @@ -295,7 +295,7 @@ class Controller extends ControllerAdmin $view->idSite = Common::getRequestVar('idSite', $defaultIdSite, 'int'); $view->defaultReportSiteName = Site::getNameFor($view->idSite); - $view->defaultSiteRevenue = \Piwik\Metrics\Formatter::getCurrencySymbol($view->idSite); + $view->defaultSiteRevenue = Site::getCurrencySymbolFor($view->idSite); $view->maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); $allUrls = APISitesManager::getInstance()->getSiteUrlsFromId($view->idSite); diff --git a/plugins/CoreAdminHome/tests/Integration/Commands/OptimizeArchiveTablesTest.php b/plugins/CoreAdminHome/tests/Integration/Commands/OptimizeArchiveTablesTest.php index 2fe67b98f2..c309650024 100644 --- a/plugins/CoreAdminHome/tests/Integration/Commands/OptimizeArchiveTablesTest.php +++ b/plugins/CoreAdminHome/tests/Integration/Commands/OptimizeArchiveTablesTest.php @@ -87,6 +87,11 @@ class OptimizeArchiveTablesTest extends ConsoleCommandTestCase Date::factory('now')->subMonth(5)->toString('Y_m'), ), ), + + array( + array('2015-01-01'), + array('2015_01'), + ), ); } }
\ No newline at end of file diff --git a/plugins/CoreConsole/Commands/GenerateUpdate.php b/plugins/CoreConsole/Commands/GenerateUpdate.php index a9d843d04d..8fc91fd50c 100644 --- a/plugins/CoreConsole/Commands/GenerateUpdate.php +++ b/plugins/CoreConsole/Commands/GenerateUpdate.php @@ -34,7 +34,7 @@ class GenerateUpdate extends GeneratePluginBase $className = $this->getUpdateClassName($component, $version); $exampleFolder = PIWIK_INCLUDE_PATH . '/plugins/ExamplePlugin'; - $replace = array('Piwik\Plugins\ExamplePlugin' => $namespace, + $replace = array('Piwik\Plugins\ExamplePlugin\Updates' => $namespace, 'ExamplePlugin' => $component, 'Updates_0_0_2' => $className, '0.0.2' => $version); @@ -82,6 +82,10 @@ class GenerateUpdate extends GeneratePluginBase $className = str_replace('Updates_xx', '', $className); $className = trim($className, '\\'); + if ($component !== 'core') { + $className .= '\Updates'; + } + return $className; } diff --git a/plugins/CoreHome/angularjs/dialogtoggler/dialogtoggler-urllistener.service.js b/plugins/CoreHome/angularjs/dialogtoggler/dialogtoggler-urllistener.service.js index 690f39c0c5..e8fc3c1c54 100644 --- a/plugins/CoreHome/angularjs/dialogtoggler/dialogtoggler-urllistener.service.js +++ b/plugins/CoreHome/angularjs/dialogtoggler/dialogtoggler-urllistener.service.js @@ -83,6 +83,8 @@ service.checkUrlForDialog(); }); + service.checkUrlForDialog(); // check on initial page load + return service; } })();
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/history/history.service.js b/plugins/CoreHome/angularjs/history/history.service.js index 7dadf35ad0..fdad7667ac 100644 --- a/plugins/CoreHome/angularjs/history/history.service.js +++ b/plugins/CoreHome/angularjs/history/history.service.js @@ -36,19 +36,6 @@ loadCurrentPage(); } - function cleanHash(hash) - { - var chars = ['#', '/', '?']; - for (var i = 0; i != chars.length; ++i) { - var charToRemove = chars[i]; - if (hash.charAt(0) == charToRemove) { - hash = hash.substring(1); - } - } - - return hash; - } - // currently, the AJAX content URL is stored in $location.search(), but before it was stored in $location.path(). // this function makes sure URLs like http://piwik.net/?...#/module=Whatever&action=whatever still work. function changePathToSearch() { @@ -95,9 +82,10 @@ function load(hash) { // make sure the hash is just the query parameter values, w/o a starting #, / or ? char. broadcast.pageload & $location.path should get neither - hash = cleanHash(hash); - - if (location.hash === '#?' + hash) { + hash = normalizeHash(hash); + + var currentHash = normalizeHash(location.hash); + if (currentHash === hash) { loadCurrentPage(); // it would not trigger a location change success event as URL is the same, call it manually } else if (hash) { $location.search(hash); @@ -111,5 +99,16 @@ setTimeout(function () { $rootScope.$apply(); }, 1); } + + function normalizeHash(hash) { + var chars = ['#', '/', '?']; + for (var i = 0; i != chars.length; ++i) { + var charToRemove = chars[i]; + if (hash.charAt(0) == charToRemove) { + hash = hash.substring(1); + } + } + return hash; + } } })(window, jQuery, broadcast); diff --git a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html index 3a4cbec8f2..9ee4932163 100644 --- a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html +++ b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html @@ -13,8 +13,8 @@ <input ng-if="inputName" type="hidden" name="{{ inputName }}" ng-value="selectedSite.id"/> - <a ng-click="view.showSitesList=!view.showSitesList; view.showSitesList && model.loadInitialSites();" - piwik-onenter="view.showSitesList=!view.showSitesList; view.showSitesList && model.loadInitialSites();" + <a ng-click="view.showSitesList=!view.showSitesList; view.showSitesList && !model.isLoading && model.loadInitialSites();" + piwik-onenter="view.showSitesList=!view.showSitesList; view.showSitesList && !model.isLoading && model.loadInitialSites();" href="javascript:void(0)" title="{{ 'General_ChooseWebsite'|translate }}" ng-class="{'loading': model.isLoading}" diff --git a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less index 4afc63a8f9..1614ceb4cd 100644 --- a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less +++ b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less @@ -33,7 +33,7 @@ .siteSelector.expanded { .loading { - background: url(plugins/Morpheus/images/loading-blue.gif) no-repeat right 9px; + background: url(plugins/Morpheus/images/loading-blue.gif) no-repeat 94% 11px; } } diff --git a/plugins/CoreHome/lang/de.json b/plugins/CoreHome/lang/de.json index e0f2df2505..4c744998eb 100644 --- a/plugins/CoreHome/lang/de.json +++ b/plugins/CoreHome/lang/de.json @@ -49,7 +49,8 @@ "ClickRowToExpandOrContract": "Klicken Sie auf diese Zeile um die Untertabelle anzuzeigen oder zu verbergen.", "UndoPivotBySubtable": "Pivot erstellt für diesen Bericht %s Pivot rückgängig machen", "PivotBySubtable": "Kein Pivot erstellt für diesen Bericht %s Pivot erstellen mit %s", - "QuickAccessTitle": "Suche nach Menüeinträgen, Segmenten und Websites. Tastenkürzel: Drücken Sie 'f' um zu suchen.", + "QuickAccessTitle": "Suche nach %s. Tastenkürzel: Drücken Sie 'f' um zu suchen.", + "MenuEntries": "Menüeinträge", "Segments": "Segmente", "AdblockIsMaybeUsed": "Für den Fall, dass Sie einen Ad-Blocker verwenden, deaktivieren Sie diesen bitte für diese Seite um sicherzustellen, dass Piwik problemlos läuft." } diff --git a/plugins/CoreHome/lang/el.json b/plugins/CoreHome/lang/el.json index 5f09a036d7..242a7af9e6 100644 --- a/plugins/CoreHome/lang/el.json +++ b/plugins/CoreHome/lang/el.json @@ -49,7 +49,8 @@ "ClickRowToExpandOrContract": "Πατήστε στη γραμμή για να επεκταθεί ή να κρυφτεί ο υποπίνακας.", "UndoPivotBySubtable": "Η αναφορά θεμελιώθηκε %s Αναίρεση της θεμελίωσης", "PivotBySubtable": "Η αναφορά αυτή δεν είναι θεμελιωμένη %s Να θεμελιωθεί από %s", - "QuickAccessTitle": "Αναζήτηση για καταχωρήσεις μενού, τμήματα και ιστοτόπους. Πλήκτρο συντόμευσης: Πατήστε 'f' για αναζήτηση.", + "QuickAccessTitle": "Αναζήτηση για το %s. Πλήκτρο συντόμευσης: Πατήστε 'f' για αναζήτηση.", + "MenuEntries": "Καταχωρήσεις μενού", "Segments": "Τμήματα", "AdblockIsMaybeUsed": "Σε περίπτωση που χρησιμοποιείτε κάποια πρόγραμμα που μπλοκάρει τις διαφημίσεις, παρακαλούμε απενεργοποιήστε το για αυτόν τον ιστοτόπο για να είστε σίγουροι ότι το Piwik δουλεύει σωστά." } diff --git a/plugins/CoreHome/lang/it.json b/plugins/CoreHome/lang/it.json index d002b7d057..1d1513c8de 100644 --- a/plugins/CoreHome/lang/it.json +++ b/plugins/CoreHome/lang/it.json @@ -49,7 +49,9 @@ "ClickRowToExpandOrContract": "Clicca su questa riga per espandere o restringere la sotto-tabella.", "UndoPivotBySubtable": "Questo report è stato imperniato al Pivot %s Undo", "PivotBySubtable": "Questo report non è imperniato al Pivot %s da %s", - "QuickAccessTitle": "Ricerca selezioni da menù, segmenti e siti web. Scorciatoia: Premi 'f' per la ricerca.", - "Segments": "Segmenti" + "QuickAccessTitle": "Cerca %s. Shortcut: Premi 'f' per la ricerca.", + "MenuEntries": "Ingressi da menù", + "Segments": "Segmenti", + "AdblockIsMaybeUsed": "Se stai utilizzando un plugin di blocco della pubblicità, disabilitalo per questo sito, per essere sicuro che Piwik lavori senza problemi." } }
\ No newline at end of file diff --git a/plugins/CoreHome/lang/pt-br.json b/plugins/CoreHome/lang/pt-br.json index 61c4fe3819..69f02cb1ad 100644 --- a/plugins/CoreHome/lang/pt-br.json +++ b/plugins/CoreHome/lang/pt-br.json @@ -49,7 +49,9 @@ "ClickRowToExpandOrContract": "Clique nesta linha para expandir ou contrair a subtabela.", "UndoPivotBySubtable": "Este relatório foi articulado %s desfazer articulação", "PivotBySubtable": "Este relatório não foi articulado %s Articular por %s", - "QuickAccessTitle": "Procurar por entradas do menu, segmentos e websites. Atalho: Pressione 'f' para pesquisar.", - "Segments": "Segmentos" + "QuickAccessTitle": "Buscar por %s. Atalho: Tecle 'f' para buscar.", + "MenuEntries": "Itens do menu", + "Segments": "Segmentos", + "AdblockIsMaybeUsed": "Caso você esteja usando um bloqueador de anúncios, por favor desative-o para este site, pois assim poderá certificar-se de que o Piwik funciona sem qualquer problema." } }
\ No newline at end of file diff --git a/plugins/CoreHome/stylesheets/layout.less b/plugins/CoreHome/stylesheets/layout.less index ac6d3ed8a6..5cffdf3be8 100644 --- a/plugins/CoreHome/stylesheets/layout.less +++ b/plugins/CoreHome/stylesheets/layout.less @@ -129,7 +129,7 @@ margin-left: 45px; } - #secondNavBar { + #secondNavBar:not(.standalone) { z-index: 9999; position: absolute; border-right: 1px solid @theme-color-background-tinyContrast; @@ -380,7 +380,9 @@ font-size: 11px; } } +} +#root, #standalone, .ui-dialog, .ngdialog { .borderedControl { background-color: @theme-color-background-base; border: 1px solid @theme-color-background-tinyContrast; diff --git a/plugins/CoreHome/templates/ReportRenderer/_htmlReportBody.twig b/plugins/CoreHome/templates/ReportRenderer/_htmlReportBody.twig index 12811eb445..a12fe42b5b 100644 --- a/plugins/CoreHome/templates/ReportRenderer/_htmlReportBody.twig +++ b/plugins/CoreHome/templates/ReportRenderer/_htmlReportBody.twig @@ -63,7 +63,7 @@ {% if rowMetrics[columnId] is empty %} 0 {% else %} - {{ rowMetrics[columnId] }} + {{ rowMetrics[columnId]|number(2) }} {% endif %} {% endif %} </td> diff --git a/plugins/CoreHome/templates/_menu.twig b/plugins/CoreHome/templates/_menu.twig index b04b809405..51b87bc301 100644 --- a/plugins/CoreHome/templates/_menu.twig +++ b/plugins/CoreHome/templates/_menu.twig @@ -1,6 +1,7 @@ + {% macro menu(menu, anchorlink, cssClass, currentModule, currentAction) %} <div id="secondNavBar" class="{{ cssClass }}"> - <div id="search"> + <div id="search" ng-cloak> <div piwik-quick-access class="borderedControl"></div> </div> <ul class="navbar"> @@ -26,7 +27,7 @@ {% for name,urlParameters in level2 %} {% if name|slice(0,1) != '_' %} <li {% if urlParameters._url.module is defined and urlParameters._url.module == currentModule and urlParameters._url.action is defined and urlParameters._url.action == currentAction %}class="active"{% endif %} - > + > <a class="item" href="index.php?{{ urlParameters._url|urlRewriteWithParameters|slice(1) }}"> {{ name|translate }} diff --git a/plugins/CustomVariables/lang/sq.json b/plugins/CustomVariables/lang/sq.json index ac17a0946a..0f7c09eb34 100644 --- a/plugins/CustomVariables/lang/sq.json +++ b/plugins/CustomVariables/lang/sq.json @@ -4,6 +4,7 @@ "ColumnCustomVariableValue": "Vlerë Ndryshoreje të Personalizueshme", "CustomVariables": "Ndryshore të Personalizueshme", "CustomVariablesReportDocumentation": "Ky raport përmban të dhëna rreth Ndryshoreve tuaja të Personalizuara. Klikoni mbi një emër ndryshoreje që të shihni shpërndarjen e vlerave. %s Për më tepër të dhëna rreth Ndryshoresh të Personalizuara në përgjithësi, lexoni %sdokumentimin e Ndryshoreve të Personalizuara te piwik.org%s", + "PluginDescription": "Ndryshoret e Personalizueshme janë çifte (emër, vlerë) që mund t’ua vini në përshoqërim vizitorëve tuaj apo çfarëdo veprimi prej tyre, duke përdorur API-n për Javascript-in. Piwik-u mandej do të raportojë sa vizita, faqe, shndërrime ka për secilin prej këtyre emrave dhe vlerave të personalizuara. Ndryshoret e Personalizueshme në hollësi për çdo përdorues dhe veprim i gjeni te Regjistri i Vizitorëve.<br \/>E domosdoshme për përdorim të veçorisë <a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">Analiza E-tregti<\/a>!", "ScopePage": "faqe me qëllim", "ScopeVisit": "vizitë me qëllim" } diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php index f46bf1526f..5eee375988 100644 --- a/plugins/Dashboard/Dashboard.php +++ b/plugins/Dashboard/Dashboard.php @@ -297,6 +297,7 @@ class Dashboard extends \Piwik\Plugin $translationKeys[] = 'Dashboard_WidgetNotFound'; $translationKeys[] = 'Dashboard_DashboardCopied'; $translationKeys[] = 'Dashboard_Dashboard'; + $translationKeys[] = 'Dashboard_RemoveDefaultDashboardNotPossible'; $translationKeys[] = 'General_Close'; $translationKeys[] = 'General_Refresh'; } diff --git a/plugins/Dashboard/javascripts/dashboard.js b/plugins/Dashboard/javascripts/dashboard.js index 5a0396e6b3..6286f74791 100644 --- a/plugins/Dashboard/javascripts/dashboard.js +++ b/plugins/Dashboard/javascripts/dashboard.js @@ -161,21 +161,15 @@ function copyDashboardToUser() { // on menu item click, trigger action event on this var self = this; this.$element.on('click', 'ul.submenu li[data-action]', function (e) { - self.$element.toggleClass('expanded'); - - $(self).trigger($(this).attr('data-action')); + if (!$(this).attr('disabled')) { + self.$element.removeClass('expanded'); + $(self).trigger($(this).attr('data-action')); + } }); // open manager on open this.$element.on('click', function (e) { - if ($(e.target).is('.dashboardSettings,.dashboardSettings>span')) { - self.$element.toggleClass('expanded'); - - // fix position - self.$element - .find('.widgetpreview-widgetlist') - .css('paddingTop', self.$element.find('.widgetpreview-categorylist').parent('li').position().top); - + if ($(e.target).is('.dashboardSettings') || $(e.target).closest('.dashboardSettings').length) { self.onOpen(); } }); @@ -273,10 +267,24 @@ function copyDashboardToUser() { $.extend(DashboardManagerControl.prototype, DashboardSettingsControlBase.prototype, { onOpen: function () { if ($('#dashboardWidgetsArea').dashboard('isDefaultDashboard')) { - $('.removeDashboardLink', this.$element).hide(); + $('[data-action=removeDashboard]', this.$element).attr('disabled', 'disabled'); + $(this.$element).tooltip({ + items: '[data-action=removeDashboard]', + show: false, + hide: false, + track: true, + content: function() { + return _pk_translate('Dashboard_RemoveDefaultDashboardNotPossible') + }, + tooltipClass: 'small' + }); } else { - $('.removeDashboardLink', this.$element).show(); - } + $('[data-action=removeDashboard]', this.$element).removeAttr('disabled'); + // try to remove tooltip if any + try { + $(this.$element).tooltip('destroy'); + } catch (e) { } + } }, hide: function () { diff --git a/plugins/Dashboard/javascripts/dashboardWidget.js b/plugins/Dashboard/javascripts/dashboardWidget.js index 969ed9db28..29f0a3a794 100755 --- a/plugins/Dashboard/javascripts/dashboardWidget.js +++ b/plugins/Dashboard/javascripts/dashboardWidget.js @@ -118,9 +118,12 @@ var self = this, currentWidget = this.element; function onWidgetLoadedReplaceElementWithContent(loadedContent) { - $('.widgetContent', currentWidget).html(loadedContent); - $('.widgetContent', currentWidget).removeClass('loading'); - $('.widgetContent', currentWidget).trigger('widget:create', [self]); + var $widgetContent = $('.widgetContent', currentWidget); + + $widgetContent.html(loadedContent); + piwikHelper.compileAngularComponents($widgetContent); + $widgetContent.removeClass('loading'); + $widgetContent.trigger('widget:create', [self]); } // Reading segment from hash tag (standard case) or from the URL (when embedding dashboard) @@ -349,4 +352,4 @@ } }); -})(jQuery);
\ No newline at end of file +})(jQuery); diff --git a/plugins/Dashboard/lang/en.json b/plugins/Dashboard/lang/en.json index 89d8c994d9..68bfd22c8e 100644 --- a/plugins/Dashboard/lang/en.json +++ b/plugins/Dashboard/lang/en.json @@ -21,6 +21,7 @@ "PluginDescription": "Your Web Analytics Dashboard. Customise your dashboard by adding new widgets, drag and drop them around, and change the dashboard column layout. Each user can manage their own custom dashboard.", "RemoveDashboard": "Remove dashboard", "RemoveDashboardConfirm": "Are you sure you want to remove the dashboard \"%s\"?", + "RemoveDefaultDashboardNotPossible": "The default dashboard cannot be removed", "RenameDashboard": "Rename dashboard", "ResetDashboard": "Reset dashboard", "ResetDashboardConfirm": "Are you sure you want to reset your dashboard layout to the default Widgets selection?", diff --git a/plugins/Dashboard/stylesheets/dashboard.less b/plugins/Dashboard/stylesheets/dashboard.less index 39ad2e3ed7..b45398379c 100644 --- a/plugins/Dashboard/stylesheets/dashboard.less +++ b/plugins/Dashboard/stylesheets/dashboard.less @@ -335,6 +335,11 @@ div.widgetpreview-preview { color: @theme-color-link; } +.dashboardSettings .submenu li[disabled], +.dashboardSettings .submenu li[disabled]:hover { + color: #d3d3d3; +} + .dashboardSettings .widgetpreview-widgetlist { width: 228px; font-weight: normal; diff --git a/plugins/ExamplePlugin/Updates/0.0.2.php b/plugins/ExamplePlugin/Updates/0.0.2.php index 6ab86893fe..b958d91df0 100644 --- a/plugins/ExamplePlugin/Updates/0.0.2.php +++ b/plugins/ExamplePlugin/Updates/0.0.2.php @@ -7,16 +7,16 @@ * */ -namespace Piwik\Plugins\ExamplePlugin; +namespace Piwik\Plugins\ExamplePlugin\Updates; use Piwik\Common; use Piwik\Updater; -use Piwik\Updates; +use Piwik\Updates as PiwikUpdates; /** * Update for version 0.0.2. */ -class Updates_0_0_2 extends Updates +class Updates_0_0_2 extends PiwikUpdates { /** diff --git a/plugins/Feedback/lang/sq.json b/plugins/Feedback/lang/sq.json index 552e72e69e..803ab58ac8 100644 --- a/plugins/Feedback/lang/sq.json +++ b/plugins/Feedback/lang/sq.json @@ -1,22 +1,34 @@ { "Feedback": { "DoYouHaveBugReportOrFeatureRequest": "Keni ndonjë të metë që ta raportoni apo kërkesë për veçori të reja?", + "HowToCreateTicket": "Ju lutemi, lexoni rekomandimet se si të shkruhet si duhet një %1$snjoftim të metash%2$s apo %3$skërkesë për veçori%4$s. Mandej regjistrohuni ose bëni hyrjen te %5$sndjekësi ynë i çështjeve%6$s dhe krijoni një %7$sçështje të re%8$s.", "IWantTo": "Dua të:", "LearnWaysToParticipate": "Njihuni me krejt mënyrat përmes të cilave mund të %s merrni pjesë%s", "ManuallySendEmailTo": "Ju lutem, dërgojeni mesazhin tuaj dorazi te", + "PluginDescription": "Dërgojani Përshtypjet tuaja Ekipit të Piwik-ut. Ndani me taidetë dhe sugjerimet tuaja për ta bërë Piwik-un platformën më të mirë në botë për analiza!", + "PrivacyClaim": "Piwik-u respekton %1$sprivatësinë%2$s tuaj dhe ju jep kontroll të plotë mbi të dhënat tuaja.", "RateFeatureLeaveMessageDislike": "Na vjen keq që dëgjojmë se s’ju pëlqen! Ju lutemi, na thoni se si mund ta përmirësojmë.", "RateFeatureLeaveMessageLike": "Gëzohemi që ju pëlqen! Ju lutemi, na thoni se çfarë ju pëlqeu më shumë ose nëse keni ndonjë kërkesë për veçori të re.", + "RateFeatureSendFeedbackInformation": "Platforma juaj Piwik do të na dërgojë (ekipit Piwik) një email (përfshi adresën tuaj email), që të mund të lidhemi me ju, nëse keni ndonjë pyetje.", "RateFeatureThankYouTitle": "Faleminderit për vlerësimin e '%s'!", "RateFeatureTitle": "Ju pëlqen veçoria '%s'? Ju lutemi, vlerësojeni dhe lini një koment", "SendFeedback": "Dërgoji Përshtypjet", "ThankYou": "Faleminderit që na ndihmoni ta bëjmë më të mirë Piwik-un!", "TopLinkTooltip": "Na thoni se ç’mendim keni, ose kërkoni Asistencë Profesionale.", "ViewAnswersToFAQ": "Shihni përgjigjet te %sPyetje të Bëra Shpesh%s", + "ViewUserGuides": "Mësoni përmes %1$sudhërëfyesit tonë për përdoruesit%2$s se si ta formësoni Piwik-un dhe si të analizoni me efektshmëri të dhënat tuaja", "CommunityHelp": "Ndihmë nga Bashkësia", "ProfessionalHelp": "Ndihmë Profesionale", + "PiwikProIntro": "Piwik PRO ofron për klientë që e kanë Piwik-un të strehuar në infrastrukturë të tyre asistencë dhe konsulencë.", "PiwikProOfferIntro": "Në ofertën tonë përfshihet", + "PiwikProReviewPiwikSetup": "Një përmbledhje e rregullimeve tuaja për Piwik-un", + "PiwikProOptimizationMaintenance": "Shërbime optimizimi & mirëmbajtjeje Piwik-u", "PiwikProPhoneEmailSupport": "Asistencë Telefonike dhe me Email", + "PiwikProTraining": "Trajnim Teknik, Përdoruesi, Zhvilluesi", "PiwikProPremiumFeatures": "Veçori Me Pagesë", + "PiwikProCustomDevelopment": "Shërbime Personalizimesh", + "PiwikProAnalystConsulting": "Shërbime konsulence analizash", + "ContactUs": "Lidhuni me ne", "VisitTheForums": "Vizitoni %s Forumet%s" } }
\ No newline at end of file diff --git a/plugins/Goals/lang/sq.json b/plugins/Goals/lang/sq.json index bb9ed447af..559f7a122c 100644 --- a/plugins/Goals/lang/sq.json +++ b/plugins/Goals/lang/sq.json @@ -7,12 +7,18 @@ "AllowGoalConvertedMoreThanOncePerVisit": "Lejoje Objektivin të shndërrohet më shumë se një herë për vizitë", "AllowMultipleConversionsPerVisit": "Lejo shndërrime shumëfishe për vizitë", "BestCountries": "Vendet me shndërrime më të mira për ju janë:", - "BestKeywords": "Fjalëkyçat kryesues për shndërrimet tuaja janë:", - "BestReferrers": "Referuesit më të mirë të shndërrimeve nga site-et web për ju janë:", - "CaseSensitive": "Përputhjes për siç është shkruajtur", + "BestKeywords": "Fjalëkyçet kryesues për shndërrimet tuaja janë:", + "BestReferrers": "Referuesit më të mirë të shndërrimeve nga sajte për ju janë:", + "CaseSensitive": "Përputhje për siç është shkruajtur", + "CancelAndReturnToGoals": "Anulojeni dhe %skthehuni te lista e objektivave%s", + "CategoryTextGeneral_Visitors": "Vend përdoruesi", "CategoryTextReferrers_Referrers": "Referues", - "ClickOutlink": "Klikon mbi një Lidhje te një site web i jashtëm", - "ColumnAverageOrderRevenueDocumentation": "Vlera Mesatare për Porosi (VMP) është shifra e marrë nga pjesëtimi i të ardhura gjithsej nga krejt Porositë E-tregti me numrin e porosive.", + "CategoryTextVisitsSummary_VisitsSummary": "Atribut përdoruesi", + "CategoryTextGeneral_Visit": "angazhim", + "ChooseGoal": "Zgjidhni Objektiv", + "ClickOutlink": "Klikon mbi një Lidhje për te një sajt i jashtëm", + "SendEvent": "Dërgoni një veprimtari", + "ColumnAverageOrderRevenueDocumentation": "Vlera Mesatare për Porosi (VMP) është shifra e marrë nga pjesëtimi i të ardhurave gjithsej nga krejt Porositë E-tregti me numrin e porosive.", "ColumnAveragePriceDocumentation": "Të ardhurat mesatare për këtë %s.", "ColumnAverageQuantityDocumentation": "Sasia mesatare e këtij %s shitur nga porosi E-tregtie.", "ColumnConversionRateDocumentation": "Përqindja e vizitave që shkaktuan veprimtari në objektivin %s.", @@ -27,12 +33,13 @@ "ColumnVisits": "Numër vizitash gjithsej, pavarësisht nëse u shkaktua a jo veprimtari te një objektiv.", "ColumnVisitsProductDocumentation": "Numri i vizitave te faqja Produkt\/Kategori. Kjo përdoret gjithashtu për të përpunuar koeficientin %s e shndërrimeve. Kjo llogaritje gjendet te raporti nëse ndjekja e parjeve E-tregti është rregulluar te faqet Produkt\/Kategori.", "Contains": "përmban %s", - "ConversionByTypeReportDocumentation": "Ky raport ofron të dhëna të hollësishme rreth funksionimit të objektivave (shndërrime, koeficient shndërrimesh dhe të ardhura për vizitë) për secilën prej kategorive të mundshme te paneli majtas. %s Ju lutem, klikoni mbi një nga këto kategori që të shihni raportin. %s Për më tepër të dhëna, lexoni %sdokumentimin për Ndjekje Objektivash te piwik.org%s", + "ConversionByTypeReportDocumentation": "Ky raport ofron të dhëna të hollësishme rreth funksionimit të objektivave (shndërrime, koeficient shndërrimesh dhe të ardhura për vizitë) për secilën prej kategorive të mundshme te paneli majtas. %s Ju lutemi, klikoni mbi një nga këto kategori që të shihni raportin. %s Për më tepër të dhëna, lexoni %sdokumentimin për Ndjekje Objektivash te piwik.org%s", "ConversionRate": "Koeficient shndërrimi %s", "Conversions": "Shndërrime %s", "ConversionsOverview": "Përmbledhje Shndërrimesh", "ConversionsOverviewBy": "Përmbledhje shndërrimesh sipas llojit të vizitave", "DaysToConv": "Ditë për Shndërrim", + "Details": "Hollësi objektivi", "DefaultGoalConvertedOncePerVisit": "(parazgjedhje) Objektivi mund të shndërrohet një herë për vizitë", "DefaultRevenue": "E ardhura parazgjedhje e objektivit është", "DefaultRevenueHelp": "Për shembull, një Formular Kontakti parashtruar nga një vizitor mund të vlejë mesatarisht 10 euro. Piwik-u do t'ju ndihmojë të kuptoni se si shtresëzohen segmentet e vizitorëve tuaj.", @@ -41,12 +48,12 @@ "Download": "Shkarkon një kartelë", "Ecommerce": "E-tregti", "EcommerceAndGoalsMenu": "E-tregti & Objektiva", - "EcommerceLog": "Regjistrim E-tregtie", + "EcommerceLog": "Regjistër E-tregtie", "EcommerceOrder": "Porosi E-tregtie", "EcommerceOverview": "Përmbledhje E-tregtie", "EcommerceReports": "Raporte E-tregtie", "ExceptionInvalidMatchingString": "Nëse zgjidhni 'përputhje e përpiktë', vargu për përputhje duhet të jetë një URL që fillon me %s. Për shembull, '%s'.", - "ExternalWebsiteUrl": "URL site-i web të jashtëm", + "ExternalWebsiteUrl": "URL sajti të jashtëm", "Filename": "emër kartele", "GoalConversion": "Shndërrim objektivi", "GoalConversions": "Shndërrime objektivi", @@ -55,35 +62,46 @@ "GoalIsTriggeredWhen": "Objektivi vihet në punë kur", "GoalName": "Emër Objektivi", "Goals": "Objektiva", + "ManageGoals": "Administroni Objektiva", "GoalsOverview": "Përmbledhje objektivash", "GoalsOverviewDocumentation": "Kjo është një përmbledhje e shndërrimeve tuaja për objektivat. Fillimisht, grafiku tregon shumën e krejt shndërrimeve. %s Nën grafik, mund të shihni raporte shndërrimesh për secilin prej objektivave tuaj. Grafikët vijëzorë mund të zmadhohen duke klikuar mbi ta.", "GoalX": "Objektiv %s", "HelpOneConversionPerVisit": "Nëse një faqe që përputhet me këtë Objektiv rifreskohet ose shihet më shumë se një herë gjatë një Vizite, Objektivi do të ndiqet vetëm herën e parë që faqja u ngarkua gjatë kësaj vizite.", "IsExactly": "është saktësisht %s", + "LearnMoreAboutGoalTrackingDocumentation": "Mësoni më tepër mbi %s Gjurmimin e Objektivave në Piwik%s, te dokumentimi i përdoruesit.", "LeftInCart": "%s ende në shportë", + "ManageGoalsOrCreateANewGoal": "%sAdministroni Objektiva%s ose krijoni tani një Objektiv të ri!", "Manually": "dorazi", "ManuallyTriggeredUsingJavascriptFunction": "Objektivi vihet në punë dorazi duke përdorur JavaScript API trackGoal()", "MatchesExpression": "përputhet me shprehjen %s", + "NewGoalIntro": "Gjurmimi i Shndërrimeve të Objektivave është një rrugët më të efektshme për të matu dhe përmirësuar objektivat e biznesit tuaj.", "NewVisitorsConversionRateIs": "Koeficienti i shndërrimit për vizitorë të rinj është %s", + "NoGoalsNeedAccess": "Objektivat për një sajt të dhënë mund t’i administrojë vetëm Përgjegjësi ose një përdorues me leje Superpërdoruesi. Ju lutemi, kërkojini përgjegjësit të Piwik-ut tuaj të caktojë një Objektiv për sajtin tuaj. <br>Gjurmimi i Objektivave është një rrugë e fuqishme për të ndihmuar të kuptohet dhe maksimizohet suksesshmëria e sajtit tuaj!", + "NeedAccess": "Objektivat për një sajt të dhënë mund t’i administrojë vetëm Përgjegjësi ose një përdorues me leje Superpërdoruesi.", "Optional": "(opsionale)", "OverallConversionRate": "Koeficient shndërrimesh %s gjithsej (vizita me objektiv të plotësuar)", "OverallRevenue": "E ardhur %s e përgjithshme", "PageTitle": "Titull Faqeje", "Pattern": "Mostër", + "PluginDescription": "Krijoni Objektiva dhe shihni raporte të hollësishëm mbi shndërrime të objektivave tuaj: evolucioni përgjatë kohës, të ardhura për vizitë, shndërrime sipas referuesish, fjalëkyçesh, etj.", "ProductCategory": "Kategori Produkti", "ProductName": "Emër Produkti", "Products": "Produkte", "ProductSKU": "SKU Produkti", "ReturningVisitorsConversionRateIs": "Koeficienti i shndërrimit për vizitorë të rikthyer është %s", + "SingleGoalOverviewDocumentation": "Kjo është një përmbledhje e shndërrimeve për një objektiv të vetëm. %s Vijat e grafikut nën të mund të zgjerohen duke klikuar mbi to.", + "ThereIsNoGoalToManage": "Për sajtin %s s’ka objektiva për administrim", "UpdateGoal": "Përditësoni Objektiv", "URL": "URL", "ViewAndEditGoals": "Shihni dhe Përpunoni Objektiva", + "GoalsBy": "Objektiva sipas %s", + "GoalsAdjective": "Objektiva %s", "VisitPageTitle": "Vizitoni një Titull Faqeje të dhënë", "VisitsUntilConv": "Vizita për Shndërrim", - "VisitUrl": "Viziton një URL të dhënë (faqe ose grup faqesh)", + "VisitUrl": "Vizitoni një URL të dhënë (faqe ose grup faqesh)", "WhenVisitors": "kur vizitorët", "WhereThe": "kur", "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "kur faqja e vizituar përmban një thirrje të metodës JavaScript piwikTracker.trackGoal() (%smësoni më tepër%s)", - "YouCanEnableEcommerceReports": "Për këtë site web mund të aktivizoni %s te faqja %s." + "YouCanEnableEcommerceReports": "Për këtë sajt mund të aktivizoni %s te faqja %s." } }
\ No newline at end of file diff --git a/plugins/Live/templates/_dataTableViz_visitorLog.twig b/plugins/Live/templates/_dataTableViz_visitorLog.twig index 9944f53c19..16cac60b73 100644 --- a/plugins/Live/templates/_dataTableViz_visitorLog.twig +++ b/plugins/Live/templates/_dataTableViz_visitorLog.twig @@ -88,7 +88,7 @@ {% if visitor.getColumn('searchEngineIcon') %} <img src="{{ visitor.getColumn('searchEngineIcon') }}" alt="{{ visitor.getColumn('referrerName') }}"/> {% endif %} - <span {% if not showKeyword %}title="{{ keywordNotDefined }}"{% endif %}>{{ visitor.getColumn('referrerName') }}</span> + <span {% if not showKeyword %}title="{{ keywordNotDefined }}" class="visitorLogTooltip"{% endif %}>{{ visitor.getColumn('referrerName') }}</span> {% if showKeyword %}{{ 'Referrers_Keywords'|translate }}: <a href="{{ visitor.getColumn('referrerUrl') }}" rel="noreferrer" target="_blank" style="text-decoration:underline;"> "{{ visitor.getColumn('referrerKeyword') }}"</a> diff --git a/plugins/MultiSites/Dashboard.php b/plugins/MultiSites/Dashboard.php index a9032b6fd3..75f8159220 100644 --- a/plugins/MultiSites/Dashboard.php +++ b/plugins/MultiSites/Dashboard.php @@ -118,11 +118,13 @@ class Dashboard private function formatMetrics(&$metrics) { - $formatter = new NumberFormatter(); + $formatter = NumberFormatter::getInstance(); foreach($metrics as $metricName => &$value) { if(in_array($metricName, $this->displayedMetricColumns)) { if( strpos($metricName, 'revenue') !== false) { + $currency = isset($metrics['idsite']) ? Site::getCurrencySymbolFor($metrics['idsite']) : ''; + $value = $formatter->formatCurrency($value, $currency); continue; } $value = $formatter->format($value); @@ -325,16 +327,11 @@ class Dashboard private function enrichValues($sites) { - $formatter = new Formatter(); - foreach ($sites as &$site) { if (!isset($site['idsite'])) { continue; } - if (isset($site['revenue'])) { - $site['revenue'] = $formatter->getPrettyMoney($site['revenue'], $site['idsite']); - } $site['main_url'] = Site::getMainUrlFor($site['idsite']); $this->formatMetrics($site); diff --git a/plugins/MultiSites/tests/Integration/ControllerTest.php b/plugins/MultiSites/tests/Integration/ControllerTest.php index 581c426922..6f6b1e743a 100644 --- a/plugins/MultiSites/tests/Integration/ControllerTest.php +++ b/plugins/MultiSites/tests/Integration/ControllerTest.php @@ -36,10 +36,10 @@ class ControllerTest extends SystemTestCase $this->assertSame(15, count($sites['sites'])); $this->assertEquals(array( 'label' => 'Site 1', - 'nb_visits' => 2, - 'nb_actions' => 4, - 'nb_pageviews' => 3, - 'revenue' => '$ 2541', + 'nb_visits' => '2', + 'nb_actions' => '4', + 'nb_pageviews' => '3', + 'revenue' => '$2,541', 'visits_evolution' => '100%', 'actions_evolution' => '100%', 'pageviews_evolution' => '100%', @@ -56,7 +56,7 @@ class ControllerTest extends SystemTestCase 'nb_pageviews' => 8, 'nb_visits' => 5, 'nb_actions' => 12, - 'revenue' => 5082, + 'revenue' => '5,082', 'nb_visits_lastdate' => 0, ), 'lastDate' => '2013-01-22' diff --git a/plugins/MultiSites/tests/Integration/DashboardTest.php b/plugins/MultiSites/tests/Integration/DashboardTest.php index 7c79ce93e9..858af222ce 100644 --- a/plugins/MultiSites/tests/Integration/DashboardTest.php +++ b/plugins/MultiSites/tests/Integration/DashboardTest.php @@ -71,7 +71,7 @@ class DashboardTest extends IntegrationTestCase 'nb_visits' => 0, 'nb_actions' => 0, 'nb_pageviews' => 0, - 'revenue' => '$ 0', + 'revenue' => '$0', 'visits_evolution' => '0%', 'actions_evolution' => '0%', 'pageviews_evolution' => '0%', @@ -85,7 +85,7 @@ class DashboardTest extends IntegrationTestCase 'nb_visits' => 0, 'nb_actions' => 0, 'nb_pageviews' => 0, - 'revenue' => '$ 0', + 'revenue' => '$0', 'visits_evolution' => '0%', 'actions_evolution' => '0%', 'pageviews_evolution' => '0%', @@ -99,7 +99,7 @@ class DashboardTest extends IntegrationTestCase 'nb_visits' => 0, 'nb_actions' => 0, 'nb_pageviews' => 0, - 'revenue' => '$ 0', + 'revenue' => '$0', 'visits_evolution' => '0%', 'actions_evolution' => '0%', 'pageviews_evolution' => '0%', @@ -123,7 +123,7 @@ class DashboardTest extends IntegrationTestCase 'nb_visits' => 0, 'nb_actions' => 0, 'nb_pageviews' => 0, - 'revenue' => '$ 0', + 'revenue' => '$0', 'visits_evolution' => '0%', 'actions_evolution' => '0%', 'pageviews_evolution' => '0%', diff --git a/plugins/Referrers/lang/el.json b/plugins/Referrers/lang/el.json index ec0a844319..555b23dd2a 100644 --- a/plugins/Referrers/lang/el.json +++ b/plugins/Referrers/lang/el.json @@ -50,6 +50,6 @@ "WidgetGetAll": "Όλες οι Παραπομπές", "WidgetSocials": "Λίστα κοινωνικών δικτύων", "WidgetTopKeywordsForPages": "Δημοφιλέστερες Λέξεις-Κλειδιά για τη Διεύθυνση URL της σελίδας", - "XPercentOfVisits": "%s των επισκέψεων" + "XPercentOfVisits": "%s επισκέψεων" } }
\ No newline at end of file diff --git a/plugins/Referrers/lang/sq.json b/plugins/Referrers/lang/sq.json index 4b1f8dd0e4..f23869ce6f 100644 --- a/plugins/Referrers/lang/sq.json +++ b/plugins/Referrers/lang/sq.json @@ -1,40 +1,55 @@ { "Referrers": { + "AllReferrersReportDocumentation": "Ky raport shfaq krejt Sjellësit, në një raport të unifikuar, duke paraqitur krejt Sajtet, fjalëkyçe Kërkimi dhe Fushata të përdorura nga vizitorët për gjetjen e sajtit tuaj.", "Campaigns": "Fushata", - "CampaignsDocumentation": "Vizitorë që kanë ardhur te site-i juaj web si rrjedhojë e një fushate. Për më tepër %s shihni %s raportin.", - "CampaignsReportDocumentation": "Ky raport tregon se cilat fushata prunë vizitorë te site-i juaj web. %s Për më tepër të dhëna rreth fushatave të ndjekjes, lexoni %sdokumentimin mbi fushatat, te piwik.org%s", + "CampaignsDocumentation": "Vizitorë që kanë ardhur te sajti juaj si rrjedhojë e një fushate. Për më tepër %s shihni %s raportin.", + "CampaignsReportDocumentation": "Ky raport tregon se cilat fushata prunë vizitorë te sajti juaj. %s Për më tepër të dhëna rreth fushatave të ndjekjes, lexoni %sdokumentimin mbi fushatat, te piwik.org%s", "ColumnCampaign": "Fushatë", "ColumnSearchEngine": "Motorë Kërkimesh", - "ColumnWebsite": "\"Site\" Web", - "ColumnWebsitePage": "Faqe \"site\"-i Web", + "ColumnSocial": "Rrjet shoqëror", + "ColumnWebsite": "Sajt", + "ColumnWebsitePage": "Faqe Sajti", "DirectEntry": "Zë i Drejtpërdrejtë", - "DirectEntryDocumentation": "Një vizitor dha URL-në te shfletuesi i vet dhe filloi shfletimin e site-it tuaj - site-in e dha drejtpërdrejt.", - "Distinct": "Referuesa të Dallueshëm sipas Llojit të Referuesit", + "DirectEntryDocumentation": "Një vizitor dha URL-në te shfletuesi i vet dhe filloi shfletimin e sajtit tuaj - sajtin e dha drejtpërdrejt.", + "Distinct": "Sjellës të Dallueshëm sipas Llojit të Sjellësit", "DistinctCampaigns": "fushata të dallueshme", - "DistinctKeywords": "fjalëkyça të dallueshëm", + "DistinctKeywords": "fjalëkyçe të dallueshëm", "DistinctSearchEngines": "motorë kërkimesh të dallueshëm", - "DistinctWebsites": "\"site\"-e web të dallueshëm", - "EvolutionDocumentation": "Kjo është një përmbledhje e sjellësve që prunë vizitorë te site-i juaj.", + "DistinctWebsites": "sajte të dallueshëm", + "EvolutionDocumentation": "Kjo është një përmbledhje e sjellësve që prunë vizitorë te sajti juaj.", "EvolutionDocumentationMoreInfo": "Për më tepër të dhëna rreth llojeve të ndryshëm të sjellësve, shihni dokumentimin mbi tabelën %s.", - "Keywords": "Fjalëkyça", - "KeywordsReportDocumentation": "Ky raport tregon cilët fjalëkyça janë përdorur nga përdoruesit përpara se të silleshin te site-i juaj web. %s Duke klikuar mbi një rresht të tabelës, mund të shihni shpërndarjen sipas motorëve të kërkimit te të cilët u kërkua rreth fjalëkyçit.", - "ReferrerName": "Emër Referuesi", + "Keywords": "Fjalëkyçe", + "KeywordsReportDocumentation": "Ky raport tregon cilët fjalëkyçe janë përdorur nga përdoruesit përpara se të silleshin te sajti juaj. %s Duke klikuar mbi një rresht të tabelës, mund të shihni shpërndarjen sipas motorëve të kërkimit te të cilët u kërkua rreth fjalëkyçit.", + "PluginDescription": "Raporton të dhëna Sjellësish: Motorë Kërkimesh, Fjalëkyçe, Sajte, Fushata, Media Shoqërore, Zëra të Drejtpërdrejtë.", + "Referrer": "Sjellës", + "ReferrerName": "Emër Sjellësi", "Referrers": "Referuesa", + "ReferrersOverview": "Përmbledhje Referuesish", + "ReferrerTypes": "Lloje Referuesish", "SearchEngines": "Motorë Kërkimesh", - "SearchEnginesDocumentation": "Një vizitori i është treguar site-i juaj nga një motor kërkimesh. Për më tepër hollësira, %s shihni %s raportin.", - "SearchEnginesReportDocumentation": "Ky raport shfaq cilët motorë kërkimi sollën përdorues te site-i juaj web. %s Duke klikuar mbi një rresht të tabelës, mund të shihni se për çfarë po kërkonin përdoruesit që përdorën një motor të caktuar kërkimesh.", - "SubmenuSearchEngines": "Motorë kërkimi & fjalëkyça", - "SubmenuWebsites": "\"Site\"-e Web", - "Type": "Lloj Referuesi", + "SearchEnginesDocumentation": "Një vizitori i është treguar sajti juaj nga një motor kërkimesh. Për më tepër hollësira, %s shihni %s raportin.", + "SearchEnginesReportDocumentation": "Ky raport shfaq cilët motorë kërkimi sollën përdorues te sajti juaj web. %s Duke klikuar mbi një rresht të tabelës, mund të shihni se për çfarë po kërkonin përdoruesit që përdorën një motor të caktuar kërkimesh.", + "SocialFooterMessage": "Ky është një nëngrup i raportit të Sajteve në të majtë. Lë jashtë sajte të tjerë, që kështu të mundeni të krahasoni drejtpërsëdrejti sjellësit tuaj nga rrjete shoqërore.", + "Socials": "Rrjete Shoqërore", + "SocialsReportDocumentation": "Ky raport shfaq rrjetet shoqërore që prunë vizitorë te sajti juaj.<br \/>Duke klikuar mbi një rresht të tabelës, mund të shihni se prej cilave faqe të rrjetit shoqëror erdhën vizitorët te sajti juaj.", + "SubmenuSearchEngines": "Motorë kërkimi & fjalëkyçe", + "SubmenuWebsites": "Sajte & Shoqërore", + "Type": "Lloj Sjellësi", "TypeCampaigns": "%s prej fushatash", "TypeDirectEntries": "%s zëra të drejtpërdrejtë", "TypeReportDocumentation": "Kjo tabelë përmban të dhëna rreth shpërndarjes së llojeve të sjellësve.", "TypeSearchEngines": "%s prej motorësh kërkimi", - "TypeWebsites": "%s prej \"site\"-esh web", + "TypeWebsites": "%s prej sajtesh", "UsingNDistinctUrls": "(duke përdorur url të dallueshme %s)", - "Websites": "\"Site\"-e web", - "WebsitesDocumentation": "Vizitori ndoqi një lidhje në një site tjetër web e cila të shpinte te site-i juaj. Për më tepër hollësira, %s shihni %s raportin.", - "WebsitesReportDocumentation": "Në këtë tabelë, mund të shihni cilët site-e web sollën vizitorë te site-i juaj. %s Duke klikuar mbi një rresht të tabelës, mund të shihni se te cilat URL gjendeshin lidhjet për te site-i juaj web.", - "WidgetExternalWebsites": "Listë e \"site\"-eve Web të jashtëm" + "ViewAllReferrers": "Shihni krejt Sjellësit", + "ViewReferrersBy": "Shihini Sjellësit sipas %s", + "Websites": "Sajte", + "WebsitesDocumentation": "Vizitori ndoqi një lidhje në një sajt tjetër, e cila të shpinte te sajti juaj. Për më tepër hollësira, %s shihni %s raportin.", + "WebsitesReportDocumentation": "Në këtë tabelë, mund të shihni cilët sajte sollën vizitorë te sajti juaj. %s Duke klikuar mbi një rresht të tabelës, mund të shihni se te cilat URL gjendeshin lidhjet për te sajti juaj.", + "WidgetExternalWebsites": "Sajte Sjellës", + "WidgetGetAll": "Krejt Sjellësit", + "WidgetSocials": "Listë rrjetesh shoqërore", + "WidgetTopKeywordsForPages": "Fjalëkyçe Kryesuese për URL Faqesh", + "XPercentOfVisits": "%s e vizitave" } }
\ No newline at end of file diff --git a/plugins/Resolution/lang/sq.json b/plugins/Resolution/lang/sq.json index 15b9a9c3ab..cf56a59f9f 100644 --- a/plugins/Resolution/lang/sq.json +++ b/plugins/Resolution/lang/sq.json @@ -3,6 +3,7 @@ "ColumnConfiguration": "Formësim", "ColumnResolution": "Qartësi", "Configurations": "Formësime", + "PluginDescription": "Raporton qartësi ekranesh të vizitorëve tuaj.", "Resolutions": "Qartësi", "WidgetGlobalVisitors": "Formësime globale vizitorësh", "WidgetGlobalVisitorsDocumentation": "Ky raport shfaq formësimet e përgjithshme më të rëndomta të përdorura nga vizitorët tuaj. Formësimi përmban të dhënat për sistemin operativ, llojin e shfletuesit dhe qartësinë e ekranit.", diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php index 65d2784592..4a67c45c2c 100644 --- a/plugins/SitesManager/API.php +++ b/plugins/SitesManager/API.php @@ -1242,7 +1242,7 @@ class API extends \Piwik\Plugin\API */ public function getCurrencyList() { - $currencies = Formatter::getCurrencyList(); + $currencies = Site::getCurrencyList(); return array_map(function ($a) { return $a[1] . " (" . $a[0] . ")"; }, $currencies); @@ -1255,7 +1255,7 @@ class API extends \Piwik\Plugin\API */ public function getCurrencySymbols() { - $currencies = Formatter::getCurrencyList(); + $currencies = Site::getCurrencyList(); return array_map(function ($a) { return $a[0]; }, $currencies); diff --git a/plugins/SitesManager/lang/sq.json b/plugins/SitesManager/lang/sq.json index 3730a80f52..f13986480d 100644 --- a/plugins/SitesManager/lang/sq.json +++ b/plugins/SitesManager/lang/sq.json @@ -1,52 +1,71 @@ { "SitesManager": { - "AddSite": "Shtoni \"site\" web të ri", - "AdvancedTimezoneSupportNotFound": "Nuk u gjet mbulim i thelluar zonash kohore te PHP-ja juaj (mbulim te PHP 5.2 e më të rinj). Mundeni prapëseprapë të zgjidhni dorazi një shmangie UTC.", - "AliasUrlHelp": "Këshillohet, por nuk është e domosdoshme, të jepen URL të ndryshme, një për rresht, që vizitorët tuaj përdorin për të hyrë në këtë site web. URL-të alias për site-in web nuk kanë për t'u dukur te raporti Referuesa > Site-e Web. Mbani shënim që nuk është e domosdoshme të jepen URL me apo pa 'www', ngaqë Piwik-u i ka që të dyja parasysh automatikisht.", + "AddSite": "Shtoni sajt të ri", + "AddMeasurable": "Shtoni një të matshme të re", + "AdvancedTimezoneSupportNotFound": "S’u gjet mbulim i thelluar zonash kohore te PHP-ja juaj (mbuluar nga PHP 5.2 e më të rinj). Mundeni prapëseprapë të zgjidhni dorazi një shmangie UTC.", + "AliasUrlHelp": "Këshillohet, por s’është e domosdoshme, të jepen URL të ndryshme, një për rresht, që vizitorët tuaj t’i përdorin për të hyrë në këtë sajt. URL-të alias për sajtin nuk kanë për t’u dukur te raporti Sjellës > Sajte. Mbani shënim që s’është e domosdoshme të jepen URL me apo pa 'www', ngaqë Piwik-u i ka vetvetiu parasysh që të dyja trajtat.", "ChangingYourTimezoneWillOnlyAffectDataForward": "Ndryshimi i zonës suaj kohore do të prekë vetëm të dhënat pas kësaj e tutje, nuk do të zbatohet për të më parshmet.", "ChooseCityInSameTimezoneAsYou": "Zgjidhni një qytet nën të njëjtën zonë kohore me ju.", "Currency": "Monedhë", "CurrencySymbolWillBeUsedForGoals": "Simboli i monedhës do të shfaqet në krah të të ardhurave nga Objektivat.", - "DefaultCurrencyForNewWebsites": "Monedhë parazgjedhje për site-et e rinj web", - "DefaultTimezoneForNewWebsites": "Zonë kohore parazgjedhje për site-e web të rinj", - "DeleteConfirm": "Jeni i sigurt se doni të hiqet \"site\"-i web %s?", + "DefaultCurrencyForNewWebsites": "Monedhë parazgjedhje për sajte të rinj", + "DefaultTimezoneForNewWebsites": "Zonë Kohore parazgjedhje për sajte të rinj", + "DeleteConfirm": "Jeni i sigurt se doni të hiqet sajti %s?", "EcommerceHelp": "Po u aktivizua, te raporti \"Objektiva\" do të shfaqet një ndarje e re, \"E-tregti\".", "EnableEcommerce": "Me E-tregti të aktivizuar", - "ExceptionDeleteSite": "Heqja e këtij \"site\"-i web nuk është e mundur, ngaqë është i vetmi \"site\" web i regjistruar. Së pari shtoni një \"site\" web të ri, mandej hiqni këtë këtu.", - "ExceptionEmptyName": "\"Site\"-i web s';mund të jetë bosh.", - "ExceptionInvalidCurrency": "Monedha \"%s\" nuk është një nga të vlefshmet. Ju lutem, jepni një simbol monedhe të vlefshme (p.sh. %s).", - "ExceptionInvalidIPFormat": "IP-ja që duhet përjashtuar \"%s\" nuk ka format të vlefshëm IP-sh (p.sh. %s).", - "ExceptionInvalidTimezone": "Zona kohore \"%s\" nuk është një nga të vlefshmet. Ju lutem, jepni një zonë kohore të vlefshme.", - "ExceptionInvalidUrl": "Url-ja '%s' nuk është URL e vlefshme.", - "ExceptionNoUrl": "Duhet të tregoni të paktën një URL për \"site\"-in web.", + "EnableSiteSpecificUserAgentExclude": "Aktivizoni përjashtim agjenti përdoruesi për sajte të dhënë.", + "EnableSiteSpecificUserAgentExclude_Help": "Nëse ju duhet të përjashtoni agjentë të ndryshëm përdoruesi për sajte të ndryshëm, i vini shenjë kësaj kutize, klikoni mbi Ruaje dhe %1$sshtojeni agjentin e përdoruesi më sipër%2$s.", + "ExceptionDeleteSite": "Heqja e këtij sajti s’është e mundur, ngaqë është i vetmi sajt i regjistruar. Së pari, shtoni një sajt të ri, mandej hiqni këtë këtu.", + "ExceptionEmptyName": "Sajti s’mund të jetë i zbrazët.", + "ExceptionInvalidCurrency": "Monedha \"%s\" nuk është një nga të vlefshmet. Ju lutemi, jepni një simbol monedhe të vlefshme (p.sh. %s).", + "ExceptionInvalidIPFormat": "IP-ja që duhet përjashtuar \"%s\" s’ka format të vlefshëm IP-sh (p.sh. %s).", + "ExceptionInvalidTimezone": "Zona kohore \"%s\" s’është një nga të vlefshmet. Ju lutemi, jepni një zonë kohore të vlefshme.", + "ExceptionInvalidUrl": "Url-ja '%s' s’është URL e vlefshme.", + "ExceptionNoUrl": "Duhet të tregoni të paktën një URL për sajtin.", "ExcludedIps": "IP të Përjashtuara", "ExcludedParameters": "Parametra të Përjashtuar", + "ExcludedUserAgents": "Agjentë Përdoruesish të Përjashtuar", + "GlobalExcludedUserAgentHelp1": "Jepni listën e agjentëve të përdoruesit që duhen përjashtuar nga gjurmimi prej Piwik-ut.", + "GlobalExcludedUserAgentHelp2": "Këtë mund ta përdorni për përjashtim bot-esh nga gjurmimi.", "GlobalListExcludedIps": "Listë globale IP-sh të përjashtuara", "GlobalListExcludedQueryParameters": "Listë globale parametrash URL-sh Kërkese që duhen përjashtuar", - "GlobalWebsitesSettings": "Rregullime global për site-e web", + "GlobalListExcludedUserAgents": "Listë globale agjentësh përdoruesish për përjashtim", + "GlobalListExcludedUserAgents_Desc": "Nëse vargu i agjentit të përdoruesit për një vizitor përmban një nga vargjet që përcaktoni, vizitori do të përjashtohet nga Piwik-u.", + "GlobalWebsitesSettings": "Rregullime globale për sajte", "HelpExcludedIps": "Jepni listën e IP-ve, një për rresht, që dëshironi të përjashtohen nga gjurmimi prej Piwik-ut. Mund të përdorni shenja të gjithëpushtetshme, p.sh. %1$s ose %2$s", "JsTrackingTagHelp": "Kjo është etiketa JavaScript e Gjurmimit që duhet përfshirë në krejt faqet tuaja", - "ListOfIpsToBeExcludedOnAllWebsites": "IP-të më poshtë do të përjashtohen nga gjurmimi për krejt site-et web.", - "ListOfQueryParametersToBeExcludedOnAllWebsites": "Parametrat për URL-ra Kërkesash më poshtë do të përjashtohen nga URL-të për krejt site-et web.", + "KeepURLFragmentsHelp2": "Këtë rregullim mund ta anashkaloni më sipër, për sajte individualë.", + "ListOfIpsToBeExcludedOnAllWebsites": "IP-të më poshtë do të përjashtohen nga gjurmimi për krejt sajtet.", + "ListOfQueryParametersToBeExcludedOnAllWebsites": "Parametrat për URL-ra Kërkesash më poshtë do të përjashtohen nga URL-të për krejt sajtet.", "ListOfQueryParametersToExclude": "Jepni listën e Parametrave për URL-ra Kërkesash, një për rresht, që duhen përjashtuar nga raportet për URL-ra Faqesh.", - "MainDescription": "Raportet tuaja të Analizuesit Web lypin \"site\"-e web! Shtoni, përditësoni, hiqni \"site\"-e web, dhe shfaqni JavaScript-in për futje në faqet tuaja.", - "NotAnEcommerceSite": "Site jo E-tregti", - "NotFound": "Nuk u gjetën site-e web për", - "NoWebsites": "Nuk keni ndonjë \"site\" web për ta administruar.", - "OnlyOneSiteAtTime": "Mund të përpunoni vetëm një site web në një herë. Ju lutem, Ruani ose Anuloni ndryshimet tuaja të tanishme te site-i web %s.", + "MainDescription": "Raportet tuaja Analizash Web lypin sajte! Shtoni, përditësoni, hiqni sajte, dhe shfaqni JavaScript-in për futje në faqet tuaja.", + "NotAnEcommerceSite": "Jo sajt E-tregtie", + "NotFound": "S’u gjetën sajte për", + "NoWebsites": "S’keni ndonjë sajt për ta administruar.", + "OnlyOneSiteAtTime": "Mund të përpunoni vetëm një sajt në herë. Ju lutemt, Ruani ose Anuloni ndryshimet tuaja të tanishme te sajti %s.", "PiwikOffersEcommerceAnalytics": "Piwik-u ju mundëson ndjekje & raportim të thelluar Analizash E-tregtie. Mësoni më tepër rreth %s Analizash E-tregtie%s.", - "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik-u do t'i përjashtojë vetvetiu parametrat e zakonshëm të sesioneve (%s).", + "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik-u do t’i përjashtojë vetvetiu parametrat e zakonshëm të sesioneve (%s).", + "PluginDescription": "Administrimi i sajteve ju lejon të shtoni sajt të ri dhe të përpunoni sajte ekzistues.", + "SearchCategoryLabel": "Parametër kategorie", + "SearchCategoryParametersDesc": "Mund të jepni një listë parametrash kërkesash që përcaktojnë kategori kërkimesh, ndarë me presje.", + "SearchKeywordLabel": "Parametër kërkese", + "SearchKeywordParametersDesc": "Jepni një listë emrash parametrash kërkese fjalëkyçesh kërkimi në sajt, ndarë me presje.", + "SearchParametersNote2": "Për ta çaktivizuar për sajtet e reja Kërkimin te Sajti, lërini të zbrazëta këto dy fusha.", + "SearchUseDefault": "Përdor parametra %sparazgjedhje%s Kërkimi në Sajt", "SelectACity": "Përzgjidhni një qytet", - "SelectDefaultCurrency": "Mund të përzgjidhni monedhën parazgjedhje për site-et e rinj web.", - "SelectDefaultTimezone": "Mund të përzgjidhni zonën kohore parazgjedhje për site-et e rinj web.", + "SelectDefaultCurrency": "Mund të përzgjidhni monedhën parazgjedhje për sajtet e rinj.", + "SelectDefaultTimezone": "Mund të përzgjidhni zonën kohore parazgjedhje për sajtet e rinj.", "ShowTrackingTag": "Shihni kodin e Gjurmimit", - "Sites": "\"Site\"-e web", + "Sites": "Sajte", + "SiteSearchUse": "Mund ta përdorni Piwik-un për të gjurmuar dhe raportuar se çfarë kërkojnë vizitorët me motorin e kërkimeve të brendshme në sajtin tuaj .", + "SiteWithoutDataTitle": "Ende s’ka të dhëna të regjistruara", + "SiteWithoutDataDescription": "Për këtë sajt s’janë gjurmuar ende të dhëna analitike", "Timezone": "Zonë kohore", "TrackingTags": "Kod gjurmimi për %s", "Urls": "URL-ra", "UTCTimeIs": "Koha UTC është %s.", - "WebsitesManagement": "Administrim \"site\"-esh web", - "YouCurrentlyHaveAccessToNWebsites": "Deri tani keni hyrje te %s site-e web.", + "WebsitesManagement": "Administrim Sajtesh", + "YouCurrentlyHaveAccessToNWebsites": "Deri tani keni hyrje te %s sajte.", "YourCurrentIpAddressIs": "Adresa juaj IP e tanishme është %s" } }
\ No newline at end of file diff --git a/plugins/UserCountryMap/javascripts/realtime-map.js b/plugins/UserCountryMap/javascripts/realtime-map.js index f73259c5e7..22b7fe7ea2 100644 --- a/plugins/UserCountryMap/javascripts/realtime-map.js +++ b/plugins/UserCountryMap/javascripts/realtime-map.js @@ -61,7 +61,7 @@ initTopControls(); $('#secondNavBar').on('piwikSwitchPage', function (event, item) { var href = $(item).attr('href'); - var clickedMenuIsNotMap = (href.indexOf('module=UserCountryMap&action=realtimeWorldMap') == -1); + var clickedMenuIsNotMap = !href || (href.indexOf('module=UserCountryMap&action=realtimeWorldMap') == -1); if (clickedMenuIsNotMap) { $('#periodString').show(); initTopControls(); diff --git a/plugins/UsersManager/lang/sq.json b/plugins/UsersManager/lang/sq.json index cfe5adf613..677865b33b 100644 --- a/plugins/UsersManager/lang/sq.json +++ b/plugins/UsersManager/lang/sq.json @@ -2,47 +2,68 @@ "UsersManager": { "AddUser": "Shtoni përdorues të ri", "Alias": "Alias", - "AllWebsites": "Tërë \"site\"-et web", - "ApplyToAllWebsites": "Zbatoje për tërë \"site\"-et web", - "ChangeAllConfirm": "Jeni i sigurt se doni të ndryshoni lejet e '%s' në tërë \"site\"-et web?", + "AllWebsites": "Tërë sajtet", + "AnonymousUser": "Përdorues anonim", + "AnonymousUserHasViewAccess": "Shënim: përdoruesi %1$s ka hyrje %2$s te ky sajt.", + "AnonymousUserHasViewAccess2": "Raportet analitike dhe të dhënat e vizitorëve tuaj janë të dukshme publikisht.", + "ApplyToAllWebsites": "Zbatoje për tërë sajtet", + "ChangeAllConfirm": "Jeni i sigurt se doni të ndryshoni lejet e '%s' në tërë sajtet?", "ChangePasswordConfirm": "Ndryshimi i fjalëkalimit do të sjellë gjithashtu ndryshimin e “token_auth” të përdoruesit. Doni vërtet të vazhdohet?", "ClickHereToDeleteTheCookie": "Klikoni këtu që të fshihet \"cookie\" dhe që ta bëni Piwik-un të gjurmojë vizitat tuaja", - "ClickHereToSetTheCookieOnDomain": "Klikoni këtu që të vendoset një \"cookie\" që do të përjashtojë vizitat tuaja në site-e web të gjurmuara nga Piwik-u %s", + "ClickHereToSetTheCookieOnDomain": "Klikoni këtu që të vendoset një \"cookie\" që do të përjashtojë vizitat tuaja në sajte të gjurmuar nga Piwik-u %s", + "ConfirmGrantSuperUserAccess": "Doni t’i akordoni '%s' hyrje Supepërdoruesi? Kujdes: përdoruesi do të ketë hyrje në krejt sajtet dhe do të jetë në gjendje të kryejë veprime administratori.", + "ConfirmProhibitMySuperUserAccess": "%s, doni vërtet t’i hiqni vetes të drejta Superpërdoruesi? Do të humbni krejt lejet dhe hyrjen në krejt sajtet dhe do të dilni nga Piwik-u.", + "ConfirmProhibitOtherUsersSuperUserAccess": "Doni vërtet t’i hiqni të drejtat e Superpërdoruesit prej '%s'? Përdoruesi do të humbë krejt lejet dhe hyrjet në krejt sajtet. Sigurohuni t’i jepni më pas leje për sajtet e nevojshëm, nëse duhet.", "DeleteConfirm": "Jeni i sigurt se doni të fshihet përdoruesi %s?", "Email": "Email", + "EmailYourAdministrator": "%1$sDërgojini përgjegjësit tuaj email rreth këtij problemi%2$s.", "ExceptionAccessValues": "Parametri duhet të ketë një nga vlerat vijuese: [ %s ]", "ExceptionAdminAnonymous": "S'mund t'i jepni hyrje 'administratori' përdoruesit 'anonim'.", "ExceptionDeleteDoesNotExist": "Përdoruesi '%s' s'ekziston, ndaj s'mund të bëhet fshirje.", + "ExceptionDeleteOnlyUserWithSuperUserAccess": "Fshirja e përdoruesit '%s' s’është e mundur.", "ExceptionEditAnonymous": "Përdoruesi anonim nuk mund të fshihet apo përpunohet të dhënat e tij. Përdoret nga Piwik-u për të përkufizuar një përdorues që nuk ka bërë ende hyrjen. Për shembull, mund t'i bëni statistikat tuaja publike duke lejuar hyrje për 'parje' për përdoruesin 'anonim'.", "ExceptionEmailExists": "Ka tashmë një përdorues me email-in '%s'.", "ExceptionInvalidEmail": "Email-i s'është në format të vlefshëm.", "ExceptionInvalidLoginFormat": "Hyrja duhet të jetë ndërmjet %1$s dhe %2$s shenjash e gjatë, dhe duhet të përmbajë vetëm shkronja, numra, ose shenjat '_' or '-' or '.' or '@' or '+'", "ExceptionInvalidPassword": "Fjalëkalimi duhet të jetë nga %1$s deri në %2$s shenja i gjatë.", "ExceptionLoginExists": "Ka tashmë një hyrje për '%s'.", - "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth pret një fjalëkalim hash MD5 (varg 32 shenja të gjatë). Ju lutem, zbatojeni funksionin md5() mbi fjalëkalimin përpara zbatimit të kësaj metode", - "ExceptionUserDoesNotExist": "Përdoruesi '%s' s'ekziston.", + "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth pret një fjalëkalim hash MD5 (varg 32 shenja të gjatë). Ju lutemi, zbatojeni funksionin md5() mbi fjalëkalimin përpara zbatimit të kësaj metode", + "ExceptionRemoveSuperUserAccessOnlySuperUser": "Heqja e lejeve Superpërdoruesi për përdoruesin '%s' s’është e mundur.", + "ExceptionSuperUserAccess": "Ky përdorues ka hyrje Superpërdoruesi dhe ka tashmë leje të hyjë dhe modifikojë krejt sajtet në këtë instalim Piwik-u. Mund t’ia hiqni të drejtat e Superpërdoruesit këtij përdoruesi dhe të riprovoni.", + "ExceptionUserDoesNotExist": "Përdoruesi '%s' s’ekziston.", + "ExceptionYouMustGrantSuperUserAccessFirst": "Duhet të ketë të paktën një përdorues me hyrje Superpërdoruesi. Ju lutemi, akordojini së pari të drejta Superpërdoruesi një përdoruesi.", "ExcludeVisitsViaCookie": "Përjashtoni vizitat tuaja, përmes përdorimit të një \"cookie\"", "ForAnonymousUsersReportDateToLoadByDefault": "Datë raporti që duhet ngarkuar si parazgjedhje për përdoruesit anonimë", "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Nëse dëshironi të ndryshoni fjalëkalimin, shtypni një të ri. Përndryshe lëreni të zbrazët.", - "MainDescription": "Vendosni cilët përdoruesa kanë hyrje Piwik në \"site\"-et tuaj web. Mundet edhe të caktoni njëherazi lejet mbi tërë \"site\"-et web.", + "InjectedHostCannotChangePwd": "Po e vizitoni me një strehë të panjohur (%1$s). S’mund ta ndryshoni fjalëkaliminm, pa ndrequr këtë problem.", + "LastSeen": "Këndej pari së fundi më", + "MainDescription": "Vendosni cilët përdorues kanë hyrje Piwik në sajtet tuaj. Mundet edhe të caktoni njëherazi lejet mbi tërë sajtet.", "ManageAccess": "Administroni hyrjet", "MenuAnonymousUserSettings": "Rregullime përdoruesi anonim", "MenuUsers": "Përdorues", "MenuUserSettings": "Rregullime përdoruesi", + "MenuPersonal": "Personal", + "PersonalSettings": "Rregullime personale", + "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Shënim: Nuk mund të ndryshoni rregullimet në këtë ndarje, ngaqë s’keni ndonjë sajt ku mund të hyhet si përdorues anonim.", + "NoUsersExist": "Ende nuk ka përdorues", + "PluginDescription": "Administrimi i Përdoruesve ju lejon të shtoni përdorues të rinj, të përpunoni të dhëna përdoruesish ekzistues dhe t’u caktoni leje për parje apo administrim sajtesh.", "PrivAdmin": "Admin", "PrivNone": "Pa hyrje", "PrivView": "Pamje", "ReportDateToLoadByDefault": "Datë raporti që duhet ngarkuar si parazgjedhje", "ReportToLoadByDefault": "Raport që duhet ngarkuar si parazgjedhje", + "SuperUserAccessManagement": "Administroni hyrje Superpërdoruesish", + "SuperUserAccessManagementGrantMore": "Që këtu mund t’u akordoni të drejta Superpërdoruesi përdoruesve të tjerë. Ju lutemi, përdoreni me kujdes këtë veçori.", + "SuperUserAccessManagementMainDescription": "Superpërdoruesit kanë lejet më të fuqishme. Ata mund të kryejnë krejt veprimet administrative, të tilla si shtim sajtesh të rinj për mbikëqyrje, shtim përdoruesish, ndryshim lejesh përdoruesish, aktivizim dhe çaktivizim shtojcash, deri edhe instalim shtojcash të reja nga Marketplace-i.", "TheLoginScreen": "Skena e hyrjes", "ThereAreCurrentlyNRegisteredUsers": "Deri tani ka %s përdorues të regjistruar.", "TypeYourPasswordAgain": "Shtypeni sërish fjalëkalimin e ri.", "User": "Përdorues", "UsersManagement": "Administrim Përdoruesish", - "UsersManagementMainDescription": "Krijoni përdoruesa të rinj ose përditësoni përdoruesit ekzistues. Mandej mund t'u caktoni lejet më sipër.", + "UsersManagementMainDescription": "Krijoni përdoruesa të rinj ose përditësoni përdoruesit ekzistues. Mandej mund t’u caktoni lejet më sipër.", "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Kur përdoruesit nuk janë të futur dhe vizitojnë Piwik-un, do të duhej të hynin", - "YourUsernameCannotBeChanged": "Emri juaj i përdoruesit nuk mund të ndryshohet.", + "YourUsernameCannotBeChanged": "Emri juaj i përdoruesit s’mund të ndryshohet.", "YourVisitsAreIgnoredOnDomain": "%sVizitat tuaja te %s %s janë shpërfillur nga Piwik-u (te shfletuesi juaj u gjet \"cookie\" për shpërfillje nga Piwik-u).", - "YourVisitsAreNotIgnored": "%sVizitat tuaja nuk janë shpërfillur nga Piwik-u%s (te shfletuesi juaj nuk u gjet \"cookie\" për shpërfillje nga Piwik-u)." + "YourVisitsAreNotIgnored": "%sVizitat tuaja s’janë shpërfillur nga Piwik-u%s (te shfletuesi juaj s’u gjet \"cookie\" për shpërfillje nga Piwik-u)." } }
\ No newline at end of file diff --git a/plugins/VisitFrequency/lang/sq.json b/plugins/VisitFrequency/lang/sq.json index d3d4743961..92027d1642 100644 --- a/plugins/VisitFrequency/lang/sq.json +++ b/plugins/VisitFrequency/lang/sq.json @@ -4,21 +4,23 @@ "ColumnAverageVisitDurationForReturningVisitors": "Mesatare Zgjatjeje Vizite për Vizitorë të Rikthyer (në sekonda)", "ColumnAvgActionsPerReturningVisit": "Mesatare Veprimesh për vizita të Rikthyerish", "ColumnBounceCountForReturningVisits": "Numër Kthimesh për Vizita Me Rikthim", - "ColumnBounceRateForReturningVisits": "Mesatare kthimi për Vizita Rikthim", + "ColumnBounceRateForReturningVisits": "Mesatare Kthimesh për Vizita Rikthim", "ColumnMaxActionsInReturningVisit": "Maksimum veprimesh në një vizitë rikthim", "ColumnNbReturningVisitsConverted": "Numër vizitash me rikthim të shndërruara", "ColumnReturningVisits": "Vizita Rikthim", "ColumnSumVisitLengthReturning": "Kohë e shpenzuar nga vizitorë të rikthyer (në sekonda) gjithsej", "ColumnUniqueReturningVisitors": "Vizitorë të rikthyer unikë", + "ColumnReturningUsers": "Përdorues të Rikthyer", + "PluginDescription": "Raporton matje mbi vizitorë të rinj që vijnë për herë të parë dhe vizitorë të rikthyer.", "ReturnActions": "%s veprime nga vizita rikthim", "ReturnAverageVisitDuration": "%s mesatare zgjatjeje vizite për vizitorë të rikthyer", "ReturnAvgActions": "%s veprime për vizitë të rikthyer", - "ReturnBounceRate": "janë kthyer mbrapsht %s vizita rikthim (e kanë lënë \"site\"-in web pas një faqeje)", - "ReturningVisitDocumentation": "Vizitë rikthim është (ndryshe nga një vizitë e re) e bërë nga dikush që e ka vizituar site-in web të paktën një herë më përpara.", + "ReturnBounceRate": "janë kthyer mbrapsht %s vizita rikthim (e kanë lënë sajtin pas një faqeje)", + "ReturningVisitDocumentation": "Vizitë rikthim (ndryshe nga një vizitë e re) është e bërë nga dikush që e ka vizituar sajtin të paktën një herë më përpara.", "ReturningVisitsDocumentation": "Kjo është një përmbledhje e vizitave rikthim", "ReturnVisits": "%s vizita rikthim", "SubmenuFrequency": "Shpeshti", - "WidgetGraphReturning": "Grafik vizitash Rikthim", - "WidgetOverview": "Përmbledhje shpeshtie" + "WidgetGraphReturning": "Grafik Vizitash Rikthim", + "WidgetOverview": "Përmbledhje Shpeshtie" } }
\ No newline at end of file diff --git a/plugins/VisitTime/lang/sq.json b/plugins/VisitTime/lang/sq.json index 7df7f28aa9..60bf55d239 100644 --- a/plugins/VisitTime/lang/sq.json +++ b/plugins/VisitTime/lang/sq.json @@ -2,13 +2,17 @@ "VisitTime": { "ColumnLocalTime": "Kohë vendore", "ColumnServerTime": "Kohë shërbyesi", + "DayOfWeek": "Ditë e javës", "LocalTime": "Vizita sipas kohës vendore", "NHour": "%sh", + "PluginDescription": "Raporton kohën vendore dhe atë të shërbyesit kur vizitorët tuaj shohin sajtin ose aplikacionin tuaj.", "ServerTime": "Vizita sipas kohës së shërbyesit", "SubmenuTimes": "Kohë", + "VisitsByDayOfWeek": "Vizita sipas Ditëve të Javës", + "WidgetByDayOfWeekDocumentation": "Ky grafik shfaq numrin e vizitave që pati sajti juaj në çdo ditë të javës.", "WidgetLocalTime": "Vizita sipas kohës vendore", "WidgetLocalTimeDocumentation": "Ky grafik shfaq kohën sipas %s zonës kohore të vizitorit %s kur ka ndodhur një vizitë.", - "WidgetServerTime": "Vizita sipas kohës së shërbyesit", + "WidgetServerTime": "Vizita sipas Kohës së Shërbyesit", "WidgetServerTimeDocumentation": "Ky grafik shfaq kohën sipas %s zonës kohore të shërbyesit %s kur ka ndodhur një vizitë." } }
\ No newline at end of file diff --git a/plugins/VisitorInterest/lang/ro.json b/plugins/VisitorInterest/lang/ro.json index e20d555cf5..25f9dd2746 100644 --- a/plugins/VisitorInterest/lang/ro.json +++ b/plugins/VisitorInterest/lang/ro.json @@ -7,6 +7,7 @@ "Engagement": "Vizite repetate", "NPages": "%s pagini", "OnePage": "1 pagina", + "PluginDescription": "Rapoarte despre interesul vizitatorilor: numarul paginilor vazute, timpul petrecut pe site, zilele de la ultima vizita, si mai multe.", "VisitNum": "Numărul de vizite", "VisitsByDaysSinceLast": "Vizite ordonate după zile de la ultima vizită", "visitsByVisitCount": "VIzite ordonate după numărul de vizite", diff --git a/plugins/VisitorInterest/lang/sq.json b/plugins/VisitorInterest/lang/sq.json index 0b1c6dba6c..0aa24bf686 100644 --- a/plugins/VisitorInterest/lang/sq.json +++ b/plugins/VisitorInterest/lang/sq.json @@ -7,6 +7,7 @@ "Engagement": "Angazhim", "NPages": "%s faqe", "OnePage": "1 faqe", + "PluginDescription": "Raporte mbi interesa të vizitorëve: numër faqesh të para, kohë e shpenzuar në sajt, ditë që nga vizita e fundit, etj.", "VisitNum": "Numër vizitash", "VisitsByDaysSinceLast": "Vizita sipas ditësh që pas vizitës së fundit", "visitsByVisitCount": "Vizita sipas numrit të vizitave", @@ -16,7 +17,8 @@ "WidgetLengthsDocumentation": "Në këtë raport, mund të shihni vizita sipas një kohëzgjatje të caktuar. Fillimisht, ky raport shfaqet si re etiketash, me zgjatjet më të shpeshta të treguara me shkronja më të mëdha.", "WidgetPages": "Faqe për vizitë", "WidgetPagesDocumentation": "Në këtë raport, mund të shihni sa vizitorë panë një numër të dhënë faqesh. Fillimisht, ky raport shfaqet si re etiketash, me numrat më të shpeshtë të faqeve të treguara me shkronja më të mëdha.", + "WidgetVisitsByDaysSinceLast": "Vizita sipas Ditës Që Nga Vizita e Fundit", "WidgetVisitsByDaysSinceLastDocumentation": "Në këtë raport, mund të shihni se sa vizita kanë qenë prej vizitorësh vizita e fundit e të cilëve ka ndodhur një numër ditësh më parë.", - "WidgetVisitsByNumDocumentation": "Në këtë raport, mund të shihni numrin e vizitave që kanë qenë vizita e N-të, d.m.th. vizitorët që e kanë vizituar site-in tuaj web të paktën N herë." + "WidgetVisitsByNumDocumentation": "Në këtë raport, mund të shihni numrin e vizitave që kanë qenë vizita e N-të, d.m.th. vizitorët që e kanë vizituar sajtin tuaj të paktën N herë." } }
\ No newline at end of file diff --git a/plugins/VisitsSummary/lang/sq.json b/plugins/VisitsSummary/lang/sq.json index 07fd34be65..c03725df66 100644 --- a/plugins/VisitsSummary/lang/sq.json +++ b/plugins/VisitsSummary/lang/sq.json @@ -1,23 +1,27 @@ { "VisitsSummary": { + "AverageGenerationTime": "%s mesatare kohe prodhimi", "AverageVisitDuration": "%s mesatare zgjatje vizitash", "GenerateQueries": "%s kërkesa të kryera", "GenerateTime": "%s sekonda për prodhimin e faqes", "MaxNbActions": "maksimumi %s veprime në një vizitë", - "NbActionsDescription": "%s veprime (parje faqesh, shkarkime dhe lidhje ikëse)", - "NbActionsPerVisit": "%s veprime për vizitë", + "NbActionsDescription": "%s veprime", + "NbActionsPerVisit": "%s veprime (parje faqesh, shkarkime, lidhje për jashtë sajtit dhe kërkime brenda sajtit) për vizitë", "NbDownloadsDescription": "%s shkarkime", + "NbKeywordsDescription": "%s fjalëkyçe unikë", "NbOutlinksDescription": "%s lidhje për jashtë", "NbPageviewsDescription": "%s parje faqesh", + "NbSearchesDescription": "%s kërkime gjithsej në sajtin tuaj", "NbUniqueDownloadsDescription": "%s shkarkime unike", "NbUniqueOutlinksDescription": "%s lidhje unike për jashtë", "NbUniquePageviewsDescription": "%s parje unike faqesh", "NbUniqueVisitors": "%s vizitorë unikë", - "NbVisitsBounced": "%s vizita të kthyera mbrapsht (e lanë \"site\"-in web pas një faqeje)", + "NbVisitsBounced": "%s vizita të kthyera mbrapsht (e lanë sajtin pas një faqeje)", + "PluginDescription": "Raporton vlera të përgjithshme analitike: vizita, vizitorë unikë, numër veprimesh, shkallë kthimesh, etj.", "VisitsSummary": "Përmbledhje Vizitash", - "VisitsSummaryDocumentation": "Kjo është një përmbledhje e evolucionit të vizitave", - "WidgetLastVisits": "Grafik për vizitat e fundit", - "WidgetOverviewGraph": "Përmbledhje me grafik", - "WidgetVisits": "Përmbledhje vizitash" + "VisitsSummaryDocumentation": "Kjo është një përmbledhje e evolucionit të vizitave.", + "WidgetLastVisits": "Vizita Përgjatë Kohës", + "WidgetOverviewGraph": "Përmbledhje Vizitash (me grafik)", + "WidgetVisits": "Përmbledhje Vizitash" } }
\ No newline at end of file diff --git a/plugins/WebsiteMeasurable/lang/sq.json b/plugins/WebsiteMeasurable/lang/sq.json index c4f35fe3da..7d884b382b 100644 --- a/plugins/WebsiteMeasurable/lang/sq.json +++ b/plugins/WebsiteMeasurable/lang/sq.json @@ -1,5 +1,6 @@ { "WebsiteMeasurable": { - "Website": "Sajt" + "Website": "Sajt", + "Websites": "Sajte" } }
\ No newline at end of file |