Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Steur <thomas.steur@gmail.com>2016-08-29 07:01:46 +0300
committerThomas Steur <thomas.steur@gmail.com>2016-08-29 07:01:46 +0300
commit4c9d1274408fb57d5e0b53dcda425dc4892c7b00 (patch)
tree78b0f24058d586cdd109de0387d43165e112003e /plugins
parent0c9c30b731ccbacf47e154b9f7a590af49e3d799 (diff)
parent4b395d2385e0041973349c7575fc10378b85558e (diff)
Merge branch 'master' into 3.0-m06
Conflicts: .travis.yml bower.json core/Notification/Manager.php core/Updates.php core/Updates/2.16.2-b2.php core/Version.php libs/Zend/Validate/Hostname.php libs/bower_components/jScrollPane/ajax.html libs/bower_components/jScrollPane/anchors.html libs/bower_components/jScrollPane/api.html libs/bower_components/jScrollPane/arrow_hover.html libs/bower_components/jScrollPane/arrow_positions.html libs/bower_components/jScrollPane/arrows.html libs/bower_components/jScrollPane/auto_reinitialise.html libs/bower_components/jScrollPane/basic.html libs/bower_components/jScrollPane/caps.html libs/bower_components/jScrollPane/changelog.html libs/bower_components/jScrollPane/destroy.html libs/bower_components/jScrollPane/drag_size.html libs/bower_components/jScrollPane/dynamic_content.html libs/bower_components/jScrollPane/dynamic_height.html libs/bower_components/jScrollPane/dynamic_width.html libs/bower_components/jScrollPane/events.html libs/bower_components/jScrollPane/faqs.html libs/bower_components/jScrollPane/fixed_width.html libs/bower_components/jScrollPane/focus.html libs/bower_components/jScrollPane/fullpage_scroll.html libs/bower_components/jScrollPane/iframe.html libs/bower_components/jScrollPane/iframe2.html libs/bower_components/jScrollPane/iframe_content1.html libs/bower_components/jScrollPane/iframe_content2.html libs/bower_components/jScrollPane/image.html libs/bower_components/jScrollPane/image2.html libs/bower_components/jScrollPane/index.html libs/bower_components/jScrollPane/invisibles.html libs/bower_components/jScrollPane/known_issues.html libs/bower_components/jScrollPane/less_basic.html libs/bower_components/jScrollPane/mwheel_intent.html libs/bower_components/jScrollPane/override_animate.html libs/bower_components/jScrollPane/runeimp.html libs/bower_components/jScrollPane/runeimp2.html libs/bower_components/jScrollPane/scroll_on_left.html libs/bower_components/jScrollPane/scroll_to.html libs/bower_components/jScrollPane/scroll_to_animate.html libs/bower_components/jScrollPane/settings.html libs/bower_components/jScrollPane/short.html libs/bower_components/jquery/.bower.json libs/bower_components/jquery/LICENSE.txt libs/bower_components/jquery/dist/jquery.js libs/bower_components/jquery/dist/jquery.min.js libs/bower_components/jquery/dist/jquery.min.map libs/bower_components/jquery/sizzle/dist/sizzle.js libs/bower_components/jquery/src/ajax.js libs/bower_components/jquery/src/ajax/jsonp.js libs/bower_components/jquery/src/ajax/load.js libs/bower_components/jquery/src/ajax/parseJSON.js libs/bower_components/jquery/src/ajax/parseXML.js libs/bower_components/jquery/src/ajax/script.js libs/bower_components/jquery/src/ajax/xhr.js libs/bower_components/jquery/src/attributes/attr.js libs/bower_components/jquery/src/attributes/classes.js libs/bower_components/jquery/src/attributes/prop.js libs/bower_components/jquery/src/attributes/support.js libs/bower_components/jquery/src/attributes/val.js libs/bower_components/jquery/src/callbacks.js libs/bower_components/jquery/src/core.js libs/bower_components/jquery/src/core/access.js libs/bower_components/jquery/src/core/init.js libs/bower_components/jquery/src/core/parseHTML.js libs/bower_components/jquery/src/core/ready.js libs/bower_components/jquery/src/css.js libs/bower_components/jquery/src/css/curCSS.js libs/bower_components/jquery/src/css/hiddenVisibleSelectors.js libs/bower_components/jquery/src/css/support.js libs/bower_components/jquery/src/css/var/swap.js libs/bower_components/jquery/src/data.js libs/bower_components/jquery/src/data/accepts.js libs/bower_components/jquery/src/deferred.js libs/bower_components/jquery/src/deprecated.js libs/bower_components/jquery/src/dimensions.js libs/bower_components/jquery/src/effects.js libs/bower_components/jquery/src/effects/Tween.js libs/bower_components/jquery/src/event.js libs/bower_components/jquery/src/event/support.js libs/bower_components/jquery/src/manipulation.js libs/bower_components/jquery/src/manipulation/support.js libs/bower_components/jquery/src/offset.js libs/bower_components/jquery/src/queue.js libs/bower_components/jquery/src/serialize.js libs/bower_components/jquery/src/traversing.js libs/bower_components/jquery/src/traversing/findFilter.js libs/bower_components/jquery/src/var/concat.js libs/bower_components/jquery/src/var/indexOf.js libs/bower_components/jquery/src/var/push.js libs/bower_components/jquery/src/var/slice.js libs/bower_components/jquery/src/wrap.js plugins/API/ProcessedReport.php plugins/AnonymousPiwikUsageMeasurement plugins/CoreConsole/Commands/ManagePlugin.php plugins/CoreHome/javascripts/dataTable.js plugins/CoreHome/javascripts/manifest.json plugins/CoreHome/templates/_topBar.twig plugins/CoreUpdater/templates/updateSuccess.twig plugins/CustomAlerts plugins/CustomDimensions plugins/DevicesDetection/Reports/GetBrowserVersions.php plugins/DevicesDetection/Reports/GetBrowsers.php plugins/ExamplePlugin/Updates/0.0.2.php plugins/Feedback/templates/index.twig plugins/LogViewer plugins/Morpheus/stylesheets/general/_forms.less plugins/Morpheus/templates/layout.twig plugins/Morpheus/templates/user.twig plugins/QueuedTracking plugins/SegmentEditor/stylesheets/segmentation.less plugins/SitesManager/tests/Integration/ApiTest.php tests/PHPUnit/Integration/WidgetsListTest.php tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric__API.getProcessedReport_day.xml tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___API.getProcessedReport_day.xml tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumns___API.getProcessedReport_day.xml tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_csv__ScheduledReports.generateReport_week.original.csv tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_week.original.html tests/UI/expected-ui-screenshots tests/UI/specs/SegmentSelectorEditor_spec.js
Diffstat (limited to 'plugins')
-rw-r--r--plugins/API/API.php2
-rw-r--r--plugins/API/Renderer/Console.php7
-rw-r--r--plugins/API/Renderer/Csv.php7
-rw-r--r--plugins/API/Renderer/Html.php7
-rw-r--r--plugins/API/Renderer/Json.php7
-rw-r--r--plugins/API/Renderer/Original.php8
-rw-r--r--plugins/API/Renderer/Php.php7
-rw-r--r--plugins/API/Renderer/Rss.php7
-rw-r--r--plugins/API/Renderer/Xml.php7
-rw-r--r--plugins/API/RowEvolution.php2
-rw-r--r--plugins/API/lang/es.json5
-rw-r--r--plugins/API/lang/is.json9
-rw-r--r--plugins/API/lang/ka.json9
-rw-r--r--plugins/API/lang/sq.json5
-rw-r--r--plugins/API/lang/sv.json4
-rw-r--r--plugins/API/lang/uk.json7
-rw-r--r--plugins/API/lang/vi.json3
-rw-r--r--plugins/Actions/javascripts/actionsDataTable.js4
-rw-r--r--plugins/Actions/lang/ar.json4
-rw-r--r--plugins/Actions/lang/da.json4
-rw-r--r--plugins/Actions/lang/fa.json5
-rw-r--r--plugins/Actions/lang/fr.json1
-rw-r--r--plugins/Actions/lang/sq.json3
-rw-r--r--plugins/Actions/lang/tr.json38
-rw-r--r--plugins/Actions/lang/uk.json67
-rw-r--r--plugins/Actions/lang/vi.json5
-rw-r--r--plugins/Annotations/lang/de.json6
-rw-r--r--plugins/Annotations/lang/tr.json24
-rw-r--r--plugins/Annotations/lang/uk.json22
-rw-r--r--plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php2
-rw-r--r--plugins/BulkTracking/tests/Unit/ResponseTest.php2
-rw-r--r--plugins/Contents/lang/da.json6
-rw-r--r--plugins/Contents/lang/nl.json15
-rw-r--r--plugins/Contents/lang/sq.json4
-rw-r--r--plugins/Contents/lang/sv.json5
-rw-r--r--plugins/Contents/lang/tr.json14
-rw-r--r--plugins/Contents/lang/uk.json16
-rw-r--r--plugins/CoreAdminHome/lang/ar.json1
-rw-r--r--plugins/CoreAdminHome/lang/da.json11
-rw-r--r--plugins/CoreAdminHome/lang/de.json1
-rw-r--r--plugins/CoreAdminHome/lang/es.json6
-rw-r--r--plugins/CoreAdminHome/lang/fr.json1
-rw-r--r--plugins/CoreAdminHome/lang/it.json16
-rw-r--r--plugins/CoreAdminHome/lang/ka.json2
-rw-r--r--plugins/CoreAdminHome/lang/nl.json7
-rw-r--r--plugins/CoreAdminHome/lang/sv.json3
-rw-r--r--plugins/CoreAdminHome/lang/tr.json10
-rw-r--r--plugins/CoreAdminHome/lang/uk.json99
-rw-r--r--plugins/CoreConsole/Commands/GenerateVisualizationPlugin.php1
-rw-r--r--plugins/CoreConsole/Commands/GitCommit.php2
-rw-r--r--plugins/CoreHome/CoreHome.php1
-rw-r--r--plugins/CoreHome/DataTableRowAction/RowEvolution.php2
-rw-r--r--plugins/CoreHome/Tracker/LogTable/Action.php30
-rw-r--r--plugins/CoreHome/Tracker/LogTable/Conversion.php24
-rw-r--r--plugins/CoreHome/Tracker/LogTable/ConversionItem.php25
-rw-r--r--plugins/CoreHome/Tracker/LogTable/LinkVisitAction.php29
-rw-r--r--plugins/CoreHome/Tracker/LogTable/Visit.php30
-rw-r--r--plugins/CoreHome/images/applogo_128.pngbin0 -> 2089 bytes
-rw-r--r--plugins/CoreHome/images/applogo_144.pngbin0 -> 2354 bytes
-rw-r--r--plugins/CoreHome/images/applogo_192.pngbin0 -> 3006 bytes
-rw-r--r--plugins/CoreHome/images/applogo_256.pngbin0 -> 3991 bytes
-rw-r--r--plugins/CoreHome/images/applogo_32.pngbin0 -> 662 bytes
-rw-r--r--plugins/CoreHome/images/applogo_72.pngbin0 -> 1234 bytes
-rw-r--r--plugins/CoreHome/images/applogo_732.pngbin0 -> 4554 bytes
-rw-r--r--plugins/CoreHome/javascripts/broadcast.js2
-rw-r--r--plugins/CoreHome/javascripts/dataTable.js22
-rw-r--r--plugins/CoreHome/javascripts/dataTable_rowactions.js5
-rw-r--r--plugins/CoreHome/javascripts/manifest.json27
-rw-r--r--plugins/CoreHome/javascripts/notification.js2
-rw-r--r--plugins/CoreHome/lang/ar.json1
-rw-r--r--plugins/CoreHome/lang/cs.json2
-rw-r--r--plugins/CoreHome/lang/da.json9
-rw-r--r--plugins/CoreHome/lang/de.json2
-rw-r--r--plugins/CoreHome/lang/el.json2
-rw-r--r--plugins/CoreHome/lang/en.json2
-rw-r--r--plugins/CoreHome/lang/es.json10
-rw-r--r--plugins/CoreHome/lang/fa.json1
-rw-r--r--plugins/CoreHome/lang/fi.json1
-rw-r--r--plugins/CoreHome/lang/fr.json3
-rw-r--r--plugins/CoreHome/lang/is.json8
-rw-r--r--plugins/CoreHome/lang/it.json6
-rw-r--r--plugins/CoreHome/lang/ja.json1
-rw-r--r--plugins/CoreHome/lang/ka.json8
-rw-r--r--plugins/CoreHome/lang/ko.json1
-rw-r--r--plugins/CoreHome/lang/nb.json4
-rw-r--r--plugins/CoreHome/lang/nl.json9
-rw-r--r--plugins/CoreHome/lang/pl.json1
-rw-r--r--plugins/CoreHome/lang/pt-br.json1
-rw-r--r--plugins/CoreHome/lang/ro.json1
-rw-r--r--plugins/CoreHome/lang/ru.json1
-rw-r--r--plugins/CoreHome/lang/sk.json1
-rw-r--r--plugins/CoreHome/lang/sr.json1
-rw-r--r--plugins/CoreHome/lang/sv.json8
-rw-r--r--plugins/CoreHome/lang/tl.json1
-rw-r--r--plugins/CoreHome/lang/tr.json25
-rw-r--r--plugins/CoreHome/lang/uk.json60
-rw-r--r--plugins/CoreHome/lang/zh-cn.json1
-rw-r--r--plugins/CoreHome/templates/_topBar.twig2
-rw-r--r--plugins/CoreHome/templates/getDefaultIndexView.twig2
-rw-r--r--plugins/CorePluginsAdmin/lang/da.json6
-rw-r--r--plugins/CorePluginsAdmin/lang/it.json2
-rw-r--r--plugins/CorePluginsAdmin/lang/sv.json1
-rw-r--r--plugins/CorePluginsAdmin/lang/uk.json99
-rw-r--r--plugins/CoreUpdater/Commands/Update.php37
-rw-r--r--plugins/CoreUpdater/Test/Mock/UpdaterMock.php2
-rw-r--r--plugins/CoreUpdater/UpdateCommunication.php2
-rw-r--r--plugins/CoreUpdater/lang/cs.json2
-rw-r--r--plugins/CoreUpdater/lang/da.json16
-rw-r--r--plugins/CoreUpdater/lang/de.json2
-rw-r--r--plugins/CoreUpdater/lang/el.json2
-rw-r--r--plugins/CoreUpdater/lang/en.json2
-rw-r--r--plugins/CoreUpdater/lang/es.json7
-rw-r--r--plugins/CoreUpdater/lang/fr.json2
-rw-r--r--plugins/CoreUpdater/lang/it.json2
-rw-r--r--plugins/CoreUpdater/lang/ja.json1
-rw-r--r--plugins/CoreUpdater/lang/nb.json2
-rw-r--r--plugins/CoreUpdater/lang/nl.json1
-rw-r--r--plugins/CoreUpdater/lang/pt-br.json1
-rw-r--r--plugins/CoreUpdater/lang/ru.json1
-rw-r--r--plugins/CoreUpdater/lang/sk.json1
-rw-r--r--plugins/CoreUpdater/lang/sq.json30
-rw-r--r--plugins/CoreUpdater/lang/sr.json1
-rw-r--r--plugins/CoreUpdater/lang/sv.json1
-rw-r--r--plugins/CoreUpdater/lang/tr.json15
-rw-r--r--plugins/CoreUpdater/lang/uk.json37
-rw-r--r--plugins/CoreUpdater/lang/zh-cn.json1
-rw-r--r--plugins/CoreUpdater/lang/zh-tw.json1
-rw-r--r--plugins/CoreUpdater/templates/updateSuccess.twig4
-rw-r--r--plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php6
-rw-r--r--plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php6
-rw-r--r--plugins/CoreVisualizations/javascripts/jqplot.js2
-rw-r--r--plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig6
-rw-r--r--plugins/CustomPiwikJs/.gitignore1
-rw-r--r--plugins/CustomPiwikJs/Commands/UpdateTracker.php62
-rw-r--r--plugins/CustomPiwikJs/CustomPiwikJs.php35
-rw-r--r--plugins/CustomPiwikJs/Diagnostic/PiwikJsCheck.php54
-rw-r--r--plugins/CustomPiwikJs/Exception/AccessDeniedException.php15
-rw-r--r--plugins/CustomPiwikJs/File.php75
-rw-r--r--plugins/CustomPiwikJs/Tasks.php23
-rw-r--r--plugins/CustomPiwikJs/TrackerUpdater.php78
-rw-r--r--plugins/CustomPiwikJs/TrackingCode/JsTestPluginTrackerFiles.php27
-rw-r--r--plugins/CustomPiwikJs/TrackingCode/PiwikJsManipulator.php57
-rw-r--r--plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php87
-rw-r--r--plugins/CustomPiwikJs/config/config.php7
-rw-r--r--plugins/CustomPiwikJs/lang/en.json7
-rw-r--r--plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php36
-rw-r--r--plugins/CustomPiwikJs/tests/Integration/FileTest.php125
-rw-r--r--plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php73
-rw-r--r--plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php124
-rw-r--r--plugins/CustomPiwikJs/tests/Integration/TrackerUpdaterTest.php121
-rw-r--r--plugins/CustomPiwikJs/tests/System/PiwikJsContentTest.php39
-rw-r--r--plugins/CustomPiwikJs/tests/resources/MyTestTarget2.js16
-rw-r--r--plugins/CustomPiwikJs/tests/resources/test.js2
-rw-r--r--plugins/CustomPiwikJs/tests/resources/testpiwik.js6
-rw-r--r--plugins/CustomPiwikJs/tests/resources/tracker.js4
-rw-r--r--plugins/CustomPiwikJs/tests/resources/tracker.min.js2
-rw-r--r--plugins/CustomVariables/lang/da.json4
-rw-r--r--plugins/CustomVariables/lang/fr.json1
-rw-r--r--plugins/CustomVariables/lang/it.json6
-rw-r--r--plugins/CustomVariables/lang/nl.json7
-rw-r--r--plugins/CustomVariables/lang/sv.json10
-rw-r--r--plugins/CustomVariables/lang/uk.json24
-rw-r--r--plugins/DBStats/Reports/GetIndividualMetricsSummary.php2
-rw-r--r--plugins/DBStats/Reports/GetIndividualReportsSummary.php2
-rw-r--r--plugins/DBStats/lang/sq.json4
-rw-r--r--plugins/DBStats/lang/sv.json1
-rw-r--r--plugins/DBStats/lang/tr.json12
-rw-r--r--plugins/DBStats/lang/uk.json21
-rw-r--r--plugins/Dashboard/Dashboard.php8
-rw-r--r--plugins/Dashboard/lang/da.json1
-rw-r--r--plugins/Dashboard/lang/de.json2
-rw-r--r--plugins/Dashboard/lang/es.json1
-rw-r--r--plugins/Dashboard/lang/sq.json10
-rw-r--r--plugins/Dashboard/lang/tr.json60
-rw-r--r--plugins/Dashboard/lang/uk.json39
-rw-r--r--plugins/DevicePlugins/lang/da.json1
-rw-r--r--plugins/DevicePlugins/lang/fr.json1
-rw-r--r--plugins/DevicePlugins/lang/is.json1
-rw-r--r--plugins/DevicePlugins/lang/ka.json1
-rw-r--r--plugins/DevicePlugins/lang/sq.json2
-rw-r--r--plugins/DevicePlugins/lang/sv.json1
-rw-r--r--plugins/DevicePlugins/lang/uk.json7
-rw-r--r--plugins/DevicesDetection/Reports/GetBrowserVersions.php1
-rw-r--r--plugins/DevicesDetection/Reports/GetBrowsers.php1
-rw-r--r--plugins/DevicesDetection/functions.php2
-rw-r--r--plugins/DevicesDetection/images/browsers/TS.gifbin0 -> 153 bytes
-rw-r--r--plugins/DevicesDetection/lang/ar.json35
-rw-r--r--plugins/DevicesDetection/lang/da.json1
-rw-r--r--plugins/DevicesDetection/lang/tr.json24
-rw-r--r--plugins/DevicesDetection/lang/uk.json44
-rw-r--r--plugins/DevicesDetection/plugin.json8
-rw-r--r--plugins/Diagnostics/Test/Integration/Commands/AnalyzeArchiveTableTest.php6
-rw-r--r--plugins/Diagnostics/lang/fr.json2
-rw-r--r--plugins/Diagnostics/lang/nb.json2
-rw-r--r--plugins/Diagnostics/lang/nl.json6
-rw-r--r--plugins/Diagnostics/lang/sv.json5
-rw-r--r--plugins/Diagnostics/lang/uk.json8
-rw-r--r--plugins/Ecommerce/lang/da.json5
-rw-r--r--plugins/Ecommerce/lang/ru.json1
-rw-r--r--plugins/Ecommerce/lang/sq.json2
-rw-r--r--plugins/Ecommerce/lang/sv.json1
-rw-r--r--plugins/Ecommerce/lang/tr.json8
-rw-r--r--plugins/Ecommerce/lang/uk.json8
-rw-r--r--plugins/Events/lang/ar.json8
-rw-r--r--plugins/Events/lang/da.json1
-rw-r--r--plugins/Events/lang/it.json2
-rw-r--r--plugins/Events/lang/uk.json32
-rw-r--r--plugins/ExamplePlugin/README.md4
-rw-r--r--plugins/ExamplePlugin/Updates/0.0.2.php2
-rw-r--r--plugins/ExamplePlugin/plugin.json14
-rw-r--r--plugins/ExampleTheme/README.md5
-rw-r--r--plugins/ExampleTheme/plugin.json15
-rw-r--r--plugins/ExampleTracker/Columns/ExampleConversionDimension.php2
-rw-r--r--plugins/ExampleTracker/Columns/ExampleVisitDimension.php2
-rw-r--r--plugins/Feedback/lang/cs.json14
-rw-r--r--plugins/Feedback/lang/de.json18
-rw-r--r--plugins/Feedback/lang/el.json18
-rw-r--r--plugins/Feedback/lang/en.json18
-rw-r--r--plugins/Feedback/lang/es.json17
-rw-r--r--plugins/Feedback/lang/fi.json3
-rw-r--r--plugins/Feedback/lang/fr.json21
-rw-r--r--plugins/Feedback/lang/it.json20
-rw-r--r--plugins/Feedback/lang/ja.json9
-rw-r--r--plugins/Feedback/lang/ka.json4
-rw-r--r--plugins/Feedback/lang/ko.json9
-rw-r--r--plugins/Feedback/lang/nb.json5
-rw-r--r--plugins/Feedback/lang/nl.json9
-rw-r--r--plugins/Feedback/lang/pt-br.json9
-rw-r--r--plugins/Feedback/lang/ru.json9
-rw-r--r--plugins/Feedback/lang/sq.json12
-rw-r--r--plugins/Feedback/lang/sr.json9
-rw-r--r--plugins/Feedback/lang/sv.json8
-rw-r--r--plugins/Feedback/templates/index.twig20
-rw-r--r--plugins/Goals/API.php36
-rw-r--r--plugins/Goals/Controller.php2
-rw-r--r--plugins/Goals/Model.php11
-rw-r--r--plugins/Goals/lang/cs.json1
-rw-r--r--plugins/Goals/lang/da.json9
-rw-r--r--plugins/Goals/lang/el.json1
-rw-r--r--plugins/Goals/lang/fr.json1
-rw-r--r--plugins/Goals/lang/is.json2
-rw-r--r--plugins/Goals/lang/it.json7
-rw-r--r--plugins/Goals/lang/ka.json6
-rw-r--r--plugins/Goals/lang/nl.json2
-rw-r--r--plugins/Goals/lang/pt-br.json1
-rw-r--r--plugins/Goals/lang/sq.json1
-rw-r--r--plugins/Goals/lang/sv.json1
-rw-r--r--plugins/Goals/lang/uk.json128
-rw-r--r--plugins/Goals/tests/Integration/APITest.php36
-rw-r--r--plugins/ImageGraph/ImageGraph.php2
-rw-r--r--plugins/ImageGraph/StaticGraph/GridGraph.php2
-rw-r--r--plugins/ImageGraph/lang/sq.json3
-rw-r--r--plugins/ImageGraph/lang/tr.json6
-rw-r--r--plugins/ImageGraph/lang/uk.json6
-rw-r--r--plugins/Insights/lang/da.json1
-rw-r--r--plugins/Insights/lang/nb.json19
-rw-r--r--plugins/Insights/lang/sq.json2
-rw-r--r--plugins/Insights/lang/sv.json1
-rw-r--r--plugins/Insights/lang/uk.json35
-rw-r--r--plugins/Installation/Controller.php14
-rw-r--r--plugins/Installation/FormDatabaseSetup.php22
-rw-r--r--plugins/Installation/FormSuperUser.php22
-rw-r--r--plugins/Installation/Installation.php20
-rw-r--r--plugins/Installation/ServerFilesGenerator.php25
-rw-r--r--plugins/Installation/lang/am.json1
-rw-r--r--plugins/Installation/lang/ar.json4
-rw-r--r--plugins/Installation/lang/be.json1
-rw-r--r--plugins/Installation/lang/bg.json1
-rw-r--r--plugins/Installation/lang/ca.json1
-rw-r--r--plugins/Installation/lang/cs.json8
-rw-r--r--plugins/Installation/lang/da.json14
-rw-r--r--plugins/Installation/lang/de.json11
-rw-r--r--plugins/Installation/lang/el.json11
-rw-r--r--plugins/Installation/lang/en.json11
-rw-r--r--plugins/Installation/lang/es.json10
-rw-r--r--plugins/Installation/lang/et.json1
-rw-r--r--plugins/Installation/lang/eu.json1
-rw-r--r--plugins/Installation/lang/fa.json1
-rw-r--r--plugins/Installation/lang/fi.json2
-rw-r--r--plugins/Installation/lang/fr.json10
-rw-r--r--plugins/Installation/lang/gl.json1
-rw-r--r--plugins/Installation/lang/hi.json1
-rw-r--r--plugins/Installation/lang/hu.json1
-rw-r--r--plugins/Installation/lang/id.json1
-rw-r--r--plugins/Installation/lang/it.json11
-rw-r--r--plugins/Installation/lang/ja.json2
-rw-r--r--plugins/Installation/lang/ka.json9
-rw-r--r--plugins/Installation/lang/ko.json4
-rw-r--r--plugins/Installation/lang/lt.json1
-rw-r--r--plugins/Installation/lang/nb.json11
-rw-r--r--plugins/Installation/lang/nl.json4
-rw-r--r--plugins/Installation/lang/nn.json1
-rw-r--r--plugins/Installation/lang/pl.json1
-rw-r--r--plugins/Installation/lang/pt-br.json7
-rw-r--r--plugins/Installation/lang/pt.json1
-rw-r--r--plugins/Installation/lang/ro.json1
-rw-r--r--plugins/Installation/lang/ru.json4
-rw-r--r--plugins/Installation/lang/sk.json1
-rw-r--r--plugins/Installation/lang/sq.json55
-rw-r--r--plugins/Installation/lang/sr.json2
-rw-r--r--plugins/Installation/lang/sv.json4
-rw-r--r--plugins/Installation/lang/th.json1
-rw-r--r--plugins/Installation/lang/tl.json1
-rw-r--r--plugins/Installation/lang/uk.json3
-rw-r--r--plugins/Installation/lang/vi.json1
-rw-r--r--plugins/Installation/lang/zh-cn.json4
-rw-r--r--plugins/Installation/lang/zh-tw.json1
-rw-r--r--plugins/Installation/templates/finished.twig12
-rw-r--r--plugins/LanguagesManager/Commands/FetchTranslations.php11
-rw-r--r--plugins/LanguagesManager/Commands/Update.php15
-rw-r--r--plugins/LanguagesManager/Model.php2
-rw-r--r--plugins/LanguagesManager/lang/sq.json3
-rw-r--r--plugins/LanguagesManager/lang/uk.json3
-rw-r--r--plugins/Live/Controller.php2
-rw-r--r--plugins/Live/javascripts/live.js9
-rw-r--r--plugins/Live/lang/fr.json4
-rw-r--r--plugins/Live/lang/nl.json4
-rw-r--r--plugins/Live/lang/ru.json10
-rw-r--r--plugins/Live/lang/sv.json5
-rw-r--r--plugins/Live/lang/uk.json48
-rw-r--r--plugins/Live/templates/_actionsList.twig6
-rw-r--r--plugins/Login/lang/cs.json1
-rw-r--r--plugins/Login/lang/de.json1
-rw-r--r--plugins/Login/lang/el.json1
-rw-r--r--plugins/Login/lang/fr.json2
-rw-r--r--plugins/Login/lang/it.json3
-rw-r--r--plugins/Login/lang/nl.json1
-rw-r--r--plugins/Login/lang/pt-br.json1
-rw-r--r--plugins/Login/lang/ru.json2
-rw-r--r--plugins/Login/lang/sq.json10
-rw-r--r--plugins/Login/lang/sv.json2
-rw-r--r--plugins/Login/lang/uk.json27
m---------plugins/LoginHttpAuth0
-rw-r--r--plugins/MobileAppMeasurable/lang/ru.json5
-rw-r--r--plugins/MobileAppMeasurable/lang/sq.json3
-rw-r--r--plugins/MobileAppMeasurable/lang/uk.json7
-rw-r--r--plugins/Morpheus/templates/admin.twig2
-rw-r--r--plugins/Morpheus/templates/ajaxMacros.twig7
-rw-r--r--plugins/Morpheus/templates/javascriptCode.tpl2
-rw-r--r--plugins/Morpheus/templates/layout.twig2
-rw-r--r--plugins/MultiSites/angularjs/dashboard/dashboard.controller.js2
-rw-r--r--plugins/MultiSites/angularjs/dashboard/dashboard.directive.html4
-rw-r--r--plugins/MultiSites/lang/tr.json9
-rw-r--r--plugins/MultiSites/lang/uk.json6
-rw-r--r--plugins/MultiSites/plugin.json8
-rw-r--r--plugins/MultiSites/tests/Integration/MultiSitesTest.php25
-rw-r--r--plugins/Overlay/client/urlnormalizer.js4
-rw-r--r--plugins/Overlay/lang/de.json2
-rw-r--r--plugins/Overlay/lang/it.json2
-rw-r--r--plugins/Overlay/lang/sv.json1
-rw-r--r--plugins/Overlay/lang/uk.json18
-rw-r--r--plugins/Overlay/templates/renderSidebar.twig2
-rw-r--r--plugins/PiwikPro/PiwikPro.php27
-rw-r--r--plugins/PiwikPro/config/test.php13
-rw-r--r--plugins/PiwikPro/lang/en.json6
-rw-r--r--plugins/PiwikPro/plugin.json5
-rw-r--r--plugins/PrivacyManager/DoNotTrackHeaderChecker.php2
-rwxr-xr-xplugins/PrivacyManager/LogDataPurger.php18
-rw-r--r--plugins/PrivacyManager/lang/el.json2
-rw-r--r--plugins/PrivacyManager/lang/it.json6
-rw-r--r--plugins/PrivacyManager/lang/sv.json2
-rw-r--r--plugins/PrivacyManager/lang/uk.json65
-rw-r--r--plugins/PrivacyManager/tests/Integration/DataPurgingTest.php3
-rw-r--r--plugins/ProfessionalServices/ProfessionalServices.php48
-rw-r--r--plugins/ProfessionalServices/Promo.php (renamed from plugins/PiwikPro/Promo.php)14
-rw-r--r--plugins/ProfessionalServices/Widgets.php60
-rw-r--r--plugins/ProfessionalServices/config/test.php13
-rw-r--r--plugins/ProfessionalServices/images/promo.png (renamed from plugins/PiwikPro/images/promo.png)bin2349 -> 2349 bytes
-rw-r--r--plugins/ProfessionalServices/lang/en.json5
-rw-r--r--plugins/ProfessionalServices/plugin.json4
-rw-r--r--plugins/ProfessionalServices/stylesheets/widget.less (renamed from plugins/PiwikPro/stylesheets/widget.less)0
-rw-r--r--plugins/ProfessionalServices/templates/promoServicesWidget.twig (renamed from plugins/PiwikPro/templates/promoPiwikProWidget.twig)2
-rw-r--r--plugins/ProfessionalServices/tests/Framework/Mock/Promo.php (renamed from plugins/PiwikPro/tests/Framework/Mock/Promo.php)4
-rw-r--r--plugins/Provider/lang/sq.json1
-rw-r--r--plugins/Provider/lang/sv.json3
-rw-r--r--plugins/Provider/lang/uk.json5
-rw-r--r--plugins/Referrers/Columns/Base.php5
-rw-r--r--plugins/Referrers/SearchEngine.php49
-rw-r--r--plugins/Referrers/images/searchEngines/search.disconnect.me.pngbin0 -> 505 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/search.lookseek.com.pngbin0 -> 991 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/search.smartshopping.com.pngbin0 -> 576 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/searchlock.com.pngbin0 -> 3295 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/startpage.com.pngbin0 -> 738 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/www.only-search.com.pngbin0 -> 789 bytes
-rw-r--r--plugins/Referrers/lang/it.json8
-rw-r--r--plugins/Referrers/lang/nl.json4
-rw-r--r--plugins/Referrers/lang/uk.json63
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php2
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php2
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php17
-rw-r--r--plugins/Referrers/tests/Unit/SearchEngineTest.php2
-rw-r--r--plugins/Resolution/lang/ar.json1
-rw-r--r--plugins/Resolution/lang/tr.json11
-rw-r--r--plugins/Resolution/lang/uk.json10
-rw-r--r--plugins/SEO/lang/ru.json1
-rw-r--r--plugins/SEO/lang/sl.json2
-rw-r--r--plugins/SEO/lang/sq.json3
-rw-r--r--plugins/SEO/lang/uk.json12
-rw-r--r--plugins/ScheduledReports/ScheduledReports.php5
-rw-r--r--plugins/ScheduledReports/lang/es.json2
-rw-r--r--plugins/ScheduledReports/lang/it.json4
-rw-r--r--plugins/ScheduledReports/lang/sq.json16
-rw-r--r--plugins/ScheduledReports/lang/sv.json3
-rw-r--r--plugins/ScheduledReports/lang/uk.json53
-rw-r--r--plugins/SegmentEditor/SegmentFormatter.php3
-rw-r--r--plugins/SegmentEditor/SegmentQueryDecorator.php4
-rw-r--r--plugins/SegmentEditor/SegmentSelectorControl.php6
-rw-r--r--plugins/SegmentEditor/javascripts/Segmentation.js41
-rw-r--r--plugins/SegmentEditor/lang/cs.json3
-rw-r--r--plugins/SegmentEditor/lang/de.json3
-rw-r--r--plugins/SegmentEditor/lang/el.json3
-rw-r--r--plugins/SegmentEditor/lang/en.json3
-rw-r--r--plugins/SegmentEditor/lang/es.json14
-rw-r--r--plugins/SegmentEditor/lang/fr.json4
-rw-r--r--plugins/SegmentEditor/lang/it.json3
-rw-r--r--plugins/SegmentEditor/lang/nl.json1
-rw-r--r--plugins/SegmentEditor/lang/pt-br.json3
-rw-r--r--plugins/SegmentEditor/lang/ru.json1
-rw-r--r--plugins/SegmentEditor/lang/sv.json8
-rw-r--r--plugins/SegmentEditor/lang/uk.json38
-rw-r--r--plugins/SegmentEditor/stylesheets/segmentation.less11
-rw-r--r--plugins/SegmentEditor/templates/_segmentSelector.twig20
-rw-r--r--plugins/SegmentEditor/tests/Unit/SegmentQueryDecoratorTest.php5
-rw-r--r--plugins/SitesManager/API.php4
-rw-r--r--plugins/SitesManager/Controller.php4
-rw-r--r--plugins/SitesManager/lang/fr.json1
-rw-r--r--plugins/SitesManager/lang/ka.json4
-rw-r--r--plugins/SitesManager/lang/sq.json17
-rw-r--r--plugins/SitesManager/lang/sv.json5
-rw-r--r--plugins/SitesManager/lang/uk.json118
-rw-r--r--plugins/SitesManager/templates/sites-list/site-fields.html4
-rw-r--r--plugins/SitesManager/tests/Integration/ApiTest.php7
-rw-r--r--plugins/TestRunner/Commands/TestsRun.php2
-rw-r--r--plugins/Transitions/lang/it.json2
-rw-r--r--plugins/Transitions/lang/sv.json1
-rw-r--r--plugins/Transitions/lang/uk.json28
m---------plugins/TreemapVisualization0
-rw-r--r--plugins/UserCountry/images/flags/bu.pngbin336 -> 464 bytes
-rw-r--r--plugins/UserCountry/images/flags/ch.pngbin239 -> 354 bytes
-rw-r--r--plugins/UserCountry/images/flags/gf.pngbin369 -> 390 bytes
-rw-r--r--plugins/UserCountry/images/flags/ls.pngbin500 -> 361 bytes
-rw-r--r--plugins/UserCountry/images/flags/ly.pngbin277 -> 353 bytes
-rw-r--r--plugins/UserCountry/images/flags/mm.pngbin336 -> 464 bytes
-rw-r--r--plugins/UserCountry/images/flags/np.pngbin349 -> 423 bytes
-rw-r--r--plugins/UserCountry/images/flags/tk.pngbin522 -> 379 bytes
-rw-r--r--plugins/UserCountry/lang/nl.json19
-rw-r--r--plugins/UserCountry/lang/sq.json22
-rw-r--r--plugins/UserCountry/lang/uk.json90
-rw-r--r--plugins/UserCountry/tests/Unit/UserCountryTest.php3
-rw-r--r--plugins/UserCountryMap/javascripts/visitor-map.js86
-rw-r--r--plugins/UserCountryMap/lang/ru.json1
-rw-r--r--plugins/UserCountryMap/lang/sq.json4
-rw-r--r--plugins/UserCountryMap/lang/uk.json22
-rw-r--r--plugins/UserId/.gitignore1
-rw-r--r--plugins/UserId/API.php46
-rw-r--r--plugins/UserId/Archiver.php140
-rw-r--r--plugins/UserId/Columns/UserId.php29
-rw-r--r--plugins/UserId/Reports/Base.php19
-rw-r--r--plugins/UserId/Reports/GetUsers.php72
-rw-r--r--plugins/UserId/UserId.php53
-rw-r--r--plugins/UserId/images/visitordetails-hover.pngbin0 -> 1275 bytes
-rw-r--r--plugins/UserId/images/visitordetails.pngbin0 -> 1273 bytes
-rw-r--r--plugins/UserId/javascripts/rowaction.js74
-rw-r--r--plugins/UserId/lang/am.json5
-rw-r--r--plugins/UserId/lang/ar.json5
-rw-r--r--plugins/UserId/lang/be.json5
-rw-r--r--plugins/UserId/lang/bg.json5
-rw-r--r--plugins/UserId/lang/ca.json5
-rw-r--r--plugins/UserId/lang/cs.json7
-rw-r--r--plugins/UserId/lang/da.json5
-rw-r--r--plugins/UserId/lang/de.json7
-rw-r--r--plugins/UserId/lang/el.json7
-rw-r--r--plugins/UserId/lang/en.json7
-rw-r--r--plugins/UserId/lang/es.json5
-rw-r--r--plugins/UserId/lang/et.json5
-rw-r--r--plugins/UserId/lang/eu.json5
-rw-r--r--plugins/UserId/lang/fa.json5
-rw-r--r--plugins/UserId/lang/fi.json5
-rw-r--r--plugins/UserId/lang/fr.json7
-rw-r--r--plugins/UserId/lang/gl.json5
-rw-r--r--plugins/UserId/lang/he.json5
-rw-r--r--plugins/UserId/lang/hi.json5
-rw-r--r--plugins/UserId/lang/hr.json5
-rw-r--r--plugins/UserId/lang/hu.json5
-rw-r--r--plugins/UserId/lang/id.json5
-rw-r--r--plugins/UserId/lang/is.json5
-rw-r--r--plugins/UserId/lang/it.json7
-rw-r--r--plugins/UserId/lang/ja.json5
-rw-r--r--plugins/UserId/lang/ka.json5
-rw-r--r--plugins/UserId/lang/ko.json5
-rw-r--r--plugins/UserId/lang/lt.json5
-rw-r--r--plugins/UserId/lang/lv.json5
-rw-r--r--plugins/UserId/lang/nb.json7
-rw-r--r--plugins/UserId/lang/nl.json7
-rw-r--r--plugins/UserId/lang/nn.json5
-rw-r--r--plugins/UserId/lang/pl.json5
-rw-r--r--plugins/UserId/lang/pt-br.json7
-rw-r--r--plugins/UserId/lang/pt.json5
-rw-r--r--plugins/UserId/lang/ro.json5
-rw-r--r--plugins/UserId/lang/ru.json5
-rw-r--r--plugins/UserId/lang/sk.json5
-rw-r--r--plugins/UserId/lang/sl.json5
-rw-r--r--plugins/UserId/lang/sq.json5
-rw-r--r--plugins/UserId/lang/sr.json5
-rw-r--r--plugins/UserId/lang/sv.json7
-rw-r--r--plugins/UserId/lang/ta.json5
-rw-r--r--plugins/UserId/lang/te.json5
-rw-r--r--plugins/UserId/lang/th.json5
-rw-r--r--plugins/UserId/lang/tl.json5
-rw-r--r--plugins/UserId/lang/tr.json5
-rw-r--r--plugins/UserId/lang/uk.json5
-rw-r--r--plugins/UserId/lang/vi.json7
-rw-r--r--plugins/UserId/lang/zh-cn.json5
-rw-r--r--plugins/UserId/lang/zh-tw.json5
-rw-r--r--plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php58
-rw-r--r--plugins/UserId/tests/System/ApiTest.php154
-rw-r--r--plugins/UserId/tests/System/expected/test___UserId.getUsers_day.xml39
-rw-r--r--plugins/UserId/tests/System/expected/test___UserId.getUsers_range.xml39
-rw-r--r--plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_day.xml39
-rw-r--r--plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_range.xml39
-rw-r--r--plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_day.xml27
-rw-r--r--plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_range.xml27
-rw-r--r--plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_day.xml15
-rw-r--r--plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_range.xml15
-rw-r--r--plugins/UserLanguage/lang/nl.json2
-rw-r--r--plugins/UserLanguage/lang/sq.json3
-rw-r--r--plugins/UserLanguage/lang/uk.json4
-rw-r--r--plugins/UserLanguage/lang/vi.json3
-rw-r--r--plugins/UsersManager/Controller.php2
-rw-r--r--plugins/UsersManager/UsersManager.php7
-rw-r--r--plugins/UsersManager/lang/ar.json1
-rw-r--r--plugins/UsersManager/lang/be.json1
-rw-r--r--plugins/UsersManager/lang/bg.json1
-rw-r--r--plugins/UsersManager/lang/ca.json1
-rw-r--r--plugins/UsersManager/lang/cs.json2
-rw-r--r--plugins/UsersManager/lang/da.json1
-rw-r--r--plugins/UsersManager/lang/de.json4
-rw-r--r--plugins/UsersManager/lang/el.json2
-rw-r--r--plugins/UsersManager/lang/en.json2
-rw-r--r--plugins/UsersManager/lang/es.json9
-rw-r--r--plugins/UsersManager/lang/fa.json2
-rw-r--r--plugins/UsersManager/lang/fi.json1
-rw-r--r--plugins/UsersManager/lang/fr.json6
-rw-r--r--plugins/UsersManager/lang/id.json1
-rw-r--r--plugins/UsersManager/lang/it.json2
-rw-r--r--plugins/UsersManager/lang/ja.json1
-rw-r--r--plugins/UsersManager/lang/ka.json8
-rw-r--r--plugins/UsersManager/lang/ko.json1
-rw-r--r--plugins/UsersManager/lang/lt.json1
-rw-r--r--plugins/UsersManager/lang/lv.json1
-rw-r--r--plugins/UsersManager/lang/nb.json1
-rw-r--r--plugins/UsersManager/lang/nl.json2
-rw-r--r--plugins/UsersManager/lang/pl.json1
-rw-r--r--plugins/UsersManager/lang/pt-br.json1
-rw-r--r--plugins/UsersManager/lang/pt.json1
-rw-r--r--plugins/UsersManager/lang/ro.json1
-rw-r--r--plugins/UsersManager/lang/ru.json1
-rw-r--r--plugins/UsersManager/lang/sl.json1
-rw-r--r--plugins/UsersManager/lang/sq.json13
-rw-r--r--plugins/UsersManager/lang/sr.json1
-rw-r--r--plugins/UsersManager/lang/sv.json5
-rw-r--r--plugins/UsersManager/lang/tl.json1
-rw-r--r--plugins/UsersManager/lang/uk.json97
-rw-r--r--plugins/UsersManager/lang/vi.json9
-rw-r--r--plugins/UsersManager/lang/zh-cn.json1
-rw-r--r--plugins/UsersManager/lang/zh-tw.json1
-rw-r--r--plugins/UsersManager/tests/Integration/UsersManagerTest.php16
-rw-r--r--plugins/UsersManager/tests/System/ApiTest.php2
-rw-r--r--plugins/VisitFrequency/lang/uk.json9
-rw-r--r--plugins/VisitTime/lang/it.json4
-rw-r--r--plugins/VisitTime/lang/uk.json22
-rw-r--r--plugins/VisitorInterest/lang/fr.json2
-rw-r--r--plugins/VisitorInterest/lang/is.json1
-rw-r--r--plugins/VisitorInterest/lang/ka.json1
-rw-r--r--plugins/VisitorInterest/lang/uk.json23
-rw-r--r--plugins/VisitsSummary/lang/sl.json6
-rw-r--r--plugins/VisitsSummary/lang/uk.json25
-rw-r--r--plugins/WebsiteMeasurable/lang/ru.json5
-rw-r--r--plugins/WebsiteMeasurable/lang/uk.json7
-rw-r--r--plugins/Widgetize/lang/sv.json1
-rw-r--r--plugins/Widgetize/lang/tr.json6
-rw-r--r--plugins/Widgetize/lang/uk.json4
-rw-r--r--plugins/Widgetize/tests/System/WidgetTest.php17
583 files changed, 5511 insertions, 1132 deletions
diff --git a/plugins/API/API.php b/plugins/API/API.php
index beb330fd07..a3a9b4fb02 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -83,7 +83,7 @@ class API extends \Piwik\Plugin\API
}
/**
- * Returns the most accurate IP address availble for the current user, in
+ * Returns the most accurate IP address available for the current user, in
* IPv4 format. This could be the proxy client's IP address.
*
* @return string IP address in presentation format.
diff --git a/plugins/API/Renderer/Console.php b/plugins/API/Renderer/Console.php
index 40794ef8e9..98e3d01d1f 100644
--- a/plugins/API/Renderer/Console.php
+++ b/plugins/API/Renderer/Console.php
@@ -16,7 +16,12 @@ use Piwik\DataTable;
class Console extends ApiRenderer
{
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param Exception|\Throwable $exception
+ * @return string
+ */
+ public function renderException($message, $exception)
{
self::sendHeader();
diff --git a/plugins/API/Renderer/Csv.php b/plugins/API/Renderer/Csv.php
index 468a3a2588..77caa50bce 100644
--- a/plugins/API/Renderer/Csv.php
+++ b/plugins/API/Renderer/Csv.php
@@ -23,7 +23,12 @@ class Csv extends ApiRenderer
return "message\n" . $message;
}
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param Exception|\Throwable $exception
+ * @return string
+ */
+ public function renderException($message, $exception)
{
Common::sendHeader('Content-Type: text/html; charset=utf-8', true);
return 'Error: ' . $message;
diff --git a/plugins/API/Renderer/Html.php b/plugins/API/Renderer/Html.php
index 4037c35b4e..48acbb355f 100644
--- a/plugins/API/Renderer/Html.php
+++ b/plugins/API/Renderer/Html.php
@@ -16,7 +16,12 @@ use Piwik\DataTable;
class Html extends ApiRenderer
{
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param Exception|\Throwable $exception
+ * @return string
+ */
+ public function renderException($message, $exception)
{
Common::sendHeader('Content-Type: text/plain; charset=utf-8', true);
diff --git a/plugins/API/Renderer/Json.php b/plugins/API/Renderer/Json.php
index 1dffa1f45f..5037b30fbe 100644
--- a/plugins/API/Renderer/Json.php
+++ b/plugins/API/Renderer/Json.php
@@ -31,7 +31,12 @@ class Json extends ApiRenderer
return $this->applyJsonpIfNeeded($result);
}
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param Exception|\Throwable $exception
+ * @return string
+ */
+ public function renderException($message, $exception)
{
$exceptionMessage = str_replace(array("\r\n", "\n"), "", $message);
diff --git a/plugins/API/Renderer/Original.php b/plugins/API/Renderer/Original.php
index a0730acf2b..96895b8012 100644
--- a/plugins/API/Renderer/Original.php
+++ b/plugins/API/Renderer/Original.php
@@ -18,7 +18,13 @@ class Original extends ApiRenderer
return true;
}
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param \Exception|\Throwable $exception
+ * @throws \Exception|\Throwable
+ * @return void
+ */
+ public function renderException($message, $exception)
{
throw $exception;
}
diff --git a/plugins/API/Renderer/Php.php b/plugins/API/Renderer/Php.php
index 81a512122d..5823137569 100644
--- a/plugins/API/Renderer/Php.php
+++ b/plugins/API/Renderer/Php.php
@@ -23,7 +23,12 @@ class Php extends ApiRenderer
return $this->serializeIfNeeded($success);
}
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param Exception|\Throwable $exception
+ * @return string
+ */
+ public function renderException($message, $exception)
{
$message = array('result' => 'error', 'message' => $message);
diff --git a/plugins/API/Renderer/Rss.php b/plugins/API/Renderer/Rss.php
index 3ee1c287bc..5bbcac78aa 100644
--- a/plugins/API/Renderer/Rss.php
+++ b/plugins/API/Renderer/Rss.php
@@ -16,7 +16,12 @@ use Piwik\DataTable;
class Rss extends ApiRenderer
{
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param \Exception|\Throwable $exception
+ * @return string
+ */
+ public function renderException($message, $exception)
{
self::sendHeader('plain');
diff --git a/plugins/API/Renderer/Xml.php b/plugins/API/Renderer/Xml.php
index 99092ee057..4a1f0247d7 100644
--- a/plugins/API/Renderer/Xml.php
+++ b/plugins/API/Renderer/Xml.php
@@ -24,7 +24,12 @@ class Xml extends ApiRenderer
"</result>";
}
- public function renderException($message, \Exception $exception)
+ /**
+ * @param $message
+ * @param \Exception|\Throwable $exception
+ * @return string
+ */
+ public function renderException($message, $exception)
{
return '<?xml version="1.0" encoding="utf-8" ?>' . "\n" .
"<result>\n" .
diff --git a/plugins/API/RowEvolution.php b/plugins/API/RowEvolution.php
index b8afec8e39..f7af6b93b1 100644
--- a/plugins/API/RowEvolution.php
+++ b/plugins/API/RowEvolution.php
@@ -209,7 +209,7 @@ class RowEvolution
$result = str_replace(LabelFilter::SEPARATOR_RECURSIVE_LABEL, ' - ', $label);
}
- // remove @ terminal operator occurances
+ // remove @ terminal operator occurrences
return str_replace(LabelFilter::TERMINAL_OPERATOR, '', $result);
}
diff --git a/plugins/API/lang/es.json b/plugins/API/lang/es.json
index ee7308033f..e35219972b 100644
--- a/plugins/API/lang/es.json
+++ b/plugins/API/lang/es.json
@@ -1,6 +1,6 @@
{
"API": {
- "GenerateVisits": "Si no tiene los datos de hoy puede generar primero algunos datos mediante el complemento %1$s. Puede habilitar el complemento %2$s, a continuación, haga clic en el menú 'Generador de Visitas' en la area Administrativa de Piwik.",
+ "GenerateVisits": "Si no tiene los datos de hoy puede generar primero algunos datos mediante el complemento %1$s. Puede habilitar el complemento %2$s, a continuación, haga clic en el menú 'Generador de Visitas' en el área Administrativa de Piwik.",
"KeepTokenSecret": "Este token_auth es tan secreto como su nombre de usuario y contraseña, %1$s no lo comparta %2$s!",
"LoadedAPIs": "Se han cargado %s APIs exitosamente",
"MoreInformation": "Para mayor información acerca de las APIs de Piwik, por favor lea la %1$s Introducción a las API Piwik %2$s y la %3$s Referencia de las API Piwik %4$s.",
@@ -8,6 +8,7 @@
"ReportingApiReference": "Informando Referencia API",
"TopLinkTooltip": "Acceda a sus datos de análisis de internet programáticamente, a través de una sencilla API en json, xml, etc.",
"UserAuthentication": "Autenticación de usuario",
- "UsingTokenAuth": "Si quieres %1$s solicitar datos dentro de un script, un crontab, etc. %2$s tiene que agregar el parámetro %3$s a las llamadas a la URL de la API que requieren autenticación."
+ "UsingTokenAuth": "Si quieres %1$s solicitar datos dentro de un script, un crontab, etc. %2$s tiene que agregar el parámetro %3$s a las llamadas a la URL de la API que requieren autenticación.",
+ "Glossary": "Glosario"
}
} \ No newline at end of file
diff --git a/plugins/API/lang/is.json b/plugins/API/lang/is.json
index 2c830e748b..46ede8ec71 100644
--- a/plugins/API/lang/is.json
+++ b/plugins/API/lang/is.json
@@ -1,11 +1,10 @@
{
"API": {
- "GenerateVisits": "Ef þú hefur ekki gögn dagsins í dag verður þú fyrst að búa til gögn með að nota %s íbótina. Virkjaðu %s íbótina og smelltu síðan á valmyndinni 'Gesta framleiðni' í Piwik umsjónarmanns svæðinu.",
- "KeepTokenSecret": "Þessi tókar auðkenning er eins leynd og þitt notendanafn og lykilorð %s deilið því ekki%s!",
+ "GenerateVisits": "Ef þú hefur ekki gögn dagsins í dag verður þú fyrst að búa til gögn með að nota %1$s íbótina. Virkjaðu %2$s íbótina og smelltu síðan á valmyndinni 'Gesta framleiðni' í Piwik umsjónarmanns svæðinu.",
+ "KeepTokenSecret": "Þessi tókar auðkenning er eins leynd og þitt notendanafn og lykilorð %1$s deilið því ekki%2$s!",
"LoadedAPIs": "Tókst að hlaða %s API",
- "MoreInformation": "Fyrir frekari upplýsingar um Piwik API, Vinsamlegast skoðið %s Inngangur að Piwik API %s og %s Piwik API Tilvísunir %s.",
- "QuickDocumentationTitle": "API hraðskjöl.",
+ "MoreInformation": "Fyrir frekari upplýsingar um Piwik API, Vinsamlegast skoðið %1$s Inngangur að Piwik API %2$s og %3$s Piwik API Tilvísunir %4$s.",
"UserAuthentication": "Notenda auðkenning",
- "UsingTokenAuth": "Ef þú vilt að %s biðji um gögn inn í skriftu eða crontab færslu osfv. %s verður þú að bæta við færibreytu %s til API kalls vefslóðir sem krefst auðkenningar."
+ "UsingTokenAuth": "Ef þú vilt að %1$s biðji um gögn inn í skriftu eða crontab færslu osfv. %2$s verður þú að bæta við færibreytu %3$s til API kalls vefslóðir sem krefst auðkenningar."
}
} \ No newline at end of file
diff --git a/plugins/API/lang/ka.json b/plugins/API/lang/ka.json
index 4d0e64c558..36947fd91e 100644
--- a/plugins/API/lang/ka.json
+++ b/plugins/API/lang/ka.json
@@ -1,11 +1,10 @@
{
"API": {
- "GenerateVisits": "თუ დღეისთვის არ გაქვთ მონაცემები, შეგიძლიათ ჯერ %s პლაგინის გამოყენებით დააგენერიროთ რამდენიმე მონაცემი. შეგიძლიათ ჩართოთ პლაგინი %s, შემდეგ Piwik ადმინისტრირების ზონაში დააწკაპუნოთ \"ვიზიტორების გენერატორი\" მენიუზე.",
- "KeepTokenSecret": "ეს token_auth ისევე საიდუმლოა, როგორც თქვენი მომხმარებლის სახელი და პაროლი, %s არავის გაუზიაროთ ის%s!",
+ "GenerateVisits": "თუ დღეისთვის არ გაქვთ მონაცემები, შეგიძლიათ ჯერ %1$s პლაგინის გამოყენებით დააგენერიროთ რამდენიმე მონაცემი. შეგიძლიათ ჩართოთ პლაგინი %2$s, შემდეგ Piwik ადმინისტრირების ზონაში დააწკაპუნოთ \"ვიზიტორების გენერატორი\" მენიუზე.",
+ "KeepTokenSecret": "ეს token_auth ისევე საიდუმლოა, როგორც თქვენი მომხმარებლის სახელი და პაროლი, %1$s არავის გაუზიაროთ ის%2$s!",
"LoadedAPIs": "%s API ფუნქციები წარმატებით ჩაიტვირთა",
- "MoreInformation": "Piwik API ფუნქციების შესახებ დამატებითი ინფორმაციისთვის გთხოვთ, გადახედოთ მასალებს %s Piwik API ფუნქციბის გამოყენების ინსტრუქცია %s და %s Piwik API ფუნქციების ცნობარი %s.",
- "QuickDocumentationTitle": "API ფუნქციების მოკლე დოკუმენტაცია",
+ "MoreInformation": "Piwik API ფუნქციების შესახებ დამატებითი ინფორმაციისთვის გთხოვთ, გადახედოთ მასალებს %1$s Piwik API ფუნქციბის გამოყენების ინსტრუქცია %2$s და %3$s Piwik API ფუნქციების ცნობარი %4$s.",
"UserAuthentication": "მომხმარებლის აუტენთიფიკაცია",
- "UsingTokenAuth": "თუ გსურთ %s გააკეთოთ მონაცემების მოთხოვნა სკრიპტიდან, crontab ფაილიდან და სხვ. %s თქვენ უნდა დაამატოთ %s პარამეტრი API ფუნქციის გამოძახების URL–ებს, რაც მოითხოვს აუტენთიფიკაციას."
+ "UsingTokenAuth": "თუ გსურთ %1$s გააკეთოთ მონაცემების მოთხოვნა სკრიპტიდან, crontab ფაილიდან და სხვ. %2$s თქვენ უნდა დაამატოთ %3$s პარამეტრი API ფუნქციის გამოძახების URL–ებს, რაც მოითხოვს აუტენთიფიკაციას."
}
} \ No newline at end of file
diff --git a/plugins/API/lang/sq.json b/plugins/API/lang/sq.json
index 2a364fc617..5c7bcb0f25 100644
--- a/plugins/API/lang/sq.json
+++ b/plugins/API/lang/sq.json
@@ -4,9 +4,12 @@
"KeepTokenSecret": "Ky token_auth është po aq i fshehtë sa të dhënat tuaja për hyrjen dhe fjalëkalimi juaj, %1$s mos ia jepni kujt%2$s!",
"LoadedAPIs": "U ngarkua me sukses API %s",
"MoreInformation": "Për më tepër të dhëna rreth API-ve të Piwik-ut, ju lutem, hidhini një sy %1$s Hyrje në API-t e Piwik-ut %2$s dhe %3$s Referencë API-sh Piwik-u %4$s.",
+ "PluginDescription": "Në Piwik krejt të dhënat janë të passhme përmes API-sh të thjeshta. Kjo shtojcë është pika e hyrjes për një shërbim web, të cilin mund ta vini në punë për të patur të dhënat tuaja të Analizës Web në format xml, json, php, csv, etj.",
+ "ReportingApiReference": "Referencë API Raportimesh",
"TopLinkTooltip": "Hyni programatikisht te të dhënat tuaja të Analizave Web përmes një API-je të thjeshtë json, xml, etj.",
"UserAuthentication": "Mirëfilltësim përdoruesi",
"UsingTokenAuth": "Nëse doni të %1$s kërkoni të dhëna brenda një programthi, një crontab-i, etj. %2$s lypset të shtoni parametrin %3$s te URL-të për thirrje API që lypin mirëfilltësim.",
- "Glossary": "Fjalorth"
+ "Glossary": "Fjalorth",
+ "LearnAboutCommonlyUsedTerms": "Mësoni rreth termave që përdoren zakonisht, për të përfituar maksimumin prej Analizave Piwik Analytics: %1$s dhe %2$s."
}
} \ No newline at end of file
diff --git a/plugins/API/lang/sv.json b/plugins/API/lang/sv.json
index bdd60c8c23..45fe763927 100644
--- a/plugins/API/lang/sv.json
+++ b/plugins/API/lang/sv.json
@@ -5,9 +5,11 @@
"LoadedAPIs": "Laddade in %s API'er utan problem",
"MoreInformation": "För mer information om Piwiks API'er, ta en titt i %1$s Introduction to Piwik API %2$s och %3$s Piwik API Reference %4$s.",
"PluginDescription": "Allt data i Piwik finns tillgängligt genom enkla API:er. Denna plugin är en web service entry point, vilken du kan använda för att hämta ditt Piwik-data i formaten xml, json, php, csv, etc.",
+ "ReportingApiReference": "Rapporterings-API referens",
"TopLinkTooltip": "Få åtkomst till webbanalysdata programmatiskt genom ett enkelt API i t.ex. json, xml etc.",
"UserAuthentication": "Användarautentisering",
"UsingTokenAuth": "Om du vill %1$s begära uppgifter inom ett skript, ett crontab-jobb, etc. %2$s måste du lägga till parametern %3$s till API-anrop webbadresser som kräver autentisering.",
- "Glossary": "Ordbok"
+ "Glossary": "Ordbok",
+ "LearnAboutCommonlyUsedTerms": "Lär dig mer om de vanligaste termerna för att få ut mest av Piwik Analytics: %1$s och %2$s."
}
} \ No newline at end of file
diff --git a/plugins/API/lang/uk.json b/plugins/API/lang/uk.json
index 20e3eae228..c3784384ec 100644
--- a/plugins/API/lang/uk.json
+++ b/plugins/API/lang/uk.json
@@ -4,7 +4,12 @@
"KeepTokenSecret": "token_auth є секретним, на рівні з логіном та паролем, тож %1$s тримайте цю інформацію секреті%2$s!",
"LoadedAPIs": "%s API успішно завантажено",
"MoreInformation": "Для отримання детальнішої інформації про API Piwik, перегляньте %1$s Вступ до Piwik API %2$s та %3$s Довідковий матеріал по Piwik API %4$s.",
+ "PluginDescription": "Всі дані з Piwik доступні через прості API. Цей плагін є вхідною точкою для веб сервісу, який можна викликати щоб отримати дані веб аналітики в xml, json, php, csv та інше.",
+ "ReportingApiReference": "Повідомлення довідкової інформації по API",
+ "TopLinkTooltip": "Отримуйте доступ до вашої веб-аналітиці за допомогою простого API з використанням json, xml та іншого.",
"UserAuthentication": "Аутентифікація користоувача",
- "UsingTokenAuth": "Для %1$sдоступу до інформації скриптом, програмою і т.д.%2$s треба додавати параметр %3$s до кожного виклику API якищо використовуваний URL вимагає аутентифікації."
+ "UsingTokenAuth": "Для %1$sдоступу до інформації скриптом, програмою і т.д.%2$s треба додавати параметр %3$s до кожного виклику API якищо використовуваний URL вимагає аутентифікації.",
+ "Glossary": "Глосарій",
+ "LearnAboutCommonlyUsedTerms": "Вивчіть часто використовувані терміни, щоб витягти максимум користі з Piwik Analytics: %1$s і %2$s."
}
} \ No newline at end of file
diff --git a/plugins/API/lang/vi.json b/plugins/API/lang/vi.json
index 05c908db9a..cc21a27a28 100644
--- a/plugins/API/lang/vi.json
+++ b/plugins/API/lang/vi.json
@@ -8,6 +8,7 @@
"ReportingApiReference": "Tham chiếu API báo cáo",
"TopLinkTooltip": "Truy cập dữ liệu lập trình Web Analytics của bạn thông qua một API đơn giản trong JSON, xml, vv",
"UserAuthentication": "Xác thực người dùng",
- "UsingTokenAuth": "Nếu bạn muốn %1$s truy vấn dữ liệu trong script hoặc crontab, ... %2$s bạn cần phải thêm tham số %3$s vào các API call URL yêu cầu xác thực."
+ "UsingTokenAuth": "Nếu bạn muốn %1$s truy vấn dữ liệu trong script hoặc crontab, ... %2$s bạn cần phải thêm tham số %3$s vào các API call URL yêu cầu xác thực.",
+ "Glossary": "Thuật ngữ"
}
} \ No newline at end of file
diff --git a/plugins/Actions/javascripts/actionsDataTable.js b/plugins/Actions/javascripts/actionsDataTable.js
index 1921916340..6adfe62cbd 100644
--- a/plugins/Actions/javascripts/actionsDataTable.js
+++ b/plugins/Actions/javascripts/actionsDataTable.js
@@ -54,12 +54,13 @@
var self = this;
self.cleanParams();
+ self.preBindEventsAndApplyStyleHook(domElem, rows);
if (!rows) {
rows = $('tr', domElem);
}
- // we dont display the link on the row with subDataTable when we are already
+ // we don't display the link on the row with subDataTable when we are already
// printing all the subTables (case of recursive search when the content is
// including recursively all the subtables
if (!self.param.filter_pattern_recursive) {
@@ -91,6 +92,7 @@
self.setFixWidthToMakeEllipsisWork(domElem);
self.handleSummaryRow(domElem);
self.openSubtableFromLevel0IfOnlyOneSubtableGiven(domElem);
+ self.postBindEventsAndApplyStyleHook(domElem, rows);
},
openSubtableFromLevel0IfOnlyOneSubtableGiven: function (domElem) {
diff --git a/plugins/Actions/lang/ar.json b/plugins/Actions/lang/ar.json
index a6de6924bf..549a6642d9 100644
--- a/plugins/Actions/lang/ar.json
+++ b/plugins/Actions/lang/ar.json
@@ -2,6 +2,7 @@
"Actions": {
"AvgGenerationTimeTooltip": "متوسط على أساس %1$s كبسة %2$s ما بين %3$s و %4$s",
"ColumnClickedURL": "الرابط المتبوع",
+ "ColumnActionURL": "رابط الأمر",
"ColumnClicks": "النقرات",
"ColumnClicksDocumentation": "عدد مرات النقر على هذا الرابط.",
"ColumnDownloadURL": "رابط التحميل",
@@ -60,6 +61,7 @@
"WidgetPageUrlsFollowingSearch": "الصفحات بعد بحث بالموقع",
"WidgetSearchCategories": "فئات البحث",
"WidgetSearchKeywords": "كلمات البحث الدلالية",
- "WidgetSearchNoResultKeywords": "كلمات البحث الدلالية بلا نتائج"
+ "WidgetSearchNoResultKeywords": "كلمات البحث الدلالية بلا نتائج",
+ "ActionType": "نوع الأمر"
}
} \ No newline at end of file
diff --git a/plugins/Actions/lang/da.json b/plugins/Actions/lang/da.json
index f7bb0dd234..92ce7c09f3 100644
--- a/plugins/Actions/lang/da.json
+++ b/plugins/Actions/lang/da.json
@@ -2,6 +2,7 @@
"Actions": {
"AvgGenerationTimeTooltip": "Gennemsnit baseret på %1$s hits %2$s mellem %3$s og %4$s",
"ColumnClickedURL": "Klikkede URL",
+ "ColumnActionURL": "Handlings URL",
"ColumnClicks": "Klik",
"ColumnClicksDocumentation": "Antal gange linket blev klikket på.",
"ColumnDownloadURL": "Hentet URL",
@@ -60,6 +61,7 @@
"WidgetPageUrlsFollowingSearch": "Sider efter en webstedssøgning",
"WidgetSearchCategories": "Søge kategorier",
"WidgetSearchKeywords": "Websted søgeord",
- "WidgetSearchNoResultKeywords": "Søgeord uden nogen resultater"
+ "WidgetSearchNoResultKeywords": "Søgeord uden nogen resultater",
+ "ActionType": "Handlings type"
}
} \ No newline at end of file
diff --git a/plugins/Actions/lang/fa.json b/plugins/Actions/lang/fa.json
index 7937515a3d..f1d16838e3 100644
--- a/plugins/Actions/lang/fa.json
+++ b/plugins/Actions/lang/fa.json
@@ -2,6 +2,7 @@
"Actions": {
"AvgGenerationTimeTooltip": "میانگین بر اساس %1$s کلیک %2$s بین %3$s و %4$s",
"ColumnClickedURL": "آدرس کلیک شده",
+ "ColumnActionURL": "آدرس فعالیت",
"ColumnClicks": "کلیک ها",
"ColumnClicksDocumentation": "تعداد دفعاتی که بر روی این لینک کلیک شده است.",
"ColumnDownloadURL": "آدرس دانلود شده",
@@ -36,6 +37,7 @@
"PagesReportDocumentation": "این گزارش شامل اطلاعاتی درباره URLهای صفحه هایی است که بازدید شده اند. %s جدول به صورت سلسله مراتبی سازماندهی شده است و URLها به عنوان پوشه نمایش داده شده اند.",
"PageTitlesReportDocumentation": "این گزارش شامل اطلاعاتی درباره عنوان صفحه هایی است که بازدید شده اند. %1$s عنوان صفحه تگ %2$s HTML است که اغلب مرورگرها در عنوان پنجره هایشان نمایش می دهند.",
"PageUrls": "آدرس صفحات",
+ "PluginDescription": "گزارش‌ها درباره بازدید صفحات و عنوان صفحات. شما می‌توانید با استفاده از این بخش موتور جستجوی داخلی وبسایت را ارزیابی کنید. به صورت خودکار کلیک‌های لینک‌های خارجی و دانلود فایل را رهگیری می‌کند.",
"SiteSearchCategories1": "این گزارش مجموعه هایی را فهرست می کند که بازدیدکنندگان هنگام جستجو در سایت شما , آن را انتخاب نموده اند.",
"SiteSearchCategories2": "برای نمونه , وبسایت های تجاری معمولا \"مجموعه\"هایی برای انتخاب دارند که به بازدیدکنندگان اجازه می دهد جستجوهایشان را از تمام محصولات به مجموعه ای از محصولات محدود کنند.",
"SiteSearchFollowingPagesDoc": "هنگامی که بازدیدکنندگان در سایت شما جستجو می کنند , آنها به دنبال صفحه ,محتوی ,محصول و یا سرویس خاصی هستند. این گزارش صفحاتی را فهرست می کند که بیشترین کلیک را بعد از جستجوی داخلی داشته اند. به عبارت دیگر ,فهرست صفحه هایی که بیشترین جستجو را توسط بازدیدکنندگان سایت شما داشته اند.",
@@ -56,6 +58,7 @@
"WidgetPageUrlsFollowingSearch": "عنوان های صفحه پیرو جستجوی سایت",
"WidgetSearchCategories": "جستجوی بخش ها",
"WidgetSearchKeywords": "کلیدواژه های جستجوی سایت",
- "WidgetSearchNoResultKeywords": "جستجوی کلیدواژه ها بدون نتیجه بود"
+ "WidgetSearchNoResultKeywords": "جستجوی کلیدواژه ها بدون نتیجه بود",
+ "ActionType": "نوع فعالیت"
}
} \ No newline at end of file
diff --git a/plugins/Actions/lang/fr.json b/plugins/Actions/lang/fr.json
index 38fc3bd071..e63293a2b0 100644
--- a/plugins/Actions/lang/fr.json
+++ b/plugins/Actions/lang/fr.json
@@ -1,5 +1,6 @@
{
"Actions": {
+ "AvgGenerationTimeTooltip": "Moyenne basée sur %1$s entrée(s) %2$s entre %3$s et %4$s",
"ColumnClickedURL": "URL cliquées",
"ColumnActionURL": "URL d'action",
"ColumnClicks": "Clics",
diff --git a/plugins/Actions/lang/sq.json b/plugins/Actions/lang/sq.json
index 7ba920bc2a..8bb5f58157 100644
--- a/plugins/Actions/lang/sq.json
+++ b/plugins/Actions/lang/sq.json
@@ -61,6 +61,7 @@
"WidgetPageUrlsFollowingSearch": "Faqe Në Vijim të një Kërkimi në Sajt",
"WidgetSearchCategories": "Kategori Kërkimesh",
"WidgetSearchKeywords": "Fjalëkyçe Kërkimi në Sajt",
- "WidgetSearchNoResultKeywords": "Fjalëkyça Kërkimesh me Pa Përfundime"
+ "WidgetSearchNoResultKeywords": "Fjalëkyça Kërkimesh me Pa Përfundime",
+ "ActionType": "Lloj Veprimi"
}
} \ No newline at end of file
diff --git a/plugins/Actions/lang/tr.json b/plugins/Actions/lang/tr.json
index 0c65af530a..59fc65d1b6 100644
--- a/plugins/Actions/lang/tr.json
+++ b/plugins/Actions/lang/tr.json
@@ -1,23 +1,23 @@
{
"Actions": {
- "AvgGenerationTimeTooltip": "Ortalama %1$s hit, %2$s arasında %3$s \/ %4$s 'e dayalı",
- "ColumnClickedURL": "Tıklanan Sayfa Adresleri",
- "ColumnActionURL": "Aksiyon Adresi",
- "ColumnClicks": "Tıklamalar",
- "ColumnClicksDocumentation": "Tıklama sayısı",
- "ColumnDownloadURL": "İndirme Sayfa Adresleri",
+ "AvgGenerationTimeTooltip": "Ortalama %1$s %2$s ortalama tıklamaya göre %3$s ile %4$s arasında",
+ "ColumnClickedURL": "Tıklanan Adres",
+ "ColumnActionURL": "İşlem Adresi",
+ "ColumnClicks": "Tıklanma",
+ "ColumnClicksDocumentation": "Bu bağlantıya tıklanma sayısı.",
+ "ColumnDownloadURL": "İndirme İnternet Adresi",
"ColumnEntryPageTitle": "Giriş Sayfası Başlığı",
- "ColumnEntryPageURL": "Giriş Sayfa Adresi",
+ "ColumnEntryPageURL": "Giriş Sayfası Adresi",
"ColumnExitPageTitle": "Çıkış Sayfası Başlığı",
- "ColumnExitPageURL": "Çıkış Sayfa Adresi",
- "ColumnNoResultKeyword": "Arama sonucu olmayan Anahtar Kelime",
- "ColumnPageName": "Sayfa İsmi",
- "ColumnPagesPerSearch": "Arama Sonuç Sayfaları",
- "ColumnPagesPerSearchDocumentation": "Ziyaretçiler sitenizde arama yaptıklarında \"İleri\" tıklayarak daha fazla sonuç görebilirler. Bu sayı, bu anahtar kelime için görüntülenen ortalama arama sonuç sayfalarının sayısıdır.",
+ "ColumnExitPageURL": "Çıkış Sayfası Adresi",
+ "ColumnNoResultKeyword": "Arama sonucu olmayan Anahtar Sözcük",
+ "ColumnPageName": "Sayfa Adı",
+ "ColumnPagesPerSearch": "Arama Sonuçları Sayfaları",
+ "ColumnPagesPerSearchDocumentation": "Ziyaretçiler sitenizde arama yaptıklarında \"Sonraki\" üzerine tıklayarak daha fazla sonuç görüntüleyebilir. Bu sayı, bu anahtar sözcük için görüntülenen ortalama arama sonuç sayfalarının sayısıdır.",
"ColumnPageURL": "Sayfa Adresi",
"ColumnSearchCategory": "Arama Kategorisi",
"ColumnSearches": "Aramalar",
- "ColumnSearchesDocumentation": "Bu anahtar kelime ile sitenizde yapılan aramaların sayısı",
+ "ColumnSearchesDocumentation": "Bu anahtar sözcük ile web sitenizin arama motorunda yapılan aramaların sayısı.",
"ColumnSearchExits": "Arama Çıkış Yüzdesi",
"ColumnSearchExitsDocumentation": "Bu Anahtar Kelimeyi sitenizin Arama Motorunda aradıktan sonra siteden ayrılanların yüzdesi.",
"ColumnSearchResultsCount": "Arama Sonucu Sayısı",
@@ -51,17 +51,17 @@
"SubmenuPagesEntry": "Giriş sayfaları",
"SubmenuPagesExit": "Çıkış sayfaları",
"SubmenuPageTitles": "Sayfa başlıkları",
- "SubmenuSitesearch": "Arama",
+ "SubmenuSitesearch": "Site Araması",
"WidgetEntryPageTitles": "Giriş Sayfası Başlıkları",
"WidgetExitPageTitles": "Çıkış Sayfası Başlıkları",
"WidgetPagesEntry": "Giriş Sayfaları",
"WidgetPagesExit": "Çıkış Sayfaları",
"WidgetPageTitles": "Sayfa Başlıkları",
- "WidgetPageTitlesFollowingSearch": "Site Aramasını Takip Eden Sayfa Başlıkları",
- "WidgetPageUrlsFollowingSearch": "Site Aramasını Takip eden Sayfalar",
+ "WidgetPageTitlesFollowingSearch": "Site Aramasını İzleyen Sayfa Başlıkları",
+ "WidgetPageUrlsFollowingSearch": "Site Aramasını İzleyen Sayfalar",
"WidgetSearchCategories": "Arama Kategorileri",
- "WidgetSearchKeywords": "Arama Kelimeleri",
- "WidgetSearchNoResultKeywords": "Sonuç dönmeyen Arama Kelimeleri",
- "ActionType": "Aksiyon Tipi"
+ "WidgetSearchKeywords": "Site Arama Anahtar Sözcükleri",
+ "WidgetSearchNoResultKeywords": "Sonuç Vermeyen Arama Anahtar Sözcükleri",
+ "ActionType": "Eylem Türü"
}
} \ No newline at end of file
diff --git a/plugins/Actions/lang/uk.json b/plugins/Actions/lang/uk.json
index 9dcb09dc63..e33457c73b 100644
--- a/plugins/Actions/lang/uk.json
+++ b/plugins/Actions/lang/uk.json
@@ -1,14 +1,67 @@
{
"Actions": {
- "ColumnClickedURL": "URL по якому клацнули",
- "ColumnClicks": "Клацання",
- "ColumnDownloadURL": "URL завантаження",
- "ColumnPageName": "Назва сторінки",
- "ColumnPageURL": "URL сторінки",
- "ColumnUniqueClicks": "Унікальні клацання",
+ "AvgGenerationTimeTooltip": "В середньому по %1$s хіт (ів) %2$s між %3$s і %4$s",
+ "ColumnClickedURL": "URL кліків",
+ "ColumnActionURL": "URL дій",
+ "ColumnClicks": "Кліків",
+ "ColumnClicksDocumentation": "Кількість кліків по цьому посиланню.",
+ "ColumnDownloadURL": "Посилання для завантаження",
+ "ColumnEntryPageTitle": "Заголовок початкової сторінки",
+ "ColumnEntryPageURL": "URL початкової сторінки",
+ "ColumnExitPageTitle": "заголовок сторінки виходу",
+ "ColumnExitPageURL": "URL сторінки виходу",
+ "ColumnNoResultKeyword": "Ключове слово без результатів в пошуку",
+ "ColumnPageName": "Заголовок сторінки",
+ "ColumnPagesPerSearch": "Сторінки результатів пошуку",
+ "ColumnPagesPerSearchDocumentation": "Відвідувачі будуть користуватися пошуком на вашому сайті і іноді натискати \"next\" (наступна сторінка), щоб переглянути більше результатів. Це середнє число сторінок з результатами пошуку для цього ключового слова.",
+ "ColumnPageURL": "URL сторінок",
+ "ColumnSearchCategory": "Шукати категорію",
+ "ColumnSearches": "Пошуки",
+ "ColumnSearchesDocumentation": "Число відвідувань, коли відвідувач шукав саме це ключове слово через пошук на сайті.",
+ "ColumnSearchExits": "% виходів з пошуку",
+ "ColumnSearchExitsDocumentation": "Відсоток відвідувань, коли відвідувач пішов з сайту після пошуку на вашому сайті саме цього ключового слова.",
+ "ColumnSearchResultsCount": "Лічильник результатів",
+ "ColumnSiteSearchKeywords": "Унікальні ключові слова",
+ "ColumnUniqueClicks": "Унікальні кліки",
+ "ColumnUniqueClicksDocumentation": "Кількість відвідувань, коли було відкрито це посилання. Якщо посилання була відкрито кілька разів протягом одного і того ж відвідування, це враховується лише раз.",
"ColumnUniqueDownloads": "Унікальні завантаження",
+ "ColumnUniqueOutlinks": "Унікальні вихідні посилання",
+ "DownloadsReportDocumentation": "У цьому звіті ви можете бачити файли, які завантажували ваші відвідувачі. %s За завантаження вважається клік на відповідне посилання. Однак чи закінчив відвідувач завантаження залишається невідомим. За завантаження вважається також відкриття картинок і інших розширень файлів.",
+ "EntryPagesReportDocumentation": "Цей звіт містить інформацію про сторінки входу за певний період. Вхідна сторінка – це перша сторінка сайту, яку користувач переглядає за відвідування. %s Вхідні посилання відображаються в папочном вигляді.",
+ "EntryPageTitles": "Заголовки сторінок входу",
+ "EntryPageTitlesReportDocumentation": "Цей звіт містить інформацію про заголовки вхідних сторінок, на які потрапляли відвідувачі в конкретний період.",
+ "ExitPagesReportDocumentation": "Цей звіт містить інформацію про сторінки виходу за певний період. Сторінка виходу – це остання сторінка сайту, на якій побував відвідувач. %s Посилання цих сторінок відображаються у вигляді дерева.",
+ "ExitPageTitles": "Заголовки сторінок виходу",
+ "ExitPageTitlesReportDocumentation": "Цей звіт містить інформацію про заголовки вихідних сторінок, з яких відвідувач пішов з сайту в конкретний період.",
+ "LearnMoreAboutSiteSearchLink": "Дізнайтеся більше про відстеження використання пошуку на вашому сайті.",
+ "OneSearch": "1 пошук",
+ "OutlinkDocumentation": "Вихідне посилання – посилання, яка виводить відвідувача з вашого сайту (на інший домен).",
+ "OutlinksReportDocumentation": "Цей звіт показує ієрархічний список вихідних посилань, на які користувач натиснув.",
+ "PagesReportDocumentation": "Цей звіт містить інформацію про адреси сторінок, на яких побували відвідувачі вашого сайту. %s Таблицю організовано ієрархічно – URL-и відображаються тековою структурою.",
+ "PageTitlesReportDocumentation": "Цей звіт містить інформацію про заголовки відвіданих сторінок. %1$s Заголовок сторінки це HTML-тег %2$s, який браузери відображають в заголовку вікна (вкладки).",
+ "PageUrls": "URL-и сторінок",
+ "PluginDescription": "Звіти про перегляди і заголовки сторінок. Дозволяють оцінити внутрішню пошукову систему сайту. Автоматично відстежує кліки по зовнішніх посиланнях і скачуванню файлів.",
+ "SiteSearchCategories1": "Цей звіт показує список категорій, які вибрали відвідувачі при пошуку на вашому сайті.",
+ "SiteSearchCategories2": "Наприклад, сайти електронної комерції зазвичай мають вибір «Категорій», щоб відвідувачам було зручно їх сортувати і шукати.",
+ "SiteSearchFollowingPagesDoc": "Коли відвідувачі шукають щось на вашому сайті, вони хочуть знайти певну сторінку, контент, продукт або послугу. Цей звіт відображає сторінки, за якими відвідувачі клацають найбільш часто при пошуку. Іншими словами, це список сторінок, які шукаються найчастіше на вашому сайті.",
+ "SiteSearchIntro": "Відстеження пошуку на вашому сайті – ефективний спосіб дізнатися, чим саме цікавиться ваша аудиторія. Це може допомогти знайти ідеї для нового контенту, нових продуктів і поліпшити взаємодію відвідувачів з вашим сайту в цілому.",
+ "SiteSearchKeyword": "Ключове слово (пошук по сайту)",
+ "SiteSearchKeywordsDocumentation": "Ці звіт показує список ключових слів, які відвідувачі шукали на вашому сайті через ваш пошук.",
+ "SiteSearchKeywordsNoResultDocumentation": "Цей звіт відображає список ключових слів, за якими не було нічого знайдено на вашому сайті: можливо, варто поліпшити пошуковий алгоритм на вашому сайті або відвідувачі шукають те, чого на вашому сайті немає?",
"SubmenuPagesEntry": "Сторінки входу",
"SubmenuPagesExit": "Сторінки виходу",
- "SubmenuPageTitles": "Заголовки сторінок"
+ "SubmenuPageTitles": "Заголовки",
+ "SubmenuSitesearch": "Пошук по сайту",
+ "WidgetEntryPageTitles": "Заголовки сторінок входу",
+ "WidgetExitPageTitles": "Заголовки сторінки виходу",
+ "WidgetPagesEntry": "Сторінки входу",
+ "WidgetPagesExit": "Сторінки виходу",
+ "WidgetPageTitles": "Заголовки сторінок",
+ "WidgetPageTitlesFollowingSearch": "Заголовки сторінок, які знайшлися в пошуку",
+ "WidgetPageUrlsFollowingSearch": "Сторінки, які знайшлися в пошуку",
+ "WidgetSearchCategories": "Категорії пошуку",
+ "WidgetSearchKeywords": "Пошукові ключові слова сайту",
+ "WidgetSearchNoResultKeywords": "Пошукові ключові слова без результатів",
+ "ActionType": "Тип дії"
}
} \ No newline at end of file
diff --git a/plugins/Actions/lang/vi.json b/plugins/Actions/lang/vi.json
index d68aeeeed3..cfb9ca13ca 100644
--- a/plugins/Actions/lang/vi.json
+++ b/plugins/Actions/lang/vi.json
@@ -2,6 +2,7 @@
"Actions": {
"AvgGenerationTimeTooltip": "Trung bình dựa trên %1$s lần(s) %2$s giữa %3$s và %4$s",
"ColumnClickedURL": "URL đã truy cập",
+ "ColumnActionURL": "URL hành động",
"ColumnClicks": "Clicks",
"ColumnClicksDocumentation": "Số lần đường dẫn này đã được click",
"ColumnDownloadURL": "Đường dẫn tải về",
@@ -39,6 +40,7 @@
"PagesReportDocumentation": "Báo cáo này chứa thông tin về các URLs của trang đã được xem. %s Bảng này được tổ chức dưới dạng cây, Các URL được hiển thị dưới cấu trúc folder.",
"PageTitlesReportDocumentation": "Báo cáo này chứa thông tin về tiêu đề các trang đã được truy cập. %1$s Tiêu đề trang là thẻ HTML %2$s mà các trình duyệt hiển thị trên thanh tiêu đề của cửa sổ trình duyệt.",
"PageUrls": "Đường dẫn trang",
+ "PluginDescription": "Các báo cáo về lượt xem trang và tiêu đề trang. Cho phép bạn đo lường công cụ tìm kiếm của trang web nội bộ của bạn. Tự động theo dõi các lượt nhấp chuột vào liên kết bên ngoài và lượt tải về tập tin.",
"SiteSearchCategories1": "Báo cáo này liệt kê các hạng mục cho người truy cập lựa chọn khi họ thực hiện một tìm kiếm trên trang web của bạn",
"SiteSearchCategories2": "Ví dụ, một trang thương mại điện tử (e-commerce) thường có chức năng \"Lựa chọn Phân mục\" để khách truy cập giới hạn phạm vi tìm kiếm đối với các sản phẩm trong một phân mục quy định.",
"SiteSearchFollowingPagesDoc": "Khi khách tìm kiếm trên trang web của bạn, họ tìm kiếm một trang, nội dung, sản phẩm hoặc một dịch vụ cụ thể. Báo cáo này liệt kê các trang đã được click nhiều nhất sau khi thực hiện phép tìm kiếm (nội bộ). Nói cách khác, danh sách này chứa các trang được tìm kiếm nhiều nhất được thực hiện bởi khách trên trang web của bạn.",
@@ -59,6 +61,7 @@
"WidgetPageUrlsFollowingSearch": "Các trang ghé thăm sau trang tìm kiếm",
"WidgetSearchCategories": "Số danh mục tìm kiếm",
"WidgetSearchKeywords": "Số từ khóa trang tìm kiếm",
- "WidgetSearchNoResultKeywords": "Các từ khóa tìm kiếm không có kết quả"
+ "WidgetSearchNoResultKeywords": "Các từ khóa tìm kiếm không có kết quả",
+ "ActionType": "Loại hành động"
}
} \ No newline at end of file
diff --git a/plugins/Annotations/lang/de.json b/plugins/Annotations/lang/de.json
index a962c4de29..f3fd1e64e6 100644
--- a/plugins/Annotations/lang/de.json
+++ b/plugins/Annotations/lang/de.json
@@ -9,12 +9,12 @@
"ClickToStarOrUnstar": "Klicken Sie um die Markierung dieser Anmerkung zu setzen oder zu entfernen.",
"CreateNewAnnotation": "Neue Anmerkung anlegen...",
"EnterAnnotationText": "Geben Sie Ihre Notiz ein...",
- "HideAnnotationsFor": "Markierungen für %s verbergen...",
+ "HideAnnotationsFor": "Anmerkungen für %s verbergen...",
"IconDesc": "Notizen für diesen Zeitraum anzeigen.",
"IconDescHideNotes": "Notizen für diesen Zeitraum verbergen.",
- "InlineQuickHelp": "Sie können Markierungen erstellen um spezielle Ereignisse (wie einen Blog-Eintrag, oder eine Neugestaltung der Website) zu markieren, Stichtage für die Datenanalyse zu speichern oder einfach alles zu speichern was Ihnen wichtig erscheint.",
+ "InlineQuickHelp": "Sie können Anmerkungen erstellen um spezielle Ereignisse (wie einen Blog-Eintrag, oder eine Neugestaltung der Website) zu markieren, Stichtage für die Datenanalyse zu speichern oder einfach alles zu speichern was Ihnen wichtig erscheint.",
"LoginToAnnotate": "Sie müssen sich einloggen um eine Anmerkung hinzufügen zu können.",
- "NoAnnotations": "Für diesen Zeitraum sind keine Notizen vorhanden.",
+ "NoAnnotations": "Für diesen Zeitraum sind keine Anmerkungen vorhanden.",
"PluginDescription": "Erlaubt Ihnen Hinweise zu verschiedenen Tagen hinzuzufügen um Änderungen zu markieren die an der Website gemacht wurden, Analysen zu speichern die bezüglich Ihrer Daten gemacht wurden und um Ihre Gedanken mit Ihren Kollegen zu teilen. Durch das Hinzufügen von Hinweisen stellen Sie sicher, dass Sie sich daran erinnern warum die Daten so sind wie sie sind.",
"ViewAndAddAnnotations": "Anmerkungen zu %s ansehen und hinzufügen...",
"YouCannotModifyThisNote": "Sie können diese Anmerkung nicht ändern, da Sie sie weder erstellt haben noch administrativen Zugang für diese Seite besitzen."
diff --git a/plugins/Annotations/lang/tr.json b/plugins/Annotations/lang/tr.json
index dc3ba67ba7..9c29b5e23b 100644
--- a/plugins/Annotations/lang/tr.json
+++ b/plugins/Annotations/lang/tr.json
@@ -1,20 +1,20 @@
{
"Annotations": {
- "AddAnnotationsFor": "%s için not ekle",
+ "AddAnnotationsFor": "%s için notlar ekle...",
"AnnotationOnDate": "%1$s için not: %2$s",
"Annotations": "Notlar",
- "ClickToDelete": "Bu notu silmek için tıklayınız.",
- "ClickToEdit": "Bu notu düzenlemek için tıklayınız.",
- "ClickToEditOrAdd": "Yorum eklemek veya düzenlemek icin buraya tıklayın",
- "ClickToStarOrUnstar": "Bu not işaretlemek veya işaretlemeyi kaldırmak için tıklayın",
- "CreateNewAnnotation": "Yeni not ekle...",
- "EnterAnnotationText": "Notunuzu giriniz...",
+ "ClickToDelete": "Bu notu silmek için tıklayın.",
+ "ClickToEdit": "Bu notu düzenlemek için tıklayın.",
+ "ClickToEditOrAdd": "Not eklemek ya da düzenlemek icin buraya tıklayın.",
+ "ClickToStarOrUnstar": "Bu nota işaret koymak ya da kaldırmak için tıklayın.",
+ "CreateNewAnnotation": "Not ekle...",
+ "EnterAnnotationText": "Notunuzu yazın...",
"HideAnnotationsFor": "%s için notları gizle...",
- "IconDesc": "Bu tarih aralığı için notları göster",
- "IconDescHideNotes": "Bu tarih aralığı için notları gizle",
- "InlineQuickHelp": "Önemli olduğunu düşündüğünüz yada veri analizleriniz için özel anonslar oluşturabilirsiniz (yeni yazılar yada site yenilenmesi gibi)",
- "LoginToAnnotate": "Not eklemek için giriş yapmalısınız.",
- "NoAnnotations": "Bu tarih aralığı için not yok.",
+ "IconDesc": "Bu tarih aralığındaki notları görüntüle.",
+ "IconDescHideNotes": "Bu tarih aralığındaki notları gizle",
+ "InlineQuickHelp": "Önemli etkinlikleri (yeni blog iletileri ya da web sitesi tasarım değişiklikleri gibi), veri incelemelerinizi ya da önemli olduğunu düşündüğünüz konuları kaydetmek için notlar oluşturabilirsiniz.",
+ "LoginToAnnotate": "Not eklemek için oturum açın.",
+ "NoAnnotations": "Bu tarih aralığında bir not yok.",
"PluginDescription": "Websiteniz de yaptığınız değişiklikleri farklı günlerde belirtmek için not eklemeye izin verir, veriniz ile ilgili analizleri saklar ve bunları meslektaşlarınız ile birlikte paylaşmanıza izn verir. Neden o veriye baktığınızı hatırlamanızdan emin olmak için veriye dipnot koyar.",
"ViewAndAddAnnotations": "%s için notları göster ve yeni not ekle...",
"YouCannotModifyThisNote": "Bunu değiştiremezsiniz. Bunun için bu siteye yönetici erişiminiz olması gerekli."
diff --git a/plugins/Annotations/lang/uk.json b/plugins/Annotations/lang/uk.json
new file mode 100644
index 0000000000..5a6c97a553
--- /dev/null
+++ b/plugins/Annotations/lang/uk.json
@@ -0,0 +1,22 @@
+{
+ "Annotations": {
+ "AddAnnotationsFor": "Додати замітки для %s...",
+ "AnnotationOnDate": "Замітка на %1$s: %2$s",
+ "Annotations": "Замітки",
+ "ClickToDelete": "Видалити цю замітку.",
+ "ClickToEdit": "Редагувати замітку.",
+ "ClickToEditOrAdd": "Змінити або додати нові замітки.",
+ "ClickToStarOrUnstar": "Поставити або зняти позначку.",
+ "CreateNewAnnotation": "Створити замітку",
+ "EnterAnnotationText": "Введіть свою замітку",
+ "HideAnnotationsFor": "Приховати замітки для %s...",
+ "IconDesc": "Переглянути нотатки для даного діапазону дат.",
+ "IconDescHideNotes": "Приховати замітки для даного діапазону дат.",
+ "InlineQuickHelp": "Ви можете створювати нотатки для того, щоб відзначати важливі події в історії вашого сайту (такі як новий пост в блозі або редизайн).",
+ "LoginToAnnotate": "Увійдіть для створення заміток.",
+ "NoAnnotations": "Ні заміток в даному діапазоні дат.",
+ "PluginDescription": "Дозволяє прикріпити замітки до різних днів, щоб відзначити зміни, внесені в ваш сайт. Створюючи замітки, ви будете знати, чому відвідування змінилися саме так.",
+ "ViewAndAddAnnotations": "Переглянути та додати замітки для %s...",
+ "YouCannotModifyThisNote": "Ви не можете змінити цю замітку, так як ви не є її автором. Також у вас немає прав адміністратора."
+ }
+} \ No newline at end of file
diff --git a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
index e514745ddb..c595a278c6 100644
--- a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
+++ b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
@@ -13,7 +13,7 @@ use Exception;
class Response extends \Piwik\Plugins\BulkTracking\Tracker\Response
{
- protected function logExceptionToErrorLog(Exception $e)
+ protected function logExceptionToErrorLog($e)
{
// prevent from writing to console in tests
}
diff --git a/plugins/BulkTracking/tests/Unit/ResponseTest.php b/plugins/BulkTracking/tests/Unit/ResponseTest.php
index 38c3c0cce1..91dbfc2079 100644
--- a/plugins/BulkTracking/tests/Unit/ResponseTest.php
+++ b/plugins/BulkTracking/tests/Unit/ResponseTest.php
@@ -15,7 +15,7 @@ use Exception;
class TestResponse extends Response {
- protected function logExceptionToErrorLog(Exception $e)
+ protected function logExceptionToErrorLog($e)
{
// prevent console from outputting the error_log message
}
diff --git a/plugins/Contents/lang/da.json b/plugins/Contents/lang/da.json
index aaef05b252..2644ffcc27 100644
--- a/plugins/Contents/lang/da.json
+++ b/plugins/Contents/lang/da.json
@@ -1,5 +1,6 @@
{
"Contents": {
+ "PluginDescription": "Indhold og banner sporing gør dig i stand til at måle effektiviteten (besøg, klik, CTR) af ethvert indhold på dine sider (bannerreklamer, billeder, hvad som helst).",
"Impressions": "Indtryk",
"Interactions": "Interaktioner",
"Interaction": "Interaktion",
@@ -7,6 +8,9 @@
"ContentName": "Indholdsnavn",
"ContentPiece": "Indholdsstykke",
"ContentTarget": "Indholdsmål",
- "Contents": "Indhold"
+ "Contents": "Indhold",
+ "InteractionsMetricDocumentation": "Antal gange der er blevet interageret på et indhold (f.eks. et klik på et banner eller en reklame).",
+ "ImpressionsMetricDocumentation": "Antal gange et indhold, som f.eks. et banner eller en reklame er vist på en side.",
+ "InteractionRateMetricDocumentation": "Forholdet mellem indholdsvisninger til interaktioner."
}
} \ No newline at end of file
diff --git a/plugins/Contents/lang/nl.json b/plugins/Contents/lang/nl.json
index 77a8001874..4fd4c3a882 100644
--- a/plugins/Contents/lang/nl.json
+++ b/plugins/Contents/lang/nl.json
@@ -1,13 +1,16 @@
{
"Contents": {
- "PluginDescription": "Met content en banner tracking meet je de prestaties (bezoeken, kliks, CTR) van elk stuk content op je website pagina (Banner ad, plaatje)",
- "Impressions": "Impressies",
+ "PluginDescription": "Met content- en bannertracking meet je de prestaties (bezoeken, kliks, ctr) van elk stukje content op je webpagina (banner, tekstadvertentie, plaatje).",
+ "Impressions": "Vertoningen",
"Interactions": "Interacties",
"Interaction": "Interactie",
- "InteractionRate": "Interactie aantal",
+ "InteractionRate": "Aantal interacties",
"ContentName": "Content naam",
- "ContentPiece": "Content onderdeel",
- "ContentTarget": "Content doel",
- "Contents": "Inhoudsopgave"
+ "ContentPiece": "Contentonderdeel",
+ "ContentTarget": "Contentdoel",
+ "Contents": "Contentbronnen",
+ "InteractionsMetricDocumentation": "Het aantal keer dat er interactie was met een contentbron (bijvoorbeeld een klik op een banner of advertentie).",
+ "ImpressionsMetricDocumentation": "Het aantal keer dat een contentbron, zoals een banner of een advertentie, was getoond op een pagina.",
+ "InteractionRateMetricDocumentation": "De verhouding tussen vertoningen en kliks."
}
} \ No newline at end of file
diff --git a/plugins/Contents/lang/sq.json b/plugins/Contents/lang/sq.json
index 42cdafe8c3..6c63ba16a0 100644
--- a/plugins/Contents/lang/sq.json
+++ b/plugins/Contents/lang/sq.json
@@ -8,6 +8,8 @@
"ContentName": "Emër Lënde",
"ContentPiece": "Copëz Lënde",
"ContentTarget": "Lëndë e Synuar",
- "Contents": "Lëndë"
+ "Contents": "Lëndë",
+ "InteractionsMetricDocumentation": "Numri i herëve që për një bllok lënde ka patur ndërveprime (p.sh., një 'klikim' mbi një banderolë apo reklamë).",
+ "ImpressionsMetricDocumentation": "Numri i herëve që një bllok lënde, i tillë si banderolë apo reklamë, është shfaqur në një faqe."
}
} \ No newline at end of file
diff --git a/plugins/Contents/lang/sv.json b/plugins/Contents/lang/sv.json
index b17e6fb890..889fe3ef12 100644
--- a/plugins/Contents/lang/sv.json
+++ b/plugins/Contents/lang/sv.json
@@ -8,6 +8,9 @@
"ContentName": "Namn på innehåll",
"ContentPiece": "Innehållsdel",
"ContentTarget": "Innehållsmål",
- "Contents": "Innehåll"
+ "Contents": "Innehåll",
+ "InteractionsMetricDocumentation": "Antalet gånger ett innehållsblock har interagerats med (t.ex. ett \"klick\" på en banner eller annons).",
+ "ImpressionsMetricDocumentation": "Antalet gånger ett innehållsblock såsom en banner eller en annons har visats på en sida.",
+ "InteractionRateMetricDocumentation": "Förhållandet mellan innehållsvisningar och interaktioner."
}
} \ No newline at end of file
diff --git a/plugins/Contents/lang/tr.json b/plugins/Contents/lang/tr.json
index 6549aa9b32..06428bc52b 100644
--- a/plugins/Contents/lang/tr.json
+++ b/plugins/Contents/lang/tr.json
@@ -1,16 +1,16 @@
{
"Contents": {
- "PluginDescription": "İçerik ve reklam izleme sayfandaki herhangi bir içeriğin (reklam, resim, herhangi bir öğenin) yerinin performansını (görünme, tıklamalar, CTR) izlemene yarar.",
- "Impressions": "Gösterimler",
- "Interactions": "Etkileşimler",
+ "PluginDescription": "İçerik ve reklam izleme, sayfalarınızdaki herhangi bir içeriğin (reklam, görsel, herhangi bir öge) başarımının (görülme, tıklanma, CTR) izlenmesini sağlar.",
+ "Impressions": "Görülme",
+ "Interactions": "Etkileşim",
"Interaction": "Etkileşim",
"InteractionRate": "Etkileşim Oranı",
- "ContentName": "İçerik İsmi",
+ "ContentName": "İçerik Adı",
"ContentPiece": "İçerik Parçası",
"ContentTarget": "İçerik Hedefi",
"Contents": "İçerikler",
- "InteractionsMetricDocumentation": "İçeriğin kaç kere engellendiği (banner veya reklamdaki 'click' ler gibi)",
- "ImpressionsMetricDocumentation": "Banner ve reklamlar gibi içeriklerin kaç kere gösterildiği",
- "InteractionRateMetricDocumentation": "İçeriğin gösterimi ile etkileşim oranı"
+ "InteractionsMetricDocumentation": "İçerik bloğu ile kaç kere etkileşime geçildiği (afiş ya da reklama 'tıklanma' gibi).",
+ "ImpressionsMetricDocumentation": "Afiş ya da reklam gibi bir içerik bloğunun bir sayfada kaç kere görüntülendiği .",
+ "InteractionRateMetricDocumentation": "İçeriğin görüntülenmesi ile etkileşime geçilme oranı."
}
} \ No newline at end of file
diff --git a/plugins/Contents/lang/uk.json b/plugins/Contents/lang/uk.json
new file mode 100644
index 0000000000..3398c327e0
--- /dev/null
+++ b/plugins/Contents/lang/uk.json
@@ -0,0 +1,16 @@
+{
+ "Contents": {
+ "PluginDescription": "Відстеження контенту і банерів дозволяє вам вимірювати ефективність (перегляди, кліки, CTR) в будь-якій частині контенту на ваших сторінках (рекламний банер, зображення, будь-який елемент).",
+ "Impressions": "Покази",
+ "Interactions": "Взаємодія",
+ "Interaction": "Взаємодія",
+ "InteractionRate": "Коефіцієнт взаємодії",
+ "ContentName": "Назва публікації",
+ "ContentPiece": "Частина публікації",
+ "ContentTarget": "Ціль публікації",
+ "Contents": "Публікації",
+ "InteractionsMetricDocumentation": "Скільки разів з блоком контенту відбувалося взаємодія (наприклад, 'клік' по банеру або рекламі).",
+ "ImpressionsMetricDocumentation": "Скільки разів блок контенту, такий як банер або реклама, був показаний на сторінці.",
+ "InteractionRateMetricDocumentation": "Співвідношення подання контенту і взаємодій."
+ }
+} \ No newline at end of file
diff --git a/plugins/CoreAdminHome/lang/ar.json b/plugins/CoreAdminHome/lang/ar.json
index 7177c24bfa..88382dfa4e 100644
--- a/plugins/CoreAdminHome/lang/ar.json
+++ b/plugins/CoreAdminHome/lang/ar.json
@@ -37,6 +37,7 @@
"OptOutExplanationBis": "سيقوم هذا الكود بعرض iFrame يحتوي رابطاً لزوارك لإلغاء اشتراكهم في Piwik من خلال ضبط كوكيز في متصفحهم. %1$s انقر هنا %2$s لمشاهدة المحتويات التي سيتم عرضها في النافذة الفرعية iFrame.",
"OptOutForYourVisitors": "إلغاء الاشتراك في Piwik لزوارك",
"PiwikIsInstalledAt": "بايويك مثبت في المسار",
+ "SendPluginUpdateCommunication": "أرسل بريداً عند توفر تحديث للإضافة",
"TrackAGoal": "تتبع هدف",
"TrackingCode": "كود التتبع",
"TrustedHostConfirm": "هل ترغب حقاً في تغيير اسم المُضيف الموثوق لدى بايويك؟",
diff --git a/plugins/CoreAdminHome/lang/da.json b/plugins/CoreAdminHome/lang/da.json
index 21619f6dc1..3102fccccc 100644
--- a/plugins/CoreAdminHome/lang/da.json
+++ b/plugins/CoreAdminHome/lang/da.json
@@ -1,8 +1,10 @@
{
"CoreAdminHome": {
+ "AddNewTrustedHost": "Tilføj en ny betroet host",
"Administration": "Administration",
"ArchivingSettings": "Arkivering indstillinger",
"BrandingSettings": "Branding indstillinger",
+ "ReleaseChannel": "Frigiv kanal",
"ClickHereToOptIn": "Klik her for at vælge.",
"ClickHereToOptOut": "Klik her for at fravælge.",
"CustomLogoFeedbackInfo": "Hvis du tilpasser Piwik logoet, kan du også være interesseret i at skjule %1$s linket i topmenuen. For at gøre dette, kan du deaktivere tilbagemeldingsmodulet på %2$sUdvidelsesmodul administration%3$s siden.",
@@ -22,6 +24,7 @@
"JavaScriptTracking": "Sporing med JavaScript",
"JSTracking_CampaignKwdParam": "Kampagne nøgleord parameter",
"JSTracking_CampaignNameParam": "Kampagnenavn parameter",
+ "JSTracking_CodeNoteBeforeClosingHead": "Sørg for, at denne kode er på alle side på dit website. Vi anbefaler at indsætte koden lige før det afsluttende %1$s tag.",
"JSTracking_CustomCampaignQueryParam": "Brug brugerdefineret forespørgsel parameternavne for kampagnenavnet & søgeord",
"JSTracking_CustomCampaignQueryParamDesc": "Note: %1$sPiwik registrerer automatisk Google Analytics parametre.%2$s",
"JSTracking_DisableCookies": "Deaktivere alle sporingscookies",
@@ -46,6 +49,7 @@
"JSTrackingIntro5": "Hvis du vil gøre mere end at spore sidevisninger, kan du checke %1$sPiwik Javascript sporingsdokumentation%2$s for listen over tilgængelige funktioner. Ved hjælp af disse funktioner kan du spore mål, brugerdefinerede variabler, e-handels ordrer, afbrudte ordrer og meget mere.",
"LogoNotWriteableInstruction": "Hvis du vil bruge din brugerdefinerede logo i stedet for standard Piwik logoet, giver skriverettigheder til denne mappe: %1$s Piwik brug skriveadgang til dine logoer gemt i filer %2$s.",
"FileUploadDisabled": "Overførelse af filer er ikke aktiveret i PHP-konfiguration. For at overføre dit brugerdefinerede logo skal du indstille %s i php.ini og genstarte webserveren.",
+ "LogoUploadFailed": "Den uploadede fil kunne ikke behandles. Kontroller at filen har et gyldigt format.",
"LogoUpload": "Vælg et logo til overførelse",
"FaviconUpload": "Vælg Favicon til overførelse",
"LogoUploadHelp": "Overfør en fil i %1$s formater med en højde på mindst %2$s pixels.",
@@ -67,8 +71,10 @@
"PluginSettingsIntro": "Her kan du ændre indstillingerne for følgende 3. parts udvidelsesmoduler:",
"PluginSettingsValueNotAllowed": "Værdien for feltet \"%1$s\" i udvidelsen \"%2$s\" er ikke tilladt",
"PluginSettingsSaveFailed": "Kunne ikke gemme udvidelsesmodul indstillinger",
+ "SendPluginUpdateCommunication": "Send en e-mail når der er en opdatering til et plugin",
"SendPluginUpdateCommunicationHelp": "En e-mail vil blive sendt til Superbrugere, når der er en ny version tilgængelig for denne programudvidelse.",
"StableReleases": "Hvis Piwik er en kritisk del af virksomheden, anbefaler vi at man bruger den nyeste stabile udgave. Hvis man bruger den nyeste beta, og finder en fejl eller har et forslag, %1$sse her%2$s.",
+ "LtsReleases": "LTS (Long Term Support) versioner modtager kun sikkerheds- og fejlrettelser.",
"SystemPluginSettings": "Indstillinger for system udvidelsesmoduler",
"TrackAGoal": "Spor et mål",
"TrackingCode": "Sporingskode",
@@ -81,6 +87,9 @@
"YouAreOptedIn": "Du er i øjeblikket tilmeldt.",
"YouAreOptedOut": "Du har i øjeblikket frameldt.",
"YouMayOptOut": "Du kan vælge ikke at have en unik web analyse cookie identifikationsnummer tildelt til computeren for at undgå aggregering og analyse af data indsamlet på denne hjemmesider.",
- "YouMayOptOutBis": "Vælg muligheden, klik nedenfor for at modtage en opt out-cookie."
+ "YouMayOptOutBis": "Vælg muligheden, klik nedenfor for at modtage en opt out-cookie.",
+ "OptingYouOut": "Vælger dig fra, vent venligst.....",
+ "ProtocolNotDetectedCorrectly": "Du ser Piwik over a sikker SSL forbindelse (med https) men Piwik kan kun finde en usikker forbindelse på serveren.",
+ "ProtocolNotDetectedCorrectlySolution": "For at sikre at Piwik behandler anmodninger og dit indhold over HTTPS, skal du måske redigere din %1$s fil og enten konfigurere dine proxy indstillinger, eller du kan tilføje linjen %2$s under sektionen %3$s. %4$sLæs mere%5$s"
}
} \ No newline at end of file
diff --git a/plugins/CoreAdminHome/lang/de.json b/plugins/CoreAdminHome/lang/de.json
index ac9cac47d6..ea85f65019 100644
--- a/plugins/CoreAdminHome/lang/de.json
+++ b/plugins/CoreAdminHome/lang/de.json
@@ -24,6 +24,7 @@
"JavaScriptTracking": "Tracking mit JavaScript",
"JSTracking_CampaignKwdParam": "Kampagnen Suchbegriff Parameter",
"JSTracking_CampaignNameParam": "Parameter für Kampagnenname",
+ "JSTracking_CodeNoteBeforeClosingHead": "Stellen Sie sicher, dass sich dieser Code auf jeder Seite Ihrer Webseite befindet. Wir empfehlen, ihn direkt vor dem schliessenden %1$s Tag zu positionieren.",
"JSTracking_CustomCampaignQueryParam": "Eigene Anfrage-Parameter für Kampagnen Name & Suchbegriff verwenden",
"JSTracking_CustomCampaignQueryParamDesc": "Hinweis: %1$sPiwik erkennt Parameter von Google Analytics automatisch.%2$s",
"JSTracking_DisableCookies": "Alle Tracking Cookies deaktivieren",
diff --git a/plugins/CoreAdminHome/lang/es.json b/plugins/CoreAdminHome/lang/es.json
index 70e8a505db..9ff7c4b667 100644
--- a/plugins/CoreAdminHome/lang/es.json
+++ b/plugins/CoreAdminHome/lang/es.json
@@ -22,6 +22,7 @@
"JavaScriptTracking": "Seguimiento con JavaScript",
"JSTracking_CampaignKwdParam": "Parámetro palabra clave de la campaña",
"JSTracking_CampaignNameParam": "Parámetro Nombre de la campaña",
+ "JSTracking_CodeNoteBeforeClosingHead": "Asegúrese que éste código se encuentre en cada página de su sitio web. Recomendamos copiarlo inmediatamente antes de cerrar la etiqueta %1$s",
"JSTracking_CustomCampaignQueryParam": "Utiliza nombres de parámetros de consulta personalizados para el nombre de la campaña y la palabra clave",
"JSTracking_CustomCampaignQueryParamDesc": "Nota: %1$sPiwik detectará automáticamente los parámetros de Google Analytics.%2$s",
"JSTracking_DisableCookies": "Desactivar todas las cookies de rastreo",
@@ -46,6 +47,7 @@
"JSTrackingIntro5": "Si desea hacer más que rastrear vistas de páginas, revise la %1$sDocumentación de Javascript de Piwik%2$s acerca de las funciones disponibles. Utilizando estas funciones puede rastrear objetivos, variables personalizadas, órdenes de comercio electrónico, carritos abandonados y más.",
"LogoNotWriteableInstruction": "Para utilizar su logo personalizado en lugar del logo estándar de Piwik puede conceder permisos de escritura a este directorio: %1$s Piwik necesita el permiso de escritura para sus logos guardados en los archivos %2$s.",
"FileUploadDisabled": "La carga de archivos no está habilitada en su configuración de PHP. Para cargar su logotipo personalizado, por favor ingrese %s en el php.ini y reinicie su servidor de internet.",
+ "LogoUploadFailed": "El fichero no ha podido subirse de forma correcta. Por favor, comprueba si el fichero tiene un formato correcto.",
"LogoUpload": "Seleccione un logo para subir",
"FaviconUpload": "Selecciona un Favicon para subir",
"LogoUploadHelp": "Sube un archivo en formato %1$s con una altura mínima de %2$s píxeles.",
@@ -70,6 +72,7 @@
"SendPluginUpdateCommunication": "Envíe un correo electrónico cuando la actualización del complemento esté disponible",
"SendPluginUpdateCommunicationHelp": "Se enviará un correo electrónico a los Super Usuarios cuando haya disponible una nueva versión de un complemento.",
"StableReleases": "Si Piwik es una parte crítica de su negocio, le recomendamos que utilice la última versión estable. Si usa la última versión beta y encuentra un error o tiene alguna sugerencia, por favor %1$sver aquí%2$s.",
+ "LtsReleases": "Las versiones LTS (Soporte de larga duración) reciben solo correcciones de seguridad y errores.",
"SystemPluginSettings": "Ajustes de complemento del sistema",
"TrackAGoal": "Seguimiento de un objetivo",
"TrackingCode": "Código de seguimiento",
@@ -83,6 +86,7 @@
"YouAreOptedOut": "Actualmente no hay optado.",
"YouMayOptOut": "Puede escojer no tener un único número de identificación de la cookie de análisis de internet asignado a su ordenador para prevenir la agregación y el análisis de datos recogidos en este sitio de internet.",
"YouMayOptOutBis": "Para escoger esto, por favor haga clic debajo para recibir una cookie opt-out (para no ser seguido).",
- "OptingYouOut": "Opción a salir, por favor espere..."
+ "OptingYouOut": "Opción a salir, por favor espere...",
+ "ProtocolNotDetectedCorrectly": "Actualmente estás usando Piwik sobre una conexión SSL (usando HTTPs), pero Piwik solo puede detectar una conexión insegura en el servidor."
}
} \ No newline at end of file
diff --git a/plugins/CoreAdminHome/lang/fr.json b/plugins/CoreAdminHome/lang/fr.json
index 98bf55ee02..016168de64 100644
--- a/plugins/CoreAdminHome/lang/fr.json
+++ b/plugins/CoreAdminHome/lang/fr.json
@@ -24,6 +24,7 @@
"JavaScriptTracking": "Suivi par JavaScript",
"JSTracking_CampaignKwdParam": "Paramètre de la campagne de mot-clé",
"JSTracking_CampaignNameParam": "Paramètre nom de la campagne",
+ "JSTracking_CodeNoteBeforeClosingHead": "Vérifiez que ce code est présent sur l'ensemble des pages de votre site. Nous vous recommandons de le placer immédiatement avant la balise de fermeture %1$s.",
"JSTracking_CustomCampaignQueryParam": "Utilisez des paramètres de requête personnalisés pour le nom et le mot-clé de la campagne",
"JSTracking_CustomCampaignQueryParamDesc": "Note : %1$sPiwik détectera automatiquement les paramètres de Google Analytics.%2$s",
"JSTracking_DisableCookies": "Désactiver tous les cookies de suivi",
diff --git a/plugins/CoreAdminHome/lang/it.json b/plugins/CoreAdminHome/lang/it.json
index 3db3978f69..39f3c15d56 100644
--- a/plugins/CoreAdminHome/lang/it.json
+++ b/plugins/CoreAdminHome/lang/it.json
@@ -7,9 +7,9 @@
"ReleaseChannel": "Canale release",
"ClickHereToOptIn": "Clicca qui per accettare (opt-in).",
"ClickHereToOptOut": "Clicca qui per rifiutare (opt-out).",
- "CustomLogoFeedbackInfo": "Se si personalizza il logo Piwik, si potrebbe anche essere interessati a nascondere il link %1$s nel menu in alto. A tale scopo, è possibile disattivare il plugin Feedback nella pagina %2$sGestione Plugin%3$s.",
+ "CustomLogoFeedbackInfo": "Se si personalizza il logo Piwik, si potrebbe anche essere interessati a nascondere il link %1$s nel menu in alto. A tale scopo, è possibile disattivare il plugin Feedback nella pagina di %2$sGestione Plugin%3$s.",
"CustomLogoHelpText": "È possibile personalizzare il logo Piwik che verrà visualizzato nell'interfaccia utente e nei reports e-mail.",
- "DevelopmentProcess": "Poichè il nostro %1$sprocesso di sviluppo%2$s include migliaia di test automatizzati, i Beta Tester giocano un ruolo chiave nel raggiungimento in Piwik della \"Politica no bug\".",
+ "DevelopmentProcess": "Poiché il nostro %1$sprocesso di sviluppo%2$s include migliaia di test automatizzati, i Beta Tester giocano un ruolo chiave nel raggiungimento in Piwik della \"Politica no bug\".",
"EmailServerSettings": "Impostazioni server e-mail",
"ForBetaTestersOnly": "Solo per beta tester",
"ImageTracking": "Tracking Immagini",
@@ -24,7 +24,7 @@
"JavaScriptTracking": "Tracciamento JavaScript",
"JSTracking_CampaignKwdParam": "Parametro Keyword Campagna",
"JSTracking_CampaignNameParam": "Parametro Nome Campagna",
- "JSTracking_CodeNoteBeforeClosingHead": "Assicurati che questo codice sia presente su ogni pagina del tuo sito. Ti raccomandiamo di incollarlo subito prima del tag %1$s di chiusura.",
+ "JSTracking_CodeNoteBeforeClosingHead": "Assicurati che questo codice sia presente in ogni pagina del tuo sito. Ti raccomandiamo di incollarlo subito prima del tag %1$s di chiusura.",
"JSTracking_CustomCampaignQueryParam": "Utilizza i nomi dei parametri di query personalizzati per il nome della campagna e parola chiave",
"JSTracking_CustomCampaignQueryParamDesc": "Nota: %1$sPiwik rivelerà automaticamente i parametri di Google Analytics.%2$s",
"JSTracking_DisableCookies": "Disabilita tutti i cookies di tracking",
@@ -49,10 +49,10 @@
"JSTrackingIntro5": "Se volete fare altro oltre che tracciare le viste pagina, preghiamo di controllare la %1$sDocumentazione Piwik Javascript Tracking%2$s per l'elenco delle funzioni disponibili. Utilizzando queste funzioni potrete tracciare obiettivi, variabili personalizzate, ordini ecommerce, carrelli abbandonati e altro.",
"LogoNotWriteableInstruction": "Per utilizzare il tuo logo personalizzato al posto del logo di Piwik, da' i permessi di scrittura a questa directory: %1$s Piwik necessita dell'accesso in scrittura per i tuoi loghi conservati nei files %2$s.",
"FileUploadDisabled": "Il caricamento dei files non è abilitato nella configurazione del tuo PHP. Per caricare il tuo logo personalizzato devi impostare %s nel php.ini e riavviare il server.",
- "LogoUploadFailed": "E' stato impossibile leggere il file caricato. Assicurati che il file abbia un formato valido.",
+ "LogoUploadFailed": "È stato impossibile leggere il file caricato. Assicurati che esso abbia un formato valido.",
"LogoUpload": "Seleziona un logo da caricare",
"FaviconUpload": "Seleziona una Favicon da caricare",
- "LogoUploadHelp": "Caricate un file nei formati %1$s con un'altezza minima di %2$s pixels",
+ "LogoUploadHelp": "Caricate un file nei formati %1$s con un'altezza minima di %2$s pixel",
"MenuDiagnostic": "Diagnostica",
"MenuGeneralSettings": "Impostazioni generali",
"MenuManage": "Gestione",
@@ -61,7 +61,7 @@
"OptOutCompleteBis": "Nota che se cancelli i tuoi cookie, cancelli anche il cookie di opt-out, e se cambi computer o browser web, devi fare la procedura di opt-out nuovamente.",
"OptOutDntFound": "Non vieni tracciato poiché il tuo browser comunica che non lo desideri. Questa è un'impostazione del tuo browser, dunque non potrai effettuare l'opt-in finchè non disabiliti la funzionalità \"Non Tracciare\".",
"OptOutExplanation": "Piwik è impegnato ad assicurare la riservatezza su Internet. Per dare ai tuoi ospiti la possibilità di escludersi dalle Statistiche Web Piwik, è possibile aggiungere il seguente codice HTML in una pagina del tuo sito web, ad esempio in una pagina sulla privacy.",
- "OptOutExplanationBis": "Questo codice serve per mostrare un iFrame contenente un link per i tuoi visitatori per opt-out per le impostazioni di Piwik, tramite un opt-out cookie nei loro browser. %1$s Clicca qui%2$s per vedere il contenuto che sarà mostrato nell'iFrame.",
+ "OptOutExplanationBis": "Questo codice serve per visualizzare un iframe contenente un link, perché i tuoi visitatori possano effettuare un opt-out da Piwik mediante un apposito cookie nei loro browser. %1$sClicca qui%2$s per vedere il contenuto che sarà mostrato nell'iframe.",
"OptOutForYourVisitors": "Piwik opt-out per i tuoi visitatori",
"PiwikIsInstalledAt": "Piwik è installato su",
"PersonalPluginSettings": "Impostazioni Personali Plugin",
@@ -69,7 +69,7 @@
"PluginSettingReadNotAllowed": "Non sei abilitato a leggere il valore dell'impostazione \"%1$s\" nel plugin \"%2$s\"",
"PluginSettings": "Impostazioni plugin",
"PluginSettingsIntro": "Qui puoi cambiare le impostazioni dei seguenti plugin di terze parti:",
- "PluginSettingsValueNotAllowed": "Il valore del campo \"%1$s\" nel plugin \"%2$s\" non è consentito",
+ "PluginSettingsValueNotAllowed": "Il valore contenuto nel campo \"%1$s\" nel plugin \"%2$s\" non è consentito",
"PluginSettingsSaveFailed": "Salvataggio delle impostazioni del plugin fallito",
"SendPluginUpdateCommunication": "Manda un'email quando è disponibile l'aggiornamento di un plugin",
"SendPluginUpdateCommunicationHelp": "Verrà inviata una email ai Super User quando è disponibile una nuova versione di un plugin.",
@@ -90,6 +90,6 @@
"YouMayOptOutBis": "Per fare questa scelta, clicca qui di seguito per ricevere un cookie di opt-out.",
"OptingYouOut": "Sto acquisendo la tua rinuncia, attendi...",
"ProtocolNotDetectedCorrectly": "Al momento stai guardando Piwik tramite una connessione sicura SSL (uso di https) ma Piwik ha potuto rilevare sul server solo una connessione non protetta.",
- "ProtocolNotDetectedCorrectlySolution": "Per assicurarti che Piwik richieda e offra con sicurezza il tuo contenuto tramite HTTPS, puoi modificare il file %1$s e configurare le impostazioni del proxy, o puoi aggiungere la riga %2$s sotto la sezione %3$s. %4$sLeggi di più%5$s"
+ "ProtocolNotDetectedCorrectlySolution": "Per assicurarti che Piwik richieda e offra con sicurezza il tuo contenuto tramite HTTPS, puoi modificare il file %1$s e configurare le impostazioni del proxy, o puoi aggiungere la riga %2$s nella sezione %3$s. %4$sLeggi di più%5$s"
}
} \ No newline at end of file
diff --git a/plugins/CoreAdminHome/lang/ka.json b/plugins/CoreAdminHome/lang/ka.json
index 8e349f84f9..f7eaf8ee2e 100644
--- a/plugins/CoreAdminHome/lang/ka.json
+++ b/plugins/CoreAdminHome/lang/ka.json
@@ -6,7 +6,7 @@
"OptOutComplete": "უარი დაფიქსირდა; ამ საიტზე თქვენი ვიზიტები არ ჩაიწერება ვებ ანალიზატორის ინსტრუმენტით.",
"OptOutCompleteBis": "მიაქციეთ ყურადღება, რომ თუ თქვენ გაასუფთავებთ ქუქიებს, წაიშლება უარის ქუქი, ან თუ შეიცვლით კომპიუტერს ან ვებ ბრაუზერს უარის დაფიქსირების პროცედურა თავიდან უნდა განახორციელოთ.",
"OptOutExplanation": "Piwik გამიზნულია ინტერნეტში კონფიდენციალურობის დაცვისთვის. რათა თქვენს ვიზიტორებს ქონდეთ საშუალება უარი თქვან Piwik Web Analytics მონაწილეობაზე, თქვენ შეგიძლიათ შემდეგი HTML კოდი ჩაამატოთ თქვენი ვებ საიტის ერთ–ერთ გვერდზე, მაგალითად კონფიდენციალურობის გვერდზე.",
- "OptOutExplanationBis": "ტეგი აჩვენებს Iframe, რომელიც შეიცავს ბმულს თქვენი ვიზიტორებისთვის, რომელზე დაწკაპუნებითაც ისინი უარს იტყვიან Piwik–ზე მათ ბრაუზერში უარის ქუქის ჩამატებით. %s დააწკაპუნეთ აქ%s, რომ იხილოთ მასალა, რომელიც გამოჩნდება iFrame–ით.",
+ "OptOutExplanationBis": "ტეგი აჩვენებს Iframe, რომელიც შეიცავს ბმულს თქვენი ვიზიტორებისთვის, რომელზე დაწკაპუნებითაც ისინი უარს იტყვიან Piwik–ზე მათ ბრაუზერში უარის ქუქის ჩამატებით. %1$s დააწკაპუნეთ აქ%2$s, რომ იხილოთ მასალა, რომელიც გამოჩნდება iFrame–ით.",
"OptOutForYourVisitors": "თქვენი ვიზიტორების უარი Piwik–ზე",
"YouAreOptedIn": "ამჟამად თქვენ მონაწილეობთ ანალიზში",
"YouAreOptedOut": "ამჟამად თქვენ არ მონაწილეობთ ანალიზში",
diff --git a/plugins/CoreAdminHome/lang/nl.json b/plugins/CoreAdminHome/lang/nl.json
index 5814095c64..e12c716c73 100644
--- a/plugins/CoreAdminHome/lang/nl.json
+++ b/plugins/CoreAdminHome/lang/nl.json
@@ -2,8 +2,9 @@
"CoreAdminHome": {
"AddNewTrustedHost": "Voeg een nieuwe betrouwbare server toe",
"Administration": "Administratie",
- "ArchivingSettings": "Archivering instellingen",
- "BrandingSettings": "Logo instellingen",
+ "ArchivingSettings": "Archiveringsinstellingen",
+ "BrandingSettings": "Logo-instellingen",
+ "ReleaseChannel": "Versiekanaal",
"ClickHereToOptIn": "Klik hier om u aan te melden.",
"ClickHereToOptOut": "Klik hier om u af te melden.",
"CustomLogoFeedbackInfo": "Als u het Piwik logo bijwerkt, heeft u wellicht ook interesse om de %1$s link te verbergen in het menu bovenaan. Om dit te doen, kunt u de feedback plugin uitschakelen in de pagina van de %2$sManage Plugins%3$s.",
@@ -23,6 +24,7 @@
"JavaScriptTracking": "JavaScript Tracking",
"JSTracking_CampaignKwdParam": "Campagne sleutelwoord parameter",
"JSTracking_CampaignNameParam": "Campagna naam parameter",
+ "JSTracking_CodeNoteBeforeClosingHead": "Zorg dat deze code op elke pagina van uw website is geplaatst. We raden aan hem direct vóór de afsluitende %1$s tag te plakken.",
"JSTracking_CustomCampaignQueryParam": "Gebruik aangepaste query parameter namen voor de campagne naam & sleutelwoorden",
"JSTracking_CustomCampaignQueryParamDesc": "Opmerking: %1$s Piwik detecteert automatisch Google Analytics parameters.%2$s",
"JSTracking_DisableCookies": "Schakel alle tracking cookies uit",
@@ -47,6 +49,7 @@
"JSTrackingIntro5": "Indien je meer wilt bijhouden dan paginaweergaves, lees dan de %1$sPiwik Javascript Tracking documentatie%2$s voor de lijst van beschikbare functies. Via deze functies kun je doelen, eigen variabelen, ecommerce bestellingen, afgebroken bestellingen en meer.",
"LogoNotWriteableInstruction": "Om je eigen logo te gebruiken in plaats van het standaard Piwik logo, zijn er schrijf rechten nodig tot de volgende bestandmap: %1$s Piwik heeft schrijfrechten nodig voor de jouw logo's opgeslagen in de bestanden %2$s",
"FileUploadDisabled": "Het uploaden van documenten is niet geactiveerd in je PHP configuratie. Om een aangepast logo up te loaden pas %s aan in php.ini en herstart de webserver.",
+ "LogoUploadFailed": "Het geüploade bestand kon niet worden verwerkt. Controleer of het bestand een geldig bestandsformaat heeft.",
"LogoUpload": "Selecteer een logo om te uploaden",
"FaviconUpload": "Selecteer een favicon om up te loaden",
"LogoUploadHelp": "Upload een bestand in %1$s formaten met een minimum hoogte van %2$s pixels.",
diff --git a/plugins/CoreAdminHome/lang/sv.json b/plugins/CoreAdminHome/lang/sv.json
index 6cb5fc8127..9d70b5bfc4 100644
--- a/plugins/CoreAdminHome/lang/sv.json
+++ b/plugins/CoreAdminHome/lang/sv.json
@@ -89,6 +89,7 @@
"YouMayOptOut": "Du kan välja att inte ha ett unikt identifieringsnummer i en cookie tilldelad till din dator för att undvika analys av uppgifter som samlats in på denna webbplats.",
"YouMayOptOutBis": "För att göra det valet, vänligen klicka nedan för att lagra en cookie för exkludering.",
"OptingYouOut": "Undantar dig, vänligen vänta...",
- "ProtocolNotDetectedCorrectly": "Du använder just nu Piwik över en säker SSL-anslutning (via HTTPS), men Piwik kan bara upptäcka en osäker anslutning på servern."
+ "ProtocolNotDetectedCorrectly": "Du använder just nu Piwik över en säker SSL-anslutning (via HTTPS), men Piwik kan bara upptäcka en osäker anslutning på servern.",
+ "ProtocolNotDetectedCorrectlySolution": "För att säkerställa att Piwik gör förfrågningar och visar ditt innehållet säkert så görs detta över HTTPS, du kan ändra detta i filen %1$s och antingen konfigurera dina proxyinställningar eller lägga till raden %2$s nedanför sektionen %3$s. %4$sLäs mer%5$s"
}
} \ No newline at end of file
diff --git a/plugins/CoreAdminHome/lang/tr.json b/plugins/CoreAdminHome/lang/tr.json
index 69657dffcc..d811a2a762 100644
--- a/plugins/CoreAdminHome/lang/tr.json
+++ b/plugins/CoreAdminHome/lang/tr.json
@@ -1,9 +1,11 @@
{
"CoreAdminHome": {
- "Administration": "Yönetici",
+ "AddNewTrustedHost": "Güvenilir sunucu ekle",
+ "Administration": "Yönetim",
"ArchivingSettings": "Arşivleme ayarları",
- "BrandingSettings": "Marka ayarları",
- "ClickHereToOptIn": "İzin vermek için tıklayınız.",
+ "BrandingSettings": "Markalama ayarları",
+ "ReleaseChannel": "Dağıtım kanalı",
+ "ClickHereToOptIn": "İzin vermek için tıklayın.",
"ClickHereToOptOut": "İzni iptal etmek için tıklayınız.",
"CustomLogoFeedbackInfo": "Eğer Piwik logosunu değiştirdiyseniz, üst menüden %1$s bağlantısını da kaldırmak isteyebilirsiniz. Bunun için, %2$sManage Plugins%3$s sayfasından Geribildirim ( Feedback ) eklentisini iptal edebilirsiniz.",
"CustomLogoHelpText": "E-posta raporlarında ve kullanıcı arayüzünde kullanılacak olan Piwik logosunu değiştirebilirsiniz.",
@@ -55,7 +57,7 @@
"PluginSettingsSaveFailed": "Eklenti ayarları kaydedilemedi",
"SendPluginUpdateCommunication": "Eklenti güncellemesi olduğunda e-posta gönder",
"StableReleases": "Eğer Piwik işiniz için kritik bir parçaysa, son ve stabil olan versiyonu kullanmanızı öneririz. Eğer en son güncel betayı kullanıyorsanız ve bir hata bulur ya da öneriniz olursa, lütfen şuraya%1$s bakın%2$s.",
- "SystemPluginSettings": "Sistem Eklenti Ayarları",
+ "SystemPluginSettings": "Sistem Uygulama Eki Ayarları",
"TrackAGoal": "Bir hedef izleme",
"TrackingCode": "İzleme Kodu",
"TrustedHostConfirm": "Güvenilir alan adınızı değiştirmek istediğinizden emin misiniz?",
diff --git a/plugins/CoreAdminHome/lang/uk.json b/plugins/CoreAdminHome/lang/uk.json
index 63711249da..df0b5a552f 100644
--- a/plugins/CoreAdminHome/lang/uk.json
+++ b/plugins/CoreAdminHome/lang/uk.json
@@ -1,16 +1,95 @@
{
"CoreAdminHome": {
+ "AddNewTrustedHost": "Додати новий довірений хост",
"Administration": "Адміністрування",
- "EmailServerSettings": "Налаштування поштового сервера",
- "MenuGeneralSettings": "Загальні налаштування",
- "OptOutComplete": "Відмову прийнято; ваші заходи на цей сайт не буде записано в базу даних веб-аналітики.",
- "OptOutCompleteBis": "Зверніть увагу, що при очищенні всіх файлів cookie, видаленні конкретного файлу cookie чи зміни веб-переглядача необхідно буде знову пройти процедуру відмови.",
- "OptOutExplanation": "Piwik турбується про конфіденціальність в Інтернеті. Щоб надати вашим відвідувачам можливість відмовитися від включення інфомації про них до бази даних веб-аналітики Piwik, додайте наступний HTML код на одну з ваших сторінок - для прикладу на сторінку \"Політика конфіденційності\".",
+ "ArchivingSettings": "Налаштування архівації",
+ "BrandingSettings": "Налаштування логотипу",
+ "ReleaseChannel": "Канал випуску",
+ "ClickHereToOptIn": "Натисніть, щоб ви враховувалися в аналітиці.",
+ "ClickHereToOptOut": "Натисніть, щоб відмовитися від обліку вас в аналітиці.",
+ "CustomLogoFeedbackInfo": "Якщо ви іспользуйете свій логотип, вам, можливо, також знадобиться приховати посилання %1$s в верхньому меню. Для цього просто відключіть плагін Feedback (зворотний зв'язок) на сторінці %2$sУправління плагінами%3$s.",
+ "CustomLogoHelpText": "Ви можете додати свій логотип, який буде відображатися звітах.",
+ "DevelopmentProcess": "У той час як наш %1$sпроцес розробки%2$s включає в себе тисячі автоматизованих тестів, бета-тестери грають ключову роль в досягненні \"No bug policy\" в Piwik.",
+ "EmailServerSettings": "Налаштування серверу електронної пошти",
+ "ForBetaTestersOnly": "Тільки для бета-тестерів",
+ "ImageTracking": "Відстеження через зображення",
+ "ImageTrackingIntro1": "Коли відвідувач відключив JavaScript, або коли JavaScript не може бути використано, ви можете використовувати посилання на зображення для відстеження відвідувачів.",
+ "ImageTrackingIntro2": "Створіть посилання нижче і розмістіть згенерований на сторінках HTML. Якщо ви використовуєте це в якості запасного варіанту для відстеження без JavaScript, ви можете його оточити його в тег %1$s.",
+ "ImageTrackingIntro3": "Весь список опцій, які можна використовувати з зображенням-посиланням відстеження дивіться в %1$sTracking API Documentation%2$s.",
+ "ImageTrackingLink": "Посилання на зображення для відстеження",
+ "ImportingServerLogs": "Імпорт логів сервера",
+ "ImportingServerLogsDesc": "Альтернативою відстеження відвідувачів через браузер (замість JavaScript або посилання на зображення) є постійне імпортування логів сервера. дізнатися більше про %1$sServer Log File Analytics%2$s.",
+ "InvalidPluginsWarning": "Такий модуль не сумісні з %1$s і не можуть бути завантажені: %2$s.",
+ "InvalidPluginsYouCanUninstall": "Ви можете оновити або видалити ці плагіни на сторінці %1$sУправління плагінами%2$s.",
+ "JavaScriptTracking": "JavaScript-відстеження",
+ "JSTracking_CampaignKwdParam": "Параметр Ключового слова кампанії",
+ "JSTracking_CampaignNameParam": "Параметр Імені кампанії",
+ "JSTracking_CodeNoteBeforeClosingHead": "Переконайтеся, що цей код знаходиться на кожній сторінці вашого веб сайту. Ми рекомендуємо вставляти його відразу перед закриттям тега %1$s.",
+ "JSTracking_CustomCampaignQueryParam": "Використовувати для користувача імена параметрів в запиті для назви кампанії та ключового слова",
+ "JSTracking_CustomCampaignQueryParamDesc": "Примітка: %1$sPiwik автоматично визначить параметри Google Analytics.%2$s",
+ "JSTracking_DisableCookies": "Відключити всі відстеження cookies",
+ "JSTracking_DisableCookiesDesc": "відключення всіх first party cookies. існуючі cookies Piwik для цього веб-сайту будуть видалені при наступному перегляді сторінки.",
+ "JSTracking_EnableDoNotTrack": "Активувати виявлення DoNotTrack на стороні користувача.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Примітка: на стороні сервера підтримка DoNotTrack була увімкнена, так що ця опція не матиме ніякого ефекту.",
+ "JSTracking_EnableDoNotTrackDesc": "Користувач не буде відслідковуватися, якщо він цього не хоче.",
+ "JSTracking_GroupPageTitlesByDomain": "Підставляти домен сайту перед назвою сторінки при відстеженні",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Так що, якщо хтось відвідує сторінку 'Про нас' на піддомені blog.%1$s він буде записаний як 'blog \/ Про нас'. Це найпростіший спосіб отримати огляд вашого трафіку по піддоменах.",
+ "JSTracking_MergeAliases": "У звіті «Зовнішні посилання» приховати кліки відомих псевдонімів сайту",
+ "JSTracking_MergeAliasesDesc": "Переходи по посиланнях на псевдоніми домену (наприклад, %s) не враховуватимуться як «Зовнішні посилання».",
+ "JSTracking_MergeSubdomains": "Відстежувати відвідувачів через все піддомени сайту",
+ "JSTracking_MergeSubdomainsDesc": "Якщо один відвідувач заходив на %1$s і %2$s, то відвідування будуть враховуватися як унікальний відвідувач.",
+ "JSTracking_PageCustomVars": "Відстежувати змінні для кожного виду сторінки",
+ "JSTracking_PageCustomVarsDesc": "Наприклад, ім'я змінної «Категорія», а значення – «Офіційні документи».",
+ "JSTracking_VisitorCustomVars": "Відстежувати змінні для відвідувача",
+ "JSTracking_VisitorCustomVarsDesc": "Наприклад, ім'я змінної «Тип», а значення – «Клієнт».",
+ "JSTrackingIntro1": "Ви можете відстежувати відвідувачів різними способами. Ми рекомендуємо використовувати для цього JavaScript. Щоб використовувати цей метод ви повинні переконатися, що цей код розміщений на кожній сторінці.",
+ "JSTrackingIntro2": "Як тільки ви отримали Javascript код для вашого сайту, скопіюйте і вставте його на всі сторінки вашого сайту, на яких ви хочете відслідковувати відвідувачів.",
+ "JSTrackingIntro3": "У більшості CMS, блогах, сайтах і т.д. ви можете використовувати готовий плагін, щоб зробити технічні правки на сайті замість вас. (Дивіться %1$sсписок плагінів для інтеграції з Piwik%2$s.) Якщо поки немає відповідного плагіна - ви можете відредагувати шаблон сайту і додати цей код в \"footer\" файлу.",
+ "JSTrackingIntro4": "Якщо ви не хочете або не можете використовувати JavaScript, %1$sскористайтеся відстеженням відвідувачів через зображення%2$s.",
+ "JSTrackingIntro5": "Якщо ви хочете більше, ніж просте відстеження сторінок, будь ласка, ознайомтеся з %1$sPiwik Javascript Tracking documentation%2$s для перегляду всіх функцій. За допомогою цих функцій ви можете відстежувати цілі, призначені для користувача змінні, замовлення електронної комерції, неоформлені замовлення і багато іншого.",
+ "LogoNotWriteableInstruction": "Щоб використовувати власне лого замість стандартного Piwik, відкрийте для запису цю папку: %1$s Piwik потрібен доступ на запис вашого лого, що зберігається в файлах %2$s.",
+ "FileUploadDisabled": "Завантаження файлів не включене у вашій конфігурації PHP. Для завантаження іншого логотипу вставите %s в php.ini і перезапустіть веб-сервер.",
+ "LogoUploadFailed": "Завантажений файл не може бути оброблений. Будь ласка, перевірте, що файл має потрібний формат.",
+ "LogoUpload": "Виберіть лого для завантаження",
+ "FaviconUpload": "вибрати Favicon для завантаження",
+ "LogoUploadHelp": "Будь ласка, закачуйте файли в %1$s форматах, мінімальне обмеження по висоті – %2$s пікселів.",
+ "MenuDiagnostic": "Діагностика",
+ "MenuGeneralSettings": "Основні налаштування",
+ "MenuManage": "Управління",
+ "MenuDevelopment": "Розробка",
+ "OptOutComplete": "Виняток з політики конфіденційності завершено; ваші відвідування на даний сайт не враховуватимуться системою веб аналітики. Ми поважаємо ваш вибір.",
+ "OptOutCompleteBis": "Зауважте, що якщо ви очистите cookies браузера, то, швидше за все, видалитсья і винятковий cookie, або якщо ви поміняєте комп'ютер або браузер, то необхідно буде пройти процедуру виключення знову.",
+ "OptOutDntFound": "Ваші дії не відстежувалися, так як ваш браузер повідомляє, що ви не хочете цього. Це настройка вашого браузера, тому у вас не буде можливості включити її до тих пір, поки ви не відключите опцію \"Не відстежувати\".",
+ "OptOutExplanation": "Piwik – за збереження особистих даних в мережі. Тому дана система може запропонувати вашим користувачам вибір виключення з політики конфіденційності (відмова від подальшого збору статистики про користувача). Ви можете вставити наступний HTML-код на одну з ваших сторінок сайту, наприклад на сторінку про гарантії конфіденційності.",
"OptOutExplanationBis": "Тег покаже \"iframe\", в якому міститиметься посилання для ваших відвідувачів, клацнувши на яке, вони зможуть відмовитися від потрапляння в веб-аналітику через отримання відповідного файлу cookie. %1$s Клацніть тут%2$s, щоб переглянути вміст що буде показано в \"iframe\".",
- "OptOutForYourVisitors": "Відмова від включення в аналітику для відвідувачів.",
- "YouAreOptedIn": "Наразі статистика записується в базу даних",
- "YouAreOptedOut": "Наразі статистика не записується в базу даних",
- "YouMayOptOut": "Ви можете вибрати варіант, щоб не отримувати унікального ідентифікатора cookie призначеного для вашого компютера, щоб уникнути агрегації та аналізу даних, зібраних цим веб-сайтом.",
- "YouMayOptOutBis": "Клацніть нижче для отримання файлу cookie для виключення даних з статистики."
+ "OptOutForYourVisitors": "Виняток з політики конфіденційності Piwik для відвідувачів",
+ "PiwikIsInstalledAt": "Piwik встановлений в",
+ "PersonalPluginSettings": "Персональні налаштування плагінів",
+ "PluginSettingChangeNotAllowed": "Вам не дозволено змінювати значення \"%1$s\" для плагіну \"%2$s\"",
+ "PluginSettingReadNotAllowed": "Ви не дозволено читати значення \"%1$s\" плагіну \"%2$s\"",
+ "PluginSettings": "Налаштування плагінів",
+ "PluginSettingsIntro": "Тут ви можете змінити налаштування для наступних плагінів:",
+ "PluginSettingsValueNotAllowed": "Значення для поля \"%1$s\" в плагіні \"%2$s\" не дозволено",
+ "PluginSettingsSaveFailed": "Помилка при збереженні налаштувань плагіна",
+ "SendPluginUpdateCommunication": "Відправити email з повідомленням, коли для плагіна буде доступна нова версія",
+ "SendPluginUpdateCommunicationHelp": "Лист буде відправлено суперкористувачеві коли буде доступна нова версія плагіна.",
+ "StableReleases": "Якщо Piwik є важливою частиною вашого бізнесу, ми рекомендуємо використовувати останню стабільну версію. Якщо ви використовуєте останню бета версію, і ви знайшли помилку або є пропозиція, будь ласка, %1$sперейдіть за посиланням%2$s.",
+ "LtsReleases": "Версії LTS (довгострокова підтримка) отримують тільки виправлення, що стосуються безпеки і помилок.",
+ "SystemPluginSettings": "Системні налаштування плагінів",
+ "TrackAGoal": "Відстежувати ціль",
+ "TrackingCode": "Код відстеження",
+ "TrustedHostConfirm": "Ви впевнені, що хочете змінити ім'я довіреного хоста Piwik?",
+ "TrustedHostSettings": "Довірені хости Piwik",
+ "UpdateSettings": "Налаштування оновлення",
+ "UseCustomLogo": "Використовувати свій логотип",
+ "ValidPiwikHostname": "Домен для Piwik",
+ "WithOptionalRevenue": "з додатковим доходом",
+ "YouAreOptedIn": "Про вас збирається статистичні дані.",
+ "YouAreOptedOut": "Ви відмовилися від збору статистичних даних.",
+ "YouMayOptOut": "Ви можете відмовитися від унікального cookie, прив'язаному до вашого браузеру, що ідентифікує вас в системі аналітики даного сайту, тим самим відмовившись від будь-якого збору відомостей про вас і їх аналізу на даному сайті.",
+ "YouMayOptOutBis": "Зніміть галочку і отримаєте виключення cookie для відмови збору даних.",
+ "OptingYouOut": "Відписуємо вас, будь ласка, зачекайте...",
+ "ProtocolNotDetectedCorrectly": "В даний момент ви переглядаєте Piwik через безпечне з'єднання SSL (використовуючи https), але Piwik зміг виявити тільки небезпечне з'єднання на сервері.",
+ "ProtocolNotDetectedCorrectlySolution": "Щоб упевнитися, что Piwik безпечно запитує і обробляє ваш контент через HTTPS, ви можете відредагувати свій файл %1$s або налаштувати ваші настройки проксі, або ви можете додати лінію %2$s під розділом %3$s. %4$sДізнатися більше%5$s"
}
} \ No newline at end of file
diff --git a/plugins/CoreConsole/Commands/GenerateVisualizationPlugin.php b/plugins/CoreConsole/Commands/GenerateVisualizationPlugin.php
index 83a4863396..92a5027716 100644
--- a/plugins/CoreConsole/Commands/GenerateVisualizationPlugin.php
+++ b/plugins/CoreConsole/Commands/GenerateVisualizationPlugin.php
@@ -25,6 +25,7 @@ class GenerateVisualizationPlugin extends GeneratePlugin
->addOption('visualizationname', null, InputOption::VALUE_REQUIRED, 'Visualization name ([a-Z0-9])')
->addOption('description', null, InputOption::VALUE_REQUIRED, 'Plugin description, max 150 characters')
->addOption('pluginversion', null, InputOption::VALUE_OPTIONAL, 'Plugin version')
+ ->addOption('overwrite', null, InputOption::VALUE_NONE, 'Generate even if plugin directory already exists.')
->addOption('full', null, InputOption::VALUE_OPTIONAL, 'If a value is set, an API and a Controller will be created as well. Option is only available for creating plugins, not for creating themes.');
}
diff --git a/plugins/CoreConsole/Commands/GitCommit.php b/plugins/CoreConsole/Commands/GitCommit.php
index 451ecb72ff..31d5e62bce 100644
--- a/plugins/CoreConsole/Commands/GitCommit.php
+++ b/plugins/CoreConsole/Commands/GitCommit.php
@@ -59,7 +59,7 @@ class GitCommit extends ConsoleCommand
if (!$this->hasChangesToBeCommitted()) {
$dialog = $this->getHelperSet()->get('dialog');
- $question = '<question>There are no changes to be commited in the super repo, do you just want to commit and converge submodules?</question>';
+ $question = '<question>There are no changes to be committed in the super repo, do you just want to commit and converge submodules?</question>';
if (!$dialog->askConfirmation($output, $question, false)) {
$output->writeln('<info>Cool, nothing done. Stage files using "git add" and try again.</info>');
return;
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index e7d8c52185..2e74c243ef 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -110,6 +110,7 @@ class CoreHome extends \Piwik\Plugin
$jsFiles[] = "libs/bower_components/angular-animate/angular-animate.js";
$jsFiles[] = "libs/bower_components/angular-cookies/angular-cookies.js";
$jsFiles[] = "libs/bower_components/ngDialog/js/ngDialog.min.js";
+ $jsFiles[] = "libs/bower_components/jqueryui-touch-punch/jquery.ui.touch-punch.min.js";
$jsFiles[] = "plugins/Morpheus/javascripts/piwikHelper.js";
$jsFiles[] = "plugins/Morpheus/javascripts/ajaxHelper.js";
$jsFiles[] = "plugins/Morpheus/javascripts/layout.js";
diff --git a/plugins/CoreHome/DataTableRowAction/RowEvolution.php b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
index 6c69019e05..2e3632d69e 100644
--- a/plugins/CoreHome/DataTableRowAction/RowEvolution.php
+++ b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
@@ -305,7 +305,7 @@ class RowEvolution
ob_end_clean();
// undo header change by sparkline renderer
- header('Content-type: text/html');
+ Common::sendHeader('Content-type: text/html');
// base64 encode the image and put it in an img tag
$spark = base64_encode($spark);
diff --git a/plugins/CoreHome/Tracker/LogTable/Action.php b/plugins/CoreHome/Tracker/LogTable/Action.php
new file mode 100644
index 0000000000..fdb69e5ec6
--- /dev/null
+++ b/plugins/CoreHome/Tracker/LogTable/Action.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreHome\Tracker\LogTable;
+
+use Piwik\Tracker\LogTable;
+
+class Action extends LogTable
+{
+ public function getName()
+ {
+ return 'log_action';
+ }
+
+ public function getColumnToJoinOnIdAction()
+ {
+ return 'idaction';
+ }
+
+ public function getLinkTableToBeAbleToJoinOnVisit()
+ {
+ return 'log_link_visit_action';
+ }
+
+}
diff --git a/plugins/CoreHome/Tracker/LogTable/Conversion.php b/plugins/CoreHome/Tracker/LogTable/Conversion.php
new file mode 100644
index 0000000000..e920864088
--- /dev/null
+++ b/plugins/CoreHome/Tracker/LogTable/Conversion.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreHome\Tracker\LogTable;
+
+use Piwik\Tracker\LogTable;
+
+class Conversion extends LogTable
+{
+ public function getName()
+ {
+ return 'log_conversion';
+ }
+
+ public function getColumnToJoinOnIdVisit()
+ {
+ return 'idvisit';
+ }
+} \ No newline at end of file
diff --git a/plugins/CoreHome/Tracker/LogTable/ConversionItem.php b/plugins/CoreHome/Tracker/LogTable/ConversionItem.php
new file mode 100644
index 0000000000..566841b4fa
--- /dev/null
+++ b/plugins/CoreHome/Tracker/LogTable/ConversionItem.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreHome\Tracker\LogTable;
+
+use Piwik\Tracker\LogTable;
+
+class ConversionItem extends LogTable
+{
+ public function getName()
+ {
+ return 'log_conversion_item';
+ }
+
+ public function getColumnToJoinOnIdVisit()
+ {
+ return 'idvisit';
+ }
+
+}
diff --git a/plugins/CoreHome/Tracker/LogTable/LinkVisitAction.php b/plugins/CoreHome/Tracker/LogTable/LinkVisitAction.php
new file mode 100644
index 0000000000..cb102d407c
--- /dev/null
+++ b/plugins/CoreHome/Tracker/LogTable/LinkVisitAction.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreHome\Tracker\LogTable;
+
+use Piwik\Tracker\LogTable;
+
+class LinkVisitAction extends LogTable
+{
+ public function getName()
+ {
+ return 'log_link_visit_action';
+ }
+
+ public function getColumnToJoinOnIdAction()
+ {
+ return 'idaction_url';
+ }
+
+ public function getColumnToJoinOnIdVisit()
+ {
+ return 'idvisit';
+ }
+}
diff --git a/plugins/CoreHome/Tracker/LogTable/Visit.php b/plugins/CoreHome/Tracker/LogTable/Visit.php
new file mode 100644
index 0000000000..f403c37697
--- /dev/null
+++ b/plugins/CoreHome/Tracker/LogTable/Visit.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreHome\Tracker\LogTable;
+
+use Piwik\Tracker\LogTable;
+
+class Visit extends LogTable
+{
+ public function getName()
+ {
+ return 'log_visit';
+ }
+
+ public function getColumnToJoinOnIdVisit()
+ {
+ return 'idvisit';
+ }
+
+ public function shouldJoinWithSubSelect()
+ {
+ return true;
+ }
+
+} \ No newline at end of file
diff --git a/plugins/CoreHome/images/applogo_128.png b/plugins/CoreHome/images/applogo_128.png
new file mode 100644
index 0000000000..65414dcc7a
--- /dev/null
+++ b/plugins/CoreHome/images/applogo_128.png
Binary files differ
diff --git a/plugins/CoreHome/images/applogo_144.png b/plugins/CoreHome/images/applogo_144.png
new file mode 100644
index 0000000000..9db6030351
--- /dev/null
+++ b/plugins/CoreHome/images/applogo_144.png
Binary files differ
diff --git a/plugins/CoreHome/images/applogo_192.png b/plugins/CoreHome/images/applogo_192.png
new file mode 100644
index 0000000000..ad223db3ff
--- /dev/null
+++ b/plugins/CoreHome/images/applogo_192.png
Binary files differ
diff --git a/plugins/CoreHome/images/applogo_256.png b/plugins/CoreHome/images/applogo_256.png
new file mode 100644
index 0000000000..152922a254
--- /dev/null
+++ b/plugins/CoreHome/images/applogo_256.png
Binary files differ
diff --git a/plugins/CoreHome/images/applogo_32.png b/plugins/CoreHome/images/applogo_32.png
new file mode 100644
index 0000000000..174c8ecbf0
--- /dev/null
+++ b/plugins/CoreHome/images/applogo_32.png
Binary files differ
diff --git a/plugins/CoreHome/images/applogo_72.png b/plugins/CoreHome/images/applogo_72.png
new file mode 100644
index 0000000000..d9493feed9
--- /dev/null
+++ b/plugins/CoreHome/images/applogo_72.png
Binary files differ
diff --git a/plugins/CoreHome/images/applogo_732.png b/plugins/CoreHome/images/applogo_732.png
new file mode 100644
index 0000000000..3f40298650
--- /dev/null
+++ b/plugins/CoreHome/images/applogo_732.png
Binary files differ
diff --git a/plugins/CoreHome/javascripts/broadcast.js b/plugins/CoreHome/javascripts/broadcast.js
index 30b21f46af..dde45058ed 100644
--- a/plugins/CoreHome/javascripts/broadcast.js
+++ b/plugins/CoreHome/javascripts/broadcast.js
@@ -365,7 +365,7 @@ var broadcast = {
valFromUrl = getQuotedRegex(valFromUrl);
var regToBeReplace = new RegExp(paramName + '=' + valFromUrl, 'ig');
if (newParamValue == '') {
- // if new value is empty remove leading &, aswell
+ // if new value is empty remove leading &, as well
regToBeReplace = new RegExp('[\&]?' + paramName + '=' + valFromUrl, 'ig');
}
urlStr = urlStr.replace(regToBeReplace, newParamValue);
diff --git a/plugins/CoreHome/javascripts/dataTable.js b/plugins/CoreHome/javascripts/dataTable.js
index e1a0693d8c..e3e6cf456f 100644
--- a/plugins/CoreHome/javascripts/dataTable.js
+++ b/plugins/CoreHome/javascripts/dataTable.js
@@ -311,6 +311,7 @@ $.extend(DataTable.prototype, UIControl.prototype, {
bindEventsAndApplyStyle: function (domElem) {
var self = this;
self.cleanParams();
+ self.preBindEventsAndApplyStyleHook(domElem);
self.handleSort(domElem);
self.handleLimit(domElem);
self.handleOffsetInformation(domElem);
@@ -329,6 +330,14 @@ $.extend(DataTable.prototype, UIControl.prototype, {
self.handleColumnHighlighting(domElem);
self.setFixWidthToMakeEllipsisWork(domElem);
self.handleSummaryRow(domElem);
+ self.postBindEventsAndApplyStyleHook(domElem);
+ },
+
+ preBindEventsAndApplyStyleHook: function (domElem) {
+
+ },
+ postBindEventsAndApplyStyleHook: function (domElem) {
+
},
isWidgetized: function () {
@@ -611,7 +620,7 @@ $.extend(DataTable.prototype, UIControl.prototype, {
var tableRowLimits = piwik.config.datatable_row_limits,
evolutionLimits =
{
- day: [30, 60, 90, 180, 365, 500],
+ day: [8, 30, 60, 90, 180, 365, 500],
week: [4, 12, 26, 52, 104, 500],
month: [3, 6, 12, 24, 36, 120],
year: [3, 5, 10]
@@ -885,7 +894,7 @@ $.extend(DataTable.prototype, UIControl.prototype, {
if (self.param.keep_summary_row == 1) --totalRows;
- if (offsetEnd > totalRows) offsetEndDisp = totalRows;
+ if (offsetEnd > totalRows || Number(self.param.filter_limit) == -1) offsetEndDisp = totalRows;
// only show this string if there is some rows in the datatable
if (totalRows != 0) {
@@ -1665,16 +1674,21 @@ $.extend(DataTable.prototype, UIControl.prototype, {
tooltip.next().hover(function () {
var left = (-1 * tooltip.outerWidth() / 2) + th.width() / 2;
- var top = -1 * (tooltip.outerHeight() + 10);
+ var top = -1 * tooltip.outerHeight();
if (th.next().size() == 0) {
left = (-1 * tooltip.outerWidth()) + th.width() +
parseInt(th.css('padding-right'), 10);
}
+ if (th.offset().top + top < 0) {
+ top = th.outerHeight();
+ }
+
tooltip.css({
marginLeft: left,
- marginTop: top
+ marginTop: top,
+ top: 0
});
tooltip.stop(true, true).fadeIn(250);
diff --git a/plugins/CoreHome/javascripts/dataTable_rowactions.js b/plugins/CoreHome/javascripts/dataTable_rowactions.js
index e7308fb93f..8e337fb9fa 100644
--- a/plugins/CoreHome/javascripts/dataTable_rowactions.js
+++ b/plugins/CoreHome/javascripts/dataTable_rowactions.js
@@ -221,6 +221,11 @@ DataTable_RowAction.prototype.getLabelFromTr = function (tr) {
return value;
};
+/** Get row metadata object */
+DataTable_RowAction.prototype.getRowMetadata = function (tr) {
+ return tr.data('row-metadata') || {};
+};
+
/**
* Base method for opening popovers.
* This method will remember the parameter in the url and call doOpenPopover().
diff --git a/plugins/CoreHome/javascripts/manifest.json b/plugins/CoreHome/javascripts/manifest.json
index 93a1399678..829fa0f62f 100644
--- a/plugins/CoreHome/javascripts/manifest.json
+++ b/plugins/CoreHome/javascripts/manifest.json
@@ -3,9 +3,34 @@
"name": "Piwik - Open Source Analytics",
"icons": [
{
- "src": "../images/favicon.png",
+ "src": "../images/applogo_32.png",
"sizes": "32x32",
"type": "image/png"
+ },
+ {
+ "src": "../images/applogo_72.png",
+ "sizes": "72x72",
+ "type": "image/png"
+ },
+ {
+ "src": "../images/applogo_128.png",
+ "sizes": "128x128",
+ "type": "image/png"
+ },
+ {
+ "src": "../images/applogo_144.png",
+ "sizes": "144x144",
+ "type": "image/png"
+ },
+ {
+ "src": "../images/applogo_192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "../images/applogo_256.png",
+ "sizes": "256x256",
+ "type": "image/png"
}
],
"start_url": "../../../",
diff --git a/plugins/CoreHome/javascripts/notification.js b/plugins/CoreHome/javascripts/notification.js
index 527c845d87..3fde49bdc2 100644
--- a/plugins/CoreHome/javascripts/notification.js
+++ b/plugins/CoreHome/javascripts/notification.js
@@ -38,7 +38,7 @@
* @param {object} [options.style] Optional style/css dictionary. For instance {'display': 'inline-block'}
* @param {string} [options.placeat] By default, the notification will be displayed in the "stats bar".
* You can specify any other CSS selector to place the notifications
- * whereever you want.
+ * wherever you want.
*/
Notification.prototype.show = function (message, options) {
if (!message) {
diff --git a/plugins/CoreHome/lang/ar.json b/plugins/CoreHome/lang/ar.json
index 8cf85b39d0..5e2c16522a 100644
--- a/plugins/CoreHome/lang/ar.json
+++ b/plugins/CoreHome/lang/ar.json
@@ -29,7 +29,6 @@
"MakeOneTimeDonation": "بديلاً عن ذلك، قم بالتبرع مرة واحدة",
"Menu": "القائمة",
"NoPrivilegesAskPiwikAdmin": "لقد سجلت الدخول بصفتك '%1$s' ولكن يبدو أنه لا توجد أي صلاحيات لك في Piwik. %2$s اسأل مدير Piwik (انقر لمراسلته)%3$s gلمنحك صلاحيات \"المشاهدة\" لموقع ما.",
- "OnlyForSuperUserAccess": "عنصر الواجهة هذا يُعرَض للمستخدمين من فئة المستخدم الفائق فقط.",
"PageOf": "%1$s من %2$s",
"PeriodRange": "نطاق",
"ReportGeneratedOn": "تم إنشاء التقرير في %s",
diff --git a/plugins/CoreHome/lang/cs.json b/plugins/CoreHome/lang/cs.json
index 7bb0c2602b..1707c1e886 100644
--- a/plugins/CoreHome/lang/cs.json
+++ b/plugins/CoreHome/lang/cs.json
@@ -29,7 +29,7 @@
"MakeOneTimeDonation": "Provést jednorázový dar.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "Jste přihlášen jako '%1$s' ale zdá se, že nemáte v Piwiku žádná práva. %2$s Zeptejte se Vašeho Piwik administrátora (klikem na email)%3$s aby Vám dal 'view' přístup na stránku.",
- "OnlyForSuperUserAccess": "Tento widget je zobrazován pouze uživatelům se super-uživatelským přístupem.",
+ "OnlyForSuperUserAccess": "Tento widget je na výchozí nástěnce zobrazen pouze pro uživatele se super uživatelským přístupem",
"PageOf": "%1$s z %2$s",
"PeriodRange": "Rozsah",
"ReportGeneratedOn": "Hlášení vygenerované %s",
diff --git a/plugins/CoreHome/lang/da.json b/plugins/CoreHome/lang/da.json
index 7c65699d10..4fe64216fb 100644
--- a/plugins/CoreHome/lang/da.json
+++ b/plugins/CoreHome/lang/da.json
@@ -24,11 +24,11 @@
"InjectedHostSuperUserWarning": "Piwik kan være konfigureret forkert (f.eks. Hvis Piwik for nylig blev flyttet til en ny server eller en URL-adresse). Du kan enten %1$sklikke her og føje %2$s som gyldigt Piwik værtsnavn (hvis du har tillid til det) %3$s eller %4$sklikke her og få %5$s adgang til Piwik sikkert %6$s.",
"InjectedHostWarningIntro": "Du tilgår Piwik fra %1$s, men Piwik er konfigureret til at køre på denne adresse: %2$s.",
"JavascriptDisabled": "JavaSript skal være aktiveret for at Piwik kan bruges i standardvisning. JavaScript er enten deaktiveret eller ikke understøttet i netlæseren.<br \/>For at bruge standardvisning, aktiver JavaScript i indstillingerne for netlæseren, og %1$s prøv igen %2$s.<br \/>",
+ "MainNavigation": "Hovednavigation",
"MakeADifference": "Gør en forskel: %1$sGiv et bidrag nu%2$s og støt Piwik 2.0!",
"MakeOneTimeDonation": "Foretag engangsdonation, i stedet.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "Du er logget på som '%1$s' men det ser ikke ud som du har adgang til Piwik. %2$s Spørg Piwik administratoren (klik for at sende e-mail)%3$s for at give dig 'se' adgang til et websted.",
- "OnlyForSuperUserAccess": "Modulet vises kun til brugere, der har superbruger adgang.",
"PageOf": "%1$s af %2$s",
"PeriodRange": "Interval",
"ReportGeneratedOn": "Rapport genereret på %s",
@@ -48,6 +48,11 @@
"YouAreUsingTheLatestVersion": "Du bruger den seneste version af Piwik!",
"ClickRowToExpandOrContract": "Klik på rækken for at udvide eller sammentrække undertabelen.",
"UndoPivotBySubtable": "Rapporten er blevet pivoteret %s Fortryd pivot.",
- "PivotBySubtable": "Rapporten er ikke pivoteret %1$s Pivoter med %2$s."
+ "PivotBySubtable": "Rapporten er ikke pivoteret %1$s Pivoter med %2$s.",
+ "QuickAccessTitle": "Søg efter %s. Brug pil-tasterne for at navigere igennem søgeresultaterne. Genvej: Tryk 'f' for at søge.",
+ "MenuEntries": "Menu indgange",
+ "Segments": "Segmenter",
+ "AdblockIsMaybeUsed": "Hvis du bruger en annonce blokering skal du deaktivere denne for at sikre, at Piwik arbejder uden problemer.",
+ "ChangeCurrentWebsite": "Vælg et website. Det aktuelle website er: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/de.json b/plugins/CoreHome/lang/de.json
index 8b6b841b84..0b360898bf 100644
--- a/plugins/CoreHome/lang/de.json
+++ b/plugins/CoreHome/lang/de.json
@@ -29,7 +29,7 @@
"MakeOneTimeDonation": "Stattdessen einmalig spenden.",
"Menu": "Menü",
"NoPrivilegesAskPiwikAdmin": "Sie sind angemeldet als '%1$s', aber es wurden keine Berechtigungen für diesen Benutzer in Piwik gesetzt. %2$s Bitte fragen Sie Ihren Piwik Administrator (klicken für E-Mail)%3$s um Zugriff auf die Webseite zu erhalten.",
- "OnlyForSuperUserAccess": "Dieses Widget wird nur Benutzern mit Hauptadministrator-Berechtigung angezeigt.",
+ "OnlyForSuperUserAccess": "Dieses Widget wird im Standard-Dashboard nur Benutzern mit Hauptadministrator-Berechtigung angezeigt.",
"PageOf": "%1$s von %2$s",
"PeriodRange": "Zeitspanne",
"ReportGeneratedOn": "Bericht erzeugt am %s",
diff --git a/plugins/CoreHome/lang/el.json b/plugins/CoreHome/lang/el.json
index 955ccf536d..70c240687e 100644
--- a/plugins/CoreHome/lang/el.json
+++ b/plugins/CoreHome/lang/el.json
@@ -29,7 +29,7 @@
"MakeOneTimeDonation": "Εναλλακτικά, κάντε μια εφάπαξ δωρεά.",
"Menu": "Μενού",
"NoPrivilegesAskPiwikAdmin": "Έχετε κάνει είσοδο ως '%1$s', αλλά φαίνεται ότι δεν σας έχει δοθεί κάποιο δικαίωμα από το Piwik. %2$s Ζητήστε από το διαχειριστή του Piwik σας (κλικ για αποστολή e-mail)%3$s να σας δώσει δικαίωμα 'ανάγνωσης' στον ιστοτόπο.",
- "OnlyForSuperUserAccess": "Το γραφικό συστατικό εμφανίζεται μόνο σε χρήστες με δικαίωμα Υπερ-Χρήστη.",
+ "OnlyForSuperUserAccess": "Το συστατικό εμφανίζεται στον προκαθορισμένο πίνακα εργαλείων μόνο σε χρήστες με δικαίωμα Υπερ Χρήστη.",
"PageOf": "%1$s από %2$s",
"PeriodRange": "Εύρος",
"ReportGeneratedOn": "Η αναφορά δημιουργήθηκε στις %s",
diff --git a/plugins/CoreHome/lang/en.json b/plugins/CoreHome/lang/en.json
index bfe6056eee..1fb4542be3 100644
--- a/plugins/CoreHome/lang/en.json
+++ b/plugins/CoreHome/lang/en.json
@@ -32,7 +32,7 @@
"MakeOneTimeDonation": "Make a one time donation, instead.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "You are logged in as '%1$s' but it seems you don't have any permission set in Piwik. %2$s Ask your Piwik administrator (click to email)%3$s to give you 'view' access to a website.",
- "OnlyForSuperUserAccess": "This widget is only displayed to users having Super User access.",
+ "OnlyForSuperUserAccess": "This widget is displayed in the default dashboard only to users having Super User access.",
"PageOf": "%1$s of %2$s",
"PeriodRange": "Range",
"ReportGeneratedOn": "Report generated on %s",
diff --git a/plugins/CoreHome/lang/es.json b/plugins/CoreHome/lang/es.json
index 189f1b485c..9ef4b121ed 100644
--- a/plugins/CoreHome/lang/es.json
+++ b/plugins/CoreHome/lang/es.json
@@ -24,11 +24,12 @@
"InjectedHostSuperUserWarning": "Piwik puede estar desconfigurado (por ejemplo, si Piwik fue mudado recientemente a un nuevo servidor o cambió su dirección de internet). Puede %1$scliquear aquí y agregar %2$s como servidores válidos Piwik (si los considera confiables)%3$s, o %4$s cliquee aquí y vaya a %5$s para acceder de forma segura a Piwik%6$s.",
"InjectedHostWarningIntro": "Está accediendo a Piwik desde %1$s, pero Piwik ha sido configurado para ejecutarse en esta dirección: %2$s.",
"JavascriptDisabled": "JavaScript debe estar habilitado para que pueda utilizar la vista estándar de Piwik .<br \/>Sin embargo, para ser que JavaScript está deshabilitado o no es respaldado por su navegador. <br \/>Para usar la vista estándar, habilite JavaScript cambiando las opciones de su navegador, luego%1$sintente nuevamente%2$s.<br \/>",
+ "MainNavigation": "Menú de navegación",
"MakeADifference": "Marque la diferencia: %1$sDone ahora%2$s para financiar Piwik 2.0!",
"MakeOneTimeDonation": "Entonces, haga una sola donación",
"Menu": "Menú",
"NoPrivilegesAskPiwikAdmin": "Ha iniciado sesión como '%1$s', pero parece que no posee ningún permiso configurado en Piwik. %2$s Consulta al administrador de su Piwik (clic para enviar correo electrónico)%3$s para que le otorgue acceso para 'ver' en el sitio de internet.",
- "OnlyForSuperUserAccess": "Este reproductor sólo se muestra a los usuarios con acceso Super User.",
+ "OnlyForSuperUserAccess": "Este reproductor es mostrado a los usuarios que poseen los atributos de Super Usuarioen el panel de control predeterminado.",
"PageOf": "%1$s de %2$s",
"PeriodRange": "Rango",
"ReportGeneratedOn": "Informe generado el %s",
@@ -48,6 +49,11 @@
"YouAreUsingTheLatestVersion": "¡Está utilizando la última versión de Piwik!",
"ClickRowToExpandOrContract": "Clic en esta fila para expandir o contraer la subtabla.",
"UndoPivotBySubtable": "Este informe ha sido girado %s Deshacer giro",
- "PivotBySubtable": "Este informe no es girado %1$s Giro por %2$s"
+ "PivotBySubtable": "Este informe no es girado %1$s Giro por %2$s",
+ "QuickAccessTitle": "Buscar por %s. Utilice las teclas de dirección para navegar a través de los resultados. Atajo de teclado: Click 'f' para buscar.",
+ "MenuEntries": "Menú de entrada",
+ "Segments": "Segmentos",
+ "AdblockIsMaybeUsed": "En caso de que esté utilizando Ad Blocker, por favor deshabilitelo para que Piwik pueda trabajar sin problemas y de forma más segura.",
+ "ChangeCurrentWebsite": "Elige un sitio web, actualmente el sitio web seleccionado es: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/fa.json b/plugins/CoreHome/lang/fa.json
index b6e80d44f7..a7883a0f5b 100644
--- a/plugins/CoreHome/lang/fa.json
+++ b/plugins/CoreHome/lang/fa.json
@@ -17,7 +17,6 @@
"MakeADifference": "یک تفاوت ایجاد کنید: %1$sبه پیویک هدیه بدهید%2$s تا در پیویک 2.0 سرمایه گذاری کنیم!",
"MakeOneTimeDonation": "یک بار کمک مالی انجام دهید.",
"NoPrivilegesAskPiwikAdmin": "شما به عنوان %1$s وارد شده اید , اما به نظر می رسد که شما اجازه دسترسی به هیچ بخشی از پیویک را ندارید. %2$s از مدیریت پیویک تان بخواهید (برای ارسال ایمیل کلیک کنید)%3$s تا به شما دسترسی \"مشاهده\" یک وبسایت را بدهد.",
- "OnlyForSuperUserAccess": "این ویجت فقط برای کاربران با دسترسی ابرکاربر قابل مشاهده است.",
"PageOf": "%1$s از %2$s",
"PeriodRange": "بازه",
"ReportGeneratedOn": "گزارش تولید شده است در %s",
diff --git a/plugins/CoreHome/lang/fi.json b/plugins/CoreHome/lang/fi.json
index 401eb9fdfc..c95c884d4d 100644
--- a/plugins/CoreHome/lang/fi.json
+++ b/plugins/CoreHome/lang/fi.json
@@ -29,7 +29,6 @@
"MakeOneTimeDonation": "Lahjoita kertasumma.",
"Menu": "Valikko",
"NoPrivilegesAskPiwikAdmin": "Olet kirjautuneena sisään käyttäjänä '%1$s', mutta sinulla ei ole mitään oikeuksia Piwikissä. %2$sPyydä Piwikin ylläpitäjää (klikkaa avataksesi sähköpostin)%3$s antamaan katseluoikeudet verkkosivuun.",
- "OnlyForSuperUserAccess": "Tämä widget näkyy ainoastaan käyttäjille, joilla on Superkäyttäjän oikeudet.",
"PageOf": "%1$s of %2$s",
"PeriodRange": "Alue",
"ReportGeneratedOn": "Raportti luotu %s",
diff --git a/plugins/CoreHome/lang/fr.json b/plugins/CoreHome/lang/fr.json
index ff41959551..e000f700ca 100644
--- a/plugins/CoreHome/lang/fr.json
+++ b/plugins/CoreHome/lang/fr.json
@@ -29,7 +29,7 @@
"MakeOneTimeDonation": "Faire un don unique à la place.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "Vous êtes connecté en tant que '%1$s' mais il semble que nous n'ayez aucune permission définie dans Piwik. %2$s Demandez à votre administrateur (cliquez pour envoyer un e-mail)%3$s de vous donner l'accès 'Consultation' à un site web.",
- "OnlyForSuperUserAccess": "Ce widget est uniquement affiché aux utilisateurs possédant un accès de type super utilisateur.",
+ "OnlyForSuperUserAccess": "Ce gadget est affiché dans le tableau de bord par défaut uniquement aux utilisateurs possédant un accès de type super utilisateur.",
"PageOf": "%1$s de %2$s",
"PeriodRange": "Etendue",
"ReportGeneratedOn": "Rapport généré le %s",
@@ -50,6 +50,7 @@
"ClickRowToExpandOrContract": "Cliquez sur cette rangée pour afficher ou masquer le sous-tableau",
"UndoPivotBySubtable": "Ce rapport a été pivoté %s Annuler le pivot",
"PivotBySubtable": "Ce rapport n'a pas été pivoté %1$s Pivoter par %2$s",
+ "QuickAccessTitle": "Recherche pour %s. Utilisez les flèches de navigation pour parcourir les résultats de recherche. Raccourci : appuyez sur 'f' pour rechercher.",
"MenuEntries": "Entrées de menu",
"Segments": "Segments",
"AdblockIsMaybeUsed": "Dans le cas où vous utiliseriez un bloqueur de publicités, veuillez le désactiver pour ce site afin de vous assurer que Piwik fonctionne correctement.",
diff --git a/plugins/CoreHome/lang/is.json b/plugins/CoreHome/lang/is.json
index 45e6b7e82d..b4d653a4f9 100644
--- a/plugins/CoreHome/lang/is.json
+++ b/plugins/CoreHome/lang/is.json
@@ -1,14 +1,6 @@
{
"CoreHome": {
"PageOf": "%1$s of %2$s",
- "PeriodDay": "Dagur",
- "PeriodDays": "daga",
- "PeriodMonth": "Mánuður",
- "PeriodMonths": "mánuði",
- "PeriodWeek": "Vika",
- "PeriodWeeks": "vikur",
- "PeriodYear": "Ár",
- "PeriodYears": "ár",
"ShowJSCode": "Sýna JavaScript kóða til að setja inn",
"ThereIsNoDataForThisReport": "Það eru eingin gögn til fyrir þessa skýrslu"
}
diff --git a/plugins/CoreHome/lang/it.json b/plugins/CoreHome/lang/it.json
index 913208c21e..982758714a 100644
--- a/plugins/CoreHome/lang/it.json
+++ b/plugins/CoreHome/lang/it.json
@@ -28,8 +28,8 @@
"MakeADifference": "Fa' la differenza: %1$sDona adesso%2$s per finanziare Piwik 2.0!",
"MakeOneTimeDonation": "Fa' una donazione unica.",
"Menu": "Menu",
- "NoPrivilegesAskPiwikAdmin": "Sei stato registrato come '%1$s', ma a quanto pare non si dispone di alcuna autorizzazione in Piwik. %2$s Contattare l'amministratore Piwik (clicca per e-mail) %3$s per consentire la visualizzazione di un sito web.",
- "OnlyForSuperUserAccess": "Questo widget è visualizzato solo dagli utenti che hanno un accesso Super User.",
+ "NoPrivilegesAskPiwikAdmin": "Ti sei registrato come '%1$s', ma a quanto pare non disponi di alcuna autorizzazione in Piwik. %2$sContatta l'amministratore Piwik (clicca per e-mail)%3$s per avere un accesso che ti consenta di 'vedere' un sito web.",
+ "OnlyForSuperUserAccess": "Questo widget è visualizzato sulla dashboard predefinita solo per gli utenti che hanno accesso come Super User.",
"PageOf": "%1$s di %2$s",
"PeriodRange": "Intervallo",
"ReportGeneratedOn": "Report generato il %s",
@@ -50,7 +50,7 @@
"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 %1$s da %2$s",
- "QuickAccessTitle": "Ricerca per %s. Utilizza i tasti freccia per navigare tra i risultati di ricerca. Scorciatoia: premi 'f' per cercare.",
+ "QuickAccessTitle": "Ricerca per %s. Utilizza i tasti freccia per navigare tra i risultati della ricerca. Scorciatoia: premi 'f' per cercare.",
"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.",
diff --git a/plugins/CoreHome/lang/ja.json b/plugins/CoreHome/lang/ja.json
index 83d636991e..aaef3cb874 100644
--- a/plugins/CoreHome/lang/ja.json
+++ b/plugins/CoreHome/lang/ja.json
@@ -28,7 +28,6 @@
"MakeOneTimeDonation": "代わりに寄与をする",
"Menu": "メニュー",
"NoPrivilegesAskPiwikAdmin": "'%1$s'としてログインしていますが、権限が設定されていないようです。 %2$s Piwikの管理者(クリックしてEメール)%3$s に'表示'の権限を与えてもらってください。",
- "OnlyForSuperUserAccess": "このウィジェットは、スーパーユーザのアクセス権を持つユーザにのみ表示されます",
"PageOf": "%1$s \/ %2$s",
"PeriodRange": "期間",
"ReportGeneratedOn": "%s に生成されたリポート",
diff --git a/plugins/CoreHome/lang/ka.json b/plugins/CoreHome/lang/ka.json
index 2492065340..eca1881e8b 100644
--- a/plugins/CoreHome/lang/ka.json
+++ b/plugins/CoreHome/lang/ka.json
@@ -3,14 +3,6 @@
"CategoryNoData": "ამ კატეგორიაში მონაცემები არ არის. ცადეთ \"ყველა მონაწილის ჩართვა\"",
"JavascriptDisabled": "JavaScript ჩართული უნდა იყოს, რომ თქვენ შეძლოთ Piwik–ის გამოყენება სტანდარტული გზით.<br \/>თუმცა, როგორც ჩანს JavaScript ან გამორთულია ან თქვენს ბრაუზერს მისი მხარდაჭერა არ აქვს.<br \/>სტანდარტული ხედის გამოყენებისთვის ჩართეთ JavaScript თქვენი ბრაუზერის ოფციებიდან, შემდეგ %1$sცადეთ კიდევ%2$s.<br \/>",
"PageOf": "%1$s, სულ %2$s",
- "PeriodDay": "დღე",
- "PeriodDays": "დღე",
- "PeriodMonth": "თვე",
- "PeriodMonths": "თვე",
- "PeriodWeek": "კვირა",
- "PeriodWeeks": "კვირა",
- "PeriodYear": "წელი",
- "PeriodYears": "წელი",
"ShowJSCode": "JavaScript კოდის ნახვა, რომელიც უნდა ჩაისვას ვებ გვერდზე",
"ThereIsNoDataForThisReport": "რეპორტისთვის მონაცემები არ არის.",
"WebAnalyticsReports": "ვებ ანალიზატორის რეპორტები"
diff --git a/plugins/CoreHome/lang/ko.json b/plugins/CoreHome/lang/ko.json
index 1288435bf2..ab5ea33ff9 100644
--- a/plugins/CoreHome/lang/ko.json
+++ b/plugins/CoreHome/lang/ko.json
@@ -28,7 +28,6 @@
"MakeOneTimeDonation": "또는, 한 번만 기부합니다.",
"Menu": "메뉴",
"NoPrivilegesAskPiwikAdmin": "'%1$s'로 로그인되었지만 권한이 설정되어 있지 않습니다. %2$s Piwik 관리자(클릭 이메일) %3$s에 '보기'권한을 부여 받으세요.",
- "OnlyForSuperUserAccess": "해당 위젯은 유저가 수퍼 유저일 경우에만 나타납니다.",
"PageOf": "%1$s \/ %2$s",
"PeriodRange": "기간",
"ReportGeneratedOn": "%s에 생성된 보고서",
diff --git a/plugins/CoreHome/lang/nb.json b/plugins/CoreHome/lang/nb.json
index e8d177486d..1930bab3d0 100644
--- a/plugins/CoreHome/lang/nb.json
+++ b/plugins/CoreHome/lang/nb.json
@@ -7,7 +7,7 @@
"CloseWidgetDirections": "Du kan lukke dette elementet ved å klikke på X-ikonet over widgeten.",
"DataForThisReportHasBeenPurged": "Dataene for denne rapporten er mer enn %s måneder gamle og har blitt fjernet.",
"DataTableExcludeAggregateRows": "Aggregerte rader vises %s Skjul dem",
- "DataTableIncludeAggregateRows": "Aggregerte rader er skjult %s Vi dem",
+ "DataTableIncludeAggregateRows": "Aggregerte rader er skjult %s Vis dem",
"Default": "standard",
"DonateCall1": "Det vil aldri koste noe å bruke Piwik, men det betyr ikke at det ikke koster oss noe å lage.",
"DonateCall2": "Piwik trenger din fortsatte støtte for å vokse og blomstre.",
@@ -29,7 +29,7 @@
"MakeOneTimeDonation": "Bidra med en engangsdonasjon i stedet.",
"Menu": "Meny",
"NoPrivilegesAskPiwikAdmin": "Du er logget inn som «%1$s», men det ser ut til at du ikke har noen rettigheter satt i Piwik. %2$s Be din Piwik-administrator (klikk for å sende e-post)%3$s å gi deg «vis»-tilgang til et nettsted.",
- "OnlyForSuperUserAccess": "Denne widgeten vises kun til brukere som har superbruker-tilgang.",
+ "OnlyForSuperUserAccess": "Denne widgeten vises kun i standardoversikten for brukere som har superbruker-tilgang.",
"PageOf": "%1$s av %2$s",
"PeriodRange": "Periode",
"ReportGeneratedOn": "Rapport generert %s",
diff --git a/plugins/CoreHome/lang/nl.json b/plugins/CoreHome/lang/nl.json
index a82520ae65..1b0dbf8d48 100644
--- a/plugins/CoreHome/lang/nl.json
+++ b/plugins/CoreHome/lang/nl.json
@@ -24,11 +24,11 @@
"InjectedHostSuperUserWarning": "Piwik is waarschijnlijk verkeerd geconfigureerd (bijv. Piwik werd verplaatst naar een nieuwe server of URL). %1$sKlik hier en voeg %2$s toe als een toegestane Piwik hostnaam indien je die vertrouwd%3$s, of %4$sklik hier en ga naar %5$s om Piwik veilig te banaderen%6$s.",
"InjectedHostWarningIntro": "Je bezoekt nu Piwik van %1$s, maar Piwik is geconfigureerd om op dit adres te draaien: %2$s.",
"JavascriptDisabled": "JavaScript moet ingeschakeld zijn om Piwik in standaard weergave te bekijken. <br\/> Het lijkt erop dat JavaScript is uitgeschakeld of niet ondersteund wordt door uw browser.<br\/> Om de standaard weergave te gebruiken, schakel JavaScript in door uw browser instellingen te wijzigen, probeer het daarna %1$s opnieuw %2$s.<br\/>",
+ "MainNavigation": "Hoofd navigatie",
"MakeADifference": "Maak een verschil: %1$sDoneer nu%2$s om Piwik 2.0 te steunen!",
"MakeOneTimeDonation": "Doe een eennmalige donatie in de plaats.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "U bent aangemeld as '%1$s'. Maar het lijkt er op dat u geen rechten hebt op Piwik te bezoeken. %2$sVraag aan uw webmaster (klik hier voor e-mail)%3$s of hij u de juiste rechten wilt geven om de statistieken te bekijken.",
- "OnlyForSuperUserAccess": "Deze widget wordt alleen getoond aan superusers.",
"PageOf": "%1$s of %2$s",
"PeriodRange": "Datumbereik",
"ReportGeneratedOn": "Rapport aangemaakt op %s",
@@ -48,6 +48,11 @@
"YouAreUsingTheLatestVersion": "Je gebruikt de laatste versie van Piwik!",
"ClickRowToExpandOrContract": "Klik deze regel om de tabel te openen of te sluiten.",
"UndoPivotBySubtable": "Dit rapport wordt als een draaitabel getoond, %s schakel de draaitabel uit.",
- "PivotBySubtable": "Dit rapport wordt niet als een draaitabel getoond, %1$s maak een draaitabel op basis van %2$s"
+ "PivotBySubtable": "Dit rapport wordt niet als een draaitabel getoond, %1$s maak een draaitabel op basis van %2$s",
+ "QuickAccessTitle": "Zoeken naar %s. Gebruik de pijltjestoetsen om door de zoekopdrachten te navigeren. Shortcut: Druk 'f' om te zoeken.",
+ "MenuEntries": "Menu-items",
+ "Segments": "Segmenten",
+ "AdblockIsMaybeUsed": "Als je gebruik maakt van een reclame blokker, schakel deze a.u.b. uit zodat je zeker weet dat Piwik werkt zonder problemen.",
+ "ChangeCurrentWebsite": "Kies een website, de nu geselecteerde website is: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/pl.json b/plugins/CoreHome/lang/pl.json
index ac7fbac176..dfee5d49d0 100644
--- a/plugins/CoreHome/lang/pl.json
+++ b/plugins/CoreHome/lang/pl.json
@@ -25,7 +25,6 @@
"MakeOneTimeDonation": "Zamiast, przekaż jednorazową dotację.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "Jesteś zalogowany jako '%1$s' ale wygląda na to, że nie masz nadanych żadnych uprawnień w Piwik'u. %2$s Poproś swojego administratora Piwik'a (kliknij aby wysłąć email)%3$s aby nadał Ci uprawnienia 'przeglądania' strony.",
- "OnlyForSuperUserAccess": "Ten widżet widzą tylko użytkownych z prawami dostępu Super User.",
"PageOf": "%1$s z %2$s",
"PeriodRange": "Zakres",
"ReportGeneratedOn": "Raport wygenerowany %s",
diff --git a/plugins/CoreHome/lang/pt-br.json b/plugins/CoreHome/lang/pt-br.json
index b2215af4dd..2727c13cc2 100644
--- a/plugins/CoreHome/lang/pt-br.json
+++ b/plugins/CoreHome/lang/pt-br.json
@@ -29,7 +29,6 @@
"MakeOneTimeDonation": "Em vez disso, faça uma doação.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "Você está logado como '%1$s', mas parece que você não tem nenhuma permissão definida no Piwik. %2$s Pergunte ao seu administrador Piwik (clique para e-mail) %3$s para lhe dar acesso de 'visão' para um site.",
- "OnlyForSuperUserAccess": "Este widget só é exibido para os usuários com privilégios de Super Usuário.",
"PageOf": "%1$s de %2$s",
"PeriodRange": "Alcance",
"ReportGeneratedOn": "Relatório gerado em %s",
diff --git a/plugins/CoreHome/lang/ro.json b/plugins/CoreHome/lang/ro.json
index bc8707c590..b9b620bd85 100644
--- a/plugins/CoreHome/lang/ro.json
+++ b/plugins/CoreHome/lang/ro.json
@@ -26,7 +26,6 @@
"MakeADifference": "Fa o diferenta: %1$sDoneaza acum%2$s pentru a sponsoriza Piwik 2.0!",
"MakeOneTimeDonation": "În schimb, donează o dată (fără subscriere).",
"NoPrivilegesAskPiwikAdmin": "Sunteti logat ca '%1$s' dar se pare ca nu aveti nici o permisiune setata in Piwik. %2$s Solicitati administratorului dvs al Piwik (click pentru email)%3$s sa va permita accesul tip 'vizualizare' pentru un site.",
- "OnlyForSuperUserAccess": "Acest widget este afișat numai pentru utilizatorii care au acces la Super utilizator.",
"PageOf": "%1$s din %2$s",
"PeriodRange": "Perioadă",
"ReportGeneratedOn": "Raport creat la %s",
diff --git a/plugins/CoreHome/lang/ru.json b/plugins/CoreHome/lang/ru.json
index 7fdd19b854..a47c8f93df 100644
--- a/plugins/CoreHome/lang/ru.json
+++ b/plugins/CoreHome/lang/ru.json
@@ -29,7 +29,6 @@
"MakeOneTimeDonation": "Сделать только пожертвование (без подписки).",
"Menu": "Меню",
"NoPrivilegesAskPiwikAdmin": "Вы авторизованы как '%1$s', но, кажется, для вас не установлены права в Piwik. %2$s Попросите вашего администратора (кликните, чтобы написать письмо)%3$s дать вам доступ на \"просмотр\" к статистике сайта.",
- "OnlyForSuperUserAccess": "Этот виджет отображается только у суперпользователя.",
"PageOf": "%1$s из %2$s",
"PeriodRange": "Период",
"ReportGeneratedOn": "Отчет был составлен %s",
diff --git a/plugins/CoreHome/lang/sk.json b/plugins/CoreHome/lang/sk.json
index 784221d728..28e1f15b83 100644
--- a/plugins/CoreHome/lang/sk.json
+++ b/plugins/CoreHome/lang/sk.json
@@ -28,7 +28,6 @@
"MakeOneTimeDonation": "Jednorázovo finančne podporiť.",
"Menu": "Menu",
"NoPrivilegesAskPiwikAdmin": "Ste prihlásený ako '%1$s' ale vyzerá to tak , že nemáte žiadne povolenie do Piwiku. %2$s Spýtajte sa Vášho Piwik administrátora (Kliknite pre email)%3$s aby Vám dal 'prezerací' prístup na webstránku.",
- "OnlyForSuperUserAccess": "Táto miniaplikácia je zobrazená iba užívateľom ktorý majú prístup ako Super-užívatelia.",
"PageOf": "%1$s z %2$s",
"PeriodRange": "Rozsah",
"ReportGeneratedOn": "Report vygenerovaný %s",
diff --git a/plugins/CoreHome/lang/sr.json b/plugins/CoreHome/lang/sr.json
index 100389f22b..08b2322557 100644
--- a/plugins/CoreHome/lang/sr.json
+++ b/plugins/CoreHome/lang/sr.json
@@ -28,7 +28,6 @@
"MakeOneTimeDonation": "Možete izvršiti i jednokratnu donaciju.",
"Menu": "Meni",
"NoPrivilegesAskPiwikAdmin": "Prijavljeni ste kao '%1$s' ali izgleda da nemate postavljena nikakva ovlašćenja. %2$s Tražite od Piwik administratora (kliknite za poruku)%3$s da vam dozvoli 'prikaz' na sajtu.",
- "OnlyForSuperUserAccess": "Ovaj vidžet se prikazuje samo superkorisnicima.",
"PageOf": "%1$s od %2$s",
"PeriodRange": "Period",
"ReportGeneratedOn": "Izveštaj generisan %s",
diff --git a/plugins/CoreHome/lang/sv.json b/plugins/CoreHome/lang/sv.json
index e8390e8122..499c815014 100644
--- a/plugins/CoreHome/lang/sv.json
+++ b/plugins/CoreHome/lang/sv.json
@@ -24,11 +24,11 @@
"InjectedHostSuperUserWarning": "Piwik kan vara felkonfigurerat (t.ex. om Pwiwik nyligen har flyttats till en ny server eller URL). Du kan antigen %1$sklicka här och lägga till %2$s som ett giltigt värdnamn för Piwik (om det är giltigt)%3$s, eller %4$sklicka här för att gå till %5$s och ansluta till Piwik säkert%6$s.",
"InjectedHostWarningIntro": "Du ansluter till Piwik från %1$s, men Piwik har konfigurerats att köras från den här adressen: %2$s.",
"JavascriptDisabled": "JavaScript måste vara aktiverat för att du ska kunna använda Piwik i standardläge.<br \/>Det verkar dock som att JavaScript antingen är inaktiverat eller att det inte stöds av din webbläsare..<br \/>För att använda standardläget, aktivera JavaScript genom att ändra din webbläsares inställningar, %1$sförsök sen igen%2$s.<br \/>",
+ "MainNavigation": "Huvudmenu",
"MakeADifference": "Gör skillnad: %1$sDonera nu%2$s för att finansiera Piwik 2.0!",
"MakeOneTimeDonation": "Donera en engångssumma istället.",
"Menu": "Meny",
"NoPrivilegesAskPiwikAdmin": "Du är inloggad som '%1$s' men det verkar som om du inte har några rättigheter satta i Piwik. %2$s Fråga din Piwik administratör (klicka för att e-posta)%3$s för att få läsrättighet till en webbplats.",
- "OnlyForSuperUserAccess": "Den här widgeten visas bara för användare som har Superanvändare access.",
"PageOf": "%1$s av %2$s",
"PeriodRange": "Intervall",
"ReportGeneratedOn": "Rapporten genererades på %s",
@@ -49,6 +49,10 @@
"ClickRowToExpandOrContract": "Klicka på denna rad för att visa eller dölja undertabeller.",
"UndoPivotBySubtable": "Denna rapport har pivoterats %s Ångra pivotering",
"PivotBySubtable": "Denna rapport är inte pivoterad %1$s Pivotera med %2$s",
- "Segments": "Segment"
+ "QuickAccessTitle": "Sök efter %s. Använd piltangenterna för att navigera i sökresultatet. Genväg: Tryck på 'f' för att söka.",
+ "MenuEntries": "Menyposter",
+ "Segments": "Segment",
+ "AdblockIsMaybeUsed": "Om du blockerar annonser vänligen inaktivera blockeringen på den här webbplatsen för att Piwik ska fungera utan några problem.",
+ "ChangeCurrentWebsite": "Välj en webbplats, vald webbplats just nu: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/tl.json b/plugins/CoreHome/lang/tl.json
index ce6c22a538..edfa0e610f 100644
--- a/plugins/CoreHome/lang/tl.json
+++ b/plugins/CoreHome/lang/tl.json
@@ -26,7 +26,6 @@
"MakeADifference": "Gumawa ng isang pagkakaiba: %1$sMagbigay ng donasyon ngayon%2$s upang pondohan ang Piwik 2.0!",
"MakeOneTimeDonation": "Ang widget na ito ay ipinapakita lamang sa mga user na may Super User na access.",
"NoPrivilegesAskPiwikAdmin": "Ikaw ay naka-log-in bilang '%1$s' ngunit mukhang wala kang anumang pahintulot na naka-set sa Piwik. %2$s Tanungin ang iyong Piwik administrator (i-click upang i-email) %3$s upang bigyan ka ng 'view' access sa website.",
- "OnlyForSuperUserAccess": "Ang widget na ito ay ipanapakita lamang sa mga user na mayroong Super User access",
"PageOf": "%1$s ng %2$s",
"PeriodRange": "Pagitan",
"ReportGeneratedOn": "Ang ulat ay ginawa sa %s",
diff --git a/plugins/CoreHome/lang/tr.json b/plugins/CoreHome/lang/tr.json
index 88dbbe2e7b..82b6af072d 100644
--- a/plugins/CoreHome/lang/tr.json
+++ b/plugins/CoreHome/lang/tr.json
@@ -1,28 +1,29 @@
{
"CoreHome": {
- "CategoryNoData": "Bu kategoride veri yok. \"Eklenmiş tüm populasyon\" deneyiniz.",
- "CheckForUpdates": "Güncellemeleri kontrol et",
+ "CategoryNoData": "Bu kategoride henüz bir veri yok. \"Tüm dağılımlar katılsın\" seçeneğini deneyin.",
+ "CheckForUpdates": "Güncellemeleri denetle",
"CheckPiwikOut": "Piwik'e göz atın!",
- "CloseWidgetDirections": "Widget üstündeki 'X' simgesine tıklayarak bu widgeti kapatabilirsiniz.",
- "DataForThisReportHasBeenPurged": "Bu raporda yer alan veriler %s aydan öncesine ait ve rapora dahil edilmemiştir.",
- "DataTableExcludeAggregateRows": "Tüm satırlar gösteriliyor %s Gizle",
- "DataTableIncludeAggregateRows": "Bütün satırlar gizlendi %s Göster",
+ "ClickToEditX": "%s ögesini düzenlemek için tıklayın",
+ "CloseWidgetDirections": "Gereç üzerindeki 'X' simgesine tıklayarak bu gereci kapatabilirsiniz.",
+ "DataForThisReportHasBeenPurged": "Bu raporda bulunan veriler %s aydan eski ve temizlenmiş.",
+ "DataTableExcludeAggregateRows": "Tüm satırlar görüntüleniyor %s Gizle",
+ "DataTableIncludeAggregateRows": "Tüm satırlar gizlenmiş %s Görüntüle",
"Default": "varsayılan",
- "DonateCall1": "Piwik'i kullanmak için hiçbir maliyetiniz olmayacak, ama bu bize bu ürünü geliştirmek için hiçbir maliyeti olmadığı anlamına gelmiyor.",
- "DonateCall2": "Piwikin gelişmesi ve ilerlemesi için size sürekli ihtiyacı var",
- "DonateFormInstructions": "Miktar seçmek için kaydırıcıyı tıklayın, sonra bağış düğmesini tıklatın.",
- "ExcludeRowsWithLowPopulation": "Tüm satırlar gösteriliyor %s Az veri olanları çıkart",
+ "DonateCall1": "Piwik her zaman ücretsiz kullanılabilecek ancak bu durum geliştirmenin ücretsiz olduğu anlamına gelmiyor.",
+ "DonateCall2": "Gelişip ilerleyebilmesi için Piwik projesi sürekli desteğinize gerek duyuyor.",
+ "DonateCall3": "Piwik işiniz için önemliyse ya da harcanan emeğe değiyorsa %1$slütfen bağış yapmayı düşünün%2$s",
+ "DonateFormInstructions": "Bağış tutarını seçmek için kaydırıcıya kullanın ve Bağış Yap düğmesine tıklayın.",
+ "ExcludeRowsWithLowPopulation": "Tüm satırlar görüntüleniyor %s Düşük dağılımlar katılmasın",
"ExternalHelp": "Yardım (yeni sekmede açılır)",
"FlattenDataTable": "Rapor hiyerarşik yapıda %s Düz yap",
"HowMuchIsPiwikWorth": "Piwikin değeri sizin için ne kadar?",
- "IncludeRowsWithLowPopulation": "Az veriye sahip satırlar gizlendi %s Satırları göster",
+ "IncludeRowsWithLowPopulation": "Düşük dağılımlı satırlar gizlendi %s Tüm satırları görüntüle",
"InjectedHostEmailBody": "Merhaba, bugün Piwik'e erişmeye çalıştım ve bilinmeyen host uyarısı ile karşılaştım.",
"InjectedHostEmailSubject": "Bilinmeyen bir sunucu Piwik'e erişti: %s",
"InjectedHostWarningIntro": "Şu anda Piwik'e %1$s 'den giriş yapıyorsunuz ama Piwik şu adreste çalışması için ayarlandı: %2$s.",
"MakeADifference": "Farklılık yarat: Piwik 2.0'ı finanse etmek için şimdi %1$s bağışla %2$s",
"MakeOneTimeDonation": "Onun yerine bir defalık bağış yapın",
"Menu": "Menü",
- "OnlyForSuperUserAccess": "Bu widget sadece Super User seviyesinde olan kullanıcılara görüntülenir.",
"PageOf": "%1$s nin %2$s",
"PeriodRange": "Aralık",
"ReportGeneratedOn": "%s tarihinde oluşturulan Rapor",
diff --git a/plugins/CoreHome/lang/uk.json b/plugins/CoreHome/lang/uk.json
index 4007acca13..54ec682b22 100644
--- a/plugins/CoreHome/lang/uk.json
+++ b/plugins/CoreHome/lang/uk.json
@@ -1,10 +1,58 @@
{
"CoreHome": {
- "CategoryNoData": "В цій категорії немає даних. Спробуйте \"Виключити всі групи людей\"",
- "JavascriptDisabled": "JavaScript повинен бути увімкнений щоб користовуватися Piwik в стандартному режимі. <br \/> Нажаль, JavaScript вимкнено або не підтримується вашим веб-оглядачем.<br \/> Щоб використовувати стандартний режим, увімкніть JavaScript змінивши налаштування вашого веб-оглядача, а тоді %1$sспробуйте ще раз%2$s.<br \/>",
- "PageOf": "%1$s із %2$s",
- "ShowJSCode": "Показати код вставки javascript",
- "ThereIsNoDataForThisReport": "Відсутні дані для даного звіту",
- "WebAnalyticsReports": "Звіти Веб-Аналітики"
+ "CategoryNoData": "Немає даних в цій категорії. Спробуйте \"Увімкнути усі показники\".",
+ "CheckForUpdates": "Перевірити на оновлення",
+ "CheckPiwikOut": "Перевірити Piwik на оновлення!",
+ "ClickToEditX": "Редагувати %s",
+ "CloseWidgetDirections": "Ви можете закрити цей віджет, натиснувши на значок 'X' у верхній частині віджета.",
+ "DataForThisReportHasBeenPurged": "Дані для цього звіту зберігалися понад %s місяців і були видалені.",
+ "DataTableExcludeAggregateRows": "Вибрані рядки відображені %s Приховати їх",
+ "DataTableIncludeAggregateRows": "Вибрані рядки приховані %s Показати їх",
+ "Default": "за замовчуванням",
+ "DonateCall1": "Piwik завжди буде безкоштовним для використання, але це не означає, що нам це нічого не коштує.",
+ "DonateCall2": "Piwik потребує вашої постійної підтримки, щоб рости і процвітати.",
+ "DonateCall3": "Якщо ви думаєте, що Piwik додав істотне значення для вашого бізнесу або діяльності, %1$sбудь ласка, зробіть пожертву!%2$s",
+ "DonateFormInstructions": "Виберіть повзунком потрібну суму, а потім натисніть Subscribe для пожертвування і передплати.",
+ "ExcludeRowsWithLowPopulation": "Всі рядки відображені %s Крім низьких показників",
+ "ExternalHelp": "Допомога (відкриється в новій вкладці)",
+ "FlattenDataTable": "Звіт побудований за ієрархією %s Зробити його більш конкретним",
+ "HowMuchIsPiwikWorth": "Визначте вартість Piwik для вас",
+ "IncludeRowsWithLowPopulation": "Рядки з низькими показниками відображені %s Показати всі",
+ "InjectedHostEmailBody": "Привіт, спробував зайти в Piwik сьогодні і зіткнувся з проблемою невідомого хоста.",
+ "InjectedHostEmailSubject": "В Piwik був наданий доступ по невідомому хосту: %s",
+ "InjectedHostNonSuperUserWarning": "%1$sНатисніть тут, щоб безпечно увійти в Piwik%2$s і прибрати це попередження. Ви також можете зв'язатися з адміністратором Piwik і повідомити його про проблему (%3$sвідправити йому email%4$s).",
+ "InjectedHostSuperUserWarning": "Piwik може бути неправильно налаштований (наприклад, якщо Piwik був недавно переміщений на новий сервер або переїхав на нову адресу). Ви також можете %1$sнатиснути сюди і додати %2$s в якості довіреного імені хоста Piwik (якщо ви довіряєте йому)%3$s, або %4$sнатисніть сюди і перейдіть %5$s для безпечного доступу до Piwik%6$s.",
+ "InjectedHostWarningIntro": "Зараз ви заходите в Piwik на %1$s, але Piwik був налаштований на цю адресу: %2$s.",
+ "JavascriptDisabled": "JavaScript Вам необхідно включити для коректного стандартного відображення Piwik.<br \/>Якщо Ви читаєте це повідомлення, значить JavaScript заборонений, або не підтримується вашим браузером.<br \/>Для використання стандартного виду, активуйте JavaScript в налаштуваннях вашого браузера, потім %1$sспробуйте оновити сторінку%2$s.<br \/>",
+ "MainNavigation": "Основна навігація",
+ "MakeADifference": "Зробіть свій внесок: %1$sЗробіть внесок зараз%2$s для фінансування Piwik 2.0!",
+ "MakeOneTimeDonation": "Зробити тільки пожертвування (без передплати).",
+ "Menu": "Меню",
+ "NoPrivilegesAskPiwikAdmin": "Ви авторизовані як '%1$s', але, здається, для вас не встановлені права в Piwik. %2$s Попросіть вашого адміністратора (натисніть, щоб написати лист)%3$s надати вам доступ для \"перегляду\" до статистики сайту.",
+ "PageOf": "%1$s з %2$s",
+ "PeriodRange": "Період",
+ "ReportGeneratedOn": "Звіт було складено %s",
+ "ReportGeneratedXAgo": "Звіт було складено %s назад",
+ "SharePiwikLong": "Привіт! Я тільки що знайшов цікавий проект з відкритим вихідним кодом: Piwik! Piwik дозволить відслідковувати відвідувачів на вашому сайті безкоштовно. Ви безперечно повинні це подивитися!",
+ "SharePiwikShort": "Piwik! Вільне та відкрите програмне веб-аналітики. Володійте вашими даними.",
+ "ShareThis": "Поділитися",
+ "ShowJSCode": "Показати JavaScript код для вставки",
+ "SkipToContent": "Перейти до вмісту",
+ "SubscribeAndBecomePiwikSupporter": "Приступити до безпечної оплаті кредитною картою (Paypal), щоб стати прихильником Piwik!",
+ "SupportPiwik": "Підтримайте Piwik!",
+ "TableNoData": "Немає даних для цієї таблиці.",
+ "ThereIsNoDataForThisReport": "Не існує даних для складання звіту.",
+ "UnFlattenDataTable": "Конкретніший звіт %s Побудувати його по ієрархії",
+ "ViewAllPiwikVideoTutorials": "Переглянути всі навчальні ролики про Piwik",
+ "WebAnalyticsReports": "Звіти веб аналітики",
+ "YouAreUsingTheLatestVersion": "У вас остання версія Piwik!",
+ "ClickRowToExpandOrContract": "Натисніть на цей рядок, щоб розширити або скоротити підтаблиці.",
+ "UndoPivotBySubtable": "Цей звіт був згенерований %s Відмінити генерацію",
+ "PivotBySubtable": "Цей звіт не згенерований %1$s Згенеровано %2$s",
+ "QuickAccessTitle": "Пошук %s. Використовуйте клавіші зі стрілками для переходів в межах результатів пошуку. Швидкий доступ: натисніть 'f' для пошуку.",
+ "MenuEntries": "Пункти меню",
+ "Segments": "Сегменти",
+ "AdblockIsMaybeUsed": "У разі, якщо ви використовуєте блокувальник реклами, будь ласка, вимкніть його, щоб переконатися, що Piwik працює без проблем.",
+ "ChangeCurrentWebsite": "Вибір веб-сайту, зараз обраний вебсайт: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/zh-cn.json b/plugins/CoreHome/lang/zh-cn.json
index 2d2a82c414..b479dcbb37 100644
--- a/plugins/CoreHome/lang/zh-cn.json
+++ b/plugins/CoreHome/lang/zh-cn.json
@@ -29,7 +29,6 @@
"MakeOneTimeDonation": "一次性捐款",
"Menu": "菜单",
"NoPrivilegesAskPiwikAdmin": "您当前登录用户是 '%1$s' 但是没有 Piwik 权限。%2$s 联系 Piwik 管理员 (点击发送邮件)%3$s 获得 '查看' 权限。",
- "OnlyForSuperUserAccess": "这个小工具只对超级用户开放。",
"PageOf": "%1$s,总共 %2$s",
"PeriodRange": "时间段",
"ReportGeneratedOn": "本报表生成时间 %s",
diff --git a/plugins/CoreHome/templates/_topBar.twig b/plugins/CoreHome/templates/_topBar.twig
index 74500aadcf..42582f0dc1 100644
--- a/plugins/CoreHome/templates/_topBar.twig
+++ b/plugins/CoreHome/templates/_topBar.twig
@@ -38,4 +38,4 @@
{% endfor %}
</ul>
<a href="javascript:;" data-activates="mobile-left-menu" class="activateLeftMenu hide-on-large-only button-collapse" style="display:none;"><span class="icon-menu-hamburger"></span></a>
-<a href="javascript:;" data-activates="mobile-top-menu" class="activateTopMenu hide-on-large-only button-collapse"><span class="icon-more-verti"></span></a> \ No newline at end of file
+<a href="javascript:;" data-activates="mobile-top-menu" class="activateTopMenu hide-on-large-only button-collapse"><span class="icon-more-verti"></span></a>
diff --git a/plugins/CoreHome/templates/getDefaultIndexView.twig b/plugins/CoreHome/templates/getDefaultIndexView.twig
index 97fae5e996..f5626eeda2 100644
--- a/plugins/CoreHome/templates/getDefaultIndexView.twig
+++ b/plugins/CoreHome/templates/getDefaultIndexView.twig
@@ -10,7 +10,7 @@
{% endblock %}
{% block content %}
- {{ ajax.requestErrorDiv(emailSuperUser|default(''), arePiwikProAdsEnabled) }}
+ {{ ajax.requestErrorDiv(emailSuperUser|default(''), areAdsForProfessionalServicesEnabled, currentModule) }}
{{ ajax.loadingDiv() }}
<div id="content" class="home">
diff --git a/plugins/CorePluginsAdmin/lang/da.json b/plugins/CorePluginsAdmin/lang/da.json
index 7dbeeb966c..324326c7d7 100644
--- a/plugins/CorePluginsAdmin/lang/da.json
+++ b/plugins/CorePluginsAdmin/lang/da.json
@@ -15,6 +15,7 @@
"BeCarefulUsingPlugins": "Programudvidelser, der ikke er forfattet af Piwik holdet skal anvendes med forsigtighed: vi har ikke kontrolleret dem.",
"BeCarefulUsingThemes": "Temaer, der ikke er forfattet af Piwik holdet skal anvendes med forsigtighed: vi har ikke kontrolleret dem.",
"ByXDevelopers": "af %s udviklere",
+ "CannotInstall": "Kan ikke installere (hjælp)",
"Changelog": "Ændringslog",
"ChangeSettingsPossible": "Du kan ændre %1$sindstillinger%2$s for denne programudvidelse",
"CorePluginTooltip": "Kerne programudvidelser har ingen version, da de distribuereter med Piwik.",
@@ -37,6 +38,10 @@
"LastCommitTime": "(last bidrag %s)",
"LastUpdated": "Sidst opdateret",
"LicenseHomepage": "Licens hjemmeside",
+ "LikeThisPlugin": "Kan du lide dette plugin?",
+ "ConsiderDonating": "Overvej donation",
+ "CommunityContributedPlugin": "Dette er et community plugin, givet til dig gratis.",
+ "ConsiderDonatingCreatorOf": "Overvej venligst at donere et beløb til skaberne af %s",
"PluginsExtendPiwik": "Programudvidelser udbygger og udvider funktionaliteten af Piwik.",
"OncePluginIsInstalledYouMayActivateHere": "Når en udvidelse er installeret, kan den aktiveres eller deaktiveres her.",
"Marketplace": "Markedsplads",
@@ -44,6 +49,7 @@
"MenuPlatform": "Platform",
"MissingRequirementsNotice": "Husk at opdatere %1$s %2$s til en nyere version, %1$s %3$s er påkrævet.",
"MissingRequirementsPleaseInstallNotice": "Installer %1$s %2$s, da det kræves af %3$s.",
+ "NewVersion": "ny version",
"NoPluginsFound": "Ingen udvidelsesmoduler fundet",
"NotAllowedToBrowseMarketplacePlugins": "Du kan gennemse listen over programudvidelser, der kan installeres for at tilpasse eller udvide din Piwik platform. Kontakt din administrator, hvis du har brug for nogen af ​​disse installeret.",
"NotAllowedToBrowseMarketplaceThemes": "Du kan gennemse listen over temaer, der kan installeres for at tilpasse udseendet af Piwik platformen. Kontakt din administrator for at få nogen af ​​disse installeret.",
diff --git a/plugins/CorePluginsAdmin/lang/it.json b/plugins/CorePluginsAdmin/lang/it.json
index 1a30966cc4..880e44ca4b 100644
--- a/plugins/CorePluginsAdmin/lang/it.json
+++ b/plugins/CorePluginsAdmin/lang/it.json
@@ -21,7 +21,7 @@
"CorePluginTooltip": "I plugins di base non hanno versione dato che sono distribuiti con Piweik.",
"Deactivate": "Disattiva",
"Developer": "Sviluppatore",
- "DevelopersLearnHowToDevelopPlugins": "Sviluppatori: Impara come ampliare e personalizzare Piwik %1$ssviluppando plugins e temi%2$s.",
+ "DevelopersLearnHowToDevelopPlugins": "Per gli sviluppatori: Imparate come ampliare e personalizzare Piwik %1$ssviluppando plugins e temi%2$s.",
"DoMoreContactPiwikAdmins": "Per installare un nuovo plugin o un nuovo tema, rimani in contatto con il tuo amministratore di Piwik.",
"EmailToEnquireUpdatedVersion": "Manda un'email a %1$s per informarti su una versione aggiornata di %2$s.",
"FeaturedPlugin": "Plugin rappresentativo",
diff --git a/plugins/CorePluginsAdmin/lang/sv.json b/plugins/CorePluginsAdmin/lang/sv.json
index 4d1491d8ed..ee558cc58b 100644
--- a/plugins/CorePluginsAdmin/lang/sv.json
+++ b/plugins/CorePluginsAdmin/lang/sv.json
@@ -40,6 +40,7 @@
"LicenseHomepage": "Licens Hemsida",
"LikeThisPlugin": "Gilla följande plugin?",
"ConsiderDonating": "Överväg att donera",
+ "CommunityContributedPlugin": "Detta är ett gemensamt utvecklat plugin som är gratis för dig att använda.",
"ConsiderDonatingCreatorOf": "Vänlig överväg att donera till upphovsman av %s",
"PluginsExtendPiwik": "Plugins breddar och utökar funktionerna i Piwik.",
"OncePluginIsInstalledYouMayActivateHere": "När en plugin är installerad kan du aktivera eller inaktivera den här.",
diff --git a/plugins/CorePluginsAdmin/lang/uk.json b/plugins/CorePluginsAdmin/lang/uk.json
index 86fc25a9bc..4ac19ce28c 100644
--- a/plugins/CorePluginsAdmin/lang/uk.json
+++ b/plugins/CorePluginsAdmin/lang/uk.json
@@ -1,19 +1,106 @@
{
"CorePluginsAdmin": {
+ "ActionActivatePlugin": "Активувати плагін",
+ "ActionActivateTheme": "Активувати тему",
+ "ActionInstall": "Встановити",
+ "ActionUninstall": "Видалити",
"Activate": "Активувати",
"Activated": "Активовано",
"Active": "Активний",
- "AuthorHomepage": "Сторінки автора",
+ "Activity": "Активність",
+ "AllowedUploadFormats": "Ви можете завантажити плагін або тему у форматі .zip на цій сторінці.",
+ "AuthorHomepage": "Сторінка автора",
+ "Authors": "Автори",
+ "BackToExtendPiwik": "Повернутися до Маркету",
+ "BeCarefulUsingPlugins": "Плагіни, які не розроблені командою Piwik повинні використовуватися з обережністю: ми не переглядаємо їх.",
+ "BeCarefulUsingThemes": "Теми, які розроблені не командою Piwik повинні використовуватися з обережністю: ми не переглядаємо їх.",
+ "ByXDevelopers": "розробниками %s",
+ "CannotInstall": "Неможливо встановити (допомога)",
+ "Changelog": "Історія змін",
+ "ChangeSettingsPossible": "Ви можете %1$sзмінити налаштування%2$s для цього плагіна.",
+ "CorePluginTooltip": "Основні плагіни не мають версії, так як вони поширюються з Piwik.",
"Deactivate": "Деактивувати",
+ "Developer": "Розробник",
+ "DevelopersLearnHowToDevelopPlugins": "Розробникам: Вивчіть, як ви можете розширити та персоналізувати Piwik за допомогою плагінів для %1$sрозробки або тем%2$s.",
+ "DoMoreContactPiwikAdmins": "Для встановлення нового плагіну або нової темм, будь ласка зв'яжіться з вашим Piwik-адміністратором",
+ "EmailToEnquireUpdatedVersion": "Будь ласка, напишіть на електронну пошту %1$s і запросіть оновлену версію %2$s.",
+ "FeaturedPlugin": "Плагін що набирає популярність",
+ "ChangeLookByManageThemes": "Ви можете змінити зовнішній вигляд Piwik: %1$sВибір Теми%2$s.",
+ "GetEarlyAccessForPaidPlugins": "Примітка: в даний час всі плагіни доступні безкоштовно, в майбутньому ми включимо платні плагіни до Маркету (%1$sЗв'яжіться з нами%2$s для раннього доступу).",
+ "History": "Історія",
"Inactive": "Неактивний",
- "LicenseHomepage": "Сторінка ліцензії",
- "PluginsExtendPiwik": "Плагіни розширюють та примножують функціонал Piwik.",
- "OncePluginIsInstalledYouMayActivateHere": "Як тільки плагін встановлено його можна автивувати або деактивувати тут.",
- "PluginHomepage": "Домашня сторінка плагіна",
+ "InfoPluginUpdateIsRecommended": "Оновіть плагін що б скористатися останніми поліпшеннями.",
+ "InfoThemeIsUsedByOtherUsersAsWell": "Примітка: інші зареєстровані користувачі (%1$s) використовують цю ж тему: %2$s.",
+ "InfoThemeUpdateIsRecommended": "Оновіть тему що б насолодитися останніми поліпшеннями.",
+ "InstallingPlugin": "Встановлення %s",
+ "InstallNewPlugins": "Встановити нові плагіни",
+ "InstallNewThemes": "Встановити нові теми",
+ "LastCommitTime": "(останній комміт %s)",
+ "LastUpdated": "Останнє оновлення",
+ "LicenseHomepage": "Дом. сторінка ліцензії",
+ "LikeThisPlugin": "Подобається цей плагін?",
+ "ConsiderDonating": "Розглянути можливість пожертвування",
+ "CommunityContributedPlugin": "Це плагін, зроблений за сприяння спільноти, доставлений до вас безкоштовно.",
+ "ConsiderDonatingCreatorOf": "Будь ласка, розгляньте можливість пожертвування автору %s",
+ "PluginsExtendPiwik": "Плагіни розширюють функціональність Piwik.",
+ "OncePluginIsInstalledYouMayActivateHere": "Після встановлення плагіну Ви можете активувати або деактивувати його тут.",
+ "Marketplace": "Маркет",
+ "MarketplaceSellPluginSubject": "Маркет – продати плагін",
+ "MenuPlatform": "Платформа",
+ "MissingRequirementsNotice": "Будь ласка, поновіть %1$s %2$s до більш нової версії, необхідна версія %1$s %3$s.",
+ "MissingRequirementsPleaseInstallNotice": "Будь ласка, встановіть %1$s %2$s так як воно потрібне для %3$s.",
+ "NewVersion": "нова версія",
+ "NoPluginsFound": "Плагіни не знайдені",
+ "NotAllowedToBrowseMarketplacePlugins": "Можете подивитися список плагінів, які можуть бути встановлені для підстроювання або розширення вашої платформи Piwik. Зв'яжіться з адміністратором якщо вам буде потрібно встановити один з них.",
+ "NotAllowedToBrowseMarketplaceThemes": "Ви можете подивитися список тем, які можуть бути встановлені для налаштування зовнішнього вигляду платформи Piwik. Будь ласка, зв'яжіть з вашим адміністратором, щоб встановити будь-яку з них.",
+ "NoThemesFound": "Теми не знайдені",
+ "NoZipFileSelected": "Ви берете ZIP файл",
+ "NumDownloadsLatestVersion": "Остання версія завантажена: %s разів",
+ "NumUpdatesAvailable": "%s оновлення доступні",
+ "Origin": "Походження",
+ "OriginCore": "Основні",
+ "OriginThirdParty": "Сторонні",
+ "PluginHomepage": "Дом. сторінка плагіна",
"PluginKeywords": "Ключові слова",
- "PluginsManagement": "Керування плагінами",
+ "PluginNotCompatibleWith": "Плагін %1$s несумісний з %2$s.",
+ "PluginNotWorkingAlternative": "Якщо ви використовуєте цей плагін, можливо ви зможете знайти більш нові версії в Маркеті. Якщо ні - можете видалити його.",
+ "PluginRequirement": "%1$s потрібно %2$s.",
+ "PluginsManagement": "Управління плагінами",
+ "PluginUpdateAvailable": "Ви використовуєте версію %1$s остання доступна %2$s",
+ "PluginVersionInfo": "%1$s – %2$s",
+ "PluginWebsite": "Сайт плагіну",
+ "Screenshots": "Скріншоти",
+ "SortByAlpha": "за назвою",
+ "SortByNewest": "по новизні",
+ "SortByPopular": "за популярністю",
"Status": "Статус",
+ "StepDownloadingPluginFromMarketplace": "Завантажити плагін з Маркету",
+ "StepDownloadingThemeFromMarketplace": "Завантажити тему з Маркету",
+ "StepPluginSuccessfullyInstalled": "Ви успішно встановили плагін %1$s %2$s.",
+ "StepPluginSuccessfullyUpdated": "Ви успішно оновили плагін %1$s %2$s.",
+ "StepReplaceExistingPlugin": "Заміна існуючого плагіна",
+ "StepReplaceExistingTheme": "Заміна існуючої теми",
+ "StepThemeSuccessfullyInstalled": "Ви успішно встановили тему %1$s %2$s.",
+ "StepThemeSuccessfullyUpdated": "Ви успішно оновили тему %1$s %2$s.",
+ "StepUnzippingPlugin": "Розпакування плагіна",
+ "StepUnzippingTheme": "Розпакування теми",
+ "SuccessfullyActicated": "Ви успішно активували <strong>%s<\/strong>.",
+ "Support": "Підтримка",
+ "TeaserExtendPiwik": "Поліпшення Piwik за допомогою Плагінів і Тим",
+ "TeaserExtendPiwikByPlugin": "Поліпшення Piwik установкою нового плагіна",
+ "TeaserExtendPiwikByTheme": "Насолоджуйтеся іншим зовнішнім виглядом встановивши нову тему",
+ "TeaserExtendPiwikByUpload": "Поліпшення Piwik закачуванням ZIP файла",
+ "InstallingNewPluginViaMarketplaceOrUpload": "Ви автоматично можете встановити плагіни з Маркету або %1$sзавантажити плагін%2$s в форматі zip.",
+ "Theme": "Тема",
+ "Themes": "Теми",
+ "ThemesDescription": "Теми можуть змінити зовнішній вигляд Piwik призначеного для користувача інтерфейсу, а також забезпечити абсолютно нове візуальне сприйняття, щоб насолоджуватися звітами аналітики.",
+ "ThemesManagement": "Управління темами",
+ "UninstallConfirm": "Ви збираєтеся видалити плагін %s. Плагін буде безповоротно видалений з системи. Ви впевнені, що хочете зробити це?",
+ "Updated": "Оновлено",
+ "UpdatingPlugin": "Оновлення %s",
+ "UploadZipFile": "Завантажити ZIP файл",
"Version": "Версія",
+ "ViewRepositoryChangelog": "Подивитися зміни",
"Websites": "Сайти"
}
} \ No newline at end of file
diff --git a/plugins/CoreUpdater/Commands/Update.php b/plugins/CoreUpdater/Commands/Update.php
index 694b38b288..4c579ad211 100644
--- a/plugins/CoreUpdater/Commands/Update.php
+++ b/plugins/CoreUpdater/Commands/Update.php
@@ -8,6 +8,8 @@
*/
namespace Piwik\Plugins\CoreUpdater\Commands;
+use Piwik\Filechecks;
+use Piwik\SettingsServer;
use Piwik\Version;
use Piwik\Config;
use Piwik\DbHelper;
@@ -68,6 +70,9 @@ class Update extends ConsoleCommand
$this->writeSuccessMessage($output, array('Database upgrade not executed.'));
}
+ $this->writeAlertMessageWhenCommandExecutedWithUnexpectedUser($output);
+
+
} catch(NoUpdatesFoundException $e) {
// Do not fail if no updates were found
$this->writeSuccessMessage($output, array($e->getMessage()));
@@ -153,6 +158,11 @@ class Update extends ConsoleCommand
{
$migrationQueries = $this->getMigrationQueriesToExecute($updater);
+ if(empty($migrationQueries)) {
+ $output->writeln(array(" *** Note: There are no SQL queries to execute. ***", ""));
+ return;
+ }
+
$output->writeln(array(" *** Note: this is a Dry Run ***", ""));
foreach ($migrationQueries as $query) {
@@ -334,4 +344,31 @@ class Update extends ConsoleCommand
return $updater;
}
+
+ /**
+ * @param OutputInterface $output
+ */
+ protected function writeAlertMessageWhenCommandExecutedWithUnexpectedUser(OutputInterface $output)
+ {
+ if(SettingsServer::isWindows()) {
+ // does not work on windows
+ return;
+ }
+
+ $processUserAndGroup = Filechecks::getUserAndGroup();
+ $fileOwnerUserAndGroup = Filechecks::getOwnerOfPiwikFiles();
+
+ if($processUserAndGroup == $fileOwnerUserAndGroup) {
+ // current process user/group appear to be same as the Piwik filesystem user/group -> OK
+ return;
+ }
+ $output->writeln(
+
+ sprintf("<comment>It appears you have executed this update with user %s, while your Piwik files are owned by %s. \n\nTo ensure that the Piwik files are readable by the correct user, you may need to run the following command (or a similar command depending on your server configuration):\n\n$ %s</comment>",
+ $processUserAndGroup,
+ $fileOwnerUserAndGroup,
+ Filechecks::getCommandToChangeOwnerOfPiwikFiles()
+ )
+ );
+ }
}
diff --git a/plugins/CoreUpdater/Test/Mock/UpdaterMock.php b/plugins/CoreUpdater/Test/Mock/UpdaterMock.php
index 09ecf7f8ae..c72510e006 100644
--- a/plugins/CoreUpdater/Test/Mock/UpdaterMock.php
+++ b/plugins/CoreUpdater/Test/Mock/UpdaterMock.php
@@ -26,7 +26,7 @@ class UpdaterMock extends Updater
public function getLatestVersion()
{
- return '4.0.0';
+ return '40.0.0';
}
public function isNewVersionAvailable()
diff --git a/plugins/CoreUpdater/UpdateCommunication.php b/plugins/CoreUpdater/UpdateCommunication.php
index 27f253eed4..d39f44c111 100644
--- a/plugins/CoreUpdater/UpdateCommunication.php
+++ b/plugins/CoreUpdater/UpdateCommunication.php
@@ -24,7 +24,7 @@ class UpdateCommunication
{
/**
- * Checks whether update communciation in general is enabled or not.
+ * Checks whether update communication in general is enabled or not.
*
* @return bool
*/
diff --git a/plugins/CoreUpdater/lang/cs.json b/plugins/CoreUpdater/lang/cs.json
index e8558c4db1..47ed4fff6c 100644
--- a/plugins/CoreUpdater/lang/cs.json
+++ b/plugins/CoreUpdater/lang/cs.json
@@ -57,7 +57,7 @@
"ThankYouUpdatePiwik": "Děkujeme, že používáte Piwik vždy v nejaktuálnější verzi!",
"PostUpdateMessage": "Piwik bude vždy zdarma ke stažení a použití, ale potřebuje pro svůj růst a zlepšení vaši neustálou podporu .",
"PostUpdateSupport": "Pokud potřebujete pomoc s použitím aplikace Piwik, můžete ji obdržet od jejích tvůrců:",
- "EnterpriseSolutions": "Firemní řešení",
+ "ProfessionalServices": "Profesionální služby",
"CloudHosting": "Hostování v Cloudu",
"Updating": "Aktualizuji",
"UpdateUsingHttpsFailed": "Stažení nejnovější verze Piwik pomocí zabezpečeného HTTPS připojení se nezdařilo kvůli následující chybě:",
diff --git a/plugins/CoreUpdater/lang/da.json b/plugins/CoreUpdater/lang/da.json
index cb351c649d..5b3fe4d0db 100644
--- a/plugins/CoreUpdater/lang/da.json
+++ b/plugins/CoreUpdater/lang/da.json
@@ -25,6 +25,11 @@
"HighTrafficPiwikServerEnableMaintenance": "Hvis du administrerer en Piwik server med høj trafik, anbefaler vi at du %1$s midlertidigt deaktivere sporing af besøgende og sætte Piwik brugergrænseflade i vedligeholdelsestilstand%2$s",
"IncompatbilePluginsWillBeDisabledInfo": "Bemærk: Nogle udvidelsesmoduler er ikke kompatible med Piwik %s. De vil blive deaktiveret, når du opgraderer:",
"InstallingTheLatestVersion": "Installerer den seneste version",
+ "LatestBetaRelease": "Den seneste beta release",
+ "LatestStableRelease": "Den seneste stabile udgave",
+ "Latest2XStableRelease": "Den seneste stabile 2.X",
+ "Latest2XBetaRelease": "Den seneste beta 2.X",
+ "LtsSupportVersion": "Long Term Support version",
"MajorUpdateWarning1": "Dette er en stor opdatering! Den vil tage længere tid end normalt.",
"MajorUpdateWarning2": "Det følgende råd er især vigtigt for store installationer.",
"NoteForLargePiwikInstances": "Vigtig bemærkning til store Piwik installationer",
@@ -48,6 +53,17 @@
"UpdateHasBeenCancelledExplanation": "Piwik ét klik-opdatering er blevet annulleret. Kan ovenstående fejlmeddelelse ikke løses, anbefales det at opdatere Piwik manuelt. %1$s Læs %2$sOpdaterings dokumentationen%3$s for at komme i gang!",
"UpdateTitle": "Opdatering",
"UpdateSuccessTitle": "Piwik blev opdateret!",
+ "UpdateErrorTitle": "Opdaterings fejl",
+ "ThankYouUpdatePiwik": "Tak fordi du benytter Piwik og holder den opdateret!",
+ "PostUpdateMessage": "Piwik vil altid være gratis at downloade, men den behøver din fortsatte støtte for at vokse og blive bedre.",
+ "PostUpdateSupport": "If du behøver hjælp til at bruge Piwik, kan du få support fra skaberne:",
+ "CloudHosting": "Cloud hosting",
+ "Updating": "Opdaterer",
+ "UpdateUsingHttpsFailed": "Downloader den seneste Piwik version over en sikker HTTPS forbindelse lykkedes ikke, på grund af følgende fejl:",
+ "UpdateUsingHttpsFailedHelp": "Hvorfor gik det galt? Download af den nyeste Piwik version (over sikker HTTPS forbindelse) kan fejle af flere årsager. F.eks. på grund af en netværksfejl, langsomt netværk eller forkert system konfiguration. Bemærk at det også kan skyldes at din server er under MITM angreb og nogen prøver at erstatte opdateringen med en ondsindet version af Piwik.",
+ "UpdateUsingHttpsFailedHelpWhatToDo": "Det anbefales at prøve at downloade igen ved at bruge den sikre HTTPS forbindelse, da den forhindrer MITM angreb.",
+ "UsingHttps": "bruger den sikre HTTPS forbindelse (anbefalet)",
+ "UsingHttp": "bruger den ikke sikre HTTP forbindelse",
"UpgradeComplete": "Opgradering fuldført!",
"UpgradePiwik": "Opgrader Piwik",
"VerifyingUnpackedFiles": "Kontrollerer filer",
diff --git a/plugins/CoreUpdater/lang/de.json b/plugins/CoreUpdater/lang/de.json
index c4397dd0e5..6a70623792 100644
--- a/plugins/CoreUpdater/lang/de.json
+++ b/plugins/CoreUpdater/lang/de.json
@@ -57,7 +57,7 @@
"ThankYouUpdatePiwik": "Vielen Dank, dass Sie Piwik nutzen und es aktuell halten!",
"PostUpdateMessage": "Piwik wird immer frei herunterzuladen und zu nutzen sein, aber es braucht Ihre dauerhafte Unterstützung um zu wachsen und zu gedeihen.",
"PostUpdateSupport": "Wenn Sie beim Einsatz von Piwik Hilfe benötigen, holen Sie sich Support von dessen Schöpfer:",
- "EnterpriseSolutions": "Enterprise-Lösungen",
+ "ProfessionalServices": "Professionelle Dienste",
"CloudHosting": "Cloud-Hosting",
"Updating": "Aktualisiere",
"UpdateUsingHttpsFailed": "Das Herunterladen der neuesten Piwik Version über eine sichere HTTPS-Verbindung war aufgrund des folgenden Fehlers nicht erfolgreich:",
diff --git a/plugins/CoreUpdater/lang/el.json b/plugins/CoreUpdater/lang/el.json
index ce9c300041..695a3c5519 100644
--- a/plugins/CoreUpdater/lang/el.json
+++ b/plugins/CoreUpdater/lang/el.json
@@ -57,7 +57,7 @@
"ThankYouUpdatePiwik": "Ευχαριστούμε που χρησιμοποιείτε το Piwik και το κρατάτε ενημερωμένο!",
"PostUpdateMessage": "Το Piwik θα είναι πάντα ελεύθερο για κατέβασμα και χρήση, αλλά χρειάζεται τη διαρκή υποστήριξή σας για να αναπτύσσεται και να βελτιώνεται.",
"PostUpdateSupport": "Αν χρειάζεστε βοήθεια στη χρήση του Piwik, μπορείτε να λάβετε υποστήριξη από τους δημιουργούς του:",
- "EnterpriseSolutions": "Λύσεις για επιχειρήσεις",
+ "ProfessionalServices": "Επαγγελματικές Υπηρεσίες",
"CloudHosting": "Φιλοξενία στο σύννεφο",
"Updating": "Γίνεται ενημέρωση",
"UpdateUsingHttpsFailed": "Το κατέβασμα της τελευταίας έκδοσης Piwik πάνω από σύνδεση HTTPS δεν έγινε με επιτυχία, λόγω του ακόλουθου σφάλματος:",
diff --git a/plugins/CoreUpdater/lang/en.json b/plugins/CoreUpdater/lang/en.json
index 5186315310..8086f16b36 100644
--- a/plugins/CoreUpdater/lang/en.json
+++ b/plugins/CoreUpdater/lang/en.json
@@ -57,7 +57,7 @@
"ThankYouUpdatePiwik": "Thank you for using Piwik and keeping it up to date!",
"PostUpdateMessage": "Piwik will always be free to download and use, but it needs your continued support to grow and improve.",
"PostUpdateSupport": "If you need help using Piwik, you can get support from its creators:",
- "EnterpriseSolutions": "Enterprise solutions",
+ "ProfessionalServices": "Professional Services",
"CloudHosting": "Cloud hosting",
"Updating": "Updating",
"UpdateUsingHttpsFailed": "Downloading the latest Piwik version over secure HTTPS connection did not succeed, because of the following error:",
diff --git a/plugins/CoreUpdater/lang/es.json b/plugins/CoreUpdater/lang/es.json
index d3b9111aa3..d97e404a48 100644
--- a/plugins/CoreUpdater/lang/es.json
+++ b/plugins/CoreUpdater/lang/es.json
@@ -25,6 +25,11 @@
"HighTrafficPiwikServerEnableMaintenance": "Si administra un servidor de Piwik con tráfico elevado, le recomendamos %1$sdesactivar momentáneamente el seguimento de los visitantes y disponer la interfaz de usuario de Piwik en modo mantenimiento%2$s.",
"IncompatbilePluginsWillBeDisabledInfo": "Nota: algunos complementos no son compatibles con Piwik %s. Serán desactivados cuando actualice:",
"InstallingTheLatestVersion": "Instalando la última versión",
+ "LatestBetaRelease": "Ultima versión beta estable",
+ "LatestStableRelease": "Ultima liberación de versión estable",
+ "Latest2XStableRelease": "Ultima versión estable 2.X",
+ "Latest2XBetaRelease": "Ultima versión beta 2.X",
+ "LtsSupportVersion": "Versión de apoyo más extensa",
"MajorUpdateWarning1": "¡Esta es una actualización importante! Tardará más de lo usual.",
"MajorUpdateWarning2": "El siguiente consejo es especialmente importante para instalaciones voluminosas.",
"NoteForLargePiwikInstances": "Nota importante para grandes instalaciones de Piwik",
@@ -52,7 +57,7 @@
"ThankYouUpdatePiwik": "¡Gracias por utilizar Piwik y mantenerlo actualizado!",
"PostUpdateMessage": "Piwik siempre será gratuita tanto su descarga y uso, pero necesitamos su continuo apoyo para crecer y mejorar.",
"PostUpdateSupport": "Si necesita ayuda utilizando Piwik, puede obtener apoyo de sus creadores:",
- "EnterpriseSolutions": "Soluciones empresariales",
+ "ProfessionalServices": "Servicios profesionales",
"CloudHosting": "Alojamiento en la nube",
"Updating": "Actualizando",
"UpdateUsingHttpsFailed": "La descarga de la más reciente versión de Piwik sobre una conexión segura HTTPS no fue exitosa, debido al siguiente error:",
diff --git a/plugins/CoreUpdater/lang/fr.json b/plugins/CoreUpdater/lang/fr.json
index 51996305d8..e988e51340 100644
--- a/plugins/CoreUpdater/lang/fr.json
+++ b/plugins/CoreUpdater/lang/fr.json
@@ -57,7 +57,7 @@
"ThankYouUpdatePiwik": "Merci d'utiliser Piwik et de le garder à jour !",
"PostUpdateMessage": "Piwik sera toujours gratuit à télécharger et utiliser, mais il a besoin de votre support continu pour grandir et s'améliorer.",
"PostUpdateSupport": "Si vous avez besoin d'aide pour utiliser Piwik, vous pouvez obtenir du support de la part de ses créateurs :",
- "EnterpriseSolutions": "Solutions d'entreprise",
+ "ProfessionalServices": "Services professionnels",
"CloudHosting": "Hébergement Cloud",
"Updating": "Mise à jour en cours",
"UpdateUsingHttpsFailed": "Le téléchargement de la dernière version de Piwik via une connexion HTTPS sécurisée a échoué pour la raison suivante :",
diff --git a/plugins/CoreUpdater/lang/it.json b/plugins/CoreUpdater/lang/it.json
index 0695373153..a8b10cc92e 100644
--- a/plugins/CoreUpdater/lang/it.json
+++ b/plugins/CoreUpdater/lang/it.json
@@ -57,7 +57,7 @@
"ThankYouUpdatePiwik": "Grazie per l'utilizzo di Piwik e per tenerlo aggiornato!",
"PostUpdateMessage": "Piwik sarà sempre gratuito da scaricare e utilizzare, ma necessita del tuo continuo sostegno per crescere e migliorare.",
"PostUpdateSupport": "Se hai bisogno di aiuto per utilizzare Piwik, puoi averlo dai suoi creatori:",
- "EnterpriseSolutions": "Soluzioni per le aziende",
+ "ProfessionalServices": "Servizi Professionali",
"CloudHosting": "Cloud hosting",
"Updating": "Aggiornamento",
"UpdateUsingHttpsFailed": "Il download dell'ultima versione di Piwik tramite connessione sicura HTTPS non ha avuto successo a causa del seguente errore:",
diff --git a/plugins/CoreUpdater/lang/ja.json b/plugins/CoreUpdater/lang/ja.json
index 5b9e6c99f7..cb276d1566 100644
--- a/plugins/CoreUpdater/lang/ja.json
+++ b/plugins/CoreUpdater/lang/ja.json
@@ -57,7 +57,6 @@
"ThankYouUpdatePiwik": "Piwik を利用し、最新の状態を維持して頂きありがとうございます!",
"PostUpdateMessage": "Piwik は、常に無料でダウンロードして自由に使用できますが、成長し、改善するためには皆様のご支援が必要です。",
"PostUpdateSupport": "Piwik の使い方で助けが必要な場合は、そのクリエイターからサポートを得ることができます:",
- "EnterpriseSolutions": "エンタープライズソリューション",
"CloudHosting": "クラウドホスティング",
"Updating": "アップデート",
"UpdateUsingHttpsFailed": "以下のエラーにより、セキュリティで保護された HTTPS 接続で Piwik の最新バージョンをダウンロードできませんでした。",
diff --git a/plugins/CoreUpdater/lang/nb.json b/plugins/CoreUpdater/lang/nb.json
index e47c271de6..975b2eb501 100644
--- a/plugins/CoreUpdater/lang/nb.json
+++ b/plugins/CoreUpdater/lang/nb.json
@@ -57,7 +57,7 @@
"ThankYouUpdatePiwik": "Takk for at du bruker Piwik og holder den oppdatert!",
"PostUpdateMessage": "Piwik vil alltid være gratis å laste ned og bruke, men det trenger din fortsatte støtte for å vokse og bli bedre.",
"PostUpdateSupport": "Hvis du trenger hjelp til å bruke Piwik, kan du få støtte fra utviklerne:",
- "EnterpriseSolutions": "Bedriftsløsninger",
+ "ProfessionalServices": "Profesjonelle tjenester",
"CloudHosting": "Cloud-hosting",
"Updating": "Oppdaterer",
"UpdateUsingHttpsFailed": "Klarte ikke laste ned siste versjon av Piwik over en sikker HTTPS-forbindelse på grunn av følgende feil:",
diff --git a/plugins/CoreUpdater/lang/nl.json b/plugins/CoreUpdater/lang/nl.json
index 0113f6ff60..331d80c3ea 100644
--- a/plugins/CoreUpdater/lang/nl.json
+++ b/plugins/CoreUpdater/lang/nl.json
@@ -52,7 +52,6 @@
"ThankYouUpdatePiwik": "Dank voor het gebruiken van Piwik en het up-to-date houden!",
"PostUpdateMessage": "Piwik zal altijd gratis te downloaden zijn, maar het heeft je voortdurende support nodig om te groeien en beter te worden.",
"PostUpdateSupport": "Als je hulp nodig hebt, kun je support krijgen bij de makers:",
- "EnterpriseSolutions": "Enterprise oplossingen",
"CloudHosting": "Cloud hosting",
"Updating": "Bijwerken",
"UpdateUsingHttpsFailed": "Het downloaden van de laatste Piwik versie over een beveiligde HTTPS verbinding was niet succesvol, door de volgende fout:",
diff --git a/plugins/CoreUpdater/lang/pt-br.json b/plugins/CoreUpdater/lang/pt-br.json
index 80ba61911f..c9741637c6 100644
--- a/plugins/CoreUpdater/lang/pt-br.json
+++ b/plugins/CoreUpdater/lang/pt-br.json
@@ -57,7 +57,6 @@
"ThankYouUpdatePiwik": "Obrigado por usar o Piwik e mantê-lo atualizado!",
"PostUpdateMessage": "Piwik será sempre gratuito para baixar e usar, mas ele precisa de seu apoio para continuar a crescer e melhorar.",
"PostUpdateSupport": "Se você precisar de ajuda para usar Piwik, você pode obter o apoio de seus criadores:",
- "EnterpriseSolutions": "Soluções corporativas",
"CloudHosting": "Nuvem de hospedagem",
"Updating": "Atualizando",
"UpdateUsingHttpsFailed": "Fazendo o download da versão mais recente do Piwik sobre conexão segura HTTPS não teve sucesso, devido ao seguinte erro:",
diff --git a/plugins/CoreUpdater/lang/ru.json b/plugins/CoreUpdater/lang/ru.json
index 768fc2b8bc..4b63c6e4a3 100644
--- a/plugins/CoreUpdater/lang/ru.json
+++ b/plugins/CoreUpdater/lang/ru.json
@@ -57,7 +57,6 @@
"ThankYouUpdatePiwik": "Спасибо за то, что пользуетесь Piwik и обновляете его!",
"PostUpdateMessage": "Piwik всегда будет свободным для скачивания и использования, но ему нужна постоянная поддержка чтобы расти и улучшаться.",
"PostUpdateSupport": "Если вам нужна помощь в использовании Piwik, то вы сможете получить поддержку от его создателей:",
- "EnterpriseSolutions": "Решения для предприятия",
"CloudHosting": "Облачный хостинг",
"Updating": "Обновление",
"UpdateUsingHttpsFailed": "Не удалось скачать последнюю версию Piwik по безопасному HTTPS, возникла следующая ошибка:",
diff --git a/plugins/CoreUpdater/lang/sk.json b/plugins/CoreUpdater/lang/sk.json
index 49899599e9..c9ea15ceac 100644
--- a/plugins/CoreUpdater/lang/sk.json
+++ b/plugins/CoreUpdater/lang/sk.json
@@ -57,7 +57,6 @@
"ThankYouUpdatePiwik": "Ďakujeme za to, že používate Piwik a že ho udržiavate aktualizovaný!",
"PostUpdateMessage": "Piwik bude vždy voľne dostupný na stiahnutie a používanie, ale potrebuje Vašu neustálu podporu, aby rástol a zlepšoval sa.",
"PostUpdateSupport": "Ak potrebujete pomoc pri používaní projektu Piwik, môžete získať podporu od jeho tvorcov:",
- "EnterpriseSolutions": "Podnikové riešenia",
"CloudHosting": "Cloud hosting",
"Updating": "Aktualizovanie",
"UpdateUsingHttpsFailed": "Stiahnutie najnovšej Piwik-verzie cez bezpečné HTTPS spojenie nebolo úspešné kvôli nasledujúcej chybe:",
diff --git a/plugins/CoreUpdater/lang/sq.json b/plugins/CoreUpdater/lang/sq.json
index 7630feb265..4704abcab7 100644
--- a/plugins/CoreUpdater/lang/sq.json
+++ b/plugins/CoreUpdater/lang/sq.json
@@ -18,17 +18,33 @@
"ExceptionArchiveEmpty": "Arkivë bosh.",
"ExceptionArchiveIncompatible": "Arkivë e papërputhshme: %s",
"ExceptionArchiveIncomplete": "Arkiva nuk është e plotë: mungojnë disa kartela (p.sh. %s).",
+ "FeedbackRequest": "Mos ngurroni të ndani me Ekipin e Piwik-ut idetë dhë sugjerimet tuaja, këtu:",
"HelpMessageContent": "Hidhini një sy %1$s Piwik FAQ %2$s që shpjegojnë gabimet më të rëndomta gjatë përditësimesh. %3$s Pyesni përgjegjësin e sistemit tuaj - ai mund të jetë në gjendje të t’ju ndihmojë për gabimin, i cili ka shumë të ngjarë të ketë lidhje me rregullimet e shërbyesit tuaj ose ato të MySQL-së.",
"HelpMessageIntroductionWhenError": "Sa më sipër, është thelbi i mesazhit të gabimit. Do të ndihmonte të shpjegohej shkaku, por nëse keni nevojë për ndihmë të mëtejshme, ju lutem:",
"HelpMessageIntroductionWhenWarning": "Përditësimi u plotësua me sukses, sidoqoftë pati ca kleçka gjatë procesit. Ju lutem, lexoni përshkrimet më sipër për hollësi. Për më tepër ndihmë:",
+ "HighTrafficPiwikServerEnableMaintenance": "Nëse administroni një shërbyes Piwik me trafik të madh, këshillojmë ta %1$sçaktivizoni përkohësisht Gjurmimin e vizitorëve dhe ta kaloni Ndërfaqen e Përdoruesit të Piwik-ut nën mënyrën mirëmbajtje%2$s.",
+ "IncompatbilePluginsWillBeDisabledInfo": "Shënim: disa shtojca s’janë të përputhshme me Piwik %s. Ato do të çaktivizohen, kur ta përditësoni:",
"InstallingTheLatestVersion": "Po instalohet versioni më i fundit",
+ "LatestBetaRelease": "Hedhja beta më e re në qarkullim",
+ "LatestStableRelease": "Hedhja e qëndrueshme më e re në qarkullim",
+ "Latest2XStableRelease": "Hedhja e qëndrueshme 2.X më e re në qarkullim",
+ "Latest2XBetaRelease": "Hedhja beta 2.X më e re në qarkullim",
+ "LtsSupportVersion": "Version me Mbulim Afatgjatë",
+ "MajorUpdateWarning1": "Ky është një përditësim i rëndësishëm! Do të hajë më tepër kohë se zakonisht.",
+ "MajorUpdateWarning2": "Këshilla vijuese është veçanërisht e rëndësishme për instalime të mëdha.",
"NoteForLargePiwikInstances": "Shënime të rëndësishme për instalime Piwik me shumë ngarkesë",
"NoteItIsExpectedThatQueriesFail": "Shënim: nëse këto kërkesa i ekzekutoni dorazi, pritet që ndonjëra, ose disa, prej tyre edhe të dështojë. Në një rast të tillë, thjesht shpërfillini gabimet, dhe vazhdoni me pasueset në listë.",
+ "NotificationClickToUpdatePlugins": "Klikoni këtu që të përditësoni shtojcat tuaja tani:",
+ "NotificationClickToUpdateThemes": "Klikoni këtu që të përditësoni temat tuaja tani:",
+ "NotificationSubjectAvailableCoreUpdate": "Është gati Piwik %s i ri",
+ "NotificationSubjectAvailablePluginUpdate": "Ka gati përditësime për shtojcat tuaja Piwik",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik-u u përmirësua me sukses!",
"PiwikUpdatedSuccessfully": "Piwik-u u përditësua me sukses!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Baza e të dhënave për Piwik-un do të përmirësohet prej versionit %1$s te versioni i ri %2$s.",
"ReadyToGo": "Gati për t’ia filluar?",
"TheFollowingPluginsWillBeUpgradedX": "Shtojcat vijuese do të përditësohen: %s.",
+ "TheFollowingDimensionsWillBeUpgradedX": "Përmasat vijuese do të përditësohen: %s.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Disa nga shtojcat që keni, janë përditësuar te Marketplace:",
"ThereIsNewVersionAvailableForUpdate": "Mund të kihet një version i ri, i përmirësuar, i Piwik-ut",
"TheUpgradeProcessMayFailExecuteCommand": "Nëse keni një bazë të dhënash Piwik të madhe, përditësimet mund të zgjasin shumë në shfletues. Në të tilla raste, mund t’i bëni përditësimet që nga rresht urdhrash: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Procesi i përditësimit të bazës së të dhënave mund të zgjasë ca, ndaj bëni durim.",
@@ -37,6 +53,17 @@
"UpdateHasBeenCancelledExplanation": "Përditësimi Piwik Me Një Klik u anulua. Nëse s’ndreqni dot gabimin me mesazhin e mësipërm, këshillohet ta përditësoni Piwik-un dorazi. %1$s Ju lutem, shihni %2$sdokumentimin e Përditësimeve%3$s për t’ia filluar!",
"UpdateTitle": "Piwik › Përditësim",
"UpdateSuccessTitle": "Piwik-u u përmirësua me sukses!",
+ "UpdateErrorTitle": "Gabim në përditësim",
+ "ThankYouUpdatePiwik": "Faleminderit për përdorimin dhe mbajtjen e Piwik-ut të përditësuar!",
+ "PostUpdateMessage": "Shkarkimi dhe përdorimi i Piwik-ut do të jenë gjithnjë të lirë, por i duhet përkrahja juaj e vazhdueshme për t’u rritur dhe përmirësuar.",
+ "PostUpdateSupport": "Nëse ju duhet ndihmë mbi përdorimin e Piwik-ut, mund të merrni asistencë nga krijuesit e tij:",
+ "CloudHosting": "Strehim në re",
+ "Updating": "Përditësim",
+ "UpdateUsingHttpsFailed": "Shkarkimi i versionit më të ri të Piwik-ut përmes një lidhje të sigurt HTTPS nuk pati sukses, për shkak të gabimit vijues:",
+ "UpdateUsingHttpsFailedHelp": "Pse dështoi? Shkarkimi i versionit më të ri të Piwik-ut (përmes një lidhjeje HTTPS të sigurt) mund të dështojë për shkak të një numri arsyesh, për shembull, për shkak të një gabimi rrjeti, shpejtësie të ulët në rrjet ose formësim të gabuar sistemi. Mbani parasysh që kjo mund të dojë të thotë edhe se shërbyesi juaj është objektiv i një sulmi MITM dhe se dikush po përpiqet të zëvendësojë përditësimin me një version dashakeq të Piwik-ut.",
+ "UpdateUsingHttpsFailedHelpWhatToDo": "Këshillohet të riprovohet shkarkimi duke përdorur lidhje të sigurt HTTPS, ngaqë ajo i parandalon sulmet MITM.",
+ "UsingHttps": "duke përdorur lidhje HTTPS të sigurt (e këshillueshme)",
+ "UsingHttp": "duke përdorur lidhje HTTPS jo të sigurt",
"UpgradeComplete": "Përmirësim i plotësuar!",
"UpgradePiwik": "Përmirësojeni Piwik-un",
"VerifyingUnpackedFiles": "Po verifikohen kartelat e shpaketuara",
@@ -45,6 +72,7 @@
"YouCanUpgradeAutomaticallyOrDownloadPackage": "Mund ta përmirësoni automatikisht me versionin %s, ose të shkarkoni paketën dhe ta instaloni atë dorazi:",
"YouCouldManuallyExecuteSqlQueries": "Nëse nuk jeni në gjendje të xhironi përditësuesin nga rresht urdhrash dhe Piwik-u nuk arrin të përmirësohet (për shkak mbarimi kohe për bazën e të dhënave, mbarimi kohe për shfletuesin, ose çfarëdo çështje tjetër), mundeni të ekzekutoni kërkesa SQL dorazi që të përditësoni Piwik-un.",
"YouMustDownloadPackageOrFixPermissions": "Piwik-u është i pazoti të mbishkruajë instalimin tuaj të tanishëm. Mundeni ose të ndreqni lejet mbi drejtorira\/kartela, ose të shkarkoni paketën dhe instaloni versionin %s dorazi:",
- "YourDatabaseIsOutOfDate": "Baza juaj e të dhënave për Piwik-un është e vjetruar, dhe duhet përmirësuar përpara se të mund të vazhdoni."
+ "YourDatabaseIsOutOfDate": "Baza juaj e të dhënave për Piwik-un është e vjetruar, dhe duhet përmirësuar përpara se të mund të vazhdoni.",
+ "ViewVersionChangelog": "Shihni regjistër ndryshimesh për këtë version:"
}
} \ No newline at end of file
diff --git a/plugins/CoreUpdater/lang/sr.json b/plugins/CoreUpdater/lang/sr.json
index 5f18c9813a..c199b6c3fb 100644
--- a/plugins/CoreUpdater/lang/sr.json
+++ b/plugins/CoreUpdater/lang/sr.json
@@ -52,7 +52,6 @@
"ThankYouUpdatePiwik": "Hvala vam što koristite Piwik i što ga držite uvek ažurnim!",
"PostUpdateMessage": "Piwik će uvek biti besplatan za preuzimanje i korišćenje ali on zahteva vašu neprestanu podršku kako bi rastao i razvijao se.",
"PostUpdateSupport": "Ukoliko vam je potrebna pomoć oko korišćenja Piwik-a, možete je dobiti od njegovih tvoraca:",
- "EnterpriseSolutions": "Poslovna rešenja",
"CloudHosting": "Hosting u oblacima",
"Updating": "Ažuriranje",
"UpdateUsingHttpsFailed": "Preuzimanje poslednje verzije Piwik-a preko HTTPS-a nije uspelo zbog sledeće greške:",
diff --git a/plugins/CoreUpdater/lang/sv.json b/plugins/CoreUpdater/lang/sv.json
index 4b2a7c5e4e..d752241e64 100644
--- a/plugins/CoreUpdater/lang/sv.json
+++ b/plugins/CoreUpdater/lang/sv.json
@@ -56,7 +56,6 @@
"ThankYouUpdatePiwik": "Tack för att du använder Piwik och håller den uppdaterad!",
"PostUpdateMessage": "Piwik kommer alltid att vara fri att använda men behöver ditt stöd för att växa och utvecklas.",
"PostUpdateSupport": "Om du behöver hjälp att använda Piwik kan du få stöd från utvecklarna:",
- "EnterpriseSolutions": "Enterpriselösningar",
"CloudHosting": "Molntjänst",
"Updating": "Uppdateringar",
"UpdateUsingHttpsFailed": "Nedladdning ac den senaste versionen av Piwik över HTTPS fungerade inte på grund av följande fel:",
diff --git a/plugins/CoreUpdater/lang/tr.json b/plugins/CoreUpdater/lang/tr.json
index 5db9786d12..1fcd436d79 100644
--- a/plugins/CoreUpdater/lang/tr.json
+++ b/plugins/CoreUpdater/lang/tr.json
@@ -1,11 +1,14 @@
{
"CoreUpdater": {
- "ClickHereToViewSqlQueries": "Çalıştırılacak olan SQL sorgularının listesini görmek ve kopyalamak için tıklayın",
- "DatabaseUpgradeRequired": "Veritabanı güncellemesi gerekiyor",
- "DownloadingUpdateFromX": "Güncelleme %sdan indiriliyor",
- "DownloadX": "İndir %s",
- "EmptyDatabaseError": "Veritabanı %s boş. Yapılandırma dosyanızı değiştirmeniz veya silmeniz gerekmektedir.",
- "ErrorDIYHelp": "Eğer gelişmiş bir kullanıcı iseniz ve veritabanı yükseltmesinde bir hata ile karşılaşırsanız:",
+ "ClickHereToViewSqlQueries": "Yürütülecek SQL sorgularının listesini görmek ve kopyalamak için tıklayın",
+ "CriticalErrorDuringTheUpgradeProcess": "Güncelleme sırasında önemli bir sorun çıktı:",
+ "DatabaseUpgradeRequired": "Veritabanı Güncellemesi Gerekli",
+ "DisablingIncompatiblePlugins": "Uyumsuz uygulama ekleri devre dışı bırakılıyor: %s",
+ "DownloadingUpdateFromX": "Güncelleme %s üzerinden indiriliyor",
+ "DownloadX": "%s İndir",
+ "EmptyDatabaseError": "%s veritabanı boş. Piwik ayar dosyanızı değiştirmeniz ya da silmeniz gerekli.",
+ "ErrorDIYHelp": "İleri düzey bir kullanıcıysanız ve veritabanı güncellemesinde bir sorun ile karşılaşırsanız:",
+ "ErrorDIYHelp_1": "Sorunun kaynağını bulup düzeltin (memory_limit ya da max_execution_time gibi)",
"ErrorDIYHelp_2": "Başarız olan güncellemedeki kalan sorguları çalıştır",
"ErrorDuringPluginsUpdates": "Eklenti güncellenirken hata meydana geldi:",
"ExceptionAlreadyLatestVersion": "Piwik versiyonunuz %s günceldir.",
diff --git a/plugins/CoreUpdater/lang/uk.json b/plugins/CoreUpdater/lang/uk.json
index f54a44fb5d..e0b1b50c05 100644
--- a/plugins/CoreUpdater/lang/uk.json
+++ b/plugins/CoreUpdater/lang/uk.json
@@ -3,6 +3,7 @@
"ClickHereToViewSqlQueries": "Клацніть тут для перегляду та копіювання пеерліку SQL запитів що повинні бути виконані.",
"CriticalErrorDuringTheUpgradeProcess": "Критична помилка протягом процесу поновлення:",
"DatabaseUpgradeRequired": "Необхідно поновити базу даних",
+ "DisablingIncompatiblePlugins": "Відключення несумісних плагінів: %s",
"DownloadingUpdateFromX": "Завантажити поновлення від %s",
"DownloadX": "Завантажити %s",
"EmptyDatabaseError": "База даних %s порожня. Відредагуйте або видаліть файл конфігурації Piwik.",
@@ -17,18 +18,34 @@
"ExceptionArchiveEmpty": "Порожній архів",
"ExceptionArchiveIncompatible": "Несумісний формат архіву: %s",
"ExceptionArchiveIncomplete": "Архів не повний: деякі файли відсутні (напр. %s).",
+ "FeedbackRequest": "Не соромтеся поділитися своїми ідеями і пропозиціями з командою з Piwik тут:",
"HelpMessageContent": "Гляньте на %1$s Piwik FAQ %2$s де є пояснення найтиповіших помилок що виникають протягом поновлення. %3$s Зверніться за допомогою до системного адміністратора, - що може допомогти вирішити помилки пов’язані з сервером або налаштуванням бази даних.",
"HelpMessageIntroductionWhenError": "Вище знаходиться повідомлення про помилку рівня ядра. Це повинно допомогти у виявлення причини, але якщо потрібна подальша допомога, будьласка:",
"HelpMessageIntroductionWhenWarning": "Поновлення завершено успішно, однак були інциденти протягом проходження процесу. Будь-ласка прочитайте опис щоб дізнатися деталі. Для подальшої допомоги:",
+ "HighTrafficPiwikServerEnableMaintenance": "Якщо ви керуєте сервером Piwik з великим обсягом трафіку, ми рекомендуємо %1$sна мить вимкнути Відстеження відвідувачів і перемкнути Інтерфейс Piwik в режим%2$s підтримки.",
+ "IncompatbilePluginsWillBeDisabledInfo": "Примітка: деякі плагіни не сумісні з Piwik %s. Вони будуть відключені при оновленні:",
"InstallingTheLatestVersion": "Встановлення останньої версії",
- "NoteForLargePiwikInstances": "Важливе зауваження для великих інсталяцій Piwik",
+ "LatestBetaRelease": "Останній тестовий випуск",
+ "LatestStableRelease": "Останній стабільний випуск",
+ "Latest2XStableRelease": "Останній стабільний 2.X",
+ "Latest2XBetaRelease": "Останній тестовий 2.X",
+ "LtsSupportVersion": "Версія Довгострокової підтримки",
+ "MajorUpdateWarning1": "Це велике оновлення! Може знадобитися більше часу, ніж зазвичай.",
+ "MajorUpdateWarning2": "Наступна порада особливо важлива для великих оновлень!",
+ "NoteForLargePiwikInstances": "Важліве зауваження для великих інсталяцій Piwik",
"NoteItIsExpectedThatQueriesFail": "Примітка: якщо ці запити виконано вручну, є ймовірність що деякі з них завершаться з помилками. В такому випадку ігноруйте помилки та виконуйте наступний запит з переліку.",
+ "NotificationClickToUpdatePlugins": "Для оновлення плагінів, натисніть сюди:",
+ "NotificationClickToUpdateThemes": "Для поновлення тем натисніть сюди:",
+ "NotificationSubjectAvailableCoreUpdate": "Доступна новая версия Piwik %s",
+ "NotificationSubjectAvailablePluginUpdate": "Доступні оновлення плагінів Piwik",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik успішно поновлено!",
"PiwikUpdatedSuccessfully": "Piwik успішно поновлено!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "База даних Piwik буде поновлена з версії %1$s до нової версії %2$s.",
"ReadyToGo": "Готові розпочати?",
- "TheFollowingPluginsWillBeUpgradedX": "Наступні плагіни буде поновлено: %s.",
- "ThereIsNewVersionAvailableForUpdate": "Є нова версія Piwik доступна до поновлення",
+ "TheFollowingPluginsWillBeUpgradedX": "Наступні плагіни будуть оновлені: %s.",
+ "TheFollowingDimensionsWillBeUpgradedX": "Наступні розміри будуть оновлені: %s.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Деякі плагіни були оновлені в Маркеті:",
+ "ThereIsNewVersionAvailableForUpdate": "Доступна нова версія Piwik",
"TheUpgradeProcessMayFailExecuteCommand": "Якщо у вас велика база даних Piwik, поновлення можуть забирати надто багато часу для запуску їх з браузера. В такому випадку, ви можете виконати поновлення з командного рядка: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Процес поновлення бази даних може забрати трохи часу, зачекайте будь-ласка.",
"UnpackingTheUpdate": "Розпаковування поновлення",
@@ -36,6 +53,17 @@
"UpdateHasBeenCancelledExplanation": "Поновлення Piwik Одним Клацанням було скасовано. Якщо неможливо виправити повідомлення про помилку вище, рекомендується поновити Piwik вручну. %1$s Гляньте %2$sДокументацію про поновлення%3$s щоб розпочати!",
"UpdateTitle": "Piwik › Поновлення",
"UpdateSuccessTitle": "Piwik успішно поновлено!",
+ "UpdateErrorTitle": "Помилка при оновленні",
+ "ThankYouUpdatePiwik": "Спасибі за те, що користуєтеся Piwik і оновлюєте його!",
+ "PostUpdateMessage": "Piwik завжди буде вільним для скачування і використання, але йому потрібна постійна підтримка щоб рости і поліпшуватися.",
+ "PostUpdateSupport": "Якщо вам потрібна допомога у використанні Piwik, то ви зможете отримати підтримку від його творців:",
+ "CloudHosting": "Хмарний хостинг",
+ "Updating": "Оновлення",
+ "UpdateUsingHttpsFailed": "Не вдалося завантажити останню версію Piwik з безпечного HTTPS, виникла наступна помилка:",
+ "UpdateUsingHttpsFailedHelp": "Чому це не вдалося? Завантаження останньої версії Piwik (через безпечне HTTPS з'єднання) може потерпіти невдачу з різних причин, наприклад, через помилку з'єднання, повільній швидкості з'єднання або неправильного налаштування системи. Зверніть увагу, що це також може означати, що ваш сервер піддається атаці MITM, і хтось намагається замінити оновлення на шкідливу версію Piwik.",
+ "UpdateUsingHttpsFailedHelpWhatToDo": "Рекомендується потворити завантаження, використовуючи безпечне з'єднання HTTPS, так як воно запобігає атаки MITM.",
+ "UsingHttps": "використовується захищене HTTPS-соединение (рекомендується)",
+ "UsingHttp": "використовується незахищене HTTP-з'єднання",
"UpgradeComplete": "Поновлення завершено!",
"UpgradePiwik": "Поновити Piwik",
"VerifyingUnpackedFiles": "Перевірка розпакованих файлів",
@@ -44,6 +72,7 @@
"YouCanUpgradeAutomaticallyOrDownloadPackage": "Можна поновити до версії %s автоматично або завантажити пакунок та встановити в ручну:",
"YouCouldManuallyExecuteSqlQueries": "Якщо немає можливості використовувати поновлювач з командного рядка або якщо не вдається здійснити поновлення Piwik (через розрив підєднання до бази даних, тайм-аут веб-оглядача чи з іншої причини) є можливість виконати SQL запити в ручну для поновлення бази даних до останньої версії.",
"YouMustDownloadPackageOrFixPermissions": "Неможливо перезаписати поточну інсталяцію. Виправте права доступу на директорії\/файли, або завантажте архів та встановіть %s версію вручну:",
- "YourDatabaseIsOutOfDate": "База даних Piwik застаріла, і повинна бути поновлена перед наступним кроком."
+ "YourDatabaseIsOutOfDate": "База даних Piwik застаріла, і повинна бути поновлена перед наступним кроком.",
+ "ViewVersionChangelog": "Перегляд змін для цієї версії:"
}
} \ No newline at end of file
diff --git a/plugins/CoreUpdater/lang/zh-cn.json b/plugins/CoreUpdater/lang/zh-cn.json
index dfc4f5b57f..01f231928c 100644
--- a/plugins/CoreUpdater/lang/zh-cn.json
+++ b/plugins/CoreUpdater/lang/zh-cn.json
@@ -57,7 +57,6 @@
"ThankYouUpdatePiwik": "感谢您使用Piwik并保持及时更新!",
"PostUpdateMessage": "Piwik将永远是免费下载和使用,但它需要你们继续支持增长和提高。",
"PostUpdateSupport": "如果你需要使用Piwik帮助,您可以从它的创造者那里获取支持:",
- "EnterpriseSolutions": "企业解决方案",
"CloudHosting": "云主机",
"Updating": "更新中",
"UpdateUsingHttpsFailed": "下载最新版本的Piwik通过安全的HTTPS连接没有成功,因为以下错误:",
diff --git a/plugins/CoreUpdater/lang/zh-tw.json b/plugins/CoreUpdater/lang/zh-tw.json
index 82de574c81..e866d7f3ff 100644
--- a/plugins/CoreUpdater/lang/zh-tw.json
+++ b/plugins/CoreUpdater/lang/zh-tw.json
@@ -52,7 +52,6 @@
"ThankYouUpdatePiwik": "感謝您使用Piwik並保持更新!",
"PostUpdateMessage": "Piwik將永遠是免費下載並使用,但它需要你們繼續的支持成長及茁壯。",
"PostUpdateSupport": "如果你需要幫助使用Piwik,你可以從作者那邊獲得支持:",
- "EnterpriseSolutions": "企業解決方案",
"CloudHosting": "雲端代管",
"Updating": "更新中",
"UpdateUsingHttpsFailed": "在安全的HTTPS連線中下載最新的Piwik版本並沒有成功,因為下面的錯誤:",
diff --git a/plugins/CoreUpdater/templates/updateSuccess.twig b/plugins/CoreUpdater/templates/updateSuccess.twig
index 3c930e0f42..a075e35730 100644
--- a/plugins/CoreUpdater/templates/updateSuccess.twig
+++ b/plugins/CoreUpdater/templates/updateSuccess.twig
@@ -24,10 +24,10 @@
<div class="row">
<div class="col s5 offset-s1">
- <a href="https://piwik.pro/enterprise?pk_medium=App_Enterprise_button&pk_source=Piwik_App&pk_campaign=App_Updated" class="btn btn-block">{{ 'CoreUpdater_EnterpriseSolutions'|translate }}</a>
+ <a href="https://piwik.org/support/?pk_medium=Update_Success_button&pk_source=Piwik_App&pk_campaign=App_Updated" class="btn btn-block">{{ 'CoreUpdater_ProfessionalServices'|translate }}</a>
</div>
<div class="col s5">
- <a href="https://piwik.pro/cloud?pk_medium=App_Cloud_button&pk_source=Piwik_App&pk_campaign=App_Updated" class="btn btn-block">{{ 'CoreUpdater_CloudHosting'|translate }}</a>
+ <a href="https://piwik.org/hosting/?pk_medium=App_Cloud_button&pk_source=Piwik_App&pk_campaign=App_Updated" class="btn btn-block">{{ 'CoreUpdater_CloudHosting'|translate }}</a>
</div>
</div>
diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
index 4065fd10f7..ef6ad37ea8 100644
--- a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
+++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
@@ -26,7 +26,6 @@ class AllColumns extends HtmlTable
public function beforeRender()
{
$this->config->show_extra_columns = true;
- $this->config->datatable_css_class = 'dataTableVizAllColumns';
$this->config->show_exclude_low_population = true;
parent::beforeRender();
@@ -34,6 +33,8 @@ class AllColumns extends HtmlTable
public function beforeGenericFiltersAreAppliedToLoadedDataTable()
{
+ $this->config->datatable_css_class = 'dataTableVizAllColumns';
+
$this->dataTable->filter('AddColumnsProcessedMetrics');
$properties = $this->config;
@@ -67,7 +68,8 @@ class AllColumns extends HtmlTable
public function beforeLoadDataTable()
{
- $this->requestConfig->request_parameters_to_modify['pivotBy'] = null; // always unset pivotBy
+ unset($this->requestConfig->request_parameters_to_modify['pivotBy']);
+ unset($this->requestConfig->request_parameters_to_modify['pivotByColumn']);
}
protected function isPivoted()
diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php
index 94cfa60050..a31a88d190 100644
--- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php
+++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php
@@ -20,10 +20,10 @@ class Bar extends JqplotGraph
const ID = 'graphVerticalBar';
const FOOTER_ICON = 'icon-chart-bar';
const FOOTER_ICON_TITLE = 'General_VBarGraph';
-
- public function beforeRender()
+
+ public function beforeLoadDataTable()
{
- parent::beforeRender();
+ parent::beforeLoadDataTable();
$this->config->datatable_js_type = 'JqplotBarGraphDataTable';
}
diff --git a/plugins/CoreVisualizations/javascripts/jqplot.js b/plugins/CoreVisualizations/javascripts/jqplot.js
index 5f51e7e341..e840a71537 100644
--- a/plugins/CoreVisualizations/javascripts/jqplot.js
+++ b/plugins/CoreVisualizations/javascripts/jqplot.js
@@ -282,7 +282,7 @@
* creating span elements with ticks and adding their width.
* Rendered ticks have to be visible to get their real width. But it
* is too fast for user to notice it. If total ticks width is bigger
- * than container width then half of ticks is beeing cut out and their
+ * than container width then half of ticks is being cut out and their
* width is tested again. Until their total width is smaller than chart
* div. There is a failsafe so check will be performed no more than 20
* times, which is I think more than enough. Each tick have its own
diff --git a/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig b/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig
index 1fbbf6517f..a85ee66852 100644
--- a/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig
+++ b/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig
@@ -20,6 +20,7 @@
{% else %}
{%- for rowId, row in dataTable.getRows() -%}
{%- set rowHasSubtable = not subtablesAreDisabled and row.getIdSubDataTable() and properties.subtable_controller_action is not null -%}
+ {%- set rowSubtableId = row.getMetadata('idsubdatatable_in_db')|default(row.getIdSubDataTable()) -%}
{%- set isSummaryRow = rowId == constant('Piwik\\DataTable::ID_SUMMARY_ROW') -%}
{%- set shouldHighlightRow = isSummaryRow and properties.highlight_summary_row -%}
@@ -30,9 +31,10 @@
or not properties.replace_row_with_subtable|default(false) -%}
{% if showRow %}
- <tr {% if rowHasSubtable %}id="{{ row.getIdSubDataTable() }}"{% endif %}
+ <tr {% if rowHasSubtable %}id="{{ rowSubtableId }}"{% endif %}
{% if row.getMetadata('segment') is not false %} data-segment-filter="{{ row.getMetadata('segment')|e('html_attr') }}"{% endif %}
{% if row.getMetadata('url') is not false %} data-url-label="{{ row.getMetadata('url')|rawSafeDecoded }}"{% endif %}
+ data-row-metadata="{{ row.getMetadata|json_encode|e('html_attr') }}"
class="{{ row.getMetadata('css_class') }} {% if rowHasSubtable %}subDataTable{% endif %}{% if shouldHighlightRow %} highlight{% endif %}{% if isSummaryRow %} summaryRow{% endif %}"
{% if rowHasSubtable %}title="{{ 'CoreHome_ClickRowToExpandOrContract'|translate }}"{% endif %}>
{% for column in properties.columns_to_display %}
@@ -45,7 +47,7 @@
{# display subtable if present and showing expanded datatable #}
{% if properties.show_expanded|default(false) and rowHasSubtable %}
- {% include "@CoreVisualizations/_dataTableViz_htmlTable.twig" with {'dataTable': row.getSubtable(), 'idSubtable': row.getIdSubDataTable()} %}
+ {% include "@CoreVisualizations/_dataTableViz_htmlTable.twig" with {'dataTable': row.getSubtable(), 'idSubtable': rowSubtableId} %}
{% endif %}
{%- endfor -%}
{% endif %}
diff --git a/plugins/CustomPiwikJs/.gitignore b/plugins/CustomPiwikJs/.gitignore
new file mode 100644
index 0000000000..c8c9480010
--- /dev/null
+++ b/plugins/CustomPiwikJs/.gitignore
@@ -0,0 +1 @@
+tests/System/processed/*xml \ No newline at end of file
diff --git a/plugins/CustomPiwikJs/Commands/UpdateTracker.php b/plugins/CustomPiwikJs/Commands/UpdateTracker.php
new file mode 100644
index 0000000000..70754bc20f
--- /dev/null
+++ b/plugins/CustomPiwikJs/Commands/UpdateTracker.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\Commands;
+
+use Piwik\Plugin\ConsoleCommand;
+use Piwik\Plugins\CustomPiwikJs\TrackerUpdater;
+use Piwik\Plugins\CustomPiwikJs\TrackingCode\PluginTrackerFiles;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class UpdateTracker extends ConsoleCommand
+{
+ protected function configure()
+ {
+ $this->setName('custom-piwik-js:update');
+ $this->addOption('source-file', null, InputOption::VALUE_REQUIRED, 'Absolute path to source PiwikJS file.', $this->getPathOriginalPiwikJs());
+ $this->addOption('target-file', null, InputOption::VALUE_REQUIRED, 'Absolute path to target file. Useful if your /piwik.js is not writable and you want to replace the file manually', PIWIK_DOCUMENT_ROOT . TrackerUpdater::TARGET_PIWIK_JS);
+ $this->addOption('ignore-minified', null, InputOption::VALUE_NONE, 'Ignore minified tracker files, useful during development so the original source file can be debugged');
+ $this->setDescription('Update the Javascript Tracker with plugin tracker additions');
+ }
+
+ private function getPathOriginalPiwikJs()
+ {
+ return PIWIK_DOCUMENT_ROOT . TrackerUpdater::ORIGINAL_PIWIK_JS;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $sourceFile = $input->getOption('source-file');
+ $targetFile = $input->getOption('target-file');
+ $ignoreMinified = $input->hasOption('ignore-minified');
+
+ $this->updateTracker($sourceFile, $targetFile, $ignoreMinified);
+
+ $output->writeln('<info>The Javascript Tracker has been updated</info>');
+ }
+
+ public function updateTracker($sourceFile, $targetFile, $ignoreMinified)
+ {
+ $pluginTrackerFiles = new PluginTrackerFiles();
+
+ if ($ignoreMinified) {
+ if (empty($sourceFile) || $sourceFile === $this->getPathOriginalPiwikJs()) {
+ // no custom source file was requested
+ $sourceFile = PIWIK_DOCUMENT_ROOT . TrackerUpdater::DEVELOPMENT_PIWIK_JS;
+ }
+ $pluginTrackerFiles->ignoreMinified();
+ }
+
+ $updater = new TrackerUpdater($sourceFile, $targetFile);
+ $updater->setTrackerFiles($pluginTrackerFiles);
+ $updater->checkWillSucceed();
+ $updater->update();
+ }
+}
diff --git a/plugins/CustomPiwikJs/CustomPiwikJs.php b/plugins/CustomPiwikJs/CustomPiwikJs.php
new file mode 100644
index 0000000000..4089f8cba8
--- /dev/null
+++ b/plugins/CustomPiwikJs/CustomPiwikJs.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs;
+
+use Piwik\Log;
+use Piwik\Plugin;
+
+class CustomPiwikJs extends Plugin
+{
+ public function getListHooksRegistered()
+ {
+ return array(
+ 'CoreUpdater.update.end' => 'updateTracker',
+ 'PluginManager.pluginDeactivated' => 'updateTracker',
+ 'PluginManager.pluginActivated' => 'updateTracker',
+ 'CronArchive.end' => 'updateTracker',
+ );
+ }
+
+ public function updateTracker()
+ {
+ try {
+ $trackerUpdater = new TrackerUpdater();
+ $trackerUpdater->update();
+ } catch (\Exception $e) {
+ Log::error('There was an error while updating the javascript tracker: ' . $e->getMessage());
+ }
+ }
+}
diff --git a/plugins/CustomPiwikJs/Diagnostic/PiwikJsCheck.php b/plugins/CustomPiwikJs/Diagnostic/PiwikJsCheck.php
new file mode 100644
index 0000000000..3766dc650b
--- /dev/null
+++ b/plugins/CustomPiwikJs/Diagnostic/PiwikJsCheck.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Plugins\CustomPiwikJs\Diagnostic;
+
+use Piwik\Filechecks;
+use Piwik\Filesystem;
+use Piwik\Plugins\CustomPiwikJs\File;
+use Piwik\Plugins\Diagnostics\Diagnostic\Diagnostic;
+use Piwik\Plugins\Diagnostics\Diagnostic\DiagnosticResult;
+use Piwik\SettingsServer;
+use Piwik\Translation\Translator;
+
+/**
+ * Check Piwik JS is writable
+ */
+class PiwikJsCheck implements Diagnostic
+{
+ /**
+ * @var Translator
+ */
+ private $translator;
+
+ public function __construct(Translator $translator)
+ {
+ $this->translator = $translator;
+ }
+
+ public function execute()
+ {
+ $label = $this->translator->translate('CustomPiwikJs_DiagnosticPiwikJsWritable');
+
+ $file = new File(PIWIK_DOCUMENT_ROOT . '/piwik.js');
+
+ if ($file->hasWriteAccess()) {
+ return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK, ''));
+ }
+
+ $comment = $this->translator->translate('CustomPiwikJs_DiagnosticPiwikJsNotWritable');
+
+ if(!SettingsServer::isWindows()) {
+ $realpath = Filesystem::realpath(PIWIK_INCLUDE_PATH . '/piwik.js');
+ $command = "<br/><code> chmod +w $realpath<br/> chown ". Filechecks::getUserAndGroup() ." " . $realpath . "</code><br />";
+ $comment .= $this->translator->translate('CustomPiwikJs_DiagnosticPiwikJsMakeWritable', $command);
+ }
+
+ return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_WARNING, $comment));
+ }
+
+}
diff --git a/plugins/CustomPiwikJs/Exception/AccessDeniedException.php b/plugins/CustomPiwikJs/Exception/AccessDeniedException.php
new file mode 100644
index 0000000000..356e63e7be
--- /dev/null
+++ b/plugins/CustomPiwikJs/Exception/AccessDeniedException.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\Exception;
+
+use Exception;
+
+class AccessDeniedException extends Exception
+{
+}
diff --git a/plugins/CustomPiwikJs/File.php b/plugins/CustomPiwikJs/File.php
new file mode 100644
index 0000000000..79a93e7437
--- /dev/null
+++ b/plugins/CustomPiwikJs/File.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs;
+
+use Piwik\Plugins\CustomPiwikJs\Exception\AccessDeniedException;
+
+class File
+{
+ /**
+ * @var string
+ */
+ private $file;
+
+ public function __construct($file)
+ {
+ $this->file = $file;
+ }
+
+ public function checkReadable()
+ {
+ if (!$this->hasReadAccess()) {
+ throw new AccessDeniedException(sprintf('The file %s is not readable', $this->file));
+ }
+ }
+
+ public function checkWritable()
+ {
+ if (!$this->hasWriteAccess()) {
+ throw new AccessDeniedException(sprintf('The file %s is not writable', $this->file));
+ }
+ }
+
+ public function save($content)
+ {
+ file_put_contents($this->file, $content);
+ }
+
+ public function getContent()
+ {
+ if (!$this->hasReadAccess()) {
+ return null;
+ }
+
+ return file_get_contents($this->file);
+ }
+
+ public function getName()
+ {
+ return basename($this->file);
+ }
+
+ /**
+ * @return bool
+ */
+ public function hasWriteAccess()
+ {
+ return $this->hasReadAccess() && is_writable($this->file);
+ }
+
+ /**
+ * @return bool
+ */
+ public function hasReadAccess()
+ {
+ return file_exists($this->file) && is_readable($this->file);
+ }
+
+
+}
diff --git a/plugins/CustomPiwikJs/Tasks.php b/plugins/CustomPiwikJs/Tasks.php
new file mode 100644
index 0000000000..1bb1bae384
--- /dev/null
+++ b/plugins/CustomPiwikJs/Tasks.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs;
+
+class Tasks extends \Piwik\Plugin\Tasks
+{
+ public function schedule()
+ {
+ $this->hourly('updateTracker');
+ }
+
+ public function updateTracker()
+ {
+ $updater = new TrackerUpdater();
+ $updater->update();
+ }
+}
diff --git a/plugins/CustomPiwikJs/TrackerUpdater.php b/plugins/CustomPiwikJs/TrackerUpdater.php
new file mode 100644
index 0000000000..6370287882
--- /dev/null
+++ b/plugins/CustomPiwikJs/TrackerUpdater.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs;
+
+use Piwik\Plugins\CustomPiwikJs\TrackingCode\PiwikJsManipulator;
+use Piwik\Plugins\CustomPiwikJs\TrackingCode\PluginTrackerFiles;
+
+/**
+ * Updates the Javascript file containing the Tracker.
+ */
+class TrackerUpdater
+{
+ const DEVELOPMENT_PIWIK_JS = '/js/piwik.js';
+ const ORIGINAL_PIWIK_JS = '/js/piwik.min.js';
+ const TARGET_PIWIK_JS = '/piwik.js';
+
+ /**
+ * @var File
+ */
+ private $fromFile;
+
+ /**
+ * @var File
+ */
+ private $toFile;
+
+ private $trackerFiles = array();
+
+ /**
+ * @param string|null $fromFile If null then the minified JS tracker file in /js fill be used
+ * @param string|null $toFile If null then the minified JS tracker will be updated.
+ */
+ public function __construct($fromFile = null, $toFile = null)
+ {
+ if (!isset($fromFile)) {
+ $fromFile = PIWIK_DOCUMENT_ROOT . self::ORIGINAL_PIWIK_JS;
+ }
+
+ if (!isset($toFile)) {
+ $toFile = PIWIK_DOCUMENT_ROOT . self::TARGET_PIWIK_JS;
+ }
+
+ $this->fromFile = new File($fromFile);
+ $this->toFile = new File($toFile);
+ $this->trackerFiles = new PluginTrackerFiles();
+ }
+
+ public function setTrackerFiles(PluginTrackerFiles $trackerFiles)
+ {
+ $this->trackerFiles = $trackerFiles;
+ }
+
+ public function checkWillSucceed()
+ {
+ $this->fromFile->checkReadable();
+ $this->toFile->checkWritable();
+ }
+
+ public function update()
+ {
+ if (!$this->toFile->hasWriteAccess() || !$this->fromFile->hasReadAccess()) {
+ return;
+ }
+
+ $trackingCode = new PiwikJsManipulator($this->fromFile->getContent(), $this->trackerFiles);
+ $newContent = $trackingCode->manipulateContent();
+
+ if ($newContent !== $this->toFile->getContent()) {
+ $this->toFile->save($newContent);
+ }
+ }
+}
diff --git a/plugins/CustomPiwikJs/TrackingCode/JsTestPluginTrackerFiles.php b/plugins/CustomPiwikJs/TrackingCode/JsTestPluginTrackerFiles.php
new file mode 100644
index 0000000000..773ac03286
--- /dev/null
+++ b/plugins/CustomPiwikJs/TrackingCode/JsTestPluginTrackerFiles.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Plugins\CustomPiwikJs\TrackingCode;
+
+/**
+ * Used for when running Piwik tracker tests. We simply include all custom tracker files there.
+ */
+class JsTestPluginTrackerFiles extends PluginTrackerFiles
+{
+
+ public function __construct()
+ {
+ parent::__construct();
+ $this->ignoreMinified = true;
+ }
+
+ protected function isPluginActivated($pluginName)
+ {
+ return true;
+ }
+
+}
diff --git a/plugins/CustomPiwikJs/TrackingCode/PiwikJsManipulator.php b/plugins/CustomPiwikJs/TrackingCode/PiwikJsManipulator.php
new file mode 100644
index 0000000000..affac1fd46
--- /dev/null
+++ b/plugins/CustomPiwikJs/TrackingCode/PiwikJsManipulator.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\TrackingCode;
+
+class PiwikJsManipulator
+{
+ const HOOK = '/*!!! pluginTrackerHook */';
+ /**
+ * @var string
+ */
+ private $content;
+
+ /** @var PluginTrackerFiles */
+ private $pluginTrackerFiles;
+
+ public function __construct($content, PluginTrackerFiles $pluginTrackerFiles)
+ {
+ $this->content = $content;
+ $this->pluginTrackerFiles = $pluginTrackerFiles;
+ }
+
+ public function manipulateContent()
+ {
+ $files = $this->pluginTrackerFiles->find();
+
+ foreach ($files as $file) {
+ $trackerExtension = $this->getSignatureWithContent($file->getName(), $file->getContent());
+
+ // for some reasons it is /*!!! in piwik.js minified and /*!! in js/piwik.js unminified
+ $this->content = str_replace(array(self::HOOK, '/*!! pluginTrackerHook */'), self::HOOK . $trackerExtension, $this->content);
+ }
+
+ return $this->content;
+ }
+
+ /**
+ * @param string $name
+ * @param string $content
+ * @return string
+ */
+ private function getSignatureWithContent($name, $content)
+ {
+ return sprintf(
+ "\n\n/* GENERATED: %s */\n%s\n/* END GENERATED: %s */\n",
+ $name,
+ $content,
+ $name
+ );
+ }
+
+}
diff --git a/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php b/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php
new file mode 100644
index 0000000000..f114565990
--- /dev/null
+++ b/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Plugins\CustomPiwikJs\TrackingCode;
+
+use Piwik\Filesystem;
+use Piwik\Plugin;
+use Piwik\Plugins\CustomPiwikJs\File;
+
+class PluginTrackerFiles
+{
+ const TRACKER_FILE = 'tracker.js';
+ const MIN_TRACKER_FILE = 'tracker.min.js';
+
+ /**
+ * @var string
+ */
+ protected $dir;
+
+ /**
+ * @var Plugin\Manager
+ */
+ private $pluginManager;
+
+ /**
+ * @var bool
+ */
+ protected $ignoreMinified = false;
+
+ public function __construct()
+ {
+ $this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/';
+ $this->pluginManager = Plugin\Manager::getInstance();
+ }
+
+ public function ignoreMinified()
+ {
+ $this->ignoreMinified = true;
+ }
+
+ /**
+ * @return File[]
+ */
+ public function find()
+ {
+ $jsFiles = array();
+
+ if (!$this->ignoreMinified) {
+ $trackerFiles = \_glob($this->dir . '*/' . self::MIN_TRACKER_FILE);
+
+ foreach ($trackerFiles as $trackerFile) {
+ $plugin = $this->getPluginNameFromFile($trackerFile);
+ if ($this->isPluginActivated($plugin)) {
+ $jsFiles[$plugin] = new File($trackerFile);
+ }
+ }
+ }
+
+ $trackerFiles = \_glob($this->dir . '*/' . self::TRACKER_FILE);
+
+ foreach ($trackerFiles as $trackerFile) {
+ $plugin = $this->getPluginNameFromFile($trackerFile);
+ if (!isset($jsFiles[$plugin])) {
+ if ($this->isPluginActivated($plugin)) {
+ $jsFiles[$plugin] = new File($trackerFile);
+ }
+ }
+ }
+
+ return $jsFiles;
+ }
+
+ protected function isPluginActivated($pluginName)
+ {
+ return $this->pluginManager->isPluginActivated($pluginName);
+ }
+
+ protected function getPluginNameFromFile($file)
+ {
+ $file = str_replace(array($this->dir, self::TRACKER_FILE, self::MIN_TRACKER_FILE), '', $file);
+ return trim($file, '/');
+ }
+}
diff --git a/plugins/CustomPiwikJs/config/config.php b/plugins/CustomPiwikJs/config/config.php
new file mode 100644
index 0000000000..cafd3336ac
--- /dev/null
+++ b/plugins/CustomPiwikJs/config/config.php
@@ -0,0 +1,7 @@
+<?php
+
+return array(
+ 'diagnostics.optional' => DI\add(array(
+ DI\get('Piwik\Plugins\CustomPiwikJs\Diagnostic\PiwikJsCheck'),
+ )),
+);
diff --git a/plugins/CustomPiwikJs/lang/en.json b/plugins/CustomPiwikJs/lang/en.json
new file mode 100644
index 0000000000..57dbea22a6
--- /dev/null
+++ b/plugins/CustomPiwikJs/lang/en.json
@@ -0,0 +1,7 @@
+{
+ "CustomPiwikJs": {
+ "DiagnosticPiwikJsWritable": "Writable JavaScript Tracker (\"/piwik.js\")",
+ "DiagnosticPiwikJsNotWritable": "The Piwik JavaScript tracker file \"/piwik.js\" is not writable which means other plugins cannot extend the JavaScript tracker. In the future even some core features might not work as expected. ",
+ "DiagnosticPiwikJsMakeWritable": "We recommend to Piwik.js writable by running this command: %s"
+ }
+} \ No newline at end of file
diff --git a/plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php b/plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php
new file mode 100644
index 0000000000..2503353ec0
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\tests\Framework\Mock;
+
+use Piwik\Plugins\CustomPiwikJs\File;
+use Piwik\Plugins\CustomPiwikJs\TrackingCode\PluginTrackerFiles;
+
+class PluginTrackerFilesMock extends PluginTrackerFiles
+{
+ /**
+ * @var array
+ */
+ private $files;
+
+ public function __construct($files)
+ {
+ $this->files = $files;
+ }
+
+ public function find()
+ {
+ $files = array();
+ foreach ($this->files as $file) {
+ $files[] = new File(PIWIK_DOCUMENT_ROOT . $file);
+ }
+ return $files;
+ }
+
+
+}
diff --git a/plugins/CustomPiwikJs/tests/Integration/FileTest.php b/plugins/CustomPiwikJs/tests/Integration/FileTest.php
new file mode 100644
index 0000000000..4d96bd6478
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/Integration/FileTest.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\tests\Integration;
+
+use Piwik\Plugins\CustomPiwikJs\File;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group CustomPiwikJs
+ * @group FileTest
+ * @group File
+ * @group Plugins
+ */
+class FileTest extends IntegrationTestCase
+{
+ const NOT_EXISTING_FILE = 'notExisTinGFile.js';
+
+ /**
+ * @var string
+ */
+ private $dir = '';
+
+ public function setUp()
+ {
+ parent::setUp();
+ $this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/CustomPiwikJs/tests/resources/';
+ }
+
+ public function tearDown()
+ {
+ if (file_exists($this->dir . self::NOT_EXISTING_FILE)) {
+ unlink($this->dir . self::NOT_EXISTING_FILE);
+ }
+
+ parent::tearDown();
+ }
+
+ private function makeFile($fileName = 'test.js')
+ {
+ return new File($this->dir . $fileName);
+ }
+
+ private function makeNotReadableFile()
+ {
+ return $this->makeFile(self::NOT_EXISTING_FILE);
+ }
+
+ public function test_getName()
+ {
+ $this->assertSame('test.js', $this->makeFile()->getName());
+ $this->assertSame('notExisTinGFile.js', $this->makeNotReadableFile()->getName());
+ }
+
+ public function test_hasReadAccess()
+ {
+ $this->assertTrue($this->makeFile()->hasReadAccess());
+ $this->assertFalse($this->makeNotReadableFile()->hasReadAccess());
+ }
+
+ public function test_hasWriteAccess()
+ {
+ $this->assertTrue($this->makeFile()->hasWriteAccess());
+ $this->assertFalse($this->makeNotReadableFile()->hasWriteAccess());
+ }
+
+ public function test_checkReadable_shouldNotThrowException_IfIsReadable()
+ {
+ $this->makeFile()->checkReadable();
+ $this->assertTrue(true);
+ }
+
+ public function test_checkWritable_shouldNotThrowException_IfIsWritable()
+ {
+ $this->makeFile()->checkWritable();
+ $this->assertTrue(true);
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\CustomPiwikJs\Exception\AccessDeniedException
+ * @expectedExceptionMessage not readable
+ */
+ public function test_checkReadable_shouldThrowException_IfNotIsReadable()
+ {
+ $this->makeNotReadableFile()->checkReadable();
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\CustomPiwikJs\Exception\AccessDeniedException
+ * @expectedExceptionMessage not writable
+ */
+ public function test_checkWritable_shouldThrowException_IfNotIsWritable()
+ {
+ $this->makeNotReadableFile()->checkWritable();
+ }
+
+ public function test_getContent()
+ {
+ $this->assertSame("// Hello world\nvar fooBar = 'test';", $this->makeFile()->getContent());
+ }
+
+ public function test_getContent_returnsNull_IfFileIsNotReadableOrNotExists()
+ {
+ $this->assertNull($this->makeNotReadableFile()->getContent());
+ }
+
+ public function test_save()
+ {
+ $notExistingFile = $this->makeNotReadableFile();
+ $this->assertFalse($notExistingFile->hasReadAccess());
+ $this->assertFalse($notExistingFile->hasWriteAccess());
+
+ $notExistingFile->save('myTestContent');
+
+ $this->assertEquals('myTestContent', $notExistingFile->getContent());
+ $this->assertTrue($notExistingFile->hasReadAccess());
+ $this->assertTrue($notExistingFile->hasWriteAccess());
+ }
+
+}
diff --git a/plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php b/plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php
new file mode 100644
index 0000000000..75c66b73f7
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\tests\Integration;
+
+use Piwik\Plugins\CustomPiwikJs\tests\Framework\Mock\PluginTrackerFilesMock;
+use Piwik\Plugins\CustomPiwikJs\TrackingCode\PiwikJsManipulator;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group CustomPiwikJs
+ * @group PiwikJsManipulatorTest
+ * @group PiwikJsManipulator
+ * @group Plugins
+ */
+class PiwikJsManipulatorTest extends IntegrationTestCase
+{
+ private $content = 'var Piwik.js = "mytest";
+/*!!! pluginTrackerHook */
+
+var myArray = [];
+';
+
+ public function test_manipulateContent_shouldAddCodeOfTrackerPlugins()
+ {
+ $manipulator = $this->makeManipulator(array(
+ '/plugins/CustomPiwikJs/tests/resources/tracker.js',
+ '/plugins/CustomPiwikJs/tests/resources/tracker.min.js',
+ ));
+
+ $updatedContent = $manipulator->manipulateContent();
+
+ $this->assertSame('var Piwik.js = "mytest";
+/*!!! pluginTrackerHook */
+
+/* GENERATED: tracker.min.js */
+/* my license header */
+var mySecondCustomTracker = \'test\';
+/* END GENERATED: tracker.min.js */
+
+
+/* GENERATED: tracker.js */
+/** my license header*/
+var myCustomTracker = \'test\';
+
+var fooBar = \'baz\';
+/* END GENERATED: tracker.js */
+
+
+var myArray = [];
+', $updatedContent);
+ }
+
+ public function test_manipulateContent_shouldNotAddCodeOfTrackerPlugins_IfThereAreNoTrackerFiles()
+ {
+ $manipulator = $this->makeManipulator(array());
+
+ $updatedContent = $manipulator->manipulateContent();
+
+ $this->assertSame($this->content, $updatedContent);
+ }
+
+ private function makeManipulator($files)
+ {
+ return new PiwikJsManipulator($this->content, new PluginTrackerFilesMock($files));
+ }
+
+}
diff --git a/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php b/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php
new file mode 100644
index 0000000000..8c0cd2ee01
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php
@@ -0,0 +1,124 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\tests\Integration;
+
+use Piwik\Plugins\CustomPiwikJs\TrackingCode\PluginTrackerFiles;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+class CustomPluginTrackerFiles extends PluginTrackerFiles {
+
+ private $pluginNamesForFile = array();
+
+ public function __construct($pluginNameForRegularTrackerFile = 'CustomPiwikJs', $pluginNameForMinifiedTracker = 'CustomPiwikJs')
+ {
+ parent::__construct();
+
+ $this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/CustomPiwikJs/tests/';
+
+ $this->pluginNamesForFile = array(
+ 'tracker.js' => $pluginNameForRegularTrackerFile,
+ 'tracker.min.js' => $pluginNameForMinifiedTracker
+ );
+ }
+
+ protected function getPluginNameFromFile($file)
+ {
+ $fileName = basename($file);
+ return $this->pluginNamesForFile[$fileName];
+ }
+}
+
+class CustomPluginTrackerFiles2 extends PluginTrackerFiles {
+
+ public function getPluginNameFromFile($file)
+ {
+ return parent::getPluginNameFromFile($file);
+ }
+}
+
+/**
+ * @group CustomPiwikJs
+ * @group PluginTrackerFilesTest
+ * @group PluginTrackerFiles
+ * @group Plugins
+ */
+class PluginTrackerFilesTest extends IntegrationTestCase
+{
+ public function test_find_ifAPluginDefinesAMinifiedAndARegularTrackerItShouldPreferTheMinifiedVersion()
+ {
+ $trackerFiles = new CustomPluginTrackerFiles();
+ $foundFiles = $trackerFiles->find();
+
+ $this->assertCount(1, $foundFiles);
+ $this->assertTrue(isset($foundFiles['CustomPiwikJs']));
+ $this->assertEquals('tracker.min.js', $foundFiles['CustomPiwikJs']->getName());
+ }
+
+ public function test_find_shouldIgnoreMinifiedVersion_IfRequested()
+ {
+ $trackerFiles = new CustomPluginTrackerFiles();
+ $trackerFiles->ignoreMinified();
+ $foundFiles = $trackerFiles->find();
+
+ $this->assertCount(1, $foundFiles);
+ $this->assertTrue(isset($foundFiles['CustomPiwikJs']));
+ $this->assertEquals('tracker.js', $foundFiles['CustomPiwikJs']->getName());
+ }
+
+ public function test_find_ifMultiplePluginsImplementATracker_ShouldReturnEachOfThem()
+ {
+ $trackerFiles = new CustomPluginTrackerFiles('CustomPiwikJs', 'Goals');
+ $foundFiles = $trackerFiles->find();
+
+ $this->assertCount(2, $foundFiles);
+ $this->assertTrue(isset($foundFiles['CustomPiwikJs']));
+ $this->assertTrue(isset($foundFiles['Goals']));
+ $this->assertEquals('tracker.js', $foundFiles['CustomPiwikJs']->getName());
+ $this->assertEquals('tracker.min.js', $foundFiles['Goals']->getName());
+ }
+
+ public function test_find_shouldNotReturnATrackerFile_IfPluginIsNotActivatedOrLoaded()
+ {
+ $trackerFiles = new CustomPluginTrackerFiles('MyNotExistingPlugin', 'Goals');
+ $foundFiles = $trackerFiles->find();
+
+ $this->assertCount(1, $foundFiles);
+ $this->assertTrue(isset($foundFiles['Goals']));
+ $this->assertEquals('tracker.min.js', $foundFiles['Goals']->getName());
+
+ $trackerFiles = new CustomPluginTrackerFiles('Goals', 'MyNotExistingPlugin');
+ $foundFiles = $trackerFiles->find();
+
+ $this->assertCount(1, $foundFiles);
+ $this->assertTrue(isset($foundFiles['Goals']));
+ $this->assertEquals('tracker.js', $foundFiles['Goals']->getName());
+ }
+
+ public function test_find_shouldNotReturnFileIfNoPluginActivated()
+ {
+ $trackerFiles = new CustomPluginTrackerFiles('MyNotExistingPlugin', 'MyNotExistingPlugin2');
+ $foundFiles = $trackerFiles->find();
+
+ $this->assertSame(array(), $foundFiles);
+ }
+
+ public function test_getPluginNameFromFile_shouldDetectPluginName()
+ {
+ $trackerFiles = new CustomPluginTrackerFiles2();
+ $pluginName = $trackerFiles->getPluginNameFromFile(PIWIK_DOCUMENT_ROOT . '/plugins/MyFooBarPlugin/tracker.js');
+ $this->assertSame('MyFooBarPlugin', $pluginName);
+
+ $pluginName = $trackerFiles->getPluginNameFromFile(PIWIK_DOCUMENT_ROOT . '/plugins//MyFooBarPlugin//tracker.js');
+ $this->assertSame('MyFooBarPlugin', $pluginName);
+
+ $pluginName = $trackerFiles->getPluginNameFromFile(PIWIK_DOCUMENT_ROOT . '/plugins//MyFooBarPlugin//tracker.min.js');
+ $this->assertSame('MyFooBarPlugin', $pluginName);
+ }
+
+}
diff --git a/plugins/CustomPiwikJs/tests/Integration/TrackerUpdaterTest.php b/plugins/CustomPiwikJs/tests/Integration/TrackerUpdaterTest.php
new file mode 100644
index 0000000000..240638c5e9
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/Integration/TrackerUpdaterTest.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\tests\Integration;
+
+use Piwik\Plugins\CustomPiwikJs\tests\Framework\Mock\PluginTrackerFilesMock;
+use Piwik\Plugins\CustomPiwikJs\TrackerUpdater;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group CustomPiwikJs
+ * @group PiwikJsManipulatorTest
+ * @group PiwikJsManipulator
+ * @group Plugins
+ */
+class TrackerUpdaterTest extends IntegrationTestCase
+{
+ private $dir;
+
+ public function setUp()
+ {
+ parent::setUp();
+ $this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/CustomPiwikJs/tests/resources/';
+
+ $this->cleanUp();
+ }
+
+ public function tearDown()
+ {
+ parent::tearDown();
+
+ $this->cleanUp();
+ }
+
+ private function cleanUp()
+ {
+ $target = $this->dir . 'MyTestTarget.js';
+ if (file_exists($target)) {
+ unlink($target);
+ }
+ }
+
+ private function makeUpdater($from = null, $to = null)
+ {
+ return new TrackerUpdater($from, $to);
+ }
+
+ public function test_checkWillSucceed_shouldNotThrowExceptionIfPiwikJsTargetIsWritable()
+ {
+ $updater = $this->makeUpdater();
+ $updater->checkWillSucceed();
+
+ $this->assertTrue(true);
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\CustomPiwikJs\Exception\AccessDeniedException
+ * @expectedExceptionMessage not writable
+ */
+ public function test_checkWillSucceed_shouldThrowExceptionIfTargetIsNotWritable()
+ {
+ $updater = $this->makeUpdater(null, $this->dir . 'MyNotExisIngFilessss.js');
+ $updater->checkWillSucceed();
+ }
+
+ public function test_update_shouldNotThrowAnError_IfTargetFileIsNotWritable()
+ {
+ $updater = $this->makeUpdater(null, $this->dir . 'MyNotExisIngFilessss.js');
+ $updater->update();
+ $this->assertTrue(true);
+ }
+
+ public function test_update_shouldNotWriteToFileIfThereIsNothingToChange()
+ {
+ $source = $this->dir . 'testpiwik.js';
+ $target = $this->dir . 'MyTestTarget.js';
+ file_put_contents($target, file_get_contents($source));
+ $updater = $this->makeUpdater($this->dir . 'testpiwik.js', $target);
+ $updater->setTrackerFiles(new PluginTrackerFilesMock(array()));
+ // mock that does not find any files . therefore there is nothing to di
+ $updater->update();
+
+ $this->assertSame(file_get_contents($source), file_get_contents($target));
+ }
+
+ public function test_update_targetFileIfPluginsDefineDifferentFiles()
+ {
+ $target = $this->dir . 'MyTestTarget.js';
+ file_put_contents($target, ''); // file has to exist in order to work
+
+ $updater = $this->makeUpdater($this->dir . 'testpiwik.js', $target);
+ $updater->setTrackerFiles(new PluginTrackerFilesMock(array(
+ $this->dir . 'tracker.js', $this->dir . 'tracker.min.js'
+ )));
+ $updater->update();
+
+ $this->assertSame('/** MyHeader*/
+var PiwikJs = "mytest";
+
+/*!!! pluginTrackerHook */
+
+/* GENERATED: tracker.min.js */
+
+/* END GENERATED: tracker.min.js */
+
+
+/* GENERATED: tracker.js */
+
+/* END GENERATED: tracker.js */
+
+
+var myArray = [];
+', file_get_contents($target));
+ }
+
+}
diff --git a/plugins/CustomPiwikJs/tests/System/PiwikJsContentTest.php b/plugins/CustomPiwikJs/tests/System/PiwikJsContentTest.php
new file mode 100644
index 0000000000..dd3f08ab3a
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/System/PiwikJsContentTest.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomPiwikJs\tests\System;
+
+use Piwik\Plugins\CustomPiwikJs\TrackerUpdater;
+use Piwik\Plugins\CustomPiwikJs\TrackingCode\PiwikJsManipulator;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
+
+/**
+ * @group CustomPiwikJs
+ * @group PiwikJsContentTest
+ * @group PiwikJsContent
+ * @group Plugins
+ */
+class PiwikJsContentTest extends SystemTestCase
+{
+ public function test_piwikJsAndPiwikMinJsMustHaveSameContent()
+ {
+ $piwikMin = PIWIK_DOCUMENT_ROOT . TrackerUpdater::ORIGINAL_PIWIK_JS;
+ $piwikJs = PIWIK_DOCUMENT_ROOT . TrackerUpdater::TARGET_PIWIK_JS;
+
+ $this->assertSame(file_get_contents($piwikMin), file_get_contents($piwikJs));
+ }
+
+ public function test_piwikJsContainsHook()
+ {
+ $piwikMin = PIWIK_DOCUMENT_ROOT . '/js/piwik.min.js';
+ $content = file_get_contents($piwikMin);
+
+ $this->assertContains(PiwikJsManipulator::HOOK, $content);
+ }
+
+} \ No newline at end of file
diff --git a/plugins/CustomPiwikJs/tests/resources/MyTestTarget2.js b/plugins/CustomPiwikJs/tests/resources/MyTestTarget2.js
new file mode 100644
index 0000000000..258c2d3e11
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/resources/MyTestTarget2.js
@@ -0,0 +1,16 @@
+/** MyHeader*/
+var PiwikJs = "mytest";
+
+/*!!! pluginTrackerHook */
+
+/* GENERATED: tracker.min.js */
+
+/* END GENERATED: tracker.min.js */
+
+
+/* GENERATED: tracker.js */
+
+/* END GENERATED: tracker.js */
+
+
+var myArray = [];
diff --git a/plugins/CustomPiwikJs/tests/resources/test.js b/plugins/CustomPiwikJs/tests/resources/test.js
new file mode 100644
index 0000000000..0ea6fcc24a
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/resources/test.js
@@ -0,0 +1,2 @@
+// Hello world
+var fooBar = 'test'; \ No newline at end of file
diff --git a/plugins/CustomPiwikJs/tests/resources/testpiwik.js b/plugins/CustomPiwikJs/tests/resources/testpiwik.js
new file mode 100644
index 0000000000..02b60f8bcd
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/resources/testpiwik.js
@@ -0,0 +1,6 @@
+/** MyHeader*/
+var PiwikJs = "mytest";
+
+/*!!! pluginTrackerHook */
+
+var myArray = [];
diff --git a/plugins/CustomPiwikJs/tests/resources/tracker.js b/plugins/CustomPiwikJs/tests/resources/tracker.js
new file mode 100644
index 0000000000..ae4d228f39
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/resources/tracker.js
@@ -0,0 +1,4 @@
+/** my license header*/
+var myCustomTracker = 'test';
+
+var fooBar = 'baz'; \ No newline at end of file
diff --git a/plugins/CustomPiwikJs/tests/resources/tracker.min.js b/plugins/CustomPiwikJs/tests/resources/tracker.min.js
new file mode 100644
index 0000000000..587ee0464d
--- /dev/null
+++ b/plugins/CustomPiwikJs/tests/resources/tracker.min.js
@@ -0,0 +1,2 @@
+/* my license header */
+var mySecondCustomTracker = 'test'; \ No newline at end of file
diff --git a/plugins/CustomVariables/lang/da.json b/plugins/CustomVariables/lang/da.json
index cf635d0330..625048d59b 100644
--- a/plugins/CustomVariables/lang/da.json
+++ b/plugins/CustomVariables/lang/da.json
@@ -5,6 +5,8 @@
"CustomVariables": "Brugerdefinerede variabler",
"CustomVariablesReportDocumentation": "Rapporten indeholder oplysninger om brugerdefinerede variabler. Klik på et variabelnavn se fordeling af værdier. %1$s Yderligere oplysninger om brugerdefinerede variabler generelt, læs %2$sBrugerdefinerede variabel dokumentation på piwik.org%3$s",
"ScopePage": "virkefelt side",
- "ScopeVisit": "virkefelt besøg"
+ "ScopeVisit": "virkefelt besøg",
+ "Index": "Indeks",
+ "Unused": "Ubrugt"
}
} \ No newline at end of file
diff --git a/plugins/CustomVariables/lang/fr.json b/plugins/CustomVariables/lang/fr.json
index 04febeefd6..8f7dea60ee 100644
--- a/plugins/CustomVariables/lang/fr.json
+++ b/plugins/CustomVariables/lang/fr.json
@@ -18,6 +18,7 @@
"CurrentAvailableCustomVariables": "Pour l'instant vous pouvez utiliser jusqu'à %s Variables personnalisées par site.",
"ToCreateCustomVarExecute": "Pour créer un nouvel emplacement de variable personnalisée exécutez la commande suivante dans votre installation de Piwik :",
"SlotsReportIsGeneratedOverTime": "Les données pour ce rapport vont être peuplées avec le temps. Il se peut que cela prenne un jour ou deux pour voir des informations et quelques semaines avant que le rapport ne soit précis.",
+ "MetricsAreOnlyAvailableForVisitScope": "Note: %1$s les métriques sont disponibles pour les variables personnalisées de la portée %2$s uniquement.",
"MetricsNotAvailableForPageScope": "Pour les variables personnalisées de la portée %1$s, la valeur de colonne pour ces métriques est %2$s"
}
} \ No newline at end of file
diff --git a/plugins/CustomVariables/lang/it.json b/plugins/CustomVariables/lang/it.json
index c23021e8a6..f3899ac0d2 100644
--- a/plugins/CustomVariables/lang/it.json
+++ b/plugins/CustomVariables/lang/it.json
@@ -3,7 +3,7 @@
"ColumnCustomVariableName": "Nome Variabile Personalizzata",
"ColumnCustomVariableValue": "Valore Variabile Personalizzata",
"CustomVariables": "Variabile Personalizzata",
- "CustomVariablesReportDocumentation": "Questo report contiene le informazioni sulle variabili personalizzate. Clicca su un nome di variabile per visualizzarne la distribuzione dei valori. %1$s Per ulteriori informazioni sulle variabili personalizzate in generale, leggere la %2$sDocumentazione Variabili Personalizzatesu piwik.org %3$s",
+ "CustomVariablesReportDocumentation": "Questo report contiene le informazioni sulle variabili personalizzate. Clicca su un nome di variabile per visualizzarne la distribuzione dei valori. %1$s Per ulteriori informazioni sulle variabili personalizzate in generale, leggere la %2$sDocumentazione Variabili Personalizzate su piwik.org%3$s",
"PluginDescription": "Le variabili personalizzate sono coppie (nome, valore) che puoi assegnare ai visitatori o a una qualunque loro azione tramite API Javascript. Poi Piwik riporterà le visite, le pagine e le conversioni per questi nomi e valori. Guarda nel dettaglio le Variabili Personalizzate per ciascun utente nel Log Visitatori.<br>Necessario per utilizzare la funzione <a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">Statistiche Ecommerce<\/a>",
"ScopePage": "ambito pagina",
"ScopeVisit": "ambito visita",
@@ -17,6 +17,8 @@
"CreatingCustomVariableTakesTime": "La creazione di un nuovo slot di variabili personali può richiedere un tempo lungo che dipende dalla dimensione del tuo database. Pertanto è possibile fare ciò solo tramite un comando che deve essere eseguito da riga di comando.",
"CurrentAvailableCustomVariables": "Attualmente puoi utilizzare fino a %s variabili personali per sito.",
"ToCreateCustomVarExecute": "Per creare un nuovo slot di variabili personali esegui il comando seguente nella tua installazione di Piwik.",
- "SlotsReportIsGeneratedOverTime": "I dati per questo report saranno popolati nel tempo. Ciò può richiedere un giorno o due per vedere dei dati, e qualche settimana perché il report sia totalmente accurato."
+ "SlotsReportIsGeneratedOverTime": "I dati per questo report saranno popolati nel tempo. Ciò può richiedere un giorno o due per vedere dei dati, e qualche settimana perché il report sia totalmente accurato.",
+ "MetricsAreOnlyAvailableForVisitScope": "Nota: Sono disponibili %1$s metriche per le Variabili Speciali solo per l'ambito %2$s.",
+ "MetricsNotAvailableForPageScope": "Per le Variabili Speciali dell'ambito %1$s, il valore colonna è %2$s"
}
} \ No newline at end of file
diff --git a/plugins/CustomVariables/lang/nl.json b/plugins/CustomVariables/lang/nl.json
index 4ba6ced08e..221ab25576 100644
--- a/plugins/CustomVariables/lang/nl.json
+++ b/plugins/CustomVariables/lang/nl.json
@@ -6,6 +6,11 @@
"CustomVariablesReportDocumentation": "Dit rapport bevat informatie over uw aangepaste variabelen. Klik op de naam van een variabele om de verdeling van de waarden te zien. %1$s voor meer informatie over aangepaste variabelen in het algemeen, lees de %2$sCustom variabelen documentatie over piwik.org%3$s",
"PluginDescription": "Aangepaste variabelen zijn (naam, waarde) paren dat je kunt toewijzen via de Javascript API aan bezoekers of aan één van hun acties. Piwik zal dan het aantal bezoeken, pagina's, conversies voor elk van deze aangepaste namen en waarden rapporteren. Bekijk de gedetailleerde Aangepaste variabelen voor elke gebruik en actie in het Bezoekerslogboek. <br\/>Het is vereist gebruik te maken van de<a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">Ecommerce Analyses<\/a> functie!",
"ScopePage": "omvang pagina",
- "ScopeVisit": "omvang bezoek"
+ "ScopeVisit": "omvang bezoek",
+ "Index": "Index",
+ "Usages": "Gebruikt",
+ "Unused": "Ongebruikt",
+ "UsageDetails": "%1$s bezoeken en %2$s acties sinds het maken van deze website.",
+ "SlotsReportIsGeneratedOverTime": "De data voor dit verslag wordt na verloop van tijd gegenereerd. Het kan een dag of twee duren voordat je de data ziet en een paar weken tot het rapport helemaal nauwkeurig is."
}
} \ No newline at end of file
diff --git a/plugins/CustomVariables/lang/sv.json b/plugins/CustomVariables/lang/sv.json
index d037379c7f..9e254774ca 100644
--- a/plugins/CustomVariables/lang/sv.json
+++ b/plugins/CustomVariables/lang/sv.json
@@ -4,13 +4,21 @@
"ColumnCustomVariableValue": "Anpassat variabelvärde",
"CustomVariables": "Anpassade variabler",
"CustomVariablesReportDocumentation": "Denna rapport innehåller information om din anpassade variabler. Klicka på ett variabelnamn för att se fördelningen av värdena. %1$s För mer information om anpassade variabler i allmänhet, läs %2$sdokumentationen om anpassade variabler på piwik.org%3$s",
+ "PluginDescription": "Anpassade Variabler är (namn, värde) par som du kan tilldela genom Javascript API't till besökare eller någon av deras händelser. Piwik kommer sedan rapportera hur många besök, sidor, konverteringar för varje anpassat namn och värde. Kolla de detaljerade Anpassade Variablerna för varje användare och händelse i Besöksloggen.<br \/>Detta kräver att du använder <a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">E-handelsspårningen<\/a>!",
"ScopePage": "omfattning sida",
"ScopeVisit": "omfattning besök",
+ "ManageDescription": "Denna översikt visar alla anpassade variabler och dess användande för webbplatsen '%s'. Namnen för varje slot sorteras på hur ofta dom har använts totalt.",
"ScopeX": "Omfattning %s",
"Index": "Index",
"Usages": "Användningar",
"Unused": "Oanvänd",
"CreateNewSlot": "Öka antalet tillgängliga anpassade variabelspår",
- "CurrentAvailableCustomVariables": "För tillfället kan du använda upp till %s anpassade variabler per webbsida."
+ "UsageDetails": "%1$s besök och %2$s händelser sedan webbplatsen skapandet av denna webbplats.",
+ "CreatingCustomVariableTakesTime": "Att skapa en ny anpassad variabel kan ta lång tid beroende på storleken på din databas. Därför är det bara möjligt att göra detta via ett kommando som måste köras genom kommandoraden.",
+ "CurrentAvailableCustomVariables": "För tillfället kan du använda upp till %s anpassade variabler per webbsida.",
+ "ToCreateCustomVarExecute": "För att skapa en ny anpassad variabel använd följande kommando i din Piwik miljö:",
+ "SlotsReportIsGeneratedOverTime": "Data för den här rapporten kommer att samlas in allt eftersom. Det kan ta en dag eller två innan du ser någon data och ett par veckor innan rapporten är helt tillförlitlig.",
+ "MetricsAreOnlyAvailableForVisitScope": "Notering: %1$s mätvärden finns endast tillgängliga för Anpassade Variabler av omfattningen %2$s.",
+ "MetricsNotAvailableForPageScope": "För Anpassade Variabler av omfattningen %1$s är kolumnvärdet för dessa mätvärden %2$s"
}
} \ No newline at end of file
diff --git a/plugins/CustomVariables/lang/uk.json b/plugins/CustomVariables/lang/uk.json
new file mode 100644
index 0000000000..dc02b2396d
--- /dev/null
+++ b/plugins/CustomVariables/lang/uk.json
@@ -0,0 +1,24 @@
+{
+ "CustomVariables": {
+ "ColumnCustomVariableName": "Ім'я користувача змінної",
+ "ColumnCustomVariableValue": "Значення для користувцької змінної",
+ "CustomVariables": "Користувальницькі змінні",
+ "CustomVariablesReportDocumentation": "Цей звіт відображає інформацію по вашим Користувацьким змінним. Натисніть по змінній, щоб побачити розподіл значень. %1$s Для більшої інформації про користувальницькі змінні в загальних рисах ознайомтеся з %2$sдокументацією по Користувацьким змінним на сайті Piwik%3$s",
+ "PluginDescription": "Користувальницькі змінні - це пари (ім'я, значення), які ви можете призначити для користувачів або будь-яких їх дії за допомогою Javascript API. Тоді Piwik буде повідомляти, скільки відвідувань, сторінок, перетворень для кожного з цих користувальницьких імен і значень. Дивіться деталізацію користувальницьких змінних для кожного користувача і дії в Журналі відвідувань.<br \/>Потрібно для використання опції <a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">Аналітика електронної торгівлі<\/a>!",
+ "ScopePage": "область видимості сторінки",
+ "ScopeVisit": "область видимості візиту",
+ "ManageDescription": "Цей огляд показує всі слоти для користувальницьких змінних і їх використання для вебсайту '%s'. Назви в межах одного слота розподілені по загальній частоті використання.",
+ "ScopeX": "Вибірка %s",
+ "Index": "Індекс",
+ "Usages": "Використання",
+ "Unused": "Не використано",
+ "CreateNewSlot": "Збільшити кількість доступних слотів для користувальницьких змінних",
+ "UsageDetails": "%1$s відвідувань і %2$s дій з моменту створення цього вебсайту.",
+ "CreatingCustomVariableTakesTime": "Створення нового слоту для користувальницьких змінних може зайняти тривалий час в залежності від розміру вашої бази даних. Тому, це можливо зробити тільки за допомогою команди, яка повинна виконуватися в командному рядку на сервері.",
+ "CurrentAvailableCustomVariables": "В даний момент ви можете використовувати до %s користувальницьких змінних на сайт.",
+ "ToCreateCustomVarExecute": "Щоб створити новий слот для користувальницьких змінних, введіть наступну команду під час установки Piwik:",
+ "SlotsReportIsGeneratedOverTime": "Інформація для цього звіту буде заповнена з часом. Це може зайняти день або два, щоб побачити будь-яку інформацію, і кілька тижнів, щоб отримати точний звіт.",
+ "MetricsAreOnlyAvailableForVisitScope": "Увага: %1$s метрика доступна тільки для користувальницьких змінних вибірки %2$s.",
+ "MetricsNotAvailableForPageScope": "Для вибірки користувальницьких змінних %1$s, значення стовпця для цих метрик - %2$s"
+ }
+} \ No newline at end of file
diff --git a/plugins/DBStats/Reports/GetIndividualMetricsSummary.php b/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
index a36f742c66..be0cbb90db 100644
--- a/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
+++ b/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
@@ -14,7 +14,7 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
- * Shows a datatable that displays how many occurances there are of each individual
+ * Shows a datatable that displays how many occurrences there are of each individual
* metric type stored in the MySQL database.
*
* Goal metrics, metrics of the format .*_[0-9]+ and 'done...' metrics are grouped together.
diff --git a/plugins/DBStats/Reports/GetIndividualReportsSummary.php b/plugins/DBStats/Reports/GetIndividualReportsSummary.php
index 7f224c7909..f589cbb094 100644
--- a/plugins/DBStats/Reports/GetIndividualReportsSummary.php
+++ b/plugins/DBStats/Reports/GetIndividualReportsSummary.php
@@ -14,7 +14,7 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
- * Shows a datatable that displays how many occurances there are of each individual
+ * Shows a datatable that displays how many occurrences there are of each individual
* report type stored in the MySQL database.
*
* Goal reports and reports of the format: .*_[0-9]+ are grouped together.
diff --git a/plugins/DBStats/lang/sq.json b/plugins/DBStats/lang/sq.json
index 83d23ab402..0e338133c6 100644
--- a/plugins/DBStats/lang/sq.json
+++ b/plugins/DBStats/lang/sq.json
@@ -10,10 +10,12 @@
"MetricDataByYear": "Tabela Matjesh Sipas Vitesh",
"MetricTables": "Tabela Matjesh",
"OtherTables": "Tabela të Tjera",
+ "PluginDescription": "Furnizon raporte të hollësishëm përdorimi baze të dhënash MySQL. Gjendet nën Diagnostikimet, për Superpërdoruesit.",
"ReportDataByYear": "Tabela Raportesh Sipas Vitit",
"ReportTables": "Tabela Raportesh",
"RowCount": "Numërim rreshtash",
"Table": "Tabelë",
- "TotalSize": "Madhësi gjithsej"
+ "TotalSize": "Madhësi gjithsej",
+ "TrackerTables": "Tabela Gjurmuesi"
}
} \ No newline at end of file
diff --git a/plugins/DBStats/lang/sv.json b/plugins/DBStats/lang/sv.json
index 576bbd4d2a..a0ef6b0b02 100644
--- a/plugins/DBStats/lang/sv.json
+++ b/plugins/DBStats/lang/sv.json
@@ -10,6 +10,7 @@
"MetricDataByYear": "Variabler per år",
"MetricTables": "Variabeltabeller",
"OtherTables": "Övriga tabeller",
+ "PluginDescription": "Ger detaljerade rapporter över användning av MySQL databasen. Finns tillgängligt för Administratörer under Diagnostik.",
"ReportDataByYear": "Raporttabeller per år",
"ReportTables": "Rapporttabeller",
"RowCount": "Radantal",
diff --git a/plugins/DBStats/lang/tr.json b/plugins/DBStats/lang/tr.json
index 0f90459844..4d7a35a51a 100644
--- a/plugins/DBStats/lang/tr.json
+++ b/plugins/DBStats/lang/tr.json
@@ -3,14 +3,14 @@
"DatabaseUsage": "Veritabanı kullanımı",
"DataSize": "Veri boyutu",
"DBSize": "Veritabanı boyutu",
- "EstimatedSize": "Tahmin edilen boyut",
+ "EstimatedSize": "Öngörülen boyut",
"IndexSize": "Dizin boyutu",
- "LearnMore": "Piwik'in verileri nasıl işlediğini ve orta ve yüksek trafiğe sahip sitelerde nasıl iyi çalıştığını öğrenmek için şu dokümana bakın: %s.",
- "MainDescription": "Piwik tüm web istatistiklerinizi MySQL veritabanında saklar. Piwik tabloları %s kullanıyor.",
- "MetricDataByYear": "Yıla Göre Metrik Tablosu",
- "MetricTables": "Metrik Tabloları",
+ "LearnMore": "Verilerin Piwik tarafından nasıl işlendiğini ile orta ve yüksek trafiğe sahip sitelerde nasıl iyi çalışacağını öğrenmek için şu belgeye bakın: %s.",
+ "MainDescription": "Piwik tüm web istatistiklerinizi MySQL veritabanında saklar. Şu anda Piwik tabloları %s alan kullanıyor.",
+ "MetricDataByYear": "Yıla Göre Ölçün Tabloları",
+ "MetricTables": "Ölçüm Tabloları",
"OtherTables": "Diğer Tablolar",
- "PluginDescription": "Detaylı MySQL veritabanı kullanım raporu sağlar. Super Kullanıcı için Teşhis bölümünün altından ulaşılabilir.",
+ "PluginDescription": "Ayrıntılı MySQL veritabanı kullanım raporu oluşturur. Süper Kullanıcılar Tanılama bölümünün altından ulaşabilir.",
"ReportDataByYear": "Yıla Göre Rapor Tabloları",
"ReportTables": "Rapor Tabloları",
"RowCount": "Satır sayısı",
diff --git a/plugins/DBStats/lang/uk.json b/plugins/DBStats/lang/uk.json
index 08ad26e9e2..541e3cfdc6 100644
--- a/plugins/DBStats/lang/uk.json
+++ b/plugins/DBStats/lang/uk.json
@@ -1,12 +1,21 @@
{
"DBStats": {
- "DatabaseUsage": "Використання бази даних",
+ "DatabaseUsage": "Використання БД",
"DataSize": "Розмір даних",
- "IndexSize": "Розмір індексів",
- "LearnMore": "Щоб зрозуміти більше як Piwik обробляє дані та як покращити роботу Piwik для сайтів з середнім та високим трафіком, перегляньте документацію %s.",
- "MainDescription": "Piwik зберігає всі дані для веб-аналітики в MySQL базі даних. На даний час, таблиці з даними Piwik займають %s",
- "RowCount": "Перелік рядків",
+ "DBSize": "Розмір бази даних",
+ "EstimatedSize": "Очікуваний розмір",
+ "IndexSize": "Розмір індексу",
+ "LearnMore": "Щоб дізнатися більше про те, як веб-аналітика обробляє дані і як їх оптимізувати для сайтів з середнім і високим навантаженням, дивіться документацію %s.",
+ "MainDescription": "Веб-аналітику зберігає всю вашу статистику в базі даних MySQL. Розмір таблиць на даний момент становить %s.",
+ "MetricDataByYear": "Таблиці показників за рік",
+ "MetricTables": "Таблиці показників",
+ "OtherTables": "Інші таблиці",
+ "PluginDescription": "Надає докладні звіти про використання бази даних MySQL. Доступно для супер-користувачів з метою діагностики.",
+ "ReportDataByYear": "Таблиці звітів за рік",
+ "ReportTables": "Таблиці звітів",
+ "RowCount": "Кількість записів",
"Table": "Таблиця",
- "TotalSize": "Розмір таблиці"
+ "TotalSize": "Загальний розмір",
+ "TrackerTables": "Таблиці трекеру"
}
} \ No newline at end of file
diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php
index da7a8507d9..56f65e8fb9 100644
--- a/plugins/Dashboard/Dashboard.php
+++ b/plugins/Dashboard/Dashboard.php
@@ -136,10 +136,10 @@ class Dashboard extends \Piwik\Plugin
if (empty($defaultLayout)) {
$topWidget = '';
- $advertising = StaticContainer::get('Piwik\PiwikPro\Advertising');
- if ($advertising->arePiwikProAdsEnabled() && Plugin\Manager::getInstance()->isPluginActivated('PiwikPro')) {
- $topWidget .= '{"uniqueId":"widgetPiwikPropromoPiwikPro",'
- . '"parameters":{"module":"PiwikPro","action":"promoPiwikPro"}},';
+ $advertising = StaticContainer::get('Piwik\ProfessionalServices\Advertising');
+ if ($advertising->areAdsForProfessionalServicesEnabled() && Plugin\Manager::getInstance()->isPluginActivated('ProfessionalServices')) {
+ $topWidget .= '{"uniqueId":"widgetProfessionalServicespromoServices",'
+ . '"parameters":{"module":"ProfessionalServices","action":"promoServices"}},';
}
if (Piwik::hasUserSuperUserAccess()) {
diff --git a/plugins/Dashboard/lang/da.json b/plugins/Dashboard/lang/da.json
index c77a36895c..63bfe426f9 100644
--- a/plugins/Dashboard/lang/da.json
+++ b/plugins/Dashboard/lang/da.json
@@ -21,6 +21,7 @@
"PluginDescription": "Webanalyse kontrolpanel. Tilpas dit kontrolpanel ved at tilføje nye moduler, træk og slip dem rundt, og ændre kontrolpanelets kolonnelayout. Hver bruger kan styre deres eget brugerdefinerede kontrolpanel.",
"RemoveDashboard": "Fjern kontrolpanel",
"RemoveDashboardConfirm": "Bekræft fjernelse af kontrolpanel \"%s\"?",
+ "RemoveDefaultDashboardNotPossible": "Standard kontrolpanel kan ikke fjernes",
"RenameDashboard": "Omdøb kontrolpanel",
"ResetDashboard": "Nulstil kontrolpanel",
"ResetDashboardConfirm": "Nulstil kontrolpanel til standard?",
diff --git a/plugins/Dashboard/lang/de.json b/plugins/Dashboard/lang/de.json
index 35cc204fec..28f3ff58cc 100644
--- a/plugins/Dashboard/lang/de.json
+++ b/plugins/Dashboard/lang/de.json
@@ -28,7 +28,7 @@
"SelectDashboardLayout": "Bitte wählen Sie ein neues Dashboardlayout",
"SelectWidget": "Wählen Sie hier das Widget aus, welches zum Dashboard hinzugefügt werden soll",
"SetAsDefaultWidgets": "Als Standard Widgetauswahl speichern",
- "SetAsDefaultWidgetsConfirm": "Sind Sie sicher, dass Sie die aktuelle Widgetauswahl und das Layout als das Standard Dashboardtemplate speichern möchten?",
+ "SetAsDefaultWidgetsConfirm": "Sind Sie sicher, dass Sie die aktuelle Widgetauswahl und das Layout als das Standard Dashboardvorlage speichern möchten?",
"SetAsDefaultWidgetsConfirmHelp": "Diese Widgetauswahl und das aktuelle Spaltenlayout werden verwendet, wenn ein neues Dashboard erstellt wird oder wenn \"%s\" verwendet wird.",
"TopLinkTooltip": "Zeige Webanalytik Berichte für %s.",
"WidgetNotFound": "Widget nicht gefunden",
diff --git a/plugins/Dashboard/lang/es.json b/plugins/Dashboard/lang/es.json
index c3681743d3..a52aa679d6 100644
--- a/plugins/Dashboard/lang/es.json
+++ b/plugins/Dashboard/lang/es.json
@@ -21,6 +21,7 @@
"PluginDescription": "Su tablero de análisis de internet. Personalize su tablero agregando nuevos reproductores, arrastre y suéltelos; cambie la disposición de las columnas del tablero. Cada usuario puede administrar su propio tablero personalizado.",
"RemoveDashboard": "Elimina el tablero",
"RemoveDashboardConfirm": "¿Está seguro que desea eliminar el tablero \"%s\"?",
+ "RemoveDefaultDashboardNotPossible": "El cuadro de mando por defecto no puede ser eliminado",
"RenameDashboard": "Renombrar el tablero",
"ResetDashboard": "Reinicia el tablero",
"ResetDashboardConfirm": "¿Realmente desea reiniciar la distribución del tablero y regresar a la selección de reproductores por defecto?",
diff --git a/plugins/Dashboard/lang/sq.json b/plugins/Dashboard/lang/sq.json
index 2c17ddc435..0b9a887d1f 100644
--- a/plugins/Dashboard/lang/sq.json
+++ b/plugins/Dashboard/lang/sq.json
@@ -7,13 +7,20 @@
"CreateNewDashboard": "Krijoni pult të ri",
"Dashboard": "Pulti",
"DashboardCopied": "Pulti i tanishëm u kopjua me sukses te përdoruesi i përzgjedhur.",
+ "DashboardEmptyNotification": "Pulti juaj nuk përmban ndonjë widget. Fillojani duke shtuar ndonjë të tillë ose thjesht rikthejeni pultin te përzgjedhja parazgjedhje për widget-et.",
"DashboardName": "Emër pulti:",
"DashboardOf": "Pulti i %s",
+ "DefaultDashboard": "Pulti parazgjedhje - Përdorim i parazgjedhjeve për përzgjedhje widget-sh dhe skema shtyllash",
"DeleteWidgetConfirm": "Jeni i sigurt se doni të fshihet ky \"widget\" prej pulti?",
+ "EmptyDashboard": "Pult i zbrazët - Zgjidhni widget-et tuaj të parapëlqyer",
"LoadingWidget": "Widget-i po ngarkohet, ju lutemi, pritni...",
"ManageDashboard": "Administroni pultin",
"Maximise": "Maksimizoje",
"Minimise": "Minimizoje",
+ "NotUndo": "Nuk do të jeni në gjendje ta zhbëni këtë veprim.",
+ "PluginDescription": "Pulti Juaj i Analizave Web. Përshtateni pultin tuaj duke shtuar widget-e të rinj, merrini dhe vërini atje ku doni, dhe ndryshoni skemën e shtyllave të pultit. Çdo përdorues mund ta administrojë pultin e vet ashtu si do.",
+ "RemoveDashboard": "Hiqe pultin",
+ "RemoveDashboardConfirm": "Jeni i sigurt se doni të hiqet pulti \"%s\"?",
"RemoveDefaultDashboardNotPossible": "Pulti parazgjedhje s’mund të hiqet",
"RenameDashboard": "Riemërtoni pultin",
"ResetDashboard": "Riktheje pultin te parazgjedhjet",
@@ -21,6 +28,9 @@
"SelectDashboardLayout": "Ju lutemi, përzgjidhni skemën e re për pultin tuaj",
"SelectWidget": "Përzgjidhni widget-in që doni të shtohet te pulti",
"SetAsDefaultWidgets": "Caktojeni si përzgjedhje widget-esh parazgjedhje",
+ "SetAsDefaultWidgetsConfirm": "Jeni i sigurt se doni të caktohet përzgjedhja e tanishme e widget-eve dhe e skemës për shtyllat si gjedhja parazgjedhje e pultit?",
+ "SetAsDefaultWidgetsConfirmHelp": "Kjo përzgjedhje widget-sh dhe shtyllash për pultin do të përdoret kur cilido përdorues krijon një pult të ri, ose kur përdoret veçoria \"%s\".",
+ "TopLinkTooltip": "Shihni raporte Analizash Web për %s.",
"WidgetNotFound": "Nuk u gjet \"widget\"",
"WidgetPreview": "Paraparje widget-i"
}
diff --git a/plugins/Dashboard/lang/tr.json b/plugins/Dashboard/lang/tr.json
index b69bbc0900..e0be7372aa 100644
--- a/plugins/Dashboard/lang/tr.json
+++ b/plugins/Dashboard/lang/tr.json
@@ -1,37 +1,37 @@
{
"Dashboard": {
- "AddAWidget": "Rapor kutusu ekle",
- "AddPreviewedWidget": "Görüntülenen Bileşenı panoya ekleyin.",
- "ChangeDashboardLayout": "Panel düzenini değiştir",
- "CopyDashboardToUser": "Paneli kullanıcı için kopyala",
- "CreateNewDashboard": "Yeni panel ekle",
+ "AddAWidget": "Gereç ekle",
+ "AddPreviewedWidget": "Gereci panoya eklemek için tıklayın",
+ "ChangeDashboardLayout": "Pano düzenini değiştir",
+ "CopyDashboardToUser": "Panoyu kullanıcıya kopyala",
+ "CreateNewDashboard": "Pano ekle",
"Dashboard": "Pano",
- "DashboardCopied": "Panel başarılı şekilde seçilen kullanıcı için kopyalandı",
- "DashboardEmptyNotification": "Kontrol Panelin hiçbir widget içermiyor. Widget ekleyerek veya kontrol panelini resetleyerek varsayılan widget seçimi ile başlayabilirsin.",
- "DashboardName": "Panel adı:",
- "DashboardOf": "Kontrol paneli %s",
- "DefaultDashboard": "Varsayılan panel - Varsayılan widget seçimleri ve sütunları kullanın",
- "DeleteWidgetConfirm": "Bu Bileşenı panodan silmek istediğinize emin misiniz?",
- "EmptyDashboard": "Boş panel - Favori widgetlarınızı seçin",
- "LoadingWidget": "Bileşen yükleniyor, lütfen bekleyin...",
- "ManageDashboard": "Paneli düzenle",
- "Maximise": "Maksimize",
+ "DashboardCopied": "Geçerli pano seçilmiş kullanıcıya kopyalandı.",
+ "DashboardEmptyNotification": "Panoda herhangi bir gereç yok. Başlamak için bazı gereçler ekleyin ya da panoyu varsayılan gereç seçimine sıfırlayın.",
+ "DashboardName": "Pano adı:",
+ "DashboardOf": "%s panosu",
+ "DefaultDashboard": "Varsayılan pano - Varsayılan gereç seçimlerini ve sütun düzenini kullanır",
+ "DeleteWidgetConfirm": "Bu gereci panodan silmek istediğinize emin misiniz?",
+ "EmptyDashboard": "Boş panı - Kullanmak istediğiniz gereçleri seçin",
+ "LoadingWidget": "Lütfen gereç yüklenirken bekleyin...",
+ "ManageDashboard": "Pano yönetimi",
+ "Maximise": "Büyüt",
"Minimise": "Küçült",
- "NotUndo": "Bu eylemi geri alamazsınız.",
- "PluginDescription": "Web Analitik ve Gösterge Tablon. Yeni widget ekleyerek, onları sürükle bırak yaparak ve gösterge paneli sütun düzgisini değiştirerek gösterge panelini özelleştirebilirsin. Her kullanıcı kendi özelleşmiş gösterge panelini yönetebilir.",
- "RemoveDashboard": "Paneli kaldır",
- "RemoveDashboardConfirm": "\"%s\" panelini kaldırmak istediğinize emin misiniz?",
+ "NotUndo": "Bu işlem geri alınamaz.",
+ "PluginDescription": "Web İstatistikleri Panonuz. Panonuzu, yeni gereçler ekleyerek, varolan gereçleri sürükleyip bırakarak ve sütun düzenini değiştirerek isteğinize göre düzenleyebilirsiniz. Her kullanıcı kendine özel bir pano oluşturabilir.",
+ "RemoveDashboard": "Panoyu sil",
+ "RemoveDashboardConfirm": "\"%s\" panosunu silmek istediğinize emin misiniz?",
"RemoveDefaultDashboardNotPossible": "Varsayılan pano silinemez",
- "RenameDashboard": "Panel yeniden adlandır",
- "ResetDashboard": "Paneli sıfırla",
- "ResetDashboardConfirm": "Kontrol paneli şablonunuzu varsayılan widget seçimlerine sıfırlamak istediğinizden emin misiniz?",
- "SelectDashboardLayout": "Lütfen yeni panel düzenini seçiniz.",
- "SelectWidget": "Panoya eklemek için bileşen seçiniz.",
- "SetAsDefaultWidgets": "Varsayılan widget seçimi olarak ata",
- "SetAsDefaultWidgetsConfirm": "Mevcut widget seçimini ve kontrol paneli düzenini varsayılan kontrol paneli teması olarak atamak istediğinizden emin misiniz?",
- "SetAsDefaultWidgetsConfirmHelp": "Bu widgetlerin seçimi ve gösterge panelinin sütun dizgisi herhangi bir kullanıcı yeni gösterge paneli yarattığında veya \"%s\" özellii kullanıldığında kullanılabilir.",
- "TopLinkTooltip": "%s için Web Analatik raporunu görüntüle.",
- "WidgetNotFound": "Bileşen bulunamadı",
- "WidgetPreview": "Bileşen görünümü"
+ "RenameDashboard": "Panoyu yeniden adlandırın",
+ "ResetDashboard": "Panoyu sıfırla",
+ "ResetDashboardConfirm": "Pano düzeninizi varsayılan gereç seçimlerine göre sıfırlamak istediğinize emin misiniz?",
+ "SelectDashboardLayout": "Lütfen yeni pano düzenini seçin",
+ "SelectWidget": "Panoya eklemek istesiğiniz gereci seçin",
+ "SetAsDefaultWidgets": "Varsayılan gereç seçimi olarak ata",
+ "SetAsDefaultWidgetsConfirm": "Geçerli gereç seçimi ve pano düzenini varsayılan pano teması olarak atamak istediğinize emin misiniz?",
+ "SetAsDefaultWidgetsConfirmHelp": "Başka bir kullanıcı yeni bir pano eklediğinde ya da \"%s\" özelliği kullanıldığında, varsayılan olarak bu gereç seçimi ve sütun düzeni kullanılır.",
+ "TopLinkTooltip": "%s için web istatistikleri raporunu görüntüle.",
+ "WidgetNotFound": "Gereç bulunamadı",
+ "WidgetPreview": "Gereç önizlemesi"
}
} \ No newline at end of file
diff --git a/plugins/Dashboard/lang/uk.json b/plugins/Dashboard/lang/uk.json
index 5b2d6ba172..5cabace93a 100644
--- a/plugins/Dashboard/lang/uk.json
+++ b/plugins/Dashboard/lang/uk.json
@@ -1,12 +1,37 @@
{
"Dashboard": {
- "AddPreviewedWidget": "Додати переглянутий віджет до панелі керування",
- "Dashboard": "Панель Керування",
- "DeleteWidgetConfirm": "Видалити цей віджет з панелі керування?",
- "LoadingWidget": "Завантаження віджету, зачекайте...",
+ "AddAWidget": "Додати віджет",
+ "AddPreviewedWidget": "Додати віджет на панель інструментів",
+ "ChangeDashboardLayout": "Виберіть вид панелі інструментів",
+ "CopyDashboardToUser": "Копіювати панель інструментів користувачеві",
+ "CreateNewDashboard": "Створити нову панель інструментів",
+ "Dashboard": "Панель інструментів",
+ "DashboardCopied": "Поточна панель інструментів успішно скопійовано вибраному користувачеві.",
+ "DashboardEmptyNotification": "Ваша панель інструментів не містить жодного елемента. Додайте якісь віджети або просто скиньте панель інструментів до налаштувань за замовчуванням.",
+ "DashboardName": "Ім'я панелі інструментів:",
+ "DashboardOf": "Панель інструментів %s",
+ "DefaultDashboard": "Панель інструментів за замовчуванням використовує набір віджетів та розташування колонок за замовчуванням.",
+ "DeleteWidgetConfirm": "Ви впевнені, що хочете видалити цей віджет з інформаційної панелі?",
+ "EmptyDashboard": "Порожня панель інструментів - виберіть ваші улюблені віджети",
+ "LoadingWidget": "Завантаження віджету, будь ласка почекайте...",
+ "ManageDashboard": "Налаштування панелі інструментів",
"Maximise": "Розгорнути",
- "SelectWidget": "Оберіть віджет для розміщення в панелі керування",
- "WidgetNotFound": "Віджет не знайдено",
- "WidgetPreview": "Перегляд віджету"
+ "Minimise": "Згорнути",
+ "NotUndo": "Дана операція не зворотна.",
+ "PluginDescription": "Ваша панель управління веб-аналітикою. Налаштуйте свою панель керування, додавайте нові віджети, переміщуйте їх і змінюйте розташування стовпців панелі управління. Кожен користувач може керувати своєю власною панеллю керування.",
+ "RemoveDashboard": "Видалити панель інструментів",
+ "RemoveDashboardConfirm": "Ви впевнені, що хочете видалити цю панель інструментів: '%s'?",
+ "RemoveDefaultDashboardNotPossible": "Панель управління за замовчуванням не може бути видалена",
+ "RenameDashboard": "Перейменувати панель інструментів",
+ "ResetDashboard": "Скинути панель інструментів",
+ "ResetDashboardConfirm": "Ви впевнені, що хочете скинути вид панелі інструментів до виду за замовчуванням?",
+ "SelectDashboardLayout": "Будь ласка, виберіть ваш новий вид панелі інструментів.",
+ "SelectWidget": "Виберіть віджет для додавання на панелі інструментів",
+ "SetAsDefaultWidgets": "Встановити набір віджетів за замовчуванням",
+ "SetAsDefaultWidgetsConfirm": "Ви впевнені, що хочете встановити поточний набір віджетів панелі інструментів як набір віджетів за замовчуванням?",
+ "SetAsDefaultWidgetsConfirmHelp": "Вибір віджетів і розташування колонок панелі інструментів буде використовуватися, коли користувач створює нову панель інструментів або коли використовується '%s'.",
+ "TopLinkTooltip": "Подивитися звіт веб-аналітики для %s.",
+ "WidgetNotFound": "Віджет не найден",
+ "WidgetPreview": "Попередній перегляд віджету"
}
} \ No newline at end of file
diff --git a/plugins/DevicePlugins/lang/da.json b/plugins/DevicePlugins/lang/da.json
index 0291ba6e2c..8ecf600ac9 100644
--- a/plugins/DevicePlugins/lang/da.json
+++ b/plugins/DevicePlugins/lang/da.json
@@ -3,6 +3,7 @@
"BrowserWithNoPluginsEnabled": "%1$s med ingen aktiverede udvidelsesmoduler",
"BrowserWithPluginsEnabled": "%1$s med udvidelsesmoduler %2$s aktiveret",
"PluginDescription": "Viseren liste over udvidelser, der understøttes i besøgendes browsere.",
+ "PluginDetectionDoesNotWorkInIE": "Bemærk: Plugins detektering virker ikke i Internet Explorer før version 11. Denne rapport er kun baseret på ikke-IE browsere og nyere versioner af IE.",
"WidgetPlugins": "Udvidelsesmoduler",
"WidgetPluginsDocumentation": "Rapporten viser, hvilke browserudvidelser de besøgende havde aktiveret. Oplysningerne kan være vigtigt for at vælge den rigtige måde at levere indholdet på."
}
diff --git a/plugins/DevicePlugins/lang/fr.json b/plugins/DevicePlugins/lang/fr.json
index 1faa74e338..cebf99a020 100644
--- a/plugins/DevicePlugins/lang/fr.json
+++ b/plugins/DevicePlugins/lang/fr.json
@@ -3,6 +3,7 @@
"BrowserWithNoPluginsEnabled": "%1$s avec aucun plugin activé",
"BrowserWithPluginsEnabled": "%1$s avec les plugins %2$s activés",
"PluginDescription": "Rapporte la liste des composants supportés par les navigateurs des visiteurs.",
+ "PluginDetectionDoesNotWorkInIE": "Note: la détections de plugins ne fonctionne pas avec Internet Explorer d'une version inférieure à 11. Ce Rapport est basé uniquement sur les utilsateurs non IE et les versions récentes d'IE.",
"WidgetPlugins": "Liste de Plugins",
"WidgetPluginsDocumentation": "Ce rapport montre quels plugins du navigateur vos visiteurs ont activés. Cette information peut être importante pour choisir le bon moyen de délivrer le contenu."
}
diff --git a/plugins/DevicePlugins/lang/is.json b/plugins/DevicePlugins/lang/is.json
index af396fe27e..939a0b07f8 100644
--- a/plugins/DevicePlugins/lang/is.json
+++ b/plugins/DevicePlugins/lang/is.json
@@ -1,6 +1,5 @@
{
"DevicePlugins": {
- "PluginDetectionDoesNotWorkInIE": "Ath: uppgötvun á íbótum virkar ekki með Internet Explorer. Þessi skýrsla er aðeins unnin út frá öðrum vöfrum en IE.",
"WidgetPlugins": "Listi yfir íbætur"
}
} \ No newline at end of file
diff --git a/plugins/DevicePlugins/lang/ka.json b/plugins/DevicePlugins/lang/ka.json
index 2452d64099..7482e8bf9c 100644
--- a/plugins/DevicePlugins/lang/ka.json
+++ b/plugins/DevicePlugins/lang/ka.json
@@ -1,6 +1,5 @@
{
"DevicePlugins": {
- "PluginDetectionDoesNotWorkInIE": "შენიშვნა: პლაგინების ამოცნობა არ ხდება ინტერნეტ ექსპლორერში. ეს რეპორტი მუშაოაბს მხოლოდ არა–IE ბრაუზერებზე.",
"WidgetPlugins": "პლაგინების სია"
}
} \ No newline at end of file
diff --git a/plugins/DevicePlugins/lang/sq.json b/plugins/DevicePlugins/lang/sq.json
index 61aa87f22c..477e2a2f77 100644
--- a/plugins/DevicePlugins/lang/sq.json
+++ b/plugins/DevicePlugins/lang/sq.json
@@ -2,6 +2,8 @@
"DevicePlugins": {
"BrowserWithNoPluginsEnabled": "%1$s pa shtojca të aktivizuara",
"BrowserWithPluginsEnabled": "%1$s me shtojca %2$s të aktivizuara",
+ "PluginDescription": "Raporton listën e shtojcave që mbulohen nga shfletuesit e përdoruesve.",
+ "PluginDetectionDoesNotWorkInIE": "Shënim: Zbulimi i shtojcave nuk funksionon nën Internet Explorer më të hershëm se 11. Ky raport bazohet vetëm në shfletues jo-IE dhe versione IE më të rinj.",
"WidgetPlugins": "Listë e Shtojcave",
"WidgetPluginsDocumentation": "Ky raport tregon se cilat shtojca shfletuesi kanë të aktivizuara vizitorët tuaj. Ky informacion mund të jetë i vlefshëm për zgjedhjen e mënyrës më të përshtatshme për ofrimin e lëndës suaj."
}
diff --git a/plugins/DevicePlugins/lang/sv.json b/plugins/DevicePlugins/lang/sv.json
index b5b98eced9..33a23fdd73 100644
--- a/plugins/DevicePlugins/lang/sv.json
+++ b/plugins/DevicePlugins/lang/sv.json
@@ -3,6 +3,7 @@
"BrowserWithNoPluginsEnabled": "%1$s med inga plugins är aktiverad",
"BrowserWithPluginsEnabled": "%1$s med plugins %2$s är aktiverad",
"PluginDescription": "Visar en lista av plugins som stöds i besökarnas webbläsare.",
+ "PluginDetectionDoesNotWorkInIE": "Notering: Detektering av tillägg fungerar inte i Internet Explorer med versioner före 11. Denna rapport baseras endast på icke-IE webbläsare och nyare versioner av IE.",
"WidgetPlugins": "Lista över plugins",
"WidgetPluginsDocumentation": "Denna rapport visar vilka plugins i webbläsaren som besökarna hade aktiverat. Denna information kan vara viktig för att välja rätt sätt att leverera ditt innehåll."
}
diff --git a/plugins/DevicePlugins/lang/uk.json b/plugins/DevicePlugins/lang/uk.json
index 1f2acce1e5..ebbc0548ac 100644
--- a/plugins/DevicePlugins/lang/uk.json
+++ b/plugins/DevicePlugins/lang/uk.json
@@ -1,5 +1,10 @@
{
"DevicePlugins": {
- "WidgetPlugins": "Список плагінів"
+ "BrowserWithNoPluginsEnabled": "%1$s без активованих плагінів",
+ "BrowserWithPluginsEnabled": "%1$s з плагінами %2$s включено",
+ "PluginDescription": "Повідомляє список плагінів, доступних в браузерах відвідувачів.",
+ "PluginDetectionDoesNotWorkInIE": "Увага: Визначення плагінів не працює в Internet Explorer до 11. Цей звіт базується тільки на не-IE браузерах і новітніх версіях IE.",
+ "WidgetPlugins": "Список плагінів",
+ "WidgetPluginsDocumentation": "Цей звіт показується які плагіни відвідувачі використовують в своїх браузерах. Ця інформація може бути важлива для того, щоб відвідувачі змогли побачити ваш контент належним чином."
}
} \ No newline at end of file
diff --git a/plugins/DevicesDetection/Reports/GetBrowserVersions.php b/plugins/DevicesDetection/Reports/GetBrowserVersions.php
index 0c71c602f2..13c47984f5 100644
--- a/plugins/DevicesDetection/Reports/GetBrowserVersions.php
+++ b/plugins/DevicesDetection/Reports/GetBrowserVersions.php
@@ -22,7 +22,6 @@ class GetBrowserVersions extends Base
$this->name = Piwik::translate('DevicesDetection_BrowserVersion');
$this->documentation = ''; // TODO
$this->order = 6;
-
$this->subcategoryId = 'DevicesDetection_Software';
}
diff --git a/plugins/DevicesDetection/Reports/GetBrowsers.php b/plugins/DevicesDetection/Reports/GetBrowsers.php
index b1a2f936d0..7d8959d1e6 100644
--- a/plugins/DevicesDetection/Reports/GetBrowsers.php
+++ b/plugins/DevicesDetection/Reports/GetBrowsers.php
@@ -22,7 +22,6 @@ class GetBrowsers extends Base
$this->name = Piwik::translate('DevicesDetection_Browsers');
$this->documentation = Piwik::translate('DevicesDetection_WidgetBrowsersDocumentation', '<br />');
$this->order = 5;
-
$this->subcategoryId = 'DevicesDetection_Software';
}
diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php
index 0feafaebca..e7ef1fe893 100644
--- a/plugins/DevicesDetection/functions.php
+++ b/plugins/DevicesDetection/functions.php
@@ -72,7 +72,7 @@ function getBrowserName($label)
*
* First try to find a logo for the given short code
* If none can be found try to find a logo for the browser family
- * Return unkown logo otherwise
+ * Return unknown logo otherwise
*
* @param string $short Shortcode or name of browser
*
diff --git a/plugins/DevicesDetection/images/browsers/TS.gif b/plugins/DevicesDetection/images/browsers/TS.gif
new file mode 100644
index 0000000000..ca411126a3
--- /dev/null
+++ b/plugins/DevicesDetection/images/browsers/TS.gif
Binary files differ
diff --git a/plugins/DevicesDetection/lang/ar.json b/plugins/DevicesDetection/lang/ar.json
index 4089486f81..666791fe41 100644
--- a/plugins/DevicesDetection/lang/ar.json
+++ b/plugins/DevicesDetection/lang/ar.json
@@ -1,13 +1,44 @@
{
"DevicesDetection": {
- "BrowserEngine": "المتصفح",
+ "BrowserEngine": "محرّك المتصفح",
+ "BrowserEngineDocumentation": "يظهر هذا التقرير مستعرضات زوارك مقسمة حسب محركاتها. %s أكثر المعلومات أهمية لمطوري الوب هي نوع محرك التصيير الذي يستخدمه الزوار. إن المسميات تحوي أسماء المحركات متبوعة بأكثر المستعرضات شعبية الذي يستخدم هذا المحرك بين قوسين.",
+ "BrowserEngines": "محرّكات المتصفح",
"BrowserFamily": "عائلة المتصفح",
"Browsers": "المتصفحات",
"BrowserVersion": "إصدار المتصفح",
+ "BrowserVersions": "إصدارات المتصفح",
+ "Camera": "الكاميرا",
+ "CarBrowser": "متصفح سيارة",
+ "Software": "برنامج",
"ColumnBrowser": "المتصفح",
"ColumnOperatingSystem": "نظام التشغيل",
+ "ColumnOperatingSystemVersion": "إصدار نظام التشغيل",
+ "Console": "وحدة التحكُّم",
+ "dataTableLabelBrands": "العلامة",
+ "dataTableLabelModels": "الطراز",
+ "dataTableLabelSystemVersion": "إصدار نظام التشغيل",
"dataTableLabelTypes": "النوع",
+ "Device": "الجهاز",
+ "DeviceBrand": "صانع الجهاز",
+ "DeviceDetection": "اكتشاف الجهاز",
+ "DeviceModel": "طراز الجهاز",
+ "DevicesDetection": "أجهزة الزائر",
+ "DeviceType": "نوع الجهاز",
+ "FeaturePhone": "هاتف مميزات",
+ "OperatingSystemFamilies": "عوائل أنظمة التشغيل",
+ "OperatingSystemFamily": "عائلة نظام التشغيل",
"OperatingSystems": "أنظمة التشغيل",
- "WidgetBrowsers": "متصفحات الزوار"
+ "OperatingSystemVersions": "إصدارات نظام التشغيل",
+ "PluginDescription": "يزودك بمعلومات تفصيلية عن أجهزة الزائر ، مثل العلامة التجارية (الصانع) والطراز (إصدار الجهاز) و نوع الجهاز (تلفاز، وحدة متخصصة ، هاتف ذكي ، حاسب مكتبي ...الخ) والمزيد من المعلومات.",
+ "SmartDisplay": "شاشة ذكية",
+ "Smartphone": "هاتف ذكي",
+ "PortableMediaPlayer": "مشغل وسائط محمول",
+ "Devices": "الأجهزة",
+ "Tablet": "لوحي",
+ "Phablet": "هاتف لوحي",
+ "TV": "تلفاز",
+ "UserAgent": "وكيل-المستخدم",
+ "WidgetBrowsers": "متصفحات الزوار",
+ "WidgetBrowsersDocumentation": "يحوي هذا التقرير معلومات عن ماهية نوع المستعرض الذي استخدمه زوارك. يُذكَر كل إصدار من المستعرض لوحده."
}
} \ No newline at end of file
diff --git a/plugins/DevicesDetection/lang/da.json b/plugins/DevicesDetection/lang/da.json
index 11ab896275..c3689437c9 100644
--- a/plugins/DevicesDetection/lang/da.json
+++ b/plugins/DevicesDetection/lang/da.json
@@ -35,6 +35,7 @@
"PortableMediaPlayer": "Bærbar medieafspiller",
"Devices": "Enheder",
"Tablet": "Tablet",
+ "Phablet": "Phablet",
"TV": "TV",
"UserAgent": "Brugeragent",
"WidgetBrowsers": "Besøgendes browser",
diff --git a/plugins/DevicesDetection/lang/tr.json b/plugins/DevicesDetection/lang/tr.json
index 0328ee866b..0e9e8a6f55 100644
--- a/plugins/DevicesDetection/lang/tr.json
+++ b/plugins/DevicesDetection/lang/tr.json
@@ -1,28 +1,28 @@
{
"DevicesDetection": {
- "BrowserEngine": "Tarayıcı",
- "BrowserEngines": "Tarayıcı Motorları",
+ "BrowserEngine": "Tarayıcı motoru",
+ "BrowserEngines": "Tarayıcı motorları",
"BrowserFamily": "Tarayıcı ailesi",
"Browsers": "Tarayıcılar",
"BrowserVersion": "Tarayıcı sürümü",
- "BrowserVersions": "Tarayıcı versiyonları",
+ "BrowserVersions": "Tarayıcı sürümleri",
"Camera": "Kamera",
- "CarBrowser": "Araba tarayıcısı",
+ "CarBrowser": "Araç tarayıcısı",
"Software": "Yazılım",
"ColumnBrowser": "Tarayıcı",
"ColumnOperatingSystem": "İşletim sistemi",
- "ColumnOperatingSystemVersion": "İşletim Sistemi Versiyonu",
+ "ColumnOperatingSystemVersion": "İşletim sistemi sürümü",
"Console": "Konsol",
"dataTableLabelBrands": "Marka",
"dataTableLabelModels": "Model",
- "dataTableLabelSystemVersion": "İşletim Sistemi versiyonu",
+ "dataTableLabelSystemVersion": "İşletim Sistemi Sürümü",
"dataTableLabelTypes": "Tür",
- "Device": "Cihaz",
- "DeviceBrand": "Cihaz markası",
- "DeviceDetection": "Cihaz algılama",
- "DeviceModel": "Cihaz modeli",
- "DevicesDetection": "Ziyaretçi Cihazları",
- "DeviceType": "Cihaz tipi",
+ "Device": "Aygıt",
+ "DeviceBrand": "Aygıt markası",
+ "DeviceDetection": "Aygıt algılama",
+ "DeviceModel": "Aygıt modeli",
+ "DevicesDetection": "Ziyaretçi Aygıtları",
+ "DeviceType": "Aygıt türü",
"FeaturePhone": "Özellikli Telefon",
"OperatingSystemFamilies": "İşletim Sistemi aileleri",
"OperatingSystemFamily": "İşletim Sistemi Ailesi",
diff --git a/plugins/DevicesDetection/lang/uk.json b/plugins/DevicesDetection/lang/uk.json
index 48bdce15db..492de683ed 100644
--- a/plugins/DevicesDetection/lang/uk.json
+++ b/plugins/DevicesDetection/lang/uk.json
@@ -1,12 +1,44 @@
{
"DevicesDetection": {
- "BrowserEngine": "Веб-оглядач",
- "BrowserFamily": "Родина веб-оглядача",
- "Browsers": "Веб-оглядачі",
- "ColumnBrowser": "Веб-оглядач",
+ "BrowserEngine": "Движок браузера",
+ "BrowserEngineDocumentation": "Цей графік показує інформацію про браузери відвідувачів, розбиту на кшталт сімейства. %s Найбільш важлива інформація для веб-розробників - на якому движку працюють браузери відвідувачів. Значки містять ім'я движка в залежності від найбільш популярного браузера, який працює на цьому движку.",
+ "BrowserEngines": "Браузерні движки",
+ "BrowserFamily": "Сімейство браузерів",
+ "Browsers": "По браузерам",
+ "BrowserVersion": "Версія браузера",
+ "BrowserVersions": "Версії браузерів",
+ "Camera": "Камера",
+ "CarBrowser": "Автомобільний браузер",
+ "Software": "Програми",
+ "ColumnBrowser": "Браузер",
"ColumnOperatingSystem": "Операційна система",
+ "ColumnOperatingSystemVersion": "Версія операційної системи",
+ "Console": "Консоль",
+ "dataTableLabelBrands": "Фірма виробник",
+ "dataTableLabelModels": "Модель",
+ "dataTableLabelSystemVersion": "Версія операційної системи",
"dataTableLabelTypes": "Тип",
- "OperatingSystems": "Операційні системи",
- "WidgetBrowsers": "Веб-оглядачі відвідувачів"
+ "Device": "Пристрій",
+ "DeviceBrand": "Фірма-виробник пристрою",
+ "DeviceDetection": "Визначення пристроїв",
+ "DeviceModel": "Модель пристрою",
+ "DevicesDetection": "Пристрої відвідувачів",
+ "DeviceType": "Тип пристрою",
+ "FeaturePhone": "Особливість телефону",
+ "OperatingSystemFamilies": "Сімейства операційних систем",
+ "OperatingSystemFamily": "Тип операційної системи",
+ "OperatingSystems": "По операційним системам",
+ "OperatingSystemVersions": "Версії операційних систем",
+ "PluginDescription": "Надає розширену інформацію про пристрої користувача: бренд (виробник), модель (версія пристрою), тип пристрою (тв, консолі, смартфони, робоча станція та ін.) та ін.",
+ "SmartDisplay": "Смарт-дисплей",
+ "Smartphone": "Смартфон",
+ "PortableMediaPlayer": "Портативний медіа-плеєр",
+ "Devices": "Пристрої",
+ "Tablet": "Планшет",
+ "Phablet": "Фаблет",
+ "TV": "ТВ",
+ "UserAgent": "User-Agent",
+ "WidgetBrowsers": "Браузери відвідувачів",
+ "WidgetBrowsersDocumentation": "Цей звіт містить інформацію по браузерам, які використовують ваші відвідувачі. Кожна версія браузера відображається окремо."
}
} \ No newline at end of file
diff --git a/plugins/DevicesDetection/plugin.json b/plugins/DevicesDetection/plugin.json
deleted file mode 100644
index 5a522126b8..0000000000
--- a/plugins/DevicesDetection/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "authors": [
- {
- "name": "Piwik PRO",
- "homepage": "http://piwik.pro"
- }
- ]
-}
diff --git a/plugins/Diagnostics/Test/Integration/Commands/AnalyzeArchiveTableTest.php b/plugins/Diagnostics/Test/Integration/Commands/AnalyzeArchiveTableTest.php
index a60f0c0a19..6202bd22af 100644
--- a/plugins/Diagnostics/Test/Integration/Commands/AnalyzeArchiveTableTest.php
+++ b/plugins/Diagnostics/Test/Integration/Commands/AnalyzeArchiveTableTest.php
@@ -41,12 +41,12 @@ Statistics for the archive_numeric_2010_03 and archive_blob_2010_03 tables:
+-------------------------------------------+------------+---------------+-------------+---------+-----------+----------------+-------------+
| Group | # Archives | # Invalidated | # Temporary | # Error | # Segment | # Numeric Rows | # Blob Rows |
+-------------------------------------------+------------+---------------+-------------+---------+-----------+----------------+-------------+
-| week[2010-03-01 - 2010-03-07] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 36 | 63 |
-| month[2010-03-01 - 2010-03-31] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 36 | 63 |
+| week[2010-03-01 - 2010-03-07] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 36 | 64 |
+| month[2010-03-01 - 2010-03-31] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 36 | 64 |
| day[2010-03-03 - 2010-03-03] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 0 | 0 |
| day[2010-03-04 - 2010-03-04] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 0 | 0 |
| day[2010-03-05 - 2010-03-05] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 0 | 0 |
-| day[2010-03-06 - 2010-03-06] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 36 | 51 |
+| day[2010-03-06 - 2010-03-06] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 36 | 52 |
| day[2010-03-07 - 2010-03-07] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 0 | 0 |
| day[2010-03-08 - 2010-03-08] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 0 | 0 |
| week[2010-03-08 - 2010-03-14] idSite = 1 | 3 | 0 | 0 | 0 | 2 | 0 | 0 |
diff --git a/plugins/Diagnostics/lang/fr.json b/plugins/Diagnostics/lang/fr.json
index ffd3cffae6..5050b5a996 100644
--- a/plugins/Diagnostics/lang/fr.json
+++ b/plugins/Diagnostics/lang/fr.json
@@ -1,6 +1,8 @@
{
"Diagnostics": {
"ConfigFileTitle": "Fichier de configuration",
+ "ConfigFileIntroduction": "Ici vous pouvez visualiser la configuration de Piwik. Si vous exécutez Piwik depuis un environnement où la charge est répartie, la page peut être différente dépedamment du serveur depuis lequel la page est chargée. Les lignes avec une couleur de fond différentes représentent les valeurs de configuration modifiées qui sont spécifiées par exemple dans le fichier %1$s.",
+ "HideUnchanged": "Si vous souhaitez afficher uniquement les valeurs modifiées, vous pouvez cliquer sur %1$smasquer toutes les valeurs inchangées%2$s.",
"Sections": "Sections"
}
} \ No newline at end of file
diff --git a/plugins/Diagnostics/lang/nb.json b/plugins/Diagnostics/lang/nb.json
index 47a69e3d91..4360976279 100644
--- a/plugins/Diagnostics/lang/nb.json
+++ b/plugins/Diagnostics/lang/nb.json
@@ -1,6 +1,8 @@
{
"Diagnostics": {
"ConfigFileTitle": "Konfigurasjonsfil",
+ "ConfigFileIntroduction": "Her kan du se konfigurasjonen til Piwik. Hvis du kjører Piwik i et lastbalansert servermiljø, kan denne siden se ulik ut avhengig av hvilken server siden lastes fra. Rader med ulik bakgrunnsfarge er endrede konfigurasjonsverdier som er spesifisert i for eksempel %1$s.",
+ "HideUnchanged": "Hvis du kun vil se de endrede verdiene, kan du %1$sskjule alle uendrede verdier%2$s.",
"Sections": "Seksjoner"
}
} \ No newline at end of file
diff --git a/plugins/Diagnostics/lang/nl.json b/plugins/Diagnostics/lang/nl.json
new file mode 100644
index 0000000000..15f12486b5
--- /dev/null
+++ b/plugins/Diagnostics/lang/nl.json
@@ -0,0 +1,6 @@
+{
+ "Diagnostics": {
+ "ConfigFileTitle": "Configuratiebestand",
+ "Sections": "Secties"
+ }
+} \ No newline at end of file
diff --git a/plugins/Diagnostics/lang/sv.json b/plugins/Diagnostics/lang/sv.json
index 25fe2ba0c6..aa04dc4e7b 100644
--- a/plugins/Diagnostics/lang/sv.json
+++ b/plugins/Diagnostics/lang/sv.json
@@ -1,5 +1,8 @@
{
"Diagnostics": {
- "ConfigFileTitle": "Konfigurationsfil"
+ "ConfigFileTitle": "Konfigurationsfil",
+ "ConfigFileIntroduction": "Här kan du se Piwiks konfiguration. Om du kör Piwik i en lastbalanserad miljö så kan sidan se annorlunda ut beroende på vilken server som sidan laddas ifrån. De rader som har en annorlunda bakgrundsfärg är ändrade konfigurationsvärden som specificeras i exempelvis filen %1$s.",
+ "HideUnchanged": "Om du vill se endast ändrade värden så kan du %1$s dölja alla oförändrade värden%2$s.",
+ "Sections": "Sektioner"
}
} \ No newline at end of file
diff --git a/plugins/Diagnostics/lang/uk.json b/plugins/Diagnostics/lang/uk.json
new file mode 100644
index 0000000000..41ff95413c
--- /dev/null
+++ b/plugins/Diagnostics/lang/uk.json
@@ -0,0 +1,8 @@
+{
+ "Diagnostics": {
+ "ConfigFileTitle": "Файл конфігурації",
+ "ConfigFileIntroduction": "Тут ви можете подивитися конфігурацію Piwik. Якщо ви запускаєте Piwik в середовищі зі збалансованим навантаження, сторінка може бути різною в залежності від сервера, з якого ця сторінка завантажується. Ряди з різними кольорами фону - це змінені значення конфігурації, які описані, наприклад в файлі %1$s.",
+ "HideUnchanged": "Якщо ви хочете бачити тільки змінені значення, ви можете %1$sзаховати всі незмінені значення%2$s.",
+ "Sections": "Розділи"
+ }
+} \ No newline at end of file
diff --git a/plugins/Ecommerce/lang/da.json b/plugins/Ecommerce/lang/da.json
index 4d27481ba7..7db3b0c5cd 100644
--- a/plugins/Ecommerce/lang/da.json
+++ b/plugins/Ecommerce/lang/da.json
@@ -1,5 +1,8 @@
{
"Ecommerce": {
- "Sales": "Salg"
+ "PluginDescription": "E-handel lader dig registrere når en kunde tilføjer en vare til kurven og når de udfører et køb. Man kan også registrere når der bliver set på varer og kategorier og når en handel afbrydes.",
+ "Sales": "Salg",
+ "SalesBy": "Salg af %s",
+ "SalesAdjective": "Salg %s"
}
} \ No newline at end of file
diff --git a/plugins/Ecommerce/lang/ru.json b/plugins/Ecommerce/lang/ru.json
index 8a35e7800e..98a46f81fa 100644
--- a/plugins/Ecommerce/lang/ru.json
+++ b/plugins/Ecommerce/lang/ru.json
@@ -1,5 +1,6 @@
{
"Ecommerce": {
+ "PluginDescription": "Ecommerce позволяет вам отслеживать, когда пользователи добавляют продукты в корзины, и когда они преобразовываются в распродажу ecommerce. Также отслеживайте просмотр продуктов и категорий продуктов, и оставленные корзины.",
"Sales": "Продажи"
}
} \ No newline at end of file
diff --git a/plugins/Ecommerce/lang/sq.json b/plugins/Ecommerce/lang/sq.json
index 005f58ccb9..0b7be266d9 100644
--- a/plugins/Ecommerce/lang/sq.json
+++ b/plugins/Ecommerce/lang/sq.json
@@ -1,6 +1,8 @@
{
"Ecommerce": {
+ "PluginDescription": "Etregtia ju lejon të ndiqni se kur përdoruesit shtojnë produkte në shporta, dhe kur ato shndërrohen në shitje etregtie. Ajo ndjek gjithashtu parje produktesh dhe kategorish produktesh dhe shporta të braktisura.",
"Sales": "Shitje",
+ "SalesBy": "Shitje nga %s",
"SalesAdjective": "Shitje %s"
}
} \ No newline at end of file
diff --git a/plugins/Ecommerce/lang/sv.json b/plugins/Ecommerce/lang/sv.json
index 9289b96b23..0e43f8601d 100644
--- a/plugins/Ecommerce/lang/sv.json
+++ b/plugins/Ecommerce/lang/sv.json
@@ -1,5 +1,6 @@
{
"Ecommerce": {
+ "PluginDescription": "E-handel möjliggör för dig att spåra när en användare lägger till produkter i varukorgen och när de konverterar till en e-handelsförsäljning. Du kan även spåra visningar av produkter och produktkategorier samt övergivna varukorgar.",
"Sales": "Försäljning",
"SalesBy": "Försäljning genom %s",
"SalesAdjective": "Försäljning %s"
diff --git a/plugins/Ecommerce/lang/tr.json b/plugins/Ecommerce/lang/tr.json
new file mode 100644
index 0000000000..5892238eae
--- /dev/null
+++ b/plugins/Ecommerce/lang/tr.json
@@ -0,0 +1,8 @@
+{
+ "Ecommerce": {
+ "PluginDescription": "E-ticaret kullanıcıların ürünleri sepete atmalarının ve satın almalarının izlenmesini sağlar. Ayrıca ürün, ürün kategorileri görünümü ve iptal edilen sepetleri de izler.",
+ "Sales": "Satışlar",
+ "SalesBy": "%s bazında satışlar",
+ "SalesAdjective": "Satışlar %s"
+ }
+} \ No newline at end of file
diff --git a/plugins/Ecommerce/lang/uk.json b/plugins/Ecommerce/lang/uk.json
new file mode 100644
index 0000000000..9ada208f27
--- /dev/null
+++ b/plugins/Ecommerce/lang/uk.json
@@ -0,0 +1,8 @@
+{
+ "Ecommerce": {
+ "PluginDescription": "Електронна комерція дозволяє відстежувати, коли користувачі додали товар у кошик, і що вони хочуть придбати. Також відстежуються продукти і категорії продуктів і кинуті кошики.",
+ "Sales": "Продажі",
+ "SalesBy": "Продано %s",
+ "SalesAdjective": "Продажів %s"
+ }
+} \ No newline at end of file
diff --git a/plugins/Events/lang/ar.json b/plugins/Events/lang/ar.json
new file mode 100644
index 0000000000..55b9583283
--- /dev/null
+++ b/plugins/Events/lang/ar.json
@@ -0,0 +1,8 @@
+{
+ "Events": {
+ "Event": "حَدَث",
+ "TotalEventsDocumentation": "عدد الأحداث الإجمالي",
+ "TotalValueDocumentation": "مجموع قيم الأحداث",
+ "ViewEvents": "عرض الأحداث"
+ }
+} \ No newline at end of file
diff --git a/plugins/Events/lang/da.json b/plugins/Events/lang/da.json
index 6ba733e87c..fa44cc16f8 100644
--- a/plugins/Events/lang/da.json
+++ b/plugins/Events/lang/da.json
@@ -1,5 +1,6 @@
{
"Events": {
+ "PluginDescription": "Spor begivenheder og få rapporter om dine besøgendes aktiviteter.",
"AvgEventValue": "Genomsnitlig værdi for hændelsen er: %s",
"AvgValue": "Gennemsnitsværdi",
"AvgValueDocumentation": "Gennemsnittet af alle værdier for denne hændelse",
diff --git a/plugins/Events/lang/it.json b/plugins/Events/lang/it.json
index da44c8b0b3..8c47835461 100644
--- a/plugins/Events/lang/it.json
+++ b/plugins/Events/lang/it.json
@@ -15,7 +15,7 @@
"EventsWithValue": "Eventi con un valore",
"EventsWithValueDocumentation": "Numero di eventi dove è stato impostato un valore Evento",
"EventValue": "Valore Evento",
- "EventValueTooltip": "Il valore totale Evento è la somma dei %1$s valori eventi %2$s tra un minimo di %3$s e un massimo di %4$s.",
+ "EventValueTooltip": "Il valore totale Evento è la somma dei %1$s valori degli eventi %2$s tra un minimo di %3$s e un massimo di %4$s.",
"MaxValue": "Valore massimo",
"MaxValueDocumentation": "Valore massimo per questo evento",
"MinValue": "Valore minimo",
diff --git a/plugins/Events/lang/uk.json b/plugins/Events/lang/uk.json
new file mode 100644
index 0000000000..d6d23a28aa
--- /dev/null
+++ b/plugins/Events/lang/uk.json
@@ -0,0 +1,32 @@
+{
+ "Events": {
+ "PluginDescription": "Відстежуйте події і отримуйте звіти про активність своїх відвідувачів.",
+ "AvgEventValue": "Середнє значення події: %s",
+ "AvgValue": "Середнє значення",
+ "AvgValueDocumentation": "Середнє всіх значень для цієї події",
+ "Event": "Подія",
+ "EventAction": "Дія події",
+ "EventActions": "Дії подій",
+ "EventCategories": "Категорії подій",
+ "EventCategory": "Категорія події",
+ "EventName": "Назва події",
+ "EventNames": "Назви подій",
+ "Events": "Події",
+ "EventsWithValue": "Події зі значенням",
+ "EventsWithValueDocumentation": "Кількість подій, де було встановлено значення для Події",
+ "EventValue": "Значення події",
+ "EventValueTooltip": "Загальні значення подій дорівнюють сумі %1$s значенням (подій) %2$s між мінімумом %3$s і максимумом %4$s.",
+ "MaxValue": "Максимальне значення",
+ "MaxValueDocumentation": "Максимальна значення для цієї події",
+ "MinValue": "Мінімальне значення",
+ "MinValueDocumentation": "Мінімальне значення для цієї події",
+ "SecondaryDimension": "Вторичний вимір %s.",
+ "SwitchToSecondaryDimension": "Переключитися на %s",
+ "TopEvents": "Топ подій",
+ "TotalEvents": "Усього подій",
+ "TotalEventsDocumentation": "Загальна кількість подій",
+ "TotalValue": "Загальне значення",
+ "TotalValueDocumentation": "Сума значень подій",
+ "ViewEvents": "Перегляд подій"
+ }
+} \ No newline at end of file
diff --git a/plugins/ExamplePlugin/README.md b/plugins/ExamplePlugin/README.md
index f7d91416bb..c9c3266859 100644
--- a/plugins/ExamplePlugin/README.md
+++ b/plugins/ExamplePlugin/README.md
@@ -13,7 +13,3 @@ My answer
## Changelog
Here goes the changelog text.
-
-## Support
-
-Please direct any feedback to ...
diff --git a/plugins/ExamplePlugin/Updates/0.0.2.php b/plugins/ExamplePlugin/Updates/0.0.2.php
index 31f8dd192a..817d37d66e 100644
--- a/plugins/ExamplePlugin/Updates/0.0.2.php
+++ b/plugins/ExamplePlugin/Updates/0.0.2.php
@@ -56,7 +56,7 @@ class Updates_0_0_2 extends PiwikUpdates
/**
* Perform the incremental version update.
*
- * This method should preform all updating logic. If you define queries in the `getMigrations()` method,
+ * This method should perform all updating logic. If you define queries in the `getMigrations()` method,
* you must call {@link Updater::executeMigrations()} here.
*
* @param Updater $updater
diff --git a/plugins/ExamplePlugin/plugin.json b/plugins/ExamplePlugin/plugin.json
index 71f81fb70d..fa71469815 100644
--- a/plugins/ExamplePlugin/plugin.json
+++ b/plugins/ExamplePlugin/plugin.json
@@ -4,7 +4,7 @@
"description": "Piwik Platform showcase: how to create widgets, menus, scheduled tasks, a custom archiver, plugin tests, and a AngularJS component.",
"theme": false,
"require": {
- "piwik": ">=PIWIK_VERSION"
+ "piwik": ">=PIWIK_VERSION,<3.0.0-b1"
},
"authors": [
{
@@ -13,7 +13,17 @@
"homepage": ""
}
],
+ "support": {
+ "email": "",
+ "issues": "",
+ "forum": "",
+ "irc": "",
+ "wiki": "",
+ "source": "",
+ "docs": "",
+ "rss": ""
+ },
"homepage": "",
"license": "GPL v3+",
"keywords": []
-} \ No newline at end of file
+}
diff --git a/plugins/ExampleTheme/README.md b/plugins/ExampleTheme/README.md
index 8dce581531..de7cfecaa1 100644
--- a/plugins/ExampleTheme/README.md
+++ b/plugins/ExampleTheme/README.md
@@ -12,8 +12,3 @@ My answer
## Changelog
Here goes the changelog text.
-
-## Support
-
-Please direct any feedback to ...
-
diff --git a/plugins/ExampleTheme/plugin.json b/plugins/ExampleTheme/plugin.json
index 7f486d6ddf..92b17918ec 100644
--- a/plugins/ExampleTheme/plugin.json
+++ b/plugins/ExampleTheme/plugin.json
@@ -3,10 +3,23 @@
"description": "Piwik Platform showcase: example of how to create a simple Theme.",
"version": "0.1.0",
"theme": true,
+ "require": {
+ "piwik": ">=PIWIK_VERSION,<3.0.0-b1"
+ },
"stylesheet": "stylesheets/theme.less",
"homepage": "",
"license": "GPL v3+",
"keywords": [],
+ "support": {
+ "email": "",
+ "issues": "",
+ "forum": "",
+ "irc": "",
+ "source": "",
+ "docs": "",
+ "wiki": "",
+ "rss": ""
+ },
"authors": [
{
"name": "",
@@ -14,4 +27,4 @@
"homepage": ""
}
]
-} \ No newline at end of file
+}
diff --git a/plugins/ExampleTracker/Columns/ExampleConversionDimension.php b/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
index 3e24008449..ea780abbd3 100644
--- a/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
@@ -20,7 +20,7 @@ use Piwik\Tracker\GoalManager;
/**
* This example dimension counts achievement points for each user. A user gets one achievement point for each action
* plus five extra achievement points for each conversion. This would allow you to create a ranking showing the most
- * active/valueable users. It is just an example, you can log pretty much everything and even just store any custom
+ * active/valuable users. It is just an example, you can log pretty much everything and even just store any custom
* request url property. Please note that dimension instances are usually cached during one tracking request so they
* should be stateless (meaning an instance of this dimension will be reused if requested multiple times).
*
diff --git a/plugins/ExampleTracker/Columns/ExampleVisitDimension.php b/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
index d47d98eb59..f0d28b66da 100644
--- a/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
@@ -18,7 +18,7 @@ use Piwik\Tracker\Action;
/**
* This example dimension counts achievement points for each user. A user gets one achievement point for each action
* plus five extra achievement points for each conversion. This would allow you to create a ranking showing the most
- * active/valueable users. It is just an example, you can log pretty much everything and even just store any custom
+ * active/valuable users. It is just an example, you can log pretty much everything and even just store any custom
* request url property. Please note that dimension instances are usually cached during one tracking request so they
* should be stateless (meaning an instance of this dimension will be reused if requested multiple times).
*
diff --git a/plugins/Feedback/lang/cs.json b/plugins/Feedback/lang/cs.json
index bda47c8959..3cd43a1eb8 100644
--- a/plugins/Feedback/lang/cs.json
+++ b/plugins/Feedback/lang/cs.json
@@ -19,15 +19,11 @@
"ViewUserGuides": "Naučte se, jak konfigurovat Piwik a efektivně analyzovat data s našimi %1$suživatelskými příručkami%2$s",
"CommunityHelp": "Komunitní pomoc",
"ProfessionalHelp": "Profesionální pomoc",
- "PiwikProIntro": "Piwik Pro poskytuje konzultace s experty pro ty, kteří hostují Piwik na vlastní infrastruktuře.",
- "PiwikProOfferIntro": "Naše nabídka obsahuje",
- "PiwikProReviewPiwikSetup": "Kontrolu vašeho nastavení Piwik",
- "PiwikProOptimizationMaintenance": "Služby optimalizace a údržby Piwiku",
- "PiwikProPhoneEmailSupport": "Telefonická a e-mailová podpora",
- "PiwikProTraining": "Uživatelská, technická a vývojářská školení",
- "PiwikProPremiumFeatures": "Prémiové funkce",
- "PiwikProCustomDevelopment": "Služby vlastního vývoje",
- "PiwikProAnalystConsulting": "Služby analytického konzultanta",
+ "ProfessionalServicesReviewPiwikSetup": "Kontrola vaší instalace Piwiku",
+ "ProfessionalServicesPhoneEmailSupport": "Telefonická a e-mailová podpora",
+ "ProfessionalServicesTraining": "Školení uživatelů, techniků a vývoářů",
+ "ProfessionalServicesPremiumFeatures": "Prémiové funkce",
+ "ProfessionalServicesAnalystConsulting": "Služby konzultace analytika",
"ContactUs": "Kontaktujte nás",
"VisitTheForums": "Navštivte %1$s fóra%2$s a nechte si pomoci komunitou uživatelů aplikace Piwik"
}
diff --git a/plugins/Feedback/lang/de.json b/plugins/Feedback/lang/de.json
index 8d40755793..4e815199e5 100644
--- a/plugins/Feedback/lang/de.json
+++ b/plugins/Feedback/lang/de.json
@@ -19,15 +19,15 @@
"ViewUserGuides": "Lernen Sie mithilfe unseres %1$sBenutzerhandbuches%2$s, wie Sie Piwik konfigurieren können und wie Sie effektiv Ihre Daten analysieren.",
"CommunityHelp": "Hilfe aus der Community",
"ProfessionalHelp": "Profesionelle Hilfe",
- "PiwikProIntro": "Piwik PRO bietet professionellen Support und Beratung an für Kunden, welche Piwik auf deren eigenen Infrastruktur hosten.",
- "PiwikProOfferIntro": "Unser Angebot umfasst",
- "PiwikProReviewPiwikSetup": "Eine Überprüfung Ihrer Piwik-Installation",
- "PiwikProOptimizationMaintenance": "Piwik-Optimierung & -Wartung",
- "PiwikProPhoneEmailSupport": "Telefon und E-Mail-Support",
- "PiwikProTraining": "Benutzer-, Technik- und Entwickler-Schulungen",
- "PiwikProPremiumFeatures": "Premiumfeatures",
- "PiwikProCustomDevelopment": "Individuelle Programmierung",
- "PiwikProAnalystConsulting": "Analysenberatung",
+ "ProfessionalServicesIntro": "Unser weltweites Netzwerk von professionellen Beratern für Piwik unterstützt Kunden die Piwik auf ihrer eigenen Infrastruktur betreiben wollen.",
+ "ProfessionalServicesOfferIntro": "Von welchen Diensten können Sie profitieren?",
+ "ProfessionalServicesReviewPiwikSetup": "Eine Überprüfung Ihrer Piwik-Installation",
+ "ProfessionalServicesOptimizationMaintenance": "Piwik-Optimierung & -Wartung",
+ "ProfessionalServicesPhoneEmailSupport": "Telefon und E-Mail-Support",
+ "ProfessionalServicesTraining": "Benutzer-, Technik- und Entwickler-Schulungen",
+ "ProfessionalServicesPremiumFeatures": "Premium Funktionen",
+ "ProfessionalServicesCustomDevelopment": "Individuelle Programmierung",
+ "ProfessionalServicesAnalystConsulting": "Analysenberatung",
"ContactUs": "Kontaktieren Sie uns",
"VisitTheForums": "Besuchen Sie die %1$s Foren%2$s und erhalten Sie Hilfe von der Piwik Community"
}
diff --git a/plugins/Feedback/lang/el.json b/plugins/Feedback/lang/el.json
index d8a6176309..7156100142 100644
--- a/plugins/Feedback/lang/el.json
+++ b/plugins/Feedback/lang/el.json
@@ -19,15 +19,15 @@
"ViewUserGuides": "Μάθετε πως να παραμετροποιείτε το Piwik και να αναλύετε αποτελεσματικά τα δεδομένα σας με τους %1$sοδηγούς χρήση μας%2$s.",
"CommunityHelp": "Βοήθεια από την κοινότητα",
"ProfessionalHelp": "Βοήθεια από επαγγελματίες",
- "PiwikProIntro": "Το Piwik PRO παρέχει υποστήριξη από ειδικούς και συμβουλές σε πελάτες που τρέχουν το Piwik στη δική τους υποδομή.",
- "PiwikProOfferIntro": "Η προσφορά μας καλύπτει",
- "PiwikProReviewPiwikSetup": "Μια σύνοψη της εγκατάστασης του Piwik σας",
- "PiwikProOptimizationMaintenance": "Βελτιστοποίηση του Piwik και υπηρεσίες συντήρησης",
- "PiwikProPhoneEmailSupport": "Τηλεφωνική και με e-mail υποστήριξη",
- "PiwikProTraining": "Εκπαίδευση για χρήστες, τεχνικούς και προγραμματιστές",
- "PiwikProPremiumFeatures": "Χαρακτηριστικά έκδοσης επί πληρωμή",
- "PiwikProCustomDevelopment": "Προσαρμοσμένες υπηρεσίες ανάπτυξης",
- "PiwikProAnalystConsulting": "Υπηρεσίες συμβουλευτικής από αναλυτές",
+ "ProfessionalServicesIntro": "Το παγκόσμιο δίκτυό μας επαγγελματιών συμβούλων για υποστήριξη των πελατών του Piwik που φιλοξενούν το Piwik στη δική τους υποδομή.",
+ "ProfessionalServicesOfferIntro": "Από ποιές υπηρεσίες μπορείτε να κερδίσετε;",
+ "ProfessionalServicesReviewPiwikSetup": "Μια σύνοψη της εγκατάστασής σας του Piwik",
+ "ProfessionalServicesOptimizationMaintenance": "Βελτιστοποίηση του Piwik και υπηρεσίες συντήρησης",
+ "ProfessionalServicesPhoneEmailSupport": "Τηλεφωνική και μέσω e-mail υποστήριξη",
+ "ProfessionalServicesTraining": "Εκπαίδευση σε χρηστικό, τεχνικό και προγραμματιστικό επίπεδο",
+ "ProfessionalServicesPremiumFeatures": "Πρόσθετα χαρακτηριστικά",
+ "ProfessionalServicesCustomDevelopment": "Προσαρμοσμένες υπηρεσίες ανάπτυξης",
+ "ProfessionalServicesAnalystConsulting": "Υπηρεσίες συμβουλευτικής αναλυτικών",
"ContactUs": "Επικοινωνήστε μαζί μας",
"VisitTheForums": "Δείτε τα %1$sΦόρουμ%2$s και λάβετε βοήθεια από την κοινότητα χρηστών του Piwik"
}
diff --git a/plugins/Feedback/lang/en.json b/plugins/Feedback/lang/en.json
index 4d55bcfe7a..d16f70a86b 100644
--- a/plugins/Feedback/lang/en.json
+++ b/plugins/Feedback/lang/en.json
@@ -19,15 +19,15 @@
"ViewUserGuides": "Learn how to configure Piwik and how to effectively analyze your data with our %1$suser guides%2$s",
"CommunityHelp": "Community Help",
"ProfessionalHelp": "Professional Help",
- "PiwikProIntro": "Piwik PRO provides expert support and consulting to clients who host Piwik on their own infrastructure.",
- "PiwikProOfferIntro": "Our offer includes",
- "PiwikProReviewPiwikSetup": "A review of your Piwik setup",
- "PiwikProOptimizationMaintenance": "Piwik optimization & maintenance services",
- "PiwikProPhoneEmailSupport": "Phone and Email support",
- "PiwikProTraining": "User, Technical and Developer training",
- "PiwikProPremiumFeatures": "Premium features",
- "PiwikProCustomDevelopment": "Custom Development services",
- "PiwikProAnalystConsulting": "Analyst consulting services",
+ "ProfessionalServicesIntro": "Our worldwide network of professional consultants for Piwik support clients who host Piwik on their own infrastructure.",
+ "ProfessionalServicesOfferIntro": "What services can you benefit from?",
+ "ProfessionalServicesReviewPiwikSetup": "A review of your Piwik setup",
+ "ProfessionalServicesOptimizationMaintenance": "Piwik optimization & maintenance services",
+ "ProfessionalServicesPhoneEmailSupport": "Phone and Email support",
+ "ProfessionalServicesTraining": "User, Technical and Developer training",
+ "ProfessionalServicesPremiumFeatures": "Premium features",
+ "ProfessionalServicesCustomDevelopment": "Custom Development services",
+ "ProfessionalServicesAnalystConsulting": "Analyst consulting services",
"ContactUs": "Contact us",
"VisitTheForums": "Visit the %1$s Forums%2$s and get help from the community of Piwik users"
}
diff --git a/plugins/Feedback/lang/es.json b/plugins/Feedback/lang/es.json
index 1dc66dfd09..043c642780 100644
--- a/plugins/Feedback/lang/es.json
+++ b/plugins/Feedback/lang/es.json
@@ -19,15 +19,14 @@
"ViewUserGuides": "Aprende a configurar Piwik y analizar sus datos de modo eficaz con nuestras %1$sguías de usuario%2$s",
"CommunityHelp": "Ayuda comunitaria",
"ProfessionalHelp": "Ayuda profesional",
- "PiwikProIntro": "Piwik PRO proporciona soporte de calidad y consultas a clientes que alojan Piwik en su propia infraestructura.",
- "PiwikProOfferIntro": "Nuestra oferta incluye",
- "PiwikProReviewPiwikSetup": "Una reseña de tu instalación de Piwik",
- "PiwikProOptimizationMaintenance": "Servicios de optimización y mantenimiento de Piwik",
- "PiwikProPhoneEmailSupport": "Soporte por teléfono y correo electrónico",
- "PiwikProTraining": "Entrenamiento del usuario, técnico y desarrollador",
- "PiwikProPremiumFeatures": "Funcionalidades premium",
- "PiwikProCustomDevelopment": "Servicios de desarrollo personalizado",
- "PiwikProAnalystConsulting": "Servicios de consultoría de análisis",
+ "ProfessionalServicesIntro": "Nuestra red mundial de consultores profesionales que brindan asistencia a todos los clientes que hospedan Piwik en su propia infraestructura.",
+ "ProfessionalServicesOfferIntro": "¿Qué servicios puede beneficiarse?",
+ "ProfessionalServicesReviewPiwikSetup": "Reseña de su instalación Piwik",
+ "ProfessionalServicesPhoneEmailSupport": "Asistencia por teléfono y correo electrónico",
+ "ProfessionalServicesTraining": "Usuario, técnico y entrenamiento del desarrollador",
+ "ProfessionalServicesPremiumFeatures": "Funciones premium",
+ "ProfessionalServicesCustomDevelopment": "Servicios de desarrollo personalizado",
+ "ProfessionalServicesAnalystConsulting": "Servicios de consultoría de análisis",
"ContactUs": "Contáctanos",
"VisitTheForums": "Visita el %1$sForo%2$s y obtenga ayuda de la comuniad de usuarios Piwik"
}
diff --git a/plugins/Feedback/lang/fi.json b/plugins/Feedback/lang/fi.json
index f665cbf2da..a75edab6ab 100644
--- a/plugins/Feedback/lang/fi.json
+++ b/plugins/Feedback/lang/fi.json
@@ -13,9 +13,6 @@
"TopLinkTooltip": "Kerro meille mitä ajattelet, tai osta tukipalveluita (englanniksi).",
"CommunityHelp": "Yhteisön apu",
"ProfessionalHelp": "Ammattilaisapu",
- "PiwikProReviewPiwikSetup": "Piwik-asennuksesi arviointi",
- "PiwikProPhoneEmailSupport": "Puhelin- ja sähköpostituki",
- "PiwikProPremiumFeatures": "Premium-ominaisuudet",
"ContactUs": "Ota yhteyttä"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/fr.json b/plugins/Feedback/lang/fr.json
index 0df0bf5e6b..a24c577888 100644
--- a/plugins/Feedback/lang/fr.json
+++ b/plugins/Feedback/lang/fr.json
@@ -19,15 +19,16 @@
"ViewUserGuides": "Apprenez comment configurer Piwik et comment analyser de manière efficaces vos données avec notre %1$sguide utilisateur%2$s",
"CommunityHelp": "Aide de la communauté",
"ProfessionalHelp": "Aide professionnelle",
- "PiwikProIntro": "Piwik PRO fournit un service expert de support et de consultation aux clients qui hébergent Piwik sur leurs propres infrastructures.",
- "PiwikProOfferIntro": "Notre offre inclut",
- "PiwikProReviewPiwikSetup": "Une revue de votre installation Piwik",
- "PiwikProOptimizationMaintenance": "Services d'optimisation et de maintenance",
- "PiwikProPhoneEmailSupport": "Support courriel et téléphonique",
- "PiwikProTraining": "Formation d'utilisation, technique et en développement",
- "PiwikProPremiumFeatures": "Fonctionnalités premium",
- "PiwikProCustomDevelopment": "Services de développement personnalisés",
- "PiwikProAnalystConsulting": "Services de consultation en analyse",
- "ContactUs": "Nous contacter"
+ "ProfessionalServicesIntro": "Notre réseau mondial de consultants professionnels Piwik supporte nos clients qui hébergent Piwik sur leurs propres infrastructures.",
+ "ProfessionalServicesOfferIntro": "De quel services pouvez vous bénéficier?",
+ "ProfessionalServicesReviewPiwikSetup": "Une revue de votre installation Piwik",
+ "ProfessionalServicesOptimizationMaintenance": "Services d'optimisation et de maintenance pour Piwik",
+ "ProfessionalServicesPhoneEmailSupport": "Support courriel et téléphonique",
+ "ProfessionalServicesTraining": "Formation d'utilisation, technique et en développement",
+ "ProfessionalServicesPremiumFeatures": "Fonctionnalités premium",
+ "ProfessionalServicesCustomDevelopment": "Services de développement personnalisés",
+ "ProfessionalServicesAnalystConsulting": "Services de consultation en analyse",
+ "ContactUs": "Nous contacter",
+ "VisitTheForums": "Visitez les %1$sForums%2$s et obtenez de l'aide de la communauté d'utilisateurs Piwik."
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/it.json b/plugins/Feedback/lang/it.json
index 19028736b1..744d638340 100644
--- a/plugins/Feedback/lang/it.json
+++ b/plugins/Feedback/lang/it.json
@@ -19,16 +19,16 @@
"ViewUserGuides": "Impara a configurare Piwik e ad analizzare efficacemente i tuoi dati con le nostre %1$sguide utente%2$s",
"CommunityHelp": "Aiuto dalla comunità",
"ProfessionalHelp": "Aiuto professionale",
- "PiwikProIntro": "Piwik PRO fornisce il supporto di esperti e consulenza ai clienti che installano Piwik nella propria infrastruttura",
- "PiwikProOfferIntro": "La nostra offerta include",
- "PiwikProReviewPiwikSetup": "Analisi della tua installazione Piwik",
- "PiwikProOptimizationMaintenance": "Servizi di manutenzione e ottimizzazione di Piwik",
- "PiwikProPhoneEmailSupport": "Supporto telefonico ed email",
- "PiwikProTraining": "Corsi per utenti, tecnici e sviluppatori",
- "PiwikProPremiumFeatures": "Funzionalità esclusive",
- "PiwikProCustomDevelopment": "Sviluppo personalizzato su commissione",
- "PiwikProAnalystConsulting": "Consulenza di analisti",
+ "ProfessionalServicesIntro": "La nostra rete mondiale di consulenti professionali per l'assistenza a Piwik ai clienti che ospitano Piwik in infrastrutture proprie.",
+ "ProfessionalServicesOfferIntro": "Di quali servizi potete beneficiare?",
+ "ProfessionalServicesReviewPiwikSetup": "Un'analisi della configurazione di Piwik",
+ "ProfessionalServicesOptimizationMaintenance": "Servizi per l'ottimizzazione e la manutenzione di Piwik",
+ "ProfessionalServicesPhoneEmailSupport": "Assistenza Telefonica ed Email",
+ "ProfessionalServicesTraining": "Formazione per Utenti, Tecnici e Sviluppatori",
+ "ProfessionalServicesPremiumFeatures": "Funzionalità Premium",
+ "ProfessionalServicesCustomDevelopment": "Servizi di sviluppo per il cliente",
+ "ProfessionalServicesAnalystConsulting": "Servizi di Consulenza per analisti",
"ContactUs": "Contattaci",
- "VisitTheForums": "Visita i %1$s Forum%2$s e ottieni aiuto dalla comunità degli utenti Piwik"
+ "VisitTheForums": "Visita il %1$s Forum%2$s e ottieni aiuto dalla comunità degli utenti Piwik"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/ja.json b/plugins/Feedback/lang/ja.json
index f43ceade9a..e4362e0eac 100644
--- a/plugins/Feedback/lang/ja.json
+++ b/plugins/Feedback/lang/ja.json
@@ -19,15 +19,6 @@
"ViewUserGuides": "Piwik の設定方法と、効果的なデータ分析方法は、%1$s user guides %2$s をご確認ください。",
"CommunityHelp": "コミュニティヘルプ",
"ProfessionalHelp": "プロフェッショナルヘルプ",
- "PiwikProIntro": "Piwik PRO は、専門家のサポートと Piwik 独自のインフラストラクチャ上でホストするクライアントへのコンサルティングを提供します。",
- "PiwikProOfferIntro": "当社オファーには以下が含まれます",
- "PiwikProReviewPiwikSetup": "Piwik セットアップのレビュー",
- "PiwikProOptimizationMaintenance": "Piwikiの最適化と保守のサービス",
- "PiwikProPhoneEmailSupport": "電話とEメールのサポート",
- "PiwikProTraining": "ユーザー及び技術開発者のトレーニング",
- "PiwikProPremiumFeatures": "プレミア機能",
- "PiwikProCustomDevelopment": "カスタム開発サービス",
- "PiwikProAnalystConsulting": "アナリストのコンサルティングサービス",
"ContactUs": "お問い合わせ",
"VisitTheForums": "%1$s フォーラム %2$s にアクセスし、Piwik ユーザーのコミュニティから助けを得る"
}
diff --git a/plugins/Feedback/lang/ka.json b/plugins/Feedback/lang/ka.json
index b4a46d99ed..478c9a605b 100644
--- a/plugins/Feedback/lang/ka.json
+++ b/plugins/Feedback/lang/ka.json
@@ -2,10 +2,10 @@
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "არ გაქვთ შეცდომის რეპორტი ან მახასიათებლების მოთხოვნა?",
"IWantTo": "მე მინდა:",
- "LearnWaysToParticipate": "გაეცანით ინფორმაციას %s მონაწილეობის%s მიღების ყველა გზის შესახებ",
+ "LearnWaysToParticipate": "გაეცანით ინფორმაციას %1$s მონაწილეობის%2$s მიღების ყველა გზის შესახებ",
"ManuallySendEmailTo": "გთხოვთ, ხელით გამოაგზავნეთ წერილი მისამართზე",
"SendFeedback": "გამოხმაურების გაგზავნა",
"ThankYou": "გმადლობთ, რომ გვეხმარებით Piwik გახდეს უკეთესი!",
- "VisitTheForums": "იხილეთ %s ფორუმები%s"
+ "VisitTheForums": "იხილეთ %1$s ფორუმები%2$s"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/ko.json b/plugins/Feedback/lang/ko.json
index d7e0c317ed..f77068beac 100644
--- a/plugins/Feedback/lang/ko.json
+++ b/plugins/Feedback/lang/ko.json
@@ -19,15 +19,6 @@
"ViewUserGuides": "%1$s사용자 가이드%2$s에서 효율적으로 당신의 데이터를 분석하는 방법과 Piwik를 구성하는 법에 대해서 알 수 있습니다.",
"CommunityHelp": "커뮤니티에서의 도움",
"ProfessionalHelp": "전문가의 도움",
- "PiwikProIntro": "Piwik PRO는 전문가들이 구축한 인프라에서 그들의 지원과 컨설팅을 받을 수 있는 서비스입니다.",
- "PiwikProOfferIntro": "제공되는 것들",
- "PiwikProReviewPiwikSetup": "Piwik 셋업",
- "PiwikProOptimizationMaintenance": "Piwik 최적화 및 관리 보수",
- "PiwikProPhoneEmailSupport": "전화 및 이메일",
- "PiwikProTraining": "사용자, 기술자 및 개발자",
- "PiwikProPremiumFeatures": "프리미엄",
- "PiwikProCustomDevelopment": "맞춤 개발",
- "PiwikProAnalystConsulting": "전문가 컨설팅",
"ContactUs": "연락주세요"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/nb.json b/plugins/Feedback/lang/nb.json
index d9d4847674..f268816761 100644
--- a/plugins/Feedback/lang/nb.json
+++ b/plugins/Feedback/lang/nb.json
@@ -10,11 +10,6 @@
"ThankYou": "Takk for at du hjelper oss å lage Piwik bedre!",
"TopLinkTooltip": "Fortell oss hva du synes eller be om profesjonell støtte.",
"ProfessionalHelp": "Profesjonell hjelp",
- "PiwikProOfferIntro": "Vårt tilbud inkluderer",
- "PiwikProOptimizationMaintenance": "Piwik optimalisering- og vedlikeholdstjenester",
- "PiwikProPhoneEmailSupport": "Telefon og e-post-støtte",
- "PiwikProTraining": "Bruker, teknisk- og utviklertrening",
- "PiwikProPremiumFeatures": "Premium-funksjoner",
"ContactUs": "Kontakt oss"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/nl.json b/plugins/Feedback/lang/nl.json
index 6ce9e37d18..1c675ed085 100644
--- a/plugins/Feedback/lang/nl.json
+++ b/plugins/Feedback/lang/nl.json
@@ -19,15 +19,6 @@
"ViewUserGuides": "Leer hoe je Piwik moet configureren en hoe je data te analyseren met onze %1$sgebruikers handleidingen%2$s",
"CommunityHelp": "Hulp van de community",
"ProfessionalHelp": "Professionele Hulp",
- "PiwikProIntro": "Piwik Pro biedt je expert ondersteuning en consultants aan klanten die Piwik hosten op hun eigen infrastructuur.",
- "PiwikProOfferIntro": "Ons aanbod omvat",
- "PiwikProReviewPiwikSetup": "Een beoordeling van je Piwik omgeving",
- "PiwikProOptimizationMaintenance": "Piwik optimilaisatie & onderhoud diensten",
- "PiwikProPhoneEmailSupport": "Telefoon en e-mail ondersteuning",
- "PiwikProTraining": "Gebruikers- Technische en Ontwikkelaars training",
- "PiwikProPremiumFeatures": "Premium functies",
- "PiwikProCustomDevelopment": "Eigen Ontwikkel diensten",
- "PiwikProAnalystConsulting": "Analyst consultatie diensten",
"ContactUs": "Contacteer ons"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/pt-br.json b/plugins/Feedback/lang/pt-br.json
index a2d46aee7b..5200835190 100644
--- a/plugins/Feedback/lang/pt-br.json
+++ b/plugins/Feedback/lang/pt-br.json
@@ -19,15 +19,6 @@
"ViewUserGuides": "Saiba como configurar o Piwik e como efetivamente analisar seus dados com o nosso %1$sguias do usuário%2$s",
"CommunityHelp": "Ajuda da Comunidade",
"ProfessionalHelp": "Suporte Profissional",
- "PiwikProIntro": "Piwik PRO fornece suporte especializado e consultoria para clientes que hospedam Piwik em suas próprias infra-estruturas.",
- "PiwikProOfferIntro": "Nossa oferta inclui",
- "PiwikProReviewPiwikSetup": "Um exame da sua configuração Piwik",
- "PiwikProOptimizationMaintenance": "Serviços de otimização & manutenção Piwik",
- "PiwikProPhoneEmailSupport": "Suporte por telefone e e-mail",
- "PiwikProTraining": "Treinamento de Desenvolvedores, Técnicos e Usuários",
- "PiwikProPremiumFeatures": "Características Premium",
- "PiwikProCustomDevelopment": "Serviços de Desenvolvimento Personalizados",
- "PiwikProAnalystConsulting": "Serviços de Consulturia Analítica",
"ContactUs": "Contato",
"VisitTheForums": "Visite o %1$s Fóruns%2$s e obtenha ajuda da comunidade de usuários Piwik"
}
diff --git a/plugins/Feedback/lang/ru.json b/plugins/Feedback/lang/ru.json
index 941b17f2d9..f77cb215ee 100644
--- a/plugins/Feedback/lang/ru.json
+++ b/plugins/Feedback/lang/ru.json
@@ -18,15 +18,6 @@
"ViewUserGuides": "Узнайте, как настроить Piwik и эффективно анализировать Ваши данные, используя %1$s руководства пользователя%2$s",
"CommunityHelp": "Помощь сообщества",
"ProfessionalHelp": "Помощь профессионала",
- "PiwikProIntro": "Piwik PRO предоставляет экспертную поддержку и консультирование клиентам, которые размещают Piwik в своей собственной инфраструктуре.",
- "PiwikProOfferIntro": "Наше предложение включает",
- "PiwikProReviewPiwikSetup": "Просмотр Вашей установки Piwik",
- "PiwikProOptimizationMaintenance": "Услуги оптимизации и обслуживания Piwik",
- "PiwikProPhoneEmailSupport": "Поддержку по телефону и электронной почте",
- "PiwikProTraining": "Обучение пользователей, технических специалистов и разработчиков",
- "PiwikProPremiumFeatures": "Премиальные возможности",
- "PiwikProCustomDevelopment": "Услуги разработки",
- "PiwikProAnalystConsulting": "Услуги аналитика-консультанта",
"ContactUs": "Свяжитесь с нами",
"VisitTheForums": "Посетите %1$s Форумы%2$s и получите помощь от сообщества пользователей Piwik"
}
diff --git a/plugins/Feedback/lang/sq.json b/plugins/Feedback/lang/sq.json
index e8ff0ace6d..bac0ae015e 100644
--- a/plugins/Feedback/lang/sq.json
+++ b/plugins/Feedback/lang/sq.json
@@ -19,15 +19,7 @@
"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"
+ "ContactUs": "Lidhuni me ne",
+ "VisitTheForums": "Vizitoni %1$s Forumet%2$s dhe merrni ndihmë prej bashkësisë së përdoruesve të Piwik-ut"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/sr.json b/plugins/Feedback/lang/sr.json
index 274d669e6c..95c6c01682 100644
--- a/plugins/Feedback/lang/sr.json
+++ b/plugins/Feedback/lang/sr.json
@@ -19,15 +19,6 @@
"ViewUserGuides": "Naučite kako da podesite Piwik i kako da efikasno analizirate vaše podatke prateći %1$skorisničko uputstvo%2$s",
"CommunityHelp": "Pomoć zajednice",
"ProfessionalHelp": "Profesionalna pomoć",
- "PiwikProIntro": "Piwik PRO omogućuje podršku i konsalting eksperata klijentima koji hostuju Piwik na sopstvenim platformama.",
- "PiwikProOfferIntro": "Naša ponuda uključuje",
- "PiwikProReviewPiwikSetup": "Proveru vaše Piwik instalacije",
- "PiwikProOptimizationMaintenance": "Usluge optimizacije i održavanja Piwik-a",
- "PiwikProPhoneEmailSupport": "Telefonsku i podršku putem mejla",
- "PiwikProTraining": "Korisnički, tehnički i razvojni trening",
- "PiwikProPremiumFeatures": "Premium sadržaje",
- "PiwikProCustomDevelopment": "Razvoj usluga po vašoj želji",
- "PiwikProAnalystConsulting": "Usluge analitičkog konsaltinga",
"ContactUs": "Kontaktirajte nas"
}
} \ No newline at end of file
diff --git a/plugins/Feedback/lang/sv.json b/plugins/Feedback/lang/sv.json
index 80fab4cfc4..8fe41ed208 100644
--- a/plugins/Feedback/lang/sv.json
+++ b/plugins/Feedback/lang/sv.json
@@ -19,14 +19,6 @@
"ViewUserGuides": "Lär dig att konfigurera Piwik och hur man på ett effektivt sätt analyserar data med våra %1$sanvändarguider%2$s",
"CommunityHelp": "Community Hjälp",
"ProfessionalHelp": "Professionell hjälp",
- "PiwikProOfferIntro": "Vårt erbjudande inkluderar",
- "PiwikProReviewPiwikSetup": "En recension av din Piwik-installation",
- "PiwikProOptimizationMaintenance": "Piwik optimering & underhållstjänster",
- "PiwikProPhoneEmailSupport": "Telefon och e-postsupport",
- "PiwikProTraining": "Användar-, teknisk och utvecklarutbildning",
- "PiwikProPremiumFeatures": "Premium-funktioner",
- "PiwikProCustomDevelopment": "Anpassad utvecklingstjänster",
- "PiwikProAnalystConsulting": "Konsulttjänster för analyser",
"ContactUs": "Kontakta oss",
"VisitTheForums": "Besök %1$s forumet%2$s och få hjälp av Piwik-användare"
}
diff --git a/plugins/Feedback/templates/index.twig b/plugins/Feedback/templates/index.twig
index 04d3811e7d..f3c36bc06e 100644
--- a/plugins/Feedback/templates/index.twig
+++ b/plugins/Feedback/templates/index.twig
@@ -35,18 +35,18 @@
</div>
<div piwik-content-block content-title="{{ 'Feedback_ProfessionalHelp'|translate|e('html_attr') }}">
- <p>{{ 'Feedback_PiwikProIntro'|translate }}</p>
+ <p>{{ 'Feedback_ProfessionalServicesIntro'|translate }}</p>
- <p>{{ 'Feedback_PiwikProOfferIntro'|translate }}:</p>
- <p> &bull; {{ 'Feedback_PiwikProReviewPiwikSetup'|translate }}</p>
- <p> &bull; {{ 'Feedback_PiwikProOptimizationMaintenance'|translate }}</p>
- <p> &bull; {{ 'Feedback_PiwikProPhoneEmailSupport'|translate }}</p>
- <p> &bull; {{ 'Feedback_PiwikProTraining'|translate }}</p>
- <p> &bull; {{ 'Feedback_PiwikProPremiumFeatures'|translate }}</p>
- <p> &bull; {{ 'Feedback_PiwikProCustomDevelopment'|translate }}</p>
- <p> &bull; {{ 'Feedback_PiwikProAnalystConsulting'|translate }}</p>
+ <p>{{ 'Feedback_ProfessionalServicesOfferIntro'|translate }}</p>
+ <p> &bull; {{ 'Feedback_ProfessionalServicesReviewPiwikSetup'|translate }}</p>
+ <p> &bull; {{ 'Feedback_ProfessionalServicesOptimizationMaintenance'|translate }}</p>
+ <p> &bull; {{ 'Feedback_ProfessionalServicesPhoneEmailSupport'|translate }}</p>
+ <p> &bull; {{ 'Feedback_ProfessionalServicesTraining'|translate }}</p>
+ <p> &bull; {{ 'Feedback_ProfessionalServicesPremiumFeatures'|translate }}</p>
+ <p> &bull; {{ 'Feedback_ProfessionalServicesCustomDevelopment'|translate }}</p>
+ <p> &bull; {{ 'Feedback_ProfessionalServicesAnalystConsulting'|translate }}</p>
- <form target="_blank" action="https://piwik.pro/contact#contact-form">
+ <form target="_blank" action="https://piwik.org/support/">
<input type="hidden" name="pk_campaign" value="App_Help">
<input type="hidden" name="pk_source" value="Piwik_App">
<input type="hidden" name="pk_medium" value="App_ContactUs_button">
diff --git a/plugins/Goals/API.php b/plugins/Goals/API.php
index e1db0d187c..dedc555fc7 100644
--- a/plugins/Goals/API.php
+++ b/plugins/Goals/API.php
@@ -54,6 +54,24 @@ class API extends \Piwik\Plugin\API
const AVG_PRICE_VIEWED = 'avg_price_viewed';
/**
+ * Return a single goal.
+ *
+ * @param int $idSite
+ * @param int $idGoal
+ * @return array An array of goal attributes.
+ */
+ public function getGoal($idSite, $idGoal)
+ {
+ Piwik::checkUserHasViewAccess($idSite);
+
+ $goal = $this->getModel()->getActiveGoal($idSite, $idGoal);
+
+ if (!empty($goal)) {
+ return $this->formatGoal($goal);
+ }
+ }
+
+ /**
* Returns all Goals for a given website, or list of websites
*
* @param string|array $idSite Array or Comma separated list of website IDs to request the goals for
@@ -76,12 +94,7 @@ class API extends \Piwik\Plugin\API
$cleanedGoals = array();
foreach ($goals as &$goal) {
- if ($goal['match_attribute'] == 'manually') {
- unset($goal['pattern']);
- unset($goal['pattern_type']);
- unset($goal['case_sensitive']);
- }
- $cleanedGoals[$goal['idgoal']] = $goal;
+ $cleanedGoals[$goal['idgoal']] = $this->formatGoal($goal);
}
$cache->save($cacheId, $cleanedGoals);
@@ -90,6 +103,17 @@ class API extends \Piwik\Plugin\API
return $cache->fetch($cacheId);
}
+ private function formatGoal($goal)
+ {
+ if ($goal['match_attribute'] == 'manually') {
+ unset($goal['pattern']);
+ unset($goal['pattern_type']);
+ unset($goal['case_sensitive']);
+ }
+
+ return $goal;
+ }
+
/**
* Creates a Goal for a given website.
*
diff --git a/plugins/Goals/Controller.php b/plugins/Goals/Controller.php
index 3f649b9399..9009565158 100644
--- a/plugins/Goals/Controller.php
+++ b/plugins/Goals/Controller.php
@@ -290,7 +290,7 @@ class Controller extends \Piwik\Plugin\Controller
$dataRow = $datatable->getFirstRow();
$nbConversions = $dataRow->getColumn('nb_conversions');
$nbVisitsConverted = $dataRow->getColumn('nb_visits_converted');
- // Backward compatibilty before 1.3, this value was not processed
+ // Backward compatibility before 1.3, this value was not processed
if (empty($nbVisitsConverted)) {
$nbVisitsConverted = $nbConversions;
}
diff --git a/plugins/Goals/Model.php b/plugins/Goals/Model.php
index 2b35f7947d..66f0d91fea 100644
--- a/plugins/Goals/Model.php
+++ b/plugins/Goals/Model.php
@@ -64,6 +64,17 @@ class Model
Db::deleteAllRows($table, "WHERE idgoal = ? AND idsite = ?", "idvisit", 100000, array($idGoal, $idSite));
}
+ public function getActiveGoal($idSite, $idGoal)
+ {
+ $idSite = (int) $idSite;
+ $idGoal = (int) $idGoal;
+ $goals = Db::fetchRow("SELECT * FROM " . $this->table . "
+ WHERE idsite = $idSite AND idgoal = $idGoal
+ AND deleted = 0 LIMIT 1");
+
+ return $goals;
+ }
+
public function getActiveGoals($idSite)
{
$idSite = array_map('intval', $idSite);
diff --git a/plugins/Goals/lang/cs.json b/plugins/Goals/lang/cs.json
index e26bd7f11a..467dd8f4ef 100644
--- a/plugins/Goals/lang/cs.json
+++ b/plugins/Goals/lang/cs.json
@@ -77,6 +77,7 @@
"NewGoalIntro": "Sledování konverzního poměru cílů je jeden z nejefektivnějších způsobů měření a zlepšování podnikatelských zájmů.",
"NewVisitorsConversionRateIs": "Poměr konverze nové příchozích uživatelů je %s",
"NoGoalsNeedAccess": "Pouze administrátor nebo uživatel s právy super-uživatele může spravovat cíle pro daný web. Požádejte vašeho Piwik administrátora, aby cíl pro váš web vytvořil.<br>Sledování cílů je skvělý způsob, jak sledovat a maximalizovat výkonnost vašeho webu!",
+ "NoConversionsNoReportsMessage": "Reporty nejsou zobrazeny, protože nejsou dostupná převodní data pro vybrané cíle a období.",
"NeedAccess": "Pouze administrátor nebo uživatel s právy super-uživatele může spravovat cíle pro daný web.",
"Optional": "(volitelné)",
"OverallConversionRate": "%s celková frekvence konverzí (návštěv se splněným cílem)",
diff --git a/plugins/Goals/lang/da.json b/plugins/Goals/lang/da.json
index 55ae158edf..f5dde7af7b 100644
--- a/plugins/Goals/lang/da.json
+++ b/plugins/Goals/lang/da.json
@@ -11,6 +11,10 @@
"BestReferrers": "Bedste konverteringshjemmeside henvisning er:",
"CaseSensitive": "Forskel på små og store bogstaver",
"CancelAndReturnToGoals": "Annuller og %1$sog vend tilbage til listen over mål%2$s",
+ "CategoryTextGeneral_Visitors": "Bruger lokation",
+ "CategoryTextReferrers_Referrers": "Henvisninger",
+ "CategoryTextVisitsSummary_VisitsSummary": "Bruger attribute",
+ "CategoryTextGeneral_Visit": "engagement",
"ChooseGoal": "Vælg mål",
"ClickOutlink": "Klik på et link til en ekstern hjemmeside",
"SendEvent": "Send en hændelse",
@@ -72,6 +76,9 @@
"MatchesExpression": "matcher udtrykket %s",
"NewGoalIntro": "Sporing af målkonvertering er et af de mest effektive måder at måle og forbedre dine forretningsmæssige målsætninger.",
"NewVisitorsConversionRateIs": "Nye besøgendes konverteringsrate er %s",
+ "NoGoalsNeedAccess": "Kun en administrator eller en bruger med Super User adgang kan behandle mål for et givet website. Bed din Piwik administrator om at opsætte mål for dit website. <br>Sporing af mål er en god måde at forstå og maksimere dit websites ydeevne!",
+ "NoConversionsNoReportsMessage": "Rapporter bliver ikke vist fordi der ikke er nogen salgsdata for det valgte mål og periode.",
+ "NeedAccess": "Kun en administrator eller en bruger med Super User adgang kan behandle mål for et givet website.",
"Optional": "(valgfri)",
"OverallConversionRate": "%s samlet konverteringsrate (besøg med et færdigt mål)",
"OverallRevenue": "%s samlede indtægter",
@@ -88,6 +95,8 @@
"UpdateGoal": "Opdater mål",
"URL": "Netadresse",
"ViewAndEditGoals": "Vis og rediger mål",
+ "GoalsBy": "Mål for %s",
+ "GoalsAdjective": "Mål %s",
"VisitPageTitle": "Besøger en given sidetitel",
"VisitsUntilConv": "Besøg til konvertering",
"VisitUrl": "Besøger en bestemt hjemmeside (side eller en gruppe af sider)",
diff --git a/plugins/Goals/lang/el.json b/plugins/Goals/lang/el.json
index b2cce6c204..c57bb5aaa2 100644
--- a/plugins/Goals/lang/el.json
+++ b/plugins/Goals/lang/el.json
@@ -77,6 +77,7 @@
"NewGoalIntro": "Η παρακολούθηση για τη Μετατροπή Στόχων είναι ένας από τους αποτελεσματικότερους τρόπους για να μετρήσετε και να βελτιώσετε τους στόχους της επιχείρησής σας.",
"NewVisitorsConversionRateIs": "Ο βαθμός μετατροπής νέων επισκεπτών είναι %s",
"NoGoalsNeedAccess": "Μόνος ένας διαχειριστής ή χρήστης με δικαίωμα Υπερ Χρήστη μπορεί να διαχειριστεί τους Στόχους για ένα συγκεκριμένο ιστοτόπο. Παρακαλούμε ζητήστε από τον διαχειριστή του Piwik σας να ορίσει ένα Στόχο για τον ιστοτόπο σας.<br>Η Παρακολούθηση Στόχων είναι ένας πολύ καλός τρόπος για να σας βοηθήσει να κατανοήσετε και να μεγιστοποιήσετε την απόδοση του ιστοτόπου σας!",
+ "NoConversionsNoReportsMessage": "Οι αναφορές δεν εμφανίζεται επειδή δεν υπάρχουν δεδομένα για μετατροπή για τον επιλεγμένο στόχο και περίοδο.",
"NeedAccess": "Μόνος ένας διαχειριστής ή χρήστης με δικαίωμα Υπερ Χρήστη μπορεί να διαχειριστεί τους Στόχους για ένα συγκεκριμένο ιστοτόπο.",
"Optional": "(προαιρετικό)",
"OverallConversionRate": "%s καθολικός βαθμός προσόδου (επισκέψεις με έναν πλήρη στόχο)",
diff --git a/plugins/Goals/lang/fr.json b/plugins/Goals/lang/fr.json
index 3eb87a792b..32ae0f8271 100644
--- a/plugins/Goals/lang/fr.json
+++ b/plugins/Goals/lang/fr.json
@@ -77,6 +77,7 @@
"NewGoalIntro": "Le suivi de la conversion des objectifs et une des manières les plus efficaces de mesurer et améliorer vos objectifs d'affaires.",
"NewVisitorsConversionRateIs": "Le taux de conversion des nouveaux visiteurs est %s",
"NoGoalsNeedAccess": "Uniquement un Administrateur ou un utilisateur avec un accès Super Utilisateur peut gérer les Objectifs d'un site web donné. Veuillez demander à votre administrateur Piwik de mettre en place un Objectif pour votre site web. <br \/>Le suivi d'objectifs est une bonne manière de mieux comprendre et de maximiser les performances de votre site web!",
+ "NoConversionsNoReportsMessage": "Aucun rapport n'est affiché car il n'y a pas de données de conversion pour l'objectif et la période sélectionnée.",
"NeedAccess": "Uniquement un administrateur ou un utilisateur avec le rôle super utilisateur peut gérer les objectifs pour un site web.",
"Optional": "(optionnel)",
"OverallConversionRate": "%s taux de conversion global (visites avec un objectif rempli)",
diff --git a/plugins/Goals/lang/is.json b/plugins/Goals/lang/is.json
index 8be268026b..e14b3828fc 100644
--- a/plugins/Goals/lang/is.json
+++ b/plugins/Goals/lang/is.json
@@ -2,7 +2,7 @@
"Goals": {
"AddGoal": "Bæta Markmiði við",
"AddNewGoal": "Bæta nýju markmiði við",
- "AddNewGoalOrEditExistingGoal": "%sAdd a new Goal%s eða %sEdit%s núverandi Markmiðum",
+ "AddNewGoalOrEditExistingGoal": "%1$sAdd a new Goal%2$s eða %3$sEdit%4$s núverandi Markmiðum",
"CaseSensitive": "Skiptir máli hvort það eru hástafir eða lágstafir",
"ClickOutlink": "Smella á slóð fyrir utan vefinn",
"ColumnConversions": "Umbreytingar",
diff --git a/plugins/Goals/lang/it.json b/plugins/Goals/lang/it.json
index 377c1d1949..8f9c136be6 100644
--- a/plugins/Goals/lang/it.json
+++ b/plugins/Goals/lang/it.json
@@ -3,7 +3,7 @@
"AbandonedCart": "Ordini abbandonati",
"AddGoal": "Aggiungi un Goal",
"AddNewGoal": "Aggiungi un nuovo Goal",
- "AddNewGoalOrEditExistingGoal": "%1$sAggiungi un nuovo Goal%2$s o %3$sModificane%4$s uno esistente",
+ "AddNewGoalOrEditExistingGoal": "%1$sAggiungi un nuovo Goal%2$s o %3$sModifica%4$s i Goal esistenti",
"AllowGoalConvertedMoreThanOncePerVisit": "Consenti di convertire il Goal più di una volta per visita",
"AllowMultipleConversionsPerVisit": "Permetti conversioni multiple per visita",
"BestCountries": "Le tue nazioni che convertono meglio sono:",
@@ -33,7 +33,7 @@
"ColumnVisits": "Numero totale delle visite, indipendentemente dal fatto se un obiettivo sia stato attivato o meno.",
"ColumnVisitsProductDocumentation": "Numero di visite sulla pagina del Prodotto\/Categoria. Questo è anche utilizzato per elaborare la percentuale di conversioni %s. Questa metrica è nel report se è stato impostato nelle pagine Prodotto\/Categoria il view tracking Ecommerce.",
"Contains": "contiene %s",
- "ConversionByTypeReportDocumentation": "Questo report fornisce informazioni dettagliate sull'andamento degli obiettivi (conversioni, tassi di conversione ed entrate per visita), per ciascuna delle categorie disponibili nel pannello di sinistra. %1$s Si prega di cliccare su una delle categorie per visualizzare il report. %2$s Per ulteriori informazioni, leggere la %3$sDocumentazione Tracking Goals%4$s",
+ "ConversionByTypeReportDocumentation": "Questo report fornisce informazioni dettagliate sull'andamento degli obiettivi (conversioni, tassi di conversione ed entrate per visita), per ciascuna delle categorie disponibili nel pannello di sinistra. %1$s Si prega di cliccare su una delle categorie per visualizzare il report. %2$s Per ulteriori informazioni, leggere la %3$sDocumentazione sul Tracking dei Goal%4$s",
"ConversionRate": "%s rapporto di conversione",
"Conversions": "%s conversioni",
"ConversionsOverview": "Panoramica Conversioni",
@@ -68,7 +68,7 @@
"GoalX": "Goal %s",
"HelpOneConversionPerVisit": "Se una pagina corrispondente a un Obiettivo è aggiornata o visualizzata più di una volta in una visita, l'Obiettivo verrà registrato solo la prima volta che la pagina è stata caricata durante questa visita.",
"IsExactly": "è esattamente %s",
- "LearnMoreAboutGoalTrackingDocumentation": "Impara di più sul %1$sTracciamento Obiettivi in Piwik%2$s nella documentazione per l'utente.",
+ "LearnMoreAboutGoalTrackingDocumentation": "Impara di più sul %1$sTracciamento dei Goal in Piwik%2$s nella documentazione per l'utente.",
"LeftInCart": "%s lasciato nel carrello",
"ManageGoalsOrCreateANewGoal": "%1$sAmministra i Goal%2$s o creane ora uno nuovo!",
"Manually": "manualmente",
@@ -77,6 +77,7 @@
"NewGoalIntro": "Il tracciamento delle Conversioni Goal è uno dei modi più efficaci per misurare e migliorare i vostri obiettivi di business.",
"NewVisitorsConversionRateIs": "Il rapporto di conversione dei nuovi visitatori è %s",
"NoGoalsNeedAccess": "Solo un Amministratore con privilegi di Super User può gestire gli Obiettivi di un dato sito web. Chiedi al tuo amministratore di Piwik di impostare un Goal per il tuo sito. <br>Tracciare i Goal è un grande modo per aiutare a capire e a massimizzare le prestazioni del tuo sito web!",
+ "NoConversionsNoReportsMessage": "I report non vengono visualizzati perché non ci sono dati di conversione per il goal e il periodo selezionati.",
"NeedAccess": "Solo un Amministratore o un utente con privilegi di Super User può gestire gli Obiettivi di un dato sito.",
"Optional": "(opzionale)",
"OverallConversionRate": "%s rapporto di conversione complessivo (visite con un obiettivo completato)",
diff --git a/plugins/Goals/lang/ka.json b/plugins/Goals/lang/ka.json
index 1a2736fc3f..e7d6f0e4c9 100644
--- a/plugins/Goals/lang/ka.json
+++ b/plugins/Goals/lang/ka.json
@@ -2,7 +2,7 @@
"Goals": {
"AddGoal": "მიზნის დამატება",
"AddNewGoal": "დაამატეთ ახალი მიზანი",
- "AddNewGoalOrEditExistingGoal": "%sდაამატეთ ახალი მიზანი%s ან %sშეცვალეთ%s არსებული მიზნები",
+ "AddNewGoalOrEditExistingGoal": "%1$sდაამატეთ ახალი მიზანი%2$s ან %3$sშეცვალეთ%4$s არსებული მიზნები",
"BestCountries": "საუკეთესო კონვერციის ქვეყნებია:",
"BestKeywords": "საუკეთესო კონვერციის საკვანძო სიტყვებია:",
"BestReferrers": "საუკეთესო კინვერციის ვებ საიტების რეფერერებია:",
@@ -17,7 +17,7 @@
"DefaultRevenueHelp": "მაგალითად, კონტაქტების ფორმა, რომელსაც აგზავნის ვიზიტორი, შეიძლება ღირდეს საშუალოდ $10. Piwik დაგეხმარებათ გაიგოთ რამდენად კარგად არის წარმოდგენილნი თქვენი ვიზიტორების სეგმენტები.",
"DeleteGoalConfirm": "დარწმუნებული ხართ, რომ გსურთ %s მიზნის წაშლა?",
"Download": "ჩამოტვირთავს ფაილი",
- "ExceptionInvalidMatchingString": "თუ თქვენ აირჩევთ \"ზუსტი დამთხვევა\", შესადარებელი სტრიქონი უნდა იყოს URL დაწყებული %s. მაგალითად, '%s'.",
+ "ExceptionInvalidMatchingString": "თუ თქვენ აირჩევთ \"ზუსტი დამთხვევა\", შესადარებელი სტრიქონი უნდა იყოს URL დაწყებული %1$s. მაგალითად, '%2$s'.",
"ExternalWebsiteUrl": "გარე ვებ საიტის URL",
"Filename": "filename",
"GoalConversion": "მიზნის კონვერსია",
@@ -43,6 +43,6 @@
"VisitUrl": "ეწვევა მოცემულ URL–ს (გვერდი ან გვერდების ჯგუფი)",
"WhenVisitors": "როდესაც ვიზიტორი",
"WhereThe": "სადაც",
- "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "როდესაც მონახულებული გვედი შეიცავს JavaScript piwikTracker.trackGoal() მეთოდის (%sდამატებითი ინფორმაცია%s) გამოძახებას"
+ "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "როდესაც მონახულებული გვედი შეიცავს JavaScript 'trackGoal' მეთოდის (%1$sდამატებითი ინფორმაცია%2$s) გამოძახებას"
}
} \ No newline at end of file
diff --git a/plugins/Goals/lang/nl.json b/plugins/Goals/lang/nl.json
index a8b5d53fad..36b11c96f9 100644
--- a/plugins/Goals/lang/nl.json
+++ b/plugins/Goals/lang/nl.json
@@ -12,7 +12,7 @@
"CaseSensitive": "Hoofdletter gevoelig",
"CancelAndReturnToGoals": "Annuleren en %1$sterugkeren naar de lijst van doelen%2$s",
"CategoryTextGeneral_Visitors": "Gebruikers locatie",
- "CategoryTextReferrers_Referrers": "Herkomsten",
+ "CategoryTextReferrers_Referrers": "Herkomst",
"CategoryTextVisitsSummary_VisitsSummary": "Gebruikers eigenschap",
"CategoryTextGeneral_Visit": "engagement",
"ChooseGoal": "Kies het doel",
diff --git a/plugins/Goals/lang/pt-br.json b/plugins/Goals/lang/pt-br.json
index 9434023edc..8155ea125f 100644
--- a/plugins/Goals/lang/pt-br.json
+++ b/plugins/Goals/lang/pt-br.json
@@ -77,6 +77,7 @@
"NewGoalIntro": "O acompanhamento de conversões de metas é uma das maneiras mais eficientes para medir e melhorar seus objetivos de negócios.",
"NewVisitorsConversionRateIs": "Taxa de conversão de novos usuários é %s",
"NoGoalsNeedAccess": "Apenas um Administrador ou um usuário com acesso Super Usuário pode gerenciar Metas para um determinado website. Por favor, peça ao seu administrador Piwik para configurar uma Meta para o seu website. <br>Rastrear Metas é uma ótima maneira de ajudar a compreender e maximizar o desempenho do seu website!",
+ "NoConversionsNoReportsMessage": "Os relatórios não são exibidos porque não há dados de conversão para a meta e o período selecionados.",
"NeedAccess": "Apenas um Administrador ou um usuário com acesso Super Usuário pode gerenciar Metas para um determinado website.",
"Optional": "(opcional)",
"OverallConversionRate": "%s taxa total de conversão(visitas com uma meta completa)",
diff --git a/plugins/Goals/lang/sq.json b/plugins/Goals/lang/sq.json
index 1c5dfc173d..ed466ce0de 100644
--- a/plugins/Goals/lang/sq.json
+++ b/plugins/Goals/lang/sq.json
@@ -77,6 +77,7 @@
"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!",
+ "NoConversionsNoReportsMessage": "Raportet nuk shfaqen, ngaqë nuk ka të dhëna shndërrimesh për objektivin dhe periudhën e zgjedhur.",
"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)",
diff --git a/plugins/Goals/lang/sv.json b/plugins/Goals/lang/sv.json
index 5ba02ca36e..4bc94929f0 100644
--- a/plugins/Goals/lang/sv.json
+++ b/plugins/Goals/lang/sv.json
@@ -77,6 +77,7 @@
"NewGoalIntro": "Att använda mål för konvertering är ett av de mest effektiva sätten att mäta och förbättra din affärsverksamhet.",
"NewVisitorsConversionRateIs": "Nya besökares omvandlingsgrad är %s",
"NoGoalsNeedAccess": "Bara en administratör eller användare med Superbehörighet kan hantera mål för angiven hemsida. Var snäll och kontakta din administratör hos Piwik för att sätta upp dina mål för din hemsida. <br>Att ha mål är ett utmärkt sätt att få hjälp att förstå hur du maximerar din webbsidas resultat!",
+ "NoConversionsNoReportsMessage": "Rapporterna visas inte eftersom det inte finns någon konverteringsdata för det valda målet och perioden.",
"NeedAccess": "Bara en administratör eller användare med Superbehörighet kan hantera mål för angiven hemsida.",
"Optional": "(frivilligt)",
"OverallConversionRate": "%s total omvandlingsgrad (besök med ett uppnått mål)",
diff --git a/plugins/Goals/lang/uk.json b/plugins/Goals/lang/uk.json
index fda6fe3d41..ff668a5102 100644
--- a/plugins/Goals/lang/uk.json
+++ b/plugins/Goals/lang/uk.json
@@ -1,48 +1,108 @@
{
"Goals": {
- "AddGoal": "Додати Ціль",
- "AddNewGoal": "Додати нову Ціль",
- "AddNewGoalOrEditExistingGoal": "%1$sДодати нову Ціль%2$s або %3$sРедагувати%4$s існуючі Цілі",
- "BestCountries": "Країни з найкращою корверсією:",
- "BestKeywords": "Ключові слова з найкращоб конверсією:",
- "BestReferrers": "Джерела трафіку з найкращою конверсією:",
- "CaseSensitive": "співпадіння чутливе до регістру",
- "ClickOutlink": "Клацання по посиланню на зовнішній веб-сайт",
+ "AbandonedCart": "Кинуті кошики",
+ "AddGoal": "Додати ціль",
+ "AddNewGoal": "Додати нову ціль",
+ "AddNewGoalOrEditExistingGoal": "%1$sДодати нову ціль%2$s або %3$sредагувати%4$s вже існуючі",
+ "AllowGoalConvertedMoreThanOncePerVisit": "Дозволити зарахування цілі більш ніж один раз за відвідування",
+ "AllowMultipleConversionsPerVisit": "Дозволити множинну конверсію за відвідування",
+ "BestCountries": "Найбільш популярні країни:",
+ "BestKeywords": "Найбільш популярні ключові слова:",
+ "BestReferrers": "Найбільш популярні джерела входу:",
+ "CaseSensitive": "Збіги є чутливими до регістру",
+ "CancelAndReturnToGoals": "Скасування і %1$sповернення до списку цілей%2$s",
+ "CategoryTextGeneral_Visitors": "Місцезнаходження користувача",
+ "CategoryTextReferrers_Referrers": "Джерела",
+ "CategoryTextVisitsSummary_VisitsSummary": "Властивість користувача",
+ "CategoryTextGeneral_Visit": "Залученість",
+ "ChooseGoal": "Виберіть ціль",
+ "ClickOutlink": "Переходять по посиланню на зовнішній сайт",
+ "SendEvent": "Відправляють подію",
+ "ColumnAverageOrderRevenueDocumentation": "Середня ціна за замовлення - загальний прибуток за усі електронні замовлення, розділені на число замовлень.",
+ "ColumnAveragePriceDocumentation": "Середній прибуток для %s.",
+ "ColumnAverageQuantityDocumentation": "Середня кількість %s, проданих через електронні замовлення.",
+ "ColumnConversionRateDocumentation": "Відсоток відвідувань, коли було ініційовано виконання цілі %s.",
+ "ColumnConversionRateProductDocumentation": "Відсоток конверсії %s – це число замовлень, що містять цей товар і розділені на число відвідувань сторінки з товаром.",
"ColumnConversions": "Конверсії",
+ "ColumnConversionsDocumentation": "Кількість конверсій для %s.",
+ "ColumnOrdersDocumentation": "Загальна кількість електронних замовлень, які містили %s хоча б раз.",
+ "ColumnPurchasedProductsDocumentation": "Число куплених товарів - це сума числа товарів, проданих за допомогою електронних замовлень.",
+ "ColumnQuantityDocumentation": "Кількість - це загальне товарів, проданих для кожного %s.",
+ "ColumnRevenueDocumentation": "Загальний прибуток, отриманий %s.",
+ "ColumnRevenuePerVisitDocumentation": "Загальний прибуток, отриманий %s і розділений на число відвідувань.",
+ "ColumnVisits": "Загальна кількість відвідувань в незалежності від того, була виконана Ціль чи ні.",
+ "ColumnVisitsProductDocumentation": "Число відвідувань сторінки товарів\/категорії товарів. Це використовується для підрахунку відсотка конверсії %s. Цей показник потрапляє в звіт, якщо ви встановили відстеження електронної комерції на сторінку товарів\/категорії товарів.",
"Contains": "містить %s",
- "ConversionRate": "%s коефіцієнт конверсії",
- "Conversions": "%s конверсії",
- "ConversionsOverview": "Огляд конверсій",
- "DefaultRevenue": "Типовий прибуток Цілі",
- "DefaultRevenueHelp": "Для прикладу, надіслана відвідувачем Форма Контактів може в середньому вартувати $10. Piwik дозволить вам зрозуміти наскільки добре поводять себе різні сегменти ваших користувачів.",
- "DeleteGoalConfirm": "Впевнені що хочете видалити Ціль %s?",
- "Download": "Завантажено файл",
- "ExceptionInvalidMatchingString": "Якщо вибрати \"точне сіпвпадіння\" то стрічка для співставлення має бути коректним URL та починатися з %1$s. Наприклад '%2$s'.",
- "ExternalWebsiteUrl": "URL на зовнішній веб-сайт",
- "Filename": "ім’я файла",
+ "ConversionByTypeReportDocumentation": "Цей звіт містить детальну інформацію про цілі (конверсія, відсоток конверсії і прибуток за відвідування) по кожній доступній в лівій панелі категорії. %1$s Будь ласка, клікніть на одну з категорій, щоб побачити детальний звіт. %2$s Більше інформації у %3$sВідстеження цілей на piwik.org%4$s",
+ "ConversionRate": "%s коефіцієнт конверсій",
+ "Conversions": "%s конверсій",
+ "ConversionsOverview": "Огляд переходів",
+ "ConversionsOverviewBy": "Огляд конверсій за типами відвідування",
+ "DaysToConv": "Конверсія по днях",
+ "Details": "Детальніше про цілі",
+ "DefaultGoalConvertedOncePerVisit": "(за замовчуванням) Ціль може бути зарахована раз за відвідування",
+ "DefaultRevenue": "Вартість цілі за замовчуванням:",
+ "DefaultRevenueHelp": "Наприклад, форма замовлення, відправлена ​​відвідувачем, має середню ціну 10 грн.. Тоді веб-аналітика підрахує сумарний прибуток за вас",
+ "DeleteGoalConfirm": "Ви впевнені, що бажаєте видалити ціль %s?",
+ "DocumentationRevenueGeneratedByProductSales": "Продажі товарів. Без податків, ціни доставки і знижок",
+ "Download": "Завантажують файл",
+ "Ecommerce": "Ел. комерція",
+ "EcommerceAndGoalsMenu": "Електрона комерція & Цілі",
+ "EcommerceLog": "Лог ел. замовлень",
+ "EcommerceOrder": "Електронне замовлення",
+ "EcommerceOverview": "Огляд електронних замовлень",
+ "EcommerceReports": "Звіти по електронним замовленням",
+ "ExceptionInvalidMatchingString": "Якщо ви оберете «співпадає точно», рядок для порівняння повинен бути URL'ом, що починається з %1$s. Наприклад, \"%2$s\".",
+ "ExternalWebsiteUrl": "зовнішнє посилання виглядає наступним чином:",
+ "Filename": "ім'я файлу виглядає наступним чином:",
"GoalConversion": "Конверсія цілі",
- "GoalIsTriggered": "Ціль спрацьовує",
- "GoalIsTriggeredWhen": "Ціль спрацьовує коли",
+ "GoalConversions": "Конверсія цілей",
+ "GoalConversionsBy": "Конверсія цілі %s за типом відвідування",
+ "GoalIsTriggered": "Ціль зараховується, якщо:",
+ "GoalIsTriggeredWhen": "коли",
"GoalName": "Назва Цілі",
"Goals": "Цілі",
+ "ManageGoals": "Управління цілями",
"GoalsOverview": "Огляд цілей",
+ "GoalsOverviewDocumentation": "Це огляд конверсії ваших цілей. Графік показує суму всіх конверсій. %s Під графіком можна побачити звіт про переходи - по кожній з цілей. Графіки можуть бути збільшені при кліці на них.",
"GoalX": "Ціль %s",
- "IsExactly": "точно співпадає з %s",
- "Manually": "вручну",
- "ManuallyTriggeredUsingJavascriptFunction": "Ціль спрацьовує вручну використовуючи JavaScript API trackGoal()",
- "MatchesExpression": "підходить під вираз %s",
- "NewVisitorsConversionRateIs": "коефіцієнт коверсії нових користувачів дорівнює %s",
- "Optional": "(не обовязково)",
- "OverallConversionRate": "%s загальний коефіцієнт конверсії (відвідування з завершеними цілями)",
+ "HelpOneConversionPerVisit": "Якщо сторінка, що збігається з цією ціллю перезавантажується або проглядається більше одного разу за відвідування, ціль буде зараховано тільки один раз - при першому візиті користувача на цю сторінку.",
+ "IsExactly": "точно %s",
+ "LearnMoreAboutGoalTrackingDocumentation": "Дізнатися більше про %1$sвідстеження цілей в Piwik%2$s в інструкції користувача.",
+ "LeftInCart": "%s залишено в кошику",
+ "ManageGoalsOrCreateANewGoal": "%1$sУправляйте цілями%2$s або створіть нову прямо зараз!",
+ "Manually": "ручне налаштування",
+ "ManuallyTriggeredUsingJavascriptFunction": "Ціль вручну стала умовною через Javascript API trackGoal()",
+ "MatchesExpression": "збігається з виразом %s",
+ "NewGoalIntro": "Відстеження досягнутих переходів є одним з найбільш ефективних способів виміряти і поліпшити свої бізнес-завдання.",
+ "NewVisitorsConversionRateIs": "Коефіцієнт нових відвідувачів %s",
+ "NoGoalsNeedAccess": "Тільки адміністратор або користувач з правами суперкористувача може додавати цілі для даного сайту. Будь ласка, зверніться до адміністратора Piwik, щоб створити цілі для вашого сайту.<br>Відстеження цілей є відмінним способом, щоб допомогти зрозуміти як збільшити і максимізувати ефективність веб-сайту!",
+ "NoConversionsNoReportsMessage": "Звіти не показані, тому що дані перетворення для обраних цілей і періоду відсутні.",
+ "NeedAccess": "Тільки Адміністратор або користувач з доступом Суперкористувача може управляти цілями для даного сайту.",
+ "Optional": "(необов'язково)",
+ "OverallConversionRate": "%s загальний коефіцієнт конверсій (переходи з виконаної цілі)",
"OverallRevenue": "%s загальний прибуток",
+ "PageTitle": "Заголовок сторінки",
"Pattern": "Шаблон",
- "ReturningVisitorsConversionRateIs": "Коефіцієнт конверсії користувачів що повернулися дорівнює %s",
- "UpdateGoal": "Обновити Ціль",
- "URL": "URL",
- "ViewAndEditGoals": "Переглянути та Редагувати Цілі",
- "VisitUrl": "Відвідано заданий URL (сторінку або групу сторінок)",
- "WhenVisitors": "коли відвідувачі",
+ "PluginDescription": "Створіть Цілі і дивіться детальні звіти про цільові конверсії: зміна за часом, дохід від візиту, конверсії з посилання, з ключового слова та ін.",
+ "ProductCategory": "Категорія товарів",
+ "ProductName": "Найменування товару",
+ "Products": "Товари",
+ "ProductSKU": "Артикул",
+ "ReturningVisitorsConversionRateIs": "Коефіцієнт найбільш частих відвідувачів, що повернулися %s",
+ "SingleGoalOverviewDocumentation": "Це огляд конверсій по конкретній цілі. %s Графіки, показані нижче, можна збільшити, клікнувши по ним.",
+ "ThereIsNoGoalToManage": "Немає цілі для управління на сайті %s",
+ "UpdateGoal": "Оновити ціль",
+ "URL": "URL виглядає наступним чином:",
+ "ViewAndEditGoals": "Переглянути та редагувати цілі",
+ "GoalsBy": "Цілі по %s",
+ "GoalsAdjective": "Цілі %s",
+ "VisitPageTitle": "Відвідують даний Заголовок сторінки",
+ "VisitsUntilConv": "Зконвертовані відвідування",
+ "VisitUrl": "Відвідують даний URL (сторінку або групу сторінок)",
+ "WhenVisitors": "відвідувачі",
"WhereThe": "де",
- "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "де відвідана сторінка містить запит методу JavaScript 'trackGoal' (%1$sдізнатись більше%2$s)"
+ "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "де ціль зараховується за допомогою установки виклику методу JavaScript 'trackGoal' (%1$sдізнатися більше%2$s)",
+ "YouCanEnableEcommerceReports": "Ви можете активувати %1$s для цього сайту на сторінці %2$s."
}
} \ No newline at end of file
diff --git a/plugins/Goals/tests/Integration/APITest.php b/plugins/Goals/tests/Integration/APITest.php
index 7dcb79eef5..b2a1d60e98 100644
--- a/plugins/Goals/tests/Integration/APITest.php
+++ b/plugins/Goals/tests/Integration/APITest.php
@@ -187,6 +187,42 @@ class APITest extends IntegrationTestCase
$this->assertHasNoGoals();
}
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage checkUserHasViewAccess Fake exception
+ */
+ public function test_getGoal_shouldThrowException_IfNotEnoughPermission()
+ {
+ $idGoal = $this->createAnyGoal();
+ $this->assertSame(1, $idGoal);
+ $this->setNonAdminUser();
+ $this->api->getGoal($this->idSite, $idGoal);
+ }
+
+ public function test_getGoal_shouldReturnNullIfItDoesNotExist()
+ {
+ $this->assertNull($this->api->getGoal($this->idSite, $idGoal = 99));
+ }
+
+ public function test_getGoal_shouldReturnExistingGoal()
+ {
+ $idGoal = $this->createAnyGoal();
+ $this->assertSame(1, $idGoal);
+ $goal = $this->api->getGoal($this->idSite, $idGoal);
+ $this->assertEquals(array(
+ 'idsite' => '1',
+ 'idgoal' => '1',
+ 'name' => 'MyName1',
+ 'match_attribute' => 'event_action',
+ 'pattern' => 'test',
+ 'pattern_type' => 'exact',
+ 'case_sensitive' => '0',
+ 'allow_multiple' => '0',
+ 'revenue' => '0',
+ 'deleted' => '0',
+ ), $goal);
+ }
+
private function assertHasGoals()
{
$goals = $this->getGoals();
diff --git a/plugins/ImageGraph/ImageGraph.php b/plugins/ImageGraph/ImageGraph.php
index 5cb1be2e61..9869d37081 100644
--- a/plugins/ImageGraph/ImageGraph.php
+++ b/plugins/ImageGraph/ImageGraph.php
@@ -95,7 +95,7 @@ class ImageGraph extends \Piwik\Plugin
$piwikSite
);
} else {
- // if graphs_show_evolution_within_selected_period=true, show the days withing the period
+ // if graphs_show_evolution_within_selected_period=true, show the days within the period
// (except if the period is day, see above)
$periodForMultiplePeriodGraph = 'day';
$period = PeriodFactory::build($info['period'], $info['date']);
diff --git a/plugins/ImageGraph/StaticGraph/GridGraph.php b/plugins/ImageGraph/StaticGraph/GridGraph.php
index 4ffde4c2c4..5d8365345a 100644
--- a/plugins/ImageGraph/StaticGraph/GridGraph.php
+++ b/plugins/ImageGraph/StaticGraph/GridGraph.php
@@ -194,7 +194,7 @@ abstract class GridGraph extends StaticGraph
// $legendTopLeftYValue = y coordinate of the top edge of the legend's icons
// Caution :
- // - pChart will silently add some value (see $paddingAddedByPChart) to $legendTopLeftYValue depending on multiple criterias
+ // - pChart will silently add some value (see $paddingAddedByPChart) to $legendTopLeftYValue depending on multiple criteria
// - pChart will not take into account the size of the text. Setting $legendTopLeftYValue = 0 will crop the legend's labels
// The following section of code determines the value of $legendTopLeftYValue while taking into account the following paremeters :
// - whether legend items have icons
diff --git a/plugins/ImageGraph/lang/sq.json b/plugins/ImageGraph/lang/sq.json
index 9038f453ef..a8a12c81e5 100644
--- a/plugins/ImageGraph/lang/sq.json
+++ b/plugins/ImageGraph/lang/sq.json
@@ -1,5 +1,6 @@
{
"ImageGraph": {
- "ColumnOrdinateMissing": "Në këtë raport s’u gjet shtylla '%1$s'. Provoni cilëndo nga %2$s"
+ "ColumnOrdinateMissing": "Në këtë raport s’u gjet shtylla '%1$s'. Provoni cilëndo nga %2$s",
+ "PluginDescription": "Prodhoni figura të hijshme Grafikësh statikë PNG për çfarëdo të dhënash të raportit tuaj."
}
} \ No newline at end of file
diff --git a/plugins/ImageGraph/lang/tr.json b/plugins/ImageGraph/lang/tr.json
new file mode 100644
index 0000000000..ca1532a1b0
--- /dev/null
+++ b/plugins/ImageGraph/lang/tr.json
@@ -0,0 +1,6 @@
+{
+ "ImageGraph": {
+ "ColumnOrdinateMissing": "'%1$s' sütunu bu raporda bulunamadı Herhangi bir %2$s deneyin",
+ "PluginDescription": "Veri raporlarınız için güzel PNG çizelgeleri oluşturur."
+ }
+} \ No newline at end of file
diff --git a/plugins/ImageGraph/lang/uk.json b/plugins/ImageGraph/lang/uk.json
new file mode 100644
index 0000000000..29c84f0562
--- /dev/null
+++ b/plugins/ImageGraph/lang/uk.json
@@ -0,0 +1,6 @@
+{
+ "ImageGraph": {
+ "ColumnOrdinateMissing": "Колонка ’%1$s’ була знайдена в цьому звіті. Спробуйте що-небудь з %2$s",
+ "PluginDescription": "Генеруйте красиві статичні зображення графіків PNG для будь-якого вашого інформаційного звіту."
+ }
+} \ No newline at end of file
diff --git a/plugins/Insights/lang/da.json b/plugins/Insights/lang/da.json
index 019a911178..e0fdf0d65e 100644
--- a/plugins/Insights/lang/da.json
+++ b/plugins/Insights/lang/da.json
@@ -1,5 +1,6 @@
{
"Insights": {
+ "PluginDescription": "Giver indsigt i din trafik. Indsigt findes som kontrolpanel widgets og som nyt ikon i rapporter for at lade dig se de vigtigste tendenser i dine data.",
"ControlComparedToDescription": "Vækst i forhold til",
"ControlFilterByDescription": "Vis alle, kun ændringer, kun nye eller kun forsvundne",
"DatePeriodCombinationNotSupported": "Det er ikke muligt at generere rapporter til disse datoer og kombination af perioder.",
diff --git a/plugins/Insights/lang/nb.json b/plugins/Insights/lang/nb.json
index 967feeb49e..3d9808c267 100644
--- a/plugins/Insights/lang/nb.json
+++ b/plugins/Insights/lang/nb.json
@@ -1,14 +1,33 @@
{
"Insights": {
+ "PluginDescription": "Gir innsikt om din trafikk. Innsikt er tilgjengelig som widgeter, i tillegg til et nytt ikon i rapporter, som lar deg se de viktigste trendene i dine data.",
"ControlComparedToDescription": "Vekst sammenlignet med",
+ "ControlFilterByDescription": "Vis alle, kun klatrere, kun nye eller kun forsvunne",
+ "DatePeriodCombinationNotSupported": "Det er ikke mulig å generere innsikt for denne dato- og periodekombinasjonen.",
"DayComparedToPreviousDay": "dagen før",
"DayComparedToPreviousWeek": "samme dag i forrige uke",
"DayComparedToPreviousYear": "samme dag året før",
"Filter": "Filter",
+ "FilterIncreaserAndDecreaser": "På vei opp & på vei ned",
+ "FilterOnlyDecreaser": "Kun på vei ned",
+ "FilterOnlyDisappeared": "Kun forsvunne",
+ "FilterOnlyIncreaser": "Kun på vei opp",
+ "FilterOnlyMovers": "Kun klatrere",
"FilterOnlyNew": "Bare nye",
+ "IgnoredChanges": "Endringer som påvirker mindre enn %s besøk ble ignorert.",
"MonthComparedToPreviousMonth": "måneden før",
"MonthComparedToPreviousYear": "samme måned året før",
+ "MoversAndShakersWidgetTitle": "Klatrere og stupere",
+ "NoResultMatchesCriteria": "Ingen rader passer til kriteriene",
+ "OverviewWidgetTitle": "Innsiktsoversikt",
+ "TitleConsideredInsightsChanges": "Radene økte eller minket med minst %1$s besøk (%2$s%% av totalt %3$s besøk).",
+ "TitleConsideredInsightsGrowth": "Følgende rader har en vekst på minst %1$s%% sammenliknet med %2$s.",
+ "TitleConsideredMoversAndShakersChanges": "Regnes som klatrere kun hvis de økte med mer enn %1$s%% besøk eller minket med mer enn %2$s%% besøk, nye oppføringer kun hvis de har økt med mer enn %3$s%% besøk (%4$s), og forsvunne rader hvis de minket med mer enn %5$s%% besøk (%6$s).",
+ "TitleConsideredMoversAndShakersGrowth": "%1$s gikk fra %2$s til %3$s sammenliknet med %4$s Basert på dette forventes en utvikling på %5$s%% for hver rad.",
"TitleRowChangeDetails": "«%1$s» endret fra %2$s (%3$s) til %4$s (%5$s) %6$s.",
+ "TitleRowDisappearedDetails": "«%1$s» minket med %2$s og forsvant i %3$s sammenliknet med %4$s.",
+ "TitleRowMoverAndShaker": "Denne raden hadde en større påvirkning enn gjennomsnittet.",
+ "TitleRowNewDetails": "«%1$s» økte med %2$s og er ny sammenliknet med %3$s.",
"WeekComparedToPreviousWeek": "uken før",
"WidgetCategory": "Innsikt",
"YearComparedToPreviousYear": "året før"
diff --git a/plugins/Insights/lang/sq.json b/plugins/Insights/lang/sq.json
index 46a17bb94b..bc6a485e1a 100644
--- a/plugins/Insights/lang/sq.json
+++ b/plugins/Insights/lang/sq.json
@@ -4,7 +4,9 @@
"DayComparedToPreviousDay": "dita e mëparshme",
"DayComparedToPreviousWeek": "e njëjta ditë javën e kaluar",
"DayComparedToPreviousYear": "e njëjta ditë vitin e kaluar",
+ "IgnoredChanges": "Janë shpërfillur ndryshimet që u takojnë më pak se %s vizitave.",
"MonthComparedToPreviousMonth": "muaji i mëparshëm",
+ "MonthComparedToPreviousYear": "i njëjti muaj vitin e shkuar",
"WeekComparedToPreviousWeek": "java e mëparshme",
"YearComparedToPreviousYear": "viti i mëparshëm"
}
diff --git a/plugins/Insights/lang/sv.json b/plugins/Insights/lang/sv.json
index 1e95d30eb6..653029c075 100644
--- a/plugins/Insights/lang/sv.json
+++ b/plugins/Insights/lang/sv.json
@@ -1,5 +1,6 @@
{
"Insights": {
+ "PluginDescription": "Ger tillgång till i insikter om din trafik. Insikter finns tillgänglig som en instrumentpanel men även som en ny ikon i rapporter för att du ska få tillgång till de viktigaste trenderna i din data.",
"ControlComparedToDescription": "Tillväxt jämfört med",
"ControlFilterByDescription": "Visa alla, endast förändringar, endast nya eller endast försvunna",
"DatePeriodCombinationNotSupported": "Det är inte möjligt att generera insikter för datum och tid tillsammans.",
diff --git a/plugins/Insights/lang/uk.json b/plugins/Insights/lang/uk.json
new file mode 100644
index 0000000000..6dda7742e6
--- /dev/null
+++ b/plugins/Insights/lang/uk.json
@@ -0,0 +1,35 @@
+{
+ "Insights": {
+ "PluginDescription": "Надає Вам прогнози вашого трафіку. Прогнози доступні як у вигляді віджетів панелі управління, так і у вигляді нової іконки в звітах, щоб дозволяти вам бачити найбільш важливі тенденції в ваших даних.",
+ "ControlComparedToDescription": "Приріст у порівнянні з",
+ "ControlFilterByDescription": "Показати всі, тільки рухомі, тільки нові або тільки зниклі",
+ "DatePeriodCombinationNotSupported": "Для комбінації цієї дати і періоду неможливо згенерувати прогнози.",
+ "DayComparedToPreviousDay": "попередній день",
+ "DayComparedToPreviousWeek": "того ж дня тижнем раніше",
+ "DayComparedToPreviousYear": "того ж дня в попередньому році",
+ "Filter": "Фільтр",
+ "FilterIncreaserAndDecreaser": "Зростаючі і спадаючі",
+ "FilterOnlyDecreaser": "Тільки спадаючі",
+ "FilterOnlyDisappeared": "Тільки зниклі",
+ "FilterOnlyIncreaser": "Тільки зростаючі",
+ "FilterOnlyMovers": "Тільки рухомі",
+ "FilterOnlyNew": "Тільки нові",
+ "IgnoredChanges": "Зміни, що зачіпають менше, ніж %s візитів, були пропущені.",
+ "MonthComparedToPreviousMonth": "попередній місяць",
+ "MonthComparedToPreviousYear": "той же місяць роком раніше",
+ "MoversAndShakersWidgetTitle": "Рухомі і тремтячі",
+ "NoResultMatchesCriteria": "Немає рядків, що відповідають критеріям",
+ "OverviewWidgetTitle": "Огляд Прогнозів",
+ "TitleConsideredInsightsChanges": "Ряди, що збільшилися або зменшилися принаймні на %1$s візитів (%2$s%% з %3$s візитів загалом).",
+ "TitleConsideredInsightsGrowth": "Наступні рядки мають приріст принаймні %1$s%% порівняно з %2$s.",
+ "TitleConsideredMoversAndShakersChanges": "Вважаються рухомими, тільки якщо вони збільшилися на більш ніж %1$s%% візитів або скоротилися на менш ніж %2$s%% візитів, нові записи, якщо вони збільшилися на більш ніж %3$s%% візитів (%4$s), і зниклі ряди, якщо вони скоротилися на менш ніж %5$s%% візитів (%6$s).",
+ "TitleConsideredMoversAndShakersGrowth": "%1$s змінився з %2$s до %3$s порівняно %4$s. Грунтуючись на цьому, очікується розвиток кожного ряду %5$s%%.",
+ "TitleRowChangeDetails": "'%1$s' змінилося з %2$s (%3$s) до %4$s (%5$s) %6$s.",
+ "TitleRowDisappearedDetails": "'%1$s' зменшилася на %2$s і пропало в %3$s порівняно з %4$s.",
+ "TitleRowMoverAndShaker": "Вплив цього рядка більше середнього.",
+ "TitleRowNewDetails": "'%1$s' збільшилось на %2$s і є новим у порівнянні з %3$s.",
+ "WeekComparedToPreviousWeek": "попередній тиждень",
+ "WidgetCategory": "Прогнози",
+ "YearComparedToPreviousYear": "минулий рік"
+ }
+} \ No newline at end of file
diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php
index f201c15616..374acee4e3 100644
--- a/plugins/Installation/Controller.php
+++ b/plugins/Installation/Controller.php
@@ -280,8 +280,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$email = $form->getSubmitValue('email');
$newsletterPiwikORG = $form->getSubmitValue('subscribe_newsletter_piwikorg');
- $newsletterPiwikPRO = $form->getSubmitValue('subscribe_newsletter_piwikpro');
- $this->registerNewsletter($email, $newsletterPiwikORG, $newsletterPiwikPRO);
+ $newsletterProfessionalServices = $form->getSubmitValue('subscribe_newsletter_professionalservices');
+ $this->registerNewsletter($email, $newsletterPiwikORG, $newsletterProfessionalServices);
$this->redirectToNextStep(__FUNCTION__);
} catch (Exception $e) {
@@ -301,6 +301,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
{
$this->checkPiwikIsNotInstalled();
+ ServerFilesGenerator::createFilesForSecurity();
+
$siteIdsCount = Access::doAsSuperUser(function () {
return count(APISitesManager::getInstance()->getAllSitesId());
});
@@ -426,6 +428,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$view->addForm($form);
$view->showNextStep = false;
+ $view->linkToProfessionalServices = StaticContainer::get('Piwik\ProfessionalServices\Advertising')->getPromoUrlForProfessionalServices($medium = 'App_InstallationFinished');
$output = $view->render();
return $output;
@@ -713,16 +716,16 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
/**
* @param $email
* @param $newsletterPiwikORG
- * @param $newsletterPiwikPRO
+ * @param $newsletterProfessionalServices
*/
- protected function registerNewsletter($email, $newsletterPiwikORG, $newsletterPiwikPRO)
+ protected function registerNewsletter($email, $newsletterPiwikORG, $newsletterProfessionalServices)
{
$url = Config::getInstance()->General['api_service_url'];
$url .= '/1.0/subscribeNewsletter/';
$params = array(
'email' => $email,
'piwikorg' => $newsletterPiwikORG,
- 'piwikpro' => $newsletterPiwikPRO,
+ 'piwikpro' => $newsletterProfessionalServices,
'url' => Url::getCurrentUrlWithoutQueryString(),
'language' => StaticContainer::get('Piwik\Translation\Translator')->getCurrentLanguage(),
);
@@ -762,4 +765,5 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
return $result;
});
}
+
}
diff --git a/plugins/Installation/FormDatabaseSetup.php b/plugins/Installation/FormDatabaseSetup.php
index 90f563d9fc..2b1be5b089 100644
--- a/plugins/Installation/FormDatabaseSetup.php
+++ b/plugins/Installation/FormDatabaseSetup.php
@@ -34,12 +34,16 @@ class FormDatabaseSetup extends QuickForm2
function init()
{
HTML_QuickForm2_Factory::registerRule('checkValidFilename', 'Piwik\Plugins\Installation\FormDatabaseSetup_Rule_checkValidFilename');
+ HTML_QuickForm2_Factory::registerRule('checkValidDbname', 'Piwik\Plugins\Installation\FormDatabaseSetup_Rule_checkValidDbname');
HTML_QuickForm2_Factory::registerRule('checkUserPrivileges', 'Piwik\Plugins\Installation\Rule_checkUserPrivileges');
$availableAdapters = Adapter::getAdapters();
$adapters = array();
foreach ($availableAdapters as $adapter => $port) {
$adapters[$adapter] = $adapter;
+ if (Adapter::isRecommendedAdapter($adapter)) {
+ $adapters[$adapter] .= ' (' . Piwik::translate('General_Recommended') . ')';
+ }
}
$this->addElement('text', 'host')
@@ -60,7 +64,7 @@ class FormDatabaseSetup extends QuickForm2
$item = $this->addElement('text', 'dbname')
->setLabel(Piwik::translate('Installation_DatabaseSetupDatabaseName'));
$item->addRule('required', Piwik::translate('General_Required', Piwik::translate('Installation_DatabaseSetupDatabaseName')));
- $item->addRule('checkValidFilename', Piwik::translate('General_NotValid', Piwik::translate('Installation_DatabaseSetupDatabaseName')));
+ $item->addRule('checkValidDbname', Piwik::translate('General_NotValid', Piwik::translate('Installation_DatabaseSetupDatabaseName')));
$this->addElement('text', 'tables_prefix')
->setLabel(Piwik::translate('Installation_DatabaseSetupTablePrefix'))
@@ -302,7 +306,7 @@ class Rule_checkUserPrivileges extends HTML_QuickForm2_Rule
}
/**
- * Filename check for prefix/DB name
+ * Filename check for prefix
*
*/
class FormDatabaseSetup_Rule_checkValidFilename extends HTML_QuickForm2_Rule
@@ -315,3 +319,17 @@ class FormDatabaseSetup_Rule_checkValidFilename extends HTML_QuickForm2_Rule
}
}
+/**
+ * Filename check for DB name
+ *
+ */
+class FormDatabaseSetup_Rule_checkValidDbname extends HTML_QuickForm2_Rule
+{
+ function validateOwner()
+ {
+ $prefix = $this->owner->getValue();
+ return empty($prefix)
+ || DbHelper::isValidDbname($prefix);
+ }
+}
+
diff --git a/plugins/Installation/FormSuperUser.php b/plugins/Installation/FormSuperUser.php
index 8c14e13716..ff41d2f617 100644
--- a/plugins/Installation/FormSuperUser.php
+++ b/plugins/Installation/FormSuperUser.php
@@ -40,9 +40,8 @@ class FormSuperUser extends QuickForm2
->setLabel(Piwik::translate('Installation_Password'));
$password->addRule('required', Piwik::translate('General_Required', Piwik::translate('Installation_Password')));
$pwMinLen = UsersManager::PASSWORD_MIN_LENGTH;
- $pwMaxLen = UsersManager::PASSWORD_MAX_LENGTH;
- $pwLenInvalidMessage = Piwik::translate('UsersManager_ExceptionInvalidPassword', array($pwMinLen, $pwMaxLen));
- $password->addRule('length', $pwLenInvalidMessage, array('min' => $pwMinLen, 'max' => $pwMaxLen));
+ $pwLenInvalidMessage = Piwik::translate('UsersManager_ExceptionInvalidPassword', array($pwMinLen));
+ $password->addRule('length', $pwLenInvalidMessage, array('min' => $pwMinLen));
$passwordBis = $this->addElement('password', 'password_bis')
->setLabel(Piwik::translate('Installation_PasswordRepeat'));
@@ -59,22 +58,15 @@ class FormSuperUser extends QuickForm2
'content' => '&nbsp;&nbsp;' . Piwik::translate('Installation_PiwikOrgNewsletter'),
));
- $piwikProNewsletter = Piwik::translate('Installation_PiwikProNewsletter',
- array("<a href='http://piwik.pro?pk_medium=App_Newsletter_link&pk_source=Piwik_App&pk_campaign=App_Installation' style='color:#444;' rel='noreferrer' target='_blank'>", "</a>")
+ $professionalServicesNewsletter = Piwik::translate('Installation_ProfessionalServicesNewsletter',
+ array("<a href='http://piwik.org/consulting/?pk_medium=App_Newsletter_link&pk_source=Piwik_App&pk_campaign=App_Installation' style='color:#444;' rel='noreferrer' target='_blank'>", "</a>")
);
$currentLanguage = StaticContainer::get('Piwik\Translation\Translator')->getCurrentLanguage();
- if ($currentLanguage == 'de') {
- $piwikProNewsletter = Piwik::translate('Installation_PiwikProNewsletter',
- array("<a href='http://piwikpro.de?pk_medium=App_Newsletter_link&pk_source=Piwik_App&pk_campaign=App_Installation' style='color:#444;' rel='noreferrer' target='_blank'>", "</a>")
- );
- $piwikProNewsletter = preg_replace('(Piwik PRO(?! GmbH))', 'Piwik PRO GmbH', $piwikProNewsletter);
- }
-
- $this->addElement('checkbox', 'subscribe_newsletter_piwikpro', null,
+ $this->addElement('checkbox', 'subscribe_newsletter_professionalservices', null,
array(
- 'content' => '&nbsp;&nbsp;' . $piwikProNewsletter,
+ 'content' => '&nbsp;&nbsp;' . $professionalServicesNewsletter,
));
$this->addElement('submit', 'submit', array('value' => Piwik::translate('General_Next') . ' »', 'class' => 'btn'));
@@ -82,7 +74,7 @@ class FormSuperUser extends QuickForm2
// default values
$this->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
'subscribe_newsletter_piwikorg' => 1,
- 'subscribe_newsletter_piwikpro' => $currentLanguage == 'de' ? 0 : 1,
+ 'subscribe_newsletter_professionalservices' => $currentLanguage == 'de' ? 0 : 1,
)));
}
}
diff --git a/plugins/Installation/Installation.php b/plugins/Installation/Installation.php
index 46e6122f6a..023723c3b3 100644
--- a/plugins/Installation/Installation.php
+++ b/plugins/Installation/Installation.php
@@ -105,7 +105,7 @@ class Installation extends \Piwik\Plugin
if ($this->isAllowedAction($action)) {
echo FrontController::getInstance()->dispatch('Installation', $action, array($message));
} else {
- Piwik::exitWithErrorMessage(Piwik::translate('Installation_NoConfigFound'));
+ Piwik::exitWithErrorMessage($this->getMessageToInviteUserToInstallPiwik($message));
}
exit;
@@ -127,4 +127,22 @@ class Installation extends \Piwik\Plugin
return in_array($action, array_keys($controller->getInstallationSteps()))
|| $isActionWhiteListed;
}
+
+ /**
+ * @param $message
+ * @return string
+ */
+ private function getMessageToInviteUserToInstallPiwik($message)
+ {
+ $messageWhenPiwikSeemsNotInstalled =
+ $message .
+ "\n<br/>" .
+ Piwik::translate('Installation_NoConfigFileFound') .
+ "<br/><b>» " .
+ Piwik::translate('Installation_YouMayInstallPiwikNow', array("<a href='index.php'>", "</a></b>")) .
+ "<br/><small>" .
+ Piwik::translate('Installation_IfPiwikInstalledBeforeTablesCanBeKept') .
+ "</small>";
+ return $messageWhenPiwikSeemsNotInstalled;
+ }
}
diff --git a/plugins/Installation/ServerFilesGenerator.php b/plugins/Installation/ServerFilesGenerator.php
index c3c56f9a3c..19b7d8e903 100644
--- a/plugins/Installation/ServerFilesGenerator.php
+++ b/plugins/Installation/ServerFilesGenerator.php
@@ -13,6 +13,17 @@ use Piwik\SettingsServer;
class ServerFilesGenerator
{
+ public static function createFilesForSecurity()
+ {
+ self::deleteHtAccessFiles();
+ self::createHtAccessFiles();
+
+ self::deleteWebConfigFiles();
+ self::createWebConfigFiles();
+
+ self::createWebRootFiles();
+ }
+
/**
* Generate Apache .htaccess files to restrict access
* .htaccess files are created on all webservers even Nginx, as sometimes Nginx knows how to handle .htaccess files
@@ -64,11 +75,6 @@ class ServerFilesGenerator
}
}
- public static function createHtAccessDenyAll($path)
- {
- self::createHtAccess($path, $overwrite = false, self::getDenyAllHtaccessContent());
- }
-
/**
* Create .htaccess file in specified directory
*
@@ -83,6 +89,8 @@ class ServerFilesGenerator
protected static function createHtAccess($path, $overwrite = true, $content)
{
$file = $path . '/.htaccess';
+
+ $content = "# This file is auto generated by Piwik, do not edit directly\n# Please report any issue or improvement directly to the Piwik team.\n\n" . $content;
if ($overwrite || !file_exists($file)) {
@file_put_contents($file, $content);
}
@@ -93,7 +101,7 @@ class ServerFilesGenerator
*
* Note: for IIS 7 and above
*/
- public static function createWebConfigFiles()
+ protected static function createWebConfigFiles()
{
if (!SettingsServer::isIIS()) {
return;
@@ -183,7 +191,10 @@ class ServerFilesGenerator
'/favicon.ico',
);
foreach ($filesToCreate as $file) {
- @file_put_contents(PIWIK_DOCUMENT_ROOT . $file, '');
+ $path = PIWIK_DOCUMENT_ROOT . $file;
+ if(!file_exists($path)) {
+ @file_put_contents($path, '');
+ }
}
}
diff --git a/plugins/Installation/lang/am.json b/plugins/Installation/lang/am.json
index d99c074673..7cef031340 100644
--- a/plugins/Installation/lang/am.json
+++ b/plugins/Installation/lang/am.json
@@ -6,7 +6,6 @@
"GoBackAndDefinePrefix": "ወደኋላ ተመለስና ለፒዊክ ሰንጠረዦቹ ቅድም ቅጥያውን በይን",
"Installation": "መጫኛ",
"InstallationStatus": "የመጫኛ ሁኔታ",
- "NoConfigFound": "የፒዊክ ውቅረት ፋይል ሊገኝ አልቻለም እና እርስዎ የፒዊክ ገፅ ለመድረስ እየሞከሩ ነው። <br \/><b>  » እርስዎ <a href='index.php'>ፒዊክን አሁን መጫን ይችላሉ<\/a><\/b><br \/><small>ፒዊክን ከዚህ ቀደም ጭነው ከነበረ እና በዲቢዎ ላይ የተወሰኑ ሰንጠረዦች ካለዎ የነበሩትን ሰንጠረዦች ደግመው መጠቀምና የነበረዎትን ውሂብ ማስቀመጥ ይችላሉ!<\/small>",
"PasswordDoNotMatch": "የይለፍ ቃሉ አቻ አይደለም",
"PercentDone": "%s %% አልቋል",
"SetupWebsite": "ድር ጣቢያ ጫን",
diff --git a/plugins/Installation/lang/ar.json b/plugins/Installation/lang/ar.json
index 301db9879a..b62e05e02d 100644
--- a/plugins/Installation/lang/ar.json
+++ b/plugins/Installation/lang/ar.json
@@ -36,14 +36,11 @@
"NfsFilesystemWarning": "الخادم لديك يستخدم نظام ملفات NFS .",
"NfsFilesystemWarningSuffixAdmin": "هذا يعني أن Piwik سيكون بطيئاً جداً عند استخدام جلسات قائمة على الملفات.",
"NfsFilesystemWarningSuffixInstall": "استخدام الجلسات القائمة على الملفات في بيئة NFS شيئ بطيئ جداً ، ولهذا سيستخدم Piwik جلسات قواعد البيانات. قد تحتاج زيادة العدد الأقصى لاتصالات المستفيدين بخادم قاعدة البيانات إذا كان لديك العديد من مستخدمي لوحات المعلومات المتزامنين.",
- "NoConfigFound": "لم يمكن العثور على ملف إعدادات Piwik، وأنت تحاول الوصول لأحد صفحات Piwik. <br \/><b> يمكنك <a href='index.php'>تثبيت Piwik الآن<\/a><\/b><br \/><small> إذا كنت قد ثبته مسبقاً ولديك بعض الجداول في قاعدة البيانات. ولا داعي للقلق، فيمكنك إعادة استخدام الجداول القديمة والاحتفاظ ببياناتك القديمة!<\/small>",
"Optional": "اختياري",
"Password": "كلمة المرور",
"PasswordDoNotMatch": "كلمة المرور غير متطابقة",
"PasswordRepeat": "كلمة المرور(كرّرها)",
"PercentDone": "تم تنفيذ %s %%",
- "PiwikProAdTitle": "تحليلات وخدمات متقدمة",
- "PiwikProAdText": "أضف أعلى الإمكانات وأطلق عنان %1$sPiwik PRO On-Premises%2$s أو احصل على بيويك خاص بك دون عناء باستضافة سحابية على %3$sPiwik PRO Cloud%4$s .",
"PleaseFixTheFollowingErrors": "الرجاء إصلاح الأخطاء التالية",
"DefaultSettings": "إعدادات Piwik الافتراضية",
"DefaultSettingsHelp": "يأتي Piwik بإعدادات افتراضية. يمكنك تخصيصها الآن أو فعل ذلك لاحقاً في شاشة الإدارة.",
@@ -51,7 +48,6 @@
"RestartWebServer": "أعد تشغيل خادم الويب لديك بعد القيام بهذا التغيير.",
"ReusingTables": "إعادة استخدام الجداول",
"PiwikOrgNewsletter": "أرسل لي بريداً بآخر تحديثات مجتمع Piwik",
- "PiwikProNewsletter": "أرسل لي معلومات عن خدمات وعروض %1$sPiwik PRO%2$s",
"SeeBelowForMoreInfo": "أنظر أدناه لمزيد من المعلومات.",
"SetupWebsite": "إعداد موقع ويب",
"SetupWebsiteError": "حدث خطأ ما أثناء إضافة الموقع",
diff --git a/plugins/Installation/lang/be.json b/plugins/Installation/lang/be.json
index 6172c51b2e..53a73b88ea 100644
--- a/plugins/Installation/lang/be.json
+++ b/plugins/Installation/lang/be.json
@@ -19,7 +19,6 @@
"InstallationStatus": "Статут усталёўкі",
"LargePiwikInstances": "Дапамога для буйных усталёвак Piwik",
"Legend": "Легенда",
- "NoConfigFound": "Канфігурацыйны файл Piwik не можа быць знойдзены, аднак вы спрабуеце зайсці ў сістэму.<br \/><b>  » Вы можаце <a href='index.php'>усталяваць Piwik цяпер<\/a><\/b><br \/><small>. Калі Piwik ужо быў усталяваны і вы маеце дадзеныя ў БД, вы можаце выкарыстоўваць іх.<\/small>",
"Optional": "Апцыянальна",
"PasswordDoNotMatch": "пароль не супадае",
"PercentDone": "%s %% Завершана",
diff --git a/plugins/Installation/lang/bg.json b/plugins/Installation/lang/bg.json
index 32682099ec..4e93b6a1c6 100644
--- a/plugins/Installation/lang/bg.json
+++ b/plugins/Installation/lang/bg.json
@@ -30,7 +30,6 @@
"LoadDataInfileRecommended": "Ако Piwik събира статистика за сайтове с голям брой посещения (пример: > 100 000 страници на месец), препоръчваме да се опитате да оправите този проблем.",
"NfsFilesystemWarning": "Вашият сървър ползва NFS файлова система.",
"NfsFilesystemWarningSuffixAdmin": "Това означава, че Piwik ще бъде изключително бавен, когато използвате файлови базирани сесии.",
- "NoConfigFound": "Piwik конфигурационният файл не е открит.<br \/><b>  » Можете да <a href='index.php'>инсталирате Piwik сега<\/a><\/b><br \/><small>Ако преди това сте инсталирали Piwik и имате в базата от данни (БД) таблици - можете да запазите Вашите данни!<\/small>",
"Optional": "По избор",
"PasswordDoNotMatch": "паролата не съвпада",
"PercentDone": "%s %% развитие",
diff --git a/plugins/Installation/lang/ca.json b/plugins/Installation/lang/ca.json
index ae0d478900..c5f91612b5 100644
--- a/plugins/Installation/lang/ca.json
+++ b/plugins/Installation/lang/ca.json
@@ -27,7 +27,6 @@
"NfsFilesystemWarning": "El vostre servidor està utiltizant un sistema de fitxers NFS.",
"NfsFilesystemWarningSuffixAdmin": "Això vol dir que el Piwik serà extremadament lent quan utilitzi les sessions basades en fitxers.",
"NfsFilesystemWarningSuffixInstall": "Utilitzar sessions basades en fitxers amb NFS es extremadament lent, per això Piwik utilizarà les sessions de bases de dades. Si teniu molt usuaris concurrents, potser haureu d'incrementar el nombre de conexions concurrens al servidor de bases de dades.",
- "NoConfigFound": "No s'ha trobat el fitxer de configuració del Piwik i esteu intentant accedir una pàgina del Piwik.<br \/><strong>  »Podeu <a href='index.php'>instal·lar el Piwik ara<\/a><\/strong>.<br \/><small>Si heu instal·lat el Piwik abans i teniu algunes taules a la vostra base de dades, no us amoïneu; podeu continuar fent servir les mateixes taules i les dades existents es conservaran!<\/small>",
"Optional": "Opcional",
"PasswordDoNotMatch": "Les contrasenyes no coincideixen",
"PercentDone": "%s%% fet",
diff --git a/plugins/Installation/lang/cs.json b/plugins/Installation/lang/cs.json
index c7e657835d..70abe1a1b8 100644
--- a/plugins/Installation/lang/cs.json
+++ b/plugins/Installation/lang/cs.json
@@ -36,14 +36,15 @@
"NfsFilesystemWarning": "Váš server používá souborový systém NFS.",
"NfsFilesystemWarningSuffixAdmin": "To znamená, že Piwik bude při použití sessions založených na souborech velmi pomalý.",
"NfsFilesystemWarningSuffixInstall": "Sessions založené na souborech jsou na NFS velmi pomalé. Proto Piwik použije databázové sessions. Pokud bude k nástěnkám přistupovat současně hodně uživatelů, možná budete muset zvýšit maximální počet klientských databázových spojení v konfiguraci databázového serveru.",
- "NoConfigFound": "Konfigurační soubor Piwiku nebyl nalezen a snažíte se vstoupit na stránku Piwiku.<br \/><b> » Můžete <a href='index.php'>teď nainstalovat<\/a><\/b><br \/><small>Pokud jste Piwik již instalovali a máte v DB nějaké tabulky, nemějte obavy. Můžete je použít a zachovat jejich data.!<\/small>",
+ "NoConfigFileFound": "Konfigurační soubor pro Piwik nebyl nalezen a vy se snažíte otevřít stránku aplikace Piwik.",
+ "YouMayInstallPiwikNow": "Můžete %1$snyní nainstalovat Piwik%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Pokud jste Piwik nainstalovali již dříve a máte tabulky v databázi, nemějte strach, budete moci tyto tabulky dále používat a pracovat s existujícími daty!",
"Optional": "Volitelné",
"Password": "Heslo",
"PasswordDoNotMatch": "hesla si neodpovídají",
"PasswordRepeat": "Heslo (zopakujte)",
"PercentDone": "%s %% hotovo",
- "PiwikProAdTitle": "Pokročilé analýzy a služby",
- "PiwikProAdText": "Pořiďte si nadstandartní možnosti a odkryjte plnou sílu s %1$sPiwik PRO On-Premises%2$s, nebo si objednejte Piwik hostovaný bez starostí v %3$sPiwik PRO Cloud%4$s.",
+ "ProfessionalServicesAdTitle": "Pokročilá analytika & služby",
"PleaseFixTheFollowingErrors": "Prosím opravte následující chyby",
"DefaultSettings": "Výchozí nastavení Piwiku",
"DefaultSettingsHelp": "Piwik má výchozí nastavení. Můžete je změnit teď, nebo později z administračního rozhraní.",
@@ -51,7 +52,6 @@
"RestartWebServer": "Po uložení změn restartujte Vás web server.",
"ReusingTables": "Použití existujících tabulek",
"PiwikOrgNewsletter": "odesílat e-maily s důležitými událostmi v komunitě Piwiku",
- "PiwikProNewsletter": "Zasílejte mi informace o službách a nabídkách %1$sPiwik pro%2$s",
"SeeBelowForMoreInfo": "Pro více informací se podívejte níže.",
"SetupWebsite": "Nastavit Web",
"SetupWebsiteError": "Při přidávání Webu se vyskytla chyba",
diff --git a/plugins/Installation/lang/da.json b/plugins/Installation/lang/da.json
index a06a4585c8..fc8ce6e1e8 100644
--- a/plugins/Installation/lang/da.json
+++ b/plugins/Installation/lang/da.json
@@ -15,6 +15,7 @@
"DatabaseSetupLogin": "Brugernavn",
"DatabaseSetupServer": "Databaseserver",
"DatabaseSetupTablePrefix": "Tabel præfiks",
+ "Email": "E-mail",
"Extension": "udvidelse",
"Filesystem": "Filsystem",
"GetInvolved": "Hvis du kan lide hvad du ser, kan du %1$sblive involveret%2$s.",
@@ -34,9 +35,10 @@
"NfsFilesystemWarning": "Din server benytter et NFS filsystem.",
"NfsFilesystemWarningSuffixAdmin": "Det betyder at Piwik vil være ekstremt langsom når der benyttes filbaserede sessioner.",
"NfsFilesystemWarningSuffixInstall": "Brug af filbaserede sessioner på et NFS filsystem er ekstrem langsomt, så Piwik vil benytte database sessioner. Hvis du har mange samtidige kontrolpanelsbrugere, vil du muligvis være nødt til at hæve det maksimale antal af klient forbindelser til database serveren.",
- "NoConfigFound": "Piwik-konfigurationsfil blev ikke fundet og du prøver at få adgang til Piwik. <ul><li>Du kan <a href='index.php'>installere Piwik nu<\/a><\/b><small> Hvis du har installeret Piwik tidligere og har nogle tabeller i databasen, kan du genbruge tabellerne og holde dine eksisterende data!<\/small>",
"Optional": "Valgfri",
+ "Password": "Password",
"PasswordDoNotMatch": "adgangskoder stemmer ikke overens",
+ "PasswordRepeat": "Password (gentag)",
"PercentDone": "%s %% udført",
"PleaseFixTheFollowingErrors": "Ret følgende fejl",
"DefaultSettings": "Piwik standardindstillinger",
@@ -45,19 +47,22 @@
"RestartWebServer": "Efter ændringen er have foretaget - genstart webserveren.",
"ReusingTables": "Genbrug tabellerne",
"PiwikOrgNewsletter": "e-mail mig de vigtigste Piwik community opdateringer",
- "PiwikProNewsletter": "send mig information om %1$sPiwik PRO%2$s tjenester og tilbud",
"SeeBelowForMoreInfo": "Se nedenfor for mere information.",
"SetupWebsite": "Tilføj en hjemmeside",
"SetupWebsiteError": "Fejl ved tilføjelse af hjemmeside",
+ "SetupWebSiteName": "Website navn",
"SetupWebsiteSetupSuccess": "Hjemmeside %s oprettet!",
+ "SetupWebSiteURL": "Website URL",
"SiteSetup": "Opsæt den første hjemmeside, som du vil spore og analysere med Piwik:",
"SiteSetupFootnote": "Bemærk: når Piwik installationen er færdig, vil du have mulighed for at tilføje flere hjemmesider som du vil spore!",
"SuperUser": "Superbruger",
+ "SuperUserLogin": "Super user login",
"SuperUserSetupError": "Der opstod en fejl ved tilføjelse af superbruger",
"SuperUserSetupSuccess": "Superbruger oprettet.",
"SystemCheck": "Systemcheck",
"SystemCheckAutoUpdateHelp": "Note: Piwik's ét klik opdatering kræver skrive-tilladelser til Piwik mappen og dens indhold.",
"SystemCheckCreateFunctionHelp": "Piwik bruger anonyme funktioner til tilbagekald.",
+ "SystemCheckDatabaseExtensions": "MySQL udvidelser",
"SystemCheckDatabaseHelp": "Piwik behøver enten mysqli udvidelsen eller både PDO og pdo_mysql udvidelserne.",
"SystemCheckDebugBacktraceHelp": "View:: factory kan ikke oprette visninger for det modul.",
"SystemCheckError": "En fejl opstod - skal rettes før der fortsættes",
@@ -65,6 +70,7 @@
"SystemCheckExtensions": "Andre nødvendige udvidelser",
"SystemCheckFileIntegrity": "Filintegritet",
"SystemCheckFunctions": "Nødvendige funktioner",
+ "SystemCheckFunctionHelp": "Du skal aktivere denne indbyggede funktion.",
"SystemCheckGDFreeType": "GD > 2.x + Freetype (grafik)",
"SystemCheckGDHelp": "Mindre grafiske elementer (i Piwik Mobile app og e-mail-rapporter) vil ikke fungere som ønsket.",
"SystemCheckGlobHelp": "Den indbyggede funktion er blevet deaktiveret på din vært. Piwik vil forsøge at efterligne funktionen, men kan støde yderligere sikkerhedsrestriktioner. Funktionaliteten kan blive påvirket.",
@@ -95,6 +101,7 @@
"SystemCheckSummaryThereWereWarnings": "Der er nogle problemer med dit system. Piwik vil virke, men du kan opleve nogle mindre problemer.",
"SystemCheckTimeLimitHelp": "På en stærkt trafikeret hjemmeside, kan arkiveringsprocessen kræve mere tid end der tilladt.<br \/>Se på max_execution_time i php.ini filen hvis nødvendig.",
"SystemCheckTracker": "Sporingsstatus",
+ "SystemCheckTrackerHelp": "GET request til piwik.php fejlede. Prøv at hvidliste dette URL fra HTTP Authentication og deaktiver mod_secure (du skal nok spørge dit hostingfirma). For mere info om fejlen kan du læse web serverens log-fil.",
"SystemCheckWarnDomHelp": "Aktiver \"Dom\" udvidelsen (f.eks. installere \"php-dom\"og\/eller \"php-xml-pakken\").",
"SystemCheckWarning": "Piwik vil virke normalt, men nogle funktioner vil måske mangle",
"SystemCheckWarnJsonHelp": "Aktiver \"JSON\" udvidelsen (f.eks. installere \"php-JSON\" pakken) for bedre ydeevne.",
@@ -107,6 +114,8 @@
"SystemCheckCronArchiveProcess": "Arkiv Cron",
"SystemCheckCronArchiveProcessCLI": "Håndtering af processer via kommandolinie",
"SystemCheckPhpSetting": "For at undgå nogle kritiske punkter, skal følgende indstilles i php.ini filen: %s",
+ "SystemCheckUpdateHttps": "Opdater over HTTPS",
+ "SystemCheckUpdateHttpsNotSupported": "Piwik kan ikke bruge HTTPS til at opdatere, så den falder tilbage til HTTP opdatering. Tjek at CURL eller allow_url_fopen understøttes og at openssl PHP udvidelsen er installeret: http:\/\/piwik.org\/faq\/troubleshooting\/faq_177\/.",
"NotSupported": "Ikke supporteret",
"Tables": "Opretter tabeller",
"TablesCreatedSuccess": "Tabellerne blev oprettet!",
@@ -117,6 +126,7 @@
"TablesUpdatedSuccess": "Databasen er opdateret fra %1$s til %2$s!",
"TablesWarningHelp": "Vælg enten at genbruge de eksisterende tabeller eller vælg en ren installation for at slette alle eksisterende data.",
"TablesWithSameNamesFound": "Nogle %1$s tabeller i databasen %2$s har samme navn, som dem Piwik prøver at oprette",
+ "Timezone": "Websites tidszone",
"WeHopeYouWillEnjoyPiwik": "Vi håber du vil nyde at bruge Piwik så meget, som vi nyder at lave det.",
"Welcome": "Velkommen!",
"WelcomeHelp": "<p>Piwik er et Open Source statistik-program som gør det nemt at finde information om besøgende.<\/p><p> Processen er delt op i %s lette trin og vil tage ca. 5 minutter.<\/p>",
diff --git a/plugins/Installation/lang/de.json b/plugins/Installation/lang/de.json
index d46012b93e..28050912eb 100644
--- a/plugins/Installation/lang/de.json
+++ b/plugins/Installation/lang/de.json
@@ -35,13 +35,18 @@
"LoadDataInfileUnavailableHelp": "Die Benutzung von %1$s erhöht die Geschwindigkeit des Piwik Archivierungsprozesses erheblich. Um dies für Piwik verfügbar zu machen setzen Sie bitte eine neuere PHP & MySQL Software ein und stellen Sie sicher, dass der gewählte Datenbankbenutzer das %2$s Recht besitzt.",
"NfsFilesystemWarning": "Ihr Server nutzt ein NFS Dateisystem",
"NfsFilesystemWarningSuffixAdmin": "Dies bedeutet, dass Piwik extrem langsam arbeitet wenn Dateibasierte Sessions genutzt werden.",
- "NfsFilesystemWarningSuffixInstall": "Die Benutzung von dateibasierten Sessions auf NFS ist extrem langsam, deshalb wird Piwik datenbankbasierte Sessions nutzen. Falls es viele gleichzeitige Zugriffe auf das Dashboard gibt sollten Sie möglicherweise die maximal erlaubten Client-Zugriffe auf den Datenbankserver erhöhen.",
- "NoConfigFound": "Die Piwik-Konfigurationsdatei konnte nicht gefunden werden und es wird versucht, eine Piwik-Seite aufzurufen.<br \/><b>  » Sie können <a href='index.php'>Piwik jetzt installieren<\/a><\/b><br \/><small>Wenn Sie Piwik zuvor schon installiert haben und noch Tabellen in der Datenbank vorhanden sind: Keine Angst, Sie können diese Tabellen und die enthaltenen Daten weiterhin verwenden!<\/small>",
+ "NfsFilesystemWarningSuffixInstall": "Die Benutzung von dateibasierten Sessions auf NFS ist extrem langsam, deshalb wird Piwik datenbankbasierte Sessions nutzen. Falls es viele gleichzeitige Zugriffe auf das Dashboard gibt, sollten Sie möglicherweise die maximal erlaubten Client-Zugriffe auf den Datenbankserver erhöhen.",
+ "NoConfigFileFound": "Sie versuchen gerade auf eine Piwik-Seite zuzugreifen, die Konfigurationsdatei von Piwik konnte jedoch nicht gefunden werden.",
+ "YouMayInstallPiwikNow": "Sie können %1$sPiwik jetzt installieren%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Wenn Sie Piwik zuvor schon installiert haben und noch Tabellen in der Datenbank vorhanden sind: Keine Angst, Sie können diese Tabellen und die enthaltenen Daten weiterhin verwenden!",
"Optional": "Optional",
"Password": "Passwort",
"PasswordDoNotMatch": "Passwörter stimmen nicht überein",
"PasswordRepeat": "Passwort (wiederholen)",
"PercentDone": "%s %% Fertig",
+ "ProfessionalServicesAdTitle": "Erweiterte Analysen & Service",
+ "ProfessionalServicesfessionalServicesAdText": "Unser Expertennetzwerk hilft Ihrer Organisation die volle Kraft hinter Piwik analytics freizusetzen.",
+ "ProfessionalServicesfessionalDiscoverHow": "Erfahren Sie mehr über %1$szusätzliche Produkte und Dienstleistungen%2$s für Piwik und wie Sie Ihre Konversionen und Einnahmen steigern können.",
"PleaseFixTheFollowingErrors": "Bitte beheben Sie die folgenden Fehler",
"DefaultSettings": "Standard Piwik Einstellungen",
"DefaultSettingsHelp": "Piwik ist mit Standardeinstellungen vorkonfiguriert. Sie können diese nun personalisieren oder dies später im Adminbereich nachholen.",
@@ -49,7 +54,7 @@
"RestartWebServer": "Nach dieser Änderung müssen Sie den Webserver neu starten.",
"ReusingTables": "Tabellen werden wiederverwendet",
"PiwikOrgNewsletter": "Wichtige Piwik Community Updates per Mail zukommen lassen",
- "PiwikProNewsletter": "Lassen Sie mir Informationen über %1$sPiwik PRO%2$s Dienstleistungen und Angebote zukommen.",
+ "ProfessionalServicesNewsletter": "Lassen Sie mir Informationen über %1$sProfessional Dienstleistungen und Produkte%2$s für Piwik zukommen.",
"SeeBelowForMoreInfo": "Unterhalb können Sie weitere Informationen finden.",
"SetupWebsite": "Website hinzufügen",
"SetupWebsiteError": "Beim Hinzufügen der Website ist ein Fehler aufgetreten",
diff --git a/plugins/Installation/lang/el.json b/plugins/Installation/lang/el.json
index a2c6a6e5c5..95aa300268 100644
--- a/plugins/Installation/lang/el.json
+++ b/plugins/Installation/lang/el.json
@@ -36,14 +36,17 @@
"NfsFilesystemWarning": "Ο διακομιστής σας χρησιμοποιεί ένα σύστημα αρχείων NFS.",
"NfsFilesystemWarningSuffixAdmin": "Αυτό σημαίνει ότι το Piwik θα είναι εξαιρετικά αργό, όταν χρησιμοποιεί το αρχείο συνεδρίες σε αρχεία (file based sessions).",
"NfsFilesystemWarningSuffixInstall": "Οι συνεδρίες αρχείων (file based sessions) στο NFS είναι εξαιρετικά αργές, έτσι το Piwik θα χρησιμοποιήσει συνεδρίες με βάση δεδομένων. Εάν έχετε πολλούς ταυτόχρονους χρήστες, μπορεί να χρειαστεί να αυξήσετε τον μέγιστο αριθμό συνδέσεων προς τον εξυπηρετητή της βάσης δεδομένων.",
- "NoConfigFound": "Το αρχείο ρυθμίσεων του Piwik δεν βρέθηκε και προσπαθείτε να ανοίξετε μια σελίδα Piwik.<br \/><b>  » Μπορείτε να <a href=\"index.php\">εγκαταστήσετε το Piwik τώρα<\/a><\/b><br \/><small>αν έχετε εγκαταστήσει το Piwik προηγούμενα και έχετε κάποιους πίνακες στη βάση δεδομένων σας, μην ανησυχείτε, μπορείτε να χρησιμοποιήσετε ξανά τους ίδιους πίνακες και να διατηρήσετε τα υπάρχοντα δεδομένα σας!<\/small>",
+ "NoConfigFileFound": "Δεν ήταν δυνατή η εύρεση του αρχείου ρυθμίσεων του Piwik και προσπαθείτε να προσπελάσετε μια σελίδα του.",
+ "YouMayInstallPiwikNow": "Μπορείτε να %1$sεγκαταστήσετε το Piwik τώρα%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Αν εγκαταστήσατε το Piwik παλιότερα και υπάρχουν κάποιοι πίνακες στη βάση σας, μην ανησυχείτε, μπορείτε να χρησιμοποιήσετε πάλι τους ίδιους πίνακες και να διατηρήσετε τα υπάρχοντα δεδομένα σας!",
"Optional": "Προαιρετικά",
"Password": "Συνθηματικό",
"PasswordDoNotMatch": "ο κωδικός δεν ταιριάζει",
"PasswordRepeat": "Συνθηματικό (επιβεβαίωση)",
"PercentDone": "%s %% Ολοκληρώθηκε",
- "PiwikProAdTitle": "Αναλυτικά & Υπηρεσίες για Προχωρημένους",
- "PiwikProAdText": "Προσθέστε επιπλέον λειτουργικότητα και ξεκλειδώστε την πλήρη δύναμη με το %1$sPiwik PRO On-Premises%2$s, ή αποκτήστε το δικό σας Piwik φιλοξενούμενο σε εξωτερική υποδομή με το %3$sPiwik PRO Cloud%4$s.",
+ "ProfessionalServicesAdTitle": "Προχωρημένα Αναλυτικά & Υπηρεσίες",
+ "ProfessionalServicesfessionalServicesAdText": "Το δίκτυο των ειδικών μας μπορεί να βοηθήσει τον οργανισμό σας να ξεκλειδώσει την πλήρη δύναμη των αναλυτικών Piwik.",
+ "ProfessionalServicesfessionalDiscoverHow": "Δείτε περισσότερα σχετικά με %1$sπρόσθετα προϊόντα και υπηρεσίες%2$s για το Piwik και πως μπορείτε να αυξήσετε τις μετατροπές και τα κέρδη σας.",
"PleaseFixTheFollowingErrors": "Διορθώστε τα ακόλουθα σφάλματα",
"DefaultSettings": "Προκαθορισμένες ρυθμίσεις του Piwik",
"DefaultSettingsHelp": "Το Piwik έρχεται με προκαθορισμένες ρυθμίσεις. Μπορείτε να τις αλλάξετε τώρα ή αργότερα στην οθόνη διαχείρισης.",
@@ -51,7 +54,7 @@
"RestartWebServer": "Μετά από αυτή την αλλαγή, επανεκκινήστε τον διακομιστή σας.",
"ReusingTables": "Γίνεται χρήση των Πινάκων",
"PiwikOrgNewsletter": "στείλε μου e-mail για μεγάλες ενημερώσεις της κοινοτικής έκδοσης του Piwik",
- "PiwikProNewsletter": "στείλε μου πληροφορίες σχετικά με τις υπηρεσίες του %1$sPiwik PRO%2$s και τις προσφορές του",
+ "ProfessionalServicesNewsletter": "να μου σταλούν πληροφορίες σχετικά με %1$sΥπηρεσίες και προϊόντα επαγγελματικού επιπέδου%2$s για το Piwik",
"SeeBelowForMoreInfo": "Δείτε παρακάτω για περισσότερες πληροφορίες.",
"SetupWebsite": "Ρύθμιση μιας ιστοσελίδας",
"SetupWebsiteError": "Συνέβη ένα σφάλμα κατά της προσθήκη της ιστοσελίδας",
diff --git a/plugins/Installation/lang/en.json b/plugins/Installation/lang/en.json
index d4b2707162..6e13414628 100644
--- a/plugins/Installation/lang/en.json
+++ b/plugins/Installation/lang/en.json
@@ -36,14 +36,17 @@
"NfsFilesystemWarning": "Your server is using an NFS filesystem.",
"NfsFilesystemWarningSuffixAdmin": "This means Piwik will be extremely slow when using file based sessions.",
"NfsFilesystemWarningSuffixInstall": "Using file based sessions on NFS is extremely slow, so Piwik will use database sessions. If you have many concurrent dashboard users, you may need to increase the maximum number of client connections to the database server.",
- "NoConfigFound": "The Piwik configuration file couldn't be found and you are trying to access a Piwik page.<br \/><b>  » You can <a href='index.php'>install Piwik now<\/a><\/b><br \/><small>If you installed Piwik before and have some tables in your DB, don't worry, you can reuse the same tables and keep your existing data!<\/small>",
+ "NoConfigFileFound": "The Piwik configuration file couldn't be found and you are trying to access a Piwik page.",
+ "YouMayInstallPiwikNow": "You may %1$sinstall Piwik now%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "If you installed Piwik before and have some tables in your DB, don't worry, you can reuse the same tables and keep your existing data!",
"Optional": "Optional",
"Password": "Password",
"PasswordDoNotMatch": "password do not match",
"PasswordRepeat": "Password (repeat)",
"PercentDone": "%s %% Done",
- "PiwikProAdTitle": "Advanced Analytics & Services",
- "PiwikProAdText": "Add premium functionality and unlock the full power with %1$sPiwik PRO On-Premises%2$s, or get your own hassle-free Piwik hosted in the %3$sPiwik PRO Cloud%4$s.",
+ "ProfessionalServicesAdTitle": "Advanced Analytics & Services",
+ "ProfessionalServicesfessionalServicesAdText": "Our network of experts can help your organization unlock the full power of Piwik analytics. ",
+ "ProfessionalServicesfessionalDiscoverHow": "Learn about %1$sadditional products and services%2$s for Piwik and how to increase your conversions and revenue.",
"PleaseFixTheFollowingErrors": "Please fix the following errors",
"DefaultSettings": "Default Piwik settings",
"DefaultSettingsHelp": "Piwik comes with default settings. You can customize them now or do so later in the admin screen.",
@@ -51,7 +54,7 @@
"RestartWebServer": "After making this change, restart your web server.",
"ReusingTables": "Reusing the Tables",
"PiwikOrgNewsletter": "email me with major Piwik community updates",
- "PiwikProNewsletter": "send me information on %1$sPiwik PRO%2$s services and offers",
+ "ProfessionalServicesNewsletter": "send me information on %1$sProfessional services and products%2$s for Piwik",
"SeeBelowForMoreInfo": "See below for more information.",
"SetupWebsite": "Setup a Website",
"SetupWebsiteError": "There was an error when adding the website",
diff --git a/plugins/Installation/lang/es.json b/plugins/Installation/lang/es.json
index 58ad29cbea..997665001c 100644
--- a/plugins/Installation/lang/es.json
+++ b/plugins/Installation/lang/es.json
@@ -36,12 +36,17 @@
"NfsFilesystemWarning": "Su servidor está utilizando un sistema de archivos NFS.",
"NfsFilesystemWarningSuffixAdmin": "Esto significa que Piwik será extremadamente lento cuando se utilice sesiones basadas en archivos.",
"NfsFilesystemWarningSuffixInstall": "Utilizando sesiones basadas en archivos sobre NFS es extremadamente lento, por lo tanto Piwik utilizará sesiones basada en base de datos. Si tiene varios usuarios de tableros, puede que necesite incrementar el número máximo de conexiones de clientes al servidor de la base de datos.",
- "NoConfigFound": "El archivo de configuración de Piwik no se ha encontrado y está intentando acceder a una página de Piwik.<br \/><b>  » Puede <a href='index.php'>instalar Piwik ahora<\/a><\/b><br \/><small>¡Si ha instalado Piwik antes y tiene algunas tablas en su base de datos, no se preocupe, puede reutilizar las mismas tablas y mantener sus datos existentes!<\/small>",
+ "NoConfigFileFound": "El archivo de configuración de Piwik no pudo ser encontrado y está intentando acceder a la página de Piwik.",
+ "YouMayInstallPiwikNow": "Ahora puede %1$sinstalar Piwik%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Si ha instalado Piwik anteriormente y posee algunas tlas en su base de datos, no se preocupe, puede reusarlas y mantenerlas!",
"Optional": "Opcional",
"Password": "Contraseña",
"PasswordDoNotMatch": "contraseña no coincide",
"PasswordRepeat": "Contraseña (repetir)",
"PercentDone": "%s %% Hecho",
+ "ProfessionalServicesAdTitle": "Analíticas avanzadas y Servicios",
+ "ProfessionalServicesfessionalServicesAdText": "Nuestra red de expertos puede ayudar a su organización a liberar todo el potencial de las analíticas ofrecidas por Piwik.",
+ "ProfessionalServicesfessionalDiscoverHow": "Conozca más acerca de los %1$sproductos y servicios adicionales%2$s de Piwik y como incrementar sus conversiones e ingresos.",
"PleaseFixTheFollowingErrors": "Por favor solucione los siguientes errores",
"DefaultSettings": "Ajustes predeterminados Piwik",
"DefaultSettingsHelp": "Piwik ya incluye ajustes predeterminados. Puede personalizarlos ahora o llevarlos a cabo posteriormente en la pantalla de administración.",
@@ -49,7 +54,7 @@
"RestartWebServer": "Luego de realizar este cambio, reinicie su servidor de internet.",
"ReusingTables": "Reutilizando las Tablas",
"PiwikOrgNewsletter": "Enviarme un correo electrónico con las principales actualizaciones de la comunidad Piwik",
- "PiwikProNewsletter": "enviarme información sobre los servicios y ofertas de %1$sPiwik PRO%2$s",
+ "ProfessionalServicesNewsletter": "enviarme información sobre los servicios %1$sProfesional y productos%2$s de Piwik",
"SeeBelowForMoreInfo": "Véase más adelante para mayor información.",
"SetupWebsite": "Configurar un sitio de internet",
"SetupWebsiteError": "Se ha producido un error al añadir el sitio de internet",
@@ -73,6 +78,7 @@
"SystemCheckExtensions": "Otras extensiones requeridas",
"SystemCheckFileIntegrity": "Integridad de archivos",
"SystemCheckFunctions": "Funciones requeridas",
+ "SystemCheckFunctionHelp": "Necesita habilitar esta función incorporada.",
"SystemCheckGDFreeType": "GD > 2.x + Freetype (gráfica)",
"SystemCheckGDHelp": "Los minigráficos e imágenes de gráficos (en la aplicación móvil de Piwik y en los informes por correo electrónico) no funcionarán.",
"SystemCheckGlobHelp": "Esta función integrada se ha desactivado en su host. Piwik intentará emular esta función, pero puede encontrarse con restricciones de seguridad. La funcionalidad puede verse afectada.",
diff --git a/plugins/Installation/lang/et.json b/plugins/Installation/lang/et.json
index a56313263b..ad3ef6ee84 100644
--- a/plugins/Installation/lang/et.json
+++ b/plugins/Installation/lang/et.json
@@ -26,7 +26,6 @@
"LoadDataInfileRecommended": "Kui sinu Piwiku server kogub andmeid kõrge külastatavusega veebilehtede kohta (näiteks rohkem kui 100 000 külastust kuus), siis soovitame antud probleemi kõrvaldada.",
"NfsFilesystemWarning": "Sinu server kasutab NFS failisüsteemi",
"NfsFilesystemWarningSuffixAdmin": "See tähendab, et Piwik on väga aeglane faili põhiste sessioonidega töötamisel.",
- "NoConfigFound": "Piwiku konfguratsioonifaili ei leitud, kuid sa üritasid minna Piwiku lehele.<br \/><b>  » Võid <a href='index.php'>paigaldada Piwiku<\/a><\/b><br \/><small>Kui Piwik on varem installeeritud ja sul on andmebaasis tabeleid, siis ei ole põhjust muretsemiseks, sest saad taaskasutada ja säilitada olemasolevad andmed!<\/small>",
"Optional": "Valikuline",
"PasswordDoNotMatch": "salasõnad ei kattu",
"PercentDone": "%s %% Tehtud",
diff --git a/plugins/Installation/lang/eu.json b/plugins/Installation/lang/eu.json
index 33405b4a85..5924823a13 100644
--- a/plugins/Installation/lang/eu.json
+++ b/plugins/Installation/lang/eu.json
@@ -18,7 +18,6 @@
"InstallationStatus": "Instalazioaren egoera",
"LargePiwikInstances": "Laguntza Piwik-en instalazio handientzat",
"Legend": "Legenda",
- "NoConfigFound": "Piwik konfigurazio-fitxategia ezin izan da aurkitu eta Piwik orri bat atzitzen saiatzen ari zara.<br \/><b>  » <a href='index.php'>Piwik orain instalatu<\/a> dezakezu<\/b><br \/><small>Aurretik Piwik instalatu eta datu-basean taulak badituzu, ez kezkatu, taula berdinak berrerabil ditzakezu eta dauden datuak mantendu!<\/small>",
"Optional": "Aukerazkoa",
"PasswordDoNotMatch": "pasahitzak ez datoz bat",
"PercentDone": "%% %s eginda",
diff --git a/plugins/Installation/lang/fa.json b/plugins/Installation/lang/fa.json
index bdc3b293c5..b264eea2eb 100644
--- a/plugins/Installation/lang/fa.json
+++ b/plugins/Installation/lang/fa.json
@@ -27,7 +27,6 @@
"NfsFilesystemWarning": "سرور شما از فایل سیستم NFS استفاده می کند.",
"NfsFilesystemWarningSuffixAdmin": "این به آن معنا است که پیویک بسیار کند خواهد بود هنگامی که از فایل مبتنی بر نشست ها(session) استفاده می کند.",
"NfsFilesystemWarningSuffixInstall": "استفاده از نشست های مبتنی بر فایل با NFS بسیار کند است، بنابراین پیویک نشست های مبتنی بر پایگاه داده را به کار خواهد برد. اگر شما کاربران همزمان بسیاری دارید ، احتمالا نیاز به افزایش تعداد اتصالات کاربر(Client Connection) به پایگاه داده دارید.",
- "NoConfigFound": "Piwik فایل پیکربندی را می توان یافت نمی شود و شما در حال تلاش برای دسترسی به یک صفحه Piwik. <br\/><B> »می تواند href='index.php'> <a نصب Piwik در حال حاضر <\/a> <\/B> <br \/> <small> اگر شما نصب Piwik قبل و برخی از جداول در پایگاه داده خود را داشته باشند، نگران نباشید، شما می توانید جداول و استفاده مجدد از داده های موجود خود را حفظ کنید <\/small>",
"Optional": "اختیاری",
"PasswordDoNotMatch": "کلمه عبور یکی نیست",
"PercentDone": "%s %% انجام شده",
diff --git a/plugins/Installation/lang/fi.json b/plugins/Installation/lang/fi.json
index 25a3b390af..0ca63c3b51 100644
--- a/plugins/Installation/lang/fi.json
+++ b/plugins/Installation/lang/fi.json
@@ -36,13 +36,11 @@
"NfsFilesystemWarning": "Palvelimesi käyttää NFS:ää.",
"NfsFilesystemWarningSuffixAdmin": "Tämä tarkoittaa, että Piwik on todella hidas käytettäessä tiedostopohjaisia sessioita.",
"NfsFilesystemWarningSuffixInstall": "Tiedostopohjaisten sessioiden käyttäminen NFS:ssä on todella hidasta, joten Piwik käyttää tietokantasessioita. Jos sinulla on monia samanaikaisia ohjauspaneelin käyttäjiä, sinun tarvitsee ehkä lisätä tietokantaserverin käyttäjäyhteyksien maksimimäärää.",
- "NoConfigFound": "Piwikin asetustiedostoa ei löydy ja yrität siirtyä Piwikin sivuille.<br \/><b>  » Voit <a href='index.php'>asentaa Piwikin nyt<\/a><\/b><br \/><small>Jos asensit Piwikin aikaisemmin ja tietokannassa on jo tietoja, älä murehdi, tietoja ei hävitetä.<\/small>",
"Optional": "Optionaalinen",
"Password": "Salasana",
"PasswordDoNotMatch": "salasanat eivät täsmää",
"PasswordRepeat": "Salasana (uudelleen)",
"PercentDone": "%s %% valmiina",
- "PiwikProAdTitle": "Edistynyt analytiikka ja palvelut",
"PleaseFixTheFollowingErrors": "Korjaa seuraavat virheet",
"DefaultSettings": "Oletusasetukset",
"DefaultSettingsHelp": "Piwikissä on oletusasetukset. Voit muuttaa asetuksia nyt tai myöhemmin hallintasivulta.",
diff --git a/plugins/Installation/lang/fr.json b/plugins/Installation/lang/fr.json
index 24a88721f4..b58ea72ba5 100644
--- a/plugins/Installation/lang/fr.json
+++ b/plugins/Installation/lang/fr.json
@@ -36,13 +36,17 @@
"NfsFilesystemWarning": "Votre serveur utilise un système de fichier NFS.",
"NfsFilesystemWarningSuffixAdmin": "Cela signifie que Piwik va être très lent lors de l'utilisation des sessions en fichier.",
"NfsFilesystemWarningSuffixInstall": "Utiliser les sessions en fichier avec NFS est très lent, donc Piwik va utiliser des sessions en base de données. Si vous avez plusieurs utilisateurs de tableaux de bords en parallèle, vous pourriez avoir besoin d'augmenter le nombre maximal de connexions au serveur de base de données.",
- "NoConfigFound": "Le fichier de configuration de Piwik ne peut être trouvé et vous essayez d'accéder à une page de Piwik.<br> <b>  » Vous pouvez <a href='index.php'>installer Piwik maintenant<\/a><\/b><br><small>Si vous avez déjà installé Piwik ne vous inquiétez pas Piwik réutilisera ces tables et leurs données.<\/small>",
+ "NoConfigFileFound": "Le fichier de configuration Piwik n'a pu être trouvée et vous essayez d'accéder à une page Piwik.",
+ "YouMayInstallPiwikNow": "Vous pouvez %1$sinstaller Piwik maintenant%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Si vous avez installé Piwik avant et que vous avez quelques tables dans votre DB, ne vous inquiétez pas, vous pouvez réutiliser les mêmes tables et conserver vos données existantes!",
"Optional": "Optionnel",
"Password": "Mot de passe",
"PasswordDoNotMatch": "Le mot de passe ne concorde pas",
"PasswordRepeat": "Mot de passe (répétez)",
"PercentDone": "%s %% complété",
- "PiwikProAdTitle": "Services et statistiques avancés",
+ "ProfessionalServicesAdTitle": "Services et statistiques avancés",
+ "ProfessionalServicesfessionalServicesAdText": "Notre réseau d'experts peut aider votre organisation à exploiter tout le potentiel des statistiques Piwik.",
+ "ProfessionalServicesfessionalDiscoverHow": "Découvrez les %1$sproduits et services supplémentaires%2$s pour Piwik et comment augmenter vos conversions et revenus.",
"PleaseFixTheFollowingErrors": "Merci de corriger les erreurs suivantes",
"DefaultSettings": "Paramétrage par défaut",
"DefaultSettingsHelp": "Piwik est installé avec un paramétrage par défaut. Vous pouvez personnaliser ces réglages maintenant ou le faire plus tard dans l'espace d'administration.",
@@ -50,7 +54,7 @@
"RestartWebServer": "Après avoir effectué ces modifications, redémarrez votre serveur web.",
"ReusingTables": "Réutilisation des Tables",
"PiwikOrgNewsletter": "Envoyez moi des courriels pour les mises à jour importantes de Piwik",
- "PiwikProNewsletter": "envoyez-moi des informations à propos des services et offres de %1$sPiwik PRO%2$s",
+ "ProfessionalServicesNewsletter": "envoyez-moi des informations à propos %1$sdes services et produits%2$s pour Piwik",
"SeeBelowForMoreInfo": "Voir ci-dessous pour plus d'informations.",
"SetupWebsite": "Paramétrer un site",
"SetupWebsiteError": "Une erreur a été rencontrée pendant l'ajout du site",
diff --git a/plugins/Installation/lang/gl.json b/plugins/Installation/lang/gl.json
index c2910b9842..086f77743b 100644
--- a/plugins/Installation/lang/gl.json
+++ b/plugins/Installation/lang/gl.json
@@ -4,7 +4,6 @@
"CongratulationsHelp": "<p>Noraboa! A instalación de Piwik foi completada.<\/p><p>Asegúrese de inserir o código Javascript en todas as páxinas, e agora, agarde aos primeiros visitantes!<\/p>",
"Installation": "Instalación",
"InstallationStatus": "Estado da instalación",
- "NoConfigFound": "O ficheiro de configuración de Piwik non se atopou e vostede está tentando acceder a unha páxina de Piwik.<br><b>  » Pode <a href='index.php'>instalar Piwik agora<\/a><\/b><br><small>Se instalou Piwik con anterioridade e ten táboas na súa base de datos, non se preocupe, pode reutilizar ditas táboas e manter os datos que se atopan nelas!<\/small>",
"PercentDone": "%s %%Hecho",
"SetupWebsite": "Configurar unha páxina web",
"SetupWebsiteError": "Houbo un erro ao engadir o sitio",
diff --git a/plugins/Installation/lang/hi.json b/plugins/Installation/lang/hi.json
index 1c0b7684d3..38f8746790 100644
--- a/plugins/Installation/lang/hi.json
+++ b/plugins/Installation/lang/hi.json
@@ -33,7 +33,6 @@
"NfsFilesystemWarning": "आपका सर्वर एक NFS फाइल सिस्टम का उपयोग कर रहा है.",
"NfsFilesystemWarningSuffixAdmin": "इसका मतलब यह है Piwik अत्यंत धीमी हो जाएगा फ़ाइल आधारित सत्रों का उपयोग करते समय.",
"NfsFilesystemWarningSuffixInstall": "एनएफएस पर फ़ाइल आधारित सत्रों का प्रयोग अत्यंत धीमा है, तो Piwik डेटाबेस सत्र का उपयोग करेगा. आप कई समवर्ती डैशबोर्ड उपयोगकर्ताओं है, तो आप डेटाबेस सर्वर से ग्राहक कनेक्शन की अधिकतम संख्या में वृद्धि करने की आवश्यकता हो सकती है.",
- "NoConfigFound": "Piwik विन्यास फ़ाइल नहीं मिल सकता है और आप एक Piwik पृष्ठ का उपयोग करने की कोशिश कर रहे हैं. <br \/> <b> »आप <a href='index.php'> अब Piwik स्थापित कर सकते हैं <\/ a> <\/ b> <br \/> <small> आप पहले Piwik स्थापित और अपने DB में कुछ तालिकाएँ है, तो चिंता मत करो, तुम एक ही टेबल का पुनः उपयोग और अपने मौजूदा डेटा रख सकते हैं! <\/small>",
"Optional": "वैकल्पिक",
"PasswordDoNotMatch": "पासवर्ड मेल नहीं खाते",
"PercentDone": "%s %% समाप्त",
diff --git a/plugins/Installation/lang/hu.json b/plugins/Installation/lang/hu.json
index 15d8294e15..a4131cefa7 100644
--- a/plugins/Installation/lang/hu.json
+++ b/plugins/Installation/lang/hu.json
@@ -19,7 +19,6 @@
"InstallationStatus": "Telepítés állása",
"LargePiwikInstances": "Súgó nagyobb weboldalakra telepítéshez",
"Legend": "Magyarázó felirat",
- "NoConfigFound": "Megpróbáltál belépni a Piwik oldalra, de a konfigurációs fájl nem található.<br \/><b>  » <a href='index.php'>(Újra)telepítheted a Piwik-et most.<\/a><\/b><br \/><small>Ha már telepítetted a Piwik-et korábban és voltak már táblák az adatbázisodban, ne aggódj, tudod használni azokat a táblákat és így megmaradnak a meglévő adataid !<\/small>",
"Optional": "Opcionális",
"PasswordDoNotMatch": "jelszó nem egyezik",
"PercentDone": "%s %% kész",
diff --git a/plugins/Installation/lang/id.json b/plugins/Installation/lang/id.json
index 4714c95b69..2a750834e7 100644
--- a/plugins/Installation/lang/id.json
+++ b/plugins/Installation/lang/id.json
@@ -30,7 +30,6 @@
"NfsFilesystemWarning": "Peladen Anda menggunakan berkas sistem NFS.",
"NfsFilesystemWarningSuffixAdmin": "Ini berarti Piwik akan sangat lambat ketika menggunakan sesi berdasar berkas.",
"NfsFilesystemWarningSuffixInstall": "Menggunakan sesi berdasar berkas dalam sisten berkas dalam NFS sangat lambat, sehingga Piwik akan menggunakan sesi berdasar basisdata. Bila Anda memiliki pengguna panel kendali secara bersamaan, Anda munkin membutuhkan peningkatan jumlah sambungan pengguna ke peladen basisdata.",
- "NoConfigFound": "Berkas konfigurasi tak dapat ditemukan dan Anda mencoba untuk mengakses halaman Piwik. <br \/><strong>» Anda dapat <a href='index.php'>memasang Piwik sekarang<\/a><\/strong> <br \/><small>Jika Anda memasang Piwik sebelumnya dan memiliki beberapa tabel di basisdata Anda, jangan khawatir. Anda dapat menggunakan tabel lainnya dan menjaga data Anda saat ini!<\/small>",
"Optional": "Pilihan",
"PasswordDoNotMatch": "sandi tak sama",
"PercentDone": "%s%% Selesai",
diff --git a/plugins/Installation/lang/it.json b/plugins/Installation/lang/it.json
index b400e2b531..6bed04458a 100644
--- a/plugins/Installation/lang/it.json
+++ b/plugins/Installation/lang/it.json
@@ -35,14 +35,17 @@
"NfsFilesystemWarning": "Il tuo server utilizza un file system NFS.",
"NfsFilesystemWarningSuffixAdmin": "Questo significa che Piwik sarà estremamente lento quando utilizzerà delle sessioni basate sui file.",
"NfsFilesystemWarningSuffixInstall": "L'utilizzo di sessioni basate sui file è estremamente lento, così Piwik userà delle sessioni con database. Se hai molti utenti nella dashboard, potresti avere la necessità di aumentare il numero massimo di connessioni dei client al server del database.",
- "NoConfigFound": "Il file di configurazione di Piwik non è stato trovato e stai tentando l'accesso ad una pagina di Piwik.<br \/><b> » Puoi <a href='index.php'>installare Piwik ora.<\/a><\/b><br \/><small>Se hai già installato in precedenza Piwik e nel tuo Database sono presenti delle tabelle della vecchia installazione, non preoccuparti, puoi riutilizzarle e salvare i dati già esistenti!<\/small>",
+ "NoConfigFileFound": "I file di configurazione di Piwik non si trova e tu stai cercando di accedere a una pagina di Piwik.",
+ "YouMayInstallPiwikNow": "Ora puoi %1$sinstallare Piwik%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Se hai già installato Piwik in precedenza e hai delle tabelle nel database, non preoccuparti, puoi riutilizzare le stesse tabelle e conservare i dati esistenti!",
"Optional": "Opzionale",
"Password": "Password",
"PasswordDoNotMatch": "Le Password non coincidono",
"PasswordRepeat": "Password (ripeti)",
"PercentDone": "%s %% Fatto",
- "PiwikProAdTitle": "Statistiche & Servizi avanzati",
- "PiwikProAdText": "Aggiungi le funzionalità premium e sblocca l'intera potenza con %1$sPiwik PRO On-Premises%2$s o prendi Piwik senza fastidi ospitato nel %3$sClousd Piwik PRO%4$s.",
+ "ProfessionalServicesAdTitle": "Analisi Avanzate e Servizi",
+ "ProfessionalServicesfessionalServicesAdText": "La nostra rete di esperti può aiutare la tua organizzione a sbloccare l'intera potenza delle analisi di Piwik.",
+ "ProfessionalServicesfessionalDiscoverHow": "Impara altro sui %1$sprodotti supplementari e i servizi%2$s di Piwik e come su come incrementare conversioni e ricavi.",
"PleaseFixTheFollowingErrors": "Per favore, risolvi i seguenti errori",
"DefaultSettings": "Impostazioni predefinite di Piwik",
"DefaultSettingsHelp": "Piwik ha delle impostazioni predefinite. Puoi personalizzarle ora o farlo in seguito dalla schermata di amministrazione.",
@@ -50,7 +53,7 @@
"RestartWebServer": "Dopo aver fatto questa modifica, riavvia il server web.",
"ReusingTables": "Riutilizzo delle Tabelle",
"PiwikOrgNewsletter": "Inviami per email gli aggiornamenti importanti della comunità di Piwik",
- "PiwikProNewsletter": "inviami informazioni su servizi e offerte di %1$sPiwik PRO%2$s",
+ "ProfessionalServicesNewsletter": "inviami informazioni sui %1$sServizi professionali e i prodotti%2$s per Piwik",
"SeeBelowForMoreInfo": "Guarda sotto per altre informazioni.",
"SetupWebsite": "Configura un sito web",
"SetupWebsiteError": "C'è stato un errore durante l'aggiunta del sito web",
diff --git a/plugins/Installation/lang/ja.json b/plugins/Installation/lang/ja.json
index 3e65be17e8..c87dff8a20 100644
--- a/plugins/Installation/lang/ja.json
+++ b/plugins/Installation/lang/ja.json
@@ -36,7 +36,6 @@
"NfsFilesystemWarning": "あなたのサーバーは、NFS ファイルシステムを使用しています。",
"NfsFilesystemWarningSuffixAdmin": "これは、ファイルベースのセッションを利用する際、Piwik が極端に遅くなることを意味します。",
"NfsFilesystemWarningSuffixInstall": "NFS 上でファイルベースのセッションを利用すると極端に遅いので、Piwik はデータベースセッションを使用します。同時に多くのダッシュボードユーザーがいる場合、データベースサーバーへのクライアント接続の最大数を増やす必要があります。",
- "NoConfigFound": "Piwik の設定ファイルを見つけることができませんでしたが、あなたは Piwik ページにアクセスしようとしています。<br \/><b>  »<a href='index.php'>ただちに Piwik をインストール<\/a>することができます。<\/b><br \/><small>以前に Piwik をインストールしたことがあり、DB に多少のデータがある場合でも心配しないでください。 既存のデータを保持したまま、同じテーブルを再利用することができます!<\/small>",
"Optional": "オプション",
"Password": "パスワード",
"PasswordDoNotMatch": "パスワードが一致しませんでした",
@@ -49,7 +48,6 @@
"RestartWebServer": "この変更を行った後、ウェブサーバーを再起動してください。",
"ReusingTables": "表の再利用",
"PiwikOrgNewsletter": "私に Piwik コミュニティの最新情報をメールで送る",
- "PiwikProNewsletter": "%1$s Piwik PRO %2$s のサービスや最新情報を送ってください",
"SeeBelowForMoreInfo": "詳細は、以下をご確認ください。",
"SetupWebsite": "ウェブサイトのセットアップ",
"SetupWebsiteError": "ウェブサイトを追加する際にエラーが発生しました",
diff --git a/plugins/Installation/lang/ka.json b/plugins/Installation/lang/ka.json
index ccea04fd0c..4d888c5789 100644
--- a/plugins/Installation/lang/ka.json
+++ b/plugins/Installation/lang/ka.json
@@ -13,27 +13,20 @@
"DatabaseSetupLogin": "მომხმარებლის სახელი",
"DatabaseSetupServer": "მონაცემთა ბაზის სერვერი",
"DatabaseSetupTablePrefix": "ცხრილის წინსართი",
- "Email": "ელ.ფოსტა",
"Extension": "გაფართოება",
"GoBackAndDefinePrefix": "დაბრუნდით უკან და განსაზღვრეთ Piwik ცხრილების წინსართი",
"Installation": "ინსტალირება",
"InstallationStatus": "ინსტალაციის სტატუსი",
"LargePiwikInstances": "დახმარება Piwik–ის მსხვილი ობიექტებისთვის",
"Legend": "განმარტება",
- "NoConfigFound": "Piwik კონფიგურაციის ფაილი ვერ მოიძებნა და თქვენ Piwik გვერდის წვდომას ცდილობთ.<br \/><b>  » შეგიძლიათ <a href='index.php'>ახლა დააინსტალიროთ Piwik<\/a><\/b><br \/><small>თუ ადრე გქონდათ დაინსტალირებული Piwik და თქვენს მონაცემთა ბაზაში გაქვთ ცხრილები, არ ინერვიულოთ, თქვენ იმავე ცხრილების გამოყენებას კვლავ შეძლებთ და შეინარჩუნებთ არსებულ მონაცემებს!<\/small>",
"Optional": "ოფციონალური",
- "Password": "პაროლი",
"PasswordDoNotMatch": "პაროლი არ დაემთხვა",
- "PasswordRepeat": "პაროლი (განმეორებით)",
"PercentDone": "%s %% შესრულდა",
"PleaseFixTheFollowingErrors": "გთხოვთ, შეასწოროთ შემდეგი შეცდომები",
"Requirements": "Piwik მოთხოვნები",
"SetupWebsite": "ვებ საიტის მოწყობა",
"SetupWebsiteError": "ვებ საიტის დამატების დროს მოხდა შეცდომა",
- "SetupWebSiteName": "ვებ საიტის სახელი",
"SetupWebsiteSetupSuccess": "ვებ საიტი %s შეიქმნა წარმატებით!",
- "SetupWebSiteURL": "ვებ საიტის URL",
- "SuperUserLogin": "სუპერ მომხმარებლის სახელი",
"SystemCheck": "სისტემის შემოწმება",
"SystemCheckAutoUpdateHelp": "შენიშვნა: Piwik–ის ერთი დაწკაპუნებით განახლება მოითხოვს ჩაწერის უფლებას Piwik საქაღალდეზე და მის შიგთავსზე.",
"SystemCheckCreateFunctionHelp": "Piwik დაბრუნებისთვის იყენებს ანონიმურ ფუნქციებს.",
@@ -63,7 +56,6 @@
"SystemCheckSplHelp": "საჭირო იქნება PHP კონფიგურირება და აღდგენა სტანდარტული PHP ბიბლიოთეკის (SPL) ჩართვით (ნაგულისხმევი).",
"SystemCheckTimeLimitHelp": "მაღალი ტრაფიკის ვებ საიტებზე არქივირების პროცესის განხორციელებას შეიძლება ბევრი დრო დაჭირდეს ვიდრე დაშვებულია ახლა. თუ საჭირო იქნება, შეცვალეთ max_execution_time მნიშვნელობა თქვენს php.ini ფაილში.",
"SystemCheckTracker": "ტრეკერის სტატუსი",
- "SystemCheckTrackerHelp": "GET მოთხოვნა piwik.php ფაილზე ვერ განხორციელდა. ცადეთ ამ URL–ის whitelisting mod_security და HTTP აუტენთიფიკაციიდან.",
"SystemCheckWarnDomHelp": "სასურველია ჩართოთ \"dom\" გაფართოების გამოყენება (მაგ., დააინსტალირეთ \"php-dom\" და\/ან \"php-xml\" პაკეტი).",
"SystemCheckWarning": "Piwik ნორმალურად იმუშავებს მაგრამ შეიძლება ზოგიერთი ფუნქცია აკლდეს.",
"SystemCheckWarnJsonHelp": "სასურველია ჩართოთ \"json\" გაფართოების გამოყენება (მაგ., დააინსტალირეთ \"php-json\" პაკეტი) უკეთესი ეფექტიანობისთვის.",
@@ -81,7 +73,6 @@
"TablesReuse": "არსებული ცხრილების გამოყენება",
"TablesWarningHelp": "შეარჩიეთ ან მონაცემთა ბაზის არსებული ცხრილების ხელმეორედ გამოყენება ან მონიშნეთ სუფთა დაინსტალირება, რომელიც წაშლის მონაცემთა ბაზაში არსებულ მონაცემებს.",
"TablesWithSameNamesFound": "ზოგიერთ %1$s ცხრილს თქვენს მონაცემთა ბაზაში %2$s იგივე სახელი აქვს, რა სახელის ცხრილების შექმნასაც ცდილობს Piwik",
- "Timezone": "ვებ საიტის საათობრივი სარტყელი",
"Welcome": "მოგესალმებით!",
"WelcomeHelp": "<p>Piwik არის ღია კოდის ვებ ანალიზატორი პროგრამა, რომელიც ამარტივებს თქვენი ვიზიტორების შესახებ სასურველი ინფორმაციის მიღებას.<\/p><p>ეს პროცესი გაყოფილია %s მარტივ საფეხურად და დაახლოებით 5 წუთს გრძელდება.<\/p>"
}
diff --git a/plugins/Installation/lang/ko.json b/plugins/Installation/lang/ko.json
index b94e1d0bc1..67a9c2bdcd 100644
--- a/plugins/Installation/lang/ko.json
+++ b/plugins/Installation/lang/ko.json
@@ -36,14 +36,11 @@
"NfsFilesystemWarning": "서버에서 NFS 파일시스템을 사용하고 있습니다.",
"NfsFilesystemWarningSuffixAdmin": "파일 기반 세션을 사용하는 경우 Piwik이 매우 느려짐을 의미합니다.",
"NfsFilesystemWarningSuffixInstall": "NFS의 파일 기반 세션을 사용하면 매우 느립니다, 그래서 Piwik 데이터베이스 세션을 사용합니다. 대시보드 사용자가 많은 경우는, 데이터베이스 서버에 클라이언트 연결의 최대 수를 증가해야 할지도 모릅니다.",
- "NoConfigFound": "Piwik 설정 파일을 찾을 수 없으며 당신은 Piwik 페이지로 접근을 계속 시도하고 있습니다.<br \/><b>  » <a href='index.php'>지금 Piwik을 설치하세요.<\/a><\/b><br \/><small>만약 Piwik을 이전에 설치한 적이 있고 DB에 테이블이 좀 있다면 걱정하지마세요, 같은 테이블을 재사용할 수 있고 현재 데이터를 보존할 수 있습니다!<\/small>",
"Optional": "옵션",
"Password": "비밀번호",
"PasswordDoNotMatch": "비밀번호가 맞지 않습니다",
"PasswordRepeat": "비밀번호 (반복 입력)",
"PercentDone": "%s %% 완료",
- "PiwikProAdTitle": "고급 분석 및 서비스",
- "PiwikProAdText": "%1$sPiwik 프로 On-premise%2$s를 통해 최대의 프리미엄 기능을 사용하시거나, %3$sPiwik 프로 클라우드%4$s를 통해 당신만의 번거로움 없는 Piwik 호스트 서비스를 사용하실 수 있습니다.",
"PleaseFixTheFollowingErrors": "다음 오류를 수정하세요",
"DefaultSettings": "기본 Piwik 설정",
"DefaultSettingsHelp": "Piwik 기본 설정에 따릅니다. 이를 지금 혹은 후에 관리자 화면에서 변경할 수 있습니다.",
@@ -51,7 +48,6 @@
"RestartWebServer": "변경한 후 웹서버를 다시 시작하세요.",
"ReusingTables": "테이블",
"PiwikOrgNewsletter": "주요 Piwik 커뮤니티의 업데이트 이메일 구독",
- "PiwikProNewsletter": "%1$sPiwik PRO%2$s 서비스 및 신청과 관련한 정보 받기",
"SeeBelowForMoreInfo": "자세한 내용은 아래를 참조하세요.",
"SetupWebsite": "웹사이트 설정",
"SetupWebsiteError": "웹사이트 추가중에 에러가 있었습니다",
diff --git a/plugins/Installation/lang/lt.json b/plugins/Installation/lang/lt.json
index 61eb05852c..f4a6ebf49f 100644
--- a/plugins/Installation/lang/lt.json
+++ b/plugins/Installation/lang/lt.json
@@ -24,7 +24,6 @@
"InstallationStatus": "Įdiegimo būklė",
"LargePiwikInstances": "Pagalba dideliems Piwik pavyzdžiams",
"Legend": "Sutartinis ženklas",
- "NoConfigFound": "Jūs bandote pasiekti Piwik puslapį, tačiau negalima rasti Piwik konfigūracinio failo.<br \/><b>  » Galite <a href='index.php'>įdiegti Piwik dabar<\/a><\/b><br \/><small>Jei Piwik duombazėje liko lentelių iš ankstesnių diegimų, nesijaudinkite, nes galite naudoti tas pačias lenteles ir išsaugoti turimus duomenis!<\/small>",
"Optional": "Pasirenkama",
"Password": "Slaptažodis",
"PasswordDoNotMatch": "slaptažodis nesutampa",
diff --git a/plugins/Installation/lang/nb.json b/plugins/Installation/lang/nb.json
index 8a1eea35c6..c14b6c2cb5 100644
--- a/plugins/Installation/lang/nb.json
+++ b/plugins/Installation/lang/nb.json
@@ -36,14 +36,17 @@
"NfsFilesystemWarning": "Din tjeneren bruker et NFS-filsystem.",
"NfsFilesystemWarningSuffixAdmin": "Dette betyr Piwik vil være svært treg når du bruker filbaserte økter.",
"NfsFilesystemWarningSuffixInstall": "Å bruke filbaserte sesjoner på NFS er ekstremt tregt, så Piwik vil bruke databasesesjoner. Hvis det er mange som ser på kontrollpanelene samtidig, kan det tenkes at du må øke maks antall klienttilkoblinger som er tillatt på databaseserveren.",
- "NoConfigFound": "Klarte ikke finne konfigurasjonsfilen for Piwik, og du prøver å få tilgang til en Piwik-side. <br \/><b>  » Du kan <a href='index.php'>installere Piwik nå<\/a><\/b><br \/><small>Hvis du prøvde å installere Piwik tidligere og har noen tabeller i databasen, kan du ta det med ro. Du kan bruke de gamle tabellene og beholde dine eksisterende data!<\/small>",
+ "NoConfigFileFound": "Piwiks konfigurasjonsfil ble ikke funnet, og du prøver å få tilgang til en Piwik-side.",
+ "YouMayInstallPiwikNow": "Du kan %1$sinstallere Piwik nå%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Hvis du har installert Piwik fra før, og har noen tabeller i din database, ikke vær urolig: du kan gjenbruke de samme tabellene og beholde din eksisterende data!",
"Optional": "Valgfritt",
"Password": "Passord",
"PasswordDoNotMatch": "passordene stemmer ikke overens",
"PasswordRepeat": "Passord (gjenta)",
"PercentDone": "%s %% ferdig",
- "PiwikProAdTitle": "Avansert analyse og tjenester",
- "PiwikProAdText": "Legg til premium-funksjonalitet og lås opp høyeste gir med %1$sPiwik PRO On-Premises%2$s, eller få din egen Piwik drevet i %3$sPiwik PRO Cloud%4$s.",
+ "ProfessionalServicesAdTitle": "Avansert analyse og tjenester",
+ "ProfessionalServicesfessionalServicesAdText": "Vårt nettverk med eksperter kan hjelpe din virksomhet å bruke den fulle kraften i Piwik analytics.",
+ "ProfessionalServicesfessionalDiscoverHow": "Lær mer om %1$sflere produkter og tjenester%2$s for Piwik og hvordan du kan øke konverteringsraten og inntjeningen.",
"PleaseFixTheFollowingErrors": "Fiks følgende feil",
"DefaultSettings": "Standard Piwik-innstillinger",
"DefaultSettingsHelp": "Piwik kommer med standardinnstillinger. Du kan tilpasse dem nå eller gjøre det senere i administrasjonsskjermen.",
@@ -51,7 +54,7 @@
"RestartWebServer": "Etter å ha gjort denne endringen må du restarte webserveren.",
"ReusingTables": "Gjenbruker tabellene",
"PiwikOrgNewsletter": "Send meg e-poster med viktige oppdateringer om Piwik",
- "PiwikProNewsletter": "send meg informasjon om %1$sPiwik PRO%2$s tjenester og tilbud",
+ "ProfessionalServicesNewsletter": "send meg informasjon om %1$sProfesjonelle tjenester og produkter%2$s for Piwik",
"SeeBelowForMoreInfo": "Se nedenfor for mer informasjon.",
"SetupWebsite": "Legg til et nettsted",
"SetupWebsiteError": "Det skjedde en feil da nettstedet ble lagt til.",
diff --git a/plugins/Installation/lang/nl.json b/plugins/Installation/lang/nl.json
index 7b29cf0d51..a27f09e2cd 100644
--- a/plugins/Installation/lang/nl.json
+++ b/plugins/Installation/lang/nl.json
@@ -36,14 +36,11 @@
"NfsFilesystemWarning": "Je server gebruikt het NFS bestandssysteem",
"NfsFilesystemWarningSuffixAdmin": "Dit betekent dat Piwik extreem traag zal zijn bij gebruik van bestands gebaseerde sessies.",
"NfsFilesystemWarningSuffixInstall": "Gebruik maken van bestands gebaseerde sessies op NFS is extreem traag, dus zal Piwik gebruik maken van database sessies. Indien je veel gelijktijdige dashboard gebruikers hebt, zul je mogelijk het maximum aantal client connecties naar de database server moeten verhogen.",
- "NoConfigFound": "Het Piwik configuratiebestand werd niet gevonden.<br \/><b>  » U kunt <a href='index.php'>Piwik nu installeren<\/a><\/b><br \/><small>Wanneer u Piwik al eerder geïnstalleerd heeft en de Piwik tabellen reeds data bevatten: maakt u zich geen zorgen, u kunt dezelfde tabellen blijven gebruiken en uw bestaande data behouden!<\/small>',",
"Optional": "Optioneel",
"Password": "Wachtwoord",
"PasswordDoNotMatch": "wachtwoord komt niet overeen",
"PasswordRepeat": "Wachtwoord (herhalen)",
"PercentDone": "%s %% Gereed",
- "PiwikProAdTitle": "Geavanceerde Analytics & Services",
- "PiwikProAdText": "Voeg premium functionaliteit toe en ontgrendel de volledige kracht met %1$sPiwik PRO On-Premises%2$s, of maak gebruik van je eigen zorgeloze hosted Piwik ongeving in de %3$sPiwik PRO Cloud%4$s.",
"PleaseFixTheFollowingErrors": "Los de volgende problemen op",
"DefaultSettings": "Standaard Piwik instellingen",
"DefaultSettingsHelp": "Piwik komt met voorgedefinieerde instellingen. Je kunt deze nu aanpassen of dit later doen in het admin scherm.",
@@ -51,7 +48,6 @@
"RestartWebServer": "Herstart uw webserver na deze aanpassing.",
"ReusingTables": "Hergebruik de tabellen",
"PiwikOrgNewsletter": "email mij bij grote Piwik gemeenschap updates",
- "PiwikProNewsletter": "Stuur mij informatie over %1$sPiwik PRO%2$s diensten en aanbiedingen",
"SeeBelowForMoreInfo": "Zie hieronder voor meer informatie.",
"SetupWebsite": "Configureer een website",
"SetupWebsiteError": "Er heeft zich een fout voorgedaan tijdens het toevoegen van de website",
diff --git a/plugins/Installation/lang/nn.json b/plugins/Installation/lang/nn.json
index c4d62be286..96cb3da20b 100644
--- a/plugins/Installation/lang/nn.json
+++ b/plugins/Installation/lang/nn.json
@@ -17,7 +17,6 @@
"Installation": "Installasjon",
"InstallationStatus": "Installasjonstatus",
"LargePiwikInstances": "Hjelp for større Piwik-installasjonar",
- "NoConfigFound": "Du prøvar å nå ein Piwikside, men konfigurasjonen vart ikkje funnen.<br \/><b>  » Du kan <a href='index.php'>installera Piwik no<\/a><\/b><br \/><small>Om du allereie har hatt Piwik installert og har nokre tabellar i databasen, treng du ikkje bekymra deg. Du kan nytta dei same tabellane og data!<\/small>",
"Optional": "Valfri",
"PasswordDoNotMatch": "Passorda samsvarer ikkje",
"PercentDone": "%s %% Ferdig",
diff --git a/plugins/Installation/lang/pl.json b/plugins/Installation/lang/pl.json
index 8bcc0d9c8d..b1c63826db 100644
--- a/plugins/Installation/lang/pl.json
+++ b/plugins/Installation/lang/pl.json
@@ -24,7 +24,6 @@
"LargePiwikInstances": "Pomoc w przypadku dużych instalacji z Piwik",
"Legend": "Legenda",
"NfsFilesystemWarning": "Twój system używa systemu plików NFS",
- "NoConfigFound": "Plik konfiguracyjny Piwik nie został odnaleziony, a ty próbujesz uzyskać dostęp do strony Piwik.<br \/><b>  » Możesz <a href='index.php'>zainstalować statystyki Piwik teraz<\/a><\/b><br \/><small>Jeżeli zainstalowałeś Piwik poprzednio i masz swoje tabele w bazie danych, nie przejmuj się, możesz uzyć tych samych tabel i zachować istniejące w nich dane!<\/small>",
"Optional": "Opcionalnie",
"Password": "Hasło",
"PasswordDoNotMatch": "hasło jest nieprawidłowe",
diff --git a/plugins/Installation/lang/pt-br.json b/plugins/Installation/lang/pt-br.json
index 050420299e..8366493711 100644
--- a/plugins/Installation/lang/pt-br.json
+++ b/plugins/Installation/lang/pt-br.json
@@ -36,14 +36,14 @@
"NfsFilesystemWarning": "O servidor está usando um sistema de arquivos NFS.",
"NfsFilesystemWarningSuffixAdmin": "Isto significa que o Piwik será extremamente lento quando estiver se baseabdo em arquivos de sessão.",
"NfsFilesystemWarningSuffixInstall": "Em NFS, usando arquivos baseados em sessões fica extremamente lento, por isso que o Piwik irá utilizar sessões em banco. Se você tem muitos usuários do painel simultâneas, você pode precisar aumentar o número máximo de conexões do cliente para o servidor de banco de dados.",
- "NoConfigFound": "O arquivo de configuração de relatórios não pode ser encontrado e você está tentando acessar uma página do Piwik.<br \/><b>  » Você poderá <a href='index.php'>instalar o Piwik agora<\/a><\/b><br \/><small>Se você instalou o Piwik antes e possui algumas tabelas em seu banco de dados, não se preocupe, você poderá reutilizar as mesmas tabelas e manter os dados existentes!<\/small>",
+ "NoConfigFileFound": "O arquivo de configuração do Piwik não foi encontrado e você pode tentar acessar a página do Piwik.",
+ "YouMayInstallPiwikNow": "Você pode %1$sinstalar o Piwik agora%2$s",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Se você instalou o Piwik antes e tem algumas tabelas no seu BD, não se preocupe, pois pode reutilizar as mesmas tabelas e manter seus dados existentes!",
"Optional": "Opcional",
"Password": "Senha",
"PasswordDoNotMatch": "senha não confere",
"PasswordRepeat": "Senha (repetir)",
"PercentDone": "%s %% Completo",
- "PiwikProAdTitle": "Análises e Serviços Avançados",
- "PiwikProAdText": "Adicione funcionalidades premium e libere a força total com o %1$sPiwik PRO On-Premises%2$s, ou obtenha o seu próprio Piwik livre de problemas hospedado no %3$sPiwik PRO Cloud%4$s.",
"PleaseFixTheFollowingErrors": "Por favor, corrija os seguintes erros",
"DefaultSettings": "Configurações Piwik padrão",
"DefaultSettingsHelp": "Piwik vem com configurações padrão. Você pode personalizá-las agora ou posteriormente no painel de administração.",
@@ -51,7 +51,6 @@
"RestartWebServer": "Depois de fazer essa alteração, reinicie o seu servidor web.",
"ReusingTables": "Reutilizando as Tabelas",
"PiwikOrgNewsletter": "me enviar e-mail com as principais atualizações da comunidade Piwik",
- "PiwikProNewsletter": "envie-me informações sobre os serviços e ofertas do %1$sPiwik PRO%2$s",
"SeeBelowForMoreInfo": "Veja abaixo para mais informações.",
"SetupWebsite": "Configurar um website",
"SetupWebsiteError": "Ocorreu um erro ao tentar adicionar o website",
diff --git a/plugins/Installation/lang/pt.json b/plugins/Installation/lang/pt.json
index 0dea2e82a6..d025a5cd38 100644
--- a/plugins/Installation/lang/pt.json
+++ b/plugins/Installation/lang/pt.json
@@ -19,7 +19,6 @@
"InstallationStatus": "Estado da Instalação",
"LargePiwikInstances": "Ajuda para grandes instâncias Piwik",
"Legend": "Legenda",
- "NoConfigFound": "O ficheiro de configuração Piwik não foi encontrado e está a tentar aceder a uma página Piwik.<br \/><b>  » Pode <a href='index.php'>instalar o Piwik agora<\/a><\/b><br \/><small>Se instalou o Piwik antes e possui algumas tabelas na sua base de dados, não se preocupe, pode reutilizar as mesmas tabelas e manter os dados existentes!<\/small>",
"Optional": "Opcional",
"PasswordDoNotMatch": "palavras-passe não coincidem",
"PercentDone": "%s %% Completado",
diff --git a/plugins/Installation/lang/ro.json b/plugins/Installation/lang/ro.json
index ac25455db5..689122fad2 100644
--- a/plugins/Installation/lang/ro.json
+++ b/plugins/Installation/lang/ro.json
@@ -34,7 +34,6 @@
"NfsFilesystemWarning": "Server-ul dvs. foloseste ca si sistem de fisiere NFS.",
"NfsFilesystemWarningSuffixAdmin": "Acest lucru înseamnă că Piwik va fi extrem de lent atunci când se utilizează sesiuni bazate pe fișiere.",
"NfsFilesystemWarningSuffixInstall": "Folosind sesiuni bazate pe fișiere NFS sunt extrem de lente, astfel Piwik va folosi sesiuni de baze de date. Dacă aveți mai mulți utilizatori de tablou de bord, ar putea fi necesar sa se creasca numărul maxim de conexiuni client la serverul de baze de date.",
- "NoConfigFound": "Fișierul de configurare Piwik nu a putut fi găsit și se încearcă să se acceseze o pagină Piwik.<br \/><b> » Puteți a href='index.php'> instala Piwik acum <\/a><\/b><br \/><mic> Dacă ați instalat Piwik înainte și au aveti unele tabele din DB , nu vă faceți griji, aveți posibilitatea să reutilizați aceleași tabele și să se păstreze datele existente!<\/mic>",
"Optional": "Opţional",
"PasswordDoNotMatch": "Parola nu se potriveste",
"PercentDone": "%s %% Done",
diff --git a/plugins/Installation/lang/ru.json b/plugins/Installation/lang/ru.json
index 25a4b0b4bf..63018cf656 100644
--- a/plugins/Installation/lang/ru.json
+++ b/plugins/Installation/lang/ru.json
@@ -36,14 +36,11 @@
"NfsFilesystemWarning": "Ваш сервер использует NFS.",
"NfsFilesystemWarningSuffixAdmin": "Имеется ввиду, что Piwik будет очень медленным при использовании сессий на основе файлов.",
"NfsFilesystemWarningSuffixInstall": "Использование сессий на основе файлов по протоколу NFS чрезвычайно медленно, поэтому Piwik будет использовать сессии на основе базы данных. Если у вас может быть одновременно множество пользователей на панели управления, вам, возможно, потребуется увеличить максимальное число клиентских подключений к серверу базы данных.",
- "NoConfigFound": "Конфигурационный файл Piwik не может быть найден, однако вы пытаетесь зайти в систему.<br \/><b>  » Вы можете <a href='index.php'>установить Piwik сейчас.<\/a><\/b><br \/><small> Если Piwik уже был установлен и вы имеете данные в БД, вы можете использовать их.<\/small>",
"Optional": "Необязательно",
"Password": "Пароль",
"PasswordDoNotMatch": "Пароль не совпадает",
"PasswordRepeat": "Пароль (еще раз)",
"PercentDone": "%s %% Завершено",
- "PiwikProAdTitle": "Продвинутая аналитика и сервисы",
- "PiwikProAdText": "Добавьте премиумную функциональность и разблокируйте полную мощность с %1$sPiwik PRO On-Premises%2$s, или получите свой собственный беспроблемный Piwik, располагающийся в %3$sPiwik PRO Cloud%4$s.",
"PleaseFixTheFollowingErrors": "Пожалуйста, исправьте следующие ошибки",
"DefaultSettings": "Настройки Piwik по умолчанию",
"DefaultSettingsHelp": "Piwik поставляется с настройками по умолчанию. Вы можете настроить их сейчас или сделать это позже в настройках администратора.",
@@ -51,7 +48,6 @@
"RestartWebServer": "После этих изменений перезапустите браузер.",
"ReusingTables": "Переиспользование таблиц",
"PiwikOrgNewsletter": "послать мне email о новых обновления Piwik community",
- "PiwikProNewsletter": "пришлите мне информацию об услугах и предложениях %1$sPiwik PRO%2$s",
"SeeBelowForMoreInfo": "Смотрите ниже для получения дополнительной информации.",
"SetupWebsite": "Добавить сайт",
"SetupWebsiteError": "Возникла ошибка при добавлении сайта",
diff --git a/plugins/Installation/lang/sk.json b/plugins/Installation/lang/sk.json
index 7d02148ad6..33fea7cc0f 100644
--- a/plugins/Installation/lang/sk.json
+++ b/plugins/Installation/lang/sk.json
@@ -22,7 +22,6 @@
"Installation": "Inštalácia",
"InstallationStatus": "Stav inštalácie",
"Legend": "Legenda",
- "NoConfigFound": "Piwik konfiguračný súbor nie je možné nájsť a vy sa pokúšate pripojiť k Piwik stránke. <br \/><b>  » Môžete <a href='index.php'>teraz nainštalovať Piwik<\/a><\/b><br \/><small>Ak ste nainštalovali Piwik už skôr, a máte nejaké tabuľky s dátami v databáze, nemusíte sa báť, budete ich ďalej používať!<\/small>",
"Optional": "Voliteľné",
"PasswordDoNotMatch": "heslo nie je zhodné",
"PercentDone": "%s %% Dokončené",
diff --git a/plugins/Installation/lang/sq.json b/plugins/Installation/lang/sq.json
index 7e59ba7663..0cc67566bd 100644
--- a/plugins/Installation/lang/sq.json
+++ b/plugins/Installation/lang/sq.json
@@ -5,6 +5,7 @@
"ConfirmDeleteExistingTables": "Jeni i sigurt se doni të fshihen tabelat: %s prej bazës së të dhënave? KUJDES: NUK DO TË MUND TË RIKTHENI TË DHËNAT PREJ KËTYRE TABELAVE!",
"Congratulations": "Urime",
"CongratulationsHelp": "<p>Urime! Instalimi juaj i Piwik-ut u plotësua.<\/p><p>Sigurohuni që keni futur kodin JavaScript te faqet tuaja, dhe prisni për vizitorët e parë!<\/p>",
+ "DatabaseAbilities": "Aftësi baze të dhënash",
"DatabaseCreation": "Krijim baze të dhënash",
"DatabaseErrorConnect": "Gabim gjatë provës për t’u lidhur me shërbyesin e bazës së të dhënave",
"DatabaseServerVersion": "Version shërbyesi baze të dhënash",
@@ -14,26 +15,54 @@
"DatabaseSetupLogin": "hyrje",
"DatabaseSetupServer": "Shërbyes i bazës së të dhënave",
"DatabaseSetupTablePrefix": "parashtesë tabele",
+ "Email": "Email",
"Extension": "zgjerim",
+ "Filesystem": "Sistem kartelash",
+ "GetInvolved": "Nëse ju pëlqen ajo që shihni, mund %1$stë përfshiheni%2$s.",
"GoBackAndDefinePrefix": "Kthehuni mbrapsht dhe përcaktoni një Prefiks për Tabelat e Piwik-ut",
+ "HappyAnalysing": "Analiza të mbara!",
"Installation": "Instalim",
"InstallationStatus": "Gjendje instalimi",
+ "InsufficientPrivilegesHelp": "Këto privilegje mund t’i shtoni duke përdorur një mjet të tillë si phpMyAdmin ose duke kryer kërkesat e duhura SQL. Nëse nuk dini si t’i bëni këto gjëra, ju lutemi, kërkojini përgjegjësit të sistemit tuaj t’ju akordojë këto privilegje.",
+ "InsufficientPrivilegesMain": "Ose Baza e të Dhënave s’ekziston, (dhe s’krijohet dot), ose Përdoruesi i caktuar ka privilegje të pamjaftueshme. Përdoruesi i bazës së të dhënave duhet të ketë privilegjet vijuese: %s",
+ "InvalidStateError": "Gabim: Piwik-u është i instaluar tashmë. %1$s Rikthehuni %2$s te Piwik-u%3$s.",
+ "JsTagArchivingHelp1": "Për sajte me trafik mesatar ose të madh ka disa optimizime që duhen bërë për ta ndihmuar Piiwik-un të xhirojë më shpejt (të tillë si %1$srregullimi i vetëarkivimit%2$s).",
+ "JSTracking_EndNote": "Shënim: pas procesit të instalimit, te ndarja %1$sKod Gjurmimi%2$s e përgjegjësit mund të prodhoni kod vetjak gjurmimi.",
+ "JSTracking_Intro": "Që të ndiqni trafikun tuaj web me Piwik-un, duhet të siguroni shtimin e ca kodi shtesë te secila faqe web e juaja.",
"LargePiwikInstances": "Ndihmë për raste Piwik-u me ngarkesë",
"Legend": "Legjendë",
- "NoConfigFound": "S’u gjet dot kartela e formësimit të Piwik-ut dhe po provoni të hyni te një faqe Piwik-u.<br \/><b>  » Mund ta <a href='index.php'>instaloni Piwik-un tani<\/a><\/b><br \/><small>Nëse e kishit instaluar Piwik-un më parë dhe keni disa tabela te baza juaj e të dhënave, mos u shqetësoni, mund të ripërdorni po ato tabela dhe të mbani të dhënat tuaja ekzistuese!<\/small>",
+ "LoadDataInfileRecommended": "Nëse shërbyesi juaj Piwik ndjek sajte me trafik të madh (p.sh. > 100,000 faqe në muaj), këshillojmë të përpiqeni ta ndreqni këtë problem.",
+ "LoadDataInfileUnavailableHelp": "Përdorimi i %1$s do ta përshpejtojë mjaft procesin e arkivimit në Piwik. Që Piwik-u të mund ta përdorë, provoni të përditësoni software-in tuaj PHP & MySQL dhe sigurohuni që përdoruesi i bazës tuaj të të dhënave ka privilegje %2$s.",
+ "NfsFilesystemWarning": "Shërbyesi juaj përdor një sistemt NFS kartelash",
+ "NfsFilesystemWarningSuffixAdmin": "Kjo do të thotë që Piwik-u do të jetë tejet i ngadaltë kur të përdorë sesione të bazuar në kartela.",
+ "NfsFilesystemWarningSuffixInstall": "Përdorimi për NFS-në i sesioneve të bazuar në kartela është tejet i ngadaltë, ndaj Piwik-u do të përdorë sesione të bazuar në baza të dhënash. Nëse keni shumë përdorues të njëkohshëm të pultit, mund të keni nevojë të rritni numrin maksimum të lidhjeve nga klientët te shërbyesi i bazës së të dhënave.",
"Optional": "Opsionale",
+ "Password": "Fjalëkalim",
"PasswordDoNotMatch": "fjalëkalimet nuk përputhen",
+ "PasswordRepeat": "Fjalëkalim (rijepeni)",
"PercentDone": "Plotësuar %s %%",
"PleaseFixTheFollowingErrors": "Ju lutem, ndreqni gabimet vijuese",
+ "DefaultSettings": "Rregullimet parazgjedhje për Piwik-un",
+ "DefaultSettingsHelp": "Piwik-u instalohet me rregullime parazgjedhje. Ato mund t’i përshtatni tani ose këtë ta bëni më vonë që nga skena e përgjegjësit.",
"Requirements": "Të domosdoshme për Piwik-un",
+ "RestartWebServer": "Pas kryerjes së këtij ndryshimi, rinisni shërbyesin tuaj.",
+ "PiwikOrgNewsletter": "më njoftoni me email rreth përditësimesh të rëndësishme të Piwik-ut nga bashkësia",
+ "SeeBelowForMoreInfo": "Për më tepër informacion shihni më poshtë",
"SetupWebsite": "Rregulloni një Sajt",
"SetupWebsiteError": "Pati një gabim gjatë shtimit të një sajti",
+ "SetupWebSiteName": "Emër sajti",
"SetupWebsiteSetupSuccess": "Sajti %s u shtua me sukses!",
+ "SetupWebSiteURL": "URL sajti",
+ "SiteSetup": "Ju lutemi, caktoni sajtin e parë që dëshironi të ndiqet dhe analizohet me Piwik:",
+ "SiteSetupFootnote": "Shënim: pasi të përfundojë instalimi i Piwik-ut, do të jeni në gjendje të shtoni më tepër Sajte për ndjekje!",
"SuperUser": "Super Përdorues",
+ "SuperUserLogin": "Hyrje si superpërdorues",
+ "SuperUserSetupError": "Pati një gabim gjatë shtimit të Superpërdoruesit",
"SuperUserSetupSuccess": "Super Përdoruesi u krijua me sukses!",
"SystemCheck": "Kontroll sistemi",
"SystemCheckAutoUpdateHelp": "Shënim: përditësimi me Një Klikim i Piwik-ut lyp leje për shkrim te dosja Piwik dhe lënda e saj.",
"SystemCheckCreateFunctionHelp": "Piwik-u përdor funksione anonime për \"callbacks\".",
+ "SystemCheckDatabaseExtensions": "Zgjerime MySQL",
"SystemCheckDatabaseHelp": "Piwik-u lyp ose zgjerimin mysqli, ose që të dy zgjerimet PDO dhe pdo_mysql.",
"SystemCheckDebugBacktraceHelp": "View::factory nuk do të jetë në gjendje të krijojë parje për modulin thirrës.",
"SystemCheckError": "Ndodhi një gabim - duhet të ndreqet përpara se të ecni më tej",
@@ -41,27 +70,38 @@
"SystemCheckExtensions": "Të tjera zgjerime të domosdoshme",
"SystemCheckFileIntegrity": "Pacënueshmëri kartele",
"SystemCheckFunctions": "Funksione të domosdoshëm",
+ "SystemCheckFunctionHelp": "Lypset ta aktivizoni këtë funksion të brendshëm.",
+ "SystemCheckGDFreeType": "GD > 2.x + Freetype (grafikë)",
"SystemCheckGDHelp": "\"Sparklines\" (grafikë të veckël) nuk do të funksionojnë.",
"SystemCheckGlobHelp": "Ky funksion i trupëzuar është i çaktivizuar te streha juaj. Piwik-u do të përpiqet ta emulojë këtë funksion por mund të hasë kufizime të mëtejshme sigurie. Kjo mund të ketë ndikim te funksionimi.",
"SystemCheckGzcompressHelp": "Lypset të aktivizoni zgjerimin zlib dhe funksionin gzcompress.",
"SystemCheckGzuncompressHelp": "Lypset të aktivizoni zgjerimin zlib dhe funksionin gzuncompress.",
"SystemCheckIconvHelp": "Lypset të formësoni dhe rindërtoni PHP-në me aktivizim të mbulimit të \"iconv\", --with-iconv.",
+ "SystemCheckJsonHelp": "Zgjerimi php5-json është i domosdoshëm që Piwik-u të lexojë dhe shkruajë të dhëna JSON.",
"SystemCheckMailHelp": "Mesazhet mbi Përshtypjet dhe Fjalëkalim të Humbur nuk kanë për t’u dërguar pa mail().",
"SystemCheckMbstring": "mbstring",
+ "SystemCheckMbstringHelp": "Zgjerimi mbstring lypset për trajtimin e shenjave shumëbajtshe te ndërfaqja e përdoruesit dhe përgjigjet API. Shihni gjithashtu që mbstring.func_overload te php.ini i është dhënë vlera \"0\".",
"SystemCheckMemoryLimit": "Kufi kujtese",
"SystemCheckMemoryLimitHelp": "Në një sajt me shumë trafik, procesi i arkivimit mund të dojë më tepër kujtesë se sa i është dhënë tani. Në u dashtë, ndryshojeni parametrin memory_limit te kartela juaj php.ini.",
"SystemCheckOpenURL": "Hap URL",
"SystemCheckOpenURLHelp": "Pajtimet në buletine, njoftime përditësimesh, dhe përditësimet me një klikim e duan zgjerimin \"curl\", allow_url_fopen=On, ose fsockopen() të aktivizuar.",
"SystemCheckOtherExtensions": "Zgjerime të tjera",
"SystemCheckOtherFunctions": "Funksione të tjerë",
+ "SystemCheckPageSpeedDisabled": "PageSpeed e çaktivizuar",
+ "SystemCheckPageSpeedWarn": "Këshillojmë çaktivizimin e modulit PageSpeed Module te shërbyesi juaj web %s: Është raportuar se PageSpeed shkakton një numër problemesh me Piwik-un.",
"SystemCheckPackHelp": "Që të gjurmohen vizitorët me Piwik-un, funksioni pack() është i domosdoshëm.",
"SystemCheckParseIniFileHelp": "Ky funksion i trupëzuar është i çaktivizuar te streha juaj. Piwik-u do të përpiqet ta emulojë këtë funksion por mund të hasë kufizime të mëtejshme sigurie. Edhe punimi i gjurmuesit do të preket nga kjo.",
"SystemCheckPdoAndMysqliHelp": "Në një shërbyes Linux mund ta përpiloni php-në me mundësitë vijuese: %1$s te php.ini juaj, shtoni rreshtat vijues: %2$s",
"SystemCheckPhp": "Version PHP-je",
"SystemCheckPhpPdoAndMysqli": "Më tepër të dhëna te: %1$sPHP PDO%2$s dhe %3$sMYSQLI%4$s.",
"SystemCheckSplHelp": "Lypset të formësoni dhe krijoni PHP-në me Librarinë Standarde PHP të aktivizuar (si parazgjedhje).",
+ "SystemCheckSettings": "Formësim PHP-je i domosdoshëm (php.ini)",
+ "SystemCheckSummaryNoProblems": "Urraaaaa! S’ka probleme me rregullimin tuaj të Piwik-ut. Rrihini shpatullat vetes.",
+ "SystemCheckSummaryThereWereErrors": "Ah! Piwik-u ka zbuluar disa %1$sçështje kritike%2$s me rregullimin tuaj për të. %3$sKëto çështje duhen ndrequr menjëherë.%4$s",
+ "SystemCheckSummaryThereWereWarnings": "Ka disa probleme me sistemin tuaj. Piwik-u do të funksionojë, por mund të hasni ca probleme të vockla.",
"SystemCheckTimeLimitHelp": "Në sajt me shumë trafik, përmbushja e procesit të arkivimit mund të dojë më tepër kohë se sa i është dhënë tani. Në u dashtë, ndryshojeni parametrin max_execution_time te kartela juaj php.ini.",
"SystemCheckTracker": "Gjendje gjurmuesi",
+ "SystemCheckTrackerHelp": "Kërkesa GET te piwik.php dështoi. Provoni ta kaloni këtë URL si një të lejuar nga Mirëfilltësimi HTTP dhe çaktivizoni mod_security (mund t’ju duhet t’i kërkoni ndihmë strehuesit tuaj web).Për më tepër të dhëna mbi gabimin, shihni kartelën e regjistrimit të gabimeve të shërbyesit tuaj web.",
"SystemCheckWarnDomHelp": "Do të duhej të aktivizonit zgjerimin \"dom\" (p.sh., instaloni paketën \"php-dom\" dhe\/ose \"php-xml\").",
"SystemCheckWarning": "Piwik-u do të punojë normalisht por mund t’i mungojnë disa veçori",
"SystemCheckWarnJsonHelp": "Do të duhej të aktivizonit zgjerimin \"json\" (p.sh., instaloni paketën \"php-json\") për punim më të mirë.",
@@ -71,15 +111,26 @@
"SystemCheckWriteDirs": "Drejtori me hyrje për shkrim",
"SystemCheckWriteDirsHelp": "Për ndreqjen e këtij gabimi në sistemin tuaj Linux, provoni të shtypni urdhrin(at) vijues",
"SystemCheckZlibHelp": "Lypset të formësoni dhe rikrijoni PHP-në me mbulim të zlib-it të aktivizuar, --with-zlib.",
+ "SystemCheckCronArchiveProcessCLI": "Administrim procesesh përmes CLI-së",
+ "SystemCheckPhpSetting": "Që të parandaloni disa probleme kritike, duhet të rregulloni sa vijon te kartela juaj php.ini: %s",
+ "SystemCheckUpdateHttps": "Përditësoje përmes HTTPS-je",
+ "SystemCheckUpdateHttpsNotSupported": "Piwik-u s’mund të përdorë HTTPS për përditësim, ndaj do të kalojë te përditësimi i pasigurt përmes HTTP. Kujdesuni që të mbulohet CURL ose allow_url_fopen dhe që zgjerimi PHP openssl të jetë i instaluar: http:\/\/piwik.org\/faq\/troubleshooting\/faq_177\/.",
+ "NotSupported": "e pambuluar",
"Tables": "Krijim Tabelash",
"TablesCreatedSuccess": "Tabelat u krijuan me sukses!",
"TablesDelete": "Fshiji tabelat e pikasura",
"TablesDeletedSuccess": "Tabelat ekzistuese të Piwik-ut u fshinë me sukses",
"TablesFound": "Te baza e të dhënave u gjetën tabelat vijuese",
"TablesReuse": "Ripërdor tabelat ekzistuese",
+ "TablesUpdatedSuccess": "Baza e të dhënave u përditësua me sukses, nga %1$s në %2$s!",
"TablesWarningHelp": "Ose zgjidhni përdorimin sërish të tabelave ekzistuese të bazës së të dhënave, ose përzgjidhni instalimin nga e para për të fshirë tërë të dhënat ekzistuese te baza e të dhënave.",
"TablesWithSameNamesFound": "Disa tabela %1$s te baza juaj e të dhënave %2$s kanë të njëjtit emra si tabelat që Piwik-u po përpiqet të krijojë",
+ "Timezone": "Zonë kohore e sajtit",
+ "WeHopeYouWillEnjoyPiwik": "Shpresojmë t’ju shijojë Piwik-i po aq sa na shijon neve krijimi i tij.",
"Welcome": "Mirë se vini!",
- "WelcomeHelp": "<p>Piwik-u është një program analize web, me burim të hapët, që e bën të lehtë të kihen të dhëna që dëshironi rreth vizitorëve tuaj.<\/p><p>Ky proces është ndarë në %s hapa të kollajtë dhe do të zgjasë rreth 5 minuta.<\/p>"
+ "WelcomeHelp": "<p>Piwik-u është një program analize web, me burim të hapët, që e bën të lehtë të kihen të dhëna që dëshironi rreth vizitorëve tuaj.<\/p><p>Ky proces është ndarë në %s hapa të kollajtë dhe do të zgjasë rreth 5 minuta.<\/p>",
+ "WelcomeToCommunity": "Mirë se vini te bashkësia Piwik!",
+ "CannotConnectToDb": "S’lidhet dot me bazën e të dhënave",
+ "CannotConnectToDbResolvingExplanation": "Ky mund të jetë problem i përkohshëm, provoni %1$stë rifreskoni faqen%2$s. Nëse problemi vazhdon, ju lutemi lidhuni me përgjegjësin e Piwik-ut tuaj."
}
} \ No newline at end of file
diff --git a/plugins/Installation/lang/sr.json b/plugins/Installation/lang/sr.json
index ec4fab0a62..1468c49a30 100644
--- a/plugins/Installation/lang/sr.json
+++ b/plugins/Installation/lang/sr.json
@@ -36,7 +36,6 @@
"NfsFilesystemWarning": "Vaš server koristi NFS sistem datoteka.",
"NfsFilesystemWarningSuffixAdmin": "To znači da će Piwik biti jako spor ako koristite sesije bazirane na datotekama.",
"NfsFilesystemWarningSuffixInstall": "Korišćene sesija na bazi datoteka na NFS sistemu je jako sporo tako da će piwik koristiti sesije u bazi podataka. Ako imate puno istovremenih korisnika Konzole, možda ćete morati da povećate maksimalan broj klijentskih konekcija ka serveru sa bazom.",
- "NoConfigFound": "Piwik datoteka sa podešavanjima nije nađena u momentu dok vi pokušavate da pristupite Piwik stranici.<br \/><b>  » Kliknite ovde kako biste <a href='index.php'>instalirali Piwik<\/a><\/b><br \/><small>Ukoliko ste već ranije instalirali Piwik i imate neke tabele u bazi podataka, bez brige: možete nastaviti da ih koristite i zadržite postojeće podatke!<\/small>",
"Optional": "Opciono",
"Password": "Lozinka",
"PasswordDoNotMatch": "lozinke se ne podudaraju",
@@ -49,7 +48,6 @@
"RestartWebServer": "Nakon ovih izmena restartujte vaš web server",
"ReusingTables": "Ponovna upotreba tabela",
"PiwikOrgNewsletter": "pošalji mi mejl kada dođe do značajne Piwik izmene",
- "PiwikProNewsletter": "pošalji mi informacije o %1$sPiwik PRO%2$s uslugama i ponudama",
"SeeBelowForMoreInfo": "Pogledajte ispod za više informacija.",
"SetupWebsite": "Podešavanje sajta",
"SetupWebsiteError": "Došlo je do greške prilikom dodavanja sajta",
diff --git a/plugins/Installation/lang/sv.json b/plugins/Installation/lang/sv.json
index 0bbbd52ad8..1aaf0b810e 100644
--- a/plugins/Installation/lang/sv.json
+++ b/plugins/Installation/lang/sv.json
@@ -36,7 +36,6 @@
"NfsFilesystemWarning": "Din server använder NFS-filsystem.",
"NfsFilesystemWarningSuffixAdmin": "Det betyder att Piwik kommer att vara extremt långsamt när det använder filbaserade sessioner.",
"NfsFilesystemWarningSuffixInstall": "Att använda filbaserade sessioner och NFS är extremt långsamt, så Piwik kommer att använda databassessioner. Om du har många samtidiga användare av instrumentpanelen så är det möjligt att du behöver öka det maximala antalet anslutningar till databasservern.",
- "NoConfigFound": "Piwik's konfigurationsfil kunde inte hittas och du försöker komma åt en Piwik sida. <br \/><b> » Du kan <a href='index.php'> installera Piwik nu<\/a><\/b><br \/><small> Om du har installerat Piwik innan och har en del tabeller i databasen så oroa dig inte, du kan återanvända samma tabeller och behålla dina befintliga data!<\/small>",
"Optional": "Frivilligt",
"Password": "Lösenord",
"PasswordDoNotMatch": "Lösenorden matchar inte",
@@ -49,7 +48,6 @@
"RestartWebServer": "När du har gjort den här ändringen, starta om din webbserver.",
"ReusingTables": "Återanvänder tabellerna",
"PiwikOrgNewsletter": "maila mig vid större Piwik community uppdateringar",
- "PiwikProNewsletter": "skicka mer information om tjänster och erbjudanden från %1$sPiwik PRO%2$s",
"SeeBelowForMoreInfo": "Se nedan för mer information.",
"SetupWebsite": "Konfigurera en webbplats",
"SetupWebsiteError": "Det uppstod ett fel när webbplatsen försökte läggas till.",
@@ -104,6 +102,7 @@
"SystemCheckSummaryThereWereWarnings": "Det finns vissa problem med systemet. Piwik kommer att köras, men du kan uppleva vissa smärre problem.",
"SystemCheckTimeLimitHelp": "På en högtrafik webbplats, för att exekvera arkiveringsprocessen kan det krävas mer tid än vad som för tillfället är tillåtet. Om det är nödvändigt ändra max_execution_time direktivet i din php.ini fil.",
"SystemCheckTracker": "Spårningsstatus",
+ "SystemCheckTrackerHelp": "Hämtningsbegäran för piwik.php misslyckades. Testa med att vitlista denna URL från HTTP Autentiseringen och inaktivera mod_security (eventuellt kan du behöva kontakta ditt webbhotell). För mer information om felet kolla i din fellogg på webbservern.",
"SystemCheckWarnDomHelp": "Du bör aktivera tillägget \"dom\" (t.ex., installera paketet \"php-dom\" och\/eller \"php-xml\").",
"SystemCheckWarning": "Piwik kommer fungera som normalt men kommer sakna vissa funktioner",
"SystemCheckWarnJsonHelp": "Du bör aktivera tillägget \"json\" (t.ex., installera paketet \"php-json\") för bättre prestanda.",
@@ -117,6 +116,7 @@
"SystemCheckCronArchiveProcessCLI": "Hantering av processer via CLI",
"SystemCheckPhpSetting": "För att det inte ska uppstå problem måste du ställa in följande i din php.ini-fil: %s",
"SystemCheckUpdateHttps": "Uppdatera över HTTPS",
+ "SystemCheckUpdateHttpsNotSupported": "Piwik kan inte använda HTTPS för att uppdatera och kommer att köra på en osäker HTTP uppdatering. Kontrollera att du har stöd för CURL eller allow_url_fopen och att openssl PHP-tilläget är installerat: http:\/\/piwik.org\/faq\/troubleshooting\/faq_177\/.",
"NotSupported": "stöds inte",
"Tables": "Skapar tabellerna",
"TablesCreatedSuccess": "Tabeller skapades utan problem!",
diff --git a/plugins/Installation/lang/th.json b/plugins/Installation/lang/th.json
index f8f3553169..74eda2e4c4 100644
--- a/plugins/Installation/lang/th.json
+++ b/plugins/Installation/lang/th.json
@@ -21,7 +21,6 @@
"LargePiwikInstances": "ความช่วยเหลือสำหรับอินสแตนซ์ Piwik ขนาดใหญ่",
"Legend": "Legend",
"NfsFilesystemWarning": "เซิร์ฟเวอร์ของคุณใช้ระบบไฟล์แบบ NFS",
- "NoConfigFound": "ไม่พบแฟ้มการกำหนดค่า Piwik และคุณกำลังพยายามเข้าถึง Piwik<br \/><b>  » คุณสามารถ<a href='index.php'>ติดตั้ง Piwik ได้ที่นี่<\/a><\/b><br \/><small>ถ้าคุณติดตั้ง Piwik ก่อน และมีตารางบางตารางในฐานข้อมูลของคุณ ไม่ต้องกังวลใจไปครับ คุณสามารถนำมาใช้ใหม่ในตารางเดียวกันได้ และสามารถเก็บข้อมูลตัวเก่าที่มีอยู่ของคุณได้เช่นกัน!<\/small>",
"Optional": "ตัวเลือก",
"PasswordDoNotMatch": "รหัสผ่านไม่ถูกต้อง",
"PercentDone": "ติดตั้งเสร็จไปแล้ว %s %%",
diff --git a/plugins/Installation/lang/tl.json b/plugins/Installation/lang/tl.json
index 236c16296a..89ac7331c8 100644
--- a/plugins/Installation/lang/tl.json
+++ b/plugins/Installation/lang/tl.json
@@ -32,7 +32,6 @@
"NfsFilesystemWarning": "Ang iyong server ay gumagamit ng isang NFS filesystem",
"NfsFilesystemWarningSuffixAdmin": "Ito ay nangangahulugan na ang Piwik ay lubhang babagal kapag gumagamit ng file na batay sa session.",
"NfsFilesystemWarningSuffixInstall": "Ang pag-gamit ng file based session sa NFS ay sobrang mabagal iyong kakailanganin ang pag dag-dag ng maximum number na komokonekta sa iyong database server.",
- "NoConfigFound": "Ang Piwik configuration file ay hindi makita at iyong sinusubukang pumasok sa pahina ng Piwik.<br \/><b> » Maari mong <a href='index.php'>I-install ang Piwik ngayon<\/a><\/b><br \/><small>Kung iyo ng nainstall ang piwik dati at at meron ka nang mga tables sa iyong DB wag mabahala maari mo paring gamitin ang parehong mga tables at mapanatili ang mga datus na meron ka na!<\/small>",
"Optional": "Opsyonal",
"PasswordDoNotMatch": "password ay hindi tumutugma",
"PercentDone": "%s %% Tapos na",
diff --git a/plugins/Installation/lang/uk.json b/plugins/Installation/lang/uk.json
index e011055c38..b1b7323665 100644
--- a/plugins/Installation/lang/uk.json
+++ b/plugins/Installation/lang/uk.json
@@ -13,15 +13,16 @@
"DatabaseSetupLogin": "логін",
"DatabaseSetupServer": "сервер баз даних",
"DatabaseSetupTablePrefix": "префікс таблиць",
+ "Email": "Email",
"Extension": "Розширення",
"GoBackAndDefinePrefix": "Повернутися і встановити префікс для таблиць Piwik",
"Installation": "Встановлення",
"InstallationStatus": "Статус встановлення",
"LargePiwikInstances": "Доомога для великих інсталяцій Piwik",
"Legend": "Підказка",
- "NoConfigFound": "Файл конфігурації Piwik не знайдено в той час як Ви намагаєтесь користуватися Piwik.<br><b>  » Ви можете <a href='index.php'>встановити Piwik зараз<\/a><\/b><br><small>Якщо ви встановили Piwik раніше і деякі таблиці залишились в базі даних, Ви зможете використати їх і тим самим зберегти вже існуючі дані!<\/small>",
"Optional": "Не обовязково",
"PasswordDoNotMatch": "пароль не співпадає",
+ "PasswordRepeat": "Пароль ще раз",
"PercentDone": "%s %% Завершено",
"PleaseFixTheFollowingErrors": "Виправте наступні помилки",
"Requirements": "Системні вимоги Piwik",
diff --git a/plugins/Installation/lang/vi.json b/plugins/Installation/lang/vi.json
index 70797d7366..d9ce85ab73 100644
--- a/plugins/Installation/lang/vi.json
+++ b/plugins/Installation/lang/vi.json
@@ -32,7 +32,6 @@
"NfsFilesystemWarning": "Máy chủ của bạn đang sử dụng một tập tin hệ thống NFS",
"NfsFilesystemWarningSuffixAdmin": "Điều này tức là Piwik sẽ rất chậm khi sử dụng tập tin dựa trên phiên.",
"NfsFilesystemWarningSuffixInstall": "Sử dụng tập tin dựa trên các phiên trên NFS là rất chậm, vì vậy Piwik sẽ sử dụng các phiên cơ sở dữ liệu. Nếu bạn có nhiều người sử dụng bảng điều khiển đồng thời, bạn có thể cần phải tăng số lượng tối đa các kết nối client đến máy chủ cơ sở dữ liệu.",
- "NoConfigFound": "Tập tin cấu hình Piwik không thể được tìm thấy và bạn đang cố gắng truy cập vào một trang Piwik. <br\/><b> »Bạn có thể <a href='index.php'> cài đặt Piwik ngay bây giờ <\/a> <\/b> <br \/> <small> Nếu bạn cài đặt Piwik trước và có một số bảng trong DB của bạn, đừng lo lắng, bạn có thể sử dụng lại các bảng giống nhau và giữ dữ liệu hiện tại của bạn! <\/small>",
"Optional": "Tùy chọn",
"PasswordDoNotMatch": "Mật khẩu không phù hợp",
"PercentDone": "%s %% thực hiện",
diff --git a/plugins/Installation/lang/zh-cn.json b/plugins/Installation/lang/zh-cn.json
index ab96b1f3c3..dbe9371fea 100644
--- a/plugins/Installation/lang/zh-cn.json
+++ b/plugins/Installation/lang/zh-cn.json
@@ -36,14 +36,11 @@
"NfsFilesystemWarning": "您的服务器使用NFS文件系统。",
"NfsFilesystemWarningSuffixAdmin": "这意味着 Piwik 使用基于文件的会话将会非常慢。",
"NfsFilesystemWarningSuffixInstall": "在NFS上使用基于文件的会话会非常慢,所以 Piwik 将使用数据库会话。如果您有很多并发的面板用户,需要在增大客户端连接到服务器的最大数。",
- "NoConfigFound": "无法找到 Piwik 配置文件,而您正尝试存取一个 Piwik 的页面!<br \/><b>  » 您可以 <a href='index.php'>立刻安装 Piwik<\/a><\/b><br \/><small>假如您在之前已安装过 Piwik,并且已有些数据表在您的数据库中,不用担心,您可以重复使用此相同的数据表并保留您现存的数据!<\/small>",
"Optional": "非必需",
"Password": "密码",
"PasswordDoNotMatch": "密码不匹配",
"PasswordRepeat": "密码(重复)",
"PercentDone": "%s %% 已完成",
- "PiwikProAdTitle": "高级分析与服务",
- "PiwikProAdText": "添加高级功能和解锁全部功能需要 %1$s,Piwik PRO版本价格为 %2$s,您还可以选择Piwik 主机,只需要 %3$s ,Piwik PRO版云主机只需要 %4$s 。",
"PleaseFixTheFollowingErrors": "请修复以下错误",
"DefaultSettings": "默认 Piwik 设置",
"DefaultSettingsHelp": "Piwik自带的默认设置。现在,您可以自定义它们或稍后在管理介面上做。",
@@ -51,7 +48,6 @@
"RestartWebServer": "做过这个改动之后,请重新启动网络服务器。",
"ReusingTables": "重用的表",
"PiwikOrgNewsletter": "邮件通知我重大的 Piwik 社区更新",
- "PiwikProNewsletter": "给我发送 %1$sPiwik PRO%2$s 的折扣和服务相关的信息",
"SeeBelowForMoreInfo": "更详细的信息请看下面",
"SetupWebsite": "设定一个网站",
"SetupWebsiteError": "增加此网站时出现错误",
diff --git a/plugins/Installation/lang/zh-tw.json b/plugins/Installation/lang/zh-tw.json
index d46e632f79..69be80e9a9 100644
--- a/plugins/Installation/lang/zh-tw.json
+++ b/plugins/Installation/lang/zh-tw.json
@@ -18,7 +18,6 @@
"InstallationStatus": "安裝狀態",
"LargePiwikInstances": "Piwik 給予大型網站的協助",
"Legend": "說明",
- "NoConfigFound": "無法找到 Piwik 設定檔,而你正嘗試存取一個 Piwik 的頁面。<br \/><b>  » 你可以 <a href='index.php'>立刻安裝 Piwik<\/a><\/b><br \/><small>假如你之前已安裝過 Piwik,並且已有些資料表在你的資料庫中,不用擔心,你可以重複使用此相同的資料表並保留現存的資料!<\/small>",
"Optional": "選擇性",
"PasswordDoNotMatch": "密碼不相符",
"PercentDone": "%s %% 已完成",
diff --git a/plugins/Installation/templates/finished.twig b/plugins/Installation/templates/finished.twig
index b64bb79812..133bdc6ab4 100644
--- a/plugins/Installation/templates/finished.twig
+++ b/plugins/Installation/templates/finished.twig
@@ -17,13 +17,13 @@
<p>{{ 'Installation_WeHopeYouWillEnjoyPiwik'|translate }}</p>
<p><i>{{ 'Installation_HappyAnalysing'|translate }}</i></p>
- {% if arePiwikProAdsEnabled %}
- <h3>{{ 'Installation_PiwikProAdTitle'|translate }}</h3>
+ {% if areAdsForProfessionalServicesEnabled %}
+ <h3>{{ 'Installation_ProfessionalServicesAdTitle'|translate }}</h3>
<p>
- {% set linkOnPremises = 'Installation_End'|piwikProOnPremisesPromoUrl %}
- {% set linkOnCloud = 'Installation_End'|piwikProCloudPromoUrl %}
-
- {{ 'Installation_PiwikProAdText'|translate('<a rel="noreferrer" target="_blank" href="' ~ linkOnPremises ~ '">','</a>', '<a rel="noreferrer" target="_blank" href="' ~ linkOnCloud ~ '">','</a>')|raw }}
+ {{ 'Installation_ProfessionalServicesfessionalServicesAdText'|translate }}
+ </p>
+ <p>
+ {{ 'Installation_ProfessionalServicesfessionalDiscoverHow'|translate('<a rel="noreferrer" target="_blank" href="' ~ linkToProfessionalServices ~ '">','</a>')|raw }}
</p>
{% endif %}
diff --git a/plugins/LanguagesManager/Commands/FetchTranslations.php b/plugins/LanguagesManager/Commands/FetchTranslations.php
index 79f83da36d..ce24dc3a97 100644
--- a/plugins/LanguagesManager/Commands/FetchTranslations.php
+++ b/plugins/LanguagesManager/Commands/FetchTranslations.php
@@ -13,7 +13,7 @@ use Piwik\Container\StaticContainer;
use Piwik\Exception\AuthenticationFailedException;
use Piwik\Plugins\LanguagesManager\API as LanguagesManagerApi;
use Piwik\Translation\Transifex\API;
-use Symfony\Component\Console\Helper\ProgressHelper;
+use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
@@ -38,6 +38,8 @@ class FetchTranslations extends TranslationBase
protected function execute(InputInterface $input, OutputInterface $output)
{
+ $output->setDecorated(true);
+
$username = $input->getOption('username');
$password = $input->getOption('password');
$plugin = $input->getOption('plugin');
@@ -81,10 +83,10 @@ class FetchTranslations extends TranslationBase
$languages = $languageCodes;
}
- /** @var ProgressHelper $progress */
- $progress = $this->getHelperSet()->get('progress');
+ /** @var ProgressBar $progress */
+ $progress = new ProgressBar($output, count($languages));
- $progress->start($output, count($languages));
+ $progress->start();
$statistics = $transifexApi->getStatistics($resource);
@@ -108,6 +110,7 @@ class FetchTranslations extends TranslationBase
}
$progress->finish();
+ $output->writeln('');
}
public static function getDownloadPath()
diff --git a/plugins/LanguagesManager/Commands/Update.php b/plugins/LanguagesManager/Commands/Update.php
index b4f9eea4af..375614c5db 100644
--- a/plugins/LanguagesManager/Commands/Update.php
+++ b/plugins/LanguagesManager/Commands/Update.php
@@ -11,12 +11,12 @@ namespace Piwik\Plugins\LanguagesManager\Commands;
use Piwik\Plugins\LanguagesManager\API;
use Symfony\Component\Console\Helper\DialogHelper;
-use Symfony\Component\Console\Helper\ProgressHelper;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\NullOutput;
use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Helper\ProgressBar;
/**
*/
@@ -34,6 +34,8 @@ class Update extends TranslationBase
protected function execute(InputInterface $input, OutputInterface $output)
{
+ $output->setDecorated(true);
+
$start = microtime(true);
/** @var DialogHelper $dialog */
@@ -76,10 +78,10 @@ class Update extends TranslationBase
$output->writeln("Starting to import new language files");
- /** @var ProgressHelper $progress */
- $progress = $this->getHelperSet()->get('progress');
+ /** @var ProgressBar $progress */
+ $progress = new ProgressBar($output, count($files));
- $progress->start($output, count($files));
+ $progress->start();
foreach ($files as $filename) {
@@ -119,6 +121,7 @@ class Update extends TranslationBase
}
$progress->finish();
+ $output->writeln('');
}
$output->writeln("Finished in " . round(microtime(true)-$start, 3) . "s");
@@ -140,7 +143,7 @@ class Update extends TranslationBase
preg_match_all('/plugins\/([a-zA-z]+) /', $submodules, $matches);
$submodulePlugins = $matches[1];
- // ignore complete new plugins aswell
+ // ignore complete new plugins as well
$changes = shell_exec('git status');
preg_match_all('/plugins\/([a-zA-z]+)\/\n/', $changes, $matches);
$newPlugins = $matches[1];
@@ -177,7 +180,7 @@ class Update extends TranslationBase
if ($input->getOption('force')) {
$arguments['--lastupdate'] = 1;
} else {
- $lastModDate = strtotime('2015-01-04 00:00:00'); // date of inital transifex setup
+ $lastModDate = strtotime('2015-01-04 00:00:00'); // date of initial transifex setup
try {
// try to find the language file (of given plugin) with the newest modification date in git log
$path = ($plugin ? 'plugins/' . $plugin . '/' : '') . 'lang';
diff --git a/plugins/LanguagesManager/Model.php b/plugins/LanguagesManager/Model.php
index fad84238cd..071863b3cd 100644
--- a/plugins/LanguagesManager/Model.php
+++ b/plugins/LanguagesManager/Model.php
@@ -58,7 +58,7 @@ class Model
}
/**
- * Returns whether the given user has choosen to use 12 hour clock
+ * Returns whether the given user has chosen to use 12 hour clock
*
* @param $userLogin
* @return bool
diff --git a/plugins/LanguagesManager/lang/sq.json b/plugins/LanguagesManager/lang/sq.json
index 44f1ff8f52..79312c1c0b 100644
--- a/plugins/LanguagesManager/lang/sq.json
+++ b/plugins/LanguagesManager/lang/sq.json
@@ -1,5 +1,6 @@
{
"LanguagesManager": {
- "AboutPiwikTranslations": "Mbi përkthimet e Piwik-ut"
+ "AboutPiwikTranslations": "Mbi përkthimet e Piwik-ut",
+ "TranslationSearch": "Kërkim Përkthimi"
}
} \ No newline at end of file
diff --git a/plugins/LanguagesManager/lang/uk.json b/plugins/LanguagesManager/lang/uk.json
index 63f18a97ce..e37be17d69 100644
--- a/plugins/LanguagesManager/lang/uk.json
+++ b/plugins/LanguagesManager/lang/uk.json
@@ -1,5 +1,6 @@
{
"LanguagesManager": {
- "AboutPiwikTranslations": "Про переклади Piwik"
+ "AboutPiwikTranslations": "Про переклади Piwik",
+ "TranslationSearch": "Пошук перекладу"
}
} \ No newline at end of file
diff --git a/plugins/Live/Controller.php b/plugins/Live/Controller.php
index a74b4424ec..3a87d75559 100644
--- a/plugins/Live/Controller.php
+++ b/plugins/Live/Controller.php
@@ -133,7 +133,7 @@ class Controller extends \Piwik\Plugin\Controller
));
$view->visitData = $visits->getFirstRow()->getColumns();
$view->visitReferralSummary = VisitorProfile::getReferrerSummaryForVisit($visits->getFirstRow());
- $view->showLocation = true;
+ $view->showLocation = \Piwik\Plugin\Manager::getInstance()->isPluginLoaded('UserCountry');
$this->setWidgetizedVisitorProfileUrl($view);
$view->exportLink = $this->getVisitorProfileExportLink();
return $view->render();
diff --git a/plugins/Live/javascripts/live.js b/plugins/Live/javascripts/live.js
index bf386fdb88..95688e147d 100644
--- a/plugins/Live/javascripts/live.js
+++ b/plugins/Live/javascripts/live.js
@@ -65,7 +65,14 @@
ajaxRequest.addParams(this.options.dataUrlParams, 'GET');
ajaxRequest.setFormat('html');
ajaxRequest.setCallback(function (r) {
- that._parseResponse(r);
+ if (that.options.replaceContent) {
+ $(that.element).html(r);
+ if (that.options.fadeInSpeed) {
+ $(that.element).effect("highlight", {}, that.options.fadeInSpeed);
+ }
+ } else {
+ that._parseResponse(r);
+ }
// add default interval to last interval if not updated or reset to default if so
if (!that.updated) {
diff --git a/plugins/Live/lang/fr.json b/plugins/Live/lang/fr.json
index 2dff46092b..4cdf25a9dc 100644
--- a/plugins/Live/lang/fr.json
+++ b/plugins/Live/lang/fr.json
@@ -1,9 +1,11 @@
{
"Live": {
+ "AbandonedCartSummary": "%1$s caddies abandonnés%2$s et %3$s articles abandonnés%4$s pour une valeur totale de %5$s%6$s.",
"AveragePageGenerationTime": "Chaque page a pris une moyenne de %1$s à charger pour ce visiteur.",
"CalculatedOverNPageViews": "Calculé sur la base des %1$s dernières pages vues par ce visiteur.",
"ClickToViewMoreAboutVisit": "Cliquez pour afficher plus d'informations à propos de cette visite",
"ConvertedNGoals": "Conversion de %s objectifs",
+ "EcommerceSummaryConversions": "%1$s commandes%2$s sur un total de %3$s%4$s, comptaient %5$s articles%6$s.",
"FirstVisit": "Première visite",
"GoalType": "Type",
"HideMap": "Cacher la carte",
@@ -33,6 +35,8 @@
"VisitorsInRealTime": "Visiteurs en temps réel",
"VisitorsLastVisit": "La dernière visite du visiteur était il y a %s jours.",
"VisitsFrom": "%1$s%2$s visites%3$s de",
+ "VisitSummary": "A passé un total de %1$s%2$s sur le site web%3$s, et %4$saffiché %5$s pages en %6$s visites.%7$s",
+ "VisitSummaryWithActionDetails": "A passé un total de %1$s%2$s sur le site web%3$s, et effectué %4$s actions %5$s (%6$s) en %7$s visites%8$s.",
"RowActionTooltipDefault": "Afficher le logs des visiteurs segmenté par cette rangée",
"RowActionTooltipWithDimension": "Afficher le log des visiteurs segmenté en fonction de %s",
"RowActionTooltipTitle": "Ouvrir le log des visiteur segmenté",
diff --git a/plugins/Live/lang/nl.json b/plugins/Live/lang/nl.json
index 571ac72f2e..7e7dba65df 100644
--- a/plugins/Live/lang/nl.json
+++ b/plugins/Live/lang/nl.json
@@ -1,9 +1,11 @@
{
"Live": {
+ "AbandonedCartSummary": "%1$s verlaten winkelmanden%2$s en %3$s verlaten artikelen %4$s met een totaal waarde van %5$s%6$s.",
"AveragePageGenerationTime": "Elke pagina duurde gemiddeld %1$s om te laden voor deze bezoeker.",
"CalculatedOverNPageViews": "Berekend met de laatste %1$s paginaweergaves van deze bezoeker.",
"ClickToViewMoreAboutVisit": "Klik om meer informatie over dit bezoek te zien",
"ConvertedNGoals": "Behaalde %s Doelen",
+ "EcommerceSummaryConversions": "%1$s bestellingen %2$s voor een totaal van %3$s%4$s, besteld %5$s items %6$s.",
"FirstVisit": "Eerste bezoek",
"GoalType": "Type",
"HideMap": "Verberg kaart",
@@ -33,6 +35,8 @@
"VisitorsInRealTime": "Bezoekers in real-time",
"VisitorsLastVisit": "Het laatste bezoek van deze bezoekers was %s dagen geleden.",
"VisitsFrom": "%1$s%2$s bezoeken%3$s van",
+ "VisitSummary": "Bestede in totaal %1$s%2$s op de website %3$s, en bekeek %4$s pagina's %5$s in %6$s bezoeken %7$s.",
+ "VisitSummaryWithActionDetails": "Bestede in totaal %1$s%2$s op de website%3$s, en verrichte %4$s acties%5$s (%6$s) in %7$s bezoeken%8$s.",
"RowActionTooltipDefault": "Toon bezoekers log verdeeld volgens deze rij",
"RowActionTooltipWithDimension": "Toon bezoekers log verdeeld volgens %s",
"RowActionTooltipTitle": "Open gesegmenteerd Bezoekerslogboek",
diff --git a/plugins/Live/lang/ru.json b/plugins/Live/lang/ru.json
index 96f0c99890..266261bbe6 100644
--- a/plugins/Live/lang/ru.json
+++ b/plugins/Live/lang/ru.json
@@ -1,9 +1,11 @@
{
"Live": {
+ "AbandonedCartSummary": "%1$s заброшенных корзин %2$s и %3$s заброшенных товаров%4$s в сумме стоящих %5$s%6$s.",
"AveragePageGenerationTime": "В среднем требовалось %1$s у этого посетителя для полной загрузки страницы.",
"CalculatedOverNPageViews": "Рассчитано на основе этого посетителя с %1$s просмотром страниц(ы).",
"ClickToViewMoreAboutVisit": "Посмотреть более подробную информацию об этом визите",
"ConvertedNGoals": "Целей достигнуто: %s",
+ "EcommerceSummaryConversions": "%1$s заказов%2$s в общей сложности %3$s%4$s, куплено %5$s товаров%6$s.",
"FirstVisit": "Первое посещение",
"GoalType": "Тип",
"HideMap": "скрыть карту",
@@ -19,7 +21,7 @@
"NextVisitor": "Следующий посетитель",
"NoMoreVisits": "Больше нет посещений у этого посетителя.",
"PageRefreshed": "Сколько раз эта страница была просмотрена \/ обновлена несколько ряд подряд.",
- "PluginDescription": "Показывает актуальный журнал посетителей и позволяет смотреть ваших посетителей в режиме реального времени на приборной панели виджетов. Плагин также позволяет просматривать профиль посетитель данного пользователя.",
+ "PluginDescription": "Показывает актуальный журнал посетителей и позволяет смотреть ваших посетителей в режиме реального времени на приборной панели виджетов. Плагин также позволяет просматривать профиль посетителя для каждого пользователя.",
"PreviousVisitor": "Предыдущий посетитель",
"RealTimeVisitorCount": "Счётчик посетителей в реальном времени",
"Referrer_URL": "URL источника",
@@ -33,8 +35,12 @@
"VisitorsInRealTime": "Посетители в реальном времени",
"VisitorsLastVisit": "Последнее посещение этого пользователя было %s дней назад.",
"VisitsFrom": "%1$s%2$s визитов%3$s от",
+ "VisitSummary": "Провел в общей сложности %1$s%2$s на веб-сайте%3$s и просмотрел %4$s страниц%5$s за %6$s посещений%7$s.",
+ "VisitSummaryWithActionDetails": "Провел в общей сложности%1$s%2$s на веб-сайте%3$s и совершил %4$s действий%5$s (%6$s) за %7$s посещений%8$s.",
"RowActionTooltipDefault": "Показать журнал посетителей, сегментированный по этой строке",
"RowActionTooltipTitle": "Открыть сегментированный журнал посетителей",
- "SegmentedVisitorLogTitle": "Просмотр посещений где %1$s равно \"%2$s\""
+ "SegmentedVisitorLogTitle": "Просмотр посещений где %1$s равно \"%2$s\"",
+ "OnClickPause": "%s началось. Нажмите, чтобы приостановить.",
+ "OnClickStart": "%s остановлено. Нажмите, чтобы начать."
}
} \ No newline at end of file
diff --git a/plugins/Live/lang/sv.json b/plugins/Live/lang/sv.json
index cb5ade51e4..7bd00416f4 100644
--- a/plugins/Live/lang/sv.json
+++ b/plugins/Live/lang/sv.json
@@ -21,6 +21,7 @@
"NextVisitor": "Nästa besökare",
"NoMoreVisits": "Det finns inga fler besök för den här besökaren.",
"PageRefreshed": "Antal gånger denna sida har besökts \/ uppdateras i rad.",
+ "PluginDescription": "Ger tillgång till Besöksloggen i realtid och låter dig hålla koll på dina besökare live i realtids instrumentpanelen. Tillägget låter dig också se en Besöksprofil för valfri användare.",
"PreviousVisitor": "Förgående besökare",
"RealTimeVisitorCount": "Besöksräknare i realtid",
"Referrer_URL": "Hänvisningsadress",
@@ -34,6 +35,10 @@
"VisitorsInRealTime": "Besökare i realtid",
"VisitorsLastVisit": "Denna besökares senaste besök var %s dagar sedan.",
"VisitsFrom": "%1$s%2$s besökta %3$s från",
+ "VisitSummary": "Spenderade totalt %1$s%2$s på webbplatsen%3$s och kollade på %4$s sidor%5$s under %6$s besök%7$s.",
+ "VisitSummaryWithActionDetails": "Spenderade totalt %1$s%2$s på webbplatsen%3$s och genomförde %4$s händelser%5$s (%6$s) under %7$s besök%8$s.",
+ "RowActionTooltipDefault": "Visa Besöksloggen med segmentering baserat på denna rad",
+ "RowActionTooltipWithDimension": "Visa Besöksloggen med segmentering baserat på detta %s",
"RowActionTooltipTitle": "Öppna segmenterade besöksloggar",
"SegmentedVisitorLogTitle": "Besökslogg visar var besökarna %1$s och \"%2$s\" är",
"OnClickPause": "%s är startad. Klicka för att pausa.",
diff --git a/plugins/Live/lang/uk.json b/plugins/Live/lang/uk.json
index 862b663062..52137fc6c9 100644
--- a/plugins/Live/lang/uk.json
+++ b/plugins/Live/lang/uk.json
@@ -1,11 +1,47 @@
{
"Live": {
+ "AbandonedCartSummary": "%1$s кинутих кошиків%2$s та %3$s кинуті речей%4$s на загальну суму %5$s%6$s.",
+ "AveragePageGenerationTime": "В середньому потрібно %1$s у цього відвідувача для повного завантаження сторінки.",
+ "CalculatedOverNPageViews": "Розраховано на основі цього відвідувача з %1$s переглядом сторінки(ок).",
+ "ClickToViewMoreAboutVisit": "Подивитися більш детальну інформацію про цей візит",
+ "ConvertedNGoals": "Цілей досягнуто: %s",
+ "EcommerceSummaryConversions": "%1$s замовлень%2$s в цілому %3$s%4$s, куплено %5$s предметів%6$s.",
+ "FirstVisit": "Перше відвідування",
"GoalType": "Тип",
- "LastHours": "Останні %s годин(и)",
- "LastMinutes": "Останні %s хвилин(и)",
- "LinkVisitorLog": "Переглянути детальний протокол відвідувача",
- "Referrer_URL": "URL-адреса джерело переходів",
- "VisitorLog": "Протокол відвідувача",
- "VisitorsInRealTime": "Відвідувачі в реальному часі"
+ "HideMap": "приховати карту",
+ "KeywordRankedOnSearchResultForThisVisitor": "Ключове слово %1$s займає %2$s місце на %3$s сторінці пошуку для цього відвідувача",
+ "LastHours": "Останні %s годин",
+ "LastMinutes": "Останні %s хвилин",
+ "LastVisit": "Останнє відвідування",
+ "LinkVisitorLog": "Подивитися детальний журнал відвідувачів",
+ "LoadMoreVisits": "Завантажити більше відвідувачів",
+ "MorePagesNotDisplayed": "Більше сторінок про цього відвідувача не відображається.",
+ "NbVisitor": "1 відвідувач",
+ "NbVisitors": "%s відвідувачів",
+ "NextVisitor": "Наступний відвідувач",
+ "NoMoreVisits": "Більше немає відвідувань у цього відвідувача.",
+ "PageRefreshed": "Скільки разів ця сторінка була переглянута \/ оновлена ​​кілька ряд поспіль.",
+ "PluginDescription": "Показує актуальний журнал відвідувачів та дозволяє дивитися ваших відвідувачів в режимі реального часу на приладовій панелі віджетів. Плагін також дозволяє переглядати профіль відвідувача даного користувача.",
+ "PreviousVisitor": "Попередній відвідувач",
+ "RealTimeVisitorCount": "Лічильник відвідувачів в реальному часі",
+ "Referrer_URL": "URL джерела",
+ "ShowMap": "показати карту",
+ "SimpleRealTimeWidget_Message": "%1$s і %2$s за останні %3$s",
+ "ViewVisitorProfile": "Переглянути профіль відвідувача",
+ "VisitedPages": "Відвідані сторінки",
+ "VisitorLog": "Журнал відвідувачів",
+ "VisitorLogDocumentation": "Ця таблиця показує останні відвідування за обраний період. Ви можете бачити час останніх відвідин користувача при наведенні миші на дату відвідування. %1$s Якщо період включає сьогоднішній день, ви можете спостерігати за відвідувачами в реальному часі! %2$s Дані тут завжди відображаються в режимі реального часу незалежно від того, як часто ви використовуєте архівацію по крону.",
+ "VisitorProfile": "Профіль користувача",
+ "VisitorsInRealTime": "Відвідувачі в реальному часі",
+ "VisitorsLastVisit": "Останнє відвідування цього користувача було %s днів назад.",
+ "VisitsFrom": "%1$s%2$s візитів%3$s від",
+ "VisitSummary": "Провів в цілому %1$s%2$s на сайті%3$s, і переглянв %4$s сторінок%5$s в %6$s візитах%7$s.",
+ "VisitSummaryWithActionDetails": "Провів в цілому %1$s%2$s на сайті%3$s, і виконав %4$s дій%5$s (%6$s) в %7$s візитах%8$s.",
+ "RowActionTooltipDefault": "Показати журнал відвідувачів, сегментований по цьому рядку",
+ "RowActionTooltipWithDimension": "Показати журнал відвідувань сегментованих по цій %s",
+ "RowActionTooltipTitle": "Відкрити сегментований журнал відвідувачів",
+ "SegmentedVisitorLogTitle": "Перегляд журналу відвідувань, де %1$s є \"%2$s\"",
+ "OnClickPause": "%s запущено. Натисніть, щоб призупинити.",
+ "OnClickStart": "%s зупинено. Натисніть, щоб розпочати."
}
} \ No newline at end of file
diff --git a/plugins/Live/templates/_actionsList.twig b/plugins/Live/templates/_actionsList.twig
index d4ee6c203f..8d8bc1572a 100644
--- a/plugins/Live/templates/_actionsList.twig
+++ b/plugins/Live/templates/_actionsList.twig
@@ -101,10 +101,16 @@
and previousAction.url|default(false) == action.url %}
{# For events, do not show (url) if the Event URL is the same as the URL last displayed #}
{% else %}
+ {% if action.url|trim|lower starts with 'javascript:' or
+ action.url|trim|lower starts with 'vbscript:' or
+ action.url|trim|lower starts with 'data:' %}
+ {{ action.url }}
+ {% else %}
<a href="{{ action.url }}" rel="noreferrer" target="_blank" class="{% if action.eventCategory|default(false) is empty %}action-list-url{# don't put URL on new line for events #}{% endif %} truncated-text-line"
{% if overrideLinkStyle is not defined or overrideLinkStyle %}style="text-decoration:underline;"{% endif %}>
{{ action.url }}
</a>
+ {% endif %}
{% endif %}
{% if action.type == 'action' and action.pageTitle|default(false) is not empty %}</p>{% endif %}
{% elseif action.type != 'search' and action.type != 'event' %}
diff --git a/plugins/Login/lang/cs.json b/plugins/Login/lang/cs.json
index 2395841b94..39c4b874b0 100644
--- a/plugins/Login/lang/cs.json
+++ b/plugins/Login/lang/cs.json
@@ -12,6 +12,7 @@
"LoginOrEmail": "Uživatelské jméno nebo E-mail",
"LoginPasswordNotCorrect": "Chybná kombinace uživatelského jména a hesla.",
"LostYourPassword": "Zapomněli jste vaše heslo?",
+ "MailPasswordChangeBody": "Ahoj %1$s,\n\nz %2$s byl přijat požadavek na reset hesla. Abyste se mohli přihlásit s novými přihlašovacími údaji, navštivte následující odkaz:\n\n%3$s\n\nUpozornění: Změna hesla rovněž změní váš token_auth. Váš nový token_auth naleznete na stránce s vaším nastavením\n\nPokud používáte váš token_auth v externích aplikacích nebo pro archivaci, nezapomeňte h změnit, jinak API požadavky selžou\n\nPoznámka: tento odkaz vyprší za 24 hodin.\n\nA děkujeme, že používáte Piwik!",
"MailTopicPasswordChange": "Potvrďte změnu hesla",
"PasswordChanged": "Vaše heslo bylo změněno.",
"PasswordRepeat": "Heslo (pro kontrolu)",
diff --git a/plugins/Login/lang/de.json b/plugins/Login/lang/de.json
index 79a712d83f..0d606e4cf1 100644
--- a/plugins/Login/lang/de.json
+++ b/plugins/Login/lang/de.json
@@ -12,6 +12,7 @@
"LoginOrEmail": "Benutzername oder E-Mail",
"LoginPasswordNotCorrect": "Benutzername und Passwort sind nicht korrekt",
"LostYourPassword": "Passwort vergessen?",
+ "MailPasswordChangeBody": "Hallo %1$s,\n\nEine Anfrage zum Zurücksetzen des Passworts von %2$s wurde empfangen. Um die Passwortänderung zu bestätigen, damit Sie sich mit Ihren neuen Zugangsdaten anmelden können, besuchen Sie folgenden Link:\n\n%3$s\n\nAchtung: Das Ändern des Passworts wird auch Ihren token_auth ändern. Sie können den neuen token_auth bei Ihren Einstellungen einsehen.\n\nFalls Sie Ihren API token_auth in einem externen Programm oder für die Archivierung einsetzen, vergewissern Sie sich bitte, dass der token_auth aktualisiert wird, sonst werden die Anfragen an die API fehlschlagen.\n\nHinweis: Der Link ist nur 24 Stunden gültig.\n\nUnd vielen Dank, dass Sie Piwik verwenden!",
"MailTopicPasswordChange": "Passwortänderung bestätigen",
"PasswordChanged": "Das Passwort wurde geändert.",
"PasswordRepeat": "Passwort (wiederholen)",
diff --git a/plugins/Login/lang/el.json b/plugins/Login/lang/el.json
index 61ef5c8f57..4657d11fb7 100644
--- a/plugins/Login/lang/el.json
+++ b/plugins/Login/lang/el.json
@@ -12,6 +12,7 @@
"LoginOrEmail": "Χρήστης ή Ηλεκτρονική διεύθυνση",
"LoginPasswordNotCorrect": "Το όνομα χρήστη και ο κωδικός δεν είναι σωστά",
"LostYourPassword": "Ξεχάσατε τον κωδικό σας;",
+ "MailPasswordChangeBody": "Γεια σας %1$s,\n\nΈχει ληφθεί αίτηση αρχικοποίησης του συνθηματικού από %2$s. Για να επιβεβαιώσετε την αλλαγή συνθηματικού ώστε να μπορείτε να κάνετε είσοδο με τα νέα σας στοιχεία, επισκεφθείτε τον παρακάτω σύνδεσμο:\n\n%3$s\n\nΠροσοχή: Η αλλαγή του συνθηματικού θα προκαλέσει την αλλαγή του token_auth. Μπορείτε να δείτε το νέο σας token_auth στη σελίδα ρυθμίσεων σας.\n\nΑν χρησιμοποιείτε το token_auth με API από εξωτερικές εφαρμογές ή για την αρχειοθέτηση, βεβαιωθείτε να το ενημερώσετε, διαφορετικά οι κλήσεις στο API θα αποτυγχάνουν.\n\nΣημείωση: Ο σύνδεσμος θα λήξει σε 24 ώρες.\n\nΕυχαριστούμε που χρησιμοποιείτε το Piwik!",
"MailTopicPasswordChange": "Επιβεβαίωση Αλλαγής Κωδικού",
"PasswordChanged": "Ο κωδικός σας έχει αλλάξει.",
"PasswordRepeat": "Κωδικός (επανάληψη)",
diff --git a/plugins/Login/lang/fr.json b/plugins/Login/lang/fr.json
index 8d08b149b6..ee65f9e94c 100644
--- a/plugins/Login/lang/fr.json
+++ b/plugins/Login/lang/fr.json
@@ -5,12 +5,14 @@
"ExceptionInvalidSuperUserAccessAuthenticationMethod": "Un utilisateur avec un accès super utilisateur ne peut être authentifié en utilisant le mécanisme '%s'.",
"ExceptionPasswordMD5HashExpected": "Le paramètre mot de passe doit être le hash MD5 du mot de passe.",
"InvalidNonceOrHeadersOrReferrer": "La sécurité du formulaire a échoué. Veuillez recharger le formulaire et vérifier que vos cookies sont activés. Si vous utilisez un serveur proxy, vous devez %1$s configurer Piwik pour accepter les en-têtes du proxy %2$s qui relaient les en-têtes de l'hôte. Vérifiez aussi que l'en-tête de votre référent est correctement transmis.",
+ "InvalidNonceSSLMisconfigured": "Aussi, vous devriez %1$s forcer Piwik à utiliser une connexion sécurisée%2$s : dans votre fichier de configuration %3$s définissez %4$s la section ci-dessous %5$s",
"InvalidOrExpiredToken": "La clef est invalide ou a expiré",
"InvalidUsernameEmail": "Nom d'utilisateur et\/ou courriel invalide.",
"LogIn": "Connexion",
"LoginOrEmail": "Nom d'utilisateur ou courriel",
"LoginPasswordNotCorrect": "Mot de passe et nom d'utilisateur incorrects.",
"LostYourPassword": "Mot de passe perdu ?",
+ "MailPasswordChangeBody": "Bonjour %1$s,\n\nUne demande de réinitialisation de mot de passe a été reçue depuis %2$s. Pour confirmer le changement de mot de passe afin de pouvoir vous authentifier avec vos nouveaux identifiants, cliquez sur le lien suivant :\n\n%3$s\n\nAttention: modifier le mot de passe va aussi changer votre token_auth. vous pourrez obtenir votre nouveau token_auth sur votre page de paramètres.\n\nSi vous utilisez votre token_auth d'API avec n'importe quelle application externe ou pour de l'archivage, assurez-vous de mettre à jour le token_auth ou bien les requêtes vers l'API vont échouer.\n\nNote : ce jeton expirera dans 24 heures.\n\nMerci d'utiliser Piwik !",
"MailTopicPasswordChange": "Confirmer le changement de mot de passe",
"PasswordChanged": "Votre mot de passe a été modifié",
"PasswordRepeat": "Mot de passe (répétez)",
diff --git a/plugins/Login/lang/it.json b/plugins/Login/lang/it.json
index 3750a45a89..06fa2018d4 100644
--- a/plugins/Login/lang/it.json
+++ b/plugins/Login/lang/it.json
@@ -4,7 +4,7 @@
"ContactAdmin": "Possibile ragione: il tuo host potrebbe non avere attive le funzionalità di e-mail.<br \/>Per favore, contatta l'amministratore del server.",
"ExceptionInvalidSuperUserAccessAuthenticationMethod": "Un utente con accesso Super User non può essere autenticato utilizzando il sistema '%s'.",
"ExceptionPasswordMD5HashExpected": "I parametri della password che ci si aspetta sono un hash MD5 della password.",
- "InvalidNonceOrHeadersOrReferrer": "Sicurezza modulo non riuscita. Si prega di ricaricare il modulo e verificare che i cookie siano abilitati. Se si utilizza un server proxy, è necessario %1$s configurare Piwik per accettare gli header del proxy %2$s che inoltri l'header host. Inoltre, verificare che l'intestazione Referer venga inviata correttamente.",
+ "InvalidNonceOrHeadersOrReferrer": "Controllo sicurezza modulo non riuscito. Si prega di ricaricare il modulo e verificare che i cookies siano abilitati. Se si utilizza un server proxy, è necessario %1$sconfigurare Piwik per accettare l'header del proxy %2$s che inoltri all'header host. In più, bisogna verificare che l'header Referer venga inviata correttamente.",
"InvalidNonceSSLMisconfigured": "Inoltre puoi %1$s forzare Piwik a utilizzare una connessione sicura%2$s: nel tuo file di configurazione %3$s imposta %4$s sotto la sezione %5$s",
"InvalidOrExpiredToken": "Token non valido o scaduto",
"InvalidUsernameEmail": "Nome utente e\/o indirizzo e-mail non validi",
@@ -12,6 +12,7 @@
"LoginOrEmail": "Nome utente o E-mail",
"LoginPasswordNotCorrect": "Combinazione Nome utente e Password non corretta",
"LostYourPassword": "Hai perso la password?",
+ "MailPasswordChangeBody": "Salve %1$s,\n\nÈ stata ricevuta una richiesta di cambio password da parte di %2$s. Per confermare questo cambio password puoi accedere con le tue nuove credenziali, seguendo questo link:\n\n%3$s\n\nAttenzione: Il cambio di password cambierà anche il tuo token_auth. Puoi vedere il nuovo token_auth nella tua pagina delle impostazioni.\n\nSe stai utilizzando il tuo token_auth API in applicazioni esterne o per archiviazione, assicurati di aggiornarlo, altrimenti le richieste API falliranno.\n\nNota: questo link scadrà tra 24 ore.\n\nE grazie per utilizzare Piwik!",
"MailTopicPasswordChange": "Conferma Cambio Password",
"PasswordChanged": "La tua password è stata cambiata.",
"PasswordRepeat": "Password (ripeti)",
diff --git a/plugins/Login/lang/nl.json b/plugins/Login/lang/nl.json
index 264f248a49..d3b63d94fc 100644
--- a/plugins/Login/lang/nl.json
+++ b/plugins/Login/lang/nl.json
@@ -11,6 +11,7 @@
"LoginOrEmail": "Login of E-mail",
"LoginPasswordNotCorrect": "Gebruikersnaam & Wachtwoord niet correct",
"LostYourPassword": "Wachtwoord vergeten?",
+ "MailPasswordChangeBody": "Hi %1$s,\n\nWe hebben een verzoek ontvangen om het wachtwoord te wijzigen van %2$s. Bezoek de volgende link om dit te bevestigen: \n\n%3$s\n\nBelangrijk: Het veranderen van het wachtwoord veranderd ook je token_auth. Je kunt je nieuwe token_auth bekijken op je instellingen pagina.\n\nAls je een API token_auth gebruikt bij externe applicaties of voor het archieven, vergeet dan niet om de token_auth te updaten want anders zullen API aanvragen mislukken. \n\nLet op: de link verloopt over 24 uur.\n\nEn dank je wel voor het gebruiken van Piwik!",
"MailTopicPasswordChange": "Bevestig wachtwoord wijziging",
"PasswordChanged": "Je wachtwoord is veranderd.",
"PasswordRepeat": "Wachtwoord (herhaal)",
diff --git a/plugins/Login/lang/pt-br.json b/plugins/Login/lang/pt-br.json
index ef5dd5611f..030e427f24 100644
--- a/plugins/Login/lang/pt-br.json
+++ b/plugins/Login/lang/pt-br.json
@@ -12,6 +12,7 @@
"LoginOrEmail": "Nome de Usuário ou E-mail",
"LoginPasswordNotCorrect": "Combinação errada de Nome de Usuário e senha.",
"LostYourPassword": "Esqueceu a sua senha?",
+ "MailPasswordChangeBody": "Olá %1$s,\n\nUm pedido de redefinição de senha foi recebido de %2$s. Para confirmar esta alteração de senha a fim de que você possa fazer o login com as suas novas credenciais, visite o seguinte link:\n\n%3$s\n\nAtenção: Modificar sua senha também modificará seu token_auth. Você pode procurar o seu novo token_auth na sua página de configurações.\n\nSe você estiver utilizando um API token_auth em qualquer aplicação externa ou para arquivamento, certifique-se de atualizar o token_auth como requisitado pelo API ou falhará de outra forma.\n\nObs.: este link irá expirar em 24 horas.\n\nE agradeço por usar Piwik!",
"MailTopicPasswordChange": "Confirme Alteração de Senha",
"PasswordChanged": "Sua senha foi alterada.",
"PasswordRepeat": "Senha (repetir)",
diff --git a/plugins/Login/lang/ru.json b/plugins/Login/lang/ru.json
index 26b580344c..5429e3e738 100644
--- a/plugins/Login/lang/ru.json
+++ b/plugins/Login/lang/ru.json
@@ -5,12 +5,14 @@
"ExceptionInvalidSuperUserAccessAuthenticationMethod": "Пользователь с правами суперпользователя не может пройти проверку подлинности с помощью данного механизма: '%s'.",
"ExceptionPasswordMD5HashExpected": "Параметр пароля вероятно является MD5-хэшем пароля.",
"InvalidNonceOrHeadersOrReferrer": "Ошибка при загрузки формы безопасности. Пожалуйста, обновите форму и проверьте, что ваши cookies включены. Если вы используете прокси-сервер, вы должны %1$s настроить принятие прокси-заголовков в Piwik%2$s, которые следуют за названием хоста. Также убедитесь, что заголовки источника трафика отправляются верно.",
+ "InvalidNonceSSLMisconfigured": "Также, вы можете %1$s принудить Piwik использовать безопасное соединение%2$s: в вашем файле конфигурации %3$s установите %4$s под разделом %5$s",
"InvalidOrExpiredToken": "Код неправильный или просрочен.",
"InvalidUsernameEmail": "Неверное имя пользователя и\/или e-mail",
"LogIn": "Войти",
"LoginOrEmail": "Имя пользователя или E-mail",
"LoginPasswordNotCorrect": "Логин или пароль неверны",
"LostYourPassword": "Потеряли пароль?",
+ "MailPasswordChangeBody": "Привет %1$s,\n\n%2$s был получен запрос на сброс пароля. Чтобы подтвердить изменение пароля и чтобы было можно войти со своими новыми настройками, пройдите по следующей ссылке:\n\n%3$s\n\nВнимание: Изменение пароля также изменит ваш token_auth. Вы можете найти свой новый token_auth на своеon your settings page.\n\nЕсли вы используете свой API token_auth в каком-либо приложении для архивации, убедитесь, что вы обновили token_auth, так как в ином случае запросы к API потерпят неудачу.\n\nВнимание: эта ссылка станет недействительной через 24 часа.\n\nИ спасибо за то, что вы используете Piwik!",
"MailTopicPasswordChange": "Подтвердите смену пароля",
"PasswordChanged": "Ваш пароль был изменен.",
"PasswordRepeat": "Пароль еще раз",
diff --git a/plugins/Login/lang/sq.json b/plugins/Login/lang/sq.json
index 04d268333c..e69d2a1491 100644
--- a/plugins/Login/lang/sq.json
+++ b/plugins/Login/lang/sq.json
@@ -1,16 +1,24 @@
{
"Login": {
+ "ConfirmationLinkSent": "Te email-i juaj u dërgua një lidhje ripohimi. Kontrolloni email-in tuaj dhe vizitoni atë lidhje që të autorizoni kërkesën tuaj për ndryshim të fjalëkalimit.",
"ContactAdmin": "Arsye e mundshme: streha juaj mund të ketë çaktivizuar funksionin mail(). <br \/>Ju lutem, lidhuni me përgjegjësin e Piwik-ut tuaj.",
+ "ExceptionInvalidSuperUserAccessAuthenticationMethod": "Një përdorues me të drejta Superpërdoruesi nuk mund të bëjë mirëfilltësimin e vetes duke përdorur mekanizmin '%s'.",
"ExceptionPasswordMD5HashExpected": "Parametri i fjalëkalimit pritet të jetë një hash MD5 fjalëkalimi.",
"InvalidNonceOrHeadersOrReferrer": "Siguria e formularit dështoi. Ju lutem, ringarkoni formularin dhe kontrolloni nëse janë të aktivizuara \"cookie\"-et tuaja. Nëse përdorni një shërbyes ndërmjetës, duhet ta formësoni %1$s Piwik-un që të pranojë titull ndërmjetësi%2$s i cili përcjell titull Strehe. Kontrolloni gjithashtu që titulli i Referuesit dërgohet saktë.",
+ "InvalidNonceSSLMisconfigured": "Po ashtu, mund %1$sta detyroni Piwik-un të përdorë një lidhje të sigurt%2$s: te kartela juaj %3$s rregulloni %4$s nën ndarjen %5$s",
"InvalidOrExpiredToken": "Elementi është i pavlefshëm ose ka skaduar",
"InvalidUsernameEmail": "Emër përdoruesi dhe\/ose vendndodhje e-mail e pavlefshme",
"LogIn": "Hyni",
"LoginOrEmail": "Emër hyrjeje ose E-mail",
"LoginPasswordNotCorrect": "Emër përdoruesi & Fjalëkalim jo të saktë",
"LostYourPassword": "Humbët fjalëkalimin tuaj?",
+ "MailPasswordChangeBody": "Njatjeta %1$s,\n\nPrej %2$s ka ardhur një kërkesë për ricaktim fjalëkalimi. Për ripohim të këtij ndryshimi fjalëkalimi, që të mund hyni me kredenciale të reja, vizitoni lidhjen vijuese:\n\n%3$s\n\nKujdes: Ndryshimi i fjalëkalimit do të sjellë edhe ndryshimin e token_auth tuaj. token_auth tuaj të ri mund ta shihni te faqja e rregullimeve tuaja.\n\nNëse token_auth tuaj për API e përdorni në ndonjë aplikacion të jashtëm ose për arkivim, sigurohuni që ta përditësoni token_auth atje, përndryshe kërkesat te API do të dështojnë.\n\nShënim: kjo lidhje do të skadojë pas 24 orësh.\n\nDhe faleminderit që përdorni Piwik-un!",
+ "MailTopicPasswordChange": "Ripohoni Ndryshimin e Fjalëkalimit",
+ "PasswordChanged": "Fjalëkalimi juaj u ndryshua.",
"PasswordRepeat": "Fjalëkalim (sërish)",
"PasswordsDoNotMatch": "Fjalëkalimet nuk përputhen.",
- "RememberMe": "Mbamë Mend"
+ "PluginDescription": "Ofron mirëfilltësim përmes emri përdoruesi dhe fjalëkalimi, si dhe funksionin e ricaktimit të fjalëkalimeve. Metoda e mirëfilltësimit mund të ndryshohet duke përdorur një tjetër shtojcë Hyrjesh, të tillë si LoginLdap, të cilën e gjeni te Marketplace-i.",
+ "RememberMe": "Mbamë Mend",
+ "ResetPasswordInstructions": "Jepni një fjalëkalim të ri për llogarinë tuaj."
}
} \ No newline at end of file
diff --git a/plugins/Login/lang/sv.json b/plugins/Login/lang/sv.json
index 6aea11e06c..ffcece6418 100644
--- a/plugins/Login/lang/sv.json
+++ b/plugins/Login/lang/sv.json
@@ -5,12 +5,14 @@
"ExceptionInvalidSuperUserAccessAuthenticationMethod": "En användare med Superanvändaråtkomst kan inte bli autensieras vid användande av '%s' mekanism.",
"ExceptionPasswordMD5HashExpected": "Lösenordsparametern förväntas bli en MD5-hash av lösenordet.",
"InvalidNonceOrHeadersOrReferrer": "Formulärets säkerhet misslyckades. Vänligen ladda formuläret och kontrollera att cookies är aktiverade. Om du använder en proxyserver måste du %1$s konfigurera Piwik att acceptera proxy huvuden %2$s som överför Host-huvuden. Kontrollera också att din Referer header skickas korrekt.",
+ "InvalidNonceSSLMisconfigured": "Du kan även %1$s kräva att Piwik använder en säker anslutning%2$s: för att göra detta konfigurerar du din konfigurationsfil %3$s med %4$s nedan sektioner%5$s",
"InvalidOrExpiredToken": "Lösenordsbevis är felaktigt eller har utgått.",
"InvalidUsernameEmail": "Felaktigt användarnamn och\/eller e-postadress",
"LogIn": "Logga in",
"LoginOrEmail": "Användarnamn eller e-postadress",
"LoginPasswordNotCorrect": "Användarnamn & Lösenord är inte korrekta",
"LostYourPassword": "Glömt ditt lösenord?",
+ "MailPasswordChangeBody": "Hej %1$s,\n\nEn begäran om återställning av ditt lösenord togs emot från %2$s. För att bekräfta ändringen av lösenordet, vänligen gå till följande länk:\n\n%3$s\n\nNotering: Genom att ändra ditt lösenord så ändras även token_auth. Du kan ta reda på ditt nya token_auth på sidan för inställningar.\n\nOm du använder din API token_auth i några externa applikationer eller för arkivering kontrollera så att du har uppdaterat din token_auth annars är risken att anrop till API't misslyckas.\n\nNotering: denna länk kommer att sluta fungera efter 24 timmar.\n\nTack för att du använder dig av Piwik!",
"MailTopicPasswordChange": "Bekräfta byte av lösenord",
"PasswordChanged": "Ditt lösenord har ändrats.",
"PasswordRepeat": "Lösenord (bekräfta)",
diff --git a/plugins/Login/lang/uk.json b/plugins/Login/lang/uk.json
index 525720893d..90426fe99f 100644
--- a/plugins/Login/lang/uk.json
+++ b/plugins/Login/lang/uk.json
@@ -1,15 +1,24 @@
{
"Login": {
- "ContactAdmin": "Можлива причина: функція mail() відключена в налаштуваннях вашого хостингу.<br\/>Зверніться, будь ласка, до вашого Piwik-адміністратора.",
- "ExceptionPasswordMD5HashExpected": "Очікується що параметр паролю буде MD5() хеш від введеного паролю.",
- "InvalidOrExpiredToken": "Код невірний або прострочений.",
- "InvalidUsernameEmail": "Невірне ім'я користувача та\/або E-mail",
+ "ConfirmationLinkSent": "Посилання з підтвердженням було відправлено ​​на ваш e-mail. Перевірте свій e-mail і перейдіть по відправленої вам посиланням.",
+ "ContactAdmin": "Можлива причина: функція mail() відключена. <br \/>Будь ласка, зв'яжіться з адміністратором.",
+ "ExceptionInvalidSuperUserAccessAuthenticationMethod": "Користувач з правами суперкористувача не може пройти перевірку автентичності за допомогою даного механізму: '%s'.",
+ "ExceptionPasswordMD5HashExpected": "Параметр пароля ймовірно є MD5-хешем пароля.",
+ "InvalidNonceOrHeadersOrReferrer": "Помилка при завантаження форми безпеки. Будь ласка, поновіть форму і перевірте, що ваші cookies включені. Якщо ви використовуєте проксі-сервер, ви повинні %1$s налаштувати прийняття проксі-заголовків в Piwik%2$s, які слідують за назвою хосту. Також переконайтеся, що заголовки джерела трафіку відправляються вірно.",
+ "InvalidNonceSSLMisconfigured": "Також, ви можете %1$s примусово увійти в Piwik використовуючи захищене з'єднання%2$s: у файлі конфігурації %3$s встановіть %4$s нижче розділу %5$s",
+ "InvalidOrExpiredToken": "Код неправильний або прострочений.",
+ "InvalidUsernameEmail": "Неправильне ім'я користувача і\/або e-mail",
"LogIn": "Увійти",
"LoginOrEmail": "Ім'я користувача або E-mail",
- "LoginPasswordNotCorrect": "Ім'я користувача та пароль невірні",
- "LostYourPassword": "Забули свій пароль?",
- "PasswordRepeat": "Пароль (повтор)",
- "PasswordsDoNotMatch": "Паролі не співпадають",
- "RememberMe": "Пам’ятати мене"
+ "LoginPasswordNotCorrect": "Логін або пароль невірні",
+ "LostYourPassword": "Втратили пароль?",
+ "MailPasswordChangeBody": "Привіт %1$s,\n\nA Запит на скидання пароля був отриманий від %2$s. Щоб підтвердити цю зміна пароля, так щоб ви могли увійти в систему з новими обліковими даними, перейдіть за наступним посиланням:\n\n%3$s\n\nУвага: Зміна пароля також змінить ваш token_auth. Ви можете подивитися Ваш новий token_auth на сторінці налаштувань.\n\nЯкщо ви використовуєте Ваш API token_auth у будь-яких зовнішніх програмах чи для архівування, обов'язково оновіть token_auth для запитів до API, тому що він зміниться.\n\nПримітка: це посилання діє протягом 24 годин.\n\nІ спасибі за використання Piwik!",
+ "MailTopicPasswordChange": "Підтвердіть зміну пароля",
+ "PasswordChanged": "Ваш пароль був змінений.",
+ "PasswordRepeat": "Пароль ще раз",
+ "PasswordsDoNotMatch": "Паролі не співпадають.",
+ "PluginDescription": "Надає авторизацію через ім'я користувача і пароль, а також функцію скидання паролю. Спосіб авторизації може бути змінений якщо використовувати інший Login плагін, такий як LoginLdap, доступний через Маркет.",
+ "RememberMe": "Запам'ятати мене",
+ "ResetPasswordInstructions": "Введіть новий пароль для вашого облікового запису."
}
} \ No newline at end of file
diff --git a/plugins/LoginHttpAuth b/plugins/LoginHttpAuth
-Subproject 08d0c34ab8038486038a3312ac6007278b2a1c2
+Subproject 06e16190bee3121a9b707d00e055f57e22da3f8
diff --git a/plugins/MobileAppMeasurable/lang/ru.json b/plugins/MobileAppMeasurable/lang/ru.json
new file mode 100644
index 0000000000..30652510a8
--- /dev/null
+++ b/plugins/MobileAppMeasurable/lang/ru.json
@@ -0,0 +1,5 @@
+{
+ "MobileAppMeasurable": {
+ "MobileApp": "Мобильное приложение"
+ }
+} \ No newline at end of file
diff --git a/plugins/MobileAppMeasurable/lang/sq.json b/plugins/MobileAppMeasurable/lang/sq.json
index d1bc97551c..4ee1569244 100644
--- a/plugins/MobileAppMeasurable/lang/sq.json
+++ b/plugins/MobileAppMeasurable/lang/sq.json
@@ -1,6 +1,7 @@
{
"MobileAppMeasurable": {
"MobileApp": "Aplikacion Celulari",
- "MobileApps": "Aplikacione Celulari"
+ "MobileApps": "Aplikacione Celulari",
+ "MobileAppDescription": "Një aplikacion celulari, i shkruar në gjuhën origjinale të vetë sistemit, për iOS, Android ose çfarëdo sistemi tjetër operativ për celular."
}
} \ No newline at end of file
diff --git a/plugins/MobileAppMeasurable/lang/uk.json b/plugins/MobileAppMeasurable/lang/uk.json
new file mode 100644
index 0000000000..818e6ddda5
--- /dev/null
+++ b/plugins/MobileAppMeasurable/lang/uk.json
@@ -0,0 +1,7 @@
+{
+ "MobileAppMeasurable": {
+ "MobileApp": "Мобільний Додаток",
+ "MobileApps": "Мобільні Додатки",
+ "MobileAppDescription": "Власний мобільний додаток для IOS, Android або будь-який іншої мобільної операційної системи."
+ }
+} \ No newline at end of file
diff --git a/plugins/Morpheus/templates/admin.twig b/plugins/Morpheus/templates/admin.twig
index 73a898a732..4fc89289e8 100644
--- a/plugins/Morpheus/templates/admin.twig
+++ b/plugins/Morpheus/templates/admin.twig
@@ -24,7 +24,7 @@
</div>
{% import 'ajaxMacros.twig' as ajax %}
- {{ ajax.requestErrorDiv(emailSuperUser|default(''), arePiwikProAdsEnabled) }}
+ {{ ajax.requestErrorDiv(emailSuperUser|default(''), areAdsForProfessionalServicesEnabled, currentModule) }}
{{ postEvent("Template.beforeContent", "admin", currentModule) }}
<div class="page">
diff --git a/plugins/Morpheus/templates/ajaxMacros.twig b/plugins/Morpheus/templates/ajaxMacros.twig
index 267ff8e83d..2a4584c425 100644
--- a/plugins/Morpheus/templates/ajaxMacros.twig
+++ b/plugins/Morpheus/templates/ajaxMacros.twig
@@ -13,7 +13,7 @@
</div>
{% endmacro %}
-{% macro requestErrorDiv(emailSuperUser, arePiwikProAdsEnabled = false) %}
+{% macro requestErrorDiv(emailSuperUser, areAdsForProfessionalServicesEnabled = false, currentModule = '') %}
<div id="loadingError">
<div class="alert alert-danger">
@@ -29,9 +29,10 @@
<a rel="noreferrer" target="_blank" href="https://piwik.org/faq/troubleshooting/faq_19489/">{{ 'General_Faq'|translate }}</a> –
<a rel="noreferrer" target="_blank" href="http://forum.piwik.org/">{{ 'Feedback_CommunityHelp'|translate }}</a>
- {%- if arePiwikProAdsEnabled %}
+ {%- if areAdsForProfessionalServicesEnabled %}
- <a rel="noreferrer" target="_blank" href="{{ 'https://piwik.pro/'|piwikProCampaignParameters('Help', 'AjaxError')|e('html_attr') }}">{{ 'Feedback_ProfessionalHelp'|translate }}</a>
+ {% set supportUrl = 'https://piwik.org/support/?pk_campaign=Help&pk_medium=AjaxError&pk_content=' ~ currentModule ~ '&pk_source=Piwik_App' %}
+ <a rel="noreferrer" target="_blank" href="{{ supportUrl|e('html_attr') }}">{{ 'Feedback_ProfessionalHelp'|translate }}</a>
{%- endif %}.
</div>
</div>
diff --git a/plugins/Morpheus/templates/javascriptCode.tpl b/plugins/Morpheus/templates/javascriptCode.tpl
index 125259b807..18483dd09d 100644
--- a/plugins/Morpheus/templates/javascriptCode.tpl
+++ b/plugins/Morpheus/templates/javascriptCode.tpl
@@ -6,7 +6,7 @@
(function() {
{$setTrackerUrl}
{$optionsBeforeTrackerUrl}_paq.push(['setTrackerUrl', u+'piwik.php']);
- _paq.push(['setSiteId', {$idSite}]);
+ _paq.push(['setSiteId', '{$idSite}']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
diff --git a/plugins/Morpheus/templates/layout.twig b/plugins/Morpheus/templates/layout.twig
index 83b96d545e..bca60d1e95 100644
--- a/plugins/Morpheus/templates/layout.twig
+++ b/plugins/Morpheus/templates/layout.twig
@@ -23,7 +23,9 @@
{% include "@CoreHome/_favicon.twig" %}
{% include "_jsGlobalVariables.twig" %}
{% include "_jsCssIncludes.twig" %}
+
{%- if not isCustomLogo %}<link rel="manifest" href="plugins/CoreHome/javascripts/manifest.json">{% endif %}
+
{% endblock %}
</head>
<body id="{{ bodyId|default('') }}" ng-app="app" class="{{ bodyClass|default('') }}">
diff --git a/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js b/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js
index 35cf26a5de..41fcb81d9f 100644
--- a/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js
+++ b/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js
@@ -19,7 +19,7 @@
$scope.idSite = piwik.broadcast.getValueFromUrl('idSite');
$scope.url = piwik.piwik_url;
$scope.period = piwik.period;
- $scope.arePiwikProAdsEnabled = piwik.config && piwik.config.are_ads_enabled;
+ $scope.areAdsForProfessionalServicesEnabled = piwik.config && piwik.config.are_ads_enabled;
this.refresh = function (interval) {
multisitesDashboardModel.refreshInterval = interval;
diff --git a/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html b/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html
index 46bba85aad..a0354621b8 100644
--- a/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html
+++ b/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html
@@ -66,8 +66,8 @@
<a rel="noreferrer" target="_blank" href="https://piwik.org/faq/troubleshooting/faq_19489/">{{ 'General_Faq'|translate }}</a>
<a rel="noreferrer" target="_blank" href="http://forum.piwik.org/">{{ 'Feedback_CommunityHelp'|translate }}</a>
- <span ng-show="arePiwikProAdsEnabled"> – </span>
- <a ng-show="arePiwikProAdsEnabled" rel="noreferrer" target="_blank" href="https://piwik.pro/?pk_campaign=Help&pk_medium=AjaxError&pk_content=MultiSites&pk_source=Piwik_App">{{ 'Feedback_ProfessionalHelp'|translate }}</a>.
+ <span ng-show="areAdsForProfessionalServicesEnabled"> – </span>
+ <a ng-show="areAdsForProfessionalServicesEnabled" rel="noreferrer" target="_blank" href="https://piwik.org/support/?pk_campaign=Help&pk_medium=AjaxError&pk_content=MultiSites&pk_source=Piwik_App">{{ 'Feedback_ProfessionalHelp'|translate }}</a>.
</div>
</td>
</tr>
diff --git a/plugins/MultiSites/lang/tr.json b/plugins/MultiSites/lang/tr.json
new file mode 100644
index 0000000000..a91f1ebf19
--- /dev/null
+++ b/plugins/MultiSites/lang/tr.json
@@ -0,0 +1,9 @@
+{
+ "MultiSites": {
+ "Evolution": "Gelişme",
+ "LoadingWebsites": "Web siteleri yükleniyor",
+ "PluginDescription": "Tüm web sitesi ve uygulamalarınızı kullanışlı 'Tüm Web Siteleri' panosu ile görüp karşılaştırabilirsiniz.",
+ "TopLinkTooltip": "Tüm web sitelerinizin istatistiklerini karşılaştırın.",
+ "Pagination": "%1$s - %2$s of %3$s"
+ }
+} \ No newline at end of file
diff --git a/plugins/MultiSites/lang/uk.json b/plugins/MultiSites/lang/uk.json
index b6f687fd7c..e034de8c70 100644
--- a/plugins/MultiSites/lang/uk.json
+++ b/plugins/MultiSites/lang/uk.json
@@ -1,5 +1,9 @@
{
"MultiSites": {
- "Evolution": "Зміна"
+ "Evolution": "Еволюція",
+ "LoadingWebsites": "Завантаження сайтів",
+ "PluginDescription": "Подивитися і порівняти всі ваші веб-сайти і додатки в цій корисній 'Усі сайти' панелі приладів.",
+ "TopLinkTooltip": "Порівняйте веб-аналітику для всіх ваших сайтів.",
+ "Pagination": "%1$s - %2$s з %3$s"
}
} \ No newline at end of file
diff --git a/plugins/MultiSites/plugin.json b/plugins/MultiSites/plugin.json
deleted file mode 100644
index 1bf22b2dbd..0000000000
--- a/plugins/MultiSites/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "authors": [
- {
- "name": "Piwik PRO",
- "homepage": "http://piwik.pro"
- }
- ]
-} \ No newline at end of file
diff --git a/plugins/MultiSites/tests/Integration/MultiSitesTest.php b/plugins/MultiSites/tests/Integration/MultiSitesTest.php
index 8b6d7924a7..b027bef0b7 100644
--- a/plugins/MultiSites/tests/Integration/MultiSitesTest.php
+++ b/plugins/MultiSites/tests/Integration/MultiSitesTest.php
@@ -9,6 +9,7 @@
namespace Piwik\Plugins\MultiSites\tests\Integration;
use Piwik\Access;
+use Piwik\FrontController;
use Piwik\Plugins\MultiSites\API as APIMultiSites;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
@@ -49,4 +50,28 @@ class MultiSitesTest extends IntegrationTestCase
// safety net
$this->assertEquals(0, $dataTable->getFirstRow()->getColumn('nb_visits'));
}
+
+ /**
+ * Testing that getOne does not error out when format=rss, #10407
+ *
+ * @group Plugins
+ */
+ public function testWhenRssFormatGetOneDoesNotError()
+ {
+ $_GET = array(
+ 'method' => 'MultiSites.getOne',
+ 'idSite' => $this->idSiteAccess,
+ 'period' => 'month',
+ 'date' => 'last10',
+ 'format' => 'rss'
+ );
+
+ $output = FrontController::getInstance()->fetchDispatch('API');
+
+ $this->assertContains('<item>', $output);
+ $this->assertContains('</rss>', $output);
+ $this->assertNotContains('error', $output);
+
+ $_GET = array();
+ }
}
diff --git a/plugins/Overlay/client/urlnormalizer.js b/plugins/Overlay/client/urlnormalizer.js
index 7dd6a8f274..4b5e403c2f 100644
--- a/plugins/Overlay/client/urlnormalizer.js
+++ b/plugins/Overlay/client/urlnormalizer.js
@@ -66,7 +66,7 @@ var Piwik_Overlay_UrlNormalizer = (function () {
return {
initialize: function () {
- this.setCurrentDomain(document.location.hostname);
+ this.setCurrentDomain(document.location.host);
this.setCurrentUrl(window.location.href);
var head = document.getElementsByTagName('head');
@@ -197,4 +197,4 @@ var Piwik_Overlay_UrlNormalizer = (function () {
};
-})(); \ No newline at end of file
+})();
diff --git a/plugins/Overlay/lang/de.json b/plugins/Overlay/lang/de.json
index 12391dc874..73e0124596 100644
--- a/plugins/Overlay/lang/de.json
+++ b/plugins/Overlay/lang/de.json
@@ -1,7 +1,7 @@
{
"Overlay": {
"Clicks": "%s Klicks",
- "ClicksFromXLinks": "%1$s klicks von einem von %2$s Verweisen",
+ "ClicksFromXLinks": "%1$s Klicks von einem von %2$s Verweisen",
"Domain": "Domain",
"ErrorNotLoading": "Die Seiten Overlay Sitzung kann gerade nicht aufgerufen werden.",
"ErrorNotLoadingDetails": "Möglicherweise hat die rechte Seite keinen Piwik Tracking Code. In diesem Fall bitte versuchen das Overlay für eine andere Seite aus dem Seitenbericht zu benutzen.",
diff --git a/plugins/Overlay/lang/it.json b/plugins/Overlay/lang/it.json
index f220c226da..cf2d12b949 100644
--- a/plugins/Overlay/lang/it.json
+++ b/plugins/Overlay/lang/it.json
@@ -15,7 +15,7 @@
"Overlay": "Overlay di Pagina",
"PluginDescription": "Vedi i tuoi dati statistici in sovrapposizione al tuo sito web. Guarda quante volte i tuoi utenti hanno cliccato su ciascun link. Nota: Richiede che sia abilitato il plugin Transitions.",
"RedirectUrlError": "Si sta tentando di aprire la Pagina Overlay per l'URL \"%1$s\". %2$s Nessuno dei domini dalle impostazioni di Piwik corrisponde al link.",
- "RedirectUrlErrorAdmin": "È possibile aggiungere il dominio come un ulteriore URL %1$snelle impostazioni%2$s.",
+ "RedirectUrlErrorAdmin": "È possibile aggiungere il dominio come un ulteriore URL nelle %1$simpostazioni%2$s.",
"RedirectUrlErrorUser": "Chiedi all'amministratore di aggiungere il dominio come un URL aggiuntivo."
}
} \ No newline at end of file
diff --git a/plugins/Overlay/lang/sv.json b/plugins/Overlay/lang/sv.json
index 29de918027..aaa7afe228 100644
--- a/plugins/Overlay/lang/sv.json
+++ b/plugins/Overlay/lang/sv.json
@@ -13,6 +13,7 @@
"OneClick": "1 klick",
"OpenFullScreen": "Gå till helskärmsläge (ingen sidolist)",
"Overlay": "Sidöverlägg",
+ "PluginDescription": "Se din statistikdata som ett Overlay på din faktiska webbplats. Kolla hur många gånger dina användare har klickat på respektive länk. Notering: Kräver att du har aktiverat Översättningstillägget.",
"RedirectUrlError": "Du försöker öppna ett överliggande lager för URL \"%1$s\". %2$s Ingen av domänerna från Piwik's inställningar matchar länken.",
"RedirectUrlErrorAdmin": "Du kan lägga till domänen som en extra URL %1$si inställningarna%2$s.",
"RedirectUrlErrorUser": "Be administratören att lägga till domänen som en extra webbadress"
diff --git a/plugins/Overlay/lang/uk.json b/plugins/Overlay/lang/uk.json
index c3a4786c00..61e9e993e1 100644
--- a/plugins/Overlay/lang/uk.json
+++ b/plugins/Overlay/lang/uk.json
@@ -1,5 +1,21 @@
{
"Overlay": {
- "Location": "Місцезнаходження"
+ "Clicks": "%s кліків",
+ "ClicksFromXLinks": "%1$s кліків від одного з %2$s джерел",
+ "Domain": "Домен",
+ "ErrorNotLoading": "Сторінка накладення сесії не може бути запущена.",
+ "ErrorNotLoadingDetails": "Можливо, сторінка що завантажується праворуч немає трекер коду Piwik. У цьому випадку, спробуйте запустити накладення на різні сторінки.",
+ "ErrorNotLoadingDetailsSSL": "Так як ви використовуєте Piwik по протоколу https, найбільш вірогідною причиною є те, що ваш сайт не підтримує протокол SSL. Спробуйте використовувати Piwik через http.",
+ "ErrorNotLoadingLink": "Отримати додаткові поради щодо усунення неполадок",
+ "Link": "Посилання",
+ "Location": "Місцезнаходження",
+ "NoData": "Немає даних по цій сторінці за обраний період.",
+ "OneClick": "1 клік",
+ "OpenFullScreen": "Перейти до повного екрану",
+ "Overlay": "Глибина проникнення",
+ "PluginDescription": "Переглядайте дані аналітики у вигляді накладення на ваш сайт. Подивіться, скільки разів користувачі натиснули на кожне посилання. Примітка: Потрібна активація плагіну Transitions.",
+ "RedirectUrlError": "Ви намагаєтеся відкрити накладення для URL \"%1$s\". %2$s Жоден з доменів в налаштуваннях Piwik не відповідає посиланню.",
+ "RedirectUrlErrorAdmin": "Можете додати домен як додатковий URL %1$sв налаштуваннях%2$s.",
+ "RedirectUrlErrorUser": "Попросіть адміністратора додати домен як додатковий URL."
}
} \ No newline at end of file
diff --git a/plugins/Overlay/templates/renderSidebar.twig b/plugins/Overlay/templates/renderSidebar.twig
index 36ff9c8ba1..0b8c0fbf80 100644
--- a/plugins/Overlay/templates/renderSidebar.twig
+++ b/plugins/Overlay/templates/renderSidebar.twig
@@ -1,4 +1,4 @@
-<div> <!-- Wrapper is needed that the html can be jqueryfied -->
+<div> <!-- Wrapper is needed that the html can be jQueryfied -->
<!-- This div is removed by JS and the content is put in the location div -->
<div class="overlayLocation">
diff --git a/plugins/PiwikPro/PiwikPro.php b/plugins/PiwikPro/PiwikPro.php
deleted file mode 100644
index 590b2a94b5..0000000000
--- a/plugins/PiwikPro/PiwikPro.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-namespace Piwik\Plugins\PiwikPro;
-
-class PiwikPro extends \Piwik\Plugin
-{
- /**
- * @see Piwik\Plugin::registerEvents
- */
- public function registerEvents()
- {
- return array(
- 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
- );
- }
-
- public function getStylesheetFiles(&$stylesheets)
- {
- $stylesheets[] = 'plugins/PiwikPro/stylesheets/widget.less';
- }
-}
diff --git a/plugins/PiwikPro/config/test.php b/plugins/PiwikPro/config/test.php
deleted file mode 100644
index 327acd5205..0000000000
--- a/plugins/PiwikPro/config/test.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-use Piwik\Tests\Framework\Mock\PiwikPro\Advertising;
-use Piwik\Plugins\PiwikPro\tests\Framework\Mock\Promo;
-
-return array(
- 'Piwik\PiwikPro\Advertising' => function () {
- return new Advertising();
- },
- 'Piwik\Plugins\PiwikPro\Promo' => function () {
- return new Promo();
- }
-);
diff --git a/plugins/PiwikPro/lang/en.json b/plugins/PiwikPro/lang/en.json
deleted file mode 100644
index 34e405f8f0..0000000000
--- a/plugins/PiwikPro/lang/en.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "PiwikPro": {
- "WidgetBlogTitle": "Piwik PRO Blog",
- "WidgetPiwikProAd": "Piwik PRO: Advanced Analytics & Services"
- }
-} \ No newline at end of file
diff --git a/plugins/PiwikPro/plugin.json b/plugins/PiwikPro/plugin.json
deleted file mode 100644
index 089dd4abf2..0000000000
--- a/plugins/PiwikPro/plugin.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "PiwikPro",
- "description": "Provides widgets to follow Piwik PRO blog and to see info about Piwik PRO services and products.",
- "theme": false
-} \ No newline at end of file
diff --git a/plugins/PrivacyManager/DoNotTrackHeaderChecker.php b/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
index 7bdf09a30b..0eecf97434 100644
--- a/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
+++ b/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
@@ -50,7 +50,7 @@ class DoNotTrackHeaderChecker
// this is an optional supplement to the site's tracking status resource at:
// /.well-known/dnt
// per Tracking Preference Expression (draft)
- header('Tk: 1');
+ Common::sendHeader('Tk: 1');
}
}
diff --git a/plugins/PrivacyManager/LogDataPurger.php b/plugins/PrivacyManager/LogDataPurger.php
index 9f21d001d1..3026e7416b 100755
--- a/plugins/PrivacyManager/LogDataPurger.php
+++ b/plugins/PrivacyManager/LogDataPurger.php
@@ -9,6 +9,7 @@
namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
+use Piwik\Container\StaticContainer;
use Piwik\DataAccess\RawLogDao;
use Piwik\Date;
use Piwik\Db;
@@ -100,7 +101,7 @@ class LogDataPurger
// deal w/ log tables that will be purged
$maxIdVisit = $this->getDeleteIdVisitOffset($deleteLogsOlderThan);
if (!empty($maxIdVisit)) {
- foreach ($this->getDeleteTableLogTables() as $table) {
+ foreach (self::getDeleteTableLogTables() as $table) {
// getting an estimate for log_action is not supported since it can take too long
if ($table != Common::prefixTable('log_action')) {
$rowCount = $this->getLogTableDeleteCount($table, $maxIdVisit);
@@ -150,13 +151,20 @@ class LogDataPurger
// let's hardcode, since these are not dynamically created tables
public static function getDeleteTableLogTables()
{
- $result = Common::prefixTables('log_conversion',
- 'log_link_visit_action',
- 'log_visit',
- 'log_conversion_item');
+ $provider = StaticContainer::get('Piwik\Plugin\LogTablesProvider');
+
+ $result = array();
+ foreach ($provider->getAllLogTables() as $logTable) {
+
+ if ($logTable->getColumnToJoinOnIdVisit()) {
+ $result[] = Common::prefixTable($logTable->getName());
+ }
+ }
+
if (Db::isLockPrivilegeGranted()) {
$result[] = Common::prefixTable('log_action');
}
+
return $result;
}
}
diff --git a/plugins/PrivacyManager/lang/el.json b/plugins/PrivacyManager/lang/el.json
index c61f608b45..9e771d4115 100644
--- a/plugins/PrivacyManager/lang/el.json
+++ b/plugins/PrivacyManager/lang/el.json
@@ -55,7 +55,7 @@
"PurgingData": "Εκκαθάριση δεδομενων...",
"RecommendedForPrivacy": "Προτείνεται για λόγους ιδιωτικότητας",
"ReportsDataSavedEstimate": "Μέγεθος βάσης δεδομένων",
- "SaveSettingsBeforePurge": "Έχετε αλλάξει τις ρυθμίσεις διαγραφής δεδομένων. Αποθηκεύστε τες πριν αρχίσετε μια εκκαθάριση.",
+ "SaveSettingsBeforePurge": "Έχετε αλλάξει τις ρυθμίσεις διαγραφής δεδομένων. Αποθηκεύστε τις πριν αρχίσετε την εκκαθάριση.",
"SeeAlsoOurOfficialGuidePrivacy": "Δείτε επίσης τον επίσημο οδηγό μας: %1$sΙδιωτικότητα στα Αναλυτικά Ιστού%2$s",
"Teaser": "Στη σελίδα αυτή, μπορείτε να παραμετροποιήσετε το Piwik ώστε να είναι συμβατό με την υπάρχουσα νομοθεσία για την ιδιωτικότητα, με %1$s ανωνυμοποίηση των διευθύνσεων IP των επισκεπτών %2$s, %3$s αυτόματη διαγραφή των παλιών καταγραφών επισκεπτών από την βάση δεδομένων%4$s και %5$s διάθεση ενός μηχανισμού για μη συμπερίληψη στην καταγραφή για τον ιστοτόπο σας%6$s.",
"TeaserHeadline": "Ρυθμίσεις ιδιωτικού απορρήτου",
diff --git a/plugins/PrivacyManager/lang/it.json b/plugins/PrivacyManager/lang/it.json
index 012b45e312..770b33b81e 100644
--- a/plugins/PrivacyManager/lang/it.json
+++ b/plugins/PrivacyManager/lang/it.json
@@ -2,7 +2,7 @@
"PrivacyManager": {
"AnonymizeIpDescription": "Seleziona \"Sì\" se vuoi che Piwik non mostri gli indirizzi IP completi dei visitatori.",
"AnonymizeIpInlineHelp": "Rende anonimi gli ip dei tuoi visitatori per conformarsi alle leggi o ai regolamenti locali.",
- "AnonymizeIpExtendedHelp": "Quando gli utenti visitano il tuo sito web, Piwik non userà l'indirizzo IP completo (come %1$s) ma lo renderà prima anonimo (%2$s). Questo è uno dei requisiti definiti dalle leggi sulla privacy in alcuni paesi come la Germania.",
+ "AnonymizeIpExtendedHelp": "Quando gli utenti visitano il tuo sito web, Piwik non userà l'indirizzo IP completo (come %1$s) ma lo renderà prima anonimo (così: %2$s). Questo è uno dei requisiti definiti dalle leggi sulla privacy in alcuni paesi come la Germania.",
"AnonymizeIpMaskLengtDescription": "Seleziona quanti byte degli indirizzi IP dei visitatori devono essere nascosti.",
"AnonymizeIpMaskLength": "%1$s byte(s) - es. %2$s",
"CannotLockSoDeleteLogActions": "La tabella log_action non verrà pulita: assicura il privilegio LOCK TABLES all'utente MYSQL '%s'.",
@@ -22,7 +22,7 @@
"DeleteMaxRows": "Numero massimo di righe da cancellare in un passaggio:",
"DeleteMaxRowsNoLimit": "nessun limite",
"DeleteReportsConfirm": "Stai per consentire la cancellazione dei dati dei report. Se i vecchi report vengono rimossi, si dovranno rielaborare per visualizzarli. Sei sicuro di volerlo fare?",
- "DeleteReportsDetailedInfo": "I dati delle tabelle numeriche d'archivio del database (%1$s) e le tabelle d'archivio blob (%2$s) saranno cancellate.",
+ "DeleteReportsDetailedInfo": "I dati delle tabelle numeriche d'archivio del database (%1$s) e delle tabelle d'archivio blob (%2$s) saranno cancellati.",
"DeleteReportsInfo": "Se abilitato, i vecchi report verranno cancellati. %1$sRaccomandiamo di abilitare solo quando lo spazio del database è limitato.%2$s",
"DeleteReportsInfo2": "Se non è stato abilitato \"%s\", i vecchi report verranno automaticamente ricreati quando richiesti.",
"DeleteReportsInfo3": "Se abilitato \"%s\", i dati andranno definitivamente persi.",
@@ -57,7 +57,7 @@
"ReportsDataSavedEstimate": "Dimensioni database",
"SaveSettingsBeforePurge": "Hai cambiato le impostazioni per la cancellazione dei dati. Si consiglia di salvarli prima di cominciare una pulizia.",
"SeeAlsoOurOfficialGuidePrivacy": "Leggi anche la nostra guida ufficiale: %1$sWeb Analytics Privacy%2$s",
- "Teaser": "In questa pagina è possibile personalizzare Piwik per renderlo conforme alle norme vigenti sulla privacy. È possibile %1$s rendere anonimi gli IP dei visitatori%2$s, %3$s rimuovere automaticamente dal database i vecchi log dei visitatori%4$s e %5$s fornire un meccanismo opt-out per il sito%6$s.",
+ "Teaser": "In questa pagina è possibile personalizzare Piwik per renderlo conforme alle norme vigenti sulla privacy. È possibile %1$srendere anonimi gli IP dei visitatori%2$s, %3$srimuovere automaticamente dal database i vecchi log dei visitatori%4$s e %5$sfornire un meccanismo opt-out per il sito%6$s.",
"TeaserHeadline": "Impostazioni privacy",
"UseAnonymizedIpForVisitEnrichment": "Usa anche gli indirizzi IP Anonimi quando si arricchiscono le visite",
"UseAnonymizedIpForVisitEnrichmentNote": "Plugin come Geo Location tramite IP e Provider incrementano i metadati dei visitatori. Di default questi plugin utiizzano gli indirizzi IP resi anonimi. Se selezioni 'No', verrà utilizzato l'indirizzo IP completo non reso anonimo, con la conseguenza di una minore privacy ma con un'accuratezza dei dati migliore.",
diff --git a/plugins/PrivacyManager/lang/sv.json b/plugins/PrivacyManager/lang/sv.json
index a45b254e04..aeefdffd2f 100644
--- a/plugins/PrivacyManager/lang/sv.json
+++ b/plugins/PrivacyManager/lang/sv.json
@@ -2,6 +2,7 @@
"PrivacyManager": {
"AnonymizeIpDescription": "Välj \"Ja\" om du vill att Piwik inte ska spåra fullständiga IP-adresser.",
"AnonymizeIpInlineHelp": "Anonymisera den sista byten av besökarnas IP-adress för att följa lokala lagar om personlig integritet\/riktlinjer.",
+ "AnonymizeIpExtendedHelp": "När användare besöker din webbplats kommer inte Piwik använda deras fullständiga IP-adress (exempelvis %1$s). Istället kommer Piwik anonymisera den först (till %2$s). Anonymisering av IP-adresser är ett krav enligt personuppgiftslagen i några länder såsom Tyskland.",
"AnonymizeIpMaskLengtDescription": "Välj hur många bytes av besökares IP-adresser som ska döljas.",
"AnonymizeIpMaskLength": "%1$s byte(s) - t.ex. %2$s",
"CannotLockSoDeleteLogActions": "Tabellen log_action kommer inte att rensas: vänligen lägg till behörigheten LOCK TABLES till MYSQL-användaren '%s'",
@@ -48,6 +49,7 @@
"LeastMonthsInput": "Ange ett antal månader mer än %s.",
"MenuPrivacySettings": "Integritet",
"NextDelete": "Nästa schemalagda borttagning",
+ "PluginDescription": "Förbättra sekretessen för dina användare och gör så att din Piwik miljös sekretess uppfyller kraven som ställs enligt lokal lagstiftning.",
"PurgeNow": "Rensa databasen nu",
"PurgeNowConfirm": "Du är på väg att permanent radera data från din databas. Är du säker på att du vill fortsätta?",
"PurgingData": "Rensar data...",
diff --git a/plugins/PrivacyManager/lang/uk.json b/plugins/PrivacyManager/lang/uk.json
index 11f63237ac..2fdc90d4f1 100644
--- a/plugins/PrivacyManager/lang/uk.json
+++ b/plugins/PrivacyManager/lang/uk.json
@@ -1,5 +1,68 @@
{
"PrivacyManager": {
- "AnonymizeIpInlineHelp": "Анонімізувати останній байт IP-адреси відвідувача щоб забезпечити відповідність локальним законам\/рекомендаціям забезпечення конфіденційності."
+ "AnonymizeIpDescription": "Виберіть \"Так\", якщо хочете, щоб система відстежувала не повну IP-адресу відвідувачів.",
+ "AnonymizeIpInlineHelp": "Приховати останній байт IP-адрес ваших відвідувачів згідно вашим принципам конфіденційності або законодавству.",
+ "AnonymizeIpExtendedHelp": "Коли користувачі відвідують ваш сайт, Piwik не використовуватиме повний IP-адрес (наприклад, %1$s), а анонимизирует его (например, в %2$s). Анонимизация IP-адреса является одним из требований, установленных законами о конфиденциальности в некоторых странах, таких как Германия.",
+ "AnonymizeIpMaskLengtDescription": "Виберіть, як багато байтів IP-адреси відвідувачів повинно бути приховано.",
+ "AnonymizeIpMaskLength": "%1$s байт(ів), наприклад, %2$s",
+ "CannotLockSoDeleteLogActions": "Таблиця log_action не буде видалена: будь ласка, встановіть привілеї LOCK TABLES для ’%s’ користувача MYSQL.",
+ "ClickHereSettings": "Натисніть тут, щоб перейти до налаштувань: %s.",
+ "CurrentDBSize": "Поточний розмір бази даних",
+ "DBPurged": "База даних очищена.",
+ "DeleteBothConfirm": "Ви збираєтеся видалити дані відвідин сайту і дані за звітами одночасно. Ви більше не зможете переглядати статистику за старими відвідинам. Ви впевнені, що хочете зробити це?",
+ "DeleteDataDescription": "Ви можете налаштувати Piwik для постійного видалення старих даних про відвідування сайту і (або) оброблених звітів, щоб зберігати розмір вашої БД.",
+ "DeleteDataDescription2": "За бажанням заздалегідь оброблені звіти не будуть видалятися. Будуть видалятися тільки відвідування, перегляди сторінок і конверсія. Або заздалегідь оброблені звіти можуть видалятися, а дані по входах збережуться.",
+ "DeleteDataInterval": "Видаляти старі дані кожні",
+ "DeleteOldVisitorLogs": "Видалення старих журналів відвідувача",
+ "DeleteOldArchivedReports": "Видалення старих архівних звітів",
+ "DeleteLogDescription2": "Якщо ви використовуєте автоматичне видалення логів, переконайтеся, що всі попередні звіти за день були оброблені, щоб не втратити ні яких даних.",
+ "DeleteLogInfo": "Будуть видалені логи з наступних таблиць: %s",
+ "DeleteLogsConfirm": "Ви збираєтеся включити видалення даних про відвідування сайту. Коли старі дані по відвідини будуть видалені, а відповідні звіти не оброблені, ви не зможете переглядати аналітичні дані в історичній послідовності. Ви впевнені, що хочете зробити це?",
+ "DeleteLogsOlderThan": "Видалити логи, старше ніж",
+ "DeleteMaxRows": "Максимальне число рядків для видалення за один раз:",
+ "DeleteMaxRowsNoLimit": "немає обмежень",
+ "DeleteReportsConfirm": "Ви збираєтеся включити видалення даних за звітами. Коли старі звіти будуть видалені, ви повинні знову обробити їх, якщо хочете переглянути їх. Ви впевнені що хочете зробити це?",
+ "DeleteReportsDetailedInfo": "Дані бази даних, що містяться в numeric (%1$s) і blob-таблицях (%2$s) будуть видалені.",
+ "DeleteReportsInfo": "Якщо включено, старі звіти будуть видалені. %1$sМи рекомендуємо включати це тільки якщо розмір вашої БД обмежений.%2$s",
+ "DeleteReportsInfo2": "Якщо ви не включили '%s', старі звіти будуть відтворюватися автоматично за запитом.",
+ "DeleteReportsInfo3": "Якщо ви включили '%s', дані будуть назавжди втрачені.",
+ "DeleteReportsOlderThan": "Видалити звіти, старше ніж",
+ "DeleteSchedulingSettings": "Розклад видалення старих даних",
+ "DeleteDataSettings": "Видалення старих логів відвідувань і звітів",
+ "DoNotTrack_Description": "Відмова від відстеження – технологія і пропозиція політики безпеки, яка дозволяє користувачам відмовлятися від того, щоб їх відвідування відстежувалися. Використовується в аналітичних сервісах, рекламних мережах і соціальних платформах.",
+ "DoNotTrack_Disable": "Відключити можливість відмови від відстеження",
+ "DoNotTrack_Disabled": "Piwik зараз відстежує всіх відвідувачів, навіть якщо вони встановили налаштування «Я не хочу, щоб мене відстежували» в своїх браузерах.",
+ "DoNotTrack_DisabledMoreInfo": "Ми рекомендуємо поважати конфіденційність ваших відвідувачів і включити можливість відмови від відстеження.",
+ "DoNotTrack_Enable": "Включити можливість відмови від відстеження",
+ "DoNotTrack_Enabled": "На даний момент ви поважаєте конфіденційність ваших відвідувачів. Браво!",
+ "DoNotTrack_EnabledMoreInfo": "Коли користувач налаштовує свій браузер на «Я не хочу, щоб мене відстежували» (Можливість відмови від відстеження включена), Piwik не буде відслідковувати такі відвідування.",
+ "DoNotTrack_SupportDNTPreference": "Налаштування Відмови від Відстеження",
+ "EstimatedDBSizeAfterPurge": "Очікуваний розмір бази даних після чистки",
+ "EstimatedSpaceSaved": "Очікуваний розмір збереженого простору",
+ "GeolocationAnonymizeIpNote": "Підказка: Геолоакція матиме практично ті ж результати з 1 прихованим байтом IP адреси. Якщо приховано два або більше байтів, геолокація буде визначати місцезнаходження користувача неточно.",
+ "GetPurgeEstimate": "Оцінити очищення бази за часом",
+ "KeepBasicMetrics": "Зберегти основні показники (відвідування, перегляди сторінок, відсоток відскоків, конверсію цілей, конверсію ел. замовлень і ін.)",
+ "KeepDataFor": "Зберегти всі дані для",
+ "KeepReportSegments": "Для збереження даних вище також налаштуйте сегментацію звітів",
+ "LastDelete": "Останнє видалення було",
+ "LeastDaysInput": "Будь ласка, визначте кількість днів, більше ніж %s.",
+ "LeastMonthsInput": "Будь ласка, визначте кількість місяців, більше ніж %s.",
+ "MenuPrivacySettings": "Конфіденційність",
+ "NextDelete": "Наступне видалення за розкладом через",
+ "PluginDescription": "Підвищення рівня конфіденційності для користувачів і налаштування аналітики Piwik для конфіденційності сумісної з вашим місцевим законодавством.",
+ "PurgeNow": "Очистити базу даних зараз",
+ "PurgeNowConfirm": "Ви збираєтеся назавжди видалити дані з вашої бази даних. Ви впевнені, що хочете продовжити?",
+ "PurgingData": "Видалення даних...",
+ "RecommendedForPrivacy": "Рекомендується для забезпечення конфіденційності",
+ "ReportsDataSavedEstimate": "Розмір бази даних",
+ "SaveSettingsBeforePurge": "Ви змінили налаштування видалення даних. Будь ласка, збережіть їх, перед тим як почати чистку.",
+ "SeeAlsoOurOfficialGuidePrivacy": "Дивіться також офіційне керівництво: %1$sПриватність даних в Piwik%2$s",
+ "Teaser": "На цій вкладці ви можете налаштовувати веб-аналітику для її відповідної політики конфіденційності чинного законодавства вашої країни. Використовуйте: %1$s приховування IP-адреси відвідувача%2$s, %3$s автоматичне стирання старих логів з бази банних%4$s і %5$s можливість для відвідувачів виключити себе з обліку в системі%6$s.",
+ "TeaserHeadline": "Налаштування конфіденційності",
+ "UseAnonymizedIpForVisitEnrichment": "Також використовуйте анонімні IP-адреси при логуванні відвідувань.",
+ "UseAnonymizedIpForVisitEnrichmentNote": "Plugins such as Geo Location via IP and Provider improve visitor's metadata. By default these plugins use the anonymized IP addresses. If you select 'No', then the non-anonymized full IP address will be used instead, resulting in less privacy but better data accuracy.",
+ "UseAnonymizeIp": "Приховати IP-адреси відвідувачів",
+ "UseDeleteLog": "Регулярно видаляти старі логи відвідувань з бази даних",
+ "UseDeleteReports": "Завжди видаляти старі звіти з баз даних"
}
} \ No newline at end of file
diff --git a/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php b/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
index 1f79d34b82..f8ff592eb9 100644
--- a/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
+++ b/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
@@ -23,6 +23,7 @@ use Piwik\Plugins\PrivacyManager\LogDataPurger;
use Piwik\Plugins\PrivacyManager\PrivacyManager;
use Piwik\Plugins\PrivacyManager\ReportsPurger;
use Piwik\Plugins\VisitorInterest\API as APIVisitorInterest;
+use Piwik\Tests\Framework\Mock\Plugin\LogTablesProvider;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\GoalManager;
use Piwik\Tests\Framework\Fixture;
@@ -517,7 +518,7 @@ class DataPurgingTest extends IntegrationTestCase
{
$rawLogDao = new DataPurgingTest_RawLogDao(new DimensionMetadataProvider());
$rawLogDao->insertActionsOlderThanCallback = array($this, 'addReferenceToUnusedAction');
- $purger = new LogDataPurger(new LogDeleter($rawLogDao), $rawLogDao);
+ $purger = new LogDataPurger(new LogDeleter($rawLogDao, new LogTablesProvider()), $rawLogDao);
$this->unusedIdAction = Db::fetchOne(
"SELECT idaction FROM " . Common::prefixTable('log_action') . " WHERE name = ?",
diff --git a/plugins/ProfessionalServices/ProfessionalServices.php b/plugins/ProfessionalServices/ProfessionalServices.php
new file mode 100644
index 0000000000..203c3bb6f6
--- /dev/null
+++ b/plugins/ProfessionalServices/ProfessionalServices.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\ProfessionalServices;
+
+class ProfessionalServices extends \Piwik\Plugin
+{
+ /**
+ * @see Piwik\Plugin::registerEvents
+ */
+ public function registerEvents()
+ {
+ return array(
+ 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
+ 'Request.getRenamedModuleAndAction' => 'renameProfessionalServicesModule',
+ );
+ }
+
+ public function getStylesheetFiles(&$stylesheets)
+ {
+ $stylesheets[] = 'plugins/ProfessionalServices/stylesheets/widget.less';
+ }
+
+ /**
+ * @deprecated Can be removed in Piwik 3.0
+ * @param $module
+ * @param $action
+ */
+ public function renameProfessionalServicesModule(&$module, &$action)
+ {
+ if ($module == 'ProfessionalServices') {
+ $module = 'ProfessionalServices';
+
+ if($action == 'promoPiwikPro') {
+ $action = 'promoServices';
+ }
+
+ if($action == 'rssPiwikPro') {
+ $action = 'rss';
+ }
+ }
+ }
+}
diff --git a/plugins/PiwikPro/Promo.php b/plugins/ProfessionalServices/Promo.php
index c253df0f43..36f8ae155d 100644
--- a/plugins/PiwikPro/Promo.php
+++ b/plugins/ProfessionalServices/Promo.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-namespace Piwik\Plugins\PiwikPro;
+namespace Piwik\Plugins\ProfessionalServices;
class Promo
{
@@ -19,27 +19,27 @@ class Promo
),
array(
'campaignContent' => 'bringEnterpriseLevel',
- 'text' => 'Bring your analytics to enterprise level. Upgrade your Piwik platform and receive access to numerous premium features and assistance from our experts.'
+ 'text' => 'Bring your analytics to enterprise level. Upgrade your Piwik platform and receive access to numerous premium features and assistance from experts.'
),
array(
'campaignContent' => 'funnelAnalytics',
- 'text' => 'Want Funnel Analytics? Get Premium features and enterprise-grade support from the makers of Piwik.'
+ 'text' => 'Want Funnel Analytics? Get Premium features and enterprise-grade support.'
),
array(
'campaignContent' => 'monitoringAndIncident',
- 'text' => 'Do you need 24/7 Monitoring and Incident Handling for your Piwik? Get Premium features and enterprise-grade support from the makers of Piwik.'
+ 'text' => 'Do you need 24/7 Monitoring and Incident Handling for your Piwik? Get Premium features and enterprise-grade support.'
),
array(
'campaignContent' => 'slowingDown',
- 'text' => 'Is your Piwik slowing down? The Piwik makers can help with your server setup!'
+ 'text' => 'Is your Piwik slowing down? Piwik experts can help with your server setup!'
),
array(
'campaignContent' => 'excitingFeatures',
- 'text' => 'Want to know how to use all the exciting features in Piwik? Try our User training to be up to speed with working with Piwik.'
+ 'text' => 'Want to know how to use all the exciting features in Piwik? Try a User training to be up to speed with working with Piwik.'
),
array(
'campaignContent' => 'slowingDown',
- 'text' => 'Did you know you can adjust the look and feel of Piwik to your brand, and even replace "Piwik" with your product name? Try our White Label product!',
+ 'text' => 'Did you know you can adjust the look and feel of Piwik to your brand, and even replace "Piwik" with your product name? Try the White Label product!',
),
array(
'campaignContent' => 'metaSites',
diff --git a/plugins/ProfessionalServices/Widgets.php b/plugins/ProfessionalServices/Widgets.php
new file mode 100644
index 0000000000..b1abc5e7da
--- /dev/null
+++ b/plugins/ProfessionalServices/Widgets.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\ProfessionalServices;
+
+use Piwik\Piwik;
+use Piwik\ProfessionalServices\Advertising;
+use Piwik\Plugins\ExampleRssWidget\RssRenderer;
+use Piwik\View;
+
+class Widgets extends \Piwik\Plugin\Widgets
+{
+ protected $category = 'About Piwik';
+
+ /**
+ * @var Advertising
+ */
+ private $advertising;
+
+ /**
+ * @var Promo
+ */
+ private $promo;
+
+ public function __construct(Advertising $advertising, Promo $promo)
+ {
+ $this->advertising = $advertising;
+ $this->promo = $promo;
+ }
+
+ protected function init()
+ {
+ if ($this->advertising->areAdsForProfessionalServicesEnabled()) {
+ $this->addWidget('ProfessionalServices_WidgetProfessionalServicesForPiwik', 'promoServices');
+ }
+ }
+
+ public function rss()
+ {
+ return '';
+ }
+
+ public function promoServices()
+ {
+ $view = new View('@ProfessionalServices/promoServicesWidget');
+
+ $promo = $this->promo->getContent();
+
+ $view->ctaLinkUrl = $this->advertising->getPromoUrlForPiwikProUpgrade();
+ $view->ctaText = $promo['text'];
+ $view->ctaLinkTitle = $this->promo->getLinkTitle();
+
+ return $view->render();
+ }
+}
diff --git a/plugins/ProfessionalServices/config/test.php b/plugins/ProfessionalServices/config/test.php
new file mode 100644
index 0000000000..03ad8662fd
--- /dev/null
+++ b/plugins/ProfessionalServices/config/test.php
@@ -0,0 +1,13 @@
+<?php
+
+use Piwik\Tests\Framework\Mock\ProfessionalServices\Advertising;
+use Piwik\Plugins\ProfessionalServices\tests\Framework\Mock\Promo;
+
+return array(
+ 'Piwik\ProfessionalServices\Advertising' => function () {
+ return new Advertising();
+ },
+ 'Piwik\Plugins\ProfessionalServices\Promo' => function () {
+ return new Promo();
+ }
+);
diff --git a/plugins/PiwikPro/images/promo.png b/plugins/ProfessionalServices/images/promo.png
index ac15b596df..ac15b596df 100644
--- a/plugins/PiwikPro/images/promo.png
+++ b/plugins/ProfessionalServices/images/promo.png
Binary files differ
diff --git a/plugins/ProfessionalServices/lang/en.json b/plugins/ProfessionalServices/lang/en.json
new file mode 100644
index 0000000000..1f275d103f
--- /dev/null
+++ b/plugins/ProfessionalServices/lang/en.json
@@ -0,0 +1,5 @@
+{
+ "ProfessionalServices": {
+ "WidgetProfessionalServicesForPiwik": "Professional Services for Piwik"
+ }
+} \ No newline at end of file
diff --git a/plugins/ProfessionalServices/plugin.json b/plugins/ProfessionalServices/plugin.json
new file mode 100644
index 0000000000..852b094b37
--- /dev/null
+++ b/plugins/ProfessionalServices/plugin.json
@@ -0,0 +1,4 @@
+{
+ "name": "ProfessionalServices",
+ "description": "Provides widgets to learn about Professional services and products for Piwik."
+} \ No newline at end of file
diff --git a/plugins/PiwikPro/stylesheets/widget.less b/plugins/ProfessionalServices/stylesheets/widget.less
index fdb9cb1eae..fdb9cb1eae 100644
--- a/plugins/PiwikPro/stylesheets/widget.less
+++ b/plugins/ProfessionalServices/stylesheets/widget.less
diff --git a/plugins/PiwikPro/templates/promoPiwikProWidget.twig b/plugins/ProfessionalServices/templates/promoServicesWidget.twig
index 2864fa340f..67f87df40a 100644
--- a/plugins/PiwikPro/templates/promoPiwikProWidget.twig
+++ b/plugins/ProfessionalServices/templates/promoServicesWidget.twig
@@ -1,6 +1,6 @@
<div class="promoWidget">
<div class="promo">
- <img class="icon" src="plugins/PiwikPro/images/promo.png">
+ <img class="icon" src="plugins/ProfessionalServices/images/promo.png">
<p class="text">
{{ ctaText }}
<br /><br />
diff --git a/plugins/PiwikPro/tests/Framework/Mock/Promo.php b/plugins/ProfessionalServices/tests/Framework/Mock/Promo.php
index 47dd6f6497..a854b9da8a 100644
--- a/plugins/PiwikPro/tests/Framework/Mock/Promo.php
+++ b/plugins/ProfessionalServices/tests/Framework/Mock/Promo.php
@@ -6,9 +6,9 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-namespace Piwik\Plugins\PiwikPro\tests\Framework\Mock;
+namespace Piwik\Plugins\ProfessionalServices\tests\Framework\Mock;
-class Promo extends \Piwik\Plugins\PiwikPro\Promo
+class Promo extends \Piwik\Plugins\ProfessionalServices\Promo
{
public function getLinkTitle()
{
diff --git a/plugins/Provider/lang/sq.json b/plugins/Provider/lang/sq.json
index 90e8dff654..9209a1ba31 100644
--- a/plugins/Provider/lang/sq.json
+++ b/plugins/Provider/lang/sq.json
@@ -1,6 +1,7 @@
{
"Provider": {
"ColumnProvider": "Mundësues",
+ "PluginDescription": "Raporton Mundësuesit e Shërbimit Internet të vizitorëve.",
"ProviderReportDocumentation": "Ky raport ju tregon cilët Mundësues Shërbimi Internet kanë përdorur vizitorët tuaj për të hyrë te sajti. Për më tepër hollësi mund të klikoni mbi emrin e një mundësuesi. %s Nëse Piwik s’arrin ta përcaktojë mundësuesin për një vizitor, e tregon thjesht si IP.",
"WidgetProviders": "Mundësuesa",
"ProviderReportFooter": "Mundësues i panjohur do të thotë që adresa IP s’u kërkua dot."
diff --git a/plugins/Provider/lang/sv.json b/plugins/Provider/lang/sv.json
index 3f908b1fb0..e82eee6eb8 100644
--- a/plugins/Provider/lang/sv.json
+++ b/plugins/Provider/lang/sv.json
@@ -3,6 +3,7 @@
"ColumnProvider": "Internetleverantör",
"PluginDescription": "Rapporterar besökarnas Internetleverantör.",
"ProviderReportDocumentation": "Denna rapport visar vilka Internetleverantörer dina besökare använde för att få åtkomst till webbplatsen. Du kan klicka på en leverantörs namn för mer information. %s Om Piwik inte kan avgöra en besökares leverantör, så listas den som IP.",
- "WidgetProviders": "Internetleverantör"
+ "WidgetProviders": "Internetleverantör",
+ "ProviderReportFooter": "Okänd internetleverantör betyder att IP-adressen inte kunde slås upp."
}
} \ No newline at end of file
diff --git a/plugins/Provider/lang/uk.json b/plugins/Provider/lang/uk.json
index 6537f7daca..efb9f7ae81 100644
--- a/plugins/Provider/lang/uk.json
+++ b/plugins/Provider/lang/uk.json
@@ -1,6 +1,9 @@
{
"Provider": {
"ColumnProvider": "Провайдер",
- "WidgetProviders": "Провайдери"
+ "PluginDescription": "Повідомляє про постачальника інтернет послуг (ISP) у відвідувачів.",
+ "ProviderReportDocumentation": "Цей звіт показує, які інтернет-провайдери у відвідувачів вашого сайту. Ви можете клікнути на ім'я провайдера, щоб подивитися деталі. %s Якщо Piwik не може визначити провайдера, відображається просто IP.",
+ "WidgetProviders": "Провайдери",
+ "ProviderReportFooter": "Невідомий постачальник означає IP адресу, яка не може бути визначена."
}
} \ No newline at end of file
diff --git a/plugins/Referrers/Columns/Base.php b/plugins/Referrers/Columns/Base.php
index 655ea20449..8da2c79bc3 100644
--- a/plugins/Referrers/Columns/Base.php
+++ b/plugins/Referrers/Columns/Base.php
@@ -288,8 +288,11 @@ abstract class Base extends VisitDimension
return false;
}
+ $site = Cache::getCacheWebsiteAttributes($this->idsite);
+ $excludeUnknowns = $site['exclude_unknown_urls'];
+
// fallback logic if the referrer domain is not known to any site to not break BC
- if (isset($this->currentUrlParse['host'])) {
+ if (!$excludeUnknowns && isset($this->currentUrlParse['host'])) {
// this might be actually buggy if first thing tracked is eg an outlink and referrer is from that site
$currentHost = Common::mb_strtolower($this->currentUrlParse['host']);
if ($currentHost == Common::mb_strtolower($this->referrerHost)) {
diff --git a/plugins/Referrers/SearchEngine.php b/plugins/Referrers/SearchEngine.php
index 9b11ac860f..e2970c61ad 100644
--- a/plugins/Referrers/SearchEngine.php
+++ b/plugins/Referrers/SearchEngine.php
@@ -224,11 +224,10 @@ class SearchEngine extends Singleton
$searchEngineName = $definitions['name'];
$variableNames = $definitions['params'];
+ $keywordsHiddenFor = !empty($definitions['hiddenkeyword']) ? $definitions['hiddenkeyword'] : array();
$key = null;
- if ($searchEngineName === 'Google Images'
- || ($searchEngineName === 'Google' && strpos($referrerUrl, '/imgres') !== false)
- ) {
+ if ($searchEngineName === 'Google Images') {
if (strpos($query, '&prev') !== false) {
$query = urldecode(trim(UrlHelper::getParameterFromQueryString($query, 'prev')));
$query = str_replace('&', '&amp;', strstr($query, '?'));
@@ -286,27 +285,13 @@ class SearchEngine extends Singleton
$key = UrlHelper::getParameterFromQueryString($query, $variableName);
$key = trim(urldecode($key));
- // Special cases: empty or no keywords
+ // Special cases: empty keywords
if (empty($key)
&& (
- // Google search with no keyword
- ($searchEngineName == 'Google'
- && (empty($query) && (empty($referrerPath) || $referrerPath == '/') && empty($referrerParsed['fragment']))
- )
-
- // Yahoo search with no keyword
- || ($searchEngineName == 'Yahoo!'
- && ($referrerParsed['host'] == 'r.search.yahoo.com')
- )
-
// empty keyword parameter
- || strpos($query, sprintf('&%s=', $variableName)) !== false
+ strpos($query, sprintf('&%s=', $variableName)) !== false
|| strpos($query, sprintf('?%s=', $variableName)) !== false
-
- // search engines with no keyword
- || $searchEngineName == 'Ixquick'
- || $searchEngineName == 'Google Images'
- || $searchEngineName == 'DuckDuckGo')
+ )
) {
$key = false;
}
@@ -319,6 +304,30 @@ class SearchEngine extends Singleton
}
}
+ // if no keyword found, but empty keywords are allowed
+ if (!empty($keywordsHiddenFor) && ($key === null || $key === '')) {
+
+ $pathWithQueryAndFragment = $referrerPath;
+ if (!empty($query)) {
+ $pathWithQueryAndFragment .= '?'.$query;
+ }
+ if (!empty($referrerParsed['fragment'])) {
+ $pathWithQueryAndFragment .= '#'.$referrerParsed['fragment'];
+ }
+
+ foreach ($keywordsHiddenFor as $path) {
+ if (strlen($path) > 1 && substr($path, 0, 1) == '/' && substr($path, -1, 1) == '/') {
+ if (preg_match($path, $pathWithQueryAndFragment)) {
+ $key = false;
+ break;
+ }
+ } elseif ($path == $pathWithQueryAndFragment) {
+ $key = false;
+ break;
+ }
+ }
+ }
+
// $key === false is the special case "No keyword provided" which is a Search engine match
if ($key === null || $key === '') {
return false;
diff --git a/plugins/Referrers/images/searchEngines/search.disconnect.me.png b/plugins/Referrers/images/searchEngines/search.disconnect.me.png
new file mode 100644
index 0000000000..54b0eac351
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/search.disconnect.me.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/search.lookseek.com.png b/plugins/Referrers/images/searchEngines/search.lookseek.com.png
new file mode 100644
index 0000000000..ac1ff37a17
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/search.lookseek.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/search.smartshopping.com.png b/plugins/Referrers/images/searchEngines/search.smartshopping.com.png
new file mode 100644
index 0000000000..320ede63d5
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/search.smartshopping.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/searchlock.com.png b/plugins/Referrers/images/searchEngines/searchlock.com.png
new file mode 100644
index 0000000000..54f98183bc
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/searchlock.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/startpage.com.png b/plugins/Referrers/images/searchEngines/startpage.com.png
new file mode 100644
index 0000000000..916df91599
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/startpage.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/www.only-search.com.png b/plugins/Referrers/images/searchEngines/www.only-search.com.png
new file mode 100644
index 0000000000..543c95d88e
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/www.only-search.com.png
Binary files differ
diff --git a/plugins/Referrers/lang/it.json b/plugins/Referrers/lang/it.json
index ac5c1ad83d..ab9144217e 100644
--- a/plugins/Referrers/lang/it.json
+++ b/plugins/Referrers/lang/it.json
@@ -2,8 +2,8 @@
"Referrers": {
"AllReferrersReportDocumentation": "Questo report mostra tutti i tuoi Referenti in un unico report che elenca tutti i Siti web, le Parole chiave di ricerca e Campagne utilizzate dai visitatori per trovare il tuo sito web.",
"Campaigns": "Campagne",
- "CampaignsDocumentation": "Visitatori che sono arrivati sul tuo sito web a seguito di una campagna. %1$s Vedi il%2$s Report per maggiori dettagli.",
- "CampaignsReportDocumentation": "Questo report mostra quali campagne hanno portato i visitatori sul tuo sito web. %1$s Per ulteriori informazioni sulle campagne di monitoraggio, leggi la %2$sdocumentazione campagne su piwik.org%3$s",
+ "CampaignsDocumentation": "Visitatori che sono arrivati sul tuo sito web a seguito di una campagna. %1$sVedi il%2$s report per maggiori dettagli.",
+ "CampaignsReportDocumentation": "Questo report mostra quali campagne hanno portato i visitatori sul tuo sito web. %1$sPer ulteriori informazioni sulle campagne di monitoraggio, leggi la %2$sdocumentazione campagne su piwik.org%3$s",
"ColumnCampaign": "Campagna",
"ColumnSearchEngine": "Motore di ricerca",
"ColumnSocial": "Social network",
@@ -27,7 +27,7 @@
"ReferrersOverview": "Panoramica Referenti",
"ReferrerTypes": "Tipi di Referenti",
"SearchEngines": "Motori di ricerca",
- "SearchEnginesDocumentation": "Un visitatore è stato portato sul tuo sito da un motore di ricerca. %1$s Vedi il %2$s report per maggiori dettagli.",
+ "SearchEnginesDocumentation": "Un visitatore è stato portato sul tuo sito da un motore di ricerca. %1$s Vedi il%2$s report per maggiori dettagli.",
"SearchEnginesReportDocumentation": "Questo report mostra quali motori di ricerca hanno portato gli utenti sul tuo sito web. %s Cliccando su una riga della tabella è possibile vedere ciò che gli utenti stavano cercando utilizzando un determinato motore di ricerca.",
"SocialFooterMessage": "Questo è un sottoinsieme dei siti web riportati a sinistra. Esso filtra altri siti web in modo da poter confrontare direttamente i vostri referenti di social network.",
"Socials": "Social Networks",
@@ -44,7 +44,7 @@
"ViewAllReferrers": "Vedi tutti i Referenti",
"ViewReferrersBy": "Vedi Referenti per %s",
"Websites": "Siti web",
- "WebsitesDocumentation": "Il visitatore ha seguito un link su un altro sito web che lo ha portato sul tuo. %1$s Vedi il %2$s report per maggiori dettagli.",
+ "WebsitesDocumentation": "Il visitatore ha seguito un link su un altro sito web che lo ha portato sul tuo. %1$sVedi il%2$s report per maggiori dettagli.",
"WebsitesReportDocumentation": "In questa tabella è possibile vedere quali siti web hanno portato i visitatori sul tuo sito. %s Cliccando su una riga della tabella è possibile vedere su quali URL si trovavano i link al tuo sito.",
"WidgetExternalWebsites": "Elenco di Siti web esterni",
"WidgetGetAll": "Tutti i Referenti",
diff --git a/plugins/Referrers/lang/nl.json b/plugins/Referrers/lang/nl.json
index 39be150270..61be153d4e 100644
--- a/plugins/Referrers/lang/nl.json
+++ b/plugins/Referrers/lang/nl.json
@@ -20,9 +20,9 @@
"EvolutionDocumentationMoreInfo": "Voor meer informatie over de verschillende soorten verwijzingen, zie de documentatie van de %s tabel.",
"Keywords": "Sleutelwoorden",
"KeywordsReportDocumentation": "Dit rapport toont de sleutelwoorden waarop men zocht en waarbij men werd doorverwezen naar uw website. %s Door op een rij in de tabel te klikken kunt u de verdeling van de zoekmachines zien die op deze sleutelwoorden naar uw website hebben doorverwezen.",
- "Referrer": "Referer",
+ "Referrer": "Verwijzer",
"ReferrerName": "Verwijzer Naam",
- "Referrers": "Referrers",
+ "Referrers": "Herkomst",
"ReferrersOverview": "Referer Overzicht",
"ReferrerTypes": "Referrer Types",
"SearchEngines": "Zoekmachines",
diff --git a/plugins/Referrers/lang/uk.json b/plugins/Referrers/lang/uk.json
index 9cf0a1fabe..e23ca82bee 100644
--- a/plugins/Referrers/lang/uk.json
+++ b/plugins/Referrers/lang/uk.json
@@ -1,28 +1,55 @@
{
"Referrers": {
+ "AllReferrersReportDocumentation": "Цей звіт показує всіх реферів в одному зведеному звіті, перераховуючи всі Веб-сайти, Пошукові запити і Кампанії, якими користувалися відвідувачі, щоб знайти ваш сайт.",
"Campaigns": "Кампанії",
+ "CampaignsDocumentation": "Відвідувач перейшов на ваш сайт з рекламної кампанії. %1$s Детальна інформація у звіті %2$s",
+ "CampaignsReportDocumentation": "Цей звіт показує, які рекламні кампанії привели відвідувачів на ваш сайт. %1$s Для більшої інформації про відстеження кампаній читайте %2$sДокументацію по кампаніям на сайті piwik.org%3$s",
"ColumnCampaign": "Кампанія",
- "ColumnSearchEngine": "Пошукова машина",
- "ColumnWebsite": "Веб-сайт",
- "ColumnWebsitePage": "Сторінка Веб-сайту",
- "DirectEntry": "Прямі заходи",
- "Distinct": "Унікальні реферери по типу реферера",
- "DistinctCampaigns": "унікальні компанії",
- "DistinctKeywords": "унікальні ключові слова",
- "DistinctSearchEngines": "унікальні пошукові машини",
- "DistinctWebsites": "унікальні веб-сайти",
+ "ColumnSearchEngine": "Пошукова система",
+ "ColumnSocial": "Сторінка соціальної мережі",
+ "ColumnWebsite": "Сайт",
+ "ColumnWebsitePage": "Сторінка сайту",
+ "DirectEntry": "Прямий вхід",
+ "DirectEntryDocumentation": "Відвідувач перейшов на ваш сайт за посиланням, вбивши її в адресний рядок браузера або по закладці, що називається прямим переходом.",
+ "Distinct": "Різні джерела по типу",
+ "DistinctCampaigns": "Різні кампанії",
+ "DistinctKeywords": "Різні ключові слова",
+ "DistinctSearchEngines": "Різні пошукові системи",
+ "DistinctWebsites": "Різні сайти",
+ "EvolutionDocumentation": "Це огляд джерел, з яких відвідувачі приходять на ваш сайт.",
+ "EvolutionDocumentationMoreInfo": "Більше інформації про різні типи джерел див. в документації по таблиці %s.",
"Keywords": "Ключові слова",
- "Referrers": "Реферер",
+ "KeywordsReportDocumentation": "Цей звіт показує ключові слова, які відвідувачі вашого сайту вводили в пошуковику, перш ніж потрапити на ваш сайт. %s Клікнувши на конкретний ряд таблиці, ви побачите розподіл ключового слова по пошуковим системам.",
+ "PluginDescription": "Повідомляє дані реферерів: Пошукові системи, Ключові слова, Веб-сайти, Кампанії, Соціальні медіа, Пряме введення.",
+ "Referrer": "Джерело",
+ "ReferrerName": "Ім'я джерела",
+ "Referrers": "Джерела трафіку",
+ "ReferrersOverview": "Огляд джерел",
+ "ReferrerTypes": "Дипи джерела",
"SearchEngines": "Пошукові системи",
+ "SearchEnginesDocumentation": "Відвідувач перейшов на ваш сайт з пошукової системи. %1$s Детальна інформація у звіті %2$s.",
+ "SearchEnginesReportDocumentation": "Цей звіт показує, з яких пошукових систем прийшли відвідувачі. %s Клікнувши на конкретний ряд таблиці, ви побачите, що відвідувач шукав в пошуковій системі і що привело його на ваш сайт.",
+ "SocialFooterMessage": "Це підмножина сайтів зліва. Він відфільтровує інші сайти, так що ви можете порівняти свої соціальні мережі та джерела безпосередньо.",
+ "Socials": "Соціальні мережі",
+ "SocialsReportDocumentation": "Цей звіт показує, які соціальні мережі привели відвідувачів на ваш сайт.<br \/>Клікнувши на конкретний рядок таблиці, ви можете побачити, з яких саме сторінок соціальних мереж перейшли ці відвідувачі.",
"SubmenuSearchEngines": "Пошукові системи і ключові слова",
- "SubmenuWebsites": "Веб-сайти",
- "Type": "Тип реферера",
- "TypeCampaigns": "%s з кампаній",
- "TypeDirectEntries": "%s прямих заходжень",
- "TypeSearchEngines": "%s з пошукових систем",
- "TypeWebsites": "%s з веб-сайтів",
- "UsingNDistinctUrls": "(використовуючи %s унікальні URL)",
+ "SubmenuWebsites": "Сайти",
+ "Type": "Тип джерела",
+ "TypeCampaigns": "%s входів з кампаній",
+ "TypeDirectEntries": "%s прямих входів",
+ "TypeReportDocumentation": "Ця таблиця містить інформацію про розподіл типів джерел трафіку.",
+ "TypeSearchEngines": "%s входів з пошукових систем",
+ "TypeWebsites": "%s входів з сайтів",
+ "UsingNDistinctUrls": "(за %s різним посиланням)",
+ "ViewAllReferrers": "Подивитися всі джерела",
+ "ViewReferrersBy": "Подивитися джерела по %s",
"Websites": "Сайти",
- "WidgetExternalWebsites": "Список зовнішніх веб-сайтів"
+ "WebsitesDocumentation": "Відвідувач перейшов на ваш сайт за посиланням, яка перебувало на іншому сайті. %1$s Детальна інформація у звіті %2$s",
+ "WebsitesReportDocumentation": "У цій таблиці ви можете бачити сайти, які привели відвідувачів на ваш сайт. %s Клікнувши на таблиці по конкретному рядку, ви побачите де було розміщене посилання на ваш сайт.",
+ "WidgetExternalWebsites": "Зовнішні сайти",
+ "WidgetGetAll": "Всі джерела трафіку",
+ "WidgetSocials": "Список соціальних мереж",
+ "WidgetTopKeywordsForPages": "Топ ключових слів для сторінки URL",
+ "XPercentOfVisits": "%s відвідувань"
}
} \ No newline at end of file
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php
index f5ff10e11c..1e7e4af8cb 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php
@@ -38,7 +38,7 @@ class ReferrerKeywordTest extends IntegrationTestCase
$ecommerce = false;
Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.pro/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
$this->keyword = new Keyword();
}
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
index f118e14ba6..cd1610a178 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
@@ -44,7 +44,7 @@ class ReferrerNameTest extends IntegrationTestCase
Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/foo/bar');
Fixture::createWebsite($date, $ecommerce, $name = 'test2', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.pro/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
$this->referrerName = new ReferrerName();
}
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
index 5925dbc5c0..63da107af5 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
@@ -32,6 +32,7 @@ class ReferrerTypeTest extends IntegrationTestCase
private $idSite1 = 1;
private $idSite2 = 2;
private $idSite3 = 3;
+ private $idSite4 = 4;
public function setUp()
{
@@ -44,7 +45,8 @@ class ReferrerTypeTest extends IntegrationTestCase
Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/foo/bar');
Fixture::createWebsite($date, $ecommerce, $name = 'test2', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.pro/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test4', $url = 'http://google.com/subdir/', 1, null, null, null, null, $excludeUnknownUrls = 1);
$this->referrerType = new ReferrerType();
}
@@ -112,6 +114,19 @@ class ReferrerTypeTest extends IntegrationTestCase
// testing case where domain of referrer is not known to any site but neither is the URL, url != urlref
array(Common::REFERRER_TYPE_WEBSITE, $this->idSite3, 'http://example.org', 'http://example.com/bar'),
+
+ ####### testing specific case:
+ ## - ignore unknown urls is activated for idSite4
+
+ // referrer comes from another subdir, but same host => external website
+ array(Common::REFERRER_TYPE_WEBSITE, $this->idSite4, 'http://google.com/subdir/site', 'http://google.com/base'),
+ // referrer comes from same subdir and host => direct entry
+ array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/page', 'http://google.com/subdir/x'),
+ array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/', 'http://google.com/subdir/?q=test'),
+ // referrer comes from another subdir, but same host, query matches search engine definition => search engine
+ array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.com/search?q=test'),
+ // referrer comes from search engine not matching site
+ array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.fr/search?q=test')
);
}
diff --git a/plugins/Referrers/tests/Unit/SearchEngineTest.php b/plugins/Referrers/tests/Unit/SearchEngineTest.php
index e9f0c926ea..1b5cab4dbc 100644
--- a/plugins/Referrers/tests/Unit/SearchEngineTest.php
+++ b/plugins/Referrers/tests/Unit/SearchEngineTest.php
@@ -121,7 +121,7 @@ class SearchEngineTest extends \PHPUnit_Framework_TestCase
public function testMissingSearchEngineKeyword($url, $searchEngine)
{
$name = parse_url('http://' . $url);
- $this->assertTrue(!empty($searchEngine['params']), $name['host']);
+ $this->assertTrue(!empty($searchEngine['params']) || !empty($searchEngine['hiddenkeyword']), $name['host']);
}
/**
diff --git a/plugins/Resolution/lang/ar.json b/plugins/Resolution/lang/ar.json
index 7d9bfebc01..afc2e3dad1 100644
--- a/plugins/Resolution/lang/ar.json
+++ b/plugins/Resolution/lang/ar.json
@@ -3,6 +3,7 @@
"ColumnConfiguration": "الإعداد",
"ColumnResolution": "الكثافة النقطية",
"Configurations": "الإعدادات",
+ "PluginDescription": "يوضّح كثافة شاشة زوارك.",
"Resolutions": "الكثافات النقطية",
"WidgetGlobalVisitors": "الإعدادات العامة للزوار",
"WidgetResolutions": "كثافات الشاشة النقطية"
diff --git a/plugins/Resolution/lang/tr.json b/plugins/Resolution/lang/tr.json
index e24e8020cf..d0ba931102 100644
--- a/plugins/Resolution/lang/tr.json
+++ b/plugins/Resolution/lang/tr.json
@@ -1,11 +1,12 @@
{
"Resolution": {
- "ColumnConfiguration": "Konfigürasyon",
+ "ColumnConfiguration": "Yapılandırma",
"ColumnResolution": "Çözünürlük",
- "Configurations": "Konfigürasyonları",
- "PluginDescription": "Ziyaretçinin ekran çözünürlüklerini raporla",
+ "Configurations": "Yapılandırmalar",
+ "PluginDescription": "Ziyaretçinin ekran çözünürlüklerini bildirir.",
"Resolutions": "Çözünürlükler",
- "WidgetGlobalVisitors": "Global ziyaretçi konfikasyonu",
- "WidgetResolutions": "Ekran çözünürlükleri"
+ "WidgetGlobalVisitors": "Ziyaretçi Yapılandırması",
+ "WidgetGlobalVisitorsDocumentation": "Bu rapor ziyaretçilerinizin genel yapılandırmasını görüntüler. Yapılandırma bilgilerinde, işletim sistemi, web tarayıcı türü ve ekran çözünürlüğü bulunur.",
+ "WidgetResolutions": "Ekran Çözünürlüğü"
}
} \ No newline at end of file
diff --git a/plugins/Resolution/lang/uk.json b/plugins/Resolution/lang/uk.json
index 546bbaec47..038cb2362b 100644
--- a/plugins/Resolution/lang/uk.json
+++ b/plugins/Resolution/lang/uk.json
@@ -2,9 +2,11 @@
"Resolution": {
"ColumnConfiguration": "Конфігурація",
"ColumnResolution": "Роздільна здатність",
- "Configurations": "Конфігурації",
- "Resolutions": "Роздільні здатності",
- "WidgetGlobalVisitors": "Загальна конфігурація відвідувачів",
- "WidgetResolutions": "Роздільні здатності"
+ "Configurations": "По конфігурації",
+ "PluginDescription": "Повідомляє про роздільну здатність дисплея відвідувачів.",
+ "Resolutions": "По роздільній здатності моніторів",
+ "WidgetGlobalVisitors": "Глобальна конфігурація",
+ "WidgetGlobalVisitorsDocumentation": "Цей звіт показує загальну інформацію з найбільш популярними конфігураціями системи ваших відвідувачів. Конфігурація - це комбінація операційної системи, браузера і роздільної здатності дисплею.",
+ "WidgetResolutions": "По роздільній здатності моніторів"
}
} \ No newline at end of file
diff --git a/plugins/SEO/lang/ru.json b/plugins/SEO/lang/ru.json
index 5d2ed02d02..1383e4bac4 100644
--- a/plugins/SEO/lang/ru.json
+++ b/plugins/SEO/lang/ru.json
@@ -1,5 +1,6 @@
{
"SEO": {
+ "PluginDescription": "Этот плагин извлекает и отображает метрику SEO: веб-ранг Alexa, Google Pagerank, количество индексированных страниц и обратных ссылок на текущий выбранный веб-сайт.",
"AlexaRank": "Рейтинг Alexa",
"Bing_IndexedPages": "Страниц в индексе Bing",
"Dmoz": "Записей в каталоге DMOZ",
diff --git a/plugins/SEO/lang/sl.json b/plugins/SEO/lang/sl.json
index 5ac941f3c9..dab55ee7b8 100644
--- a/plugins/SEO/lang/sl.json
+++ b/plugins/SEO/lang/sl.json
@@ -1,7 +1,9 @@
{
"SEO": {
+ "PluginDescription": "Ta vtičnik izlušči in prikaže SEO metriko: Alexa web rangiranje, Google Pagerank, število indeksiranih strani in povratnih povezav za trenutno izbrane spletne strani.",
"AlexaRank": "Alexa položaj",
"Bing_IndexedPages": "Bing indeksirane strani",
+ "Dmoz": "DMOZ vnosi",
"DomainAge": "Starost domene",
"Google_IndexedPages": "Google indeksirane strani",
"Rank": "Položaj",
diff --git a/plugins/SEO/lang/sq.json b/plugins/SEO/lang/sq.json
index cf6e1cf597..d602da9078 100644
--- a/plugins/SEO/lang/sq.json
+++ b/plugins/SEO/lang/sq.json
@@ -1,8 +1,11 @@
{
"SEO": {
+ "PluginDescription": "Kjo shtojcë përfton dhe shfaq matje SEO: renditje web Alexa, Google Pagerank, numër faqesh të përfshira në tregues dhe paslidhje të sajtit të përzgjedhur në atë çast.",
"AlexaRank": "Renditje Alexa",
+ "Bing_IndexedPages": "Faqe të indeksuara nga Bing",
"Dmoz": "Zëra DMOZ",
"DomainAge": "Moshë Përkatësie",
+ "Google_IndexedPages": "Faqe të indeksuara nga Google",
"Rank": "Renditje",
"SeoRankings": "Renditje SEO",
"SEORankingsFor": "Renditje SEO për %s"
diff --git a/plugins/SEO/lang/uk.json b/plugins/SEO/lang/uk.json
index 5b8d9ec566..04c18f9b2f 100644
--- a/plugins/SEO/lang/uk.json
+++ b/plugins/SEO/lang/uk.json
@@ -1,9 +1,13 @@
{
"SEO": {
- "AlexaRank": "Alexa Rank",
+ "PluginDescription": "Цей плагін витягує і відображає метрики SEO: Alexa рейтинг, Google Pagerank, кількість проіндексованих сторінок і зворотних посилань в даний момент на сайт.",
+ "AlexaRank": "Рейтинг Alexa",
+ "Bing_IndexedPages": "Сторінок в індексі Bing",
+ "Dmoz": "Записів в каталозі DMOZ",
"DomainAge": "Вік домену",
- "Rank": "Rank",
- "SeoRankings": "SEO Рейтинги",
- "SEORankingsFor": "SEO Рейтинги за %s"
+ "Google_IndexedPages": "Сторінок в індексі Google",
+ "Rank": "Рейтинг",
+ "SeoRankings": "SEO-рейтинги",
+ "SEORankingsFor": "SEO рейтинги для %s"
}
} \ No newline at end of file
diff --git a/plugins/ScheduledReports/ScheduledReports.php b/plugins/ScheduledReports/ScheduledReports.php
index b966706cfc..df6744f673 100644
--- a/plugins/ScheduledReports/ScheduledReports.php
+++ b/plugins/ScheduledReports/ScheduledReports.php
@@ -192,9 +192,6 @@ class ScheduledReports extends \Piwik\Plugin
$filteredReportMetadata = array();
foreach ($availableReportMetadata as $reportMetadata) {
// removing reports from the API category and MultiSites.getOne
- if (empty($reportMetadata['category'])) {
- var_dump($reportMetadata);exit;
- }
if (
$reportMetadata['category'] == 'API' ||
$reportMetadata['category'] == Piwik::translate('General_MultiSitesSummary') && $reportMetadata['name'] == Piwik::translate('General_SingleWebsitesDashboard')
@@ -437,7 +434,7 @@ class ScheduledReports extends \Piwik\Plugin
// If running from piwik.php with debug, we ignore the 'email not sent' error
$tracker = new Tracker();
if (!$tracker->isDebugModeEnabled()) {
- throw new Exception("An error occured while sending '$filename' " .
+ throw new Exception("An error occurred while sending '$filename' " .
" to " . implode(', ', $mail->getRecipients()) .
". Error was '" . $e->getMessage() . "'");
}
diff --git a/plugins/ScheduledReports/lang/es.json b/plugins/ScheduledReports/lang/es.json
index 451bafb8ea..53b295f107 100644
--- a/plugins/ScheduledReports/lang/es.json
+++ b/plugins/ScheduledReports/lang/es.json
@@ -24,9 +24,11 @@
"Pagination": "Página %1$s de %2$s",
"PiwikReports": "Informes Piwik",
"PleaseFindAttachedFile": "Encuentre el informe en el archivo adjunto su %1$s informe por %2$s.",
+ "SentFromX": "Enviar informe desde %s.",
"PleaseFindBelow": "Por favor encuentre debajo su %1$s informe para %2$s.",
"PluginDescription": "Cree informes personalizados y prográmelos para ser enviados por correo electrónico diaria, semanal o mensualmente a uno o varias personas. Algunos formatos de informe están soportados (html, pdf, csv, imágenes).",
"ReportFormat": "Formato del informe",
+ "ReportHour": "Enviar informe a las %s horas",
"ReportIncludeNWebsites": "El informe incluirá las principales métricas para todos los sitios de internet con al menos una visita (de todo %s los sitios de internet disponibles).",
"ReportSent": "Informe enviado",
"ReportsIncluded": "Estadísticas incluidas",
diff --git a/plugins/ScheduledReports/lang/it.json b/plugins/ScheduledReports/lang/it.json
index 447e4fe26c..f554f5d432 100644
--- a/plugins/ScheduledReports/lang/it.json
+++ b/plugins/ScheduledReports/lang/it.json
@@ -6,7 +6,7 @@
"AggregateReportsFormat_TablesOnly": "(predefinito) Mostra tabelle (Grafici solo per le metriche chiave)",
"AlsoSendReportToTheseEmails": "Manda il report anche a questi indirizzi email (un indirizzo email per riga):",
"AreYouSureDeleteReport": "Sei sicuro di voler eliminare questo report e la sua programmazione?",
- "CancelAndReturnToReports": "Annulla e %1$storna alla lista dei report%2$s",
+ "CancelAndReturnToReports": "Annulla e %1$storna all'elenco dei report%2$s",
"CreateAndScheduleReport": "Crea e programma un report",
"CreateReport": "Crea Report",
"CustomVisitorSegment": "Segento Personalizzato Visitatore:",
@@ -35,7 +35,7 @@
"ReportType": "Invia report tramite",
"ReportUpdated": "Report aggiornato",
"Segment_Deletion_Error": "Questo segmento non può essere eliminato o reso invisibile agli altri utenti perchè è utilizzato per generare %s report(s) email. Si prega di riprovare dopo aver rimosso questo segmento da questo report.",
- "Segment_Help": "È possibile selezionare un segmento personalizzato esistente da applicare ai dati in questo report e-mail. È possibile creare e modificare segmenti personalizzati nella vostra dashboard%1$s (clicca qui per aprire)%2$s, quindi fare clic sulla casella di controllo \"%3$s\", quindi su \"%4$s\".",
+ "Segment_Help": "È possibile selezionare un segmento personalizzato esistente da applicare ai dati in questo report e-mail. È possibile creare e modificare segmenti personalizzati nella tua dashboard %1$s(clicca qui per aprire)%2$s, quindi clicca sulla casella di controllo \"%3$s\", quindi su \"%4$s\".",
"SegmentAppliedToReports": "Ai report è applicato il segmento'%s'.",
"SendReportNow": "Invia report adesso",
"SendReportTo": "Invia il report a",
diff --git a/plugins/ScheduledReports/lang/sq.json b/plugins/ScheduledReports/lang/sq.json
index ec8e9db5d4..9cc1a288a3 100644
--- a/plugins/ScheduledReports/lang/sq.json
+++ b/plugins/ScheduledReports/lang/sq.json
@@ -9,24 +9,40 @@
"CancelAndReturnToReports": "Anuloje dhe %1$skthehu te lista e raporteve%2$s",
"CreateAndScheduleReport": "Krijoni dhe Planifikoni një raport",
"CreateReport": "Krijoje Raportin",
+ "CustomVisitorSegment": "Segment Vetjak i Vizitorit",
"DescriptionOnFirstPage": "Përshkrimi i raportit do të shfaqet te faqja e parë e raportit.",
+ "DisplayFormat_TablesOnly": "Shfaq vetëm Tabela (jo grafikë)",
"EmailHello": "Tungjatjeta,",
"EmailReports": "Dërgo Raportet Me Email",
"EmailSchedule": "Plan Dërgimi me Email",
+ "EvolutionGraph": "Shfaq Grafikë Historie për %s vlerat kryesuese",
"FrontPage": "Faqja Ballore",
+ "PersonalEmailReports": "Raporte Personalë Me Email",
"MonthlyScheduleHelp": "Planifikim mujor: raporti do të dërgohet ditën e parë të çdo muaji.",
"MustBeLoggedIn": "Duhet të jeni i futur që të krijoni dhe të planifikoni raporte të personalizuar.",
+ "NoRecipients": "Ky raport s’ka marrës",
"Pagination": "Faqja %1$s nga %2$s",
"PiwikReports": "Raporte Piwik",
"PleaseFindAttachedFile": "Ju lutem, shihni te kartela bashkangjitur %1$s raportin tuaj për %2$s.",
+ "SentFromX": "Dërguar prej %s.",
"PleaseFindBelow": "Ju lutem, shihni më poshtë raportin tuaj %1$s për %2$s.",
+ "PluginDescription": "Krijoni raporte vetjakë dhe planifikoni për ta dërgimin me email përditë, për javë ose për muaj, te një ose disa vetë. Mbulohen një numër formatesh raportesh (html, pdf, csv, figura).",
"ReportFormat": "Format Raporti",
+ "ReportHour": "Dërgoje raportin më %s",
+ "ReportIncludeNWebsites": "Raporti do të përfshijë matjet kryesore për krejt sajtet që kanë të paktën një vizitë (prej sajtesh %s të përdorshëm deri sot).",
+ "ReportSent": "Raporti u dërgua",
"ReportsIncluded": "Përfshi statistikat",
+ "ReportType": "Dërgoje raportin përmes",
+ "ReportUpdated": "Raporti u përditësua",
+ "Segment_Deletion_Error": "Ky segment s’mund të fshihet ose të bëhet i padukshëm për përdoruesit e tjerë, ngaqë përdoret për të prodhuar raport(e) email për %s. Ju lutemi, riprovoni pas heqjes së këtij segmenti nga ky raport(e).",
+ "Segment_Help": "Mund të zgjidhni një segment ekzistues vetjak për ta zbatuar mbi të dhënat për këtë raport email. Segmente vetjakë mund të krijoni dhe përpunoni te pulti juaj %1$s(klikoni këtu që ta hapni)%2$s, mandej të klikoni mbi kutinë \"%3$s\", mandej \"%4$s\".",
+ "SegmentAppliedToReports": "Segmenti '%s' është zbatuar për këtë raport.",
"SendReportNow": "Dërgoje Raportin tani",
"SendReportTo": "Raportin dërgoje te",
"SentToMe": "Dërgoma mua",
"TableOfContent": "Listë raportesh",
"ThereIsNoReportToManage": "S’ka raport që mund të administrohet për sajtin %s",
+ "TopLinkTooltip": "Krijoni Raporte Me Email, që statistikat Piwik të dërgohen vetvetiu në email-in tuaj ose në adresat e klientëve tuaj!",
"TopOfReport": "Mbrapsht në krye",
"UpdateReport": "Përditësoje Raportin",
"WeeklyScheduleHelp": "Planifikim javor: raporti do të dërgohet të Hënën e parë të çdo jave."
diff --git a/plugins/ScheduledReports/lang/sv.json b/plugins/ScheduledReports/lang/sv.json
index f454b002aa..1eec17bb67 100644
--- a/plugins/ScheduledReports/lang/sv.json
+++ b/plugins/ScheduledReports/lang/sv.json
@@ -17,6 +17,7 @@
"EmailSchedule": "Schemalagd e-post",
"EvolutionGraph": "Visa historiska grafer för dom topp %s värdena",
"FrontPage": "Startsida",
+ "PersonalEmailReports": "Personliga e-postrapporter",
"MonthlyScheduleHelp": "Månatligt schema: Rapporten kommer att skickas ut den första dagen i varje månad.",
"MustBeLoggedIn": "Du måste vara inloggad för att skapa och schemalägga anpassade rapporter.",
"NoRecipients": "Rapporten har ingen mottagare",
@@ -25,7 +26,9 @@
"PleaseFindAttachedFile": "Du finner din rapport %1$s i den bifogade filen för %2$s.",
"SentFromX": "Skickat från %s.",
"PleaseFindBelow": "Nedan hittar du din %1$s rapport för %2$s.",
+ "PluginDescription": "Skapa anpassade rpaporter och schemalägg att dom ska skickas ut dagligen, veckovis eller månadsvis till en eller flera personer. Det finns stöd för flera format (html, pdf, csv och bilder).",
"ReportFormat": "Rapportformat",
+ "ReportHour": "Skicka rapporten klockan %s",
"ReportIncludeNWebsites": "Rapporten kommer att innehålla viktiga mättal för alla webbplatser som har minst ett besök (från %s webbsidorna som för tillfället är tillgängliga).",
"ReportSent": "Rapport skickad",
"ReportsIncluded": "Statistik ingår",
diff --git a/plugins/ScheduledReports/lang/uk.json b/plugins/ScheduledReports/lang/uk.json
index c0ed63b792..0e65e66090 100644
--- a/plugins/ScheduledReports/lang/uk.json
+++ b/plugins/ScheduledReports/lang/uk.json
@@ -1,15 +1,50 @@
{
"ScheduledReports": {
- "AlsoSendReportToTheseEmails": "Також надсилати звіти на наступні е-майли (кожен з нового рядка):",
+ "AggregateReportsFormat": "(необов'язково) Параметри відображення",
+ "AggregateReportsFormat_GraphsOnly": "Відображати тільки графіки (без звітних таблиць)",
+ "AggregateReportsFormat_TablesAndGraphs": "Відображати таблиці і графіки для всіх звітів",
+ "AggregateReportsFormat_TablesOnly": "(за замовчуванням) Відображати таблиці звітів (графіки тільки для ключових показетелей)",
+ "AlsoSendReportToTheseEmails": "Також відправляти звіти на наступні e-mail адреси (по одній в кожному рядку):",
+ "AreYouSureDeleteReport": "Ви впевнені, що хочете видалити звіт і його розклад?",
+ "CancelAndReturnToReports": "Скасувати та %1$sповернутися до списку звітів%2$s",
+ "CreateAndScheduleReport": "Створити і налаштувати розклад звітів",
+ "CreateReport": "Створити звітність",
+ "CustomVisitorSegment": "Cегмент відвідувачів:",
+ "DescriptionOnFirstPage": "Опис звіту відображається на першій сторінці звіту.",
+ "DisplayFormat_TablesOnly": "Відображати тільки таблиці (без графіків)",
"EmailHello": "Привіт,",
- "EmailReports": "Звіти на е-майл",
- "EmailSchedule": "Розклад розсилки",
- "MonthlyScheduleHelp": "Щомісячний розклад: звіт буде надсилатися в перший день кожного місяця",
- "PiwikReports": "Звіти Piwik",
- "PleaseFindAttachedFile": "Прикріплений файл є звітом %1$s від %2$s.",
+ "EmailReports": "Email-звіти",
+ "EmailSchedule": "Розклад e-mail розсилки",
+ "EvolutionGraph": "Показати історію зміни графіка для перших %s значень.",
+ "FrontPage": "Перша сторінка",
+ "PersonalEmailReports": "Персональні email-звіти",
+ "MonthlyScheduleHelp": "Щомісячне розклад: звіти будуть розсилатися кожний перший день місяця.",
+ "MustBeLoggedIn": "Ви повинні бути авторизовані для створення і редагування розкладу звітів.",
+ "NoRecipients": "У цього звіту одержувачів немає",
+ "Pagination": "Сторінка %1$s з %2$s",
+ "PiwikReports": "Звіти веб-аналітики",
+ "PleaseFindAttachedFile": "До цього листа прикріплений файл %1$s, що є звітом для %2$s.",
+ "SentFromX": "Відправлено від %s.",
+ "PleaseFindBelow": "Будь ласка, нижче вашого %1$s звіт за %2$s.",
+ "PluginDescription": "Створює користувальницькі звіти і планує їх відправку поштою щодня, щотижня або щомісяця для одного або кількох людей. Підтримує деякі формати звітів (html, pdf, csv, зображення).",
+ "ReportFormat": "Формат звіту",
+ "ReportHour": "Відправити звіт о %s годині",
+ "ReportIncludeNWebsites": "Звіт буде містити основні показники для всіх сайтів, у яких було хоча б одне відвідування (всього зараз доступно %s сайтів).",
+ "ReportSent": "Надіслати звіт",
+ "ReportsIncluded": "Дані, включені у звіт",
+ "ReportType": "Відправити звіт за допомогою",
+ "ReportUpdated": "Звіт оновлено",
+ "Segment_Deletion_Error": "Цей сегмент не може бути видалений або зроблений невидимим для інших користувачів, оскільки він використовується для створення звіту по електронній пошті %s. Повторіть спробу після видалення сегмента з цієї доповіді(дей).",
+ "Segment_Help": "Ви можете вибрати існуючий сегмент для застосування до даних цього звіту. Ви можете створювати і редагувати користувальницькі сегменти на панелі інструментів %1$s(натисніть тут, щоб відкрити)%2$s, натисніть далі на \"%3$s\", потім \"%4$s\".",
+ "SegmentAppliedToReports": "Сегмент '%s' застосовується до доповідей.",
"SendReportNow": "Надіслати звіт зараз",
- "SendReportTo": "Надіслати звіт на:",
- "SentToMe": "Надіслати мені",
- "WeeklyScheduleHelp": "Щотижневий розклад: звіт буде надсилатися в понелілок кожного тижня"
+ "SendReportTo": "Одержувачі",
+ "SentToMe": "Відправити мені",
+ "TableOfContent": "Аркуш звіту",
+ "ThereIsNoReportToManage": "У вас поки немає звітності для сайту %s",
+ "TopLinkTooltip": "Створіть Email-звіти в Piwik, щоб отримувати їх прямо на вашу електронну пошту або електрону пошту ваших клієнтів автоматично!",
+ "TopOfReport": "Повернутися наверх",
+ "UpdateReport": "Оновити звітність",
+ "WeeklyScheduleHelp": "Щотижневий розклад: звіти будуть розсилатися кожен понеділок."
}
} \ No newline at end of file
diff --git a/plugins/SegmentEditor/SegmentFormatter.php b/plugins/SegmentEditor/SegmentFormatter.php
index 19838d46d5..99052f5f4f 100644
--- a/plugins/SegmentEditor/SegmentFormatter.php
+++ b/plugins/SegmentEditor/SegmentFormatter.php
@@ -9,6 +9,7 @@
namespace Piwik\Plugins\SegmentEditor;
use Exception;
+use Piwik\Common;
use Piwik\Config;
use Piwik\Db;
use Piwik\Piwik;
@@ -111,7 +112,7 @@ class SegmentFormatter
$translation = Piwik::translate($this->matchesMetric[$operator]);
}
- return strtolower($translation);
+ return Common::mb_strtolower($translation);
}
private function getFormattedValue($operand)
diff --git a/plugins/SegmentEditor/SegmentQueryDecorator.php b/plugins/SegmentEditor/SegmentQueryDecorator.php
index d501f6f9b1..130cc59bd5 100644
--- a/plugins/SegmentEditor/SegmentQueryDecorator.php
+++ b/plugins/SegmentEditor/SegmentQueryDecorator.php
@@ -9,6 +9,7 @@
namespace Piwik\Plugins\SegmentEditor;
use Piwik\DataAccess\LogQueryBuilder;
+use Piwik\Plugin\LogTablesProvider;
use Piwik\Plugins\SegmentEditor\Services\StoredSegmentService;
use Piwik\Segment\SegmentExpression;
use Piwik\SettingsServer;
@@ -26,9 +27,10 @@ class SegmentQueryDecorator extends LogQueryBuilder
*/
private $storedSegmentService;
- public function __construct(StoredSegmentService $storedSegmentService)
+ public function __construct(StoredSegmentService $storedSegmentService, LogTablesProvider $logTablesProvider)
{
$this->storedSegmentService = $storedSegmentService;
+ parent::__construct($logTablesProvider);
}
public function getSelectQueryString(SegmentExpression $segmentExpression, $select, $from, $where, $bind, $groupBy,
diff --git a/plugins/SegmentEditor/SegmentSelectorControl.php b/plugins/SegmentEditor/SegmentSelectorControl.php
index 72be071e5e..560af449fa 100644
--- a/plugins/SegmentEditor/SegmentSelectorControl.php
+++ b/plugins/SegmentEditor/SegmentSelectorControl.php
@@ -9,11 +9,13 @@
namespace Piwik\Plugins\SegmentEditor;
use Piwik\API\Request;
+use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Piwik;
use Piwik\Plugins\API\API as APIMetadata;
+use Piwik\Plugins\UsersManager\API AS UsersManagerAPI;
use Piwik\View\UIControl;
use Piwik\Plugins\SegmentEditor\API as SegmentEditorAPI;
@@ -53,7 +55,7 @@ class SegmentSelectorControl extends UIControl
&& ($segment['type'] == 'metric' && $segment['segment'] != 'visitIp')
) {
$metricsLabel = Piwik::translate('General_Metrics');
- $metricsLabel[0] = strtolower($metricsLabel[0]);
+ $metricsLabel[0] = Common::mb_strtolower($metricsLabel[0]);
$segment['category'] .= ' (' . $metricsLabel . ')';
}
$segmentsByCategory[$segment['category']][] = $segment;
@@ -78,6 +80,8 @@ class SegmentSelectorControl extends UIControl
$this->authorizedToCreateSegments = SegmentEditorAPI::getInstance()->isUserCanAddNewSegment($this->idSite);
$this->isUserAnonymous = Piwik::isUserIsAnonymous();
$this->segmentTranslations = $this->getTranslations();
+ $this->segmentProcessedOnRequest = Rules::isBrowserArchivingAvailableForSegments();
+ $this->hideSegmentDefinitionChangeMessage = UsersManagerAPI::getInstance()->getUserPreference(Piwik::getCurrentUserLogin(), 'hideSegmentDefinitionChangeMessage');
}
public function getClientSideProperties()
diff --git a/plugins/SegmentEditor/javascripts/Segmentation.js b/plugins/SegmentEditor/javascripts/Segmentation.js
index f80f3fa193..59340ac4a7 100644
--- a/plugins/SegmentEditor/javascripts/Segmentation.js
+++ b/plugins/SegmentEditor/javascripts/Segmentation.js
@@ -1102,7 +1102,46 @@ Segmentation = (function($) {
jQuery.extend(params, {
"idSegment": segmentId
});
- self.updateMethod(params);
+
+ if(segmentStr != getSegmentFromId(segmentId).definition && $('.segment-definition-change-confirm').data('hideMessage') != 1) {
+ var isBrowserArchivingAvailableForSegments = $('.segment-definition-change-confirm').data('segmentProcessedOnRequest');
+ var isRealTimeSegment = (autoArchive == 0);
+ var segmentNotProcessedOnRequest = !isBrowserArchivingAvailableForSegments || !isRealTimeSegment;
+
+ $('.process-on-request, .no-process-on-request').hide();
+
+ if (segmentNotProcessedOnRequest) {
+ $('.no-process-on-request').show();
+ } else {
+ $('.process-on-request').show();
+ }
+
+ piwikHelper.modalConfirm('.segment-definition-change-confirm', {
+ yes: function () {
+ if ($('#hideSegmentMessage:checked').length) {
+ var ajaxHandler = new ajaxHelper();
+ ajaxHandler.setLoadingElement();
+ ajaxHandler.addParams({
+ "module": 'API',
+ "format": 'json',
+ "method": 'UsersManager.setUserPreference',
+ "userLogin": piwik.userLogin,
+ "preferenceName": "hideSegmentDefinitionChangeMessage",
+ "preferenceValue": "1"
+ }, 'GET');
+ ajaxHandler.useCallbackInCaseOfError();
+ ajaxHandler.setCallback(function (response) {
+ self.updateMethod(params);
+ });
+ ajaxHandler.send(true);
+ } else {
+ self.updateMethod(params);
+ }
+ }
+ });
+ } else {
+ self.updateMethod(params);
+ }
}
};
diff --git a/plugins/SegmentEditor/lang/cs.json b/plugins/SegmentEditor/lang/cs.json
index 9751d2b848..d52a43b0c0 100644
--- a/plugins/SegmentEditor/lang/cs.json
+++ b/plugins/SegmentEditor/lang/cs.json
@@ -6,11 +6,14 @@
"AreYouSureDeleteSegment": "Opravdu chcete odstranit tento segment?",
"AutoArchivePreProcessed": "Segmentovaná hlášení jsou předzpracována rychleji (vyžadují cron)",
"AutoArchiveRealTime": "Segmentovaná hlášení jsou zpracována v reálném čase",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Chystáte se změnit definici segmentu. Analytická data pro tento nový segment budou zobrazena až po novém vypracování reportů. Zobrazení nových dat pro upravený segment může zabrat až několik hodin. Přesto pokračovat?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Chystáte se změnit definici segmentu. Analytická data pro tento nový segment budou zpracována dle potřeby při jejich vyžádání. Zobrazení reportů může trvat několik minut. Přesto pokračovat?",
"ChooseASegment": "Zvolte segment",
"CurrentlySelectedSegment": "Aktuálně vybraný segment: %s",
"DataAvailableAtLaterDate": "Vaše segmentovaná analytická hlášení budou dostupná později. Omlouváme se za tuto nepříjemnost.",
"DefaultAllVisits": "Všechny návštěvy",
"DragDropCondition": "Přetáhněte podmínku",
+ "HideMessageInFuture": "Již tuto zprávu nezobrazovat",
"LoadingSegmentedDataMayTakeSomeTime": "Zpracování segmentovaných dat návštěvníků může pár minut trvat...",
"OperatorAND": "AND",
"OperatorOR": "OR",
diff --git a/plugins/SegmentEditor/lang/de.json b/plugins/SegmentEditor/lang/de.json
index 7e9a75ef96..4b852598d2 100644
--- a/plugins/SegmentEditor/lang/de.json
+++ b/plugins/SegmentEditor/lang/de.json
@@ -6,11 +6,14 @@
"AreYouSureDeleteSegment": "Möchten Sie dieses Segment wirklich löschen?",
"AutoArchivePreProcessed": "Segmentierte Berichte werden im Voraus verarbeitet (schneller, benötigt archive.php Cron)",
"AutoArchiveRealTime": "Segmentierte Berichte werden in Echtzeit verarbeitet.",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Sie sind dabei die Definition des Segments zu ändern. Die Berichte für dieses neue Segment stehen erst zur Verfügung sobald sie berechnet wurden. Es könnte einige Stunden dauern bis Daten für das Segment angezeigt werden. Möchten Sie trotzdem fortfahren?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Sie sind dabei die Definition des Segments zu ändern. Die Berichte für dieses neue Segment werden berechnet, sobald Sie das nächste mal angefragt werden. Es könnte einige Minuten dauern bis die Berichte erscheinen. Möchten Sie trotzdem fortfahren?",
"ChooseASegment": "Segment auswählen",
"CurrentlySelectedSegment": "Aktuell ausgewähltes Segment: %s",
"DataAvailableAtLaterDate": "Ihre segmentierten Analytik-Berichte stehen später zur Verfügung. Wir entschuldigen uns für die Unannehmlichkeit.",
"DefaultAllVisits": "Alle Besuche",
"DragDropCondition": "Bedingung durch Drag & Drop hinzufügen",
+ "HideMessageInFuture": "Diese Meldung nicht mehr anzeigen",
"LoadingSegmentedDataMayTakeSomeTime": "Die Verarbeitung der segmentierten Besucherdaten kann einige Minuten dauern...",
"OperatorAND": "UND",
"OperatorOR": "ODER",
diff --git a/plugins/SegmentEditor/lang/el.json b/plugins/SegmentEditor/lang/el.json
index 96d5e2256b..7d45edd36a 100644
--- a/plugins/SegmentEditor/lang/el.json
+++ b/plugins/SegmentEditor/lang/el.json
@@ -6,11 +6,14 @@
"AreYouSureDeleteSegment": "Είστε σίγουροι για τη διαγραφή του τμήματος;",
"AutoArchivePreProcessed": "οι αναφορές τμημάτων προεπεξεργάζονται (γρηγορότερα, απαιτείται το archive.php με cron)",
"AutoArchiveRealTime": "οι αναφορές τμημάτων επεξεργάζονται σε πραγματικό χρόνο",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Πρόκειται να αλλάξετε τον ορισμό της κατάτμησης. Η αναφορά αναλυτικών για τη νέα κατάτμηση δε θα είναι διαθέσιμη μέχρι να γίνει και πάλι επεξεργασία των αναφορών. Ενδέχεται να διαρκέσει λίγες ώρες μέχρι να εμφανιστούν δεδομένα αναφοράς για αυτή την κατάτμηση. Θέλετε να συνεχίσετε έτσι κι αλλιώς;",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Πρόκειται να αλλάξετε τον ορισμό της κατάτμησης. Θα γίνει επεξεργασία της αναφοράς αναλυτικών για τη νέα κατάτμηση την επόμενη στιγμή που θα ζητηθεί. Οι αναφορές σας θα πάρουν λίγα λεπτά για να εμφανιστούν. Θέλετε να συνεχίσετε έτσι κι αλλιώς;",
"ChooseASegment": "Επιλέξτε ένα τμήμα",
"CurrentlySelectedSegment": "Επιλεγμένο τμήμα αυτή τη στιγμή: %s",
"DataAvailableAtLaterDate": "Οι τμηματικές αναφορές αναλυτικών θα είναι αργότερα διαθέσιμες. Ζητούμε συγγνώμη για την ταλαιπωρία.",
"DefaultAllVisits": "Όλες οι επισκέψεις",
"DragDropCondition": "Συνθήκη με Σύρε & Άσε",
+ "HideMessageInFuture": "Να μην εμφανίζεται το μήνυμα αυτό στο μέλλον",
"LoadingSegmentedDataMayTakeSomeTime": "Η επεξεργασία των δεδομένων των τμημάτων επισκεπτών μπορεί να διαρκέσει κάποια λεπτά...",
"OperatorAND": "ΚΑΙ",
"OperatorOR": "Ή",
diff --git a/plugins/SegmentEditor/lang/en.json b/plugins/SegmentEditor/lang/en.json
index 96e36c02b7..69621c015c 100644
--- a/plugins/SegmentEditor/lang/en.json
+++ b/plugins/SegmentEditor/lang/en.json
@@ -6,11 +6,14 @@
"AreYouSureDeleteSegment": "Are you sure you want to delete this segment?",
"AutoArchivePreProcessed": "segmented reports are pre-processed (faster, requires cron)",
"AutoArchiveRealTime": "segmented reports are processed in real time",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "You're about to change the segment definition. Your analytics reports for this new segment won't be available until the reports are re-processed. It may take a few hours for reports data to show for this segment. Proceed anyway?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "You're about to change the segment definition. Your analytics reports for this new segment will be re-processed on demand the next time you request them. Your reports may take a few minutes to appear. Proceed anyway?",
"ChooseASegment": "Choose a segment",
"CurrentlySelectedSegment": "Currently selected segment: %s",
"DataAvailableAtLaterDate": "Your segmented analytics reports will be available later. We apologize for the inconvenience.",
"DefaultAllVisits": "All visits",
"DragDropCondition": "Drag & Drop condition",
+ "HideMessageInFuture": "Hide this message in the future",
"LoadingSegmentedDataMayTakeSomeTime": "Processing segmented visitor data may take a few minutes...",
"OperatorAND": "AND",
"OperatorOR": "OR",
diff --git a/plugins/SegmentEditor/lang/es.json b/plugins/SegmentEditor/lang/es.json
index ff1e7fd3b9..61e3945add 100644
--- a/plugins/SegmentEditor/lang/es.json
+++ b/plugins/SegmentEditor/lang/es.json
@@ -6,24 +6,36 @@
"AreYouSureDeleteSegment": "¿Está seguro que desea eliminar este segmento?",
"AutoArchivePreProcessed": "los informes segmentados son pre-procesados (rápidamente, requiere cron)",
"AutoArchiveRealTime": "los informes segmentados son procesados en tiempo real",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Está próximo a cambiar la definición de este segmento. Sus informes analíticos para este nuevo segmento no estarán disponibles hasta que estos no sean reprocesados. Puede tomar unas pocas horas para que se observe información de este segmento. Aun así, proceder?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Está próximo a cambiar la definición de segmento. Sus informes analíticos para este nuevo segmento serán reprocesados bajo demanda la próxima vez que los peticione. Sus informes pueden tomar un par de minutos en aparecer. ¿Proceder de cualquier modo?",
"ChooseASegment": "Elegir un segmento",
+ "CurrentlySelectedSegment": "Segmento seleccionado actualmente: %s",
"DataAvailableAtLaterDate": "Sus informes analíticos segmentados estarán disponibles más tarde. Lamentamos la inconveniencia.",
"DefaultAllVisits": "Todas las visitas",
"DragDropCondition": "Arrastrar & soltar condición",
+ "HideMessageInFuture": "Ocultar este mensaje en el futuro",
"LoadingSegmentedDataMayTakeSomeTime": "Procesando los datos de visitante segmentados pueden tomar unos minutos…",
"OperatorAND": "Y",
"OperatorOR": "O",
"SaveAndApply": "Guardar & aplicar",
"SegmentDisplayedAllWebsites": "todos los sitios de internet",
"SegmentDisplayedThisWebsiteOnly": "este sitio de internet únicamente",
+ "SegmentIsDisplayedForWebsite": "y procesado por",
"SegmentNotApplied": "Segmento '%s' no aplicado",
"SegmentNotAppliedMessage": "Está solicitando datos para el segmento personalizado '%s', esta configuración de Piwik actualmente impide el proceso en tiempo real de informes por razones de rendimiento.",
+ "SelectSegmentOfVisits": "Seleccione un segmento de visitas:",
"ThisSegmentIsVisibleTo": "Este segmento es visible para:",
"VisibleToAllUsers": "todos los usuarios",
"VisibleToMe": "yo",
"YouMayChangeSetting": "Alternativamente puede cambiar la configuración en el archivo config (%1$s) o modificar este segmento y elegir '%2$s'.",
+ "VisibleToSuperUser": "Visible para usted debido a que posee un acceso de Super Usuario",
+ "SharedWithYou": "Compartido con usted",
"YouMustBeLoggedInToCreateSegments": "Debe estar conectado para crear y editar segmentos de usuario personalizados.",
"YouDontHaveAccessToCreateSegments": "No posee el nivel de acceso requerido para crear y editar segmentos.",
- "AddingSegmentForAllWebsitesDisabled": "Añadir segmentos para todos los sitios de internet se ha deshabilitado."
+ "AddingSegmentForAllWebsitesDisabled": "Añadir segmentos para todos los sitios de internet se ha deshabilitado.",
+ "SegmentXIsAUnionOf": "%s es una unión de estos segmentos:",
+ "CustomSegment": "Segmento personalizado",
+ "SegmentOperatorIsNullOrEmpty": "es nulo o vacío",
+ "SegmentOperatorIsNotNullNorEmpty": "no es nulo ni vacío"
}
} \ No newline at end of file
diff --git a/plugins/SegmentEditor/lang/fr.json b/plugins/SegmentEditor/lang/fr.json
index 1fb4502c8b..0928bd1efe 100644
--- a/plugins/SegmentEditor/lang/fr.json
+++ b/plugins/SegmentEditor/lang/fr.json
@@ -6,17 +6,21 @@
"AreYouSureDeleteSegment": "Êtes vous sûr(e) de vouloir supprimer ce segment?",
"AutoArchivePreProcessed": "les rapports segmentés sont pré-traités (plus rapide, requiert un cron sur archive.php)",
"AutoArchiveRealTime": "les rapports segmentés sont traités en temps réel",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Vous vous apprêtez à changer la définition du segment. Vos rapports de statistiques pour ce nouveau segment ne seront pas disponibles avant que les rapports soient traités à nouveau. Cela peut prendre plusieurs heures pour que les données de rapports affichent ce segment. Voulez-vous continuer?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Vous vous apprêtez à changer la définition du segment. Vos rapports de statistiques pour ce segment vont être traités à nouveau à la demande la prochaine fois que vous le demanderez. Vos rapports pourront prendre plusieurs minutes à apparaître. Voulez-vous continuer?",
"ChooseASegment": "Choisir un segment",
"CurrentlySelectedSegment": "Segment sélectionné : %s",
"DataAvailableAtLaterDate": "Votre rapport d'analyse segmenté sera disponible plus tard. Veuillez nous excuser pour le désagrément.",
"DefaultAllVisits": "Toutes les visites",
"DragDropCondition": "Condition de Drag & Drop",
+ "HideMessageInFuture": "Cacher ce message à l'avenir",
"LoadingSegmentedDataMayTakeSomeTime": "Le traitement des données visiteurs segmentées peut prendre quelques minutes...",
"OperatorAND": "ET",
"OperatorOR": "OU",
"SaveAndApply": "Sauvegarder & appliquer",
"SegmentDisplayedAllWebsites": "tous les sites web",
"SegmentDisplayedThisWebsiteOnly": "ce site web uniquement",
+ "SegmentIsDisplayedForWebsite": "et traité pour",
"SegmentNotApplied": "Segment \"%s\" non appliqué",
"SegmentNotAppliedMessage": "Vous êtes en train de demander des données for le segment personnalisé '%s', la configuration actuelle de Piwik empêche la génération en temps réelle de rapport pour des raisons de performance.",
"SelectSegmentOfVisits": "Sélectionnez un segment de visites :",
diff --git a/plugins/SegmentEditor/lang/it.json b/plugins/SegmentEditor/lang/it.json
index 71e0b928bc..d496f574ab 100644
--- a/plugins/SegmentEditor/lang/it.json
+++ b/plugins/SegmentEditor/lang/it.json
@@ -6,11 +6,14 @@
"AreYouSureDeleteSegment": "Sei sicuro di voler eliminare questo segmento?",
"AutoArchivePreProcessed": "i reports segmentati sono pre-elaborati (più veloce, richiede un cron-job)",
"AutoArchiveRealTime": "i reports segmentati sono elaborati in tempo reale",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Stai per cambiare la definizione del segmento. I tuoi report statistici per questo nuovo segmento non saranno disponibili fin quando essi non verranno elaborati. Questo può richiedere qualche ora per i dati da mostrare per questo segmento. Procedi lo stesso?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Stai per cambiare la definizione del segmento. I tuoi report statistici per questo nuovo segmento verranno elaborati su richiesta la prossima volta che li richiederai. I tuoi report possono richiedere qualche minuto per apparire. Procedi lo stesso?",
"ChooseASegment": "Scegli un segmento",
"CurrentlySelectedSegment": "Segmento attualmente selezionato: %s",
"DataAvailableAtLaterDate": "I report segmentati delle statistiche saranno disponibili più tardi. Ci scusiamo per l'inconveniente.",
"DefaultAllVisits": "Tutte le visite",
"DragDropCondition": "Copia & Incolla condizione",
+ "HideMessageInFuture": "Nascondi questo messaggio, in futuro",
"LoadingSegmentedDataMayTakeSomeTime": "L'elaborazione dei dati visitatore segmentati può richiedere qualche minuto...",
"OperatorAND": "E",
"OperatorOR": "O",
diff --git a/plugins/SegmentEditor/lang/nl.json b/plugins/SegmentEditor/lang/nl.json
index d8c1060c17..146d2b363f 100644
--- a/plugins/SegmentEditor/lang/nl.json
+++ b/plugins/SegmentEditor/lang/nl.json
@@ -10,6 +10,7 @@
"DataAvailableAtLaterDate": "De gesegmenteerde analyse rapporten zullen op een later tijdstip beschikbaar komen. Excuses voor het ongemak.",
"DefaultAllVisits": "Alle bezoeken",
"DragDropCondition": "Sleep en verplaats voorwaarde",
+ "HideMessageInFuture": "Dit bericht in de toekomst verbergen",
"LoadingSegmentedDataMayTakeSomeTime": "Verwerking van gesegmenteerde bezoeker gegevens kan enkele minuten duren ...",
"OperatorAND": "EN",
"OperatorOR": "OF",
diff --git a/plugins/SegmentEditor/lang/pt-br.json b/plugins/SegmentEditor/lang/pt-br.json
index faf1171950..c961e5d9e9 100644
--- a/plugins/SegmentEditor/lang/pt-br.json
+++ b/plugins/SegmentEditor/lang/pt-br.json
@@ -6,11 +6,14 @@
"AreYouSureDeleteSegment": "Confirma a exclusão deste segmento?",
"AutoArchivePreProcessed": "Relatórios segmentados são pré-processados ​​(Para agilizar, é necessário usar o cron em: archive.php)",
"AutoArchiveRealTime": "Relatórios segmentados são processados em tempo real",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Você está prestes a mudar a definição do segmento. Os relatórios analíticos para este novo segmento não estarão disponíveis até que os relatórios sejam reprocessados. Pode levar algumas horas para que os dados de relatórios mostrem para esse segmento. Continuar mesmo assim?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Você está prestes a mudar a definição do segmento. Os relatórios analíticos para este novo segmento serão reprocessados sob demanda na próxima vez que solicitá-los. Seus relatórios pode demorar alguns minutos para aparecer. Continuar mesmo assim?",
"ChooseASegment": "Escolha um segmento",
"CurrentlySelectedSegment": "Segmento atualmente selecionado: %s",
"DataAvailableAtLaterDate": "Os seus relatórios de análise segmentados estarão disponíveis mais tarde. Pedimos desculpas pela inconveniência.",
"DefaultAllVisits": "Todas as visitas",
"DragDropCondition": "Condição Drag & Drop",
+ "HideMessageInFuture": "Ocultar esta mensagem no futuro",
"LoadingSegmentedDataMayTakeSomeTime": "O processamento segmentado de dados de visitantes pode demorar alguns mitutos...",
"OperatorAND": "e",
"OperatorOR": "ou",
diff --git a/plugins/SegmentEditor/lang/ru.json b/plugins/SegmentEditor/lang/ru.json
index ad9e928636..ac134deac9 100644
--- a/plugins/SegmentEditor/lang/ru.json
+++ b/plugins/SegmentEditor/lang/ru.json
@@ -1,5 +1,6 @@
{
"SegmentEditor": {
+ "PluginDescription": "Создать и повторно использовать пользовательские Сегменты посетителей с помощью Редактора сегментов.",
"AddANDorORCondition": "Добавить условие %s",
"AddNewSegment": "Добавить новый сегмент",
"AreYouSureDeleteSegment": "Вы уверены, что хотите удалить этот сегмент?",
diff --git a/plugins/SegmentEditor/lang/sv.json b/plugins/SegmentEditor/lang/sv.json
index 955e9da3b4..24ca92a229 100644
--- a/plugins/SegmentEditor/lang/sv.json
+++ b/plugins/SegmentEditor/lang/sv.json
@@ -1,11 +1,13 @@
{
"SegmentEditor": {
+ "PluginDescription": "Skapa och återanvänd anpassade Besökssegment med Segmenteditorn.",
"AddANDorORCondition": "Lägg till %s villkor",
"AddNewSegment": "Lägg till nytt segment",
"AreYouSureDeleteSegment": "Vill du verkligen radera detta segment?",
"AutoArchivePreProcessed": "Segmenterade rapporter processas i förväg (för att det ska gå fortare krävs archive.php data)",
"AutoArchiveRealTime": "Segmenterade rapporter processas i realtid",
"ChooseASegment": "Välj ett segment",
+ "CurrentlySelectedSegment": "Valt segment: %s",
"DataAvailableAtLaterDate": "Dina segmenterade analysrapporter kommer att finnas tillgänglig senare. Vi ber om ursäkt för besväret.",
"DefaultAllVisits": "Alla besök",
"DragDropCondition": "Dra & Droppa villkor",
@@ -15,14 +17,20 @@
"SaveAndApply": "Spara & Använd",
"SegmentDisplayedAllWebsites": "alla webbsidor",
"SegmentDisplayedThisWebsiteOnly": "endast denna webbsida",
+ "SegmentIsDisplayedForWebsite": "och behandlas för",
"SegmentNotApplied": "Segment '%s' tillämpas inte",
"SegmentNotAppliedMessage": "Du begär data för det Anpassade Segmentet '%s', denna Piwik konfiguration förhindrar realtidsbearbetning av rapporter pga prestandaskäl.",
+ "SelectSegmentOfVisits": "Välj ett segment av besök:",
"ThisSegmentIsVisibleTo": "Det här segmentet är synligt för:",
"VisibleToAllUsers": "alla användare",
"VisibleToMe": "jag",
"YouMayChangeSetting": "Alternativt kan du ändra inställningarna i konfigurationsfilen (%1$s), eller redigera detta Segment och välj '%2$s'.",
+ "VisibleToSuperUser": "Synligt för dig eftersom du har administratörsrättigheter",
+ "SharedWithYou": "Delat med dig",
"YouMustBeLoggedInToCreateSegments": "Du måste vara inloggad för att skapa och redigera besökssegment.",
"YouDontHaveAccessToCreateSegments": "Du har inte rättigheter för att skapa och redigera segment.",
+ "AddingSegmentForAllWebsitesDisabled": "Lägga till segment för alla webbplatser har inaktiverats.",
+ "SegmentXIsAUnionOf": "%s är en sammanslagning av dessa segment:",
"CustomSegment": "Anpassat segment",
"SegmentOperatorIsNullOrEmpty": "är null eller tom",
"SegmentOperatorIsNotNullNorEmpty": "är inte null och inte tom"
diff --git a/plugins/SegmentEditor/lang/uk.json b/plugins/SegmentEditor/lang/uk.json
new file mode 100644
index 0000000000..4c2c32c1eb
--- /dev/null
+++ b/plugins/SegmentEditor/lang/uk.json
@@ -0,0 +1,38 @@
+{
+ "SegmentEditor": {
+ "PluginDescription": "Створення та повторне використання користувальницьких сегментів відвідувачів з редактором сегменту.",
+ "AddANDorORCondition": "Добавить условие %s",
+ "AddNewSegment": "Додати новий сегмент",
+ "AreYouSureDeleteSegment": "Ви впевнені, що хочете видалити цей сегмент?",
+ "AutoArchivePreProcessed": "сегментовані звіти проходять попередню обробку (швидше, вимагає cron)",
+ "AutoArchiveRealTime": "сегментовані звіти обробляються в режимі реального часу",
+ "ChooseASegment": "Виберіть сегмент",
+ "CurrentlySelectedSegment": "В даний час обрано сегмент: %s",
+ "DataAvailableAtLaterDate": "Ваш сегментовані звіти аналітики будуть доступні пізніше. Ми приносимо свої вибачення за доставлені незручності.",
+ "DefaultAllVisits": "Всі візити",
+ "DragDropCondition": "Drag & Drop переміщення",
+ "LoadingSegmentedDataMayTakeSomeTime": "Обробка сегментованих даних відвідувач може зайняти кілька хвилин...",
+ "OperatorAND": "AND",
+ "OperatorOR": "OR",
+ "SaveAndApply": "Зберегти і Застосувати",
+ "SegmentDisplayedAllWebsites": "всі сайти",
+ "SegmentDisplayedThisWebsiteOnly": "цей сайт тільки",
+ "SegmentIsDisplayedForWebsite": "і обробляються для",
+ "SegmentNotApplied": "Сегмент '%s' не застосовується",
+ "SegmentNotAppliedMessage": "Ви запитуєте дані для сегменту '%s', ця конфігурація Piwik в даний час не дозволяє обробку в режимі реального часу звітів з міркувань продуктивності.",
+ "SelectSegmentOfVisits": "Виберіть сегмент візитів:",
+ "ThisSegmentIsVisibleTo": "Цей сегмент стає видимим для:",
+ "VisibleToAllUsers": "усіх користувачів",
+ "VisibleToMe": "мене",
+ "YouMayChangeSetting": "Ви також можете змінити налаштування у файлі конфігурації (%1$s), або редагувати цей сегмент і вибрати '%2$s'.",
+ "VisibleToSuperUser": "Видиме вам, тому що у вас є доступ суперкористувача",
+ "SharedWithYou": "Поділився з вами",
+ "YouMustBeLoggedInToCreateSegments": "Ви повинні увійти, щоб створювати і редагувати користувальницькі сегменти відвідувачів.",
+ "YouDontHaveAccessToCreateSegments": "Ви не маєте необхідного рівня доступу для створення і редагування сегментів.",
+ "AddingSegmentForAllWebsitesDisabled": "Додавання сегментів для всіх веб-сайтів було відключено.",
+ "SegmentXIsAUnionOf": "%s є об'єднанням цих сегментів:",
+ "CustomSegment": "Користувальницький Сегмент",
+ "SegmentOperatorIsNullOrEmpty": "є нульовим або порожнім",
+ "SegmentOperatorIsNotNullNorEmpty": "не нульовий або порожній"
+ }
+} \ No newline at end of file
diff --git a/plugins/SegmentEditor/stylesheets/segmentation.less b/plugins/SegmentEditor/stylesheets/segmentation.less
index c0f97e940a..f10f067856 100644
--- a/plugins/SegmentEditor/stylesheets/segmentation.less
+++ b/plugins/SegmentEditor/stylesheets/segmentation.less
@@ -670,6 +670,17 @@ a.metric_category {
}
}
+.segment-definition-change-confirm .description {
+ margin-top: 20px;
+ float: left;
+ width: 100%;
+ text-align: center;
+
+ > span {
+ display: inline-block;
+ }
+}
+
.dropdown-body {
border-top-width: 0;
display: none;
diff --git a/plugins/SegmentEditor/templates/_segmentSelector.twig b/plugins/SegmentEditor/templates/_segmentSelector.twig
index c8ab792fc0..76702b153c 100644
--- a/plugins/SegmentEditor/templates/_segmentSelector.twig
+++ b/plugins/SegmentEditor/templates/_segmentSelector.twig
@@ -32,7 +32,7 @@
</div>
</div>
- <div class="initial-state-rows">{# no space here important for jquery #}<div class="segment-add-row initial"><div>
+ <div class="initial-state-rows">{# no space here important for jQuery #}<div class="segment-add-row initial"><div>
<span>+ {{ 'SegmentEditor_DragDropCondition'|translate|raw }}</span>
</div></div>
<div class="segment-and">{{ 'SegmentEditor_OperatorAND'|translate|raw }}</div>
@@ -169,6 +169,24 @@
<input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
<input role="no" type="button" value="{{ 'General_No'|translate }}"/>
</div>
+<div class="ui-confirm segment-definition-change-confirm" data-segment-processed-on-request="{{ segmentProcessedOnRequest|number_format }}" data-hide-message="{{ hideSegmentDefinitionChangeMessage }}">
+ <h2>
+ <span class="process-on-request">
+ {{ 'SegmentEditor_ChangingSegmentDefinitionConfirmationProcessedOnRequest'|translate }}
+ </span>
+ <span class="no-process-on-request">
+ {{ 'SegmentEditor_ChangingSegmentDefinitionConfirmationNotProcessedOnRequest'|translate }}
+ </span>
+ </h2>
+ <p class="description">
+ <span>
+ <input type="checkbox" id="hideSegmentMessage" name="hideSegmentMessage" />
+ <label for="hideSegmentMessage">{{ 'SegmentEditor_HideMessageInFuture'|translate }}</label>
+ </span>
+ </p>
+ <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
+ <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
+</div>
<div class="ui-confirm pleaseChangeBrowserAchivingDisabledSetting">
<h2>{{ 'SegmentEditor_SegmentNotApplied'|translate(nameOfCurrentSegment)|raw }}</h2>
{% set segmentSetting %}{{ 'SegmentEditor_AutoArchivePreProcessed'|translate }}{% endset %}
diff --git a/plugins/SegmentEditor/tests/Unit/SegmentQueryDecoratorTest.php b/plugins/SegmentEditor/tests/Unit/SegmentQueryDecoratorTest.php
index 6ecad82f2f..7e38188966 100644
--- a/plugins/SegmentEditor/tests/Unit/SegmentQueryDecoratorTest.php
+++ b/plugins/SegmentEditor/tests/Unit/SegmentQueryDecoratorTest.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\SegmentEditor\tests\Unit;
use Piwik\Plugins\SegmentEditor\SegmentQueryDecorator;
use Piwik\Plugins\SegmentEditor\Services\StoredSegmentService;
use Piwik\Segment\SegmentExpression;
+use Piwik\Tests\Framework\Mock\Plugin\LogTablesProvider;
/**
* @group SegmentEditor
@@ -36,7 +37,8 @@ class SegmentQueryDecoratorTest extends \PHPUnit_Framework_TestCase
/** @var StoredSegmentService $service */
$service = $this->getMockSegmentEditorService();
- $this->decorator = new SegmentQueryDecorator($service);
+ $logTables = new LogTablesProvider();
+ $this->decorator = new SegmentQueryDecorator($service, $logTables);
}
public function test_getSelectQueryString_DoesNotDecorateSql_WhenNoSegmentUsed()
@@ -86,4 +88,5 @@ class SegmentQueryDecoratorTest extends \PHPUnit_Framework_TestCase
$mock->expects($this->any())->method('getAllSegmentsAndIgnoreVisibility')->willReturn(self::$storedSegments);
return $mock;
}
+
}
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index aa0cadb5df..a28093ed98 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -350,7 +350,7 @@ class API extends \Piwik\Plugin\API
* For the superUser it returns all the websites in the database.
*
* @param bool|int $limit Specify max number of sites to return
- * @param bool $_restrictSitesToLogin Hack necessary when runnning scheduled tasks, where "Super User" is forced, but sometimes not desired, see #3017
+ * @param bool $_restrictSitesToLogin Hack necessary when running scheduled tasks, where "Super User" is forced, but sometimes not desired, see #3017
* @return array array for each site, an array of information (idsite, name, main_url, etc.)
*/
public function getSitesWithAtLeastViewAccess($limit = false, $_restrictSitesToLogin = false)
@@ -1282,7 +1282,7 @@ class API extends \Piwik\Plugin\API
* Updates the field ts_created for the specified websites.
*
* @param $idSites int Id Site to update ts_created
- * @param $minDate Date to set as creation date. To play it safe it will substract one more day.
+ * @param $minDate Date to set as creation date. To play it safe it will subtract one more day.
*
* @ignore
*/
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index f77844af9e..225b2bdc09 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -125,8 +125,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
{
$path = PIWIK_INCLUDE_PATH . '/libs/PiwikTracker/';
$filename = 'PiwikTracker.php';
- header('Content-type: text/php');
- header('Content-Disposition: attachment; filename="' . $filename . '"');
+ Common::sendHeader('Content-type: text/php');
+ Common::sendHeader('Content-Disposition: attachment; filename="' . $filename . '"');
return file_get_contents($path . $filename);
}
diff --git a/plugins/SitesManager/lang/fr.json b/plugins/SitesManager/lang/fr.json
index b4157d71b1..0da2650ea0 100644
--- a/plugins/SitesManager/lang/fr.json
+++ b/plugins/SitesManager/lang/fr.json
@@ -78,6 +78,7 @@
"UTCTimeIs": "L'heure UTC est %s.",
"OnlyMatchedUrlsAllowed": "Effectue le suivi des visites et actions uniquement quand l'URL d'action commence avec une des URLs ci-dessus.",
"OnlyMatchedUrlsAllowedHelp": "Quand activé, Piwik va effectuer le suivi des actions uniquement quand l'URL de la page est une des URLs de votre site web. Ceci empêche les gens de spammer vos données d'analyse avec des URLs d'autres sites web.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "Le domaine et le chemin doivent être exacts et chaque sous-domaine valide doit être précisé séparément. Par exemple quand les URLs connues sont \"http:\/\/exemple.com\/chemin\" et \"http:\/\/bon.exemple.com\", les requêtes de suivit pour \"http:\/\/exemple.com\/autrechemin\" ou \"http:\/\/mauvais.exemple.com\" sont ignorées.",
"WebsitesManagement": "Gestion des sites",
"XManagement": "Gérer %s",
"ChooseMeasurableTypeHeadline": "Que voudriez-vous mesurer ?",
diff --git a/plugins/SitesManager/lang/ka.json b/plugins/SitesManager/lang/ka.json
index 5c0c750864..13f27929e5 100644
--- a/plugins/SitesManager/lang/ka.json
+++ b/plugins/SitesManager/lang/ka.json
@@ -12,8 +12,8 @@
"DeleteConfirm": "დარწმუნებული ხართ, რომ გსურთ %s ვებ საიტის წაშლა?",
"ExceptionDeleteSite": "ამ ვებ საიტის წაშლა შეუძლებელია, რადგან ის არის ერთადერთი რეგისტრირებული ვებ საიტი. ჯერ დაამატეთ ახალი ვებ საიტი და შემდეგ წაშალეთ ეს.",
"ExceptionEmptyName": "ვებ საიტის სახელი არ შეიძლება იყოს ცარიელი.",
- "ExceptionInvalidCurrency": "\"%s\" ვალუტა არ არის ვალიდური. გთხოვთ, მიუთითოთ ვალიდური ვალუტის სიმბოლო (მაგ. %s)",
- "ExceptionInvalidIPFormat": "IP მისამართი, გამორიცხვით \"%s\", არ არის ვალიდური IP ფორმატის (მაგ. %s).",
+ "ExceptionInvalidCurrency": "\"%1$s\" ვალუტა არ არის ვალიდური. გთხოვთ, მიუთითოთ ვალიდური ვალუტის სიმბოლო (მაგ. %2$s)",
+ "ExceptionInvalidIPFormat": "IP მისამართი, გამორიცხვით \"%1$s\", არ არის ვალიდური IP ფორმატის (მაგ. %2$s).",
"ExceptionInvalidTimezone": "საათობრივი სარტყელი \"%s\" არ არის ვალიდური. გთხოვთ, მიუთითოთ ვალიდური საათობრივი სარტყელი.",
"ExceptionInvalidUrl": "url '%s' არ არის ვალიდური URL.",
"ExceptionNoUrl": "ვებ საიტისთვის ერთი URL მაინც უნდა მიუთითოთ.",
diff --git a/plugins/SitesManager/lang/sq.json b/plugins/SitesManager/lang/sq.json
index cef6614882..12f4251a22 100644
--- a/plugins/SitesManager/lang/sq.json
+++ b/plugins/SitesManager/lang/sq.json
@@ -11,8 +11,10 @@
"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?",
+ "DisableSiteSearch": "Mos gjurmo Kërkime në Sajt",
"EcommerceHelp": "Po u aktivizua, te raporti \"Objektiva\" do të shfaqet një ndarje e re, \"E-tregti\".",
"EnableEcommerce": "Me E-tregti të aktivizuar",
+ "EnableSiteSearch": "Kërkimi në Sajt është i aktivizuar",
"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.",
@@ -34,7 +36,10 @@
"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",
+ "KeepURLFragments": "Gjurmim fragmentesh URL-sh Faqesh",
+ "KeepURLFragmentsHelp": "Nëse kutiza më poshtë lihet pa shenjë, fragmentet e URL-ve të Faqeve (gjithçka pas %1$s) do të hiqen nga gjurmimet: %2$s do të gjurmohet si %3$s",
"KeepURLFragmentsHelp2": "Këtë rregullim mund ta anashkaloni më sipër, për sajte individualë.",
+ "KeepURLFragmentsLong": "Mbaji fragmentet e URL-ve të Faqeve kur gjurmohen URL Faqesh",
"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.",
@@ -46,10 +51,12 @@
"PiwikOffersEcommerceAnalytics": "Piwik-u ju mundëson ndjekje & raportim të thelluar Analizash E-tregtie. Mësoni më tepër rreth %1$s Analizash E-tregtie%2$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.",
+ "SearchCategoryDesc": "Piwik-u mund të gjurmojë edhe kategorinë e Kërkimit për çdo fjalëkyç kërkimi të brendshëm në sajt.",
"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.",
+ "SearchParametersNote": "Shënim: parametrat Kërkim dhe parametrat Kategori do të përdoren vetëm për sajte që kanë të aktivizuar Kërkimin brenda Sajtit, por që i kanë lënë të zbrazët këta parametra.",
"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 %1$sparazgjedhje%2$s Kërkimi në Sajt",
"SelectACity": "Përzgjidhni një qytet",
@@ -60,11 +67,21 @@
"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",
+ "SiteWithoutDataSetupTracking": "Ju lutemi, rregulloni te sajti juaj %1$skod gjurmimi JavaScript%2$s, nëse s’e keni bërë tashmë.",
+ "SiteWithoutDataMessageDisappears": "Ky mesazh do të zhduket sapo të ketë ndoca të dhëna të gjurmuara për këtë sajt.",
+ "SiteWithoutDataSetupGoals": "Ndoshta mund të donit, ndërkohë, të %1$scaktoni ndonjë objektiv%2$s.",
+ "SuperUserAccessCan": "Një përdorues me hyrje Superpërdoruesi mundet gjithashtu %1$s të caktojë rregullime të përgjithshme%2$s për sajte të rinj.",
"Timezone": "Zonë kohore",
+ "TrackingSiteSearch": "Gjurmim Kërkimesh Brenda Sajti",
"TrackingTags": "Kod gjurmimi për %s",
"Urls": "URL-ra",
"UTCTimeIs": "Koha UTC është %s.",
+ "OnlyMatchedUrlsAllowed": "Gjurmo vizita dhe veprime vetëm kur URL-ja e veprimit fillon me një nga URL-të më sipër.",
+ "OnlyMatchedUrlsAllowedHelp": "Në qoftë e aktivizuar, Piwik-u do të gjurmojë veprime të brendshme vetëm kur URL-ja e Faqes është një nga URL-të e njohura për sajtin tuaj. Kjo pengon shfrytëzimin e padëshiruar të analizave tuaja përmes URL-sh për sajte të tjerë.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "Përkatësia dhe shtegu duhet të përputhen saktësisht dhe çdo nënpërkatësi e vlefshme duhet të specifikohet veçmas. Për shembull. kur URL-të e ditura janë 'http:\/\/shembull.com\/shteg' dhe 'http:\/\/imirë.shembull.com', kërkesat për gjurmim të 'http:\/\/shembull.com\/shtegtjetër' ose 'http:\/\/ikeq.shembull.com' shpërfillen.",
"WebsitesManagement": "Administrim Sajtesh",
+ "XManagement": "Administroni %s",
+ "ChooseMeasurableTypeHeadline": "Ç’do të donit të matnit?",
"YouCurrentlyHaveAccessToNWebsites": "Deri tani keni hyrje te %s sajte.",
"YourCurrentIpAddressIs": "Adresa juaj IP e tanishme është %s"
}
diff --git a/plugins/SitesManager/lang/sv.json b/plugins/SitesManager/lang/sv.json
index 556eb2f3ac..e73f4dcaf6 100644
--- a/plugins/SitesManager/lang/sv.json
+++ b/plugins/SitesManager/lang/sv.json
@@ -67,13 +67,18 @@
"SiteSearchUse": "Du kan använda Piwik för att spåra och rapportera om vad besökarna söker efter med din webbplats interna sökmotor.",
"SiteWithoutDataTitle": "Inga data har samlats in än",
"SiteWithoutDataDescription": "Inga data har samlats in för denna webbplats än.",
+ "SiteWithoutDataSetupTracking": "Vänligen konfigurera %1$sJavaScript spårningskoden%2$s på din webbplats om du inte redan har gjort det.",
"SiteWithoutDataMessageDisappears": "Detta meddelande kommer visas tills data samlats in för denna webbsida.",
+ "SiteWithoutDataSetupGoals": "Under tiden kanske du vill %1$ssätta upp några mål%2$s.",
"SuperUserAccessCan": "En användare med Superbehörighet kan också %1$s specificera globala inställningar%2$s för nya webbsidor.",
"Timezone": "Tidszon",
"TrackingSiteSearch": "Spåra webbplatsens interna sökfunktion",
"TrackingTags": "Spårningskod för %s",
"Urls": "URLer",
"UTCTimeIs": "Aktuell tid (UTC) är %s.",
+ "OnlyMatchedUrlsAllowed": "Spåra endast besök och händelser när en händelse-URL börjar med någon av ovan URL'er.",
+ "OnlyMatchedUrlsAllowedHelp": "När aktiverat så kommer Piwik endast spåra interna händelser när sid-URL'en är någon av de kända URL'er för din webbplats. Detta förhindrar folk från att spamma din statistik med URL'er för andra webbplatser.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "Domänen och sökvägen måste vara en exakt matchning och varje godkänd subdomän måste specificeras separat. T.ex. när den kända URL'en är 'http:\/\/exempel.se\/sökväg' och 'http:\/\/bra.exempel.se' spårningsförfrågan för 'http:\/\/exempel.se\/annansökväg' eller 'http:\/\/dålig.exempel.se' ignoreras.",
"WebsitesManagement": "Hantera webbplatser",
"XManagement": "Hantera %s",
"ChooseMeasurableTypeHeadline": "Vad vill du mäta?",
diff --git a/plugins/SitesManager/lang/uk.json b/plugins/SitesManager/lang/uk.json
index 3557821ede..b0a99b02eb 100644
--- a/plugins/SitesManager/lang/uk.json
+++ b/plugins/SitesManager/lang/uk.json
@@ -1,46 +1,88 @@
{
"SitesManager": {
"AddSite": "Додати новий сайт",
- "AdvancedTimezoneSupportNotFound": "Розширену підтримку часових поясів не знайно в вашому PHP (підтримується в PHP>=5.2). Все ще можна вибрати відступ часового поясу вручну.",
- "AliasUrlHelp": "Рекомендується, але не вимагається, вказувати різні URL (кожен з нового рядка) що ваші відвідувачі використовують для заходу на сайту.Перелічені посилання не будуть з’являтися і \"Реферери\" > \"Звіти веб-сайтів\". Зверніть увагу що не обовязково вказувати обидва варіанти URL з \"www\" та без оскільки Piwik автоматично визначає обидва варіанти.",
- "ChangingYourTimezoneWillOnlyAffectDataForward": "Зміна часового поясу вплине лише на отримання даних в майбутньому і не буде застосовуватися до існуючих даних.",
- "ChooseCityInSameTimezoneAsYou": "Виберіть місто в аналогічному до вашого часовому поясі.",
+ "AddMeasurable": "Додати нові показники",
+ "AdvancedTimezoneSupportNotFound": "Підтримка додаткових тимчасових зон не знайдено у вашому PHP (підтримується в PHP>=5.2). Ви все ще можете вибрати UTC вручну замість цього.",
+ "AliasUrlHelp": "Рекомендується, але необов'язково, вказувати всі домени для сайту (кожен домен – нова лінія), які користувачі можуть використовувати для доступу до сайту. Псевдоніми для різних доменів сайту не будуть відображатися в розділі Джерело трафіку > Сайти. Зауважте, що немає необхідності вказувати варіанти адрес з \"www\" і без нього. Piwik автоматично враховує обидва.",
+ "ChangingYourTimezoneWillOnlyAffectDataForward": "Зміна вашого часового поясу тільки вплине на те, що дані будуть враховуватися наперед, і ніяк не вплине на існуючі дані.",
+ "ChooseCityInSameTimezoneAsYou": "Виберіть місто в тому ж часовому поясі, де ви знаходитеся.",
"Currency": "Валюта",
- "CurrencySymbolWillBeUsedForGoals": "Символ валюти буде відображатися поруч із прибутками цілей.",
- "DefaultCurrencyForNewWebsites": "Типова валюта для нових веб-сайтів",
- "DefaultTimezoneForNewWebsites": "Типови часовий пояс для нових веб-сайтів",
- "DeleteConfirm": "Видалити веб-сайт %s?",
- "ExceptionDeleteSite": "Неможливо видалити цей сайт, так як це єдиний зареєстрований сайт. Додайте новий сайт, і після цього ви отримаєте можливість видалити цей.",
- "ExceptionEmptyName": "Назва сайту не може бути порожною.",
- "ExceptionInvalidCurrency": "Валюта \"%1$s\" не вірна. Введіть вірне позначення валют (напр. %2$s)",
- "ExceptionInvalidIPFormat": "IP-адреса для виключення \"%1$s\" має неправильний формат IP адреси (напр. %2$s).",
- "ExceptionInvalidTimezone": "Часовий пояс \"%s\" невірний. Введіть правильний часовий пояс.",
- "ExceptionInvalidUrl": "URL-адреса невірна: \"%s\".",
- "ExceptionNoUrl": "Ви маєте вказати хоча б одину URL-адресу для сайту.",
- "ExcludedIps": "IP-адреси до виключення",
- "ExcludedParameters": "Параметри до виключення",
- "GlobalListExcludedIps": "Глобальний список IP-адрес до виключення",
- "GlobalListExcludedQueryParameters": "Глобальний список URL пераметрів до виключення",
- "GlobalWebsitesSettings": "Глобальні налаштування веб-сайтів",
- "HelpExcludedIps": "Введіть перелік IP-адрес (кожну з нового рядка) що бажаєте виключити з відслідковування системою Piwik. Можете використовувати символи підстановок, наприклад %1$s or %2$s",
- "JsTrackingTagHelp": "Ось тег відслідковування JavaScript який треба включина на кожну сторінку вашого сайту",
- "ListOfIpsToBeExcludedOnAllWebsites": "Приведені IP-адреси будуть виключені з відслідковування на всіх веб-сайтах.",
- "ListOfQueryParametersToBeExcludedOnAllWebsites": "URL параметри наведені нижче будуть виключені з URL для всіх сайтів.",
- "ListOfQueryParametersToExclude": "Введіть перелік URL параметрів (кожен з нового рядка) для виключення зі звітів URL сторінок.",
- "MainDescription": "Звіти з веб-аналітики потребують веб-сайтів! Додайте, поновіть, видаліть веб-сайти, та отримайте JavaScript-код щоб додати на свої сторіки.",
- "NotFound": "не знайдено жодного веб-сайту",
- "NoWebsites": "Немає жодного сайту щоб адмініструвати",
- "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik автоматично виключатиме типові параметри сесій (%s).",
- "SelectACity": "Виберіть місто",
- "SelectDefaultCurrency": "Можна вибрати типову валюту для нових сайтів",
- "SelectDefaultTimezone": "Можна вибрати часовий пояс, який буде типовим для нових веб-сайтів.",
- "ShowTrackingTag": "показати теги відслідковування",
+ "CurrencySymbolWillBeUsedForGoals": "Символ валюти буде відображений після цілей виручки.",
+ "DefaultCurrencyForNewWebsites": "Валюта за замовчуванням для нових сайтів",
+ "DefaultTimezoneForNewWebsites": "Часовий пояс за замовчуванням для нових сайтів",
+ "DeleteConfirm": "Ви дійсно бажаєте видалити цей сайт %s?",
+ "DisableSiteSearch": "Не відстежувати пошук на сайті",
+ "EcommerceHelp": "Якщо включено, то звіт з Цілей буде містити новий розділ - \"Ecommerce (електронна комерція)",
+ "EnableEcommerce": "Ел. комерція включена",
+ "EnableSiteSearch": "Відстеження пошуку на сайті включено",
+ "EnableSiteSpecificUserAgentExclude": "Увімкнути фільтрацію user agent'ів для певних веб-сайтів.",
+ "EnableSiteSpecificUserAgentExclude_Help": "Якщо потрібно виключити різні агенти користувачів (user agents) для різних веб-сайтів, встановіть цей прапорець, натисніть кнопку зберегти і %1$sдодайте призначені для користувача агенти зверху%2$s.",
+ "ExceptionDeleteSite": "Неможливо видалити, оскільки це єдиний сайт в вашому списку. Додайте ще який-небудь сайт для видалення цього.",
+ "ExceptionEmptyName": "Назва сайту не може бути пусте.",
+ "ExceptionInvalidCurrency": "Валюта \"%1$s\" неправильна. Будь ласка, введіть правильний символ валюти (напр., %2$s)",
+ "ExceptionInvalidIPFormat": "IP для виключення \"%1$s\" має не правильний IP формат (напр., %2$s).",
+ "ExceptionInvalidTimezone": "Часовий пояс \"%s\" хибний. Будь ласка, введіть правильний.",
+ "ExceptionInvalidUrl": "URL '%s' не верен.",
+ "ExceptionNoUrl": "Ви повинні вказати хоча б один URL для цього сайту.",
+ "ExcludedIps": "Виключені IP",
+ "ExcludedParameters": "Виключені параметри",
+ "ExcludedUserAgents": "Виключені User Agents",
+ "GlobalExcludedUserAgentHelp1": "Введіть список користувацьких агентів, щоб виключити відстеження за допомогою Piwik.",
+ "GlobalExcludedUserAgentHelp2": "Ви можете використовувати це, щоб виключити відстеження якихось ботів.",
+ "GlobalListExcludedIps": "Загальний список виключених IP",
+ "GlobalListExcludedQueryParameters": "Загальний список запитів URL-параметрів для виключення",
+ "GlobalListExcludedUserAgents": "Загальний список користувацьких агентів для виключення",
+ "GlobalListExcludedUserAgents_Desc": "Якщо рядок user-agent'а відвідувача містить рядки, які ви вказали – Piwik не враховуватиме відвідування.",
+ "GlobalWebsitesSettings": "Загальні настройки сайтів",
+ "HelpExcludedIps": "Введіть список IP адрес, по одному на кожен рядок, які ви хочете виключити і не враховувати в веб-аналітиці. Можна вводити групою, напр. %1$s або %2$s",
+ "JsTrackingTagHelp": "Це код JavaScript, який необхідно вставити в усі ваші сторінки",
+ "KeepURLFragments": "Відстежувати фрагменти url сторінки",
+ "KeepURLFragmentsHelp": "Якщо прапорець не встановлений, фрагменти URL (все після %1$s) будуть видалені при відстеженні: %2$s будуть відслідковуватися як %3$s",
+ "KeepURLFragmentsHelp2": "Ви також можете перевизначити цей параметр для окремих веб-сайтів вище.",
+ "KeepURLFragmentsLong": "Зберігати додаткові фрагменти url при відстеженні сторінок",
+ "ListOfIpsToBeExcludedOnAllWebsites": "IP адреси нижче будуть виключені з статистики і не будуть враховуватися при зборі даних на всіх сайтах.",
+ "ListOfQueryParametersToBeExcludedOnAllWebsites": "Запити URL-параметрів нижче будуть виключені і не будуть враховуватися при зборі статистики на всіх сайтах.",
+ "ListOfQueryParametersToExclude": "Введіть список запитів URL-параметрів по одному на кожен рядок, щоб виключити їх зі сторінки зі звітами по URL.",
+ "MainDescription": "Для ведення статистики потрібно додати сайти. Додавайте, оновлюйте, видаляйте інформацію про сайти, а також перегляньте JavaScript-код для вставки на ваші сторінки.",
+ "NotAnEcommerceSite": "Сайт без ел. комерції",
+ "NotFound": "Не знайдено сайтів для",
+ "NoWebsites": "Ви не маєте жодного сайту на обліку.",
+ "OnlyOneSiteAtTime": "Ви можете тільки редагувати один сайт в один і той же час. Будь ласка, збережіть або скасуйте ваші поточні зміни до сайту %s.",
+ "PiwikOffersEcommerceAnalytics": "Ця опція може бути використана для аналітики інтернет-магазинів і електронних замовлень. Більше інформації – тут: %1$s Аналітика ел. комерції%2$s.",
+ "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Веб-аналітика буде автоматично вилучати необхідні параметри сесії (%s).",
+ "PluginDescription": "Управління веб-сайтами та дозволяє додавати і редагувати їх.",
+ "SearchCategoryDesc": "Piwik також може відстежувати категорію пошуку для кожного слова, яке шукають на вашому сайті в пошуку.",
+ "SearchCategoryLabel": "Параметр категорій",
+ "SearchCategoryParametersDesc": "Ви можете ввести розділені комами списки параметрів, які б визначали категорію пошуку.",
+ "SearchKeywordLabel": "Параметр запитів",
+ "SearchKeywordParametersDesc": "Введіть список параметрів, які містять ключові слова пошуку по сайту (через кому).",
+ "SearchParametersNote": "Підказка: параметри запиту та категорії будуть використані лише для сайтів, які мають внутрішній пошук і включили відстеження пошуку, але залишили ці параметри порожніми (недоторканими).",
+ "SearchParametersNote2": "Щоб відключити функції відстеження пошуку по сайту для нових сайтів, залиште ці два поля порожніми.",
+ "SearchUseDefault": "Використовувати %1$sстандартні%2$s параметри пошуку по сайту",
+ "SelectACity": "Вибрати місто",
+ "SelectDefaultCurrency": "Ви можете встановити валюту за замовчуванням для нових сайтів.",
+ "SelectDefaultTimezone": "Ви можете встановити часовий пояс за замовчуванням для нових сайтів.",
+ "ShowTrackingTag": "Показати код",
"Sites": "Сайти",
+ "SiteSearchUse": "Ви можете використовувати Piwik для відстеження та відображення аналітики по тому, що шукають відвідувачі на вашому сайті використовуючи функціонал для внутрішнього пошуку по сайту.",
+ "SiteWithoutDataTitle": "Ще ніякі дані не були записані",
+ "SiteWithoutDataDescription": "Немає даних аналітики що відстежувалися на цьому сайті.",
+ "SiteWithoutDataSetupTracking": "Будь ласка, налаштуйте %1$sJavaScript код відстеження%2$s на вашому сайті, якщо ви цього не зробили раніше.",
+ "SiteWithoutDataMessageDisappears": "Це повідомлення зникне, як тільки перші дані отримаються на цей сайт.",
+ "SiteWithoutDataSetupGoals": "У той же час, може бути, ви хотіли б %1$sвстановити деякі цілі%2$s.",
+ "SuperUserAccessCan": "Користувач з правами суперкористувача може також %1$sвказати загальні налаштування%2$s для нових веб-сайтів.",
"Timezone": "Часовий пояс",
- "TrackingTags": "Теги відслідковування для %s",
- "Urls": "URL-адреси",
- "UTCTimeIs": "Поточний місцевий час: %s.",
- "WebsitesManagement": "Керування веб-сайтами",
- "YourCurrentIpAddressIs": "Ваша поточно IP адреса: %s"
+ "TrackingSiteSearch": "Відстежувати внутрішній пошук по сайту",
+ "TrackingTags": "Код відстеження для %s",
+ "Urls": "URL-и",
+ "UTCTimeIs": "Час UTC: %s.",
+ "OnlyMatchedUrlsAllowed": "Тільки відстеження відвідування та дії, коли URL-адреса дії починається з однієї з URL-адрес вище.",
+ "OnlyMatchedUrlsAllowedHelp": "Якщо ця функція включена, Piwik буде відслідковувати тільки внутрішні дії, коли URL сторінки є одна з найбільш відомих URL-адрес на вашому сайті. Це заважає людям спамити аналітику з URL-адрес для інших сайтів.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "Домен і шлях повинен повністю збігатися і кожен дійсний піддомен повинен бути вказаний окремо. Наприклад, якщо відомі URL-адреси 'http:\/\/example.com\/path' і 'http:\/\/good.example.com', відстеження запитів для 'http:\/\/example.com\/otherpath' чи 'http:\/\/bad.example.com' ігноруються.",
+ "WebsitesManagement": "Управління сайтами",
+ "XManagement": "Управління %s",
+ "ChooseMeasurableTypeHeadline": "Щоб ви хотіли виміряти?",
+ "YouCurrentlyHaveAccessToNWebsites": "Наразі ви маєте доступ до %s сайтів.",
+ "YourCurrentIpAddressIs": "Ваш IP: %s"
}
} \ No newline at end of file
diff --git a/plugins/SitesManager/templates/sites-list/site-fields.html b/plugins/SitesManager/templates/sites-list/site-fields.html
index df8d6e7a3b..ad37071953 100644
--- a/plugins/SitesManager/templates/sites-list/site-fields.html
+++ b/plugins/SitesManager/templates/sites-list/site-fields.html
@@ -32,7 +32,9 @@
<ul>
<li>
<span class="title">{{ 'SitesManager_Urls'|translate }}</span>:
- {{ site.alias_urls.join(', ') }}
+ <span ng-repeat="url in site.alias_urls">
+ <a target=_blank rel=noreferrer ng-href="{{ url }}">{{ url }}{{$last ? '' : ', '}}</a>
+ </span>
</li>
<li ng-show="site.excluded_ips.length">
<span class="title">{{ 'SitesManager_ExcludedIps'|translate }}:</span>
diff --git a/plugins/SitesManager/tests/Integration/ApiTest.php b/plugins/SitesManager/tests/Integration/ApiTest.php
index ba897a4000..6606015395 100644
--- a/plugins/SitesManager/tests/Integration/ApiTest.php
+++ b/plugins/SitesManager/tests/Integration/ApiTest.php
@@ -545,7 +545,7 @@ class ApiTest extends IntegrationTestCase
$sites = API::getInstance()->getSitesWithAdminAccess();
- // we dont test the ts_created
+ // we don't test the ts_created
unset($sites[0]['ts_created']);
unset($sites[1]['ts_created']);
$this->assertEquals($resultWanted, $sites);
@@ -655,7 +655,8 @@ class ApiTest extends IntegrationTestCase
$sites = API::getInstance()->getSitesWithViewAccess();
- // we dont test the ts_created
+ // we don't test the ts_created
+
unset($sites[0]['ts_created']);
unset($sites[1]['ts_created']);
$this->assertEquals($resultWanted, $sites);
@@ -691,7 +692,7 @@ class ApiTest extends IntegrationTestCase
FakeAccess::setIdSitesAdmin(array());
$sites = API::getInstance()->getSitesWithAtLeastViewAccess();
- // we dont test the ts_created
+ // we don't test the ts_created
unset($sites[0]['ts_created']);
unset($sites[1]['ts_created']);
$this->assertEquals($resultWanted, $sites);
diff --git a/plugins/TestRunner/Commands/TestsRun.php b/plugins/TestRunner/Commands/TestsRun.php
index 8a12c07e3b..d5b7398d9f 100644
--- a/plugins/TestRunner/Commands/TestsRun.php
+++ b/plugins/TestRunner/Commands/TestsRun.php
@@ -190,7 +190,7 @@ class TestsRun extends ConsoleCommand
private function getTestsSuites()
{
- return array('unit', 'integration', 'system');
+ return array('unit', 'integration', 'system', 'plugin');
}
/**
diff --git a/plugins/Transitions/lang/it.json b/plugins/Transitions/lang/it.json
index 39961913f6..258c954172 100644
--- a/plugins/Transitions/lang/it.json
+++ b/plugins/Transitions/lang/it.json
@@ -17,7 +17,7 @@
"NoDataForActionDetails": "O l'azione non ha avuto pagine viste durante il periodo di %s o non è valida.",
"OutgoingTraffic": "Traffico uscente",
"PluginDescription": "Restituisce le azioni precedenti e seguenti per ciascun URL di pagina in un nuovo report Transizioni, disponibile tra i report Azioni con una nuova icona.",
- "ShareOfAllPageviews": "Questa pagina ha %1$s visualizzazioni (%2$s di tutte le visualizzazioni)",
+ "ShareOfAllPageviews": "Questa pagina ha avuto %1$s visualizzazioni (%2$s di tutte le visualizzazioni)",
"ToFollowingPages": "A Pagine Interne",
"ToFollowingPagesInline": "%s a pagine interne",
"ToFollowingSiteSearches": "Ricerche Interne",
diff --git a/plugins/Transitions/lang/sv.json b/plugins/Transitions/lang/sv.json
index 7e318dfdac..74a6be23b1 100644
--- a/plugins/Transitions/lang/sv.json
+++ b/plugins/Transitions/lang/sv.json
@@ -16,6 +16,7 @@
"NoDataForAction": "Det finns inga data för %s",
"NoDataForActionDetails": "Antingen har händelsen inte haft några sidvisningar under perioden %s eller så är den ogiltig.",
"OutgoingTraffic": "Utgående trafik",
+ "PluginDescription": "Tidigare Rapporter och följande åtgärder för varje sida URL i en ny Övergångsrapport, som finns i Händelserapporter via en ny ikon.",
"ShareOfAllPageviews": "Den här sidan hade %1$s sidvisningar (%2$s av alla sidvisningar)",
"ToFollowingPages": "Till interna sidor",
"ToFollowingPagesInline": "%s till interna sidor",
diff --git a/plugins/Transitions/lang/uk.json b/plugins/Transitions/lang/uk.json
new file mode 100644
index 0000000000..039e843094
--- /dev/null
+++ b/plugins/Transitions/lang/uk.json
@@ -0,0 +1,28 @@
+{
+ "Transitions": {
+ "BouncesInline": "%s відскоків (відмов)",
+ "DirectEntries": "Gрямих входів",
+ "ErrorBack": "Повернутися до попередньої дії",
+ "ExitsInline": "%s виходів з сайту",
+ "FromCampaigns": "з кампаній",
+ "FromPreviousPages": "з внутрішніх сторінок",
+ "FromPreviousPagesInline": "%s з внутрішніх сторінок",
+ "FromPreviousSiteSearches": "внутрішніх пошуків по сайту",
+ "FromPreviousSiteSearchesInline": "%s з внутрішнього пошуку по сайту",
+ "FromSearchEngines": "з пошукових систем",
+ "FromWebsites": "з сайтів",
+ "IncomingTraffic": "Вхідний трафік",
+ "LoopsInline": "%s оновлень сторінки",
+ "NoDataForAction": "Немає даних для %s",
+ "NoDataForActionDetails": "Не було скоєно таких дій %s або вони неправильні.",
+ "OutgoingTraffic": "Вихідний трафік",
+ "PluginDescription": "Звіти про попередні та наступні дій для кожної сторінки URL у новому звіті Переходів, в звітах Дії через новий значок.",
+ "ShareOfAllPageviews": "У цієї сторінки %1$s переглядів (%2$s з переглядів всіх сторінок)",
+ "ToFollowingPages": "на внутрішні сторінки",
+ "ToFollowingPagesInline": "%s на внутрішні сторінки",
+ "ToFollowingSiteSearches": "внутрішніх пошуків по сайту",
+ "ToFollowingSiteSearchesInline": "%s внутрішніх пошуків по сайту",
+ "XOfAllPageviews": "%s з усіх переглядів сторінки",
+ "XOutOfYVisits": "%1$s (з %2$s)"
+ }
+} \ No newline at end of file
diff --git a/plugins/TreemapVisualization b/plugins/TreemapVisualization
-Subproject d27210763471b61730d111cfafb4b87d168c5b1
+Subproject 22cc2992deb3429102a7ae09f90ae5172dced6b
diff --git a/plugins/UserCountry/images/flags/bu.png b/plugins/UserCountry/images/flags/bu.png
index d931b1dbe4..d96c2f30f7 100644
--- a/plugins/UserCountry/images/flags/bu.png
+++ b/plugins/UserCountry/images/flags/bu.png
Binary files differ
diff --git a/plugins/UserCountry/images/flags/ch.png b/plugins/UserCountry/images/flags/ch.png
index ead7c2a0d0..6f6723fb89 100644
--- a/plugins/UserCountry/images/flags/ch.png
+++ b/plugins/UserCountry/images/flags/ch.png
Binary files differ
diff --git a/plugins/UserCountry/images/flags/gf.png b/plugins/UserCountry/images/flags/gf.png
index 744ede391d..b3e22fb218 100644
--- a/plugins/UserCountry/images/flags/gf.png
+++ b/plugins/UserCountry/images/flags/gf.png
Binary files differ
diff --git a/plugins/UserCountry/images/flags/ls.png b/plugins/UserCountry/images/flags/ls.png
index e4f46519bb..dbc9ccb644 100644
--- a/plugins/UserCountry/images/flags/ls.png
+++ b/plugins/UserCountry/images/flags/ls.png
Binary files differ
diff --git a/plugins/UserCountry/images/flags/ly.png b/plugins/UserCountry/images/flags/ly.png
index afaae07d48..b5bd4c1607 100644
--- a/plugins/UserCountry/images/flags/ly.png
+++ b/plugins/UserCountry/images/flags/ly.png
Binary files differ
diff --git a/plugins/UserCountry/images/flags/mm.png b/plugins/UserCountry/images/flags/mm.png
index d931b1dbe4..772f931f0b 100644
--- a/plugins/UserCountry/images/flags/mm.png
+++ b/plugins/UserCountry/images/flags/mm.png
Binary files differ
diff --git a/plugins/UserCountry/images/flags/np.png b/plugins/UserCountry/images/flags/np.png
index 5b8e388fda..2afe8d7e5f 100644
--- a/plugins/UserCountry/images/flags/np.png
+++ b/plugins/UserCountry/images/flags/np.png
Binary files differ
diff --git a/plugins/UserCountry/images/flags/tk.png b/plugins/UserCountry/images/flags/tk.png
index 0440c43b42..107ce1494f 100644
--- a/plugins/UserCountry/images/flags/tk.png
+++ b/plugins/UserCountry/images/flags/tk.png
Binary files differ
diff --git a/plugins/UserCountry/lang/nl.json b/plugins/UserCountry/lang/nl.json
index 8cd357b73b..b3bb3dc080 100644
--- a/plugins/UserCountry/lang/nl.json
+++ b/plugins/UserCountry/lang/nl.json
@@ -40,31 +40,32 @@
"GeoIPUpdaterIntro": "Piwik beheert momenteel updates voor de volgende GeoIP databases",
"GeoLiteCityLink": "Als u de GeoLite City database gebruikt, gebruik dan deze link: %1$s%2$s%3$s.",
"Geolocation": "Geolocatie",
- "GeolocationPageDesc": "Op deze pagina kunt u instellen hoe Piwik bezoeker locaties bepaald.",
+ "GeolocationPageDesc": "Op deze pagina kunt u instellen hoe Piwik bezoekerlocaties bepaald.",
"getCityDocumentation": "Dit rapport laat zien in welke stad uw bezoekers waren toen ze uw website bezochten.",
"getContinentDocumentation": "Dit rapport laat zien in welk continent uw bezoekers waren toen ze uw website bezochten.",
"getCountryDocumentation": "Dit rapport laat zien in welk land uw bezoekers waren toen ze uw website bezochten.",
"getRegionDocumentation": "Dit rapport laat zien in welke regio uw bezoekers waren toen ze uw website bezochten.",
"HowToInstallApacheModule": "Hoe installeer ik de GeoIP module voor Apache?",
- "HowToInstallGeoIPDatabases": "Hoe krijg ik de GeoIP databases?",
- "HowToInstallGeoIpPecl": "Hoe installeer ik de GeoIP PECL extensie?",
- "HowToInstallNginxModule": "Hoe installeer ik de GeoIP module voor Nginx?",
- "HowToSetupGeoIP": "Hoe zet ik accurate geolocatie op met GeoIP",
+ "HowToInstallGeoIPDatabases": "Hoe krijg ik de GeoIP-databases?",
+ "HowToInstallGeoIpPecl": "Hoe installeer ik de GeoIP PECL-extensie?",
+ "HowToInstallNginxModule": "Hoe installeer ik de GeoIP-module voor Nginx?",
+ "HowToSetupGeoIP": "Hoe stel ik precieze geolocatie in met GeoIP",
"HowToSetupGeoIP_Step1": "%1$sDownload%2$s de GeoLite City database van %3$sMaxMind%4$s.",
"HowToSetupGeoIP_Step2": "Pak dit bestand uit en kopieer het resultaat, %1$s in de %2$smisc%3$s Piwik directory (u kunt dit doen met FTP of SSH).",
+ "HowToSetupGeoIP_Step3": "Herlaad dit scherm. De %1$sGeoIP (PHP)%2$s provider zal nu worden %3$sgeïnstalleerd%4$s. Selecteer deze.",
"HowToSetupGeoIP_Step4": "Klaar! U heeft zojuist Piwik ingesteld om GeoIP te gebruiken. U kunt nu zien uit welke regio's en steden uw bezoekers komen i.c.m. zeer accurate informatie over het land van herkomst.",
"HttpServerModule": "HTTP Server Module",
"InvalidGeoIPUpdatePeriod": "Ongeldige periode voor de GeoIP updater: %1$s. Geldige waardes zijn %2$s.",
- "ISPDatabase": "ISP database",
+ "ISPDatabase": "ISP-database",
"IWantToDownloadFreeGeoIP": "Ik wil de gratis GeoIP database downloaden...",
"Latitude": "Breedtegraad",
"Location": "Locatie",
- "LocationDatabase": "Locatie database",
+ "LocationDatabase": "Locatiedatabase",
"LocationDatabaseHint": "Een locatie database is of een land of een regio of een stad database.",
"LocationProvider": "Locatie Provider",
"Longitude": "Lengtegraad",
"Organization": "Organisatie",
- "OrgDatabase": "Organisatie Database",
+ "OrgDatabase": "Organisatiedatabase",
"PiwikNotManagingGeoIPDBs": "Piwik beheert momenteel geen GeoIP databases.",
"PluginDescription": "Rapporteert de locatie van je bezoekers: Land, regio, stad en coördinaten (lengte- en breedtegraad)",
"Region": "Regio",
@@ -78,6 +79,6 @@
"UpdaterScheduledForNextRun": "Het is ingepland om uitgevoerd te worden tijdens de volgende commando core:archive.",
"UpdaterWasLastRun": "De updater is voor het laatst uitgevoerd op %s.",
"UpdaterWillRunNext": "De volgende run is gepland om %s",
- "WidgetLocation": "Bezoeker Locatie"
+ "WidgetLocation": "Bezoekerlocatie"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/lang/sq.json b/plugins/UserCountry/lang/sq.json
index 0ee12da135..162318efa0 100644
--- a/plugins/UserCountry/lang/sq.json
+++ b/plugins/UserCountry/lang/sq.json
@@ -1,6 +1,6 @@
{
"UserCountry": {
- "AssumingNonApache": "S’gjendet dot funksioni find apache_get_modules function, po merret i mirëqenë si shërbyes non-Apache.",
+ "AssumingNonApache": "S’gjendet dot funksioni apache_get_modules function, po merret i mirëqenë si shërbyes non-Apache.",
"City": "Qytet",
"CityAndCountry": "%1$s, %2$s",
"Continent": "Kontinent",
@@ -9,8 +9,26 @@
"country_a2": "Mundësues Satelitor",
"country_cat": "Bashkësi që flasin Katalançe",
"country_o1": "Vend Tjetër",
+ "country_ti": "Tibet",
+ "CurrentLocationIntro": "Sipas këtij mundësuesi, vendi juaj i tanishëm është",
"DistinctCountries": "%s vende ndaras",
+ "DownloadingDb": "Po shkarkohet %s",
+ "FromDifferentCities": "qytete të ndryshme",
+ "GeoIPDatabases": "Baza të dhënash GeoIP",
+ "GeoIpLocationProviderNotRecomnended": "Gjeovendëzimi funksionon, por nuk po përdorni një nga mundësuesit e këshilluar.",
+ "Geolocation": "Gjeovendëzim",
+ "GeolocationPageDesc": "Në këtë faqe mund të ndryshoni mënyrën se si përcakton Piwik-u vendndodhjet e vizitorëve.",
+ "HowToInstallGeoIpPecl": "Si ta instaloj zgjerimin GeoIP PECL?",
+ "HttpServerModule": "Modul Shërbyesi HTTP",
+ "ISPDatabase": "Bazë të Dhënash MShI",
"Location": "Vend",
- "SubmenuLocations": "Vende"
+ "LocationProvider": "Furnizues Vendndodhjesh",
+ "Organization": "Organizëm",
+ "OrgDatabase": "Bazë të dhënash Organizmi",
+ "Region": "Rajon",
+ "SubmenuLocations": "Vende",
+ "UpdaterHasNotBeenRun": "Përditësuesi s’është xhiruar ndonjëherë.",
+ "UpdaterIsNotScheduledToRun": "S’është vënë në plan të xhirohet në të ardhmen.",
+ "WidgetLocation": "Vendndodhje Vizitori"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/lang/uk.json b/plugins/UserCountry/lang/uk.json
index 42d6196e4c..0392a92109 100644
--- a/plugins/UserCountry/lang/uk.json
+++ b/plugins/UserCountry/lang/uk.json
@@ -1,12 +1,98 @@
{
"UserCountry": {
+ "AssumingNonApache": "Не вдається знайти apache_get_modules функцію, мабуть цей веб-сервер це не на Apache.",
+ "CannotFindGeoIPDatabaseInArchive": "Не знайдено файл %1$s в tar-архіві %2$s!",
+ "CannotFindGeoIPServerVar": "Змінна %s не встановлена. Ваш сервер не може бути налаштований правильно.",
+ "CannotFindPeclGeoIPDb": "Неможливо знайти базу базу даних по країні, регіону або міста для GeoIP PECL модуля. Переконайтеся, що ваша БД GeoIP знаходиться в %1$s і названа %2$s або %3$s, інакше PECL модуль не помітить її.",
+ "CannotListContent": "Не вдалося перерахувати вміст %1$s: %2$s",
+ "CannotLocalizeLocalIP": "IP адреса %s - це локальна адреса і її конкретне місцезнаходження не може бути визначено.",
+ "CannotSetupGeoIPAutoUpdating": "Схоже на те, що Ви зберігаєте свої GeoIP бази за межами папки Piwik. Piwik не може автоматично оновлювати бази, які знаходяться за межами папки misc.",
+ "CannotUnzipDatFile": "Неможливо розпакувати dat-файл в %1$s : %2$s",
+ "City": "Місто",
+ "CityAndCountry": "%1$s, %2$s",
"Continent": "Континент",
"Country": "Країна",
"country_a1": "Анонімний проксі",
"country_a2": "Супутниковий провайдер",
+ "country_cat": "Каталаномовні суспільства",
"country_o1": "Інша країна",
+ "country_ti": "Тибет",
+ "CurrentLocationIntro": "Згідно використовуваного способу відстеження ви знаходитесь тут",
+ "DefaultLocationProviderDesc1": "Цей спосіб відстеження визначає місце розташування на основі мови, яким користуються користувачі в браузері і системі.",
+ "DefaultLocationProviderDesc2": "Це не дуже точне визначення, тому %1$sми рекомендуємо використовувати і встановити плагін %2$sGeoIp%3$s.%4$s",
+ "DefaultLocationProviderExplanation": "Ви використовуєте провайдер визначення розташування за промовчанням. Це означає, що за piwik буде судити про місцезнаходження відвідувача по використовуваній ним мові. %1$sПрочитайте тут%2$s про те, як встановлювати розташування більш точно.",
"DistinctCountries": "%s унікальних країн",
- "Location": "Місцезнаходження",
- "SubmenuLocations": "Місцезнаходження"
+ "DownloadingDb": "Завантаження %s",
+ "DownloadNewDatabasesEvery": "Оновлювати базу раз в",
+ "FatalErrorDuringDownload": "Сталась критична помилка при завантаженні цього файлу. Там може бути щось не так з вашим інтернет з'єднанням, з базою даних GeoIP, яку ви завантажили або Piwik. Спробуйте завантажити і встановити його вручну.",
+ "FoundApacheModules": "Piwik знайшов наступні модулі Apache",
+ "FromDifferentCities": "різні міста",
+ "GeoIPCannotFindMbstringExtension": "Неможливо знайти функцію %1$s. Будь ласка, переконайтеся, що розширення %2$s завантажено і встановлено.",
+ "GeoIPDatabases": "Бази даних GeoIP",
+ "GeoIPDocumentationSuffix": "Щоб побачити дані з цього звіту ви повинні встановити GeoIP в секції Geolocation, яка знаходиться в панелі адміністрування. Платні бази даних GeoIP %1$sMaxmind%2$s більш точні, ніж безкоштовні. Наскільки саме вони точні, ви можете подивитися %3$sтут%4$s.",
+ "GeoIPImplHasAccessTo": "Цей варіант реалізації GeoIP має доступ до таких баз даних",
+ "GeoIPIncorrectDatabaseFormat": "Ваша GeoIP база даних, здається, не має правильного формату. Вона може бути пошкоджена. Переконайтеся, що ви використовуєте бінарну версію і спробувйте замінити її іншим примірником.",
+ "GeoIpLocationProviderDesc_Pecl1": "Місце розташування ваших відвідувачів визначається за допомогою бази даних GeoIP і модуля PECL. Таке визначення — більш чітке та ефективне.",
+ "GeoIpLocationProviderDesc_Pecl2": "Обмежень по використанню цього способу відстеження немає, тому ми рекомендуємо саме його.",
+ "GeoIpLocationProviderDesc_Php1": "Цей спосіб відстеження є найбільш простим в установці, оскільки це не вимагає налаштування сервера (ідеально підходить для віртуального хостингу!). Він використовує GeoIP бази даних і PHP API MaxMind, щоб точно визначити місце розташування ваших відвідувачів.",
+ "GeoIpLocationProviderDesc_Php2": "Якщо у вашого сайту дуже багато відвідувачів, ви помітите, що цей спосіб занадто повільний. У цьому випадку вам потрібно встановити %1$sPECL розширення%2$s або спеціальний %3$sсерверний модуль%4$s.",
+ "GeoIpLocationProviderDesc_ServerBased1": "Визначення локації засноване на модулі GeoIP, який був встановлений на ваш HTTP-сервер. Це працює швидше і точніше, але %1$sможе бути використаний лише при відстеженні відвідувачів, які користуються звичайними браузерами.%2$s",
+ "GeoIpLocationProviderDesc_ServerBased2": "Якщо вам потрібно імпортувати лог-файли або зробити щось, що вимагає наявності та IP адрес, використовуйте %1$s вбудовуваний PECL GeoIP (рекомендується)%2$s або %3$s вбудовуваний PHP GeoIP %4$s.",
+ "GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Підказка: анонімізація IP не впливає на ефект на отримання локації користувачів таким способом. Перед тим, як використовувати його з анонімізацією IP, переконайтеся, що це не суперечить законодавству вашої країни.",
+ "GeoIpLocationProviderNotRecomnended": "Геолокація працює, але ви не використовуєте один з рекомендованих провайдерів.",
+ "GeoIPNoServerVars": "Piwik не може знайти GeoIP %s змінні.",
+ "GeoIPPeclCustomDirNotSet": "PHP ini опція %s не встановлена.",
+ "GeoIPServerVarsFound": "Piwik знайшов наступні змінні GeoIP: %s",
+ "GeoIPUpdaterInstructions": "Вкажіть посилання нижче для завантаження баз даних. Якщо ви купили бази даних з %3$sMaxMind%4$s, ви можете знайти ці посилання %1$sтут%2$s. Будь ласка, зв'яжіться з %3$sMaxMind%4$s якщо у вас є проблеми з доступом до них.",
+ "GeoIPUpdaterIntro": "Piwik в даний час управляє оновленнями для наступних баз GeoIP",
+ "GeoLiteCityLink": "Якщо ви використовуєте базу даних GeoLite City, скористайтесь цим посиланням: %1$s%2$s%3$s.",
+ "Geolocation": "Геолокація",
+ "GeolocationPageDesc": "На цій сторінці ви можете змінити спосіб визначення місцеположення відвідувачів.",
+ "getCityDocumentation": "Цей звіт показує міста відвідувачів вашого сайту.",
+ "getContinentDocumentation": "Цей звіт показує континенти відвідувачів вашого сайту.",
+ "getCountryDocumentation": "Цей звіт показує країни відвідувачів вашого сайту.",
+ "getRegionDocumentation": "Цей звіт показує регіони відвідувачів вашого сайту.",
+ "HowToInstallApacheModule": "Як встановити GeoIP модуль для Apache?",
+ "HowToInstallGeoIPDatabases": "Як мені отримати бази даних GeoIP?",
+ "HowToInstallGeoIpPecl": "Як встановити GeoIP PECL розширення?",
+ "HowToInstallNginxModule": "Як встановити GeoIP модуль для Nginx?",
+ "HowToSetupGeoIP": "Як встановити точне визначення локацій відвідувачів з допомогою GeoIP",
+ "HowToSetupGeoIP_Step1": "%1$sЗавантажте%2$s базу даних GeoLite City з %3$sMaxMind%4$s.",
+ "HowToSetupGeoIP_Step2": "Вилучіть цей файл і скопіюйте %1$s в %2$smisc%3$s піддиректорію Piwik (ви можете зробити це через FTP або SSH).",
+ "HowToSetupGeoIP_Step3": "Перезавантажте цю сторінку. Переконайтеся, що %1$sGeoIP (PHP)%2$s тепер %3$sВстановлено%4$s. Виберіть його.",
+ "HowToSetupGeoIP_Step4": "Ось і все! Ви тільки що встановили GeoIP для Piwik, що означає, що ви можете бачити регіони і міста ваших відвідувачів та країну, де вони знаходяться.",
+ "HowToSetupGeoIPIntro": "Здається, що у вас не налаштоване визначено локації відвідувачів з допомогою GeoIP. Це корисна \"штука\" - без неї ви не зможете досить точно визначати місцезнаходження відвідувачів. І ось як ви можете швидко налаштувати все:",
+ "HttpServerModule": "HTTP Серверний модуль",
+ "InvalidGeoIPUpdatePeriod": "Невірний період для GeoIP оновлення: %1$s. Допустимі значення: %2$s.",
+ "IPurchasedGeoIPDBs": "Я придбав більш %1$sдеталізовану базу даних у MaxMind%2$s і хочу налаштувати автоматичні оновлення.",
+ "ISPDatabase": "База провайдерів",
+ "IWantToDownloadFreeGeoIP": "Я хочу завантажити безкоштовну GeoIP базу...",
+ "Latitude": "Широта",
+ "Location": "Локація",
+ "LocationDatabase": "Розташування бази даних",
+ "LocationDatabaseHint": "Розташування бази даних країни, регіону або міста.",
+ "LocationProvider": "Спосіб визначення локації користувача",
+ "Longitude": "Довгота",
+ "NoDataForGeoIPReport1": "Не існує даних для звіту, тому що немає даних про місцезнаходження або IP адреса відвідувача не може бути визначена географічно.",
+ "NoDataForGeoIPReport2": "Для забезпечення точної геолокаціі, змініть параметри %1$sтут%2$s і використовуйте %3$sбазу даних міст%4$s.",
+ "Organization": "Організація",
+ "OrgDatabase": "База організацій",
+ "PeclGeoIPNoDBDir": "PECL модуль звертається до баз в %1$s, але це існує не директорія. Будь ласка, створіть її і додайте в неї базу даних GeoIP. Або ви можете встановити %2$s в правильну директорію у вашому php.ini файлі.",
+ "PeclGeoLiteError": "Ваша БД GeoIP в %1$s названа %2$s. На жаль, PECL модуь не зможе розпізнати таке ім'я. Будь ласка, перейменуйте це в %3$s.",
+ "PiwikNotManagingGeoIPDBs": "Piwik в даний час не працює з базами GeoIP.",
+ "PluginDescription": "Повідомляє місцезнаходження відвідувачів: країна, регіон, місто і географічні координати (широта\/довгота).",
+ "Region": "Регіон",
+ "SetupAutomaticUpdatesOfGeoIP": "Налаштувати автоматичне оновлення GeoIP баз",
+ "SubmenuLocations": "Локації",
+ "TestIPLocatorFailed": "Piwik спробував визначити місцезнаходження відомої IP-адреси (%1$s), але ваш сервер повернув значення: %2$s. Якщо спосіб визначення локації був налаштований правильно, він повернув би значення: %3$s.",
+ "ThisUrlIsNotAValidGeoIPDB": "Завантажений файл не є коректною GeoIP базою. Будь ласка, перевірте посилання чи завантажте файл вручну.",
+ "ToGeolocateOldVisits": "Для того щоб отримати інформацію про місцезнаходження для попередніх відвідувачів, скористайтеся скриптом, про який написано %1$sтут%2$s.",
+ "UnsupportedArchiveType": "Зустрівся непідтримуваний тип архіву %1$s.",
+ "UpdaterHasNotBeenRun": "Оновлення ніколи не проводилися.",
+ "UpdaterIsNotScheduledToRun": "Це не заплановано до запуску в майбутньому.",
+ "UpdaterScheduledForNextRun": "Це запланований запуск команди core:archive при наступному виконанні cron-завдання.",
+ "UpdaterWasLastRun": "Оновлення останнього запуску в %s.",
+ "UpdaterWillRunNext": "Заплановано наступний запуск на %s.",
+ "WidgetLocation": "Місцезнаходження відвідувача"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/tests/Unit/UserCountryTest.php b/plugins/UserCountry/tests/Unit/UserCountryTest.php
index dddbce6b9f..c2db05db2d 100644
--- a/plugins/UserCountry/tests/Unit/UserCountryTest.php
+++ b/plugins/UserCountry/tests/Unit/UserCountryTest.php
@@ -109,6 +109,9 @@ class UserCountryTest extends \PHPUnit_Framework_TestCase
*/
public function testGeoIpDownloadInvalidUrl($url)
{
+ // unset translations, otherwise Exception message will be translated
+ StaticContainer::get('Piwik\Translation\Translator')->reset();
+
$updater = new Piwik_UserCountry_GeoIPAutoUpdater_publictest();
try {
$updater->downloadFile('loc', $url);
diff --git a/plugins/UserCountryMap/javascripts/visitor-map.js b/plugins/UserCountryMap/javascripts/visitor-map.js
index b6a1a24d51..07b5710259 100644
--- a/plugins/UserCountryMap/javascripts/visitor-map.js
+++ b/plugins/UserCountryMap/javascripts/visitor-map.js
@@ -48,7 +48,8 @@
specialMetricsColorScale = colorManager.getColors(
'visitor-map',
['special-metrics-color-scale-1', 'special-metrics-color-scale-2', 'special-metrics-color-scale-3',
- 'special-metrics-color-scale-4']
+ 'special-metrics-color-scale-4'],
+ true
),
countryHighlightColor = colors['country-highlight-color'],
countrySelectedColor = colors['country-selected-color'],
@@ -139,11 +140,34 @@
};
}
- function formatNumber(v) {
+ function formatNumber(v, metric, first) {
v = Number(v);
- return v > 1000000 ? (v / 1000000).toFixed(1) + 'm' :
- v > 1000 ? (v / 1000).toFixed(1) + 'k' :
- v;
+
+ if (v > 1000000) {
+ return (v / 1000000).toFixed(1) + 'm';
+ }
+
+ if (v > 1000) {
+ return (v / 1000).toFixed(1) + 'k';
+ }
+
+ if (!metric) {
+ return v;
+ }
+
+ if (metric == 'avg_time_on_site') {
+ v += first ? ' sec' : 's';
+ } else if (metric == 'bounce_rate') {
+ v += '%';
+ } else if (metric === 'nb_actions_per_visit') {
+ if (parseInt(v, 10) === v) {
+ return v;
+ }
+
+ return v.toFixed(1);
+ }
+
+ return v;
}
//
@@ -197,13 +221,7 @@
function addLegendItem(val, first) {
var d = $('<div>'), r = $('<div>'), l = $('<div>'),
metric = $$('.userCountryMapSelectMetrics').val(),
- v = formatNumber(Math.round(val));
-
- if (metric == 'avg_time_on_site') {
- v += first ? ' sec' : 's';
- } else if (metric == 'bounce_rate') {
- v += '%';
- }
+ v = formatNumber(Math.round(val), metric, first);
d.css({ width: 17, height: 17, float: 'left', background: colscale(val) });
l.css({ 'margin-left': 20, 'line-height': '20px', 'text-align': 'right' }).html(v);
@@ -245,7 +263,7 @@
if (id.length == 3) {
c = (stats.p90 - stats.min) / (stats.max - stats.min);
colscale = chroma.scale(specialMetricsColorScale, [0, c, c + 0.001, 1])
- .domain(chroma.limits(rows, 'c', 5, 'curMetric', filter))
+ .domain(chroma.limits(rows, 'c', 5, 'curMetric', filter), 4, 'c')
.mode('hsl');
}
}
@@ -464,7 +482,7 @@
$('.map-stats').html(formatValueForTooltips(UserCountryMap.countriesByIso[id], metric, 'world'));
} else {
$('.map-stats').html(
- _.nb_visits.replace('%s', '<strong>' + formatNumber(totalVisits) + '</strong>') + (id != 'world' ? ' (' +
+ _.nb_visits.replace('%s', '<strong>' + formatNumber(totalVisits, metric) + '</strong>') + (id != 'world' ? ' (' +
formatPercentage(totalVisits / worldTotalVisits) + ')' : '')
);
}
@@ -887,12 +905,11 @@
$.each(cities, function (i, city) {
sumArea += isNaN(city.curMetric) ? 0 : Math.pow(radscale(city.curMetric), 2);
});
+
maxRad = Math.sqrt(area * f[metric] / sumArea);
radscale = $K.scale.sqrt(cities.concat({ curMetric: 0 }), 'curMetric').range([2, maxRad + 2]);
- var is_rate = metric.substr(0, 3) != 'nb_' || metric == 'nb_actions_per_visit';
-
var citySymbols = map.addSymbols({
type: $K.LabeledBubble,
data: cities,
@@ -902,7 +919,26 @@
tolerance: 0
},
title: function (d) {
- return radscale(d.curMetric) > 10 ? formatNumber(d.curMetric) : '';
+ var v = d.curMetric;
+ if (isNaN(v)) {
+ return '';
+ }
+
+ if (metric === 'bounce_rate') {
+ v = Number((''+ v).replace('%', ''));
+ } else if (metric === 'avg_time_on_site') {
+ v = Number(v);
+ }
+
+ if (isNaN(v)) {
+ return '';
+ }
+
+ if (radscale(v) > 10) {
+ return formatNumber(d.curMetric, metric);
+ }
+
+ return '';
},
labelattrs: {
fill: cityLabelColor,
@@ -912,7 +948,7 @@
},
filter: function (d) {
if (isNaN(d.lat) || isNaN(d.long)) return false;
- return is_rate ? d.nb_visits > 5 && d.curMetric : d.curMetric;
+ return !!d.curMetric && d.curMetric !== '0';
},
aggregate: function (rows) {
var row = aggregate(rows);
@@ -927,14 +963,24 @@
},
sortBy: 'radius desc',
location: function (city) { return [city.long, city.lat]; },
- radius: function (city) { return radscale(city.curMetric); },
+ radius: function (city) {
+ var scale = radscale(city.curMetric);
+ if (isNaN(scale)) {
+ return 0.01;
+ }
+ return scale;
+ },
tooltip: function (city) {
return '<h3>' + city.city_name + '</h3>' +
formatValueForTooltips(city, metric, iso);
},
attrs: function (city) {
+ var color = colscale(city.curMetric);
+ if (color && color.hex) {
+ color = color.hex();
+ }
return {
- fill: colscale(city.curMetric).hex(),
+ fill: color,
'fill-opacity': 0.7,
stroke: cityStrokeColor,
cursor: 'pointer'
diff --git a/plugins/UserCountryMap/lang/ru.json b/plugins/UserCountryMap/lang/ru.json
index 0d43f7d025..5995e7514d 100644
--- a/plugins/UserCountryMap/lang/ru.json
+++ b/plugins/UserCountryMap/lang/ru.json
@@ -1,5 +1,6 @@
{
"UserCountryMap": {
+ "PluginDescription": "Этот плагин предоставляет виджеты Visitor Map и Real-time Map. Внимание: требуется включенный плагин UserCountry.",
"AndNOthers": "и %s других",
"Cities": "Города",
"Countries": "Страны",
diff --git a/plugins/UserCountryMap/lang/sq.json b/plugins/UserCountryMap/lang/sq.json
index fdd2aaac07..a5d35eb293 100644
--- a/plugins/UserCountryMap/lang/sq.json
+++ b/plugins/UserCountryMap/lang/sq.json
@@ -10,6 +10,8 @@
"None": "Asnjë",
"NoVisit": "Pa vizita",
"RealTimeMap": "Hartë e Atypëratyshme",
- "Regions": "Rajone"
+ "Regions": "Rajone",
+ "SecondsAgo": "%s sekonda më parë",
+ "VisitorMap": "Hartë Vizitorësh"
}
} \ No newline at end of file
diff --git a/plugins/UserCountryMap/lang/uk.json b/plugins/UserCountryMap/lang/uk.json
index 2200d02058..0ca0d06247 100644
--- a/plugins/UserCountryMap/lang/uk.json
+++ b/plugins/UserCountryMap/lang/uk.json
@@ -1,5 +1,25 @@
{
"UserCountryMap": {
- "map": "карта"
+ "PluginDescription": "Цей плагін надає віджет відображення відвідувачів на карті в реальному часі. Примітка: вимагає активації плагіну UserCountry.",
+ "AndNOthers": "та %s інших",
+ "Cities": "Міста",
+ "Countries": "Країни",
+ "DaysAgo": "%s днів назад",
+ "GoalConversions": "%s цілей досягнуто",
+ "HoursAgo": "%s годин тому",
+ "map": "мапа",
+ "MinutesAgo": "%s хвилин тому",
+ "None": "Немає",
+ "NoVisit": "Без відвідувань",
+ "RealTimeMap": "Мапа в реальному часі",
+ "Regions": "Регіони",
+ "Searches": "%s пошукових запитів",
+ "SecondsAgo": "%s секунд тому",
+ "ShowingVisits": "Останні геолокаційні відвідування",
+ "Unlocated": "<b>%s<\/b> %p відвідування з %c не можуть бути геолокалізованни.",
+ "VisitorMap": "Мапа відвідувань",
+ "WorldWide": "Весь світ",
+ "WithUnknownRegion": "%s з невідомим регіоном",
+ "WithUnknownCity": "%s з невідомим містом"
}
} \ No newline at end of file
diff --git a/plugins/UserId/.gitignore b/plugins/UserId/.gitignore
new file mode 100644
index 0000000000..c8c9480010
--- /dev/null
+++ b/plugins/UserId/.gitignore
@@ -0,0 +1 @@
+tests/System/processed/*xml \ No newline at end of file
diff --git a/plugins/UserId/API.php b/plugins/UserId/API.php
new file mode 100644
index 0000000000..932e19b113
--- /dev/null
+++ b/plugins/UserId/API.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\UserId;
+
+use Piwik\Archive;
+use Piwik\Metrics;
+use Piwik\Piwik;
+use Piwik\DataTable;
+use Piwik\DataTable\Row;
+
+/**
+ * API for plugin UserId. Allows to get User IDs table.
+ *
+ * @method static \Piwik\Plugins\UserId\API getInstance()
+ */
+class API extends \Piwik\Plugin\API
+{
+ /**
+ * Get a report of all User Ids.
+ *
+ * @param int $idSite
+ *
+ * @param string $period
+ * @param int $date
+ * @param string|bool $segment
+ *
+ * @return DataTable
+ */
+ public function getUsers($idSite, $period, $date, $segment = false)
+ {
+ Piwik::checkUserHasViewAccess($idSite);
+ $archive = Archive::build($idSite, $period, $date, $segment);
+ $dataTable = $archive->getDataTable(Archiver::USERID_ARCHIVE_RECORD);
+
+ $dataTable->queueFilter('ReplaceColumnNames');
+ $dataTable->queueFilter('ReplaceSummaryRowLabel');
+
+ return $dataTable;
+ }
+}
diff --git a/plugins/UserId/Archiver.php b/plugins/UserId/Archiver.php
new file mode 100644
index 0000000000..28c32bf3c6
--- /dev/null
+++ b/plugins/UserId/Archiver.php
@@ -0,0 +1,140 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\UserId;
+use Piwik\Config;
+use Piwik\DataArray;
+use Piwik\DataTable;
+use Piwik\Metrics;
+
+/**
+ * Archiver that aggregates metrics per user ID (user_id field).
+ */
+class Archiver extends \Piwik\Plugin\Archiver
+{
+ const USERID_ARCHIVE_RECORD = "UserId_users";
+
+ const VISITOR_ID_FIELD = 'idvisitor';
+ const USER_ID_FIELD = 'user_id';
+
+ protected $maximumRowsInDataTableLevelZero;
+
+ function __construct($processor)
+ {
+ parent::__construct($processor);
+
+ $this->maximumRowsInDataTableLevelZero = Config::getInstance()->General['datatable_archiving_maximum_rows_userid_users'];
+ }
+
+ /**
+ * @var DataArray
+ */
+ protected $arrays;
+
+ /**
+ * Array to save visitor IDs for every user ID met during archiving process. We use it to
+ * fill metadata before actual inserting rows to DB.
+ * @var array
+ */
+ protected $visitorIdsUserIdsMap = array();
+
+ /**
+ * Archives data for a day period.
+ */
+ public function aggregateDayReport()
+ {
+ $this->arrays = new DataArray();
+ $this->aggregateUsers();
+ $this->insertDayReports();
+ }
+ /**
+ * Period archiving: simply sums up daily archives
+ */
+ public function aggregateMultipleReports()
+ {
+ $dataTableRecords = array(self::USERID_ARCHIVE_RECORD);
+ $columnsAggregationOperation = null;
+ $this->getProcessor()->aggregateDataTableRecords(
+ $dataTableRecords,
+ $this->maximumRowsInDataTableLevelZero,
+ $this->maximumRowsInDataTableLevelZero,
+ $columnToSort = 'nb_visits',
+ $columnsAggregationOperation,
+ $columnsToRenameAfterAggregation = null,
+ $countRowsRecursive = array());
+ }
+
+ /**
+ * Used to aggregate daily data per user ID
+ */
+ protected function aggregateUsers()
+ {
+ $userIdFieldName = self::USER_ID_FIELD;
+ $visitorIdFieldName = self::VISITOR_ID_FIELD;
+
+ /** @var \Zend_Db_Statement $query */
+ $query = $this->getLogAggregator()->queryVisitsByDimension(
+ array(self::USER_ID_FIELD),
+ "$userIdFieldName IS NOT NULL AND $userIdFieldName != ''",
+ array("LOWER(HEX($visitorIdFieldName)) as $visitorIdFieldName")
+ );
+
+ if ($query === false) {
+ return;
+ }
+
+ $rowsCount = 0;
+ while ($row = $query->fetch()) {
+ $rowsCount++;
+ $this->arrays->sumMetricsVisits($row[$userIdFieldName], $row);
+ $this->rememberVisitorId($row);
+ }
+ }
+
+ /**
+ * Insert aggregated daily data serialized
+ *
+ * @throws \Exception
+ */
+ protected function insertDayReports()
+ {
+ /** @var DataTable $dataTable */
+ $dataTable = $this->arrays->asDataTable();
+ $this->setVisitorIds($dataTable);
+ $report = $dataTable->getSerialized($this->maximumRowsInDataTableLevelZero, null, Metrics::INDEX_NB_VISITS);
+ $this->getProcessor()->insertBlobRecord(self::USERID_ARCHIVE_RECORD, $report);
+ }
+
+ /**
+ * Remember visitor ID per user. We use it to fill metadata before actual inserting rows to DB.
+ *
+ * @param array $row
+ */
+ private function rememberVisitorId($row)
+ {
+ if (!empty($row[self::USER_ID_FIELD]) && !empty($row[self::VISITOR_ID_FIELD])) {
+ $this->visitorIdsUserIdsMap[$row[self::USER_ID_FIELD]] = $row[self::VISITOR_ID_FIELD];
+ }
+ }
+
+ /**
+ * Fill visitor ID as metadata before actual inserting rows to DB.
+ *
+ * @param DataTable $dataTable
+ */
+ private function setVisitorIds(DataTable $dataTable)
+ {
+ foreach ($dataTable->getRows() as $row) {
+ $userId = $row->getColumn('label');
+ if (isset($this->visitorIdsUserIdsMap[$userId])) {
+ $row->setMetadata(self::VISITOR_ID_FIELD, $this->visitorIdsUserIdsMap[$userId]);
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/plugins/UserId/Columns/UserId.php b/plugins/UserId/Columns/UserId.php
new file mode 100644
index 0000000000..7ac474cf73
--- /dev/null
+++ b/plugins/UserId/Columns/UserId.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\UserId\Columns;
+
+use Piwik\Piwik;
+use Piwik\Plugin\Dimension\VisitDimension;
+
+/**
+ * UserId dimension
+ */
+class UserId extends VisitDimension
+{
+
+ /**
+ * The name of the dimension which will be visible for instance in the UI of a related report and in the mobile app.
+ * @return string
+ */
+ public function getName()
+ {
+ return Piwik::translate('UserId_UserId');
+ }
+
+} \ No newline at end of file
diff --git a/plugins/UserId/Reports/Base.php b/plugins/UserId/Reports/Base.php
new file mode 100644
index 0000000000..aa3f70e197
--- /dev/null
+++ b/plugins/UserId/Reports/Base.php
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\UserId\Reports;
+
+use Piwik\Plugin\Report;
+
+abstract class Base extends Report
+{
+ protected function init()
+ {
+ $this->categoryId = 'General_Visitors';
+ }
+}
diff --git a/plugins/UserId/Reports/GetUsers.php b/plugins/UserId/Reports/GetUsers.php
new file mode 100644
index 0000000000..776c29e02f
--- /dev/null
+++ b/plugins/UserId/Reports/GetUsers.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\UserId\Reports;
+
+use Piwik\Piwik;
+use Piwik\Plugin\ViewDataTable;
+use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
+use Piwik\Plugins\UserId\Columns\UserId;
+use Piwik\Report\ReportWidgetFactory;
+use Piwik\Widget\WidgetsList;
+
+/**
+ * A report showing all unique user IDs and some aggregated information about them. It also allows
+ * to open a popover with visitor details
+ */
+class GetUsers extends Base
+{
+ protected function init()
+ {
+ parent::init();
+
+ $this->name = Piwik::translate('UserId_UserReportTitle');
+ $this->subcategoryId = 'UserId_UserReportTitle';
+ $this->documentation = '';
+ $this->dimension = new UserId();
+ $this->metrics = array('label', 'nb_visits', 'nb_actions', 'nb_visits_converted');
+
+ // This defines in which order your report appears in the mobile app, in the menu and in the list of widgets
+ $this->order = 9;
+ }
+
+ /**
+ * @return array
+ */
+ public static function getColumnsToDisplay()
+ {
+ return array();
+ }
+
+ /**
+ * @param ViewDataTable $view
+ */
+ public function configureView(ViewDataTable $view)
+ {
+ $view->config->addTranslation('label', Piwik::translate('General_UserId'));
+ $view->config->addTranslation('nb_visits_converted', Piwik::translate('General_VisitConvertedGoal'));
+
+ /*
+ * Hide most of the table footer actions, leaving only export icons and pagination
+ */
+ $view->config->columns_to_display = $this->metrics;
+ $view->config->show_all_views_icons = false;
+ $view->config->show_active_view_icon = false;
+ $view->config->show_related_reports = false;
+ $view->config->show_insights = false;
+ $view->config->show_pivot_by_subtable = false;
+ $view->config->show_flatten_table = false;
+
+ if ($view->isViewDataTableId(HtmlTable::ID)) {
+ $view->config->disable_row_evolution = false;
+ }
+
+ // exclude users with less then 2 visits, when low population filter is active
+ $view->requestConfig->filter_excludelowpop_value = 2;
+ }
+}
diff --git a/plugins/UserId/UserId.php b/plugins/UserId/UserId.php
new file mode 100644
index 0000000000..b69f47c4e7
--- /dev/null
+++ b/plugins/UserId/UserId.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\UserId;
+
+use Piwik\Db;
+
+/**
+ * Plugin adds a new Users report showing all unique user IDs and some aggregated data
+ */
+class UserId extends \Piwik\Plugin
+{
+ /**
+ * Register event observers
+ *
+ * @return array
+ */
+ public function registerEvents()
+ {
+ return array(
+ // Add plugin's custom JS files
+ 'AssetManager.getJavaScriptFiles' => 'getJavaScriptFiles',
+ // Add translations for the client side JS
+ 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
+ );
+ }
+
+ /**
+ * Add a custom JS to the page. It adds possibility to open visitor details popover for each
+ * user ID in a report table
+ *
+ * @param $jsFiles
+ */
+ public function getJavaScriptFiles(&$jsFiles)
+ {
+ $jsFiles[] = "plugins/UserId/javascripts/rowaction.js";
+ }
+
+ /**
+ * Add translations for the client side JS
+ *
+ * @param $translationKeys
+ */
+ public function getClientSideTranslationKeys(&$translationKeys)
+ {
+ $translationKeys[] = "Live_ViewVisitorProfile";
+ }
+}
diff --git a/plugins/UserId/images/visitordetails-hover.png b/plugins/UserId/images/visitordetails-hover.png
new file mode 100644
index 0000000000..523a8ac6b4
--- /dev/null
+++ b/plugins/UserId/images/visitordetails-hover.png
Binary files differ
diff --git a/plugins/UserId/images/visitordetails.png b/plugins/UserId/images/visitordetails.png
new file mode 100644
index 0000000000..423392db75
--- /dev/null
+++ b/plugins/UserId/images/visitordetails.png
Binary files differ
diff --git a/plugins/UserId/javascripts/rowaction.js b/plugins/UserId/javascripts/rowaction.js
new file mode 100644
index 0000000000..d100c1f3f5
--- /dev/null
+++ b/plugins/UserId/javascripts/rowaction.js
@@ -0,0 +1,74 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+/**
+ * This file registers the visitor details overlay row action on the user IDs list page.
+ */
+(function () {
+
+ var actionName = 'visitorDetails';
+
+ function DataTable_RowActions_VisitorDetails(dataTable) {
+ this.dataTable = dataTable;
+ this.actionName = actionName;
+ this.trEventName = 'piwikTriggerVisitorDetailsAction';
+ }
+
+ DataTable_RowActions_VisitorDetails.prototype = new DataTable_RowAction();
+
+ DataTable_RowActions_VisitorDetails.prototype.performAction = function (label, tr, e) {
+ var visitorId = this.getRowMetadata($(tr)).idvisitor || '';
+ visitorId = encodeURIComponent(visitorId);
+ if (visitorId.length > 0) {
+ DataTable_RowAction.prototype.openPopover.apply(this, ['module=Live&action=getVisitorProfilePopup&visitorId=' + visitorId]);
+ }
+ };
+
+ DataTable_RowActions_VisitorDetails.prototype.doOpenPopover = function (urlParam) {
+ Piwik_Popover.createPopupAndLoadUrl(urlParam, _pk_translate('Live_VisitorProfile'), 'visitor-profile-popup');
+ };
+
+ DataTable_RowActions_Registry.register({
+
+ name: actionName,
+
+ instance: null,
+
+ dataTableIcon: 'plugins/UserId/images/visitordetails.png',
+ dataTableIconHover: 'plugins/UserId/images/visitordetails-hover.png',
+
+ order: 30,
+
+ dataTableIconTooltip: [
+ _pk_translate('Live_ViewVisitorProfile'),
+ ''
+ ],
+
+ isAvailableOnReport: function (dataTableParams, undefined) {
+ return dataTableParams.module == 'UserId';
+ },
+
+ isAvailableOnRow: function (dataTableParams, tr) {
+ return DataTable_RowAction.prototype.getRowMetadata(tr).hasOwnProperty('idvisitor');
+ },
+
+ createInstance: function (dataTable, param) {
+ if (dataTable !== null && typeof dataTable.visitorDetailsInstance != 'undefined') {
+ return dataTable.segmentVisitorLogInstance;
+ }
+
+ var instance = new DataTable_RowActions_VisitorDetails(dataTable);
+ if (dataTable !== null) {
+ dataTable.visitorDetailsInstance = instance;
+ }
+
+ this.instance = instance;
+
+ return instance;
+ }
+ });
+})(); \ No newline at end of file
diff --git a/plugins/UserId/lang/am.json b/plugins/UserId/lang/am.json
new file mode 100644
index 0000000000..89b16469da
--- /dev/null
+++ b/plugins/UserId/lang/am.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "ተጠቃሚዎች"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ar.json b/plugins/UserId/lang/ar.json
new file mode 100644
index 0000000000..20c6e62bdb
--- /dev/null
+++ b/plugins/UserId/lang/ar.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "المستخدمون"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/be.json b/plugins/UserId/lang/be.json
new file mode 100644
index 0000000000..db19effcfb
--- /dev/null
+++ b/plugins/UserId/lang/be.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Карыстачы"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/bg.json b/plugins/UserId/lang/bg.json
new file mode 100644
index 0000000000..2265cef2c2
--- /dev/null
+++ b/plugins/UserId/lang/bg.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Потребители"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ca.json b/plugins/UserId/lang/ca.json
new file mode 100644
index 0000000000..ef7056f9df
--- /dev/null
+++ b/plugins/UserId/lang/ca.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Usuaris"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/cs.json b/plugins/UserId/lang/cs.json
new file mode 100644
index 0000000000..e5e54b8aaf
--- /dev/null
+++ b/plugins/UserId/lang/cs.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "UserId",
+ "UserReportTitle": "Uživatelé",
+ "PluginDescription": "Zobrazí reporty uživatel"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/da.json b/plugins/UserId/lang/da.json
new file mode 100644
index 0000000000..399a31080b
--- /dev/null
+++ b/plugins/UserId/lang/da.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Brugere"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/de.json b/plugins/UserId/lang/de.json
new file mode 100644
index 0000000000..d2543cfcbf
--- /dev/null
+++ b/plugins/UserId/lang/de.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "Benutzer-ID",
+ "UserReportTitle": "Benutzer",
+ "PluginDescription": "Zeigt Benutzer-Berichte"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/el.json b/plugins/UserId/lang/el.json
new file mode 100644
index 0000000000..f9ffd5b451
--- /dev/null
+++ b/plugins/UserId/lang/el.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "Αναγνωριστικό χρήστη",
+ "UserReportTitle": "Χρήστες",
+ "PluginDescription": "Εμφανίζει τις αναφορές χρηστών"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/en.json b/plugins/UserId/lang/en.json
new file mode 100644
index 0000000000..40d9f3660d
--- /dev/null
+++ b/plugins/UserId/lang/en.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "UserId",
+ "UserReportTitle": "Users",
+ "PluginDescription": "Shows user reports"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/es.json b/plugins/UserId/lang/es.json
new file mode 100644
index 0000000000..98b725a25a
--- /dev/null
+++ b/plugins/UserId/lang/es.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Usuarios"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/et.json b/plugins/UserId/lang/et.json
new file mode 100644
index 0000000000..0777e69781
--- /dev/null
+++ b/plugins/UserId/lang/et.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Kasutajaid"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/eu.json b/plugins/UserId/lang/eu.json
new file mode 100644
index 0000000000..9e73f162f5
--- /dev/null
+++ b/plugins/UserId/lang/eu.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Erabiltzaileak"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/fa.json b/plugins/UserId/lang/fa.json
new file mode 100644
index 0000000000..e1a99adfe3
--- /dev/null
+++ b/plugins/UserId/lang/fa.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "کاربران"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/fi.json b/plugins/UserId/lang/fi.json
new file mode 100644
index 0000000000..72950a6649
--- /dev/null
+++ b/plugins/UserId/lang/fi.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Käyttäjät"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/fr.json b/plugins/UserId/lang/fr.json
new file mode 100644
index 0000000000..f0ec8c6d8d
--- /dev/null
+++ b/plugins/UserId/lang/fr.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "UserId",
+ "UserReportTitle": "Utilisateurs",
+ "PluginDescription": "Affiche les rapports utilisateur"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/gl.json b/plugins/UserId/lang/gl.json
new file mode 100644
index 0000000000..617065bb0d
--- /dev/null
+++ b/plugins/UserId/lang/gl.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Usuario"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/he.json b/plugins/UserId/lang/he.json
new file mode 100644
index 0000000000..35c16ba1e9
--- /dev/null
+++ b/plugins/UserId/lang/he.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "משתמשים"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/hi.json b/plugins/UserId/lang/hi.json
new file mode 100644
index 0000000000..a03ecf9b7c
--- /dev/null
+++ b/plugins/UserId/lang/hi.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "उपयोगकर्ता"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/hr.json b/plugins/UserId/lang/hr.json
new file mode 100644
index 0000000000..9f34d4a7cb
--- /dev/null
+++ b/plugins/UserId/lang/hr.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Korisnici"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/hu.json b/plugins/UserId/lang/hu.json
new file mode 100644
index 0000000000..afd68b2ac8
--- /dev/null
+++ b/plugins/UserId/lang/hu.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Felhasználók"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/id.json b/plugins/UserId/lang/id.json
new file mode 100644
index 0000000000..67985af03f
--- /dev/null
+++ b/plugins/UserId/lang/id.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Pengguna"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/is.json b/plugins/UserId/lang/is.json
new file mode 100644
index 0000000000..b5af86b45e
--- /dev/null
+++ b/plugins/UserId/lang/is.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Notendur"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/it.json b/plugins/UserId/lang/it.json
new file mode 100644
index 0000000000..ec2e4beb8d
--- /dev/null
+++ b/plugins/UserId/lang/it.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "Id Utente",
+ "UserReportTitle": "Utenti",
+ "PluginDescription": "Mostra i report utente"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ja.json b/plugins/UserId/lang/ja.json
new file mode 100644
index 0000000000..b1c2060004
--- /dev/null
+++ b/plugins/UserId/lang/ja.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "ユーザー"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ka.json b/plugins/UserId/lang/ka.json
new file mode 100644
index 0000000000..b1db014206
--- /dev/null
+++ b/plugins/UserId/lang/ka.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "მომხმარებლები"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ko.json b/plugins/UserId/lang/ko.json
new file mode 100644
index 0000000000..e68c34e7f2
--- /dev/null
+++ b/plugins/UserId/lang/ko.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "사용자"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/lt.json b/plugins/UserId/lang/lt.json
new file mode 100644
index 0000000000..9d60aaa439
--- /dev/null
+++ b/plugins/UserId/lang/lt.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Naudotojai"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/lv.json b/plugins/UserId/lang/lv.json
new file mode 100644
index 0000000000..630778b101
--- /dev/null
+++ b/plugins/UserId/lang/lv.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Lietotāji"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/nb.json b/plugins/UserId/lang/nb.json
new file mode 100644
index 0000000000..b8404858f2
--- /dev/null
+++ b/plugins/UserId/lang/nb.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "Bruker-ID",
+ "UserReportTitle": "Brukere",
+ "PluginDescription": "Vises brukerrapporter"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/nl.json b/plugins/UserId/lang/nl.json
new file mode 100644
index 0000000000..7c4446cd64
--- /dev/null
+++ b/plugins/UserId/lang/nl.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "Gebruikers-ID",
+ "UserReportTitle": "Gebruikers",
+ "PluginDescription": "Toont gebruikerrapporten"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/nn.json b/plugins/UserId/lang/nn.json
new file mode 100644
index 0000000000..fd50467a5c
--- /dev/null
+++ b/plugins/UserId/lang/nn.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Brukarar"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/pl.json b/plugins/UserId/lang/pl.json
new file mode 100644
index 0000000000..3372d2057a
--- /dev/null
+++ b/plugins/UserId/lang/pl.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Użytkownicy"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/pt-br.json b/plugins/UserId/lang/pt-br.json
new file mode 100644
index 0000000000..43e1b12fec
--- /dev/null
+++ b/plugins/UserId/lang/pt-br.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "UserId",
+ "UserReportTitle": "Usuários",
+ "PluginDescription": "Mostra relatórios de usuários"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/pt.json b/plugins/UserId/lang/pt.json
new file mode 100644
index 0000000000..f0724879a7
--- /dev/null
+++ b/plugins/UserId/lang/pt.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Utilizadores"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ro.json b/plugins/UserId/lang/ro.json
new file mode 100644
index 0000000000..c6670264b2
--- /dev/null
+++ b/plugins/UserId/lang/ro.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Utilizatori"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ru.json b/plugins/UserId/lang/ru.json
new file mode 100644
index 0000000000..353190053a
--- /dev/null
+++ b/plugins/UserId/lang/ru.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Пользователи"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/sk.json b/plugins/UserId/lang/sk.json
new file mode 100644
index 0000000000..be0f5fbf12
--- /dev/null
+++ b/plugins/UserId/lang/sk.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Používatelia"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/sl.json b/plugins/UserId/lang/sl.json
new file mode 100644
index 0000000000..6a3b1959d6
--- /dev/null
+++ b/plugins/UserId/lang/sl.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Uporabniki"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/sq.json b/plugins/UserId/lang/sq.json
new file mode 100644
index 0000000000..2c8c14380c
--- /dev/null
+++ b/plugins/UserId/lang/sq.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Përdorues"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/sr.json b/plugins/UserId/lang/sr.json
new file mode 100644
index 0000000000..9f34d4a7cb
--- /dev/null
+++ b/plugins/UserId/lang/sr.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Korisnici"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/sv.json b/plugins/UserId/lang/sv.json
new file mode 100644
index 0000000000..98e102901d
--- /dev/null
+++ b/plugins/UserId/lang/sv.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "Användar ID",
+ "UserReportTitle": "Användare",
+ "PluginDescription": "Visa användarrapporter"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/ta.json b/plugins/UserId/lang/ta.json
new file mode 100644
index 0000000000..b8b8e7ec01
--- /dev/null
+++ b/plugins/UserId/lang/ta.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "பாவனையாளர்கள்"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/te.json b/plugins/UserId/lang/te.json
new file mode 100644
index 0000000000..57139b029a
--- /dev/null
+++ b/plugins/UserId/lang/te.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "వాడుకరులు"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/th.json b/plugins/UserId/lang/th.json
new file mode 100644
index 0000000000..850ec2b335
--- /dev/null
+++ b/plugins/UserId/lang/th.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "ผู้ใช้"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/tl.json b/plugins/UserId/lang/tl.json
new file mode 100644
index 0000000000..9c7f9b544f
--- /dev/null
+++ b/plugins/UserId/lang/tl.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Users"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/tr.json b/plugins/UserId/lang/tr.json
new file mode 100644
index 0000000000..9aec350fb0
--- /dev/null
+++ b/plugins/UserId/lang/tr.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Kullanıcılar"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/uk.json b/plugins/UserId/lang/uk.json
new file mode 100644
index 0000000000..6ecfc09fe4
--- /dev/null
+++ b/plugins/UserId/lang/uk.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "Користувачі"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/vi.json b/plugins/UserId/lang/vi.json
new file mode 100644
index 0000000000..5fa38b3ff8
--- /dev/null
+++ b/plugins/UserId/lang/vi.json
@@ -0,0 +1,7 @@
+{
+ "UserId": {
+ "UserId": "ID người dùng",
+ "UserReportTitle": "Các người dùng",
+ "PluginDescription": "Hiển thị báo cáo người dùng"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/zh-cn.json b/plugins/UserId/lang/zh-cn.json
new file mode 100644
index 0000000000..b6bdb6f51d
--- /dev/null
+++ b/plugins/UserId/lang/zh-cn.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "用户管理"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/lang/zh-tw.json b/plugins/UserId/lang/zh-tw.json
new file mode 100644
index 0000000000..35697dc6fd
--- /dev/null
+++ b/plugins/UserId/lang/zh-tw.json
@@ -0,0 +1,5 @@
+{
+ "UserId": {
+ "UserReportTitle": "使用者"
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php b/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
new file mode 100644
index 0000000000..3c5ac0fcbd
--- /dev/null
+++ b/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Plugins\UserId\tests\Fixtures;
+
+use Piwik\Date;
+use Piwik\Plugins\UserId\API;
+use Piwik\Tests\Framework\Fixture;
+
+/**
+ * Generates visits with user IDs and creates the user IDs index for testing
+ */
+class TrackFewVisitsAndCreateUsers extends Fixture
+{
+ public $dateTime = '2010-02-01 11:22:33';
+ public $idSite = 1;
+
+ public function setUp()
+ {
+ if (!self::siteCreated($idSite = 1)) {
+ self::createWebsite($this->dateTime);
+ }
+
+ $this->trackVisits();
+ }
+
+ private function trackVisits()
+ {
+ $t = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true);
+ $t->setTokenAuth(self::getTokenAuth());
+ $t->enableBulkTracking();
+
+ foreach (array('user1', 'user2', 'user3') as $key => $userId) {
+ for ($numVisits = 0; $numVisits < ($key+1) * 10; $numVisits++) {
+ $t->setUserId($userId);
+ if ($numVisits % 5 == 0) {
+ $t->doTrackSiteSearch('some search term');
+ }
+ if ($numVisits % 4 == 0) {
+ $t->doTrackEvent('Event action', 'event cat');
+ }
+ $t->setForceNewVisit();
+ $t->setUrl('http://example.org/my/dir/page' . ($numVisits % 4));
+
+ $visitDateTime = Date::factory($this->dateTime)->addDay($numVisits)->getDatetime();
+ $t->setForceVisitDateTime($visitDateTime);
+
+ self::assertTrue($t->doTrackPageView('incredible title ' . ($numVisits % 3)));
+ }
+ }
+
+ self::checkBulkTrackingResponse($t->doBulkTrack());
+ }
+} \ No newline at end of file
diff --git a/plugins/UserId/tests/System/ApiTest.php b/plugins/UserId/tests/System/ApiTest.php
new file mode 100644
index 0000000000..ca73c2792d
--- /dev/null
+++ b/plugins/UserId/tests/System/ApiTest.php
@@ -0,0 +1,154 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\UserId\tests\System;
+
+use Piwik\Plugins\UserId\tests\Fixtures\TrackFewVisitsAndCreateUsers;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
+
+/**
+ * Run system tests against the UserId.getUsers API method
+ *
+ * @group UserId
+ * @group ApiTest
+ * @group Plugins
+ */
+class ApiTest extends SystemTestCase
+{
+ /**
+ * @var TrackFewVisitsAndCreateUsers
+ */
+ public static $fixture;
+
+ /**
+ * @dataProvider getApiForTesting
+ */
+ public function testApi($api, $params)
+ {
+ $this->runApiTests($api, $params);
+ }
+
+ public function getApiForTesting()
+ {
+ $api = 'UserId.getUsers';
+ $startDate = substr(self::$fixture->dateTime, 0, 10);
+ $endDate = date('Y-m-d', strtotime($startDate) + 3600*24*365);
+
+ $apiToTest = array();
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => $startDate,
+ 'periods' => array('day'),
+ 'idSite' => 1,
+ 'testSuffix' => ''
+ )
+ );
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => "$startDate,$endDate",
+ 'periods' => array('range'),
+ 'idSite' => 1,
+ 'testSuffix' => ''
+ )
+ );
+
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => $startDate,
+ 'periods' => array('day'),
+ 'idSite' => 1,
+ 'testSuffix' => 'limit',
+ 'otherRequestParameters' => array(
+ 'filter_limit' => '2',
+ 'filter_offset' => '1',
+ )
+ )
+ );
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => "$startDate,$endDate",
+ 'periods' => array('range'),
+ 'idSite' => 1,
+ 'testSuffix' => 'limit',
+ 'otherRequestParameters' => array(
+ 'filter_limit' => '2',
+ 'filter_offset' => '1',
+ )
+ )
+ );
+
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => $startDate,
+ 'periods' => array('day'),
+ 'idSite' => 1,
+ 'testSuffix' => 'ascSortOrder',
+ 'otherRequestParameters' => array(
+ 'filter_sort_order' => 'asc',
+ )
+ )
+ );
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => "$startDate,$endDate",
+ 'periods' => array('range'),
+ 'idSite' => 1,
+ 'testSuffix' => 'ascSortOrder',
+ 'otherRequestParameters' => array(
+ 'filter_sort_order' => 'asc',
+ )
+ )
+ );
+
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => $startDate,
+ 'periods' => array('day'),
+ 'idSite' => 1,
+ 'testSuffix' => 'searchByUserId',
+ 'otherRequestParameters' => array(
+ 'filter_pattern' => 'user2'
+ )
+ )
+ );
+ $apiToTest[] = array(
+ $api,
+ array(
+ 'date' => "$startDate,$endDate",
+ 'periods' => array('range'),
+ 'idSite' => 1,
+ 'testSuffix' => 'searchByUserId',
+ 'otherRequestParameters' => array(
+ 'filter_pattern' => 'user2'
+ )
+ )
+ );
+
+ return $apiToTest;
+ }
+
+ public static function getOutputPrefix()
+ {
+ return '';
+ }
+
+ public static function getPathToTestDirectory()
+ {
+ return dirname(__FILE__);
+ }
+
+}
+
+ApiTest::$fixture = new TrackFewVisitsAndCreateUsers(); \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test___UserId.getUsers_day.xml b/plugins/UserId/tests/System/expected/test___UserId.getUsers_day.xml
new file mode 100644
index 0000000000..19e7d78d39
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test___UserId.getUsers_day.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user1</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>2</nb_visits>
+ <nb_actions>3</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>2</max_actions>
+ <sum_visit_length>1</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>b3daa77b4c04a955</idvisitor>
+ </row>
+ <row>
+ <label>user2</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+ <row>
+ <label>user3</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>0b7f849446d33835</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test___UserId.getUsers_range.xml b/plugins/UserId/tests/System/expected/test___UserId.getUsers_range.xml
new file mode 100644
index 0000000000..184a718ff4
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test___UserId.getUsers_range.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user3</label>
+ <nb_visits>31</nb_visits>
+ <nb_actions>44</nb_actions>
+ <max_actions>3</max_actions>
+ <sum_visit_length>12</sum_visit_length>
+ <bounce_count>19</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>30</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>30</sum_daily_nb_users>
+ <idvisitor>0b7f849446d33835</idvisitor>
+ </row>
+ <row>
+ <label>user2</label>
+ <nb_visits>21</nb_visits>
+ <nb_actions>29</nb_actions>
+ <max_actions>2</max_actions>
+ <sum_visit_length>8</sum_visit_length>
+ <bounce_count>13</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>20</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>20</sum_daily_nb_users>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+ <row>
+ <label>user1</label>
+ <nb_visits>11</nb_visits>
+ <nb_actions>15</nb_actions>
+ <max_actions>2</max_actions>
+ <sum_visit_length>4</sum_visit_length>
+ <bounce_count>7</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>10</sum_daily_nb_users>
+ <idvisitor>b3daa77b4c04a955</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_day.xml b/plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_day.xml
new file mode 100644
index 0000000000..9cf17c8b03
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_day.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user3</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>0b7f849446d33835</idvisitor>
+ </row>
+ <row>
+ <label>user2</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+ <row>
+ <label>user1</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>2</nb_visits>
+ <nb_actions>3</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>2</max_actions>
+ <sum_visit_length>1</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>b3daa77b4c04a955</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_range.xml b/plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_range.xml
new file mode 100644
index 0000000000..99aa12454a
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test_ascSortOrder__UserId.getUsers_range.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user1</label>
+ <nb_visits>11</nb_visits>
+ <nb_actions>15</nb_actions>
+ <max_actions>2</max_actions>
+ <sum_visit_length>4</sum_visit_length>
+ <bounce_count>7</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>10</sum_daily_nb_users>
+ <idvisitor>b3daa77b4c04a955</idvisitor>
+ </row>
+ <row>
+ <label>user2</label>
+ <nb_visits>21</nb_visits>
+ <nb_actions>29</nb_actions>
+ <max_actions>2</max_actions>
+ <sum_visit_length>8</sum_visit_length>
+ <bounce_count>13</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>20</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>20</sum_daily_nb_users>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+ <row>
+ <label>user3</label>
+ <nb_visits>31</nb_visits>
+ <nb_actions>44</nb_actions>
+ <max_actions>3</max_actions>
+ <sum_visit_length>12</sum_visit_length>
+ <bounce_count>19</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>30</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>30</sum_daily_nb_users>
+ <idvisitor>0b7f849446d33835</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_day.xml b/plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_day.xml
new file mode 100644
index 0000000000..52fcd98131
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_day.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user2</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+ <row>
+ <label>user3</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>0b7f849446d33835</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_range.xml b/plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_range.xml
new file mode 100644
index 0000000000..9545aadbb7
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test_limit__UserId.getUsers_range.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user2</label>
+ <nb_visits>21</nb_visits>
+ <nb_actions>29</nb_actions>
+ <max_actions>2</max_actions>
+ <sum_visit_length>8</sum_visit_length>
+ <bounce_count>13</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>20</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>20</sum_daily_nb_users>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+ <row>
+ <label>user1</label>
+ <nb_visits>11</nb_visits>
+ <nb_actions>15</nb_actions>
+ <max_actions>2</max_actions>
+ <sum_visit_length>4</sum_visit_length>
+ <bounce_count>7</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>10</sum_daily_nb_users>
+ <idvisitor>b3daa77b4c04a955</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_day.xml b/plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_day.xml
new file mode 100644
index 0000000000..ac2a60152a
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_day.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user2</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <nb_users>1</nb_users>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_range.xml b/plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_range.xml
new file mode 100644
index 0000000000..ec3854dfb3
--- /dev/null
+++ b/plugins/UserId/tests/System/expected/test_searchByUserId__UserId.getUsers_range.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>user2</label>
+ <nb_visits>21</nb_visits>
+ <nb_actions>29</nb_actions>
+ <max_actions>2</max_actions>
+ <sum_visit_length>8</sum_visit_length>
+ <bounce_count>13</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>20</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>20</sum_daily_nb_users>
+ <idvisitor>a1881c06eec96db9</idvisitor>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/UserLanguage/lang/nl.json b/plugins/UserLanguage/lang/nl.json
index 9fc58a90a1..308e113701 100644
--- a/plugins/UserLanguage/lang/nl.json
+++ b/plugins/UserLanguage/lang/nl.json
@@ -1,7 +1,7 @@
{
"UserLanguage": {
"BrowserLanguage": "Browsertaal",
- "LanguageCode": "Taal code",
+ "LanguageCode": "Taalcode",
"PluginDescription": "Toont de taal die gebruikt wordt door browsers van uw bezoekers."
}
} \ No newline at end of file
diff --git a/plugins/UserLanguage/lang/sq.json b/plugins/UserLanguage/lang/sq.json
index 4c35237002..83ee7ab2d1 100644
--- a/plugins/UserLanguage/lang/sq.json
+++ b/plugins/UserLanguage/lang/sq.json
@@ -1,6 +1,7 @@
{
"UserLanguage": {
"BrowserLanguage": "Gjuhë shfletuesi",
- "LanguageCode": "Kod Gjuhe"
+ "LanguageCode": "Kod Gjuhe",
+ "PluginDescription": "Raporton gjuhën e përdorur nga shfletuesit e vizitorëve tuaj."
}
} \ No newline at end of file
diff --git a/plugins/UserLanguage/lang/uk.json b/plugins/UserLanguage/lang/uk.json
index 72fd7b22e1..0334cf2703 100644
--- a/plugins/UserLanguage/lang/uk.json
+++ b/plugins/UserLanguage/lang/uk.json
@@ -1,5 +1,7 @@
{
"UserLanguage": {
- "LanguageCode": "Код мови"
+ "BrowserLanguage": "Мова браузеру",
+ "LanguageCode": "Код мови",
+ "PluginDescription": "Повідомляє про мови, які використовуються у відвідувачів в браузері"
}
} \ No newline at end of file
diff --git a/plugins/UserLanguage/lang/vi.json b/plugins/UserLanguage/lang/vi.json
index 69321e4fa5..bc46f37b56 100644
--- a/plugins/UserLanguage/lang/vi.json
+++ b/plugins/UserLanguage/lang/vi.json
@@ -1,6 +1,7 @@
{
"UserLanguage": {
"BrowserLanguage": "Ngôn ngữ trình duyệt",
- "LanguageCode": "Mã ngôn ngữ"
+ "LanguageCode": "Mã ngôn ngữ",
+ "PluginDescription": "Các báo cáo ngôn ngữ được sử dụng bởi trình duyệt người dùng của bạn."
}
} \ No newline at end of file
diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php
index 921d7a035c..189b6f58dd 100644
--- a/plugins/UsersManager/Controller.php
+++ b/plugins/UsersManager/Controller.php
@@ -83,7 +83,7 @@ class Controller extends ControllerAdmin
}
}
- // we dont want to display the user currently logged so that the user can't change his settings from admin to view...
+ // we don't want to display the user currently logged so that the user can't change his settings from admin to view...
$currentlyLogged = Piwik::getCurrentUserLogin();
$usersLogin = Request::processRequest('UsersManager.getUsersLogin');
foreach ($usersLogin as $login) {
diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php
index 7e3bd11a63..b8840276d4 100644
--- a/plugins/UsersManager/UsersManager.php
+++ b/plugins/UsersManager/UsersManager.php
@@ -21,7 +21,6 @@ use Piwik\SettingsPiwik;
class UsersManager extends \Piwik\Plugin
{
const PASSWORD_MIN_LENGTH = 6;
- const PASSWORD_MAX_LENGTH = 80;
/**
* @see Piwik\Plugin::registerEvents
@@ -124,7 +123,7 @@ class UsersManager extends \Piwik\Plugin
$l = strlen($input);
- return $l >= self::PASSWORD_MIN_LENGTH && $l <= self::PASSWORD_MAX_LENGTH;
+ return $l >= self::PASSWORD_MIN_LENGTH;
}
public static function checkPassword($password)
@@ -148,8 +147,8 @@ class UsersManager extends \Piwik\Plugin
Piwik::postEvent('UsersManager.checkPassword', array($password));
if (!self::isValidPasswordString($password)) {
- throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidPassword', array(self::PASSWORD_MIN_LENGTH,
- self::PASSWORD_MAX_LENGTH)));
+ throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidPassword', array(self::PASSWORD_MIN_LENGTH
+ )));
}
}
diff --git a/plugins/UsersManager/lang/ar.json b/plugins/UsersManager/lang/ar.json
index 9ccbc9fb4d..c9d67f03da 100644
--- a/plugins/UsersManager/lang/ar.json
+++ b/plugins/UsersManager/lang/ar.json
@@ -13,7 +13,6 @@
"ExceptionEditAnonymous": "لا يمكن تحرير أو حذف المستخدم \"مجهول\"، فهو يستخدم من قبل Piwik لتعريف المستخدم الذي لم يقم بتسجيل الدخول بعد. على سبيل المثال، يمكنك جعل صفحة الإحصائيات عامة من خلال منح المستخدم \"مجهول\" صلاحيات \"المشاهدة\".",
"ExceptionEmailExists": "المستخدم بعنوان البريد '%s' موجود مسبقاً.",
"ExceptionInvalidEmail": "صيغة البريد الإلكتروني غير صحيحة",
- "ExceptionInvalidPassword": "يجب أن يكون طول كلمة المرور بين %1$s و %2$s رمزاً.",
"ExceptionPasswordMD5HashExpected": "يتوقع UsersManager.getTokenAuth كلمة مرور مشفرة باستخدام MD5 (طولها 32 رمزاً). الرجاء استدعاء الدالة md5() لكلمة المرور قبل استدعاء هذه الدالة.",
"ExceptionUserDoesNotExist": "المستخدم '%s' غير موجود.",
"ExcludeVisitsViaCookie": "استثني زياراتك باستخدام Cookies",
diff --git a/plugins/UsersManager/lang/be.json b/plugins/UsersManager/lang/be.json
index 717bab0ab3..8a6ae2f08c 100644
--- a/plugins/UsersManager/lang/be.json
+++ b/plugins/UsersManager/lang/be.json
@@ -14,7 +14,6 @@
"ExceptionEditAnonymous": "Ананімны карыстач не можа быць выдалены. Ён неабходзен Piwik для ідэнтыфікацыі карыстачоў, якія не ўвайшлі ў сістэму. Дапушчальна, вы можаце зрабіць статыстыку публічнай, падаючы права 'Прагляд' ананімнаму карыстачу.",
"ExceptionEmailExists": "Карыстач з Email '%s' ужо існуе.",
"ExceptionInvalidEmail": "Email няправільнага фармату",
- "ExceptionInvalidPassword": "Даўжыня пароля павінна быць паміж %1$s і %2$s знакаў.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth партабуе MD5-хэшаваны пароль ( даужыней ў 32 знака). Калі ласка, запытайце md5() функцыю перад выклікам гэтага метаду.",
"ExceptionUserDoesNotExist": "Карыстач '%s' не існуе.",
"ExcludeVisitsViaCookie": "Сключыць вашыя наведванні выкарыстоўваючы cookie",
diff --git a/plugins/UsersManager/lang/bg.json b/plugins/UsersManager/lang/bg.json
index 855b45c501..54d7670ccd 100644
--- a/plugins/UsersManager/lang/bg.json
+++ b/plugins/UsersManager/lang/bg.json
@@ -19,7 +19,6 @@
"ExceptionEditAnonymous": "Анонимният потребител не може да бъде редактиран или изтрит. Piwik по този начин дефинира в система потребители, които не са влезли. Например можете да направите данните на брояча ви публични, като зададете 'преглед' права на 'анонимен' потребител.",
"ExceptionEmailExists": "Потребител с имейл '%s' вече съществува.",
"ExceptionInvalidEmail": "Е-пощата, който сте въвели не е валиден.",
- "ExceptionInvalidPassword": "Дължината на паролата трябва да бъде между %1$s и %2$s символа.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth очаква MD5-хеширана парола (32 символа дълъг низ). Моля, извикайте md5() функцията на паролата преди да извикате този метод.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Премахването на права на привилигирован потребител за потребител '%s' не е възможно.",
"ExceptionUserDoesNotExist": "Потребителя '%s' не съществува.",
diff --git a/plugins/UsersManager/lang/ca.json b/plugins/UsersManager/lang/ca.json
index 9b0ec65585..6865424075 100644
--- a/plugins/UsersManager/lang/ca.json
+++ b/plugins/UsersManager/lang/ca.json
@@ -16,7 +16,6 @@
"ExceptionEditAnonymous": "L'usuari anònim no es pot editar o esborrar. El Piwik el fa servir per als usuaris que no han iniciat encara la sessió. Per exemple, podeu fer públiques les vostres estadístiques garantint el permís 'vista' a l'usuari 'anonymous' (anònim).",
"ExceptionEmailExists": "La direcció de correu-e '%s' ja està en un altre compte.",
"ExceptionInvalidEmail": "La direcció de correu-e no té un format vàlid.",
- "ExceptionInvalidPassword": "La longitud de la contrasenya ha de estar entre %1$s i %2$s caràcters.",
"ExceptionUserDoesNotExist": "L'usuari '%s' no existeix.",
"ExcludeVisitsViaCookie": "Exclou les teues visites utilitzant cookies",
"ForAnonymousUsersReportDateToLoadByDefault": "Pels usuaris anònims, introduïu la data dels informes per defecte",
diff --git a/plugins/UsersManager/lang/cs.json b/plugins/UsersManager/lang/cs.json
index 8cae69b171..9fdb38e570 100644
--- a/plugins/UsersManager/lang/cs.json
+++ b/plugins/UsersManager/lang/cs.json
@@ -26,7 +26,7 @@
"ExceptionEmailExists": "Uživatel s e-mailem '%s' již existuje.",
"ExceptionInvalidEmail": "E-mail nemá platný formát.",
"ExceptionInvalidLoginFormat": "Uživatelské jméno musí být v rozmezí %1$s až %2$s znaků a obsahovat pouze písmena, čísla, či následující znaky '_' '-' '.' '@' '+'",
- "ExceptionInvalidPassword": "Délka hesla musí být mezi %1$s a %2$s znaky.",
+ "ExceptionInvalidPassword": "Délka hesla msí být větší, než %1$s znaků.",
"ExceptionLoginExists": "Uživatel '%s' již existuje.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth očekává heslo v podobě MD5 hashe (32 znaků dlouhého řetězce). Prosím nejprve zavoltejte metodu md5() na tomto hesle.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Odebrání super-uživatelského přístupu uživateli %s není možné.",
diff --git a/plugins/UsersManager/lang/da.json b/plugins/UsersManager/lang/da.json
index 3cac5ca9ea..22db459f67 100644
--- a/plugins/UsersManager/lang/da.json
+++ b/plugins/UsersManager/lang/da.json
@@ -22,7 +22,6 @@
"ExceptionEditAnonymous": "Anonyme brugere kan ikke redigeres eller slettet. Anvendes af Piwik til at definere en bruger, som ikke er blevet logget på endnu. F. eks. kan du gøre statistikken offentlig ved at give 'se' adgang til 'anonym' bruger",
"ExceptionEmailExists": "Bruger med e-mail '%s' findes allerede.",
"ExceptionInvalidEmail": "E-mailadressen er ikke i gyldigt format.",
- "ExceptionInvalidPassword": "Længden på adgangskoden skal være mellem %1$s og %2$s tegn.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth forventer et MD5-hashet kodeord (32 tegn lang streng). Kald md5() funktionen på kodeordet, før denne metode kaldes.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Det er ikke muligt at fjerne superbruger adgang f0r brugeren '%s'.",
"ExceptionSuperUserAccess": "Brugeren har superbrugeradgang og har allerede tilladelse til at få adgang til og ændre alle hjemmesider i Piwik. Du kan fjerne superbrugeradgang fra brugeren, og prøve igen.",
diff --git a/plugins/UsersManager/lang/de.json b/plugins/UsersManager/lang/de.json
index fe2af9b777..4aec094e01 100644
--- a/plugins/UsersManager/lang/de.json
+++ b/plugins/UsersManager/lang/de.json
@@ -13,6 +13,7 @@
"ClickHereToSetTheCookieOnDomain": "Klicken Sie hier, um ein Cookie zu setzen, damit Ihre Besuche auf Websites ignoriert werden, die Piwik auf %s trackt.",
"ConfirmGrantSuperUserAccess": "Wollen Sie wirklich '%s' Hauptadministrator-Berechtigungen gewähren? Warnung: Der Nutzer wird Zugriff zu allen Websites haben und in der Lage sein, administrative Tätigkeiten durchzuführen.",
"ConfirmProhibitMySuperUserAccess": "%s, wollen Sie wirklich ihre eigenen Hauptadministrator-Berechtigungen entfernen? Sie werden alle Berechtigungen und Zugriff zu allen Websites verlieren und von Piwik abgemeldet werden.",
+ "ConfirmProhibitOtherUsersSuperUserAccess": "Wollen Sie wirklich dem Nutzer '%s' Hauptadministrator-Berechtigungen entziehen? Der Nutzer wird alle Berechtigungen und Zugriff zu allen Webseiten verlieren. Bitte vergeben Sie danach, wenn notwendig, die Zugriffsberechtigung zu benötigten Webseiten.",
"DeleteConfirm": "Soll der Benutzer %s wirklich gelöscht werden?",
"Email": "E-Mail",
"EmailYourAdministrator": "%1$sBitte berichten Sie diesen Fehler ihrem Administrator via E-Mail%2$s.",
@@ -25,7 +26,7 @@
"ExceptionEmailExists": "Ein Benutzer mit der E-Mail-Adresse '%s' existiert bereits.",
"ExceptionInvalidEmail": "Die E-Mail-Adresse hat ein ungültiges Format.",
"ExceptionInvalidLoginFormat": "Der Benutzername muss zwischen %1$s und %2$s Zeichen lang sein und darf nur Buchstaben, Zahlen oder die Zeichen '_', '-', '.', '@' oder '+' enthalten.",
- "ExceptionInvalidPassword": "Das Passwort muss zwischen %1$s und %2$s Zeichen lang sein.",
+ "ExceptionInvalidPassword": "Das Passwort muss mindestens %1$s Zeichen lang sein.",
"ExceptionLoginExists": "Der Benutzername '%s' existiert bereits.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth erwartet ein MD5-verschlüsseltes Passwort (32 Zeichen). Bitte wenden Sie die md5()-Funktion auf das Passwort an, bevor Sie diese Methode aufrufen.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Es ist nicht möglich die Hauptadministrator-Berechtigung von Benutzer '%s' zu entfernen.",
@@ -42,6 +43,7 @@
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Wenn Sie Ihr Passwort ändern möchten, geben Sie ein neues ein. Ansonsten lassen Sie dieses Feld frei.",
"InjectedHostCannotChangePwd": "Ihr Besuch erfolgt aktuell durch einen unbekannten Hostnamen (%1$s). Es ist somit nicht möglich Ihr Kennwort zu ändert bis dieser Umstand behoben ist.",
"LastSeen": "Zuletzt gesehen",
+ "MainDescription": "Hier kann der Zugriff auf bestimmte Webseiten erteilt werden. Es ist auch möglich, Zugriff auf alle Webseiten zu erlauben, in dem Sie \"Für alle Webseiten anwenden\" im Webseitenselektor anwählen.",
"ManageAccess": "Zugriffsverwaltung",
"MenuAnonymousUserSettings": "Gast-Besucher (\"anonymous\") Einstellungen",
"MenuUsers": "Benutzer",
diff --git a/plugins/UsersManager/lang/el.json b/plugins/UsersManager/lang/el.json
index b4430f85ee..f91b549e61 100644
--- a/plugins/UsersManager/lang/el.json
+++ b/plugins/UsersManager/lang/el.json
@@ -26,7 +26,7 @@
"ExceptionEmailExists": "Χρήστης με την ηλεκτρονική διεύθυνση «%s» υπάρχει ήδη.",
"ExceptionInvalidEmail": "Η ηλεκτρονική διεύθυνση δεν φαίνεται να είναι σωστή.",
"ExceptionInvalidLoginFormat": "Το όνομα χρήστη πρέπει να έχει αριθμό χαρακτήρων από %1$s έως %2$s και να περιέχει μόνο γράμματα, αριθμούς, ή τους χαρακτήρες '_' ή '-' ή '.' ή '@' ή '+'",
- "ExceptionInvalidPassword": "Το μήκος του κωδικού πρόσβασης πρέπει να είναι μεταξύ %1$s και %2$s χαρακτήρες.",
+ "ExceptionInvalidPassword": "Το μέγεθος του συνθηματικού πρέπει να είναι μεγαλύτερο από %1$s χαρακτήρες.",
"ExceptionLoginExists": "Το όνομα χρήστη '%s' υπάρχει ήδη.",
"ExceptionPasswordMD5HashExpected": "Το UsersManager.getTokenAuth αναμένει έναν κωδικό πρόσβασης ως αριθμό MD5 (μήκος 32 χαρακτήρων). Ανακαλέστε τη συνάρτηση md5() στον κωδικό πρόσβασης πριν ανακαλέσετε τη μέθοδο.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Η αφαίρεση του δικαιώματος Υπερ-Χρήστη από το χρήστη '%s' δεν είναι δυνατή.",
diff --git a/plugins/UsersManager/lang/en.json b/plugins/UsersManager/lang/en.json
index 7111d6acb0..6c9f8cb170 100644
--- a/plugins/UsersManager/lang/en.json
+++ b/plugins/UsersManager/lang/en.json
@@ -26,7 +26,7 @@
"ExceptionEmailExists": "User with email '%s' already exists.",
"ExceptionInvalidEmail": "The email doesn't have a valid format.",
"ExceptionInvalidLoginFormat": "The username must be between %1$s and %2$s characters long and contain only letters, numbers, or the characters '_' or '-' or '.' or '@' or '+'",
- "ExceptionInvalidPassword": "The password length must be between %1$s and %2$s characters.",
+ "ExceptionInvalidPassword": "The password length must be greater than %1$s characters.",
"ExceptionLoginExists": "Username '%s' already exists.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth is expecting a MD5-hashed password (32 chars long string). Please call the md5() function on the password before calling this method.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Removing the Super User access from user '%s' is not possible.",
diff --git a/plugins/UsersManager/lang/es.json b/plugins/UsersManager/lang/es.json
index 99a253b942..fb5557dfb7 100644
--- a/plugins/UsersManager/lang/es.json
+++ b/plugins/UsersManager/lang/es.json
@@ -7,6 +7,7 @@
"AnonymousUserHasViewAccess": "Nota: el usuario %1$s tiene acceso para %2$s en este sitio de internet.",
"AnonymousUserHasViewAccess2": "Sus informes de análisis y la información de sus visitantes son vistos públicamente.",
"ApplyToAllWebsites": "Aplicar a todos los sitios",
+ "ChangeAllConfirm": "¿Está seguro que desea otorgar a '%s' acceso a todos sus sitios de internet?",
"ChangePasswordConfirm": "Cambiar la contraseña también cambiará el token_auth del usuario. ¿Desea continuar?",
"ClickHereToDeleteTheCookie": "Haga clic aquí para borrar la cookie y permitir que Piwik realice un seguimiento de sus visitas",
"ClickHereToSetTheCookieOnDomain": "Haga clic aquí para configurar la cookie que excluirá sus visitas a los sitios de internet a los que Piwik realiza seguimiento en %s",
@@ -15,6 +16,7 @@
"DeleteConfirm": "¿Está seguro que desea eliminar al usuario %s?",
"Email": "Correo electrónico",
"EmailYourAdministrator": "%1$sEnviar un correo electrónico a su administrador acerca de este problema%2$s.",
+ "EnterUsernameOrEmail": "Introduce usuario o correo electrónico",
"ExceptionAccessValues": "El parámetro de acceso debe tener uno de los siguientes valores: [ %s ]",
"ExceptionAdminAnonymous": "No puede concederle el acceso de 'administrador' a un usuario 'anónimo'.",
"ExceptionDeleteDoesNotExist": "El usuario '%s' no existe, por lo tanto, no puede ser borrado.",
@@ -22,14 +24,19 @@
"ExceptionEditAnonymous": "El usuario anónimo no puede ser borrado o editado. Piwik lo utiliza para definir un usuario que no se ha conectado todavía. Por ejemplo, puede hacer públicas sus estadísticas mediante el acceso 'ver' al usuario 'anónimo'.",
"ExceptionEmailExists": "Ya existe un usuario con el correo electrónico '%s'.",
"ExceptionInvalidEmail": "El correo electrónico no tiene un formato válido.",
- "ExceptionInvalidPassword": "La extensión de la contraseña debe ser entre %1$s y %2$s caracteres.",
+ "ExceptionInvalidLoginFormat": "El usuario debe tener entre %1$s y %2$s caracteres y estar formado por letras, números o alguno de estos caracteres '_' o '-' o '.' o '@' o '+'",
+ "ExceptionInvalidPassword": "La extensión de la contraseña debe ser superior a los %1$s caracteres.",
+ "ExceptionLoginExists": "El usuario '%s' ya existe.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth está a la espera de una contraseña con algoritmo hash MD5 (32 caracteres de longitud). Por favor demande la función md5() en la contraseña antes de reclamar a este método.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Eliminar el acceso Super Usuario del usuario '%s' no es posible.",
"ExceptionSuperUserAccess": "Este usuario tiene acceso Super Usuario y ya posee permiso para acceder y modificar todos los sitios de internet de Piwik. Puede eliminar el acceso Super Usuario a este usuario y volver a probar.",
"ExceptionUserDoesNotExist": "El usuario '%s' no existe.",
"ExceptionYouMustGrantSuperUserAccessFirst": "Debe haber al menos un usuario con acceso Super Usuario. Por favor conceda el acceso Super Usuario a otro usuario.",
+ "ExceptionUserHasViewAccessAlready": "Éste usuario ya tiene acceso al sitio web.",
+ "ExceptionNoValueForUsernameOrEmail": "Por favor introduce usuario o correo electrónico.",
"ExcludeVisitsViaCookie": "Excluir sus visitas usando una cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Para los usuarios anónimos, fecha del informe a cargar por defecto",
+ "GiveViewAccess": "Otorgar acceso a la visualización",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Si desea cambiar la contraseña ingrese una nueva. Si no, déjelo vacío.",
"InjectedHostCannotChangePwd": "Está actualmente visitando con un medio desconocido (%1$s). No puede cambiar su contraseña hasta que el problema esté soluionado.",
"LastSeen": "Última visita",
diff --git a/plugins/UsersManager/lang/fa.json b/plugins/UsersManager/lang/fa.json
index 199137d411..a0284e26bc 100644
--- a/plugins/UsersManager/lang/fa.json
+++ b/plugins/UsersManager/lang/fa.json
@@ -3,6 +3,7 @@
"AddUser": "ایجاد یک کاربر جدید",
"Alias": "نام مستعار",
"AllWebsites": "همه وب سایت ها",
+ "AnonymousUserHasViewAccess": "توجه: کاربر %1$s در%2$s دسترسی به این وب سایت می باشد.",
"AnonymousUserHasViewAccess2": "گزارش تجزیه و تحلیل و اطلاعات بازدید کنندگان خود را علنی قابل مشاهده است.",
"ApplyToAllWebsites": "اعمال بر روی تمام وبسایت ها",
"ChangePasswordConfirm": "تغییر رمز عبور به نیز token_auth کاربر را تغییر دهید. آیا شما واقعا میخواهید ادامه دهید؟",
@@ -17,7 +18,6 @@
"ExceptionEditAnonymous": "کاربر گمنامی را نمی توان به ویرایش و یا حذف شده است. توسط Piwik مورد استفاده قرار می گیرد برای تعریف یک کاربر است که هنوز وارد سایت نشده هنوز. به عنوان مثال، شما می توانید آمار خود را عمومی و با اعطای 'مشاهده' دسترسی به \"کاربر ناشناس.",
"ExceptionEmailExists": "کاربر با ایمیل \"%s\" هم اکنون وجود دارد.",
"ExceptionInvalidEmail": "ایمیل به فرمت معتبر نیست.",
- "ExceptionInvalidPassword": "اندازه رمزعبور باید بین %1$s و %2$s کاراکتر باشد.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth انتظار رمز عبور MD5-hashed (32 کاراکتر رشته طولانی). لطفا تماس بگیرید تابع md5 () از رمز عبور را قبل از فراخوانی این روش.",
"ExceptionUserDoesNotExist": "کاربر \"%s\" وجود ندارد.",
"ExcludeVisitsViaCookie": "محروم بازدیدکننده داشته است خود را با استفاده از کوکی برای نگهداری اطلاعات استفاده می",
diff --git a/plugins/UsersManager/lang/fi.json b/plugins/UsersManager/lang/fi.json
index 9fb8873852..a9a274d80b 100644
--- a/plugins/UsersManager/lang/fi.json
+++ b/plugins/UsersManager/lang/fi.json
@@ -25,7 +25,6 @@
"ExceptionEmailExists": "Käyttäjä sähköpostilla '%s' on jo olemassa.",
"ExceptionInvalidEmail": "Sähköposti ei ole kelvollinen.",
"ExceptionInvalidLoginFormat": "Käyttäjänimen pitää olla %1$s-%2$s merkkiä pitkä ja saa sisältää vain kirjaimia (ei ääkkösiä), numeroita tai '_' or '-' or '.' or '@' or '+'",
- "ExceptionInvalidPassword": "Salasanan pituuden täytyy olla %1$s ja %2$s välillä.",
"ExceptionLoginExists": "Käyttäjätunnus '%s' on jo olemassa.",
"ExceptionPasswordMD5HashExpected": "UserManager.getTokenAuth haluaa MD5-tiivisteen salasanastasi (32 merkkiä pitkä merkkijono). Kutsu md5()-funktiota salasanallesi ennen kutsumista.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Superkäyttäjäoikeuksien poistaminen käyttäjältä '%s' ei ole mahdollista.",
diff --git a/plugins/UsersManager/lang/fr.json b/plugins/UsersManager/lang/fr.json
index d0f0719220..284efeb145 100644
--- a/plugins/UsersManager/lang/fr.json
+++ b/plugins/UsersManager/lang/fr.json
@@ -7,11 +7,13 @@
"AnonymousUserHasViewAccess": "Note : l'utilisateur %1$s a un accès en %2$s à ce site web.",
"AnonymousUserHasViewAccess2": "Vos rapports d'analyse et les informations de vos visiteurs sont visibles publiquement.",
"ApplyToAllWebsites": "Appliquer à tous les sites",
+ "ChangeAllConfirm": "Êtes cous certain(e) de vouloir accorder l'accès \"%s\" à l'ensemble des sites web?",
"ChangePasswordConfirm": "Modifier le mot de passe modifiera aussi la clef d'authentification des utilisateurs. Voulez-vous vraiment continuer?",
"ClickHereToDeleteTheCookie": "Cliquez ici pour supprimer le cookie et pour que Piwik prenne en compte vos visites",
"ClickHereToSetTheCookieOnDomain": "Cliquez ici pour mettre en place un cookie qui exclura vos visites sur ceux de vos sites web qui sont analysés par Piwik sur %s",
"ConfirmGrantSuperUserAccess": "Voulez vous vraiment donner un accès super utilisateur à '%s'? Attention : cet utilisateur va avoir accès à tous les sites web et sera capable d'effectuer des tâches administratives.",
"ConfirmProhibitMySuperUserAccess": "%s, voulez-vous vraiment supprimer votre accès super utilisateur? Vous allez perdre toutes les permissions et accès aux sites web et serez déconnecté(e) de Piwik.",
+ "ConfirmProhibitOtherUsersSuperUserAccess": "Souhaitez vous réellement retirer l'accès super utilisateur à \"%s\"? L'utilisateur va perdre toutes les permissions d'accès à l'ensemble des sites web. Assurez vous de lui accorder accès aux sites web requis après si nécessaire.",
"DeleteConfirm": "Êtes-vous sûr de vouloir supprimer l'utilisateur %s?",
"Email": "Courriel",
"EmailYourAdministrator": "%1$sEnvoyez un courriel à votre administrateur à propos de ce problème%2$s.",
@@ -23,7 +25,8 @@
"ExceptionEditAnonymous": "L'utilisateur Anonyme ne peut être édité ou supprimé. Il est utilisé pour identifier un utilisateur qui ne s'est pas encore connecté. Par exemple vous pouvez rendre vos statistiques publiques en accordant l'accès 'vue' à l'utilisateur 'anonyme'.",
"ExceptionEmailExists": "L'utilisateur avec l'e-mail '%s' existe déjà.",
"ExceptionInvalidEmail": "L'adresse courriel est invalide.",
- "ExceptionInvalidPassword": "La longueur du mot de passe doit être entre %1$s et %2$s caractères.",
+ "ExceptionInvalidLoginFormat": "Le nom d'utilisateur doit contenir entre %1$s et %2$s caractères et être composé uniquement de lettres, chiffres, ou les caractères '_' ou '-' ou '.' ou '@' ou '+'",
+ "ExceptionInvalidPassword": "La longueur du mot de passe doit être supérieure à %1$s caractères.",
"ExceptionLoginExists": "Le nom d'usager \"%s\" existe déjà.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth attend un mot de passe haché en MD5 (chaine de 32 caractères). Veuillez appeler la fonction md5() sur le mot de passe avant d'appeler cette méthode.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Retirer l'accès Super Utilisateur à l'utilisateur \"%s\" est impossible.",
@@ -40,6 +43,7 @@
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Si vous souhaitez modifier votre mot de passe tapez en un nouveau. Sinon laissez le champ vide.",
"InjectedHostCannotChangePwd": "Vous êtes actuellement connecté depuis un hôte inconnu (%1$s). Vous ne pourrez modifier votre mot de passe tant que ce problème ne sera pas corrigé.",
"LastSeen": "Vu pour la dernière fois",
+ "MainDescription": "Choisissez quels utilisateurs ont accès à quels sites. Vous pouvez aussi accorder accès à tous les sites d'un seul coup en sélectionnant \"Appliquer à tous les sites web\" dans le sélecteur de sites web.",
"ManageAccess": "Gestion des accès utilisateurs",
"MenuAnonymousUserSettings": "Paramètres utilisateurs anonymes",
"MenuUsers": "Utilisateurs",
diff --git a/plugins/UsersManager/lang/id.json b/plugins/UsersManager/lang/id.json
index f7d1755dd0..4dfef0638b 100644
--- a/plugins/UsersManager/lang/id.json
+++ b/plugins/UsersManager/lang/id.json
@@ -18,7 +18,6 @@
"ExceptionEditAnonymous": "Pengguna anonim tidak dapat dihapus atau disunting. Piwik menggunakan pengguna ini untuk menjelaskan pengguna yang belum masuk. Misalnya, Anda dapat membuat statistik publik Anda dengan memberi hak `Tampil` untuk pengguna 'anonim'.",
"ExceptionEmailExists": "Pengguna dengan surel '%s' telah tersedia.",
"ExceptionInvalidEmail": "Surel tidak memiliki bentuk sahih.",
- "ExceptionInvalidPassword": "Panjang sandi harus antara %1$s dan %2$s karakter.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth membutuhkan sandi acak MD5 (32 karakter larik panjang). Silakan panggil fungsi md5() dalam sandi sebelum memanggil metode ini.",
"ExceptionUserDoesNotExist": "Pengguan '%s' tida ada.",
"ExcludeVisitsViaCookie": "Kecualikan kunjungan Anda menggunakan kuki",
diff --git a/plugins/UsersManager/lang/it.json b/plugins/UsersManager/lang/it.json
index aad1358da8..bcf3d01289 100644
--- a/plugins/UsersManager/lang/it.json
+++ b/plugins/UsersManager/lang/it.json
@@ -26,7 +26,7 @@
"ExceptionEmailExists": "Utente con l'e-mail '%s' è già esistente.",
"ExceptionInvalidEmail": "L'e-mail inserita non è valida.",
"ExceptionInvalidLoginFormat": "Il nome utente deve essere lungo tra %1$s e %2$s caratteri e contenere solo lettere, numeri o i caratteri '_' o '-' o '.' o '@' o '+'",
- "ExceptionInvalidPassword": "La lunghezza della password deve essere tra %1$s e %2$s caratteri.",
+ "ExceptionInvalidPassword": "La lunghezza della password deve essere maggiore di %1$s caratteri.",
"ExceptionLoginExists": "Il nome utente '%s' esiste già.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth si aspetta una password MD5 hash (stringa lunga 32 caratteri). Si prega di richiamare la funzione md5() sulla password prima di richiamare questo metodo.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "È impossibile togliere l'accesso Super User all'utente '%s'.",
diff --git a/plugins/UsersManager/lang/ja.json b/plugins/UsersManager/lang/ja.json
index a6943e10e9..fec124fbaa 100644
--- a/plugins/UsersManager/lang/ja.json
+++ b/plugins/UsersManager/lang/ja.json
@@ -22,7 +22,6 @@
"ExceptionEditAnonymous": "anonymous ユーザーは、Piwik がログインしていないユーザーを定義するために使用するため、編集や削除はできません。 例えば、'anonymous' ユーザーに '表示' 権限を与えることによって、統計をパブリックにすることができます。",
"ExceptionEmailExists": "メールアドレスが '%s' のユーザーはすでに存在します。",
"ExceptionInvalidEmail": "メールアドレスが有効な形式ではありません。",
- "ExceptionInvalidPassword": "パスワードの長さは %1$s〜%2$s 文字である必要があります。",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth は、MD5 ハッシュ値のパスワード(32文字長の文字列)を想定しています。 このメソッドをコールする前に、パスワードに対して md5() 関数をコールしてください。",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "スーパーユーザーアクセスをユーザー '%s' から削除することができません。",
"ExceptionSuperUserAccess": "このユーザーはスーパーユーザーアクセス権を持ち、既に Piwik の全ウェブサイトへのアクセスおよび修正の権限を持っています。このユーザーからスーパーユーザーアクセス権を削除し、再度試すことができます。",
diff --git a/plugins/UsersManager/lang/ka.json b/plugins/UsersManager/lang/ka.json
index f31a9bea20..390ad537e2 100644
--- a/plugins/UsersManager/lang/ka.json
+++ b/plugins/UsersManager/lang/ka.json
@@ -4,7 +4,6 @@
"Alias": "ალიასი",
"AllWebsites": "ყველა ვებ საიტი",
"ApplyToAllWebsites": "ყველა ვებ საიტზე გამოყენება",
- "ChangeAllConfirm": "დარწმუნებული ხართ, რომ გსურთ შეცვალოთ '%s' უფლება ყველა ვებ საიტზე?",
"ClickHereToDeleteTheCookie": "დააწკაპუნეთ აქ, რომ წაშალოთ ქუქი და თქვენი ვიზიტების ტრეკირების საშუალება მისცეთ Piwik–ს",
"ClickHereToSetTheCookieOnDomain": "დააწკაპუნეთ აქ, რომ დანიშნოთ ქუქი, რომელიც გამორიცხავს Piwik–ის მიერ %s–ზე ტრეკირებულ თქვენს ვიზიტებს ვებ საიტებზე",
"DeleteConfirm": "დარწმუნებული ხართ, რომ გსურთ %s მომხმარებლის წაშლა?",
@@ -15,14 +14,11 @@
"ExceptionEditAnonymous": "ანონიმური მომხმარებლის რედაქტირება ან წაშლა შეუძლებელია. Piwik მას იყენებს იმ მომხმარებლის განსაზღვრისთვის, რომელიც ჯერ არ შესულა სისტემაში. მაგალითად, თქვენ შეგიძლიათ გახადოთ თქვენი სტატისტიკა საჯარო 'დათვალიერება' წვდომის 'ანონიმურ' მომხმარებელზე მინიჭებით.",
"ExceptionEmailExists": "მომხმარებელი '%s' ელ.ფოსტის მისამართით უკვე არსებობს.",
"ExceptionInvalidEmail": "ელ.ფოსტის მისამართი არის არამართებული ფორმატის.",
- "ExceptionInvalidLoginFormat": "მომხმარებლის სახელის სიმბოლოთა რაოდენობა უნდა იყოს %1$s–დან %2$s–მდე და შეიცავდეს მხოლოდ ასოებს, ციფრებს ან სიმბოლოებს '_' ან '-' ან '.' ან '@'",
- "ExceptionLoginExists": "მომხმარებელი '%s' უკვე არსებობს.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth მოითხოვს MD5-ჰეშირებულ პაროლს (32 სიმბოლოსგან შემდგარ სტრიქონი). გთხოვთ, მოსდეთ md5() ფუნქცია პაროლს ამ მეთოდის გამოძახებამდე.",
"ExceptionUserDoesNotExist": "მომხმარებელი '%s' არ არსებობს.",
"ExcludeVisitsViaCookie": "გამორიცხეთ თქვენი ვიზიტები ქუქიების გამოყენებით",
"ForAnonymousUsersReportDateToLoadByDefault": "ანონიმური მომხმარებლებისთვის, ნაგულისხმევად ჩასატვირთი რეპორტის თარიღი",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "თუ გსურთ პაროლის შეცვლა, აკრიფეთ ახალი. თუ არა, დატოვეთ ეს ველი ცარიელი.",
- "MainDescription": "გადაწყვიტეთ, რომელ მომხმარებელს როგორი Piwik წვდომა ექნება თქვენს ვებ საიტზე. ასევე შეგიძლიათ უფლებები დანიშნოთ ყველა ვებ საიტზე ერთბაშად.",
"ManageAccess": "წვდომის მართვა",
"MenuAnonymousUserSettings": "ანონიმური მომხმარებლის პარამეტრები",
"MenuUsers": "მომხმარებლები",
@@ -39,7 +35,7 @@
"UsersManagementMainDescription": "შექმენით ახალი მომხმარებელები ან განაახლეთ არსებული მომხმარებლები. შემდეგ ზემოთ შეგიძლიათ დაუნიშნოთ მათ უფლებები.",
"WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "როდესაც მომხმარებლები სისტემაში არ არიან შესული და ეწვევიან Piwik–ს, მათ უნდა შეძლონ წვდომა",
"YourUsernameCannotBeChanged": "თქვენი მომხმარებლის სახელის შეცვლა არ შეიძლება.",
- "YourVisitsAreIgnoredOnDomain": "%s Piwik–ის მიერ იგნორირებულია თქვენი ვიზიტები %s %s (თქვენს ბრაუზერში ნაპოვნია Piwik იგნორირების ქუქი).",
- "YourVisitsAreNotIgnored": "%sთქვენი ვიზიტები არ არის იგნორირებული Piwik–ის მიერ%s (Piwik იგნორირების ქუქი არ იქნა ნაპოვნი თქვენს ბრაუზერში)."
+ "YourVisitsAreIgnoredOnDomain": "%1$s Piwik–ის მიერ იგნორირებულია თქვენი ვიზიტები %2$s %3$s (თქვენს ბრაუზერში ნაპოვნია Piwik იგნორირების ქუქი).",
+ "YourVisitsAreNotIgnored": "%1$sთქვენი ვიზიტები არ არის იგნორირებული Piwik–ის მიერ%2$s (Piwik იგნორირების ქუქი არ იქნა ნაპოვნი თქვენს ბრაუზერში)."
}
} \ No newline at end of file
diff --git a/plugins/UsersManager/lang/ko.json b/plugins/UsersManager/lang/ko.json
index 1826f9914e..36ec99f57e 100644
--- a/plugins/UsersManager/lang/ko.json
+++ b/plugins/UsersManager/lang/ko.json
@@ -23,7 +23,6 @@
"ExceptionEditAnonymous": "익명 사용자는 편집이나 삭제를 할 수 없습니다. Piwik에서 아직 로그인하지 않은 사용자를 골라낼 때 사용하기 때문입니다. 예를 들어, '보기' 접근을 '익명' 사용자에게 주어서 당신의 상태를 공개할 수 있습니다.",
"ExceptionEmailExists": "'%s' 의 이메일을 가진 사용자는 이미 존재합니다.",
"ExceptionInvalidEmail": "이메일이 유효한 형식이 아닙니다.",
- "ExceptionInvalidPassword": "비밀번호 길이는 %1$s〜%2$s 문자이어야합니다.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth는 MD5 해시 값의 비밀번호 (32자 길이의 문자열)을 사용하고 있습니다. 이 메소드를 호출하기 전에 암호에 md5() 함수를 호출합니다.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "사용자 '%s'의 슈퍼 유저 권한 제거가 가능하지 않습니다.",
"ExceptionSuperUserAccess": "해당 사용자는 슈퍼 유저 권한을 가지고 있기에 Piwik 내 모든 웹사이트에 대해서 접근 가능하고 수정 역시 가능합니다. 해당 유저의 슈퍼 유저 권한을 제거한 후 다시 시도해보세요.",
diff --git a/plugins/UsersManager/lang/lt.json b/plugins/UsersManager/lang/lt.json
index a16a9f5f9a..2851165cf2 100644
--- a/plugins/UsersManager/lang/lt.json
+++ b/plugins/UsersManager/lang/lt.json
@@ -21,7 +21,6 @@
"ExceptionEditAnonymous": "Naudotojas 'anonimas' negali būti keičiamas ar šalinamas. Jis naudojamas nustatyti naudotoją, kuris dar neprisijungęs. Pavyzdžiui, Jūs galite padaryti savo statistinius duomenis viešais suteikdami 'matyti' teises naudotojui 'anonimas'.",
"ExceptionEmailExists": "Naudotojas su tokiu el. paštu '%s' jau yra.",
"ExceptionInvalidEmail": "Netinkamas el. pašto formatas.",
- "ExceptionInvalidPassword": "Slaptažodžio ilgis privalo būti tarp %1$s ir %2$s simbolių.",
"ExceptionLoginExists": "Naudotojo vardas \"%s\" jau yra.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Super naudotojo prieigos teisių pašalinimas iš naudotojo \"%s\" yra negalimas.",
"ExceptionUserDoesNotExist": "Naudotojas '%s' neegzistuoja.",
diff --git a/plugins/UsersManager/lang/lv.json b/plugins/UsersManager/lang/lv.json
index 4e21dca9b0..36db2ecb03 100644
--- a/plugins/UsersManager/lang/lv.json
+++ b/plugins/UsersManager/lang/lv.json
@@ -15,7 +15,6 @@
"ExceptionEditAnonymous": "Anonīmo lietotāju nav iespējams labot vai dzēst. Tas tiek izmantots, lai definētu lietotāju, kurš vēl nav pieteicies. Piemēram, Jūs varat publiskot statistiku atļaujot apskates pieeju anonīmajam lietotājam.",
"ExceptionEmailExists": "Lietotājs ar e-pasta adresi '%s' jau eksistē.",
"ExceptionInvalidEmail": "E-pasta adresei nav pareizs formāts",
- "ExceptionInvalidPassword": "Parolei jābūt garumā no %1$s līdz %2$s simboliem.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth sagaida MD5 kodētu paroli (32 simbolu garu tekstu). Lūdzu pielietojiet md5() metodi parolei pirms izsaucat šo metodi.",
"ExceptionUserDoesNotExist": "Lietotājs '%s' neeksistē.",
"ExcludeVisitsViaCookie": "Neiekļaut Jūsu pašu apmeklējumus izmantojot sīkdatni",
diff --git a/plugins/UsersManager/lang/nb.json b/plugins/UsersManager/lang/nb.json
index 718a8855e5..2473f5f54c 100644
--- a/plugins/UsersManager/lang/nb.json
+++ b/plugins/UsersManager/lang/nb.json
@@ -23,7 +23,6 @@
"ExceptionEditAnonymous": "Den anonyme brukeren kan ikke bli redigert eller slettet. Den blir brukt av Piwik for å definere en bruker som ikke har blitt logget inn ennå. Du kan for eksempel gjøre statistikken din offentlig ved å gi 'view'-tilgang til 'anonymous'-brukeren.",
"ExceptionEmailExists": "Bruker med e-post «%s» eksisterer allerede.",
"ExceptionInvalidEmail": "Epost-adressen er ikke i gyldig format.",
- "ExceptionInvalidPassword": "Passordet må være mellom %1$s og %2$s tegn.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth forventer et MD5-hashet passord (32 tegn lang streng). Vennligst kall md5()-funksjonen på passordet før du kaller denne metoden.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Det er ikke mulig å fjerne superbrukertilgang fra brukeren «%s».",
"ExceptionSuperUserAccess": "Denne brukeren har superbrukertilgang og har allerede tilgang til å se og modifisere alle nettsteder i Piwik. Du kan også fjerne superbrukertilgangen fra denne brukeren og prøve igjen.",
diff --git a/plugins/UsersManager/lang/nl.json b/plugins/UsersManager/lang/nl.json
index a34f2600aa..035a780037 100644
--- a/plugins/UsersManager/lang/nl.json
+++ b/plugins/UsersManager/lang/nl.json
@@ -15,6 +15,7 @@
"DeleteConfirm": "Weet u zeker dat u de volgende gebruiker wilt verwijderen: %s?",
"Email": "E-mail",
"EmailYourAdministrator": "%1$sE-mail de beheerder over dit probleem%2$s.",
+ "EnterUsernameOrEmail": "Voer een gebruikersnaam of e-mailadres in",
"ExceptionAccessValues": "De parameter toegang moet één van de volgede waarden bevatten: [ %s ]",
"ExceptionAdminAnonymous": "U kunt geen adminrechten toekennen aan de 'anonieme' gebruiker.",
"ExceptionDeleteDoesNotExist": "Gebruiker '%s' bestaat niet en kan dus niet verwijderd worden.",
@@ -22,7 +23,6 @@
"ExceptionEditAnonymous": "De anonieme gebruiker kan niet gewijzigd of verwijderd worden. Deze wordt door Piwik gebruikt voor gebruikers die nog niet zijn ingelogd. U kunt bijvoorbeeld uw statistieken publiekelijk maken door de 'anonieme' gebruiker 'kijkers rechten' te geven.",
"ExceptionEmailExists": "Er is reeds een gebruiker met '%s' als e-mail adres.",
"ExceptionInvalidEmail": "Het e-mail adres is ongeldig.",
- "ExceptionInvalidPassword": "De lengte van het wachtwoord moet tussen %1$s en %2$s tekens lang zijn.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth verwacht een MD5-hash wachtwoord (32 tekens lange reeks). Vraag de md5()functie op het wachtwoord op alvorens deze methode aan te roepen.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Het verwijderen van de Super User rechten van gebruiker '%s' is niet toegestaan.",
"ExceptionUserDoesNotExist": "Gebruiker '%s' bestaat niet.",
diff --git a/plugins/UsersManager/lang/pl.json b/plugins/UsersManager/lang/pl.json
index 57bbaea3e0..c505f98709 100644
--- a/plugins/UsersManager/lang/pl.json
+++ b/plugins/UsersManager/lang/pl.json
@@ -15,7 +15,6 @@
"ExceptionEditAnonymous": "Konto użytkownika anonimowego nie może być zmienione czy skasowane. Jest stosowane przez Piwik by zdefiniować użytkownika, który się nie loguje. Dla przykładu, możesz uczynić swoje statystyki powszechnie publiczne, udzielając prawa 'podglądu' dla 'anonimowego' użytkownika.",
"ExceptionEmailExists": "Użytkownik z takim adresem e-mail '%s' już istnieje.",
"ExceptionInvalidEmail": "Adres e-mail nie posiada poprawnego formatu.",
- "ExceptionInvalidPassword": "Długość hasła powinien zawierać od %1$s do %2$s znaków.",
"ExceptionPasswordMD5HashExpected": "Metoda UsersManager.getTokenAuth oczekuje hasła z hashem MD5 (łańcuch o długości 32 znaków). Wywołaj funkcję md5() z parametrem hasła, by wygenerować hash przed wywołaniem tej metody.",
"ExceptionUserDoesNotExist": "Użytkownik '%s' nie istnieje.",
"ExcludeVisitsViaCookie": "Wyklucz swoje wizyty stosując ciasteczka cookie",
diff --git a/plugins/UsersManager/lang/pt-br.json b/plugins/UsersManager/lang/pt-br.json
index 7baf55be48..ca0fa05007 100644
--- a/plugins/UsersManager/lang/pt-br.json
+++ b/plugins/UsersManager/lang/pt-br.json
@@ -26,7 +26,6 @@
"ExceptionEmailExists": "Usuário com o e-mail '%s' já existe.",
"ExceptionInvalidEmail": "O e-mail não tem um formato válido.",
"ExceptionInvalidLoginFormat": "O nome de usuário deve ter entre %1$s e %2$s caracteres e conter apenas letras, números ou os caracteres '_' or '-' or '.' or '@' or '+'",
- "ExceptionInvalidPassword": "A senha deve conter entre %1$s e %2$s caracteres.",
"ExceptionLoginExists": "O nome de usuário '%s' já existe.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth está esperando por uma senha MD5-hashed (32 caracteres). Por favor, chame a função md5() na senha antes de chamar este método.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Não é possível remover o acesso de Super Usuário do usuário '%s'",
diff --git a/plugins/UsersManager/lang/pt.json b/plugins/UsersManager/lang/pt.json
index fa8097d1ed..74d261904e 100644
--- a/plugins/UsersManager/lang/pt.json
+++ b/plugins/UsersManager/lang/pt.json
@@ -17,7 +17,6 @@
"ExceptionEditAnonymous": "O utilizador anónimo não pode ser editado ou apagado. Ele é usado pelo sistema para definir um utilizador que ainda não entrou. Por examplo, pode tornar as suas estatísticas públicas concedendo acesso 'ver' ao utilizador 'anónimo'.",
"ExceptionEmailExists": "Um utilizador com o e-mail '%s' já existe.",
"ExceptionInvalidEmail": "O e-mail não tem um formato válido.",
- "ExceptionInvalidPassword": "O senha deve ter entre %1$s e %2$s caracteres.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth está à espera de uma palavra-passe codificada em MD5 (cadeia de 32 caracteres). Por favor chame a função md5() sobre a palavra-passe antes de chamar este método.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "A remoção do acesso Super Utilizador do utilizador '%s' não é possível.",
"ExceptionUserDoesNotExist": "Utilizador '%s' não existe.",
diff --git a/plugins/UsersManager/lang/ro.json b/plugins/UsersManager/lang/ro.json
index cad0f073bf..a2f8d7798c 100644
--- a/plugins/UsersManager/lang/ro.json
+++ b/plugins/UsersManager/lang/ro.json
@@ -21,7 +21,6 @@
"ExceptionEditAnonymous": "Userul anonim nu poate fi editat sau sters.De exemplu poti face ca statisticile tale sa fie publice autorizand 'view' accesul la 'anonymous' user.",
"ExceptionEmailExists": "Deja există un utilizator cu adresa '%s'.",
"ExceptionInvalidEmail": "Emailul nu are un format valid.",
- "ExceptionInvalidPassword": "Lungimea parolei trebuie să fie între %1$s şi %2$s simboluri.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth se așteaptă la o parolă distribuita-MD5 (32 de caractere șir lung). Vă rugăm să apelati la funcția md5 () la parola înainte de a apela această metodă.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Scoaterea accesul utilizatorului Super de la utilizator '%s' nu este posibil.",
"ExceptionSuperUserAccess": "Acest utilizator are acces la Super utilizator și are deja permisiunea de a accesa și modifica toate site-urile din Piwik. Puteți scoate Super accesul utilizatorului la acest utilizator și încercați din nou.",
diff --git a/plugins/UsersManager/lang/ru.json b/plugins/UsersManager/lang/ru.json
index 965f2ae904..857456c6b0 100644
--- a/plugins/UsersManager/lang/ru.json
+++ b/plugins/UsersManager/lang/ru.json
@@ -22,7 +22,6 @@
"ExceptionEditAnonymous": "Анонимный пользователь не может быть удален. Он необходим системе Веб-аналитики для идентификации пользователей, которые не вошли в систему. Допустим, вы можете сделать статистику публичной, предоставляя право 'Просмотр' анонимному пользователю.",
"ExceptionEmailExists": "Пользователь с Email '%s' уже существует.",
"ExceptionInvalidEmail": "Email неправильного формата",
- "ExceptionInvalidPassword": "Длина пароля должна быть от %1$s до %2$s символов.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth ожидает MD5-хэшированный пароль (строка в 32 символа). Пожалуйста, вызовите функцию md5() к паролю перед вызовом этого метода.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Удаление прав суперпользователя у пользователя «%s» не представляется возможным.",
"ExceptionSuperUserAccess": "Этот пользователь уже имеет статус суперпользователя и разрешение на изменение всех веб-сайты в Piwik. Вы можете удалить права суперпользователя у этого пользователя, и попробовать снова.",
diff --git a/plugins/UsersManager/lang/sl.json b/plugins/UsersManager/lang/sl.json
index fe88be3be9..50dbddb1ca 100644
--- a/plugins/UsersManager/lang/sl.json
+++ b/plugins/UsersManager/lang/sl.json
@@ -10,7 +10,6 @@
"ExceptionDeleteDoesNotExist": "Uporabnik '%s' ne obstaja, ter ga tako ni moč izbrisati.",
"ExceptionEmailExists": "Uporabnik z emailom \"%s\" že obstaja.",
"ExceptionInvalidEmail": "Email ni veljavnega formata.",
- "ExceptionInvalidPassword": "Dolžina gesla mora biti med %1$s in %2$s znaki.",
"ExceptionUserDoesNotExist": "Uporabnik \"%s\" ne obstaja.",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Če bi radi spremenili geslo, vpišite novega. Če ne, to pustite prazno.",
"ManageAccess": "Upravljaj dostop",
diff --git a/plugins/UsersManager/lang/sq.json b/plugins/UsersManager/lang/sq.json
index e943b45826..7abaca0f00 100644
--- a/plugins/UsersManager/lang/sq.json
+++ b/plugins/UsersManager/lang/sq.json
@@ -7,14 +7,17 @@
"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’i jepni përdoruesit '%s' hyrje në krejt 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ë 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ë hiqni hyrje Superpërdoruesi prej '%s'? Përdoruesi do të humbë krejt lejet dhe hyrjet në krejt sajtet. Sigurohuni t’i lejoni hyrje më pas, në sajtet e nevojshme, nëse është rasti.",
"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.",
+ "EnterUsernameOrEmail": "Jepni një emër përdoruesi ose adresë email",
"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.",
@@ -22,17 +25,24 @@
"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ë s’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.",
- "ExceptionInvalidPassword": "Fjalëkalimi duhet të jetë nga %1$s deri në %2$s shenja i gjatë.",
+ "ExceptionInvalidLoginFormat": "Emri i përdoruesit duhet të jetë ndërmjet %1$s dhe %2$s shenja i gjatë dhe të përmbajë vetëm shkronja, numra, ose shenjën '_' ose '-' ose '.' ose '@' ose '+'",
+ "ExceptionLoginExists": "Ka tashmë një përdorues '%s'.",
"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.",
+ "ExceptionUserHasViewAccessAlready": "Ky përdorues ka tashmë hyrje në këtë sajt.",
+ "ExceptionNoValueForUsernameOrEmail": "Ju lutemi, jepni një emër përdoruesi ose adresë email.",
"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ë",
+ "GiveViewAccess": "Jepni hyrje për parje",
+ "GiveViewAccessTitle": "Jepini një përdoruesi ekzistues hyrje për të parë raportet për %s",
+ "GiveViewAccessInstructions": "Për t’i dhënë një përdoruesi ekzistues hyrje për parje të raporteve për %s jepni emrin e përdoruesit ose adresën email të një përdoruesi ekzistues",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Nëse dëshironi të ndryshoni fjalëkalimin, shtypni një të ri. Përndryshe lëreni të zbrazët.",
"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 te sajtet tuaj. Mund jepni edhe hyrje për te krejt sajtet njëherësh, duke zgjedhur \"Zbatoje për krejt sajtet\" te përzgjedhësi i sajtit.",
"ManageAccess": "Administroni hyrjet",
"MenuAnonymousUserSettings": "Rregullime përdoruesi anonim",
"MenuUsers": "Përdorues",
@@ -41,6 +51,7 @@
"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, përpunoni përdoruesit ekzistues dhe t’u jepni atyre hyrje për të parë ose administruar sajte.",
"PrivAdmin": "Admin",
"PrivNone": "Pa hyrje",
"PrivView": "Pamje",
diff --git a/plugins/UsersManager/lang/sr.json b/plugins/UsersManager/lang/sr.json
index b0dfca35b4..2f09cf69e1 100644
--- a/plugins/UsersManager/lang/sr.json
+++ b/plugins/UsersManager/lang/sr.json
@@ -22,7 +22,6 @@
"ExceptionEditAnonymous": "Podaci o anonimnom korisniku ne mogu biti menjani ili obrisani. Anonimni korisnik služi da bi Piwik mogao da razlikuje korisnika koji se još nije prijavio na sistem. Primera radi, svoju statistiku možete učiniti javnom tako što ćete anonimnom korisniku dozvoliti 'prikaz' pristup.",
"ExceptionEmailExists": "Korisnik sa elektronskom adresom '%s' već postoji.",
"ExceptionInvalidEmail": "Elektronska adresa nije validna.",
- "ExceptionInvalidPassword": "Dužina lozinke mora biti između %1$s i %2$s znakova.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth očekuje MD5 hash lozinku (niz od 32 znaka). Molimo vas da primenite funkciju md5() nad lozinkom pre poziva ovog metoda. Hvala.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Uklanjanje superkorisničkog nivoa pristupa korisniku '%s' nije moguće.",
"ExceptionSuperUserAccess": "Ovaj korisnik već ima superkorisnički nivo pristupa. Možete mu ukloniti taj nivo i pokušati ponovo.",
diff --git a/plugins/UsersManager/lang/sv.json b/plugins/UsersManager/lang/sv.json
index 51bb38f20d..9a971c3045 100644
--- a/plugins/UsersManager/lang/sv.json
+++ b/plugins/UsersManager/lang/sv.json
@@ -7,6 +7,7 @@
"AnonymousUserHasViewAccess": "Observera: Användare %1$s och användare %2$s har nu tillgång till den här webbsidan.",
"AnonymousUserHasViewAccess2": "Dina analysrapporter och informationen om dina besökare är publika.",
"ApplyToAllWebsites": "Använd för alla webbplatser",
+ "ChangeAllConfirm": "Är du säker på att du vill ge '%s' tillgång till alla webbplatserna?",
"ChangePasswordConfirm": "Vid byte av lösenord kommer också användarens token_auth att ändras. Vill du verkligen fortsätta?",
"ClickHereToDeleteTheCookie": "Klicka här för att ta bort kakan så att Piwik börjar spåra dina besök igen",
"ClickHereToSetTheCookieOnDomain": "Klicka här för att sätta kakan som exkluderar dina besök spårade av Piwik för webbplatsen %s",
@@ -25,7 +26,6 @@
"ExceptionEmailExists": "Användaren med e-postadressen '%s' finns redan.",
"ExceptionInvalidEmail": "E-postadressen har inte ett giltigt format.",
"ExceptionInvalidLoginFormat": "Användarnamnet måste vara mellan %1$s och %2$s tecken långt och får endast innehålla bokstäver, siffror och tecknen _ - . @ +",
- "ExceptionInvalidPassword": "Lösenordets längd måste vara mellan %1$s och %2$s tecken.",
"ExceptionLoginExists": "Användaren '%s' finns redan.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth förväntar sig MD5-hashar av lösenorden (32 tecken lång sträng). Anropa gärna md5() funktionen på lösenord innan du anropar den här metoden.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Att ta bort Superanvändarbehörigheten från användare '%s' är inte möjligt.",
@@ -38,9 +38,11 @@
"ForAnonymousUsersReportDateToLoadByDefault": "Rapport som laddas som standard för anonyma användare.",
"GiveViewAccess": "Ge visningsbehörighet",
"GiveViewAccessTitle": "Ge en existerande användare behörighet att visa rapporter för %s",
+ "GiveViewAccessInstructions": "För att ge en befintlig användare läsrättighet för %s skriv in användarnamnet eller e-postadressen för den befintliga användaren.",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Om du vill ändra ditt lösenord så skriver du in det nya, annars lämnar du fältet tomt.",
"InjectedHostCannotChangePwd": "Du besöker för närvarande sidan genom ett okänt värdnamn (%1$s). Du kan inte ändra ditt lösenord innan det här prblemet är åtgärdat.",
"LastSeen": "Senast sedd",
+ "MainDescription": "Välj vilka användare som ska få tillgång till dina webbplatser. Du kan också ge tillgång till alla webbplatser samtidigt genom att välja \"Tillämpa på alla webbplatser\" i webbplatsväljaren.",
"ManageAccess": "Hantera rättigheter",
"MenuAnonymousUserSettings": "Inställningar för anonyma användare",
"MenuUsers": "Användare",
@@ -49,6 +51,7 @@
"PersonalSettings": "Personliga inställningar",
"NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Notera: Eftersom att inga webbplaster tillåter anonym åtkomst till analysdata, så kan inga ändringar göras i den här sektionen.",
"NoUsersExist": "Det finns inga användare än.",
+ "PluginDescription": "Användarhanteringen låter dig lägga till nya användare, redigera befintliga användare och ge dom tillgång till läsrättighet eller administrera webbplatser.",
"PrivAdmin": "Administratör",
"PrivNone": "Inga rättigheter",
"PrivView": "Visa",
diff --git a/plugins/UsersManager/lang/tl.json b/plugins/UsersManager/lang/tl.json
index e36ce6ab3f..79c2fef5c5 100644
--- a/plugins/UsersManager/lang/tl.json
+++ b/plugins/UsersManager/lang/tl.json
@@ -21,7 +21,6 @@
"ExceptionEditAnonymous": "Ang mga hindi kilalang user ay hindi maaaring i-edit o tanggaling. Ito ay ginagamit ng Piwik upang tukuyin kung hindi pa naka logged ang user. maari mong gawing pampubliko ang iyong mga statistics sa pamamagitan ng pagbibigay ng 'view' access na gumagamit ng 'anonymous' user.",
"ExceptionEmailExists": "Ang email na '%s' para sa user na ito ay may iba nang gumagamit.",
"ExceptionInvalidEmail": "Ang e-mail ay walang wastong format.",
- "ExceptionInvalidPassword": "Ang haba ng password ay dapat nasa pagitan ng %1$s at %2$s na character.",
"ExceptionPasswordMD5HashExpected": "Ang UserManager.get Token Auth ay kinikilala lamang ang MD5-hashed password (32 chars long string). Mangyaring gamitin ang md5() function sa password bago gamitin ang method na ito.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Ang pag-alis sa Super User access mula sa user '%s' ay hindi posible.",
"ExceptionSuperUserAccess": "Ang user na ito ay mayroong Super User access at meroong permiso na e-access at magbago sa lahat ng website na nasa Piwik. Maari mong alisin ang Super User access mula sa user na ito at subukang muli.",
diff --git a/plugins/UsersManager/lang/uk.json b/plugins/UsersManager/lang/uk.json
index e429bb4983..f393b6bb68 100644
--- a/plugins/UsersManager/lang/uk.json
+++ b/plugins/UsersManager/lang/uk.json
@@ -1,40 +1,73 @@
{
"UsersManager": {
- "AddUser": "Створити нового користувача",
+ "AddUser": "Додати нового користувача",
"Alias": "Псевдонім",
- "AllWebsites": "Всі веб-сайти",
- "ApplyToAllWebsites": "Застосувати до всіх веб-сайтів",
- "ClickHereToDeleteTheCookie": "Клацніть щоб видалити cookie та дозволити Piwik відслідковувати ваші візити",
- "ClickHereToSetTheCookieOnDomain": "Клацніть щоб встановити cookie який слугуватиме вказівкою для ігнорування ваших візитів при відслідковуванні на веб-сайті %s",
- "DeleteConfirm": "Видалити користувача %s?",
- "Email": "E-mail",
- "ExceptionAccessValues": "Параметр доступу повинен мати одне з наступних значень: [ %s ]",
- "ExceptionAdminAnonymous": "Не можна надати права адміністратора анонімним користувачам.",
- "ExceptionDeleteDoesNotExist": "Користувач \"%s\" не існує і тому не може бути видалений.",
- "ExceptionEditAnonymous": "Анонімний користувач не може бути відредагований або видалений. Цей тип користувачів Piwik застосовує для користувачів, які не представились системі. Наприклад, Ви можете зробити Вашу статистику публічною надаючи права \"перегляду\" анонімномим користувачам.",
- "ExceptionEmailExists": "Користувач з адресою e-mail \"%s\" вже існує.",
- "ExceptionInvalidEmail": "Невірний e-mail.",
- "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth приймає на вхід пароль хешований MD5 (стрічку довжиною в 32 символи). Викличте функцію md5() перед визовом даного методу.",
- "ExceptionUserDoesNotExist": "Користувач \"%s\" не існує.",
- "ExcludeVisitsViaCookie": "Виключити ваші відвідування використовуючи cookie",
- "ForAnonymousUsersReportDateToLoadByDefault": "Для анонімних користувачів повідомляти дату завантаження за замовчування",
- "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Якщо необхідно змінити пароль, введіть новий сюди. В іншому випадку залиште поле незаповненим.",
- "ManageAccess": "Управління доступом",
- "MenuAnonymousUserSettings": "Налаштування анонімного користувача",
+ "AllWebsites": "Усі сайти",
+ "AnonymousUser": "Анонімний користувач",
+ "AnonymousUserHasViewAccess": "Примітка: користувач %1$s має %2$s доступ до цього сайту.",
+ "AnonymousUserHasViewAccess2": "Звіти та дані про відвідувачів загальнодоступні.",
+ "ApplyToAllWebsites": "Застосувати до всіх сайтів",
+ "ChangeAllConfirm": "Ви впевнені, що хочете надати '%s' доступ до всіх веб-сайтів?",
+ "ChangePasswordConfirm": "Зміна пароля також змінить призначений для користувача token_auth. Ви дійсно хочете продовжити?",
+ "ClickHereToDeleteTheCookie": "Натисніть тут, щоб видалити cookie ігнорування, і дозволити системі веб-аналітики відстежувати ваші відвідування",
+ "ClickHereToSetTheCookieOnDomain": "Натисніть тут, щоб встановити cookie ігнорування веб-аналітики, після установки якого система Вас буде ігнорувати при відвідуванні %s",
+ "ConfirmGrantSuperUserAccess": "Ви дійсно хочете користувача «%s» підвищити до суперкористувача? Увага: користувач матиме доступ до всіх веб-сайтів і зможе виконувати адміністративні завдання.",
+ "ConfirmProhibitMySuperUserAccess": "%s, Ви дійсно хочете видалити у себе права суперкористувача? Ви втратите всі дозволи і доступ до всіх сайтів і будете разлогінени з Piwik.",
+ "ConfirmProhibitOtherUsersSuperUserAccess": "Ви дійсно хочете видалити суперкористувача від '%s'? Користувач втратить усі права та доступ до всіх сайтів. Переконайтеся в тому, щоб дати доступ до потрібних сайтів, потім, якщо треба.",
+ "DeleteConfirm": "Ви впевнені, що хочете видалити користувача %s?",
+ "Email": "Email",
+ "EmailYourAdministrator": "%1$sНапишіть вашому адміністратору про цю проблему%2$s.",
+ "EnterUsernameOrEmail": "Введіть логін або адресу електронної пошти",
+ "ExceptionAccessValues": "Параметр доступу може мати тільки одне з наступних значень: [ %s ]",
+ "ExceptionAdminAnonymous": "Ви не можете надати права адміністратора анонімному користувачу.",
+ "ExceptionDeleteDoesNotExist": "Користувача '%s' не існує, тому він не може бути видалений.",
+ "ExceptionDeleteOnlyUserWithSuperUserAccess": "Неможливо видалити користувача '%s'",
+ "ExceptionEditAnonymous": "Анонімний користувач не може бути видалений. Він необхідний системі веб-аналітики для ідентифікації користувачів, які не ввійшли в систему. Наприклад, ви можете зробити статистику публічною, надаючи право 'Перегляд' анонімному користувачу.",
+ "ExceptionEmailExists": "Користувач з Email '%s' вже існує.",
+ "ExceptionInvalidEmail": "Email неправильного формату",
+ "ExceptionInvalidLoginFormat": "Ім'я користувача повинне бути від %1$s до %2$s символів і містити тільки літери, цифри, чи знаки '_' або '-' або '.' або '@' або '+'",
+ "ExceptionLoginExists": "Ім'я користувача '%s' вже існує.",
+ "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth очікує MD5-хешваний пароль (рядок в 32 символи). Будь ласка, викличте функцію md5() до паролю перед викликом цього методу.",
+ "ExceptionRemoveSuperUserAccessOnlySuperUser": "Видалення прав суперкористувача у користувача «%s» не уявляється можливим.",
+ "ExceptionSuperUserAccess": "Цей користувач вже має статус суперкористувача і дозвіл на зміну всіх веб-сайти в Piwik. Ви можете видалити права суперкористувача у цього користувача, і спробувати знову.",
+ "ExceptionUserDoesNotExist": "Користувач '%s' не існує.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Повинен бути принаймні один суперкористувач. Будь ласка, зробіть спочатку іншого суперкористувача.",
+ "ExceptionUserHasViewAccessAlready": "Цей користувач вже має доступ до цього сайту.",
+ "ExceptionNoValueForUsernameOrEmail": "Будь ласка, введіть ім'я користувача або email адресу.",
+ "ExcludeVisitsViaCookie": "Cookie виключення з статистики",
+ "ForAnonymousUsersReportDateToLoadByDefault": "Звіт для анонімних користувачів відображається за",
+ "GiveViewAccess": "Дати доступ на перегляд",
+ "GiveViewAccessTitle": "Дати існуючому користувачу доступ для перегляду звітів для %s",
+ "GiveViewAccessInstructions": "Щоб дати існуючому користувачу доступ для перегляду %s введіть логін або адресу електронної пошти для існуючого користувача",
+ "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Якщо ви хочете змінити пароль, введіть новий. Інакше залиште поле порожнім.",
+ "InjectedHostCannotChangePwd": "В даний момент ви знаходитесь в Piwik з невідомого хоста (%1$s). Ви не можете змінити пароль, поки ця проблема не буде вирішена.",
+ "LastSeen": "Останнє відвідування",
+ "MainDescription": "Вирішення, які користувачі мають доступ до ваших сайтів. Ви також можете дати доступ на всі сайти відразу вибравши \"Поширюються на всі сайти\" у селекторі сайтів.",
+ "ManageAccess": "Управління правами доступу",
+ "MenuAnonymousUserSettings": "Налаштування анонімності",
"MenuUsers": "Користувачі",
- "MenuUserSettings": "Налаштування користувача",
- "PrivAdmin": "Адміністрування",
- "PrivNone": "Без доступу",
+ "MenuUserSettings": "Мої налаштування",
+ "MenuPersonal": "Персональне",
+ "PersonalSettings": "Персональні налаштування",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Підказка: Ви не можете змінити ці настройки, тому що у вас немає жодного веб-сайту, до якого б мав доступ анонімний користувач.",
+ "NoUsersExist": "Поки немає користувачів.",
+ "PluginDescription": "Управління користувачами дозволяє додавати нових користувачів, редагувати існуючих користувачів і дати їм доступ для перегляду або адміністрування сайтів.",
+ "PrivAdmin": "Адмін",
+ "PrivNone": "Немає доступу",
"PrivView": "Перегляд",
- "ReportDateToLoadByDefault": "Повідомляти дату завантаження за замовчуванням",
- "ReportToLoadByDefault": "Повідомляти про завантаження за замовчуванням",
- "TheLoginScreen": "Вікно входу.",
- "TypeYourPasswordAgain": "Введіть новий пароль знову.",
- "User": "Користувачі",
- "UsersManagement": "Керування Користувачами",
- "UsersManagementMainDescription": "Створіть нових користувачів або редагуйте існуючих. Також нижче можна задати права доступу для них.",
- "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Якщо користувачі не увійшли в систему і відвідують Piwik, то овни повинні мати можливість отримати доступ",
- "YourUsernameCannotBeChanged": "Ім’я користувача не можу бути змінене.",
+ "ReportDateToLoadByDefault": "Звіт за замовчуванням за",
+ "ReportToLoadByDefault": "Звіт за замовчуванням",
+ "SuperUserAccessManagement": "Управління суперкористувачами",
+ "SuperUserAccessManagementGrantMore": "Ви можете надати права суперкористувача іншим користувачам Piwik тут. Будь ласка, використовуйте цю функцію з обережністю.",
+ "SuperUserAccessManagementMainDescription": "Суперкористувачі мають найвищі дозволи. Вони можуть виконувати всі адміністративні завдання, такі як додавання нових сайтів для моніторингу, додавання користувачів, зміна прав доступу користувачів, активація і деактивація плагінів і навіть встановлення нових плагінів з Маркету.",
+ "TheLoginScreen": "Сторінка входу",
+ "ThereAreCurrentlyNRegisteredUsers": "Зараз налічується %s зареєстрованих користувачів.",
+ "TypeYourPasswordAgain": "Введіть ваш новий пароль знову.",
+ "User": "Користувач",
+ "UsersManagement": "Керування користувачами",
+ "UsersManagementMainDescription": "Створення нових користувачів або редагування існуючих. Також Ви можете задати права доступу для користувача.",
+ "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Коли незареєстровані користувачі відвідують систему Piwik, вони повинні бачити",
+ "YourUsernameCannotBeChanged": "Ім'я вашого користувача не може бути змінено.",
"YourVisitsAreIgnoredOnDomain": "%1$sВаші відвідування ігноруються системою Piwik в %2$s %3$s (Piwik знашов cookie у вашому браузері з вказівкою ігнорувати).",
"YourVisitsAreNotIgnored": "%1$sВаші відвідування відслідковуються системою Piwik %2$s (Piwik не знашов cookie у вашому браузері)."
}
diff --git a/plugins/UsersManager/lang/vi.json b/plugins/UsersManager/lang/vi.json
index 33b12cb874..2b92f662bb 100644
--- a/plugins/UsersManager/lang/vi.json
+++ b/plugins/UsersManager/lang/vi.json
@@ -3,6 +3,7 @@
"AddUser": "Thêm một người dùng mới",
"Alias": "Bí danh",
"AllWebsites": "Tất cả các website",
+ "AnonymousUser": "Người dùng ẩn danh",
"AnonymousUserHasViewAccess": "Lưu ý: Người dùng %1$s có truy cập %2$s đến website này.",
"AnonymousUserHasViewAccess2": "Các báo cáo phân tích của bạn và thông tin các khách truy cập của bạn là công khai có thể xem được.",
"ApplyToAllWebsites": "Áp dụng cho tất cả các website",
@@ -12,24 +13,30 @@
"DeleteConfirm": "Bạn có chắc chắn muốn xóa người dùng %s?",
"Email": "Email",
"EmailYourAdministrator": "%1$s E-mail tới quản trị viên của bạn về vấn đề này %2$s.",
+ "EnterUsernameOrEmail": "Nhập một tên người dùng hoặc địa chỉ email",
"ExceptionAccessValues": "Tham số truy cập phải có một trong các giá trị sau: [%s]",
"ExceptionAdminAnonymous": "Bạn không thể cấp quyền truy cập \"quản trị\" cho người sử dụng 'ẩn danh'.",
"ExceptionDeleteDoesNotExist": "Người dùng '%s' không tồn tại do đó nó không thể bị xóa.",
"ExceptionEditAnonymous": "Người dùng ẩn danh không thể chỉnh sửa hoặc xóa. Nó được sử dụng bởi Piwik để xác định một người dùng đã không đăng nhập lúc này. Ví dụ, bạn có thể làm cho số liệu thống kê công cộng(public) của bạn bằng cách cho phép truy cập \"xem\" đến người dùng 'ẩn danh'.",
"ExceptionEmailExists": "Người dùng với email '%s' đã tồn tại.",
"ExceptionInvalidEmail": "Email không có một định dạng hợp lệ.",
- "ExceptionInvalidPassword": "Độ dài mật khẩu phải từ %1$s và %2$s ký tự.",
+ "ExceptionLoginExists": "Tên người dùng '%s' đã tồn tại sẵn.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth là yêu cầu một mật khẩu băm MD5 (chuỗi 32 char long). Xin vui lòng gọi hàm md5() trên mật khẩu trước khi gọi phương thức này.",
"ExceptionUserDoesNotExist": "Người dùng '%s' không tồn tại.",
+ "ExceptionNoValueForUsernameOrEmail": "Vui lòng nhập một tên người dùng hoặc địa chỉ email.",
"ExcludeVisitsViaCookie": "Loại bỏ các truy cập của bạn sử dụng một cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Đối với người dùng ẩn danh, báo cáo thep ngày nạp theo mặc định",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Nếu bạn muốn thay đổi các loại mật khẩu thành một cái mới. Nếu không thì để trống.",
"InjectedHostCannotChangePwd": "Bạn đang truy cập với một máy chủ không xác định (%1$s). Bạn không thể thay đổi mật khẩu của bạn cho đến khi vấn đề này được xử lý.",
+ "LastSeen": "Lần xem cuối",
"ManageAccess": "Quản lý truy cập",
"MenuAnonymousUserSettings": "Thiết lập người dùng ẩn danh",
"MenuUsers": "Các người dùng",
"MenuUserSettings": "Thiết lập người dùng",
+ "MenuPersonal": "Cá nhân",
+ "PersonalSettings": "Thiết lập cá nhân",
"NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Lưu ý: Bạn không thể thay đổi các thiết lập trong phần này, bởi vì bạn không có bất kỳ trang web nào có thể truy cập bởi người dùng ẩn danh.",
+ "NoUsersExist": "Chưa có người dùng nào.",
"PrivAdmin": "Quản trị viên",
"PrivNone": "Không có truy cập",
"PrivView": "Xem",
diff --git a/plugins/UsersManager/lang/zh-cn.json b/plugins/UsersManager/lang/zh-cn.json
index 50bb92f4be..5462bc94c9 100644
--- a/plugins/UsersManager/lang/zh-cn.json
+++ b/plugins/UsersManager/lang/zh-cn.json
@@ -18,7 +18,6 @@
"ExceptionEditAnonymous": "anonymous 用户不能被修改或删除,因为他是被 Piwik 使用来定义一个还未登入的用户!例如,您可以把 '查看' 权限授予 'anonymous' 用户以公开您的统计资料!",
"ExceptionEmailExists": "使用邮箱 '%s' 的用户已存在!",
"ExceptionInvalidEmail": "邮箱格式不正确!",
- "ExceptionInvalidPassword": "密码长度必须介于 %1$s 和 %2$s 个字符之间。",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth 是以MD5加密的密码(32 个字符)。使用此方法请请先调用 md5()函数。",
"ExceptionUserDoesNotExist": "用户 '%s' 不存在!",
"ExcludeVisitsViaCookie": "用 cookie 排除您自己的访问记录",
diff --git a/plugins/UsersManager/lang/zh-tw.json b/plugins/UsersManager/lang/zh-tw.json
index db5f835832..3c9977d51e 100644
--- a/plugins/UsersManager/lang/zh-tw.json
+++ b/plugins/UsersManager/lang/zh-tw.json
@@ -22,7 +22,6 @@
"ExceptionEditAnonymous": "匿名用戶不能修改或刪除。因為 Piwik 用來定義一個還未登入的使用者。舉例來說,你可以把'檢視'權限給匿名用戶來公開你的統計資料。",
"ExceptionEmailExists": "使用 '%s' E-mail 的使用者已經存在。",
"ExceptionInvalidEmail": "此 E-mail 地址格式無效。",
- "ExceptionInvalidPassword": "密碼長度必須是介於 %1$s 跟 %2$s 字符之間。",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth 是以MD5加密的密碼(32個字元字串)。在使用此方法前請先呼叫 md5() 函式。",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "刪除用戶 '%s' 的超級用戶訪問權限是不可能的。",
"ExceptionSuperUserAccess": "該用戶擁有超級用戶訪問權限,並且已有權限訪問和修改的所有網站的Piwik。您可以刪除該用戶的超級用戶訪問權限,然後再試一次。",
diff --git a/plugins/UsersManager/tests/Integration/UsersManagerTest.php b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
index 4b4dfb6fa7..0d24d5f5b2 100644
--- a/plugins/UsersManager/tests/Integration/UsersManagerTest.php
+++ b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
@@ -159,7 +159,6 @@ class UsersManagerTest extends IntegrationTestCase
{
return array(
array("geggeqgeqag", "pas", "email@email.com", "alias"), // too short -> exception
- array("ghqgeggg", "gegageqqqqqqqgeqgqeg84897897897897g122gerrgageqqqqqqqgeqgqeg84897897897897g12234k3", "email@email.com", "alias"), // too long -> exception
array("geggeqgeqag", "", "email@email.com", "alias"), // empty -> exception
);
}
@@ -196,6 +195,19 @@ class UsersManagerTest extends IntegrationTestCase
}
/**
+ * long password => should work
+ * empty alias => use login
+ */
+ public function testAddUserLongPassword()
+ {
+ $login = "geggeqgeqag";
+ $this->api->addUser($login, "geqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaeg", "mgeagi@geq.com", "");
+ $user = $this->api->getUser($login);
+ $this->assertEquals($login, $user['alias']);
+ $this->assertEquals($login, $user['login']);
+ }
+
+ /**
* no alias => use login
*/
public function testAddUserNoAliasSpecified()
@@ -345,7 +357,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->assertInternalType('string', $user['date_registered']);
$this->assertEquals($email, $user['email']);
- //alias shouldnt be empty even if no alias specified
+ //alias shouldn't be empty even if no alias specified
$this->assertGreaterThan(0, strlen($user['alias']));
}
diff --git a/plugins/UsersManager/tests/System/ApiTest.php b/plugins/UsersManager/tests/System/ApiTest.php
index 7696c786b5..b72a956e10 100644
--- a/plugins/UsersManager/tests/System/ApiTest.php
+++ b/plugins/UsersManager/tests/System/ApiTest.php
@@ -48,7 +48,7 @@ class ApiTest extends SystemTestCase
$apiToTest = array(
array('UsersManager.getUsers'),
array('UsersManager.getUsersLogin'),
- array('UsersManager.getUsersAccessFromSite', array('idSite' => 6)), // admin user has admin acces for this
+ array('UsersManager.getUsersAccessFromSite', array('idSite' => 6)), // admin user has admin access for this
array('UsersManager.getUsersAccessFromSite', array('idSite' => 3)), // admin user has only view access for this, should not see anything
array('UsersManager.getUsersSitesFromAccess', array('access' => 'admin')),
array('UsersManager.getUsersWithSiteAccess', array('idSite' => 3, 'access' => 'admin')),
diff --git a/plugins/VisitFrequency/lang/uk.json b/plugins/VisitFrequency/lang/uk.json
index 501946142a..f27b04150f 100644
--- a/plugins/VisitFrequency/lang/uk.json
+++ b/plugins/VisitFrequency/lang/uk.json
@@ -3,12 +3,21 @@
"ColumnActionsByReturningVisits": "Дії повторних відвідувань",
"ColumnAverageVisitDurationForReturningVisitors": "Середня тривалість візиту повторних відвідувань (в сек.)",
"ColumnAvgActionsPerReturningVisit": "Середня кількість дій для повторних відвідувань",
+ "ColumnBounceCountForReturningVisits": "Показник відмов для відвідувачів що повернулись",
"ColumnBounceRateForReturningVisits": "Показник відмов для повторних відвідувань",
+ "ColumnMaxActionsInReturningVisit": "Максимум дій за одне повторне відвідування",
+ "ColumnNbReturningVisitsConverted": "Число конверсії відвідувачів, що повернулися",
"ColumnReturningVisits": "Візити повторних відвідувань",
+ "ColumnSumVisitLengthReturning": "Загальний час, проведений відвідувачами що повернулися (в секундах)",
+ "ColumnUniqueReturningVisitors": "Унікальні відвідувачі що повернулися",
+ "ColumnReturningUsers": "Відвідувачі що повернулися",
+ "PluginDescription": "Звіти метрик нових відвідувачів і постійних відвідувачів.",
"ReturnActions": "%s переглядів сторінок повторними відвідувачами",
"ReturnAverageVisitDuration": "%s середня тривалість візиту для повторного відвідувача",
"ReturnAvgActions": "%s дій на повнорного відвідувача",
"ReturnBounceRate": "%s повторних відвідувачів відмовили (залишили веб-сайт після перегляду одніє сторінки)",
+ "ReturningVisitDocumentation": "Повторний візит (на відміну від нового візиту) зробленого кимось, хто відвідував сайт хоча б один раз.",
+ "ReturningVisitsDocumentation": "Це огляд візитів що повернулися.",
"ReturnVisits": "%s повторних відвідувань",
"SubmenuFrequency": "Частота",
"WidgetGraphReturning": "Графік повторних відвідувань",
diff --git a/plugins/VisitTime/lang/it.json b/plugins/VisitTime/lang/it.json
index c458a1aeba..fcd30ce0b6 100644
--- a/plugins/VisitTime/lang/it.json
+++ b/plugins/VisitTime/lang/it.json
@@ -11,8 +11,8 @@
"VisitsByDayOfWeek": "Visite per giorno della settimana",
"WidgetByDayOfWeekDocumentation": "Il grafico mostra il numero di visite che il tuo sito ha ricevuto in ciascun giorno della settimana.",
"WidgetLocalTime": "Visite per ora locale",
- "WidgetLocalTimeDocumentation": "Questo grafico mostra che ora era nei %1$sfusi orari dei visitatori%2$s durante le loro visite.",
+ "WidgetLocalTimeDocumentation": "Questo grafico mostra che ora era nel %1$sfuso orario dei visitatori%2$s durante le loro visite.",
"WidgetServerTime": "Visite per ora del server",
- "WidgetServerTimeDocumentation": "Questo grafico mostra che ora era nel %1$s fuso orario del server %2$s durante le visite."
+ "WidgetServerTimeDocumentation": "Questo grafico mostra che ora era nel %1$sfuso orario del server%2$s durante le visite."
}
} \ No newline at end of file
diff --git a/plugins/VisitTime/lang/uk.json b/plugins/VisitTime/lang/uk.json
index c48532de5c..7aed4332a4 100644
--- a/plugins/VisitTime/lang/uk.json
+++ b/plugins/VisitTime/lang/uk.json
@@ -1,12 +1,18 @@
{
"VisitTime": {
- "ColumnLocalTime": "Локальний час",
- "ColumnServerTime": "Серверний час",
- "LocalTime": "По-годинне відвідування для локального часу",
- "NHour": "%s год.",
- "ServerTime": "По-годинне відвідування для серверного часу",
- "SubmenuTimes": "Разів",
- "WidgetLocalTime": "Відвідування по локальному часу",
- "WidgetServerTime": "Відвідування по серверному часу"
+ "ColumnLocalTime": "Місцевий час",
+ "ColumnServerTime": "Час на сервері",
+ "DayOfWeek": "День тижня",
+ "LocalTime": "Відвідувань за місцевим часом",
+ "NHour": "%s u.",
+ "PluginDescription": "Повідомляє місцевий час і час на сервері коли відвідувачі дивилися вебсайт або додаток.",
+ "ServerTime": "Відвідувань за часом на сервері",
+ "SubmenuTimes": "По часу",
+ "VisitsByDayOfWeek": "Відвідування по днях тижня",
+ "WidgetByDayOfWeekDocumentation": "Цей графік показує число відвідувань по кожному дню в тижні.",
+ "WidgetLocalTime": "Відвідувань за місцевим часом",
+ "WidgetLocalTimeDocumentation": "Цей графік показує, який час був у %1$s відвідувача в його часовому поясі %2$s під час його відвідування сайту.",
+ "WidgetServerTime": "Відвідувань за часом на сервері",
+ "WidgetServerTimeDocumentation": "Цей графік показує, який час був на %1$s сервері в його часовому поясі %2$s під час відвідування сайту."
}
} \ No newline at end of file
diff --git a/plugins/VisitorInterest/lang/fr.json b/plugins/VisitorInterest/lang/fr.json
index c138425bd3..960308094c 100644
--- a/plugins/VisitorInterest/lang/fr.json
+++ b/plugins/VisitorInterest/lang/fr.json
@@ -8,7 +8,7 @@
"NPages": "%s pages",
"OnePage": "1 page",
"PluginDescription": "Fournit des détails sur les intérêts des visiteurs: nombre de pages vues, temps passé sur le site web, jours depuis la dernière visite et plus.",
- "VisitNum": "Numéro de la visite",
+ "VisitNum": "Nombre de visites",
"VisitsByDaysSinceLast": "Visites par jours depuis la dernière visite",
"visitsByVisitCount": "Visites par nombre de visites",
"VisitsPerDuration": "Visites par durée de la visite",
diff --git a/plugins/VisitorInterest/lang/is.json b/plugins/VisitorInterest/lang/is.json
index 45643cabfc..bc9abd8545 100644
--- a/plugins/VisitorInterest/lang/is.json
+++ b/plugins/VisitorInterest/lang/is.json
@@ -7,7 +7,6 @@
"Engagement": "Þáttaka",
"NPages": "%s síður",
"OnePage": "1 síða",
- "PlusXMin": "%s mín",
"VisitsPerDuration": "Heimsóknir per lengd heimsóknar",
"VisitsPerNbOfPages": "Heimsóknir per fjölda síðna",
"WidgetLengths": "Lengd heimsókna",
diff --git a/plugins/VisitorInterest/lang/ka.json b/plugins/VisitorInterest/lang/ka.json
index e32ba759dd..e35d01bdcc 100644
--- a/plugins/VisitorInterest/lang/ka.json
+++ b/plugins/VisitorInterest/lang/ka.json
@@ -6,7 +6,6 @@
"ColumnVisitDuration": "ვიზიტის ხანგრძლივობა",
"NPages": "%s გვერდი",
"OnePage": "1 გვერდი",
- "PlusXMin": "%s წთ",
"VisitsPerDuration": "ვიზიტები ვიზიტის ხანგრძლივობის შესაბამისად",
"VisitsPerNbOfPages": "ვიზიტები გვერდების რაოდენობის შესაბამისად",
"WidgetLengths": "ვიზიტების სიგრძე",
diff --git a/plugins/VisitorInterest/lang/uk.json b/plugins/VisitorInterest/lang/uk.json
index 1d411e9ee6..d36e3b4a68 100644
--- a/plugins/VisitorInterest/lang/uk.json
+++ b/plugins/VisitorInterest/lang/uk.json
@@ -1,15 +1,24 @@
{
"VisitorInterest": {
"BetweenXYMinutes": "%1$s-%2$s хв",
- "BetweenXYSeconds": "%1$s-%2$s сек.",
+ "BetweenXYSeconds": "%1$s-%2$s сек",
"ColumnPagesPerVisit": "Сторінок за відвідування",
- "ColumnVisitDuration": "Тривалість відвідування",
- "Engagement": "Заручення",
+ "ColumnVisitDuration": "Тривалість відвідувань",
+ "Engagement": "Повторні відвідування",
"NPages": "%s сторінок",
- "OnePage": "одна сторінка",
- "VisitsPerDuration": "Відвідування за тривалістю",
- "VisitsPerNbOfPages": "Відвідування за кількістю сторінок",
+ "OnePage": "1 сторінка",
+ "PluginDescription": "Звіти про інтерес відвідувачів: кількість переглянутих сторінок, час, проведений на сайті, днів з моменту останнього відвідування, і багато іншого.",
+ "VisitNum": "Число відвідувань",
+ "VisitsByDaysSinceLast": "Відвідувань по днях з моменту останнього візиту",
+ "visitsByVisitCount": "Відвідування за їх кількістю",
+ "VisitsPerDuration": "Відвідувань за довжиною візиту",
+ "VisitsPerNbOfPages": "Відвідувань за кількістю сторінок",
"WidgetLengths": "Тривалість відвідувань",
- "WidgetPages": "Кількість сторінок за відвідування"
+ "WidgetLengthsDocumentation": "У цьому звіті ви можете бачити, як багато відвідувань мало певну тривалість. За замовчуванням звіт відображається у вигляді хмари тегів: найбільш часта тривалість відвідувань показується великим тегом.",
+ "WidgetPages": "Сторінок за відвідування",
+ "WidgetPagesDocumentation": "У цьому звіті ви можете бачити, як багато відвідувань мало певну кількість переглядів сторінок. За замовчуванням звіт відображається у вигляді хмари тегів: найбільш часта кількість переглянутих сторінок показується великим тегом.",
+ "WidgetVisitsByDaysSinceLast": "Відвідування по днях з моменту останнього відвідування",
+ "WidgetVisitsByDaysSinceLastDocumentation": "У цьому звіті відображаються відвідування, які були здійснені користувачами, чиї останні відвідування були певну кількість днів назад.",
+ "WidgetVisitsByNumDocumentation": "У цьому звіті відображаються відвідування, які були N-ми по рахунку, тобто показується скільки користувачів відвідали ваш сайт N-ну кількість разів."
}
} \ No newline at end of file
diff --git a/plugins/VisitsSummary/lang/sl.json b/plugins/VisitsSummary/lang/sl.json
index 387eefaa5a..3e80b38b7b 100644
--- a/plugins/VisitsSummary/lang/sl.json
+++ b/plugins/VisitsSummary/lang/sl.json
@@ -2,7 +2,7 @@
"VisitsSummary": {
"AverageGenerationTime": "%s povprečni čas generiranja",
"AverageVisitDuration": "%s povprečno trajanje obiska",
- "GenerateQueries": "%s ukazov izvršenih",
+ "GenerateQueries": "%s izvršenih povpraševanj",
"GenerateTime": "%s sekund za prikaz strani",
"MaxNbActions": "%s največje število akcij v enem obisku",
"NbActionsDescription": "%s akcij",
@@ -17,9 +17,9 @@
"NbUniquePageviewsDescription": "%s unikatnih ogledov",
"NbUniqueVisitors": "%s unikatnih obiskovalcev",
"NbVisitsBounced": "%s ogledov je bilo odbojev (so zapustili stran po ogledu ene strani)",
- "PluginDescription": "Splošne anlitične metrike: obiski, unikatni obiskovalci, število akcij, stopnja odbojev, ipd.",
+ "PluginDescription": "Prikaže splošne anlitične metrike: obiski, unikatni obiskovalci, število akcij, stopnja odbojev, ipd.",
"VisitsSummary": "Povzetek obiskov",
- "VisitsSummaryDocumentation": "To je pregled obiskov v zadnjem času.",
+ "VisitsSummaryDocumentation": "Pregled obiskov v zadnjem času.",
"WidgetLastVisits": "Graf zadnjih obiskov",
"WidgetOverviewGraph": "Pregled z grafom",
"WidgetVisits": "Povzetek obiskov"
diff --git a/plugins/VisitsSummary/lang/uk.json b/plugins/VisitsSummary/lang/uk.json
index cb9c8cbb35..2a394222c2 100644
--- a/plugins/VisitsSummary/lang/uk.json
+++ b/plugins/VisitsSummary/lang/uk.json
@@ -1,16 +1,27 @@
{
"VisitsSummary": {
+ "AverageGenerationTime": "%s середній час генерації сторінки",
"AverageVisitDuration": "%s середня тривалість відвідування",
"GenerateQueries": "%s запитів виконано",
- "GenerateTime": "%s секунд на генерацію сторінки",
- "MaxNbActions": "%s максимальна кількість переглядів сторінок за одне відвідування",
- "NbActionsDescription": "%s дій (переглядів сторінок, завантажень, переходів за зовнішніми посиланнями)",
- "NbActionsPerVisit": "%s дій на відвідування",
+ "GenerateTime": "сторінка згенерована за %s секунд",
+ "MaxNbActions": "%s макс. дій за одне відвідування",
+ "NbActionsDescription": "%s дій (перегляди сторінок, завантаження, зовнішні переходи)",
+ "NbActionsPerVisit": "%s дій за одне відвідування",
+ "NbDownloadsDescription": "%s завантажень",
+ "NbKeywordsDescription": "%s унікальних ключових слів",
+ "NbOutlinksDescription": "%s вихідних посилань",
+ "NbPageviewsDescription": "%s переглядів сторінок",
+ "NbSearchesDescription": "%s всього пошуків на вашому сайті",
+ "NbUniqueDownloadsDescription": "%s унікальних завантажень",
+ "NbUniqueOutlinksDescription": "%s унікальних зовнішніх посилань",
+ "NbUniquePageviewsDescription": "%s унікальних переглядів сторінок",
"NbUniqueVisitors": "%s унікальних відвідувачів",
- "NbVisitsBounced": "%s візитів з відмовами (залишили сайт після прегляду однієї сторінки)",
- "VisitsSummary": "Узагальнено відвідування",
+ "NbVisitsBounced": "%s відмов (пішли після перегляду однієї сторінки)",
+ "PluginDescription": "Звіти загальних аналітичних показників: відвідування, кількість унікальних відвідувачів, кількість користувачів, показник відмов і т.д..",
+ "VisitsSummary": "Відвідувань",
+ "VisitsSummaryDocumentation": "Це огляд динаміки відвідувань.",
"WidgetLastVisits": "Графік останніх відвідувань",
- "WidgetOverviewGraph": "Огляд з графіком",
+ "WidgetOverviewGraph": "Огляд по всім графіками",
"WidgetVisits": "Огляд відвідувань"
}
} \ No newline at end of file
diff --git a/plugins/WebsiteMeasurable/lang/ru.json b/plugins/WebsiteMeasurable/lang/ru.json
new file mode 100644
index 0000000000..a0536412cd
--- /dev/null
+++ b/plugins/WebsiteMeasurable/lang/ru.json
@@ -0,0 +1,5 @@
+{
+ "WebsiteMeasurable": {
+ "Website": "Веб-сайт"
+ }
+} \ No newline at end of file
diff --git a/plugins/WebsiteMeasurable/lang/uk.json b/plugins/WebsiteMeasurable/lang/uk.json
new file mode 100644
index 0000000000..41c3cae624
--- /dev/null
+++ b/plugins/WebsiteMeasurable/lang/uk.json
@@ -0,0 +1,7 @@
+{
+ "WebsiteMeasurable": {
+ "Website": "Сайт",
+ "Websites": "Сайти",
+ "WebsiteDescription": "Сайт складається з веб-сторінок, як правило, подається з одного домену."
+ }
+} \ No newline at end of file
diff --git a/plugins/Widgetize/lang/sv.json b/plugins/Widgetize/lang/sv.json
index 7186a034fe..189b3e5dd9 100644
--- a/plugins/Widgetize/lang/sv.json
+++ b/plugins/Widgetize/lang/sv.json
@@ -1,6 +1,7 @@
{
"Widgetize": {
"OpenInNewWindow": "Öppna i ett nytt fönster",
+ "PluginDescription": "Visa alla Piwik rapporter på din webbplats eller app med hjälp av enkel kod (en HTML-tagg).",
"TopLinkTooltip": "Exportera rapporter från Piwik som Widgets och bädda in instrumentpanelen i din app som en iframe."
}
} \ No newline at end of file
diff --git a/plugins/Widgetize/lang/tr.json b/plugins/Widgetize/lang/tr.json
index 10eaf05201..9080993176 100644
--- a/plugins/Widgetize/lang/tr.json
+++ b/plugins/Widgetize/lang/tr.json
@@ -1,7 +1,7 @@
{
"Widgetize": {
- "OpenInNewWindow": "Yeni pencerede aç",
- "PluginDescription": "Basit Gömülü HTML tag'i ile Piwik raporunu websitende veya uygulamada göster.",
- "TopLinkTooltip": "Piwik Raporunu Widgetlara dönüştür ve Uygulamandaki göstergene iframe olarak ekle"
+ "OpenInNewWindow": "Yeni pencerede açılsın",
+ "PluginDescription": "Piwik raporlarını web sitenizde ya da uygulamanızda basit gömülmüş HTML kod imi ile görüntüleyin.",
+ "TopLinkTooltip": "Piwik Raporlarını Gereç olarak verin ve uygulamanızın panosuna iframe olarak gömün."
}
} \ No newline at end of file
diff --git a/plugins/Widgetize/lang/uk.json b/plugins/Widgetize/lang/uk.json
index 2678eca3f8..7fefcbbdd3 100644
--- a/plugins/Widgetize/lang/uk.json
+++ b/plugins/Widgetize/lang/uk.json
@@ -1,5 +1,7 @@
{
"Widgetize": {
- "OpenInNewWindow": "Відкрити нове вікно"
+ "OpenInNewWindow": "Відкрити в новому вікні",
+ "PluginDescription": "Показати звіт Piwik на вебсайті або в додатку за допомогою простого вбудованого HTML тега.",
+ "TopLinkTooltip": "Експортуйте аналітику Piwik у вигляді віджетів і встановіть їх на своєму сайті або веб-сервісі як iframe."
}
} \ No newline at end of file
diff --git a/plugins/Widgetize/tests/System/WidgetTest.php b/plugins/Widgetize/tests/System/WidgetTest.php
index 40ad26252f..919556ed34 100644
--- a/plugins/Widgetize/tests/System/WidgetTest.php
+++ b/plugins/Widgetize/tests/System/WidgetTest.php
@@ -1360,21 +1360,12 @@ class WidgetTest extends SystemTestCase
),
),
array (
- 'name' => 'Piwik PRO Blog',
- 'uniqueId' => 'widgetPiwikProrssPiwikPro',
+ 'name' => 'Professional Services for Piwik',
+ 'uniqueId' => 'widgetProfessionalServicespromoServices',
'parameters' =>
array (
- 'module' => 'PiwikPro',
- 'action' => 'rssPiwikPro',
- ),
- ),
- array (
- 'name' => 'Piwik PRO: Advanced Analytics & Services',
- 'uniqueId' => 'widgetPiwikPropromoPiwikProPiwikPro',
- 'parameters' =>
- array (
- 'module' => 'PiwikPro',
- 'action' => 'promoPiwikPro',
+ 'module' => 'ProfessionalServices',
+ 'action' => 'promoServices',
),
)
);