Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55af9b59c1 | ||
|
|
ff99752901 | ||
|
|
aefb07ef4b | ||
|
|
6da0d445a7 | ||
|
|
7fdbc8e9cc | ||
|
|
66cf8c80f0 | ||
|
|
627050be10 | ||
|
|
78f9e4eb57 | ||
|
|
40acd85a7b | ||
|
|
0ff4291766 | ||
|
|
b10d6f6018 | ||
|
|
5589be458c | ||
|
|
230dd8ddb8 | ||
|
|
488e0fc623 | ||
|
|
5a335d1876 | ||
|
|
56f21a2611 | ||
|
|
a5ef8a5409 | ||
|
|
0010a6f08b | ||
|
|
740e0fa273 | ||
|
|
e4cb919476 | ||
|
|
8f657f7205 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,5 +1,7 @@
|
||||
.svn
|
||||
*~
|
||||
*.kate-swp
|
||||
.*.swp
|
||||
.idea
|
||||
node_modules/
|
||||
/composer.lock
|
||||
/vendor/
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
host=gerrit.wikimedia.org
|
||||
port=29418
|
||||
project=mediawiki/extensions/ContributionScores
|
||||
defaultbranch=master
|
||||
defaultbranch=REL1_27
|
||||
defaultrebase=0
|
||||
1
.jshintignore
Normal file
1
.jshintignore
Normal file
@@ -0,0 +1 @@
|
||||
node_modules
|
||||
@@ -3,9 +3,9 @@
|
||||
* Magic words for extension.
|
||||
*/
|
||||
|
||||
$magicWords = array();
|
||||
$magicWords = [];
|
||||
|
||||
/** English (English) */
|
||||
$magicWords['en'] = array(
|
||||
'cscore' => array( 0, 'cscore' ),
|
||||
);
|
||||
$magicWords['en'] = [
|
||||
'cscore' => [ 0, 'cscore' ],
|
||||
];
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* This is a backwards-compatibility shim, generated by:
|
||||
* https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2FgenerateJsonI18n.php
|
||||
*
|
||||
* Beginning with MediaWiki 1.23, translation strings are stored in json files,
|
||||
* and the EXTENSION.i18n.php file only exists to provide compatibility with
|
||||
* older releases of MediaWiki. For more information about this migration, see:
|
||||
* https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format
|
||||
*
|
||||
* This shim maintains compatibility back to MediaWiki 1.17.
|
||||
*/
|
||||
$messages = array();
|
||||
if ( !function_exists( 'wfJsonI18nShim9e08550f702d6269' ) ) {
|
||||
function wfJsonI18nShim9e08550f702d6269( $cache, $code, &$cachedData ) {
|
||||
$codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] );
|
||||
foreach ( $codeSequence as $csCode ) {
|
||||
$fileName = dirname( __FILE__ ) . "/i18n/$csCode.json";
|
||||
if ( is_readable( $fileName ) ) {
|
||||
$data = FormatJson::decode( file_get_contents( $fileName ), true );
|
||||
foreach ( array_keys( $data ) as $key ) {
|
||||
if ( $key === '' || $key[0] === '@' ) {
|
||||
unset( $data[$key] );
|
||||
}
|
||||
}
|
||||
$cachedData['messages'] = array_merge( $data, $cachedData['messages'] );
|
||||
}
|
||||
|
||||
$cachedData['deps'][] = new FileDependency( $fileName );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
$GLOBALS['wgHooks']['LocalisationCacheRecache'][] = 'wfJsonI18nShim9e08550f702d6269';
|
||||
}
|
||||
@@ -1,46 +1,53 @@
|
||||
<?php
|
||||
/** \file
|
||||
* \brief Contains setup code for the Contribution Scores Extension.
|
||||
*/
|
||||
* \brief Contains setup code for the Contribution Scores Extension.
|
||||
*/
|
||||
|
||||
# Not a valid entry point, skip unless MEDIAWIKI is defined
|
||||
if ( !defined( 'MEDIAWIKI' ) ) {
|
||||
echo "Contribution Scores extension";
|
||||
echo 'Contribution Scores extension';
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
$wgExtensionCredits['specialpage'][] = array(
|
||||
$wgExtensionCredits['specialpage'][] = [
|
||||
'path' => __FILE__,
|
||||
'name' => 'Contribution Scores',
|
||||
'url' => 'https://www.mediawiki.org/wiki/Extension:Contribution_Scores',
|
||||
'author' => 'Tim Laqua',
|
||||
'descriptionmsg' => 'contributionscores-desc',
|
||||
'version' => '1.17.0'
|
||||
);
|
||||
|
||||
$dir = dirname( __FILE__ ) . '/';
|
||||
'version' => '1.25.0'
|
||||
];
|
||||
|
||||
define( 'CONTRIBUTIONSCORES_MAXINCLUDELIMIT', 50 );
|
||||
$wgContribScoreReports = null;
|
||||
|
||||
// These settings can be overridden in LocalSettings.php.
|
||||
$wgContribScoreIgnoreBlockedUsers = false; // Set to true to exclude bots from the reporting.
|
||||
$wgContribScoreIgnoreBots = false; // Set to true to exclude blocked users from the reporting.
|
||||
$wgContribScoresUseRealName = false; // Set to true to use real user names when available. Only for MediaWiki 1.19 and later.
|
||||
$wgContribScoreDisableCache = false; // Set to true to disable cache for parser function and inclusion of table.
|
||||
|
||||
$wgAutoloadClasses['ContributionScores'] = $dir . 'ContributionScores_body.php';
|
||||
// Set to true to exclude bots from the reporting.
|
||||
$wgContribScoreIgnoreBlockedUsers = false;
|
||||
|
||||
// Set to true to exclude blocked users from the reporting.
|
||||
$wgContribScoreIgnoreBots = false;
|
||||
|
||||
// Set to true to use real user names when available. Only for MediaWiki 1.19 and later.
|
||||
$wgContribScoresUseRealName = false;
|
||||
|
||||
// Set to true to disable cache for parser function and inclusion of table.
|
||||
$wgContribScoreDisableCache = false;
|
||||
|
||||
$wgAutoloadClasses['ContributionScores'] = __DIR__ . '/ContributionScores_body.php';
|
||||
$wgSpecialPages['ContributionScores'] = 'ContributionScores';
|
||||
|
||||
$wgMessagesDirs['ContributionScores'] = __DIR__ . '/i18n';
|
||||
$wgExtensionMessagesFiles['ContributionScores'] = $dir . 'ContributionScores.i18n.php';
|
||||
$wgExtensionMessagesFiles['ContributionScoresAlias'] = $dir . 'ContributionScores.alias.php';
|
||||
$wgExtensionMessagesFiles['ContributionScoresMagic'] = $dir . 'ContributionScores.i18n.magic.php';
|
||||
$wgExtensionMessagesFiles['ContributionScoresAlias'] = __DIR__ . '/ContributionScores.alias.php';
|
||||
$wgExtensionMessagesFiles['ContributionScoresMagic'] =
|
||||
__DIR__ . '/ContributionScores.i18n.magic.php';
|
||||
|
||||
$wgHooks['ParserFirstCallInit'][] = 'efContributionScores_Setup';
|
||||
|
||||
function efContributionScores_Setup( &$parser ) {
|
||||
$parser->setFunctionHook( 'cscore', 'efContributionScores_Render' );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -59,21 +66,20 @@ function efContributionScores_Render( &$parser, $usertext, $metric = 'score' ) {
|
||||
|
||||
if ( $metric == 'score' ) {
|
||||
$res = $dbr->select( 'revision',
|
||||
'COUNT(DISTINCT rev_page)+SQRT(COUNT(rev_id)-COUNT(DISTINCT rev_page))*2 AS wiki_rank',
|
||||
array( 'rev_user' => $user->getID() ) );
|
||||
'COUNT(DISTINCT rev_page)+SQRT(COUNT(rev_id)-COUNT(DISTINCT rev_page))*2 AS wiki_rank',
|
||||
[ 'rev_user' => $user->getID() ] );
|
||||
$row = $dbr->fetchObject( $res );
|
||||
$output = $wgLang->formatNum( round( $row->wiki_rank, 0 ) );
|
||||
} elseif ( $metric == 'changes' ) {
|
||||
$res = $dbr->select( 'revision',
|
||||
'COUNT(rev_id) AS rev_count',
|
||||
array( 'rev_user' => $user->getID() ) );
|
||||
'COUNT(rev_id) AS rev_count',
|
||||
[ 'rev_user' => $user->getID() ] );
|
||||
$row = $dbr->fetchObject( $res );
|
||||
$output = $wgLang->formatNum( $row->rev_count );
|
||||
|
||||
} elseif ( $metric == 'pages' ) {
|
||||
$res = $dbr->select( 'revision',
|
||||
'COUNT(DISTINCT rev_page) AS page_count',
|
||||
array( 'rev_user' => $user->getID() ) );
|
||||
'COUNT(DISTINCT rev_page) AS page_count',
|
||||
[ 'rev_user' => $user->getID() ] );
|
||||
$row = $dbr->fetchObject( $res );
|
||||
$output = $wgLang->formatNum( $row->page_count );
|
||||
} else {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/** \file
|
||||
* \brief Contains code for the ContributionScores Class (extends SpecialPage).
|
||||
*/
|
||||
* \brief Contains code for the ContributionScores Class (extends SpecialPage).
|
||||
*/
|
||||
|
||||
/// Special page class for the Contribution Scores extension
|
||||
/**
|
||||
@@ -50,12 +50,14 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
}
|
||||
|
||||
if ( $wgContribScoreIgnoreBlockedUsers ) {
|
||||
$sqlWhere .= " {$nextPrefix} rev_user NOT IN (SELECT ipb_user FROM {$ipBlocksTable} WHERE ipb_user <> 0)";
|
||||
$sqlWhere .= " {$nextPrefix} rev_user NOT IN " .
|
||||
"(SELECT ipb_user FROM {$ipBlocksTable} WHERE ipb_user <> 0)";
|
||||
$nextPrefix = "AND";
|
||||
}
|
||||
|
||||
if ( $wgContribScoreIgnoreBots ) {
|
||||
$sqlWhere .= " {$nextPrefix} rev_user NOT IN (SELECT ug_user FROM {$userGroupTable} WHERE ug_group='bot')";
|
||||
$sqlWhere .= " {$nextPrefix} rev_user NOT IN " .
|
||||
"(SELECT ug_user FROM {$userGroupTable} WHERE ug_group='bot')";
|
||||
}
|
||||
|
||||
$sqlMostPages = "SELECT rev_user,
|
||||
@@ -67,7 +69,7 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
ORDER BY page_count DESC
|
||||
LIMIT {$limit}";
|
||||
|
||||
$sqlMostRevs = "SELECT rev_user,
|
||||
$sqlMostRevs = "SELECT rev_user,
|
||||
COUNT(DISTINCT rev_page) AS page_count,
|
||||
COUNT(rev_id) AS rev_count
|
||||
FROM {$revTable}
|
||||
@@ -92,11 +94,11 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
|
||||
$output = "<table class=\"wikitable contributionscores plainlinks{$sortable}\" >\n" .
|
||||
"<tr class='header'>\n" .
|
||||
Html::element( 'th', array(), $this->msg( 'contributionscores-rank' )->text() ) .
|
||||
Html::element( 'th', array(), $this->msg( 'contributionscores-score' )->text() ) .
|
||||
Html::element( 'th', array(), $this->msg( 'contributionscores-pages' )->text() ) .
|
||||
Html::element( 'th', array(), $this->msg( 'contributionscores-changes' )->text() ) .
|
||||
Html::element( 'th', array(), $this->msg( 'contributionscores-username' )->text() );
|
||||
Html::element( 'th', [], $this->msg( 'contributionscores-rank' )->text() ) .
|
||||
Html::element( 'th', [], $this->msg( 'contributionscores-score' )->text() ) .
|
||||
Html::element( 'th', [], $this->msg( 'contributionscores-pages' )->text() ) .
|
||||
Html::element( 'th', [], $this->msg( 'contributionscores-changes' )->text() ) .
|
||||
Html::element( 'th', [], $this->msg( 'contributionscores-username' )->text() );
|
||||
|
||||
$altrow = '';
|
||||
$user_rank = 1;
|
||||
@@ -118,11 +120,16 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
}
|
||||
|
||||
$output .= Html::closeElement( 'tr' );
|
||||
$output .= "<tr class='{$altrow}'>\n<td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( round( $user_rank, 0 ) ) . "\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( round( $row->wiki_rank, 0 ) ) . "\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( $row->page_count ) . "\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( $row->rev_count ) . "\n</td><td class='content'>" .
|
||||
$output .= "<tr class='{$altrow}'>\n" .
|
||||
"<td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( round( $user_rank, 0 ) ) .
|
||||
"\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( round( $row->wiki_rank, 0 ) ) .
|
||||
"\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( $row->page_count ) .
|
||||
"\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
|
||||
$lang->formatNum( $row->rev_count ) .
|
||||
"\n</td><td class='content'>" .
|
||||
$userLink;
|
||||
|
||||
# Option to not display user tools
|
||||
@@ -145,22 +152,23 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
|
||||
$dbr->freeResult( $res );
|
||||
|
||||
if ( !empty( $title ) )
|
||||
if ( !empty( $title ) ) {
|
||||
$output = Html::rawElement( 'table',
|
||||
array(
|
||||
[
|
||||
'style' => 'border-spacing: 0; padding: 0',
|
||||
'class' => 'contributionscores-wrapper',
|
||||
'lang' => htmlspecialchars( $lang->getCode()),
|
||||
'lang' => htmlspecialchars( $lang->getCode() ),
|
||||
'dir' => $lang->getDir()
|
||||
),
|
||||
],
|
||||
"\n" .
|
||||
"<tr>\n" .
|
||||
"<td style='padding: 0px;'>{$title}</td>\n" .
|
||||
"</tr>\n" .
|
||||
"<tr>\n" .
|
||||
"<td style='padding: 0px;'>{$output}</td>\n" .
|
||||
"</tr>\n"
|
||||
"<tr>\n" .
|
||||
"<td style='padding: 0px;'>{$title}</td>\n" .
|
||||
"</tr>\n" .
|
||||
"<tr>\n" .
|
||||
"<td style='padding: 0px;'>{$output}</td>\n" .
|
||||
"</tr>\n"
|
||||
);
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
@@ -213,9 +221,17 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
} else {
|
||||
$reportTitle = $this->msg( 'contributionscores-allrevisions' )->text();
|
||||
}
|
||||
$reportTitle .= " " . $this->msg( 'contributionscores-top' )->numParams( $limit )->text();
|
||||
$title = Xml::element( 'h4', array( 'class' => 'contributionscores-title' ), $reportTitle ) . "\n";
|
||||
$this->getOutput()->addHTML( $this->genContributionScoreTable( $days, $limit, $title, $options ) );
|
||||
$reportTitle .= ' ' . $this->msg( 'contributionscores-top' )->numParams( $limit )->text();
|
||||
$title = Xml::element( 'h4',
|
||||
[ 'class' => 'contributionscores-title' ],
|
||||
$reportTitle
|
||||
) . "\n";
|
||||
$this->getOutput()->addHTML( $this->genContributionScoreTable(
|
||||
$days,
|
||||
$limit,
|
||||
$title,
|
||||
$options
|
||||
) );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -225,11 +241,11 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
global $wgContribScoreReports;
|
||||
|
||||
if ( !is_array( $wgContribScoreReports ) ) {
|
||||
$wgContribScoreReports = array(
|
||||
array( 7, 50 ),
|
||||
array( 30, 50 ),
|
||||
array( 0, 50 )
|
||||
);
|
||||
$wgContribScoreReports = [
|
||||
[ 7, 50 ],
|
||||
[ 30, 50 ],
|
||||
[ 0, 50 ]
|
||||
];
|
||||
}
|
||||
|
||||
$out = $this->getOutput();
|
||||
@@ -242,8 +258,11 @@ class ContributionScores extends IncludableSpecialPage {
|
||||
} else {
|
||||
$reportTitle = $this->msg( 'contributionscores-allrevisions' )->text();
|
||||
}
|
||||
$reportTitle .= " " . $this->msg( 'contributionscores-top' )->numParams( $revs )->text();
|
||||
$title = Xml::element( 'h2', array( 'class' => 'contributionscores-title' ), $reportTitle ) . "\n";
|
||||
$reportTitle .= ' ' . $this->msg( 'contributionscores-top' )->numParams( $revs )->text();
|
||||
$title = Xml::element( 'h2',
|
||||
[ 'class' => 'contributionscores-title' ],
|
||||
$reportTitle
|
||||
) . "\n";
|
||||
$out->addHTML( $title );
|
||||
$out->addHTML( $this->genContributionScoreTable( $days, $revs ) );
|
||||
}
|
||||
|
||||
28
Gruntfile.js
Normal file
28
Gruntfile.js
Normal file
@@ -0,0 +1,28 @@
|
||||
/*jshint node:true */
|
||||
module.exports = function ( grunt ) {
|
||||
'use strict';
|
||||
|
||||
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
|
||||
grunt.loadNpmTasks( 'grunt-banana-checker' );
|
||||
grunt.loadNpmTasks( 'grunt-jsonlint' );
|
||||
|
||||
grunt.initConfig( {
|
||||
jshint: {
|
||||
all: [
|
||||
'*.js'
|
||||
]
|
||||
},
|
||||
banana: {
|
||||
all: 'i18n'
|
||||
},
|
||||
jsonlint: {
|
||||
all: [
|
||||
'**/*.json',
|
||||
'!node_modules/**'
|
||||
]
|
||||
}
|
||||
} );
|
||||
|
||||
grunt.registerTask( 'test', [ 'jshint', 'jsonlint', 'banana' ] );
|
||||
grunt.registerTask( 'default', 'test' );
|
||||
};
|
||||
2
README
Normal file
2
README
Normal file
@@ -0,0 +1,2 @@
|
||||
The Contribution Scores extension polls the wiki database to locate contributors with the highest contribution volume.
|
||||
The extension is intended to add a fun metric for contributors to see how much they are helping out.
|
||||
13
composer.json
Normal file
13
composer.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"require-dev": {
|
||||
"jakub-onderka/php-parallel-lint": "0.9.2",
|
||||
"mediawiki/mediawiki-codesniffer": "0.6.0"
|
||||
},
|
||||
"scripts": {
|
||||
"fix": "phpcbf",
|
||||
"test": [
|
||||
"parallel-lint . --exclude vendor",
|
||||
"phpcs -p -s"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Mousa"
|
||||
"Mousa",
|
||||
"Alp Er Tunqa"
|
||||
]
|
||||
},
|
||||
"contributionscores": "چالیشماق امتیازلاری",
|
||||
@@ -11,7 +12,7 @@
|
||||
"contributionscores-days": "سون {{PLURAL:$1|گون|$1 گون}}",
|
||||
"contributionscores-allrevisions": "بوتون زامانلار",
|
||||
"contributionscores-score": "امتیاز",
|
||||
"contributionscores-pages": "صحیفهلر",
|
||||
"contributionscores-pages": "صفحهلر",
|
||||
"contributionscores-changes": "دَییشمهلر",
|
||||
"contributionscores-username": "آد",
|
||||
"contributionscores-invalidusername": "گئچرسیز ایستیفادهچی آدی",
|
||||
|
||||
@@ -2,16 +2,18 @@
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Assele",
|
||||
"Haqmar"
|
||||
"Haqmar",
|
||||
"Sagan"
|
||||
]
|
||||
},
|
||||
"contributionscores": "Индергән өлөштәрҙе баһалау",
|
||||
"contributionscores-desc": "Мәғлүмәттәр базаһынан [[Special:ContributionScores|иң ҙур өлөш индергән ҡатнашыусыларҙы]] билдәләй",
|
||||
"contributionscores-info": "Баһа түбәндәге өлөштәрҙе ҡушыу аша иҫәпләнә:\n* 1 мәрәй — һәр айырым битте мөхәррирләү өсөн;\n* 2 * ( (дөйөм үҙгәртеүҙәр һаны) - (барыһы төрлө биттәр) ) айырмаһының тамыры.\nБаһаны иҫәпләгән ваҡытта, шулай итеп, дөйөм үҙгәртеүҙәр һанына ҡарағында үҙгәртеүҙәрҙең төрлөлөгө ҙурыраҡ йоғонто яһай.",
|
||||
"contributionscores-top": "(Тәүге $1)",
|
||||
"contributionscores-days": "Һуңғы {{PLURAL:$1|1=көн|$1 көн}}",
|
||||
"contributionscores-days": "{{PLURAL:$1|1=Һуңғы көн}}",
|
||||
"contributionscores-allrevisions": "Бөтәһе",
|
||||
"contributionscores-score": "Баһа",
|
||||
"contributionscores-rank": "Ранг",
|
||||
"contributionscores-pages": "Биттәр",
|
||||
"contributionscores-changes": "Үҙгәртеүҙәр",
|
||||
"contributionscores-username": "Ҡатнашыусы исеме",
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
"authors": [
|
||||
"Bellayet",
|
||||
"Wikitanvir",
|
||||
"Aftab1995"
|
||||
"Aftab1995",
|
||||
"Aftabuzzaman"
|
||||
]
|
||||
},
|
||||
"contributionscores": "অনুদানের স্কোর",
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"Protnet"
|
||||
]
|
||||
},
|
||||
"contributionscores": "Αποτελέσματα Συνεισφοράς",
|
||||
"contributionscores-desc": "Εξετάζει την βάση δεδομένων βίκι για τον σημαντικότερο [[Special:ContributionScores|όγκο συνεισφορών χρήστη]]",
|
||||
"contributionscores-info": "Το σκορ μετρά κυρίως επεξεργασίες μοναδικών σελίδων, λαμβάνοντας υπ' όψιν και τον υψηλό όγκο επεξεργασίας.",
|
||||
"contributionscores": "Βαθμολογίες συνεισφοράς",
|
||||
"contributionscores-desc": "Εξετάζει την βάση δεδομένων του wiki για τον υψηλότερο [[Special:ContributionScores|όγκο συνεισφορών χρήστη]]",
|
||||
"contributionscores-info": "Η βαθμολογία μετρά πρωτίστως μοναδικές σελίδες που έχουν επεξεργαστεί, λαμβάνοντας υπ' όψιν και τον υψηλό όγκο επεξεργασίας.",
|
||||
"contributionscores-top": "(Πρώτοι $1)",
|
||||
"contributionscores-days": "Τελευταίες {{PLURAL:$1|ημέρα|$1 ημέρες}}",
|
||||
"contributionscores-days": "{{PLURAL:$1|Τελευταία ημέρα|Τελευταίες $1 ημέρες}}",
|
||||
"contributionscores-allrevisions": "Όλων των εποχών",
|
||||
"contributionscores-score": "Βαθμολογία",
|
||||
"contributionscores-rank": "Κατάταξη",
|
||||
|
||||
32
i18n/en.json
32
i18n/en.json
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": []
|
||||
},
|
||||
"contributionscores": "Contribution scores",
|
||||
"contributionscores-desc": "Polls the wiki database for highest [[Special:ContributionScores|user contribution volume]]",
|
||||
"contributionscores-info": "The score primarily measures unique pages edited, with consideration for high edit volume.",
|
||||
"contributionscores-top": "(Top $1)",
|
||||
"contributionscores-days": "Last {{PLURAL:$1|day|$1 days}}",
|
||||
"contributionscores-allrevisions": "All time",
|
||||
"contributionscores-score": "Score",
|
||||
"contributionscores-rank": "Rank",
|
||||
"contributionscores-pages": "Pages",
|
||||
"contributionscores-changes": "Changes",
|
||||
"contributionscores-username": "Username",
|
||||
"contributionscores-invalidusername": "Invalid username",
|
||||
"contributionscores-invalidmetric": "Invalid metric"
|
||||
"@metadata": {
|
||||
"authors": []
|
||||
},
|
||||
"contributionscores": "Contribution scores",
|
||||
"contributionscores-desc": "Polls the wiki database for highest [[Special:ContributionScores|user contribution volume]]",
|
||||
"contributionscores-info": "The score primarily measures unique pages edited, with consideration for high edit volume.",
|
||||
"contributionscores-top": "(Top $1)",
|
||||
"contributionscores-days": "Last {{PLURAL:$1|day|$1 days}}",
|
||||
"contributionscores-allrevisions": "All time",
|
||||
"contributionscores-score": "Score",
|
||||
"contributionscores-rank": "Rank",
|
||||
"contributionscores-pages": "Pages",
|
||||
"contributionscores-changes": "Changes",
|
||||
"contributionscores-username": "Username",
|
||||
"contributionscores-invalidusername": "Invalid username",
|
||||
"contributionscores-invalidmetric": "Invalid metric"
|
||||
}
|
||||
@@ -2,10 +2,11 @@
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Meursault2004",
|
||||
"Pras"
|
||||
"Pras",
|
||||
"NoiX180"
|
||||
]
|
||||
},
|
||||
"contributionscores": "Skor Kontribusi",
|
||||
"contributionscores": "Stan sumbangan",
|
||||
"contributionscores-desc": "Nglakokaké polling (angkèt) ing basis data kanggo [[Special:ContributionScores|volume kontribusi panganggo]]",
|
||||
"contributionscores-info": "Skoré diétung kaya mangkéné:\n* Biji siji (1) per kaca unik sing disunting\n* Oyot (bs. Indonesia ''akar'') saka (Gunggungé Suntingan) - (Gunggungé Kaca-KAca Unik) * 2\nSkor sing diétung miturut cara iki bisa nyerminaké divèrsitas suntingan sadhuwuring volume suntingan.\nSacara dhasar, skor iki utamané ngétung kaca-kaca unik sing disunting, karo mélu nimbangaké volume suntingan dhuwur - diasumsèkaké kwalitas kacané luwih dhuwur.",
|
||||
"contributionscores-top": "(Top $1)",
|
||||
|
||||
8
i18n/lki.json
Normal file
8
i18n/lki.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Lakzon"
|
||||
]
|
||||
},
|
||||
"contributionscores-pages": "وةڵگةل"
|
||||
}
|
||||
@@ -9,11 +9,12 @@
|
||||
},
|
||||
"contributionscores": "योगदान संख्या",
|
||||
"contributionscores-desc": "[[Special:ContributionScores|सदस्य योगदान संख्येनुसार]] विकि डाटाबेस दर्शवितो",
|
||||
"contributionscores-info": "गुण खालीलप्रमाणे मोजले जातील:\n*प्रत्येक स्वतंत्र पानासाठी १ गुण\n*(एकूण संपादने) - (एकूण स्वतंत्र पाने) * 2 चे वर्गमूळ\nअशा प्रकारे मोजलेले गुण हे संपादन विविधतेला संपादन संख्येपेक्षा जास्त महत्व देतात. मुख्यत्वे, हे गुण जास्त संपादन संख्या मोजून स्वतंत्र पानांची संपादने काढतात.",
|
||||
"contributionscores-info": "गुण देतांना, प्राथमिकरित्या, अनन्य पानांचे संपादनासह,उच्च संपादन-आवाका लक्षात घेतल्या जातो.",
|
||||
"contributionscores-top": "(गुणानुक्रमे पहिले $1)",
|
||||
"contributionscores-days": "{{PLURAL:$1|शेवटचा दिवस|शेवटचे $1 दिवस}}",
|
||||
"contributionscores-allrevisions": "सर्व आवर्तने",
|
||||
"contributionscores-allrevisions": "सर्ववेळची",
|
||||
"contributionscores-score": "गुण",
|
||||
"contributionscores-rank": "गुणानुक्रम",
|
||||
"contributionscores-pages": "पाने",
|
||||
"contributionscores-changes": "बदल",
|
||||
"contributionscores-username": "सदस्यनाव",
|
||||
|
||||
@@ -5,13 +5,14 @@
|
||||
"Crazymadlover",
|
||||
"Eduardo.mps",
|
||||
"Giro720",
|
||||
"Luckas"
|
||||
"Luckas",
|
||||
"HenriqueCrang"
|
||||
]
|
||||
},
|
||||
"contributionscores": "Pontuação de contribuições",
|
||||
"contributionscores-desc": "Inquire a base de dados wiki sobre os mais altos [[Special:ContributionScores|volumes de contribuição dos utilizadores]]",
|
||||
"contributionscores-info": "As pontuações são calculadas da seguinte forma:\n*1 ponto por cada página única editada\n*Raiz quadrada de (Total de Edições Feitas) - (Total de Páginas Únicas) * 2\nPontuações calculadas desta forma pesam a diversidade de edições relativamente ao volume de edições. Basicamente, esta pontuação mede primariamente páginas únicas editadas, com consideração pelo alto volume de edições - assumindo serem páginas de qualidade mais alta.",
|
||||
"contributionscores-top": "(Iniciais $1)",
|
||||
"contributionscores-top": "(Top $1)",
|
||||
"contributionscores-days": "Últimos {{PLURAL:$1|día|$1 días}}",
|
||||
"contributionscores-allrevisions": "Desde sempre",
|
||||
"contributionscores-score": "Pontuação",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"Sarvaturi"
|
||||
]
|
||||
},
|
||||
"contributionscores": "Punteggiu pî cuntribbuta",
|
||||
"contributionscores": "Punteggiu pî cuntribbuti",
|
||||
"contributionscores-desc": "Addumanna â basi di dati dâ wiki circannu l’utenti cu [[Special:ContributionScores|vulumi di cuntribbutu]] cchiù granni",
|
||||
"contributionscores-info": "Stu punteggiu misura principalmenti la quantità di pàggini canciati, tinennu macari cuntu dî vulumi dî canciamenti granni.",
|
||||
"contributionscores-top": "({{PLURAL:$1|Lu megghiu|Li $1 megghiu}})",
|
||||
|
||||
@@ -6,11 +6,12 @@
|
||||
},
|
||||
"contributionscores": "Кертем билгеләү",
|
||||
"contributionscores-desc": "Хәтердән [[Special:ContributionScores|иң зур тәрҗемә ясаучы кулланучыларны]] билгели.",
|
||||
"contributionscores-info": "Билгеләр кую астагы критерийларга туры килү нәтиҗәсендә билгеләнә:\n* 1 Һәрбер аерым бер тәрҗемә өчен билге\n* 2 Гомуми тәрҗемәләр һәм һәрбер аерым бит аермасының тамыр асты\nШуның нәтиҗәсендә сезнең тәрҗемәләрегезгә тагын да зуррак билге куела.",
|
||||
"contributionscores-info": "Билгеләр кую, беренче чиратта, үзгәртелгән мәкаләләр санына һәм аларның күләменә карап бирелә.",
|
||||
"contributionscores-top": "(Иң әйбәт $1)",
|
||||
"contributionscores-days": "{{PLURAL:$1|Соңгы $1 көн өчен}}",
|
||||
"contributionscores-allrevisions": "Барлык үзгәртүләр",
|
||||
"contributionscores-days": "Соңгы {{PLURAL:$1|$1 көн өчен}}",
|
||||
"contributionscores-allrevisions": "Бөтен вакыт өчен",
|
||||
"contributionscores-score": "Билге",
|
||||
"contributionscores-rank": "Ранг",
|
||||
"contributionscores-pages": "Битләр саны",
|
||||
"contributionscores-changes": "Үзгәртүләр",
|
||||
"contributionscores-username": "Кулланучы исеме",
|
||||
|
||||
14
package.json
Normal file
14
package.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"test": "grunt test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "0.4.5",
|
||||
"grunt-cli": "0.1.13",
|
||||
"grunt-contrib-jshint": "0.11.3",
|
||||
"grunt-jscs": "2.5.0",
|
||||
"grunt-jsonlint": "1.0.7",
|
||||
"grunt-banana-checker": "0.4.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user