Ljonka has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/388008 )
Change subject: Initial commit: ...................................................................... Initial commit: Removal from BlueSpiceExtensions: - https://gerrit.wikimedia.org/r/#/c/387205/ - https://gerrit.wikimedia.org/r/#/c/387207/ Change-Id: Ic3c0ca0875a801795e898c4adc2d35187057789f ERM: #7930 --- A .gitreview A CODE_OF_CONDUCT.md A PagesVisited.class.php A composer.json A extension.json A i18n/ar.json A i18n/ba.json A i18n/bg.json A i18n/bgn.json A i18n/bn.json A i18n/br.json A i18n/ce.json A i18n/cv.json A i18n/da.json A i18n/de-formal.json A i18n/de.json A i18n/en-gb.json A i18n/en.json A i18n/es.json A i18n/fa.json A i18n/fr.json A i18n/fy.json A i18n/gl.json A i18n/he.json A i18n/hu.json A i18n/id.json A i18n/it.json A i18n/ja.json A i18n/ko.json A i18n/ksh.json A i18n/lb.json A i18n/lki.json A i18n/lt.json A i18n/mai.json A i18n/mk.json A i18n/nb.json A i18n/nl.json A i18n/om.json A i18n/pl.json A i18n/pt-br.json A i18n/pt.json A i18n/qqq.json A i18n/ru.json A i18n/sl.json A i18n/sq.json A i18n/sv.json A i18n/tcy.json A i18n/tr.json A i18n/uk.json A i18n/zh-hans.json A i18n/zh-hant.json 51 files changed, 1,107 insertions(+), 0 deletions(-) Approvals: Ljonka: Verified; Looks good to me, approved Raimond Spekking: Looks good to me, but someone else must approve diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..9bf982a --- /dev/null +++ b/.gitreview @@ -0,0 +1,6 @@ +[gerrit] +host=gerrit.wikimedia.org +port=29418 +project=mediawiki/extensions/BlueSpicePagesVisited.git +defaultbranch=master +defaultrebase=0 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d8e5d08 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1 @@ +The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct). diff --git a/PagesVisited.class.php b/PagesVisited.class.php new file mode 100644 index 0000000..82e9a46 --- /dev/null +++ b/PagesVisited.class.php @@ -0,0 +1,380 @@ +<?php +/** + * PagesVisited extension for BlueSpice + * + * Provides a personalized list of last visited pages. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * This file is part of BlueSpice MediaWiki + * For further information visit http://www.bluespice.com + * + * @author Robert Vogel <vo...@hallowelt.com> + * @author Stephan Muggli <mug...@hallowelt.com> + * @version 2.23.1 + * @package BlueSpice_Extensions + * @subpackage PagesVisited + * @copyright Copyright (C) 2016 Hallo Welt! GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ + +/** + * Base class for PagesVisited extension + * @package BlueSpice_Extensions + * @subpackage PagesVisited + */ +class PagesVisited extends BsExtensionMW { + + /** + * Should cache a result list. Currently disabled. + * @var array + */ + private static $prResultListViewCache = array(); + /** + * Initialization of PagesVisited extension + */ + protected function initExt() { + wfProfileIn( 'BS::'.__METHOD__ ); + $this->setHook( 'ParserFirstCallInit' ); + $this->setHook( 'BSUserSidebarDefaultWidgets' ); + $this->setHook( 'BSWidgetListHelperInitKeyWords' ); + $this->setHook( 'BSInsertMagicAjaxGetData' ); + $this->setHook( 'BSUsageTrackerRegisterCollectors' ); + + BsConfig::registerVar( 'MW::PagesVisited::WidgetLimit', 10, BsConfig::LEVEL_USER|BsConfig::TYPE_INT, 'bs-pagesvisited-pref-widgetlimit', 'int' ); + BsConfig::registerVar( 'MW::PagesVisited::WidgetNS', array( 0 ), BsConfig::LEVEL_USER|BsConfig::TYPE_ARRAY_STRING|BsConfig::USE_PLUGIN_FOR_PREFS, 'bs-pagesvisited-pref-widgetns', 'multiselectex' ); + BsConfig::registerVar( 'MW::PagesVisited::WidgetSortOdr', 'time', BsConfig::LEVEL_USER|BsConfig::TYPE_STRING|BsConfig::USE_PLUGIN_FOR_PREFS, 'bs-pagesvisited-pref-widgetsortodr', 'select' ); + + wfProfileOut( 'BS::'.__METHOD__ ); + } + + /** + * The preferences plugin callback + * @param string $sAdapterName + * @param BsConfig $oVariable + * @return array MediaWiki preferences options array + */ + public function runPreferencePlugin( $sAdapterName, $oVariable ) { + $aPrefs = array(); + switch( $oVariable->getName() ) { + case 'WidgetNS': + $aPrefs = array( + 'type' => 'multiselectex', + 'options' => BsNamespaceHelper::getNamespacesForSelectOptions( array( -2, NS_MEDIA, NS_MEDIAWIKI, NS_MEDIAWIKI_TALK, NS_SPECIAL ) ) + ); + break; + case 'WidgetSortOdr': + $aPrefs = array( + 'options' => array( + wfMessage( 'bs-pagesvisited-pref-sort-time' )->plain() => 'time', + wfMessage( 'bs-pagesvisited-pref-sort-pagename' )->plain() => 'pagename' + ) + ); + break; + default: + break; + } + return $aPrefs; + } + + /** + * Inject tags into InsertMagic + * @param Object $oResponse reference + * $param String $type + * @return always true to keep hook running + */ + public function onBSInsertMagicAjaxGetData( &$oResponse, $type ) { + if( $type != 'tags' ) return true; + + $oDescriptor = new stdClass(); + $oDescriptor->id = 'bs:pagesvisited'; + $oDescriptor->type = 'tag'; + $oDescriptor->name = 'pagesvisited'; + $oDescriptor->desc = wfMessage( 'bs-pagesvisited-tag-pagesvisited-desc' )->escaped(); + $oDescriptor->code = '<bs:pagesvisited />'; + $oDescriptor->previewable = false; + $oDescriptor->examples = array( + array( + 'code' => '<bs:pagesvisited count="7" maxtitlelength="40" />' + ) + ); + $oDescriptor->helplink = 'https://help.bluespice.com/index.php/PagesVisited'; + $oResponse->result[] = $oDescriptor; + + return true; + } + + /** + * Event-Handler for 'MW::Utility::WidgetListHelper::InitKeywords'. Registers a callback for the PAGESVISITED Keyword. + * @param array $aKeywords An array of Keywords array( 'KEYWORD' => $callable ) + * @return array The appended array of Keywords array( 'KEYWORD' => $callable ) + */ + public function onBSWidgetListHelperInitKeyWords( &$aKeywords, $oTitle ) { + $aKeywords['PAGESVISITED'] = array( $this, 'onWidgetListKeyword' ); + return true; + } + + /** + * Hook-Handler for 'ParserFirstCallInit' (MediaWiki). Sets new Parser-Hooks for the <bs:pagesvisited /> and <pagesvisited /> tag + * @param Parser $oParser The current Parser object from MediaWiki Framework + * @return bool Always true to keep hook running. + */ + public function onParserFirstCallInit( &$oParser ) { + $oParser->setHook( 'pagesvisited', array( $this, 'onPagesVisitedTag' ) ); + $oParser->setHook( 'bs:pagesvisited', array( $this, 'onPagesVisitedTag' ) ); + return true; + } + + /** + * Handles the Parser Hook for TagExtensions + * @param string $sInput Content of $lt;pagesvisited /> from MediaWiki Framework + * @param array $aAttributes Attributes of <pagesvisited /> from MediaWiki Framework + * @param Parser $oParser Parser object from MediaWiki Framework + * @return string HTML list of recently visited pages + */ + public function onPagesVisitedTag( $sInput, $aAttributes, $oParser ) { + $oParser->disableCache(); + $oParser->getOutput()->setProperty( 'bs-tag-pagesvisited', 1 ); + + $oErrorListView = new ViewTagErrorList( $this ); + + $iCount = BsCore::sanitizeArrayEntry( $aAttributes, 'count', 5, BsPARAMTYPE::INT ); + $iMaxTitleLength = BsCore::sanitizeArrayEntry( $aAttributes, 'maxtitlelength', 20, BsPARAMTYPE::INT ); + $sNamespaces = BsCore::sanitizeArrayEntry( $aAttributes, 'namespaces', 'all', BsPARAMTYPE::STRING | BsPARAMOPTION::CLEANUP_STRING ); + $sSortOrder = BsCore::sanitizeArrayEntry( $aAttributes, 'order', 'time', BsPARAMTYPE::STRING | BsPARAMOPTION::CLEANUP_STRING ); + + //Validation + $oValidationICount = BsValidator::isValid( 'IntegerRange', $iCount, array('fullResponse' => true, 'lowerBoundary' => 1, 'upperBoundary' => 30) ); + if ( $oValidationICount->getErrorCode() ) { + $oErrorListView->addItem( new ViewTagError( 'count: '.$oValidationICount->getI18N() ) ); + } + + $oValidationIMaxTitleLength = BsValidator::isValid( 'IntegerRange', $iMaxTitleLength, array('fullResponse' => true, 'lowerBoundary' => 5, 'upperBoundary' => 50) ); + if ( $oValidationIMaxTitleLength->getErrorCode() ) { + $oErrorListView->addItem( new ViewTagError( 'maxtitlelength: '.$oValidationIMaxTitleLength->getI18N() ) ); + } + + if ( $oErrorListView->hasItems() ) { + return $oErrorListView->execute(); + } + $iCurrentNamespaceId = $oParser->getTitle()->getNamespace(); + $oListView = $this->makePagesVisitedWikiList( $iCount, $sNamespaces, $iCurrentNamespaceId, $iMaxTitleLength, $sSortOrder ); + $sOut = $oListView->execute(); + + if ( $oListView instanceof ViewTagErrorList ) { + return $sOut; + } else { + return $this->mCore->parseWikiText( $sOut, $this->getTitle() ); + } + } + + /** + * Callback for WidgetListHelper. Adds the PagesVisited Widget to the list if Keyword is found. + * @return ViewWidget. + */ + public function onWidgetListKeyword() { + $aViews = array(); + $this->addWidgetView( $aViews ); + $aViews[0]->setAdditionalBodyClasses( array( 'bs-nav-links' ) ); + + return $aViews[0]; + } + + /** + * Callback for WidgetBar. Adds the PagesVisited Widget to the WidgetBar as default filling. + * @param BsEvent $oEvent The event to handle + * @param array $aWidgets An array of WidgetView objects + * @return array An array of WidgetView objects + */ + public function onBSUserSidebarDefaultWidgets( &$aViews, $oUser, $oTitle ) { + $aView = array(); + $this->addWidgetView( $aView ); + $aView[0]->setAdditionalBodyClasses( array( 'bs-nav-links' ) ); + $aViews['PAGESVISITED'] = $aView[0]; + + return true; + } + + /** + * Creates a Widget view object for the BlueSpice Skin. + * @param array &$aViews List of Widget view objects from the BlueSpice Skin. + */ + private function addWidgetView( &$aViews ) { + $iCount = BsConfig::get( 'MW::PagesVisited::WidgetLimit' ); + $aNamespaces = BsConfig::get( 'MW::PagesVisited::WidgetNS' ); + $sSortOrder = BsConfig::get( 'MW::PagesVisited::WidgetSortOdr' ); + + //Validation + $oValidationICount = BsValidator::isValid( 'IntegerRange', $iCount, array( 'fullResponse' => true, 'lowerBoundary' => 1, 'upperBoundary' => 30 ) ); + if ( $oValidationICount->getErrorCode() ) $iCount = 10; + + $iCurrentNamespaceId = $this->getTitle()->getNamespace(); + + // TODO RBV (04.07.11 15:02): Rework method -> implode() is a workaround for legacy code. + $oListView = $this->makePagesVisitedWikiList( $iCount, implode( ',', $aNamespaces ), $iCurrentNamespaceId, 30, $sSortOrder ); + $sOut = $oListView->execute(); + + if ( !( $oListView instanceof ViewTagError ) ) { + $sOut = $this->mCore->parseWikiText( $sOut, $this->getTitle() ); + } + + $oWidgetView = new ViewWidget(); + $oWidgetView->setTitle( wfMessage( 'bs-pagesvisited-widget-title' )->plain() ) + ->setBody( $sOut ) + ->setAdditionalBodyClasses( array( 'bs-nav-links' ) ); //For correct margin and fontsize + + $aViews[] = $oWidgetView; + } + + /** + * Gets the recently visited pages of the current user. + * @param int $iCount The number of pages to display + * @param string $sNamespaces Comma separated list of requested namespaces, i.e. "1,5,Category,101" + * @param int $iCurrentNamespaceId To determin wether the current namespace is in the list of requested namespaces + * @param string $sSortOrder Defines the sorting of the list. 'time|pagename', default is 'time' + * @return ViewBaseElement Contains the list in its _data member. The predefined template is '*[[{LINK}|{TITLE}]]\n' + */ + private function makePagesVisitedWikiList( $iCount = 5, $sNamespaces = 'all', $iCurrentNamespaceId = 0, $iMaxTitleLength = 20, $sSortOrder = 'time' ) { + $oCurrentUser = $this->getUser(); + if ( is_null( $oCurrentUser ) ) return null; // in CLI + + //$sCacheKey = md5( $oCurrentUser->getName().$iCount.$sNamespaces.$iCurrentNamespaceId.$iMaxTitleLength ); + //if( isset( self::$prResultListViewCache[$sCacheKey] ) ) return self::$prResultListViewCache[$sCacheKey]; + $oErrorListView = new ViewTagErrorList( $this ); + $oErrorView = null; + $aConditions = array(); + $aNamespaceIndexes = array( 0 ); + + try { + $aNamespaceIndexes = BsNamespaceHelper::getNamespaceIdsFromAmbiguousCSVString( $sNamespaces ); //Returns array of integer indexes + } catch ( BsInvalidNamespaceException $oException ) { + $aInvalidNamespaces = $oException->getListOfInvalidNamespaces(); + + $oVisitedPagesListView = new ViewBaseElement(); + $oVisitedPagesListView->setTemplate( '<ul><li><em>{TEXT}</em></li></ul>' . "\n" ); + + $iCount = count( $aInvalidNamespaces ); + $sNs = implode( ', ', $aInvalidNamespaces ); + $sErrorMsg = wfMessage( 'bs-pagesvisited-error-nsnotvalid', $iCount, $sNs )->text(); + + $oVisitedPagesListView->addData( array ( 'TEXT' => $sErrorMsg ) ); + + //self::$prResultListViewCache[$sCacheKey] = $oVisitedPagesListView; + return $oVisitedPagesListView; + } + + $aConditions = array( + 'wo_user_id' => $oCurrentUser->getId(), + 'wo_action' => 'view' + ); + + $aConditions[] = 'wo_page_namespace IN ('.implode( ',', $aNamespaceIndexes ).')'; //Add IN clause to conditions-array + $aConditions[] = 'wo_page_namespace != -1'; // TODO RBV (24.02.11 13:54): Filter SpecialPages because there are difficulties to list them + + $aOptions = array( + 'GROUP BY' => 'wo_page_id, wo_page_namespace, wo_page_title', + 'ORDER BY' => 'MAX(wo_timestamp) DESC' + ); + + if ( $sSortOrder == 'pagename' ) $aOptions['ORDER BY'] = 'wo_page_title ASC'; + + //If the page the extension is used on appears in the result set we have to fetch one row more than neccessary. + if ( in_array( $iCurrentNamespaceId, $aNamespaceIndexes ) ) $aOptions['OFFSET'] = 1; + + $aFields = array( 'wo_page_id', 'wo_page_namespace', 'wo_page_title' ); + $sTable = 'bs_whoisonline'; + + $dbr = wfGetDB( DB_REPLICA ); + + global $wgDBtype; + if ( $wgDBtype == 'oracle' ) { + $sRowNumField = 'rnk'; + $sTable = mb_strtoupper( $dbr->tablePrefix().$sTable ); + $sFields = implode( ',', $aFields ); + $sConditions = $dbr->makeList( $aConditions, LIST_AND ); + $aOptions['ORDER BY'] = $sSortOrder == 'pagename' ? $aOptions['ORDER BY'] : 'wo_timestamp DESC' ; + + $res = $dbr->query( "SELECT ".$sFields." FROM ( + SELECT ".$sFields.", row_number() over (order by ".$aOptions['ORDER BY'].") ".$sRowNumField." + FROM ".$sTable." + WHERE ".$sConditions." + ) + WHERE ".$sRowNumField." BETWEEN (0) AND (".$iCount.") GROUP BY ".$aOptions["GROUP BY"]."" + ); + } else { + $res = $dbr->select( + $sTable, + $aFields, + $aConditions, + __METHOD__, + $aOptions + ); + } + + $oVisitedPagesListView = new ViewBaseElement(); + $oVisitedPagesListView->setTemplate( '*{WIKILINK}' . "\n" ); + $iItems = 1; + + foreach ( $res as $row ) { + if ( $iItems > $iCount ) break; + $oVisitedPageTitle = Title::newFromID( $row->wo_page_id ); + /* + // TODO RBV (24.02.11 13:52): Make SpecialPages work... + $oVisitedPageTitle = ( $row->wo_page_namespace != NS_SPECIAL ) + ? Title::newFromID( $row->wo_page_id ) + //: SpecialPage::getTitleFor( $row->wo_page_title ); + : Title::makeTitle( NS_SPECIAL, $row->wo_page_title ); + */ + if ( $oVisitedPageTitle == null + || $oVisitedPageTitle->exists() === false + || $oVisitedPageTitle->quickUserCan( 'read' ) === false + //|| $oVisitedPageTitle->isRedirect() //Maybe later... + ) { + continue; + } + + $sDisplayTitle = BsStringHelper::shorten( + $oVisitedPageTitle->getPrefixedText(), + array( 'max-length' => $iMaxTitleLength, 'position' => 'middle' ) + ); + + $oVisitedPagesListView->addData( + array ( 'WIKILINK' => BsLinkProvider::makeEscapedWikiLinkForTitle( $oVisitedPageTitle, $sDisplayTitle ) ) + ); + $iItems++; + } + + //$dbr->freeResult( $res ); + + //self::$prResultListViewCache[$sCacheKey] = $oVisitedPagesListView; + return $oVisitedPagesListView; + } + + /** + * Register tag with UsageTracker extension + * @param array $aCollectorsConfig + * @return Always true to keep hook running + */ + public function onBSUsageTrackerRegisterCollectors( &$aCollectorsConfig ) { + $aCollectorsConfig['bs:pagesvisited'] = array( + 'class' => 'Property', + 'config' => array( + 'identifier' => 'bs-tag-pagesvisited' + ) + ); + return true; + } +} diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..db434bb --- /dev/null +++ b/composer.json @@ -0,0 +1,13 @@ +{ + "name": "mediawiki/blue-spice-pages-visited", + "type": "mediawiki-extension", + "description": "Provides a personalized list of the last visited pages", + "license": "GPL-3.0", + "require": { + "composer/installers": "~1.0" + }, + "autoload": { + "psr-4": { + } + } +} \ No newline at end of file diff --git a/extension.json b/extension.json new file mode 100644 index 0000000..1890efb --- /dev/null +++ b/extension.json @@ -0,0 +1,28 @@ +{ + "name": "BlueSpicePagesVisited", + "version": "2.27.1-alpha", + "url": "https://help.bluespice.com/index.php/PagesVisited", + "author": [ + "Robert Vogel", + "Stephan Muggli" + ], + "descriptionmsg": "bs-pagesvisited-desc", + "license-name": "GPL-2.0+", + "type": "bluespice", + "bsgExtensions": { + "BlueSpicePagesVisited": { + "className": "PagesVisited", + "extPath": "/BlueSpicePagesVisited" + } + }, + "MessagesDirs": { + "PagesVisited": [ + "i18n" + ] + }, + "AutoloadClasses": { + "PagesVisited": "PagesVisited.class.php" + }, + "load_composer_autoloader": true, + "manifest_version": 1 +} diff --git a/i18n/ar.json b/i18n/ar.json new file mode 100644 index 0000000..c1d064d --- /dev/null +++ b/i18n/ar.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Meno25" + ] + }, + "bs-pagesvisited-pref-sort-pagename": "العنوان" +} diff --git a/i18n/ba.json b/i18n/ba.json new file mode 100644 index 0000000..ee724c5 --- /dev/null +++ b/i18n/ba.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Sagan", + "Азат Хәлилов" + ] + }, + "bs-pagesvisited-desc": "Үҙе төҙөгән битте ҡараусылар исемлеген күрһәтә\n\nҺуңғы ҡаралған биттәрҙең үҙ исемлеген тәҡдим итә", + "prefs-pagesvisited": "Битт ҡарау", + "bs-pagesvisited-widget-title": "Ҡаралған биттәр", + "bs-pagesvisited-error-nsnotvalid": "Исемдәр арауығы дөрөҫ түгел{{PLURAL:$1||s}} <code>$2</code> {{PLURAL:$1|is|are}}.", + "bs-pagesvisited-pref-widgetlimit": "Яҙма эшләү сикләнгән", + "bs-pagesvisited-pref-widgetns": "Исемдәр арауығы:", + "bs-pagesvisited-pref-widgetsortodr": "Тәртипләштереү:", + "bs-pagesvisited-pref-sort-time": "Ваҡыт", + "bs-pagesvisited-pref-sort-pagename": "Баш һүҙ", + "bs-pagesvisited-tag-pagesvisited-desc": "Һеҙ ҡараған биттәр исемлеге" +} diff --git a/i18n/bg.json b/i18n/bg.json new file mode 100644 index 0000000..bf3b280 --- /dev/null +++ b/i18n/bg.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "StanProg" + ] + }, + "bs-pagesvisited-pref-widgetns": "Именни пространства:" +} diff --git a/i18n/bgn.json b/i18n/bgn.json new file mode 100644 index 0000000..5011073 --- /dev/null +++ b/i18n/bgn.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Baloch Afghanistan" + ] + }, + "bs-pagesvisited-pref-sort-time": "وخت", + "bs-pagesvisited-pref-sort-pagename": "ئنوان" +} diff --git a/i18n/bn.json b/i18n/bn.json new file mode 100644 index 0000000..60a37e8 --- /dev/null +++ b/i18n/bn.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Aftabuzzaman" + ] + }, + "bs-pagesvisited-pref-widgetns": "নামস্থান:", + "bs-pagesvisited-pref-widgetsortodr": "সাজান:", + "bs-pagesvisited-pref-sort-time": "সময়", + "bs-pagesvisited-pref-sort-pagename": "শিরোনাম" +} diff --git a/i18n/br.json b/i18n/br.json new file mode 100644 index 0000000..fc733d5 --- /dev/null +++ b/i18n/br.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Fohanno" + ] + }, + "prefs-pagesvisited": "Pajennoù gweladennet", + "bs-pagesvisited-widget-title": "Pajennoù gweladennet", + "bs-pagesvisited-pref-widgetsortodr": "Renkañ dre :", + "bs-pagesvisited-pref-sort-time": "Eur", + "bs-pagesvisited-pref-sort-pagename": "Titl", + "bs-pagesvisited-tag-pagesvisited-desc": "Diskwel ur roll eus ar pajennoù ho peus gweladennet." +} diff --git a/i18n/ce.json b/i18n/ce.json new file mode 100644 index 0000000..8b4a2f0 --- /dev/null +++ b/i18n/ce.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Умар" + ] + }, + "bs-pagesvisited-desc": "Хьайн хьаьжанчу агӀонийн могӀам ба йиш хуьлуьйту.", + "prefs-pagesvisited": "Хьаьжина агӀонаш", + "bs-pagesvisited-widget-title": "Хьаьжина агӀонаш", + "bs-pagesvisited-error-nsnotvalid": "Нийса йоцу цӀерийн {{PLURAL:$1|меттиг}} <code>$2</code> {{PLURAL:$1|is|are}}.", + "bs-pagesvisited-pref-widgetlimit": "ДӀаяздарийн доза тохар:", + "bs-pagesvisited-pref-widgetns": "ЦӀерийн меттиг:", + "bs-pagesvisited-pref-widgetsortodr": "Къастам бе:", + "bs-pagesvisited-pref-sort-time": "Хан", + "bs-pagesvisited-pref-sort-pagename": "Корта", + "bs-pagesvisited-tag-pagesvisited-desc": "Хьо хьаьжжина агӀонийн могӀам гойту." +} diff --git a/i18n/cv.json b/i18n/cv.json new file mode 100644 index 0000000..4cb0955 --- /dev/null +++ b/i18n/cv.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Chuvash2014" + ] + }, + "bs-pagesvisited-pref-sort-time": "Вăхăт" +} diff --git a/i18n/da.json b/i18n/da.json new file mode 100644 index 0000000..ab6dcee --- /dev/null +++ b/i18n/da.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Joedalton" + ] + }, + "bs-pagesvisited-desc": "Tilbyder en personlig liste over de sidst besøgte sider", + "prefs-pagesvisited": "Sider besøgt", + "bs-pagesvisited-widget-title": "Sider besøgt", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|navnerum}} <code>$2</code> {{PLURAL:$1|er}} ikke gyldig(e).", + "bs-pagesvisited-pref-widgetlimit": "Begrænsning af elementer:", + "bs-pagesvisited-pref-widgetns": "Navnerum:", + "bs-pagesvisited-pref-widgetsortodr": "Sorter efter:", + "bs-pagesvisited-pref-sort-time": "Tidspunkt", + "bs-pagesvisited-pref-sort-pagename": "Titel", + "bs-pagesvisited-tag-pagesvisited-desc": "Viser en liste over de sidst besøgte sider. Denne liste kan begrænses af parametre." +} diff --git a/i18n/de-formal.json b/i18n/de-formal.json new file mode 100644 index 0000000..d1bea91 --- /dev/null +++ b/i18n/de-formal.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Stephan Muggli <mug...@hallowelt.biz>" + ] + }, + "bs-pagesvisited-tag-pagesvisited-desc": "Gibt eine Liste mit Seiten aus, die Sie besucht haben." +} diff --git a/i18n/de.json b/i18n/de.json new file mode 100644 index 0000000..b2d83dc --- /dev/null +++ b/i18n/de.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Stephan Muggli <mug...@hallowelt.biz>", + "Metalhead64" + ] + }, + "bs-pagesvisited-desc": "Stellt eine personalisierte Liste der zuletzt besuchten Seiten zur Verfügung", + "prefs-pagesvisited": "Besuchte Seiten", + "bs-pagesvisited-widget-title": "Besuchte Seiten", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Der|Die}} angegebene{{PLURAL:$1||n}} Namens{{PLURAL:$1|raum|räume}} <code>$2</code> {{PLURAL:$1|ist|sind}} nicht gültig.", + "bs-pagesvisited-pref-widgetlimit": "Anzahl der Einträge:", + "bs-pagesvisited-pref-widgetns": "Anzuzeigende Namensräume:", + "bs-pagesvisited-pref-widgetsortodr": "Sortieren nach:", + "bs-pagesvisited-pref-sort-time": "Zeit", + "bs-pagesvisited-pref-sort-pagename": "Titel", + "bs-pagesvisited-tag-pagesvisited-desc": "Zeigt eine Liste kürzlich besuchter Seiten an. Diese Liste kann durch Parameter beschränkt werden." +} diff --git a/i18n/en-gb.json b/i18n/en-gb.json new file mode 100644 index 0000000..2ff1554 --- /dev/null +++ b/i18n/en-gb.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Shirayuki" + ] + }, + "bs-pagesvisited-desc": "Provides a personalised list of the last visited pages" +} diff --git a/i18n/en.json b/i18n/en.json new file mode 100644 index 0000000..638b211 --- /dev/null +++ b/i18n/en.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Stephan Muggli <mug...@hallowelt.biz>" + ] + }, + "bs-pagesvisited-desc": "Provides a personalized list of the last visited pages", + "prefs-pagesvisited": "Pages visited", + "bs-pagesvisited-widget-title": "Pages visited", + "bs-pagesvisited-error-nsnotvalid": "Given {{PLURAL:$1|namespace|namespaces}} <code>$2</code> {{PLURAL:$1|is|are}} not valid.", + "bs-pagesvisited-pref-widgetlimit": "Limit of entries:", + "bs-pagesvisited-pref-widgetns": "Namespaces:", + "bs-pagesvisited-pref-widgetsortodr": "Sort by:", + "bs-pagesvisited-pref-sort-time": "Time", + "bs-pagesvisited-pref-sort-pagename": "Title", + "bs-pagesvisited-tag-pagesvisited-desc": "Shows a list of recently visited pages. This list can be restricted by parameters." +} diff --git a/i18n/es.json b/i18n/es.json new file mode 100644 index 0000000..018cf4b --- /dev/null +++ b/i18n/es.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Macofe" + ] + }, + "bs-pagesvisited-desc": "Proporciona una lista personalizada de las últimas páginas visitadas", + "prefs-pagesvisited": "Páginas visitadas", + "bs-pagesvisited-widget-title": "Páginas visitadas", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|El espacio|Los espacios}} de nombres <code>$2</code> no {{PLURAL:$1|es válido|son válidos}}.", + "bs-pagesvisited-pref-widgetlimit": "Límite de entradas:", + "bs-pagesvisited-pref-widgetns": "Espacios de nombresː", + "bs-pagesvisited-pref-widgetsortodr": "Ordenar por:", + "bs-pagesvisited-pref-sort-time": "Tiempo", + "bs-pagesvisited-pref-sort-pagename": "Título", + "bs-pagesvisited-tag-pagesvisited-desc": "Muestra una lista de las páginas visitadas recientemente. Esta lista puede restringirse por parámetros." +} diff --git a/i18n/fa.json b/i18n/fa.json new file mode 100644 index 0000000..02d6de6 --- /dev/null +++ b/i18n/fa.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Alirezaaa" + ] + }, + "bs-pagesvisited-desc": "یک فهرست شخصی از آخرین صفحات بازدیدشده فراهم میکند", + "prefs-pagesvisited": "صفحات بازدیدشده", + "bs-pagesvisited-widget-title": "صفحات بازدیدشده", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|فضای نام|فضاهای نام}} <code>$2</code> دادهشده معتبر {{PLURAL:$1|نیست|نیستند}}.", + "bs-pagesvisited-pref-widgetlimit": "محدودیت ورودیها:", + "bs-pagesvisited-pref-widgetns": "فضاهای نام:", + "bs-pagesvisited-pref-widgetsortodr": "ترتیب بر پایه:", + "bs-pagesvisited-pref-sort-time": "زمان", + "bs-pagesvisited-pref-sort-pagename": "عنوان", + "bs-pagesvisited-tag-pagesvisited-desc": "یک فهرست از صفحاتی که بازدید کردید نشان میدهد." +} diff --git a/i18n/fr.json b/i18n/fr.json new file mode 100644 index 0000000..c94b30f --- /dev/null +++ b/i18n/fr.json @@ -0,0 +1,19 @@ +{ + "@metadata": { + "authors": [ + "Gomoko", + "SnowedEarth", + "Wladek92" + ] + }, + "bs-pagesvisited-desc": "Fournit une liste personnalisée des dernières pages visitées", + "prefs-pagesvisited": "Pages visitées", + "bs-pagesvisited-widget-title": "Pages visitées", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|L’espace de nom|les espaces de nom}} <code>$2</code> {{PLURAL:$1|n’est|ne sont}} pas valide{{PLURAL:$1||s}}.", + "bs-pagesvisited-pref-widgetlimit": "Limite d’entrées :", + "bs-pagesvisited-pref-widgetns": "Espaces de nom :", + "bs-pagesvisited-pref-widgetsortodr": "Trier par :", + "bs-pagesvisited-pref-sort-time": "Horodatage", + "bs-pagesvisited-pref-sort-pagename": "Titre", + "bs-pagesvisited-tag-pagesvisited-desc": "Affiche une liste de pages récemment visitées. Cette liste peut être filtrée par des paramètres." +} diff --git a/i18n/fy.json b/i18n/fy.json new file mode 100644 index 0000000..104d598 --- /dev/null +++ b/i18n/fy.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Robin0van0der0vliet" + ] + }, + "bs-pagesvisited-pref-widgetns": "Nammeromten:", + "bs-pagesvisited-pref-sort-time": "Tiid" +} diff --git a/i18n/gl.json b/i18n/gl.json new file mode 100644 index 0000000..e4d7af1 --- /dev/null +++ b/i18n/gl.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Elisardojm" + ] + }, + "bs-pagesvisited-desc": "Proporciona unha lista personalizada das últimas páxinas visitadas", + "prefs-pagesvisited": "Páxinas visitadas", + "bs-pagesvisited-widget-title": "Páxinas visitadas", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|O espazo|Os espazos}} de nomes <code>$2</code> non {{PLURAL:$1|é válido|son válidos}}.", + "bs-pagesvisited-pref-widgetlimit": "Límite de entradas:", + "bs-pagesvisited-pref-widgetns": "Espazos de nomes:", + "bs-pagesvisited-pref-widgetsortodr": "Ordenar por:", + "bs-pagesvisited-pref-sort-time": "Tempo", + "bs-pagesvisited-pref-sort-pagename": "Título", + "bs-pagesvisited-tag-pagesvisited-desc": "Mostra unha lista das páxinas visitadas recentemente. Esta lista pode restrinxinse con parámetros." +} diff --git a/i18n/he.json b/i18n/he.json new file mode 100644 index 0000000..f4fbe41 --- /dev/null +++ b/i18n/he.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Guycn2" + ] + }, + "bs-pagesvisited-tag-pagesvisited-desc": "הצגת רשימה של הדפים שניצפו לאחרונה. אפשר להגביל את זה באמצעות פרמטרים." +} diff --git a/i18n/hu.json b/i18n/hu.json new file mode 100644 index 0000000..31bde26 --- /dev/null +++ b/i18n/hu.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Csega" + ] + }, + "prefs-pagesvisited": "Meglátogatott oldalak", + "bs-pagesvisited-widget-title": "Meglátogatott oldalak", + "bs-pagesvisited-pref-widgetns": "Névterek:", + "bs-pagesvisited-pref-widgetsortodr": "Rendezés:", + "bs-pagesvisited-pref-sort-time": "Idő", + "bs-pagesvisited-pref-sort-pagename": "Cím" +} diff --git a/i18n/id.json b/i18n/id.json new file mode 100644 index 0000000..c0f268e --- /dev/null +++ b/i18n/id.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Rachmat.Wahidi" + ] + }, + "bs-pagesvisited-tag-pagesvisited-desc": "Menampilkan daftar halaman yang baru dikunjungi. Daftar ini dapat dibatasi dengan parameter." +} diff --git a/i18n/it.json b/i18n/it.json new file mode 100644 index 0000000..49e7a4f --- /dev/null +++ b/i18n/it.json @@ -0,0 +1,19 @@ +{ + "@metadata": { + "authors": [ + "Beta16", + "Matteocng", + "Selven" + ] + }, + "bs-pagesvisited-desc": "Fornisce un elenco personalizzato delle ultime pagine visitate", + "prefs-pagesvisited": "Pagine visitate", + "bs-pagesvisited-widget-title": "Pagine visitate", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Il|I}} namespace <code>$2</code> non {{PLURAL:$1|è valido|sono validi}}.", + "bs-pagesvisited-pref-widgetlimit": "Limite di ingressi:", + "bs-pagesvisited-pref-widgetns": "Namespace:", + "bs-pagesvisited-pref-widgetsortodr": "Ordina per:", + "bs-pagesvisited-pref-sort-time": "Ora", + "bs-pagesvisited-pref-sort-pagename": "Titolo", + "bs-pagesvisited-tag-pagesvisited-desc": "Mostra un elenco delle pagine visitate recentemente. Questo elenco può essere ristretto con dei parametri." +} diff --git a/i18n/ja.json b/i18n/ja.json new file mode 100644 index 0000000..151e932 --- /dev/null +++ b/i18n/ja.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Shirayuki", + "Otokoume" + ] + }, + "bs-pagesvisited-desc": "最後に訪問したページのパーソナライズされたリストを提供します", + "prefs-pagesvisited": "閲覧したページ", + "bs-pagesvisited-widget-title": "閲覧したページ", + "bs-pagesvisited-error-nsnotvalid": "指定した{{PLURAL:$1|名前空間}} <code>$2</code> は有効ではありません。", + "bs-pagesvisited-pref-widgetlimit": "項目数の上限:", + "bs-pagesvisited-pref-widgetns": "名前空間:", + "bs-pagesvisited-pref-widgetsortodr": "並び順:", + "bs-pagesvisited-pref-sort-time": "日時", + "bs-pagesvisited-pref-sort-pagename": "ページ名", + "bs-pagesvisited-tag-pagesvisited-desc": "閲覧したページの一覧を表示する。" +} diff --git a/i18n/ko.json b/i18n/ko.json new file mode 100644 index 0000000..4930951 --- /dev/null +++ b/i18n/ko.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Hwangjy9" + ] + }, + "bs-pagesvisited-pref-widgetns": "이름공간:", + "bs-pagesvisited-pref-widgetsortodr": "정렬 기준:", + "bs-pagesvisited-pref-sort-time": "시간", + "bs-pagesvisited-pref-sort-pagename": "제목" +} diff --git a/i18n/ksh.json b/i18n/ksh.json new file mode 100644 index 0000000..959d9d4 --- /dev/null +++ b/i18n/ksh.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Purodha" + ] + }, + "bs-pagesvisited-desc": "Brängk en päsöhnlesche Leß vun de zerläß opjerohfe Sigge.", + "prefs-pagesvisited": "Opjerohfe Sigge", + "bs-pagesvisited-widget-title": "Opjerohfe Sigge", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Dat aanjejovve Appachtemang|De aanjejovve Appachtemangs|Kein aanjejovve Appachtemang}} <code>$2</code> {{PLURAL:$1|es|sin|es}} onjöltesch.", + "bs-pagesvisited-pref-widgetlimit": "De Aanzahl Enndrähsch:", + "bs-pagesvisited-pref-widgetns": "Appachtemangs:", + "bs-pagesvisited-pref-widgetsortodr": "Zettehr noh:", + "bs-pagesvisited-pref-sort-time": "Zigg", + "bs-pagesvisited-pref-sort-pagename": "Övverschreff", + "bs-pagesvisited-tag-pagesvisited-desc": "Zeijsch en Leß met de köözlesch opjerohfe Sigge. Di löht sesch övver Parramehtere beschrängke." +} diff --git a/i18n/lb.json b/i18n/lb.json new file mode 100644 index 0000000..f05069d --- /dev/null +++ b/i18n/lb.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "Robby" + ] + }, + "bs-pagesvisited-desc": "Stellt eng personaliséiert Lëscht vun de leschte besichte Säiten", + "prefs-pagesvisited": "Besicht Säiten", + "bs-pagesvisited-widget-title": "Besicht Säiten", + "bs-pagesvisited-pref-widgetns": "Nummraim:", + "bs-pagesvisited-pref-widgetsortodr": "Zortéieren no:", + "bs-pagesvisited-pref-sort-time": "Zäit", + "bs-pagesvisited-pref-sort-pagename": "Titel", + "bs-pagesvisited-tag-pagesvisited-desc": "Weist eng Lëscht vu Säiten déi rezent besicht goufen. Dës Lëscht kann duerch Parametere limitéiert ginn." +} diff --git a/i18n/lki.json b/i18n/lki.json new file mode 100644 index 0000000..840d6ba --- /dev/null +++ b/i18n/lki.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Lakzon" + ] + }, + "prefs-pagesvisited": "وةڵگةل بازدیدشده", + "bs-pagesvisited-widget-title": "وةڵگةل بازدیدشده" +} diff --git a/i18n/lt.json b/i18n/lt.json new file mode 100644 index 0000000..e22170a --- /dev/null +++ b/i18n/lt.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "Eitvys200" + ] + }, + "bs-pagesvisited-desc": "Pateikia persignalizuotą neseniai lankytų puslapių sąrašą", + "prefs-pagesvisited": "Lankyti puslapiai", + "bs-pagesvisited-widget-title": "Lankyti puslapiai", + "bs-pagesvisited-pref-widgetlimit": "Įrašų limitas:", + "bs-pagesvisited-pref-widgetsortodr": "Rūšiuoti pagal:", + "bs-pagesvisited-pref-sort-time": "Laiką", + "bs-pagesvisited-pref-sort-pagename": "Pavadinimą", + "bs-pagesvisited-tag-pagesvisited-desc": "Rodo neseniai lankytų puslapių sąrašą. Šis sąrašas gali būti apribotas parametrų." +} diff --git a/i18n/mai.json b/i18n/mai.json new file mode 100644 index 0000000..de425bf --- /dev/null +++ b/i18n/mai.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "बिप्लब आनन्द" + ] + }, + "prefs-pagesvisited": "भ्रमण कएल पृष्ठसभ", + "bs-pagesvisited-widget-title": "भ्रमण कएल पृष्ठसभ", + "bs-pagesvisited-pref-widgetlimit": "प्रविष्टि सभ के सीमा:", + "bs-pagesvisited-pref-widgetns": "नामस्थान सभ:", + "bs-pagesvisited-pref-widgetsortodr": "क्रमबद्ध करू:", + "bs-pagesvisited-pref-sort-time": "समए", + "bs-pagesvisited-pref-sort-pagename": "शीर्षक", + "bs-pagesvisited-tag-pagesvisited-desc": "अहाँद्वारा घुमल गेल पृष्ठके सूची देखाऊ।" +} diff --git a/i18n/mk.json b/i18n/mk.json new file mode 100644 index 0000000..5dd839e --- /dev/null +++ b/i18n/mk.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Bjankuloski06" + ] + }, + "bs-pagesvisited-desc": "Дава лично прилагоден список на скорешно посетените страници", + "prefs-pagesvisited": "Посетени страници", + "bs-pagesvisited-widget-title": "Посетени страници", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Укажаниот именски простор|Укажаните именски простори}} <code>$2</code> не {{PLURAL:$1|е|се}} важечки.", + "bs-pagesvisited-pref-widgetlimit": "Ограничување на записи:", + "bs-pagesvisited-pref-widgetns": "Именски простори:", + "bs-pagesvisited-pref-widgetsortodr": "Подреди по:", + "bs-pagesvisited-pref-sort-time": "Време", + "bs-pagesvisited-pref-sort-pagename": "Наслов", + "bs-pagesvisited-tag-pagesvisited-desc": "Прикажува список на страници што се ти посетиле." +} diff --git a/i18n/nb.json b/i18n/nb.json new file mode 100644 index 0000000..fa0f9ca --- /dev/null +++ b/i18n/nb.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Jon Harald Søby" + ] + }, + "bs-pagesvisited-desc": "Gir en personalisert liste over de sist besøkte sidene", + "prefs-pagesvisited": "Sider besøkt", + "bs-pagesvisited-widget-title": "Sider besøkt", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Navnerommet|Navnerommene}} <code>$2</code> er ikke gyldig.", + "bs-pagesvisited-pref-widgetlimit": "Oppslagsgrense:", + "bs-pagesvisited-pref-widgetns": "Navnerom:", + "bs-pagesvisited-pref-widgetsortodr": "Sorter etter:", + "bs-pagesvisited-pref-sort-time": "Tid", + "bs-pagesvisited-pref-sort-pagename": "Tittel", + "bs-pagesvisited-tag-pagesvisited-desc": "Viser en liste over nylig besøkte sider. Listen kan begrenses med parametre." +} diff --git a/i18n/nl.json b/i18n/nl.json new file mode 100644 index 0000000..d65713c --- /dev/null +++ b/i18n/nl.json @@ -0,0 +1,21 @@ +{ + "@metadata": { + "authors": [ + "Arg", + "SPQRobin", + "Esketti", + "Siebrand", + "Sjoerddebruin" + ] + }, + "bs-pagesvisited-desc": "Voegt een gepersonaliseerde lijst van de laatstbezochte pagina's", + "prefs-pagesvisited": "Bezochte pagina's", + "bs-pagesvisited-widget-title": "Pagina's bezocht", + "bs-pagesvisited-error-nsnotvalid": "Gegeven {{PLURAL:$1|namespace|naamruimten}} <code>$2</code> {{PLURAL:$1|is|zijn}} is niet geldig.", + "bs-pagesvisited-pref-widgetlimit": "Beperken van gegevens in:", + "bs-pagesvisited-pref-widgetns": "Naamruimten:", + "bs-pagesvisited-pref-widgetsortodr": "Sorteren op:", + "bs-pagesvisited-pref-sort-time": "Tijd", + "bs-pagesvisited-pref-sort-pagename": "Naam", + "bs-pagesvisited-tag-pagesvisited-desc": "Geeft een lijst van door u bezochte pagina's weer." +} diff --git a/i18n/om.json b/i18n/om.json new file mode 100644 index 0000000..f086d5d --- /dev/null +++ b/i18n/om.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Tumsaa" + ] + }, + "prefs-pagesvisited": "Fuula daawwatte", + "bs-pagesvisited-widget-title": "Fuula daawwatte", + "bs-pagesvisited-pref-widgetns": "Iddoowwan maqaa:", + "bs-pagesvisited-pref-widgetsortodr": "Kanaan fooyi:", + "bs-pagesvisited-pref-sort-time": "Yeroo", + "bs-pagesvisited-pref-sort-pagename": "Mataduree", + "bs-pagesvisited-tag-pagesvisited-desc": "Tarree fuulawwan kana dura daawwattee." +} diff --git a/i18n/pl.json b/i18n/pl.json new file mode 100644 index 0000000..d6a8761 --- /dev/null +++ b/i18n/pl.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Chrumps" + ] + }, + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Dana przestrzeń|Dane przestrzenie}} nazw <code>$2</code> {{PLURAL:$1|nie jest|nie są}} prawidłowe.", + "bs-pagesvisited-pref-widgetns": "Przestrzenie nazw:", + "bs-pagesvisited-pref-widgetsortodr": "Sortuj według:", + "bs-pagesvisited-pref-sort-time": "Czas", + "bs-pagesvisited-pref-sort-pagename": "Tytuł", + "bs-pagesvisited-tag-pagesvisited-desc": "Pokazuje listę ostatnio odwiedzanych stron. Lista może zostać ograniczona przez parametry." +} diff --git a/i18n/pt-br.json b/i18n/pt-br.json new file mode 100644 index 0000000..9315238 --- /dev/null +++ b/i18n/pt-br.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Felipe L. Ewald", + "Eduardo Addad de Oliveira" + ] + }, + "bs-pagesvisited-desc": "Fornece uma lista personalizada das últimas páginas visitadas", + "prefs-pagesvisited": "Páginas visitadas", + "bs-pagesvisited-widget-title": "Páginas visitadas", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|O domínio|os domínios}} <code>$2</code> não {{PLURAL:$1|é válido|são válidos}}.", + "bs-pagesvisited-pref-widgetlimit": "Limite de entradas:", + "bs-pagesvisited-pref-widgetns": "Espaços nominais:", + "bs-pagesvisited-pref-widgetsortodr": "Ordenar por:", + "bs-pagesvisited-pref-sort-time": "Tempo", + "bs-pagesvisited-pref-sort-pagename": "Título", + "bs-pagesvisited-tag-pagesvisited-desc": "Apresenta uma lista de páginas que visitou. Esta lista pode ser restringida por parâmetros." +} diff --git a/i18n/pt.json b/i18n/pt.json new file mode 100644 index 0000000..5483a97 --- /dev/null +++ b/i18n/pt.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Vitorvicentevalente", + "Hamilton Abreu" + ] + }, + "bs-pagesvisited-desc": "Fornece uma lista personalizada das últimas páginas visitadas", + "prefs-pagesvisited": "Páginas visitadas", + "bs-pagesvisited-widget-title": "Páginas visitadas", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|O domínio|os domínios}} <code>$2</code> não {{PLURAL:$1|é válido|são válidos}}.", + "bs-pagesvisited-pref-widgetlimit": "Limite de entradas:", + "bs-pagesvisited-pref-widgetns": "Domínios:", + "bs-pagesvisited-pref-widgetsortodr": "Ordenar por:", + "bs-pagesvisited-pref-sort-time": "Hora", + "bs-pagesvisited-pref-sort-pagename": "Título", + "bs-pagesvisited-tag-pagesvisited-desc": "Apresenta uma lista de páginas que visitou. Esta lista pode ser restringida por parâmetros." +} diff --git a/i18n/qqq.json b/i18n/qqq.json new file mode 100644 index 0000000..e4b0e28 --- /dev/null +++ b/i18n/qqq.json @@ -0,0 +1,20 @@ +{ + "@metadata": { + "authors": [ + "Stephan Muggli <mug...@hallowelt.biz>", + "Robby", + "Liuxinyu970226", + "Shirayuki" + ] + }, + "bs-pagesvisited-desc": "Used in [{{canonicalurl:Special:WikiAdmin|mode=ExtensionInfo}} Special:WikiAdmin?mode=ExtensionInfo], description of pages visited extension", + "prefs-pagesvisited": "Used in [{{canonicalurl:Special:WikiAdmin|mode=Preferences}} Special:WikiAdmin?mode=Preferences], headline for pages visited section in preferences.\n{{Identical|Pages visited}}", + "bs-pagesvisited-widget-title": "Widget headline for pages visited\n {{Identical|Pages visited}}", + "bs-pagesvisited-error-nsnotvalid": "Text for given namespaces <code>$2</code> are not valid.\n\nParameters:\n* $1 - the number of namespaces for PLURAL distinction\n* $2 - the namespace or comma separated list of namespaces", + "bs-pagesvisited-pref-widgetlimit": "Option in [{{canonicalurl:Special:WikiAdmin|mode=Preferences}} Special:WikiAdmin?mode=Preferences], label for limit of entries:", + "bs-pagesvisited-pref-widgetns": "Option in [{{canonicalurl:Special:WikiAdmin|mode=Preferences}} Special:WikiAdmin?mode=Preferences], label for namespaces:\n{{Identical|Namespace}}", + "bs-pagesvisited-pref-widgetsortodr": "Option in [{{canonicalurl:Special:WikiAdmin|mode=Preferences}} Special:WikiAdmin?mode=Preferences], label for sort by:\n{{Identical|Sort by}}", + "bs-pagesvisited-pref-sort-time": "Option in [{{canonicalurl:Special:WikiAdmin|mode=Preferences}} Special:WikiAdmin?mode=Preferences], option label for time\n{{Identical|Time}}", + "bs-pagesvisited-pref-sort-pagename": "Option in [{{canonicalurl:Special:WikiAdmin|mode=Preferences}} Special:WikiAdmin?mode=Preferences], option label for title\n{{Identical|Title}}", + "bs-pagesvisited-tag-pagesvisited-desc": "Used in InsertMagic extension, tag description for show a list of pages you have visited.\n{{Related|Bs-tag-desc}}" +} diff --git a/i18n/ru.json b/i18n/ru.json new file mode 100644 index 0000000..4de39d0 --- /dev/null +++ b/i18n/ru.json @@ -0,0 +1,20 @@ +{ + "@metadata": { + "authors": [ + "Shuba", + "HarpyWar", + "Meshkov.a", + "Okras" + ] + }, + "bs-pagesvisited-desc": "Предоставляет собственный список последних посещенных страниц.", + "prefs-pagesvisited": "Посещенные страницы", + "bs-pagesvisited-widget-title": "Посещенные страницы", + "bs-pagesvisited-error-nsnotvalid": "Неверное пространство имен{{PLURAL:$1||s}} <code>$2</code> {{PLURAL:$1|is|are}}.", + "bs-pagesvisited-pref-widgetlimit": "Ограничение записей:", + "bs-pagesvisited-pref-widgetns": "Пространство имён:", + "bs-pagesvisited-pref-widgetsortodr": "Сортировать по:", + "bs-pagesvisited-pref-sort-time": "Время", + "bs-pagesvisited-pref-sort-pagename": "Заголовок", + "bs-pagesvisited-tag-pagesvisited-desc": "Показывает список недавно посещённых страниц. Этот список может быть ограничен параметрами." +} diff --git a/i18n/sl.json b/i18n/sl.json new file mode 100644 index 0000000..8a0beeb --- /dev/null +++ b/i18n/sl.json @@ -0,0 +1,19 @@ +{ + "@metadata": { + "authors": [ + "Alojz.tic", + "Skalcaa", + "Dbc334" + ] + }, + "bs-pagesvisited-desc": "Zagotavlja osebni seznam nazadnje obiskanih strani", + "prefs-pagesvisited": "Obiskane strani", + "bs-pagesvisited-widget-title": "Obiskane strani", + "bs-pagesvisited-error-nsnotvalid": "Dan{{PLURAL:$1| imenski prostor|a imenska prostora|i imenski prostori}} {{PLURAL:$1|ni veljaven|nista veljavna|niso veljavni}}: <code>$2</code>", + "bs-pagesvisited-pref-widgetlimit": "Omejitev vnosov:", + "bs-pagesvisited-pref-widgetns": "Imenski prostor:", + "bs-pagesvisited-pref-widgetsortodr": "Razvrsti po:", + "bs-pagesvisited-pref-sort-time": "Čas", + "bs-pagesvisited-pref-sort-pagename": "Naslov", + "bs-pagesvisited-tag-pagesvisited-desc": "Prikaže seznam nedavno obiskanih strani. Seznam lahko omejite s parametri." +} diff --git a/i18n/sq.json b/i18n/sq.json new file mode 100644 index 0000000..5e39dcf --- /dev/null +++ b/i18n/sq.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Gertakapllani" + ] + }, + "bs-pagesvisited-desc": "Ofron një listë të personalizuar të faqeve fundit qëkeni vizituar", + "prefs-pagesvisited": "Faqet e vizituara", + "bs-pagesvisited-widget-title": "Faqet e vizituara", + "bs-pagesvisited-pref-widgetlimit": "Kufiri i hyrjeve:", + "bs-pagesvisited-pref-widgetns": "Hapësira:", + "bs-pagesvisited-pref-widgetsortodr": "Rendit nga", + "bs-pagesvisited-pref-sort-time": "Koha", + "bs-pagesvisited-pref-sort-pagename": "titull", + "bs-pagesvisited-tag-pagesvisited-desc": "Afishon një listë të faqeve që keni vizituar." +} diff --git a/i18n/sv.json b/i18n/sv.json new file mode 100644 index 0000000..795215c --- /dev/null +++ b/i18n/sv.json @@ -0,0 +1,19 @@ +{ + "@metadata": { + "authors": [ + "Jopparn", + "Lokal Profil", + "WikiPhoenix" + ] + }, + "bs-pagesvisited-desc": "Ger en personlig lista över de senast besökta sidorna", + "prefs-pagesvisited": "Besökta sidor", + "bs-pagesvisited-widget-title": "Besökta sidor", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Den angivna namnrymden|De angivna namnrymderna}} <code>$2</code> är inte {{PLURAL:$1|giltig|giltiga}}.", + "bs-pagesvisited-pref-widgetlimit": "Begränsning av inlägg:", + "bs-pagesvisited-pref-widgetns": "Namnrymder:", + "bs-pagesvisited-pref-widgetsortodr": "Sortera efter:", + "bs-pagesvisited-pref-sort-time": "Tid", + "bs-pagesvisited-pref-sort-pagename": "Titel", + "bs-pagesvisited-tag-pagesvisited-desc": "Visar en lista över nyliga besökta sidor. Denna lista kan begränsas med parametrar." +} diff --git a/i18n/tcy.json b/i18n/tcy.json new file mode 100644 index 0000000..cbbc855 --- /dev/null +++ b/i18n/tcy.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "VASANTH S.N." + ] + }, + "bs-pagesvisited-pref-widgetns": "ಪುದರ್ದ ವರ್ಗೊಲು:", + "bs-pagesvisited-pref-sort-time": "ಸಮಯೊ", + "bs-pagesvisited-pref-sort-pagename": "ತರೆಬರವು" +} diff --git a/i18n/tr.json b/i18n/tr.json new file mode 100644 index 0000000..47af44c --- /dev/null +++ b/i18n/tr.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Sayginer", + "Sadrettin" + ] + }, + "bs-pagesvisited-desc": "Ziyaret edilen son sayfaların, kişiselleştirilmiş bir listesini oluşturur", + "prefs-pagesvisited": "Ziyaret edilen sayfalar", + "bs-pagesvisited-widget-title": "Ziyaret edilen sayfalar", + "bs-pagesvisited-error-nsnotvalid": "Verilen <code>$2</code> {{PLURAL:$1|isimalanı|isimalanı}} geçerli değil.", + "bs-pagesvisited-pref-widgetlimit": "Girdi sınırı:", + "bs-pagesvisited-pref-widgetns": "İsim alanları:", + "bs-pagesvisited-pref-widgetsortodr": "Sıralama ölçütü:", + "bs-pagesvisited-pref-sort-time": "Zaman", + "bs-pagesvisited-pref-sort-pagename": "Başlık", + "bs-pagesvisited-tag-pagesvisited-desc": "Ziyaret ettiğiniz sayfaların listesini görüntüler." +} diff --git a/i18n/uk.json b/i18n/uk.json new file mode 100644 index 0000000..0699e6e --- /dev/null +++ b/i18n/uk.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "NataChe", + "Ата" + ] + }, + "bs-pagesvisited-desc": "Відображає персоналізований список останніх відвіданих сторінок", + "prefs-pagesvisited": "Відвідані сторінки", + "bs-pagesvisited-widget-title": "Відвідані сторінки", + "bs-pagesvisited-error-nsnotvalid": "{{PLURAL:$1|Заданий простір назв|Задані простори назв}} <code>$2</code> {{PLURAL:$1|не дійсний|не дійсні}}.", + "bs-pagesvisited-pref-widgetlimit": "Ліміт записів:", + "bs-pagesvisited-pref-widgetns": "Простір назв:", + "bs-pagesvisited-pref-widgetsortodr": "Впорядкувати за:", + "bs-pagesvisited-pref-sort-time": "Час", + "bs-pagesvisited-pref-sort-pagename": "Заголовок", + "bs-pagesvisited-tag-pagesvisited-desc": "Показує список нещодавно відвіданих сторінок. Цей список може бути обмежений параметрами." +} diff --git a/i18n/zh-hans.json b/i18n/zh-hans.json new file mode 100644 index 0000000..914bdd3 --- /dev/null +++ b/i18n/zh-hans.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Liuxinyu970226", + "NigelSoft" + ] + }, + "bs-pagesvisited-desc": "提供个性化的最近访问页面列表", + "prefs-pagesvisited": "访问过的页面", + "bs-pagesvisited-widget-title": "访问过的页面", + "bs-pagesvisited-error-nsnotvalid": "提供的名字空间<code>$2</code>{{PLURAL:$1|无效}}。", + "bs-pagesvisited-pref-widgetlimit": "记录限制:", + "bs-pagesvisited-pref-widgetns": "名字空间:", + "bs-pagesvisited-pref-widgetsortodr": "排序方式:", + "bs-pagesvisited-pref-sort-time": "时间", + "bs-pagesvisited-pref-sort-pagename": "标题", + "bs-pagesvisited-tag-pagesvisited-desc": "显示最近访问页面的列表。列表可通过参数限制。" +} diff --git a/i18n/zh-hant.json b/i18n/zh-hant.json new file mode 100644 index 0000000..5ee2edb --- /dev/null +++ b/i18n/zh-hant.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Liuxinyu970226", + "Cwlin0416" + ] + }, + "prefs-pagesvisited": "已參觀頁面", + "bs-pagesvisited-widget-title": "參觀的頁面", + "bs-pagesvisited-error-nsnotvalid": "提供之命名空間<code>$2</code>{{PLURAL:$1|無效}}。", + "bs-pagesvisited-pref-widgetlimit": "項目上限:", + "bs-pagesvisited-pref-widgetns": "命名空間:", + "bs-pagesvisited-pref-widgetsortodr": "排序方式:", + "bs-pagesvisited-pref-sort-time": "時間", + "bs-pagesvisited-pref-sort-pagename": "標題" +} -- To view, visit https://gerrit.wikimedia.org/r/388008 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic3c0ca0875a801795e898c4adc2d35187057789f Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/BlueSpicePagesVisited Gerrit-Branch: master Gerrit-Owner: ItSpiderman <d.savulje...@gmail.com> Gerrit-Reviewer: Ljonka <l.verhovs...@gmail.com> Gerrit-Reviewer: Mglaser <gla...@hallowelt.biz> Gerrit-Reviewer: Pwirth <wi...@hallowelt.biz> Gerrit-Reviewer: Raimond Spekking <raimond.spekk...@gmail.com> Gerrit-Reviewer: Robert Vogel <vo...@hallowelt.biz> Gerrit-Reviewer: Siebrand <siebr...@kitano.nl> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits