summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Evans <grknight@gentoo.org>2019-04-11 12:46:35 -0400
committerBrian Evans <grknight@gentoo.org>2019-04-11 12:46:35 -0400
commita9a1ff41ffa9d2a09767a42e37d667deeb90cf1d (patch)
tree5fcef82e88f6c0b2841f4c6d38202a52d465b850
parentClean up UserFunctions (diff)
downloadextensions-a9a1ff41ffa9d2a09767a42e37d667deeb90cf1d.tar.gz
extensions-a9a1ff41ffa9d2a09767a42e37d667deeb90cf1d.tar.bz2
extensions-a9a1ff41ffa9d2a09767a42e37d667deeb90cf1d.zip
Update UserMerge for 1.32
Signed-off-by: Brian Evans <grknight@gentoo.org>
-rw-r--r--UserMerge/.gitignore1
-rw-r--r--UserMerge/.phpcs.xml12
-rw-r--r--UserMerge/CODE_OF_CONDUCT.md2
-rw-r--r--UserMerge/Gruntfile.js3
-rw-r--r--UserMerge/UserMerge.alias.php15
-rw-r--r--UserMerge/UserMergeLogger.php44
-rw-r--r--UserMerge/composer.json21
-rw-r--r--UserMerge/extension.json24
-rw-r--r--UserMerge/gitinfo.json2
-rw-r--r--UserMerge/i18n/ar.json15
-rw-r--r--UserMerge/i18n/be-tarask.json23
-rw-r--r--UserMerge/i18n/be.json9
-rw-r--r--UserMerge/i18n/bg.json16
-rw-r--r--UserMerge/i18n/bn.json14
-rw-r--r--UserMerge/i18n/da.json8
-rw-r--r--UserMerge/i18n/de.json12
-rw-r--r--UserMerge/i18n/el.json3
-rw-r--r--UserMerge/i18n/en.json17
-rw-r--r--UserMerge/i18n/es.json12
-rw-r--r--UserMerge/i18n/et.json2
-rw-r--r--UserMerge/i18n/eu.json5
-rw-r--r--UserMerge/i18n/fa.json13
-rw-r--r--UserMerge/i18n/fi.json22
-rw-r--r--UserMerge/i18n/fr.json17
-rw-r--r--UserMerge/i18n/gl.json17
-rw-r--r--UserMerge/i18n/he.json12
-rw-r--r--UserMerge/i18n/hu.json20
-rw-r--r--UserMerge/i18n/io.json9
-rw-r--r--UserMerge/i18n/is.json11
-rw-r--r--UserMerge/i18n/it.json14
-rw-r--r--UserMerge/i18n/ja.json15
-rw-r--r--UserMerge/i18n/ko.json15
-rw-r--r--UserMerge/i18n/lb.json10
-rw-r--r--UserMerge/i18n/lt.json8
-rw-r--r--UserMerge/i18n/my.json18
-rw-r--r--UserMerge/i18n/nb.json18
-rw-r--r--UserMerge/i18n/pl.json2
-rw-r--r--UserMerge/i18n/pt-br.json13
-rw-r--r--UserMerge/i18n/pt.json16
-rw-r--r--UserMerge/i18n/qqq.json9
-rw-r--r--UserMerge/i18n/ru.json13
-rw-r--r--UserMerge/i18n/sl.json12
-rw-r--r--UserMerge/i18n/sr-ec.json30
-rw-r--r--UserMerge/i18n/sv.json12
-rw-r--r--UserMerge/i18n/ur.json14
-rw-r--r--UserMerge/i18n/yi.json8
-rw-r--r--UserMerge/i18n/zh-hans.json14
-rw-r--r--UserMerge/i18n/zh-hant.json15
-rw-r--r--UserMerge/includes/IUserMergeLogger.php (renamed from UserMerge/IUserMergeLogger.php)0
-rw-r--r--UserMerge/includes/MergeUser.php (renamed from UserMerge/MergeUser.php)180
-rw-r--r--UserMerge/includes/SpecialUserMerge.php (renamed from UserMerge/SpecialUserMerge.php)43
-rw-r--r--UserMerge/includes/UserMergeLogFormatter.php53
-rw-r--r--UserMerge/includes/UserMergeLogger.php42
-rw-r--r--UserMerge/package.json26
-rw-r--r--UserMerge/phpcs.xml17
-rw-r--r--UserMerge/tests/phan/config.php3
-rw-r--r--UserMerge/tests/phpunit/MergeUserTest.php10
-rw-r--r--UserMerge/version6
58 files changed, 689 insertions, 328 deletions
diff --git a/UserMerge/.gitignore b/UserMerge/.gitignore
index 322df574..466fb70e 100644
--- a/UserMerge/.gitignore
+++ b/UserMerge/.gitignore
@@ -2,6 +2,7 @@
node_modules/
composer.lock
vendor/
+tests/phan/issues/
# Editors
*.kate-swp
diff --git a/UserMerge/.phpcs.xml b/UserMerge/.phpcs.xml
new file mode 100644
index 00000000..2b0ed1bb
--- /dev/null
+++ b/UserMerge/.phpcs.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
+ </rule>
+ <rule ref="Generic.Files.LineLength">
+ <exclude-pattern>UserMerge\.alias\.php</exclude-pattern>
+ </rule>
+ <file>.</file>
+ <arg name="extensions" value="php,php5,inc" />
+ <arg name="encoding" value="UTF-8" />
+</ruleset>
diff --git a/UserMerge/CODE_OF_CONDUCT.md b/UserMerge/CODE_OF_CONDUCT.md
index d8e5d087..498acf76 100644
--- a/UserMerge/CODE_OF_CONDUCT.md
+++ b/UserMerge/CODE_OF_CONDUCT.md
@@ -1 +1 @@
-The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
+The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct).
diff --git a/UserMerge/Gruntfile.js b/UserMerge/Gruntfile.js
index 78ba56a3..c07280d8 100644
--- a/UserMerge/Gruntfile.js
+++ b/UserMerge/Gruntfile.js
@@ -23,7 +23,8 @@ module.exports = function ( grunt ) {
jsonlint: {
all: [
'**/*.json',
- '!node_modules/**'
+ '!node_modules/**',
+ '!vendor/**'
]
}
} );
diff --git a/UserMerge/UserMerge.alias.php b/UserMerge/UserMerge.alias.php
index b5aef905..ffa00b0e 100644
--- a/UserMerge/UserMerge.alias.php
+++ b/UserMerge/UserMerge.alias.php
@@ -238,6 +238,16 @@ $specialPageAliases['sk'] = [
'UserMerge' => [ 'ZlúčeniePoužívateľov' ],
];
+/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
+$specialPageAliases['sr-ec'] = [
+ 'UserMerge' => [ 'СпајањеКорисника', 'Спајање_корисника' ],
+];
+
+/** Serbian (Latin script) (srpski (latinica)‎) */
+$specialPageAliases['sr-el'] = [
+ 'UserMerge' => [ 'SpajanjeKorisnika', 'Spajanje_korisnika' ],
+];
+
/** Telugu (తెలుగు) */
$specialPageAliases['te'] = [
'UserMerge' => [ 'సభ్యునివిలీనం' ],
@@ -263,6 +273,11 @@ $specialPageAliases['uk'] = [
'UserMerge' => [ 'Об\'єднання_користувачів' ],
];
+/** Urdu (اردو) */
+$specialPageAliases['ur'] = [
+ 'UserMerge' => [ 'ضم_صارف' ],
+];
+
/** Vietnamese (Tiếng Việt) */
$specialPageAliases['vi'] = [
'UserMerge' => [ 'Hợp_nhất_người_dùng' ],
diff --git a/UserMerge/UserMergeLogger.php b/UserMerge/UserMergeLogger.php
deleted file mode 100644
index 89f38ac4..00000000
--- a/UserMerge/UserMergeLogger.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-class UserMergeLogger implements IUserMergeLogger {
-
- /**
- * Adds a merge log entry
- *
- * @todo Stop using this deprecated format
- * @param User $performer
- * @param User $oldUser
- * @param User $newUser
- */
- public function addMergeEntry( User $performer, User $oldUser, User $newUser ) {
- $log = new LogPage( 'usermerge' );
- $log->addEntry(
- 'mergeuser',
- $performer->getUserPage(),
- '',
- [
- $oldUser->getName(), $oldUser->getId(),
- $newUser->getName(), $newUser->getId()
- ],
- $performer
- );
- }
-
- /**
- * Adds a user deletion log entry
- *
- * @todo Stop using this deprecated format
- * @param User $perfomer
- * @param User $oldUser
- */
- public function addDeleteEntry( User $perfomer, User $oldUser ) {
- $log = new LogPage( 'usermerge' );
- $log->addEntry(
- 'deleteuser',
- $perfomer->getUserPage(),
- '',
- [ $oldUser->getName(), $oldUser->getId() ],
- $perfomer
- );
- }
-}
diff --git a/UserMerge/composer.json b/UserMerge/composer.json
index 7c63cad5..0ec61337 100644
--- a/UserMerge/composer.json
+++ b/UserMerge/composer.json
@@ -1,14 +1,23 @@
{
"require-dev": {
- "jakub-onderka/php-parallel-lint": "0.9.2",
- "mediawiki/mediawiki-codesniffer": "0.12.0",
- "jakub-onderka/php-console-highlighter": "0.3.2"
+ "jakub-onderka/php-parallel-lint": "1.0.0",
+ "mediawiki/mediawiki-codesniffer": "22.0.0",
+ "jakub-onderka/php-console-highlighter": "0.3.2",
+ "mediawiki/minus-x": "0.3.1",
+ "mediawiki/mediawiki-phan-config": "0.3.0"
},
"scripts": {
- "fix": "phpcbf",
+ "fix": [
+ "phpcbf",
+ "minus-x fix ."
+ ],
"test": [
- "parallel-lint . --exclude vendor",
- "phpcs -p -s"
+ "parallel-lint . --exclude vendor --exclude node_modules",
+ "phpcs -p -s",
+ "minus-x check ."
]
+ },
+ "extra": {
+ "phan-taint-check-plugin": "1.5.0"
}
}
diff --git a/UserMerge/extension.json b/UserMerge/extension.json
index ddca3eb4..8a22bc6d 100644
--- a/UserMerge/extension.json
+++ b/UserMerge/extension.json
@@ -8,9 +8,9 @@
],
"url": "https://www.mediawiki.org/wiki/Extension:UserMerge",
"descriptionmsg": "usermerge-desc",
- "license-name": "GPL-2.0+",
+ "license-name": "GPL-2.0-or-later",
"requires": {
- "MediaWiki": ">= 1.28.0"
+ "MediaWiki": ">= 1.31.0"
},
"type": "specialpage",
"AvailableRights": [
@@ -28,9 +28,14 @@
"LogHeaders": {
"usermerge": "usermerge-logpagetext"
},
- "LogActions": {
- "usermerge/mergeuser": "usermerge-success-log",
- "usermerge/deleteuser": "usermerge-userdeleted-log"
+ "ActionFilteredLogs": {
+ "usermerge": {
+ "mergeuser": [ "mergeuser" ],
+ "deleteuser": [ "deleteuser" ]
+ }
+ },
+ "LogActionsHandlers": {
+ "usermerge/*": "UserMergeLogFormatter"
},
"MessagesDirs": {
"UserMerge": [
@@ -41,10 +46,11 @@
"UserMergeAlias": "UserMerge.alias.php"
},
"AutoloadClasses": {
- "SpecialUserMerge": "SpecialUserMerge.php",
- "MergeUser": "MergeUser.php",
- "IUserMergeLogger": "IUserMergeLogger.php",
- "UserMergeLogger": "UserMergeLogger.php"
+ "SpecialUserMerge": "includes/SpecialUserMerge.php",
+ "MergeUser": "includes/MergeUser.php",
+ "IUserMergeLogger": "includes/IUserMergeLogger.php",
+ "UserMergeLogger": "includes/UserMergeLogger.php",
+ "UserMergeLogFormatter": "includes/UserMergeLogFormatter.php"
},
"config": {
"UserMergeEnableDelete": true,
diff --git a/UserMerge/gitinfo.json b/UserMerge/gitinfo.json
index 86d4d6a1..4a8958d5 100644
--- a/UserMerge/gitinfo.json
+++ b/UserMerge/gitinfo.json
@@ -1 +1 @@
-{"headSHA1": "45465372c950653e260aa41e57522b4d58ab632a\n", "head": "45465372c950653e260aa41e57522b4d58ab632a\n", "remoteURL": "https://gerrit.wikimedia.org/r/mediawiki/extensions/UserMerge", "branch": "45465372c950653e260aa41e57522b4d58ab632a\n", "headCommitDate": "1504241965"} \ No newline at end of file
+{"remoteURL": "https://gerrit.wikimedia.org/r/mediawiki/extensions/UserMerge", "headCommitDate": "1547405747", "branch": "66c703068fa0089cb5644129158a8c50b0b12fef\n", "head": "66c703068fa0089cb5644129158a8c50b0b12fef\n", "headSHA1": "66c703068fa0089cb5644129158a8c50b0b12fef\n"} \ No newline at end of file
diff --git a/UserMerge/i18n/ar.json b/UserMerge/i18n/ar.json
index ba4a2c90..d6323b45 100644
--- a/UserMerge/i18n/ar.json
+++ b/UserMerge/i18n/ar.json
@@ -14,21 +14,24 @@
"usermerge-badnewuser": "اسم المستخدم الجديد غير صحيح",
"usermerge-nonewuser": "اسم مستخدم جديد فارغ - افتراض الدمج إلى \"$1\".<br />\nاضغط \"{{int:usermerge-submit}}\" للقبول.",
"usermerge-noolduser": "اسم المستخدم القديم فارغ",
+ "usermerge-same-old-and-new-user": "يجب أن تكون أسماء المستخدمين القديمة والجديدة مميزة.",
"usermerge-fieldset": "أسماء المستخدمين للدمج",
"usermerge-olduser": "مستخدم قديم (دمج من):",
"usermerge-newuser": "مستخدم جديد (دمج إلى):",
"usermerge-deleteolduser": "حذف المستخدم القديم",
"usermerge-submit": "دمج المستخدم",
"usermerge-badtoken": "نص تعديل غير صحيح",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) تم حذفه.",
- "usermerge-userdeleted-log": "حذف المستخدم: $2($3)",
- "usermerge-success": "الدمج من {{GENDER:$1|$1}} ($2) إلى{{GENDER:$3|$3}} ($4) اكتمل.",
- "usermerge-success-log": "المستخدم {{GENDER:$2|$2}} ($3) تم دمجه مع {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1 ($2) تم حذفه.",
+ "usermerge-userdeleted-log": "تم حذف حساب المستخدم: $2($3)",
+ "usermerge-success": "الدمج من $1 ($2) إلى $3 ($4) اكتمل.",
+ "usermerge-success-log": "تم دمج المستخدم \"$2\" ($3) إلى \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "سجل دمج المستخدم",
"usermerge-logpagetext": "هذا سجل بأفعال دمج المستخدمين.",
"usermerge-noselfdelete": "لا يمكنك حذف أو دمج {{GENDER:$1|نفسك}}!",
- "usermerge-protectedgroup": "غير قادر على دمج {{GENDER:$1|المستخدم}}: المستخدم في مجموعة محمية.",
+ "usermerge-protectedgroup": "غير قادر على دمج {{GENDER:$1|المستخدم}}; المستخدم في مجموعة محمية.",
"right-usermerge": "دمج المستخدمين",
"action-usermerge": "دمج المستخدمين",
- "usermerge-page-unmoved": "تعذر نقل الصفحة $1 إلى $2."
+ "usermerge-autopagedelete": "تم حذف الصفحة تلقائيا أثناء دمج المستخدمين",
+ "usermerge-page-unmoved": "تعذر نقل الصفحة $1 إلى $2.",
+ "usermerge-move-log": "تم نقل الصفحة تلقائيا عند دمج الحساب \"$1\" إلى \"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/be-tarask.json b/UserMerge/i18n/be-tarask.json
index 2c978287..8514d286 100644
--- a/UserMerge/i18n/be-tarask.json
+++ b/UserMerge/i18n/be-tarask.json
@@ -5,7 +5,8 @@
"Jim-by",
"Red Winged Duck",
"Renessaince",
- "Wizardist"
+ "Wizardist",
+ "Artsiom91"
]
},
"usermerge": "Аб'яднаньне і выдаленьне рахункаў удзельнікаў",
@@ -16,22 +17,22 @@
"usermerge-noolduser": "Пустое старое імя ўдзельніка",
"usermerge-same-old-and-new-user": "Старое і новае імя ўдзельніка мусяць адрозьнівацца.",
"usermerge-fieldset": "Імёны ўдзельнікаў для аб'яднаньня",
- "usermerge-olduser": "Стары ўдзельнік (аб'яднаць з):",
- "usermerge-newuser": "Новы ўдзельнік (аб'яднаць з):",
+ "usermerge-olduser": "Стары ўдзельнік (аб’яднаць з):",
+ "usermerge-newuser": "Новы ўдзельнік (аб’яднаць з):",
"usermerge-deleteolduser": "Выдаліць стары рахунак удзельніка",
- "usermerge-submit": "Аб'яднаць рахункі ўдзельнікаў",
+ "usermerge-submit": "Аб’яднаць уліковыя запісы ўдзельнікаў",
"usermerge-badtoken": "Няслушны знак рэдагаваньня",
- "usermerge-userdeleted": "$1 ($2) {{GENDER:$1|быў выдалены|была выдаленая}}.",
- "usermerge-userdeleted-log": "Выдалены рахунак удзельніка: $2 ($3)",
- "usermerge-success": "Аб'яднаньне {{GENDER:$1|$1}} ($2) з {{GENDER:$3|$3}} ($4) скончанае.",
- "usermerge-success-log": "{{GENDER:$2|Удзельнік|Удзельніца}} $2 ($3) {{GENDER:$2|аб’яднаны|аб’яднаная}} з $4 ($5)",
+ "usermerge-userdeleted": "$1 ($2) быў выдалены.",
+ "usermerge-userdeleted-log": "выдалены рахунак удзельніка «$2» ($3)",
+ "usermerge-success": "Аб’яднаньне $1 ($2) з $3 ($4) завершанае.",
+ "usermerge-success-log": "далучаны рахунак «$2» ($3) да «[[User:$4|$4]]» ($5)",
"usermerge-logpage": "Журнал аб’яднаньня рахункаў удзельнікаў",
"usermerge-logpagetext": "Гэта журнал аб’яднаньня рахункаў удзельнікаў.",
"usermerge-noselfdelete": "Вы ня можаце выдаліць ці аб’яднаць {{GENDER:$1|уласны рахунак}}!",
- "usermerge-protectedgroup": "Немагчыма аб’яднаць рахунак {{GENDER:$1|удзельніка|удзельніцы}}: {{GENDER:$1|ён|яна}} знаходзіцца ў абароненай групе.",
+ "usermerge-protectedgroup": "Немагчыма далучыць рахунак {{GENDER:$1|удзельніка|удзельніцы}}: {{GENDER:$1|ён|яна}} знаходзіцца ў абароненай групе.",
"right-usermerge": "аб'яднаньне рахункаў удзельнікаў",
"action-usermerge": "аб’ядноўваць удзельнікаў",
- "usermerge-autopagedelete": "Аўтаматычна выдалены падчас аб’яднаньня рахункаў ўдзельнікаў",
+ "usermerge-autopagedelete": "Аўтаматычна выдаленая старонка падчас аб’яднаньня рахункаў удзельнікаў",
"usermerge-page-unmoved": "Старонка $1 ня можа быць перанесеная ў $2.",
- "usermerge-move-log": "Аўтаматычна перанесеная старонка падчас аб’яднаньня рахунку ўдзельніка «[[User:$1|$1]]» з «[[User:$2|{{GENDER:$2|$2}}]]»"
+ "usermerge-move-log": "Аўтаматычна перанесеная старонка падчас далучэньня рахунку «$1» да «[[User:$2|$2]]»"
}
diff --git a/UserMerge/i18n/be.json b/UserMerge/i18n/be.json
new file mode 100644
index 00000000..1de443d1
--- /dev/null
+++ b/UserMerge/i18n/be.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Artsiom91"
+ ]
+ },
+ "usermerge-logpage": "Журнал аб’яднання ўдзельнікаў",
+ "usermerge-logpagetext": "Гэта журнал аб’яднання ўліковых запісаў удзельнікаў."
+}
diff --git a/UserMerge/i18n/bg.json b/UserMerge/i18n/bg.json
index c0d3f3fc..bc9c9079 100644
--- a/UserMerge/i18n/bg.json
+++ b/UserMerge/i18n/bg.json
@@ -2,7 +2,9 @@
"@metadata": {
"authors": [
"DCLXVI",
- "Termininja"
+ "Termininja",
+ "StanProg",
+ "Vlad5250"
]
},
"usermerge": "Сливане и изтриване на потребители",
@@ -15,14 +17,14 @@
"usermerge-newuser": "Нов потребител (за сливане в):",
"usermerge-deleteolduser": "Изтриване на стария потребител",
"usermerge-submit": "Сливане",
- "usermerge-userdeleted": "$1($2) беше изтрит.",
- "usermerge-userdeleted-log": "Изтрит потребител: $2($3)",
+ "usermerge-userdeleted": "$1 ($2) беше изтрит.",
+ "usermerge-userdeleted-log": "изтри потребителска сметка „$2“ ($3)",
"usermerge-success": "Сливането от $1 ($2) към $3 ($4) приключи.",
- "usermerge-success-log": "Потребител $2 ($3) беше слят с $4 ($5)",
+ "usermerge-success-log": "сля сметка „$2“ ($3) в „[[User:$4|$4]]“ ($5)",
"usermerge-logpage": "Дневник на потребителските сливания",
"usermerge-logpagetext": "Тази страница съдържа дневник на потребителските сливания.",
- "usermerge-noselfdelete": "Не е възможно да изтривате или сливате от себе си!",
- "usermerge-protectedgroup": "Невъзможно е да се извърши сливане от потребител - потребителят е в защитена група.",
- "right-usermerge": "сливане на потребители",
+ "usermerge-noselfdelete": "Не е възможно да изтривате или сливате от {{GENDER:$1|себе си}}!",
+ "usermerge-protectedgroup": "Невъзможно е да се извърши сливане от {{GENDER:$1|потребител}}: потребителят е в защитена група.",
+ "right-usermerge": "Сливане на потребители",
"action-usermerge": "сливане на потребителски сметки"
}
diff --git a/UserMerge/i18n/bn.json b/UserMerge/i18n/bn.json
index 67ef192e..748ce1ef 100644
--- a/UserMerge/i18n/bn.json
+++ b/UserMerge/i18n/bn.json
@@ -4,7 +4,9 @@
"Bellayet",
"Zaheen",
"Aftab1995",
- "Aftabuzzaman"
+ "Aftabuzzaman",
+ "Rasal Lia",
+ "আফতাবুজ্জামান"
]
},
"usermerge": "ব্যবহারকারী একত্রীকরণ এবং মুছে ফেলা",
@@ -20,10 +22,10 @@
"usermerge-deleteolduser": "পুরনো ব্যবহারকারী অপসারণ করুন",
"usermerge-submit": "ব্যবহারকারী একত্রীত করুন",
"usermerge-badtoken": "সম্পাদনা টোকেন অবৈধ।",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) মুছে ফেলা হয়েছে।",
- "usermerge-userdeleted-log": "অপসারিত ব্যবহারকারী: $2 ($3)",
- "usermerge-success": "{{GENDER:$1|$1}} ($2) থেকে {{GENDER:$3|$3}} ($4)-এ একত্রীকরণ সম্পন্ন হয়েছে।",
- "usermerge-success-log": "ব্যবহারকারী {{GENDER:$2|$2}} ($3)-কে {{GENDER:$4|$4}} ($5)-এর সাথে একত্রিত করা হয়েছে",
+ "usermerge-userdeleted": "$1 ($2) মুছে ফেলা হয়েছে।",
+ "usermerge-userdeleted-log": "ব্যবহারকারী এক্যাউন্ট \"$2\" ($3) বাতিল হয়েছে",
+ "usermerge-success": "$1 ($2) থেকে $3 ($4)-এ একত্রীকরণ সম্পন্ন হয়েছে।",
+ "usermerge-success-log": "\"$2\" ($3) এক্যাউন্টটি \"[[User:$4|$4]]\" ($5) এর সাথে একত্রিত হয়েছে",
"usermerge-logpage": "ব্যবহারকারী একত্রীকরণ লগ",
"usermerge-logpagetext": "এটি ব্যবহারকারী একত্রীকরনের একটি লগ।",
"usermerge-noselfdelete": "আপনি {{GENDER:$1|নিজের}} ব্যবহারকারী নাম মুছে ফেলতে বা এটি থেকে অন্য নামে একত্রিত করতে পারবেন না!",
@@ -32,5 +34,5 @@
"action-usermerge": "ব্যবহারকারী একত্রিত করার",
"usermerge-autopagedelete": "ব্যবহারকারী একত্রীত করার সময় স্বয়ংক্রিয়ভাবে অপসারিত",
"usermerge-page-unmoved": "$1 পাতাটি $2-এ সরিয়ে নেওয়া সম্ভব নয়।",
- "usermerge-move-log": "ব্যবহারকারী \"[[User:$1|$1]]\" কে \"[[User:$2|{{GENDER:$2|$2}}]]\"-এ একত্রীত করার সময় স্বয়ংক্রিয়ভাবে পাতা স্থানান্তরিত"
+ "usermerge-move-log": "\"$1\" অ্যাকাউন্টটি \"[[User:$2|$2]]\"-এ একত্রীত করার সময় স্বয়ংক্রিয়ভাবে পাতা স্থানান্তরিত"
}
diff --git a/UserMerge/i18n/da.json b/UserMerge/i18n/da.json
new file mode 100644
index 00000000..a8877633
--- /dev/null
+++ b/UserMerge/i18n/da.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saederup92"
+ ]
+ },
+ "usermerge-deleteolduser": "Slet gammel bruger"
+}
diff --git a/UserMerge/i18n/de.json b/UserMerge/i18n/de.json
index 857a236a..81ed2886 100644
--- a/UserMerge/i18n/de.json
+++ b/UserMerge/i18n/de.json
@@ -23,17 +23,17 @@
"usermerge-deleteolduser": "Alten Benutzernamen löschen",
"usermerge-submit": "Benutzerkonten zusammenführen",
"usermerge-badtoken": "Ungültiges Bearbeitungstoken",
- "usermerge-userdeleted": "„{{GENDER:$1|$1}}“ ($2) wurde gelöscht.",
- "usermerge-userdeleted-log": "hat „$2“ ($3) gelöscht",
- "usermerge-success": "Die Zusammenführung von „{{GENDER:$1|$1}}“ ($2) nach „{{GENDER:$3|$3}}“ ($4) war erfolgreich.",
- "usermerge-success-log": "hat „{{GENDER:$2|$2}}“ ($3) mit „{{GENDER:$4|$4}}“ ($5) zusammengeführt",
+ "usermerge-userdeleted": "„$1“ ($2) wurde gelöscht.",
+ "usermerge-userdeleted-log": "hat das Benutzerkonto „$2“ ($3) gelöscht",
+ "usermerge-success": "Die Zusammenführung von „$1“ ($2) nach „$3“ ($4) war erfolgreich.",
+ "usermerge-success-log": "hat das Benutzerkonto „$2“ ($3) in „[[User:$4|$4]]“ ($5) zusammengeführt",
"usermerge-logpage": "Benutzerkontenzusammenführungs-Logbuch",
"usermerge-logpagetext": "Dies ist das Logbuch der Benutzerkontenzusammenführungen.",
"usermerge-noselfdelete": "Die Zusammenführung mit {{GENDER:$1|dem eigenen Benutzerkonto}} ist nicht möglich.",
"usermerge-protectedgroup": "Die Zusammenführung ist nicht möglich: {{GENDER:$1|Der Benutzer|Die Benutzerin}} befindet sich in einer hierfür geschützten Benutzergruppe.",
"right-usermerge": "Benutzerkonten zusammenführen",
"action-usermerge": "Benutzer zusammenzuführen",
- "usermerge-autopagedelete": "Automatisch während der Benutzerkontenzusammenführung gelöscht",
+ "usermerge-autopagedelete": "Bei der Zusammenführung der Benutzer automatisch gelöschte Seite",
"usermerge-page-unmoved": "Die Seite „$1“ konnte nicht nach „$2“ verschoben werden.",
- "usermerge-move-log": "Die Seite wurde während der Benutzerkontenzusammenführung von „[[User:$1|$1]]“ nach „[[User:$2|{{GENDER:$2|$2}}]]“ automatisch verschoben"
+ "usermerge-move-log": "Die Seite wurde während der Benutzerkontenzusammenführung von „$1“ nach „[[User:$2|$2]]“ automatisch verschoben"
}
diff --git a/UserMerge/i18n/el.json b/UserMerge/i18n/el.json
index 852d53cc..4d1ea3df 100644
--- a/UserMerge/i18n/el.json
+++ b/UserMerge/i18n/el.json
@@ -5,7 +5,8 @@
"Crazymadlover",
"Omnipaedista",
"Protnet",
- "ZaDiak"
+ "ZaDiak",
+ "KATRINE1992"
]
},
"usermerge": "Συγχώνευση και διαγραφή χρηστών",
diff --git a/UserMerge/i18n/en.json b/UserMerge/i18n/en.json
index 87affa08..ad8cb139 100644
--- a/UserMerge/i18n/en.json
+++ b/UserMerge/i18n/en.json
@@ -15,17 +15,20 @@
"usermerge-deleteolduser": "Delete old user",
"usermerge-submit": "Merge user",
"usermerge-badtoken": "Invalid edit token.",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) has been deleted.",
- "usermerge-userdeleted-log": "Deleted user: $2 ($3)",
- "usermerge-success": "Merge from {{GENDER:$1|$1}} ($2) to {{GENDER:$3|$3}} ($4) is complete.",
- "usermerge-success-log": "User {{GENDER:$2|$2}} ($3) merged to {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1 ($2) has been deleted.",
+ "usermerge-success": "Merge from $1 ($2) to $3 ($4) is complete.",
"usermerge-logpage": "User merge log",
"usermerge-logpagetext": "This is a log of user merge actions.",
"usermerge-noselfdelete": "You cannot delete or merge from {{GENDER:$1|yourself}}!",
- "usermerge-protectedgroup": "Unable to merge from {{GENDER:$1|user}}: User is in a protected group.",
+ "usermerge-protectedgroup": "Unable to merge from {{GENDER:$1|user}}: user is in a protected group.",
"right-usermerge": "Merge users",
"action-usermerge": "merge users",
- "usermerge-autopagedelete": "Automatically deleted when merging users",
+ "usermerge-autopagedelete": "Automatically deleted page while merging users",
"usermerge-page-unmoved": "The page $1 could not be moved to $2.",
- "usermerge-move-log": "Automatically moved page while merging the user \"[[User:$1|$1]]\" to \"[[User:$2|{{GENDER:$2|$2}}]]\""
+ "usermerge-move-log": "Automatically moved page while merging the account \"$1\" to \"[[User:$2|$2]]\"",
+ "logentry-usermerge-mergeuser": "$1 {{GENDER:$2|merged}} the user account \"$4\" ($5) into {{GENDER:$8|$6}} ($7)",
+ "logentry-usermerge-deleteuser": "$1 {{GENDER:$2|deleted}} the user account \"$4\" ($5)",
+ "log-action-filter-usermerge": "Type of action:",
+ "log-action-filter-usermerge-mergeuser": "User account merge",
+ "log-action-filter-usermerge-deleteuser": "User account deletion"
}
diff --git a/UserMerge/i18n/es.json b/UserMerge/i18n/es.json
index 667159d7..93ccd946 100644
--- a/UserMerge/i18n/es.json
+++ b/UserMerge/i18n/es.json
@@ -26,17 +26,17 @@
"usermerge-deleteolduser": "Borrar antiguo usuario",
"usermerge-submit": "Fusionar usuario",
"usermerge-badtoken": "Ficha de edición inválida",
- "usermerge-userdeleted": "Se borró {{GENDER:$1|el usuario|la usuaria}} $1 ($2).",
+ "usermerge-userdeleted": "Se borró a $1 ($2).",
"usermerge-userdeleted-log": "borró la cuenta de usuario «$2» ($3)",
- "usermerge-success": "La fusión de $1 ($2) a $3 ($4) ha sido completada.",
- "usermerge-success-log": "fusionó al usuario «$2» ($3) con el usuario «$4» ($5)",
+ "usermerge-success": "Se completó la combinación de $1 ($2) a $3 ($4).",
+ "usermerge-success-log": "fusionó la cuenta «$2» ($3) con «[[User:$4|$4]]» ($5)",
"usermerge-logpage": "Registro de fusiones del usuario",
"usermerge-logpagetext": "Este es un registro de fusiones de cuentas de usuario.",
"usermerge-noselfdelete": "No puedes borrarte o fusionarte tú {{GENDER:$1|mismo|misma}}.",
- "usermerge-protectedgroup": "Imposible fusionar desde {{GENDER:$1|el usuario|la usuaria}}: está en un grupo protegido.",
+ "usermerge-protectedgroup": "Imposible fusionar desde {{GENDER:$1|el usuario|la usuaria}}: la cuenta de usuario está en un grupo protegido.",
"right-usermerge": "Fusionar usuarios",
"action-usermerge": "fusionar usuarios",
- "usermerge-autopagedelete": "Eliminado automáticamente al fusionar usuarios",
+ "usermerge-autopagedelete": "Borrada automáticamente al fusionar usuarios",
"usermerge-page-unmoved": "La página $1 no pudo trasladarse a $2.",
- "usermerge-move-log": "Página trasladada automáticamente al fusionar al usuario «[[User:$1|$1]]» con «[[User:$2|$2]]»"
+ "usermerge-move-log": "Página trasladada automáticamente al fusionar la cuenta «$1» con «[[User:$2|$2]]»"
}
diff --git a/UserMerge/i18n/et.json b/UserMerge/i18n/et.json
index a13834ae..41b13f05 100644
--- a/UserMerge/i18n/et.json
+++ b/UserMerge/i18n/et.json
@@ -7,7 +7,7 @@
"usermerge-desc": "[[Special:UserMerge|Ühendab vikiandmebaasis kasutaja nimetamised teise kasutajaga]]. Ühendamise järel kustutab vanad kasutajad. Nõuab õigust \"usermerge\".",
"usermerge-badolduser": "Vigane vana kasutajanimi",
"usermerge-badnewuser": "Vigane uus kasutajanimi",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) on kustutatud.",
+ "usermerge-userdeleted": "$1 ($2) on kustutatud.",
"usermerge-logpage": "Kasutajate ühendamislogi",
"usermerge-logpagetext": "See on kasutajaühendamistoimingute logi."
}
diff --git a/UserMerge/i18n/eu.json b/UserMerge/i18n/eu.json
index c74b8871..a5fe1784 100644
--- a/UserMerge/i18n/eu.json
+++ b/UserMerge/i18n/eu.json
@@ -3,7 +3,8 @@
"authors": [
"An13sa",
"Theklan",
- "Xabier Armendaritz"
+ "Xabier Armendaritz",
+ "Mikel Ibaiba"
]
},
"usermerge-badolduser": "Baliogabeko lankide izen zaharra",
@@ -14,7 +15,7 @@
"usermerge-deleteolduser": "Ezabatu lankide zaharra",
"usermerge-submit": "Lankidea batu",
"usermerge-badtoken": "Aldaketa token ez baliagarria",
- "usermerge-userdeleted": "$1 ($2) ezabatua izan da.",
+ "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) ezabatua izan da.",
"usermerge-userdeleted-log": "Ezabatutako lankidea: $2 ($3)",
"usermerge-success": "$1(e)tik ($2) $3(e)ra ($4) batzea burutu da.",
"usermerge-success-log": "$2 ($3) lankidea $4 ($5) lankidera batu da",
diff --git a/UserMerge/i18n/fa.json b/UserMerge/i18n/fa.json
index 8d2db599..ab7bc888 100644
--- a/UserMerge/i18n/fa.json
+++ b/UserMerge/i18n/fa.json
@@ -9,7 +9,8 @@
"Mjbmr",
"Reza1615",
"ZxxZxxZ",
- "Alirezaaa"
+ "Alirezaaa",
+ "Ladsgroup"
]
},
"usermerge": "ادغام و حذف‌کردن کاربران",
@@ -25,10 +26,10 @@
"usermerge-deleteolduser": "پاک‌کردن کاربر قدیمی",
"usermerge-submit": "یکی کردن کاربر",
"usermerge-badtoken": "نشانهٔ ویرایش نامعتبر.",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) پاک شد.",
- "usermerge-userdeleted-log": "کاربر حذف شده: $2 ($3)",
- "usermerge-success": "یکی‌کردن از {{GENDER:$1|$1}} ($2) به {{GENDER:$3|$3}} ($4) کامل شد.",
- "usermerge-success-log": "کاربر {{GENDER:$2|$2}} ($3) با {{GENDER:$4|$4}} ($5) یکی شد",
+ "usermerge-userdeleted": "$1 ($2) پاک شد.",
+ "usermerge-userdeleted-log": "کاربر «$2» حذف شد ($3)",
+ "usermerge-success": "یکی‌کردن از $1 ($2) به $3 ($4) کامل شد.",
+ "usermerge-success-log": "کاربر «$2» ($3) با «[[User:$4|$4]]» ($5) یکی شد",
"usermerge-logpage": "سیاههٔ ادغام کاربر",
"usermerge-logpagetext": "این سیاهه‌ی ادغام فعالیت‌های کاربر است.",
"usermerge-noselfdelete": "شما نمی‌توانید {{GENDER:$1|خودتان}} را یکی یا حذف کنید!",
@@ -37,5 +38,5 @@
"action-usermerge": "ادغام کاربران",
"usermerge-autopagedelete": "حذف به طور خودکار هنگام ادغام کاربران",
"usermerge-page-unmoved": "امکان انتقال صفحهٔ $1 به $2 وجود ندارد.",
- "usermerge-move-log": "انتقال خودکار صفحه هنگام ادغام کاربر «[[User:$1|$1]]» به «[[User:$2|{{GENDER:$2|$2}}]]»"
+ "usermerge-move-log": "انتقال خودکار صفحه هنگام ادغام کاربر «$1» به «[[User:$2|$2]]»"
}
diff --git a/UserMerge/i18n/fi.json b/UserMerge/i18n/fi.json
index 8a93c6c7..27f5c610 100644
--- a/UserMerge/i18n/fi.json
+++ b/UserMerge/i18n/fi.json
@@ -8,14 +8,17 @@
"Str4nd",
"Stryn",
"VezonThunder",
- "Vililikku"
+ "Vililikku",
+ "01miki10"
]
},
"usermerge": "Käyttäjätunnusten yhdistys ja poisto",
+ "usermerge-desc": "[[Special:UserMerge|Yhdistää viittaukset yhdestä käyttäjästä toiseen]] wikin tietokannassa - poistaa myös vanhat käyttäjät yhdistämisen jälkeen. Vaatii oikeuden \"usermerge\"",
"usermerge-badolduser": "Vanha käyttäjätunnus ei kelpaa",
"usermerge-badnewuser": "Uusi käyttäjätunnus ei kelpaa",
- "usermerge-nonewuser": "Uusi käyttäjätunnus -kenttä on tyhjä - oletetaan yhdistäminen tunnukseen \"$1\". <br /> \nNapsauta \"{{int:usermerge-submit}}\" hyväksyäksesi.",
+ "usermerge-nonewuser": "Uusi käyttäjätunnus -kenttä on tyhjä. Oletetaan yhdistäminen tunnukseen \"{{GENDER:$1|$1}}\". <br /> \nNapsauta \"{{int:usermerge-submit}}\" hyväksyäksesi.",
"usermerge-noolduser": "Vanha käyttäjätunnus ei voi olla tyhjä.",
+ "usermerge-same-old-and-new-user": "Vanhan ja uuden käyttäjänimen on oltava eroavat.",
"usermerge-fieldset": "Yhdistettävät käyttäjänimet",
"usermerge-olduser": "Vanha käyttäjä (mikä yhdistetään)",
"usermerge-newuser": "Uusi käyttäjä (mihin yhdistetään)",
@@ -23,15 +26,16 @@
"usermerge-submit": "Yhdistä käyttäjä",
"usermerge-badtoken": "Virheellinen muokkauslipuke",
"usermerge-userdeleted": "$1 ($2) on poistettu.",
- "usermerge-userdeleted-log": "Poistettiin käyttäjä: $2 ($3)",
- "usermerge-success": "Yhdistäminen tunnuksesta $1 ($2) tunnukseen {{GENDER:$3|$3}} ($4) on suoritettu.",
- "usermerge-success-log": "Käyttäjä $2 ($3) yhdistettiin käyttäjään {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted-log": "poisti käyttäjätunnuksen \"$2\" ($3)",
+ "usermerge-success": "Yhdistäminen tunnuksesta $1 ($2) tunnukseen $3 ($4) on suoritettu.",
+ "usermerge-success-log": "yhdisti käyttäjän \"$2\" ($3) käyttäjään \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Käyttäjien yhdistämisloki",
"usermerge-logpagetext": "Tämä on loki käyttäjätunnuksien yhdistämistoimista.",
- "usermerge-noselfdelete": "Et voi poistaa tai yhdistää itseltäsi.",
- "usermerge-protectedgroup": "Ei voi yhdistää käyttäjänimestä - käyttäjänimi kuuluu suojattuun ryhmään.",
+ "usermerge-noselfdelete": "Et voi poistaa tai yhdistää {{GENDER:$1|itseäsi}}!",
+ "usermerge-protectedgroup": "Ei voi yhdistää {{GENDER:$1|käyttäjästä}}: käyttäjä kuuluu suojattuun ryhmään.",
"right-usermerge": "Yhdistää käyttäjiä",
- "usermerge-autopagedelete": "Poistettiin automaattisesti käyttäjien yhdistämisessä",
+ "action-usermerge": "yhdistää käyttäjiä",
+ "usermerge-autopagedelete": "Sivu poistettiin automaattisesti käyttäjien yhdistämisessä",
"usermerge-page-unmoved": "Sivua $1 ei voitu siirtää nimelle $2.",
- "usermerge-move-log": "Sivu siirretty automaattisesti yhdistettäessä käyttäjä \"[[User:$1|$1]]\" käyttäjään \"[[User:$2|{{GENDER:$2|$2}}]]\""
+ "usermerge-move-log": "Sivu siirrettiin automaattisesti yhdistettäessä käyttäjä \"$1\" käyttäjään \"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/fr.json b/UserMerge/i18n/fr.json
index fce8e046..d81c2a7b 100644
--- a/UserMerge/i18n/fr.json
+++ b/UserMerge/i18n/fr.json
@@ -10,7 +10,8 @@
"PieRRoMaN",
"Seb35",
"Sherbrooke",
- "Urhixidur"
+ "Urhixidur",
+ "Wladek92"
]
},
"usermerge": "Fusionner et supprimer des utilisateurs",
@@ -27,16 +28,16 @@
"usermerge-submit": "Fusionner l’utilisateur",
"usermerge-badtoken": "Jeton de modification invalide",
"usermerge-userdeleted": "$1 ($2) a été supprimé{{GENDER:$1||e}}.",
- "usermerge-userdeleted-log": "Contributeur supprimé : $2 ($3)",
- "usermerge-success": "La fusion de {{GENDER:$1|$1}} ($2) avec {{GENDER:$3|$3}} ($4) est terminée.",
- "usermerge-success-log": "{{GENDER:$2|Utilisateur|Utilisatrice}} $2 ($3) fusionné{{GENDER:$2||e}} avec {{GENDER:$4|$4}} ($5)",
- "usermerge-logpage": "Journal des fusions de comptes utilisateur",
+ "usermerge-userdeleted-log": "contributeur supprimé : « $2 » ($3)",
+ "usermerge-success": "La fusion de $1 ($2) avec $3 ($4) est terminée.",
+ "usermerge-success-log": "compte « $2 » ($3) fusionné avec « [[User:$4|$4]] » ($5)",
+ "usermerge-logpage": "Journal des fusions de comptes d’utilisateurs",
"usermerge-logpagetext": "Voici un journal des actions de fusions d’utilisateurs.",
"usermerge-noselfdelete": "Vous ne pouvez pas vous supprimer ou vous fusionner {{GENDER:$1|vous-même}} !",
- "usermerge-protectedgroup": "Impossible de fusionner l’{{GENDER:$1|utilisateur|utilisatrice}} : l’{{GENDER:$1|utilisateur|utilisatrice}} est dans un groupe protégé.",
+ "usermerge-protectedgroup": "Impossible de fusionner l’{{GENDER:$1|utilisateur|utilisatrice}} : l’{{GENDER:$1|il|elle}} est dans un groupe protégé.",
"right-usermerge": "Fusionner des utilisateurs",
"action-usermerge": "fusionner les utilisateurs",
- "usermerge-autopagedelete": "Supprimé automatiquement lors de la fusion de utilisateurs",
+ "usermerge-autopagedelete": "Page supprimée automatiquement lors de la fusion des utilisateurs",
"usermerge-page-unmoved": "Cette page $1 ne peut pas être déplacée vers $2.",
- "usermerge-move-log": "Page déplacée automatiquement lors de la fusion de l’utilisateur \"[[User:$1|$1]]\" en \"[[User:$2|{{GENDER:$2|$2}}]]\""
+ "usermerge-move-log": "Page renommée automatiquement lors de la fusion du compte d’utilisat{{GENDER:$1|eur|rice}} « $1 » en « [[User:$2|]] »"
}
diff --git a/UserMerge/i18n/gl.json b/UserMerge/i18n/gl.json
index 19690558..8127ef55 100644
--- a/UserMerge/i18n/gl.json
+++ b/UserMerge/i18n/gl.json
@@ -3,7 +3,8 @@
"authors": [
"Alma",
"Toliño",
- "Elisardojm"
+ "Elisardojm",
+ "Banjo"
]
},
"usermerge": "Fusionar e eliminar usuario",
@@ -19,17 +20,17 @@
"usermerge-deleteolduser": "Borrar o usuario antigo",
"usermerge-submit": "Fusionar o usuario",
"usermerge-badtoken": "Sinal de edición non válido",
- "usermerge-userdeleted": "Borrouse {{GENDER:$1|o usuario|a usuaria}} $1 ($2).",
- "usermerge-userdeleted-log": "Usuario eliminado: $2 ($3)",
- "usermerge-success": "A fusión desde {{GENDER:$1|$1}} ($2) a {{GENDER:$3|$3}} ($4) foi completada.",
- "usermerge-success-log": "Usuario {{GENDER:$2|$2}} ($3) fusionado con {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1 ($2) foi eliminado.",
+ "usermerge-userdeleted-log": "eliminouse a conta de usuario \"$2\" ($3)",
+ "usermerge-success": "Completouse a fusión desde $1 ($2) a $3 ($4).",
+ "usermerge-success-log": "Fusionouse a conta \"$2\" ($3) con \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Rexistro de fusión de usuarios",
"usermerge-logpagetext": "Este é un rexistro das accións de fusión de usuarios.",
"usermerge-noselfdelete": "Non se pode eliminar ou fusionar a si {{GENDER:$1|mesmo|mesma}}!",
- "usermerge-protectedgroup": "Non se pode fusionar {{GENDER:$1|o usuario|a usuaria}}: Está nun grupo protexido.",
+ "usermerge-protectedgroup": "Non se pode fusionar {{GENDER:$1|o usuario|a usuaria}}: está nun grupo protexido.",
"right-usermerge": "Fusionar usuarios",
"action-usermerge": "fusionar usuarios",
- "usermerge-autopagedelete": "Borrada automaticamente ao fusionar os usuarios",
+ "usermerge-autopagedelete": "Páxina borrada automaticamente ao fusionar os usuarios",
"usermerge-page-unmoved": "A páxina \"$1\" non pode ser movida a \"$2\".",
- "usermerge-move-log": "A páxina moveuse automaticamente cando se fusionou o usuario \"[[User:$1|$1]]\" con \"[[User:$2|{{GENDER:$2|$2}}]]\""
+ "usermerge-move-log": "A páxina moveuse automaticamente cando se fusionou o usuario \"$1\" con \"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/he.json b/UserMerge/i18n/he.json
index 0ab3c12d..8b42dd5b 100644
--- a/UserMerge/i18n/he.json
+++ b/UserMerge/i18n/he.json
@@ -21,16 +21,16 @@
"usermerge-submit": "מיזוג משתמש",
"usermerge-badtoken": "אסימון עריכה שגוי.",
"usermerge-userdeleted": "$1 ($2) {{GENDER:$1|נמחק|נמחקה}}.",
- "usermerge-userdeleted-log": "המשתמש נמחק: $2&rlm; ($3)",
- "usermerge-success": "המיזוג מ־$1‏ ($2) ל־$3‏ ($4) בוצע בהצלחה.",
- "usermerge-success-log": "ה{{GENDER:$2|משתמש|משתמשת}} $2&rlm; ($3) {{GENDER:$2|מוזג|מוזגה}} אל $4&rlm; ($5)",
+ "usermerge-userdeleted-log": "מחק את החשבון \"$2\" ($3)",
+ "usermerge-success": "המיזוג של $1‏ ($2) לתוך $3‏ ($4) הושלם.",
+ "usermerge-success-log": "החשבון \"$2\" ($3) מוזג לתוך \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "יומן מיזוג משתמשים",
"usermerge-logpagetext": "זהו יומן של פעולות מיזוג המשתמשים.",
"usermerge-noselfdelete": "לא ניתן למחוק או למזג מ{{GENDER:$1|עצמך}}!",
- "usermerge-protectedgroup": "לא ניתן למזג מה{{GENDER:$1|משתמש|משתמשת}}: ה{{GENDER:$1|משתמש נמצא|משתמשת נמצאת}} בקבוצה מוגנת.",
+ "usermerge-protectedgroup": "לא ניתן למזג {{GENDER:$1|מהמשתמש|מהמשתמשת}}: {{GENDER:$1|המשתמש נמצא|המשתמשת נמצאת}} בקבוצה מוגנת.",
"right-usermerge": "מיזוג משתמשים",
"action-usermerge": "למזג משתמשים",
- "usermerge-autopagedelete": "נמחק אוטומטית בזמן מיזוג חשבונות",
+ "usermerge-autopagedelete": "הדף נמחק אוטומטית בזמן מיזוג חשבונות",
"usermerge-page-unmoved": "לא ניתן להעביר את הדף $1 לשם $2.",
- "usermerge-move-log": "הדף הועבר אוטומטית בזמן מיזוג חשבון \"[[User:$1|$1]]\" אל \"[[User:$2|$2]]\""
+ "usermerge-move-log": "הדף הועבר אוטומטית בזמן מיזוג חשבון \"$1\" אל \"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/hu.json b/UserMerge/i18n/hu.json
index 3b906f19..d51b5f04 100644
--- a/UserMerge/i18n/hu.json
+++ b/UserMerge/i18n/hu.json
@@ -2,15 +2,17 @@
"@metadata": {
"authors": [
"Dani",
- "Glanthor Reviol"
+ "Glanthor Reviol",
+ "Tacsipacsi"
]
},
"usermerge": "Felhasználói fiókok összevonása és törlése",
"usermerge-desc": "[[Special:UserMerge|Beolvasztja egy felhasználó közreműködéseit egy másikéba]] a wiki adatbázisában, majd törli a beolvasztott felhasználói fiókot. ''Szerkesztők egyesítése'' jogosultság kell hozzá",
"usermerge-badolduser": "Érvénytelen régi felhasználói név",
"usermerge-badnewuser": "Érvénytelen új felhasználói név",
- "usermerge-nonewuser": "Üres új felhasználónév – feltételezett cél: „$1”<br />\nKattints a „{{int:usermerge-submit}}”-ra az elfogadáshoz.",
+ "usermerge-nonewuser": "Üres új felhasználónév. Feltételezett cél: „$1”<br />\nKattints a „{{int:usermerge-submit}}”-ra az elfogadáshoz.",
"usermerge-noolduser": "A régi felhasználói név üres",
+ "usermerge-same-old-and-new-user": "A régi és az új felhasználónévnek különbözőnek kell lennie.",
"usermerge-fieldset": "Összevonandó felhasználói nevek",
"usermerge-olduser": "Régi felhasználói név (honnan):",
"usermerge-newuser": "Új felhasználói név (hová):",
@@ -18,12 +20,16 @@
"usermerge-submit": "Felhasználói fiók összevonása",
"usermerge-badtoken": "Érvénytelen szerkesztési token",
"usermerge-userdeleted": "„$1” ($2) törölve.",
- "usermerge-userdeleted-log": "Törölt felhasználó: $2 ($3)",
+ "usermerge-userdeleted-log": "törölte a(z) „$2” ($3) felhasználói fiókot",
"usermerge-success": "„$1” ($2) fiók beolvasztása a(z) „$3” ($4) felhasználói fiókba elkészült.",
- "usermerge-success-log": "„$2” ($3) felhasználó beolvasztva a(z) „$4” ($5) felhasználói fiókba",
+ "usermerge-success-log": "„$2” ($3) felhasználó beolvasztva a(z) „[[User:$4|$4]]” ($5) felhasználói fiókba",
"usermerge-logpage": "Felhasználói nevek egyesítésének naplója",
"usermerge-logpagetext": "Ez a felhasználó nevek összevonásának naplója.",
- "usermerge-noselfdelete": "Nem tudsz törölni vagy összevonni a saját fiókodból!",
- "usermerge-protectedgroup": "Nem lehetséges beolvasztani a felhasználói fiókot – a felhasználó védett csoportban van.",
- "right-usermerge": "szerkesztők egyesítése"
+ "usermerge-noselfdelete": "Nem tudsz törölni vagy összevonni a saját {{GENDER:$1|fiókodból}}!",
+ "usermerge-protectedgroup": "Nem lehet beolvasztani a felhasználói fiókot: a {{GENDER:$1|felhasználó}} védett csoportban van.",
+ "right-usermerge": "szerkesztők egyesítése",
+ "action-usermerge": "felhasználók összevonása",
+ "usermerge-autopagedelete": "Lap automatikusan törölve a felhasználók összevonása közben",
+ "usermerge-page-unmoved": "A(z) $1 lap nem mozgatható $2 címre.",
+ "usermerge-move-log": "Lap automatikusan átmozgatva „$1” „[[User:$2|$2]]” felhasználóba történő összevonása közben"
}
diff --git a/UserMerge/i18n/io.json b/UserMerge/i18n/io.json
new file mode 100644
index 00000000..9f6d1014
--- /dev/null
+++ b/UserMerge/i18n/io.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joao Xavier"
+ ]
+ },
+ "usermerge-noolduser": "Anciena uzeronomo vakua.",
+ "usermerge-page-unmoved": "La pagino $1 ne povas rinomizesar \"$2\"."
+}
diff --git a/UserMerge/i18n/is.json b/UserMerge/i18n/is.json
new file mode 100644
index 00000000..e0d6875e
--- /dev/null
+++ b/UserMerge/i18n/is.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sveinn í Felli"
+ ]
+ },
+ "usermerge-userdeleted": "$1 ($2) hefur verið eytt.",
+ "right-usermerge": "Sameina notendur",
+ "action-usermerge": "sameina notendur",
+ "usermerge-page-unmoved": "Ekki var hægt að færa síðuna $1 á $2."
+}
diff --git a/UserMerge/i18n/it.json b/UserMerge/i18n/it.json
index 820f3259..96a51b6a 100644
--- a/UserMerge/i18n/it.json
+++ b/UserMerge/i18n/it.json
@@ -20,17 +20,17 @@
"usermerge-deleteolduser": "Cancella vecchio utente",
"usermerge-submit": "Unisci utente",
"usermerge-badtoken": "Token di modifica non valido.",
- "usermerge-userdeleted": "$1 ($2) è {{GENDER:$1|stato cancellato|stata cancellata}}.",
- "usermerge-userdeleted-log": "Utente cancellato: $2 ($3)",
- "usermerge-success": "L'unione di {{GENDER:$1|$1}} ($2) a {{GENDER:$3|$3}} ($4) è completa.",
- "usermerge-success-log": "Utente $2 ($3) {{GENDER:$2|unito|unita}} a {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1 ($2) è stato cancellato.",
+ "usermerge-userdeleted-log": "cancellato l'utenza \"$2\" ($3)",
+ "usermerge-success": "L'unione di $1 ($2) a $3 ($4) è completa.",
+ "usermerge-success-log": "unito l'utente \"$2\" ($3) in \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Unioni delle utenze",
"usermerge-logpagetext": "Di seguito sono elencate le azioni di unione di utenti.",
"usermerge-noselfdelete": "Non puoi cancellare o unire la {{GENDER:$1|tua}} stessa utenza!",
- "usermerge-protectedgroup": "Impossibile unire da {{GENDER:$1|questo|questa}} utente - l'utente fa parte di un gruppo protetto.",
+ "usermerge-protectedgroup": "Impossibile unire da {{GENDER:$1|questo|questa}} utente: l'utente fa parte di un gruppo protetto.",
"right-usermerge": "Unisce utenti",
"action-usermerge": "unire utenti",
- "usermerge-autopagedelete": "Cancellata automaticamente quando si uniscono gli utenti",
+ "usermerge-autopagedelete": "Cancellata automaticamente durante l'unione di utenti",
"usermerge-page-unmoved": "La pagina $1 non può essere spostata a $2.",
- "usermerge-move-log": "Pagina spostata automaticamente durante l'unione dell'utente \"[[User:$1|$1]]\" a \"[[User:$2|{{GENDER:$2|$2}}]]\""
+ "usermerge-move-log": "Spostata automaticamente la pagina durante l'unione dell'utente \"$1\" a \"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/ja.json b/UserMerge/i18n/ja.json
index 4acb0199..256f08b4 100644
--- a/UserMerge/i18n/ja.json
+++ b/UserMerge/i18n/ja.json
@@ -6,7 +6,8 @@
"Fryed-peach",
"Mzm5zbC3",
"Shirayuki",
- "Azeha"
+ "Azeha",
+ "Omotecho"
]
},
"usermerge": "利用者の統合と削除",
@@ -22,17 +23,17 @@
"usermerge-deleteolduser": "旧利用者を削除",
"usermerge-submit": "利用者の統合",
"usermerge-badtoken": "編集トークンが無効です。",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) は削除されました。",
- "usermerge-userdeleted-log": "利用者: $2 ($3) を削除しました",
- "usermerge-success": "{{GENDER:$1|$1}} ($2) の {{GENDER:$3|$3}} ($4) への統合が完了しました。",
- "usermerge-success-log": "利用者 {{GENDER:$2|$2}} ($3) を {{GENDER:$4|$4}} ($5) へ統合しました",
+ "usermerge-userdeleted": "$1 ($2) は削除されました。",
+ "usermerge-userdeleted-log": "利用者アカウント「$2」 ($3) を削除しました",
+ "usermerge-success": "$1 ($2) の $3 ($4) への統合が完了しました。",
+ "usermerge-success-log": "利用者「$2」($3) を「[[User:$4|$4]]」($5) へ統合しました",
"usermerge-logpage": "利用者統合記録",
"usermerge-logpagetext": "これは、利用者の統合を記録したものです。",
"usermerge-noselfdelete": "{{GENDER:$1|自分自身}}の削除や{{GENDER:$1|自分自身}}との統合はできません。",
"usermerge-protectedgroup": "{{GENDER:$1|利用者}}を統合できません: この利用者は被保護グループに属しています。",
"right-usermerge": "利用者を統合",
"action-usermerge": "利用者の統合",
- "usermerge-autopagedelete": "利用者の統合と共に自動的に削除しました",
+ "usermerge-autopagedelete": "利用者の統合と共に自動的にページを削除しました",
"usermerge-page-unmoved": "ページ「$1」を「$2」に移動できませんでした。",
- "usermerge-move-log": "統合と共に「[[User:$1|$1]]」を「[[User:$2|{{GENDER:$2|$2}}]]」へ自動的に移動しました"
+ "usermerge-move-log": "統合と共にアカウント「$1」を「[[User:$2|$2]]」へ自動的に移動しました"
}
diff --git a/UserMerge/i18n/ko.json b/UserMerge/i18n/ko.json
index 0db9c5a7..de93be72 100644
--- a/UserMerge/i18n/ko.json
+++ b/UserMerge/i18n/ko.json
@@ -3,7 +3,8 @@
"authors": [
"Kwj2772",
"아라",
- "Hwangjy9"
+ "Hwangjy9",
+ "Ykhwong"
]
},
"usermerge": "사용자 합치기 및 삭제",
@@ -19,17 +20,17 @@
"usermerge-deleteolduser": "이전 사용자를 삭제하기",
"usermerge-submit": "사용자 합치기",
"usermerge-badtoken": "잘못된 편집 토큰",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2)님이 삭제되었습니다.",
- "usermerge-userdeleted-log": "님이 사용자: $2 ($3) 계정을 삭제했습니다",
- "usermerge-success": "{{GENDER:$1|$1}} ($2)님을 {{GENDER:$3|$3}} ($4)에 합치는 것을 완료했습니다.",
- "usermerge-success-log": "님이 {{GENDER:$2|$2}} ($3) 사용자를 {{GENDER:$4|$4}} ($5) 계정으로 합쳤습니다",
+ "usermerge-userdeleted": "$1 ($2)님이 삭제되었습니다.",
+ "usermerge-userdeleted-log": "님이 \"$2\" ($3) 사용자 계정을 삭제했습니다",
+ "usermerge-success": "$1 ($2)님을 $3 ($4)에 합치는 것을 완료했습니다.",
+ "usermerge-success-log": "님이 \"$2\" ($3) 계정을 \"[[User:$4|$4]]\" ($5) 계정으로 합쳤습니다",
"usermerge-logpage": "사용자 병합 기록",
"usermerge-logpagetext": "사용자 병합 동작의 기록입니다.",
"usermerge-noselfdelete": "{{GENDER:$1|자신}}으로부터 삭제나 합치기를 할 수 없습니다!",
"usermerge-protectedgroup": "{{GENDER:$1|사용자}}로부터 합칠 수 없습니다: 사용자는 보호된 그룹에 있습니다.",
"right-usermerge": "사용자 합치기",
"action-usermerge": "사용자 합치기",
- "usermerge-autopagedelete": "사용자를 합칠 때 자동으로 삭제했습니다",
+ "usermerge-autopagedelete": "사용자를 합치는 동안 자동으로 문서를 삭제했습니다",
"usermerge-page-unmoved": "$1 문서를 $2 문서로 이동하지 못했습니다.",
- "usermerge-move-log": "\"[[User:$1|$1]]\" 사용자를 \"[[User:$2|{{GENDER:$2|$2}}]]\"(으)로 합치면서 문서를 자동으로 이동했습니다"
+ "usermerge-move-log": "\"$1\" 계정을 \"[[User:$2|$2]]\"(으)로 합치면서 문서를 자동으로 이동했습니다"
}
diff --git a/UserMerge/i18n/lb.json b/UserMerge/i18n/lb.json
index 54fa0e81..bfea9173 100644
--- a/UserMerge/i18n/lb.json
+++ b/UserMerge/i18n/lb.json
@@ -19,17 +19,17 @@
"usermerge-deleteolduser": "Ale Benotzer läschen",
"usermerge-submit": "Benotzerkonten zesummeféieren",
"usermerge-badtoken": "Ännerungs-Jeton net valabel",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) gouf geläscht.",
- "usermerge-userdeleted-log": "Geläschte Benotzer: $2($3)",
+ "usermerge-userdeleted": "$1 ($2) gouf geläscht.",
+ "usermerge-userdeleted-log": "huet de Benotzerkont \"$2\" ($3) geläscht",
"usermerge-success": "D'Zesummeféierung vum {{GENDER:$1|$1}} ($2) op {{GENDER:$3|$3}} ($4) ass net komplett.",
- "usermerge-success-log": "Benotzer {{GENDER:$2|$2}} ($3) gouf zesummegeféiert mat {{GENDER:$4|$4}} ($5)",
+ "usermerge-success-log": "huet de Benotzer \"$2\" ($3) zesummegeféiert mam \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Lëscht vun de Benotzerkonten déi zesummegeféiert goufen",
"usermerge-logpagetext": "Dëst ass eng Lëscht vun de Benotzerkonten, déi zesummegeféiert goufen.",
"usermerge-noselfdelete": "Dir kënnt {{GENDER:$1|Iech net selwer}} läschen oder mat {{GENDER:$1|Iech selwer}} zesummeféieren!",
- "usermerge-protectedgroup": "D'Zesammenféierung vum {{GENDER:$1|Benotzer}} ass net méiglech: De Benotzer ass an engem geschützte Grupp.",
+ "usermerge-protectedgroup": "D'Zesummenféierung vum {{GENDER:$1|Benotzer}} ass net méiglech: De Benotzer ass an engem geschützte Grupp.",
"right-usermerge": "Benotzer zesummeféieren",
"action-usermerge": "Benotzer zesummeféieren",
"usermerge-autopagedelete": "Automatesch geläscht wéi d'Benotzer zesummegeluecht goufen",
"usermerge-page-unmoved": "D'Säit $1 konnt net op $2 geréckelt ginn.",
- "usermerge-move-log": "D'Säit gouf automatesch geréckelt wéi de Benotzer \"[[User:$1|$1]]\" mam \"[[User:$2|$2{{GENDER:$2|$2}}]]\" zesummegeluecht gouf"
+ "usermerge-move-log": "D'Säit gouf automatesch geréckelt wéi de Benotzer \"$1\" mam \"[[User:$2|$2]]\" zesummegeluecht gouf"
}
diff --git a/UserMerge/i18n/lt.json b/UserMerge/i18n/lt.json
new file mode 100644
index 00000000..9ae32f8b
--- /dev/null
+++ b/UserMerge/i18n/lt.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Manvydasz"
+ ]
+ },
+ "usermerge-page-unmoved": "Puslapis $1 negali būti pervadintas į $2."
+}
diff --git a/UserMerge/i18n/my.json b/UserMerge/i18n/my.json
new file mode 100644
index 00000000..b17487c2
--- /dev/null
+++ b/UserMerge/i18n/my.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dr Lotus Black"
+ ]
+ },
+ "usermerge": "အသုံးပြုသူများကို ပေါင်းစပ်/ဖျက်ပစ်ရန်",
+ "usermerge-badolduser": "မဆီလျော်သော အသုံးပြုသူအမည်ဟောင်း။",
+ "usermerge-badnewuser": "မဆီလျော်သော အသုံးပြုသူအမည်သစ်။",
+ "usermerge-fieldset": "ပေါင်းစပ်ရန် အသုံးပြုသူအမည်များ",
+ "usermerge-submit": "အသုံးပြုသူ ပေါင်းစပ်ရန်",
+ "usermerge-userdeleted": "$1 ($2) ကို ဖျက်လိုက်ပြီ။",
+ "usermerge-success": "$1 ($2) မှ $3 ($4) သို့ ပေါင်းစပ်ခြင်း အောင်မြင်သည်။",
+ "usermerge-logpage": "အသုံးပြုသူ ပေါင်းစပ်ခြင်း မှတ်တမ်း",
+ "usermerge-logpagetext": "အသုံးပြုသူ ပေါင်းစပ်ခြင်း လုပ်ဆောင်ချက်များအတွက် မှတ်တမ်းဖြစ်သည်။",
+ "right-usermerge": "အသုံးပြုသူများ ပေါင်းစပ်ရန်",
+ "usermerge-page-unmoved": "စာမျက်နှာ $1 ကို $2 သို့ မရွေ့ပြောင်းနိုင်ခဲ့ပါ။"
+}
diff --git a/UserMerge/i18n/nb.json b/UserMerge/i18n/nb.json
index 4dff2d7c..cf7d5a65 100644
--- a/UserMerge/i18n/nb.json
+++ b/UserMerge/i18n/nb.json
@@ -18,18 +18,18 @@
"usermerge-newuser": "Nytt brukernavn (slå sammen til):",
"usermerge-deleteolduser": "Slett gammel bruker",
"usermerge-submit": "Slå sammen brukere",
- "usermerge-badtoken": "Ugyldig redigeringstegn",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) har blitt slettet.",
- "usermerge-userdeleted-log": "Slettet bruker: $2 ($3)",
- "usermerge-success": "Sammenslåing fra {{GENDER:$1|$1}} ($2) til {{GENDER:$3|$3}} ($4) er fullført.",
- "usermerge-success-log": "Brukeren {{GENDER:$2|$2}} ($3) slått sammen med {{GENDER:$4|$4}} ($5)",
+ "usermerge-badtoken": "Ugyldig redigeringsnøkkel.",
+ "usermerge-userdeleted": "$1 ($2) har blitt slettet.",
+ "usermerge-userdeleted-log": "slettet brukerkontoen «$2» ($3)",
+ "usermerge-success": "Sammenslåing fra $1 ($2) til $3 ($4) er fullført.",
+ "usermerge-success-log": "slo brukerkontoen «$2» ($3) sammen med «[[User:$4|$4]]» ($5)",
"usermerge-logpage": "Brukersammenslåingslogg",
"usermerge-logpagetext": "Dette er en logg over brukersammenslåinger.",
"usermerge-noselfdelete": "Du kan ikke slette eller slå sammen {{GENDER:$1|din}} egen konto!",
- "usermerge-protectedgroup": "Kan ikke slå sammen den gamle {{GENDER:$1|kontoen}}: Brukeren er medlem i en beskyttet brukergruppe.",
+ "usermerge-protectedgroup": "Kunne ikke slå sammen den gamle {{GENDER:$1|kontoen}}: Brukeren er medlem i en beskyttet brukergruppe.",
"right-usermerge": "Slå sammen kontoer",
"action-usermerge": "slå sammen brukere",
- "usermerge-autopagedelete": "Automatisk slettet ved brukersammenslåing",
- "usermerge-page-unmoved": "Side $1 kunne ikke flyttes til $2.",
- "usermerge-move-log": "Flyttet siden automatisk i forbindelse med sammenslåing av bruker \"[[User:$1|$1]]\" til \"[[User:$2|{{GENDER:$2|$2}}]]\""
+ "usermerge-autopagedelete": "Siden ble automatisk slettet ved kontosammenslåing",
+ "usermerge-page-unmoved": "Siden $1 kunne ikke flyttes til $2.",
+ "usermerge-move-log": "Flyttet siden automatisk i forbindelse med sammenslåing av kontoen «$1» til «[[User:$2|$2]]»"
}
diff --git a/UserMerge/i18n/pl.json b/UserMerge/i18n/pl.json
index 2cb7fc49..593b0dcd 100644
--- a/UserMerge/i18n/pl.json
+++ b/UserMerge/i18n/pl.json
@@ -34,7 +34,7 @@
"usermerge-protectedgroup": "Nie można zintegrować {{GENDER:$1|użytkownika|użytkowniczki}} – jest członkiem zabezpieczonej grupy.",
"right-usermerge": "Łączenie kont użytkowników",
"action-usermerge": "łączenie kont użytkowników",
- "usermerge-autopagedelete": "Automatycznie usuwane podczas scalania użytkowników",
+ "usermerge-autopagedelete": "Automatycznie usuwane strony podczas scalania użytkowników",
"usermerge-page-unmoved": "Strona $1 nie mogła zostać przeniesiona pod nazwę $2.",
"usermerge-move-log": "Automatyczne przeniesiono stronę po zmianie nazwy konta z \"[[User:$1|$1]]\" na \"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/pt-br.json b/UserMerge/i18n/pt-br.json
index 768f35b6..d3cfd4b2 100644
--- a/UserMerge/i18n/pt-br.json
+++ b/UserMerge/i18n/pt-br.json
@@ -11,7 +11,8 @@
"Araceletorres",
"Opraco",
"!Silent",
- "Felipe L. Ewald"
+ "Felipe L. Ewald",
+ "Eduardo Addad de Oliveira"
]
},
"usermerge": "Fusão e eliminação de utilizadores",
@@ -28,16 +29,16 @@
"usermerge-submit": "Fundir usuário",
"usermerge-badtoken": "Token de edição inválido.",
"usermerge-userdeleted": "$1 ($2) foi eliminado.",
- "usermerge-userdeleted-log": "Usuário apagado: $2 ($3)",
- "usermerge-success": "Fusão de $1 ($2) para $3 ($4) está completa.",
- "usermerge-success-log": "Usuário $2 ($3) fundido com {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted-log": "apagou a conta do usuário \"$2\" ($3)",
+ "usermerge-success": "A fusão de $1 ($2) com $3 ($4) está completa.",
+ "usermerge-success-log": "a conta \"$2\" ($3) foi fundida no usuário \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Registro de fusão de usuários",
"usermerge-logpagetext": "Este é um registro de ações de fusão de utilizadores.",
"usermerge-noselfdelete": "Não pode apagar ou fundir a sua {{GENDER:$1|própria}} conta!",
"usermerge-protectedgroup": "Não é possível fundir a conta {{GENDER:$1|deste usuário|desta usuária}}: {{GENDER:$1|o usuário|a usuária}} está num grupo protegido.",
"right-usermerge": "Fundir usuários",
"action-usermerge": "fundir usuários",
- "usermerge-autopagedelete": "Excluída automaticamente ao fundir usuários",
+ "usermerge-autopagedelete": "Página eliminada automaticamente ao fundir usuários",
"usermerge-page-unmoved": "A página $1 não pode ser movida para $2.",
- "usermerge-move-log": "Página movida automaticamente ao fundir {{GENDER:$1|o usuário|os usuários}} \"[[User:$1|$1]]\" com \"[[User:$2|$2]]\""
+ "usermerge-move-log": "Página movida automaticamente ao fundir a conta \"$1\" no usuário\"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/pt.json b/UserMerge/i18n/pt.json
index 5b91108c..41964197 100644
--- a/UserMerge/i18n/pt.json
+++ b/UserMerge/i18n/pt.json
@@ -11,7 +11,9 @@
"Waldir",
"Vitorvicentevalente",
"Helder.wiki",
- "He7d3r"
+ "He7d3r",
+ "MokaAkashiyaPT",
+ "Athena in Wonderland"
]
},
"usermerge": "Fusão e eliminação de utilizadores",
@@ -27,17 +29,17 @@
"usermerge-deleteolduser": "Apagar utilizador antigo",
"usermerge-submit": "Fundir utilizador",
"usermerge-badtoken": "Chave de edição inválida.",
- "usermerge-userdeleted": "$1 ($2) foi {{GENDER:$1|eliminado|eliminada|eliminado(a)}}.",
- "usermerge-userdeleted-log": "Utilizador apagado: $2 ($3)",
- "usermerge-success": "A fusão de {{GENDER:$1|$1}} ($2) com {{GENDER:$3|$3}} ($4) está completa.",
- "usermerge-success-log": "Conta de {{GENDER:$2|utilizador $2|utilizadora $2}} ($3) fundida com {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1 ($2) foi eliminado.",
+ "usermerge-userdeleted-log": "apagou a conta do utilizador \"$2\" ($3)",
+ "usermerge-success": "A fusão de $1 ($2) com $3 ($4) está completa.",
+ "usermerge-success-log": "a conta \"$2\" ($3) foi fundida no utilizador \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Registo de fusão de utilizadores",
"usermerge-logpagetext": "Este é um registo de ações de fusão de utilizadores.",
"usermerge-noselfdelete": "Não pode apagar ou fundir a sua {{GENDER:$1|própria}} conta!",
"usermerge-protectedgroup": "Não é possível fundir a conta {{GENDER:$1|deste utilizador|desta utilizadora}}: {{GENDER:$1|o utilizador|a utilizadora}} está num grupo protegido.",
"right-usermerge": "Fundir utilizadores",
"action-usermerge": "fundir utilizadores",
- "usermerge-autopagedelete": "Eliminada automaticamente ao fundir utilizadores",
+ "usermerge-autopagedelete": "Página eliminada automaticamente ao fundir utilizadores",
"usermerge-page-unmoved": "Não foi possível mover a página $1 para $2.",
- "usermerge-move-log": "Página movida automaticamente ao fundir {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} \"[[User:$1|$1]]\" com \"[[User:$2|$2]]\""
+ "usermerge-move-log": "Página movida automaticamente ao fundir a conta \"$1\" no utilizador \"[[User:$2|$2]]\""
}
diff --git a/UserMerge/i18n/qqq.json b/UserMerge/i18n/qqq.json
index 07640ef7..fde37cc5 100644
--- a/UserMerge/i18n/qqq.json
+++ b/UserMerge/i18n/qqq.json
@@ -26,9 +26,7 @@
"usermerge-submit": "Used in {{msg-mw|Usermerge-nonewuser}}.\n{{Identical|Merge user}}",
"usermerge-badtoken": "Used as error message if the Edit Token is invalid.",
"usermerge-userdeleted": "Status message. Parameters:\n* $1 is the name of a user that was deleted (not linked).\n* $2 is the ID of a user that was deleted.",
- "usermerge-userdeleted-log": "Parameters:\n* $2 is a user name (not linked) of the deleted user\n* $3 is a user ID of the deleted user",
"usermerge-success": "Status message. Parameters:\n* $1 is a user name (not linked) that is merged into another user\n* $2 is a user ID of the source user\n* $3 is a user name (not linked) that the other user is merged into; can be used for GENDER\n* $4 is a user ID of the target user",
- "usermerge-success-log": "Parameters:\n* $1 - (Unused)\n* $2 - a user name (not linked) that is merged into another user\n* $3 - a user ID of the source user\n* $4 - a user name (not linked) that the other user is merged into; can be used for GENDER\n* $5 - a user ID of the target user",
"usermerge-logpage": "{{doc-logpage}}",
"usermerge-logpagetext": "Used as heading in [[Special:Log/usermerge]].",
"usermerge-noselfdelete": "Used as error message when merging users. Parameters:\n* $1 - the current user's name, for GENDER",
@@ -37,5 +35,10 @@
"action-usermerge": "{{doc-action|usermerge}}\n{{Identical|Merge user}}",
"usermerge-autopagedelete": "Used as reason for deleting page.",
"usermerge-page-unmoved": "Used as failure message when moving a page. Parameters:\n* $1 - old page title (with link)\n* $2 - new page title (with link)\nSee also:\n* {{msg-mw|Usermerge-page-moved}}",
- "usermerge-move-log": "Parameters:\n* $1 - old username\n* $2 - new username"
+ "usermerge-move-log": "Parameters:\n* $1 - old username\n* $2 - new username",
+ "logentry-usermerge-mergeuser": "Message template for Special:Log when a user was merged into another one. Parameters:\n* $1 - The performer of the merge as a user link with actions (talk, contribs, block)\n* $2 - The username of the performer as a plain string.\n* $3 - (unused)\n* $4 - The username of the merged user as a plain string.\n* $5 - The user id of the merged user.\n* $6 - The username of the target user as a user page link.\n* $7 - The user id of the target user.\n* $8 - The username of the target user as a plain string.",
+ "logentry-usermerge-deleteuser": "Message template for Special:Log when a user was deleted. Parameters:\n* $1 - The performer of the deletion as a user link with actions (talk, contribs, block)\n* $2 - The username of the performer as a plain string.\n* $3 - (unused)\n* $4 - The username of the deleted user as a plain string.\n* $5 - The user id of the deleted user.",
+ "log-action-filter-usermerge": "{{doc-log-action-filter-type|usermerge}}\n{{Related|Log-action-filter}}",
+ "log-action-filter-usermerge-mergeuser": "{{doc-log-action-filter-action|usermerge|mergeuser}}",
+ "log-action-filter-usermerge-deleteuser": "{{doc-log-action-filter-action|usermerge|deleteuser}}"
}
diff --git a/UserMerge/i18n/ru.json b/UserMerge/i18n/ru.json
index d599e066..c470fcdc 100644
--- a/UserMerge/i18n/ru.json
+++ b/UserMerge/i18n/ru.json
@@ -8,7 +8,8 @@
"Kaganer",
"Okras",
"Ole Yves",
- "Александр Сигачёв"
+ "Александр Сигачёв",
+ "Movses"
]
},
"usermerge": "Объединение и удаление учётных записей",
@@ -25,16 +26,16 @@
"usermerge-submit": "Объединить участников",
"usermerge-badtoken": "Недействительный маркер правки",
"usermerge-userdeleted": "$1 ($2) {{GENDER:$1|был удалён|была удалена}}.",
- "usermerge-userdeleted-log": "Удалён участник $2 ($3)",
- "usermerge-success": "Объединение {{GENDER:$1|$1}} ($2) с {{GENDER:$3|$3}} ($4) завершено.",
- "usermerge-success-log": "Учётная запись {{GENDER:$2|участника|участницы}} $2 ($3) {{GENDER:$2|присоединён|присоединена}} к {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted-log": "удалена учётная запись участника «$2» ($3)",
+ "usermerge-success": "Объединение $1 ($2) с $3 ($4) завершено.",
+ "usermerge-success-log": "Учётная запись {{GENDER:$2|участника|участницы}} $2 ($3) присоединена к учётной записи {{GENDER:$4|участника|участницы}} \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Журнал объединения участников",
"usermerge-logpagetext": "Это журнал объединения учётных записей.",
"usermerge-noselfdelete": "Вы не можете удалять или объединять {{GENDER:$1|себя самого}}!",
"usermerge-protectedgroup": "Невозможно объединить {{GENDER:$1|участников}} — участник относится к защищённой группе.",
"right-usermerge": "объединение участников",
"action-usermerge": "объединение участников",
- "usermerge-autopagedelete": "Автоматически удаляются при объединении пользователей",
+ "usermerge-autopagedelete": "Автоматически удалённая страница при объединении участников",
"usermerge-page-unmoved": "Страница $1 не может быть переименована в $2.",
- "usermerge-move-log": "Автоматически переименовано во время объединения учетной записи «[[User:$1|$1]]» с «[[User:$2|{{GENDER:$2|$2}}]]»"
+ "usermerge-move-log": "Автоматически переименованная страница во время объединения учётной записи «$1» с «[[User:$2|$2]]»"
}
diff --git a/UserMerge/i18n/sl.json b/UserMerge/i18n/sl.json
index 3cdb129c..37358a94 100644
--- a/UserMerge/i18n/sl.json
+++ b/UserMerge/i18n/sl.json
@@ -17,17 +17,17 @@
"usermerge-deleteolduser": "Izbriši starega uporabnika",
"usermerge-submit": "Spoji uporabnika",
"usermerge-badtoken": "Neveljavni žeton urejanja",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) smo izbrisali.",
- "usermerge-userdeleted-log": "Izbrisal(-a) uporabnika: $2 ($3)",
- "usermerge-success": "Združitev iz {{GENDER:$1|$1}} ($2) v {{GENDER:$3|$3}} ($4) je končana.",
- "usermerge-success-log": "{{GENDER:$2|Uporabnika|Uporabnico}} $2 ($3) smo spojili z {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1 ($2) smo izbrisali.",
+ "usermerge-userdeleted-log": "izbrisal(-a) uporabnika »$2« ($3)",
+ "usermerge-success": "Združitev iz $1 ($2) v $3 ($4) je končana.",
+ "usermerge-success-log": "spojil(-a) račun »$2« ($3) z »[[User:$4|$4]]« ($5)",
"usermerge-logpage": "Dnevnik spajanja uporabnikov",
"usermerge-logpagetext": "To je dnevnik dejanj spajanja uporabnikov.",
"usermerge-noselfdelete": "Ne morete izbrisati ali združevati {{GENDER:$1|sebe}}!",
"usermerge-protectedgroup": "Ne morem združiti {{GENDER:$1|uporabnika|uporabnice}} – {{GENDER:$1|uporabnik|uporabnica}} je v zaščiteni skupini.",
"right-usermerge": "Spajanje uporabnikov",
"action-usermerge": "spajanje uporabnikov",
- "usermerge-autopagedelete": "Samodejno izbrisano med združevanjem uporabnikov",
+ "usermerge-autopagedelete": "Samodejno izbrisana stran med združevanjem uporabnikov",
"usermerge-page-unmoved": "Strani $1 ni bilo mogoče prestaviti na $2.",
- "usermerge-move-log": "Samodejno prestavljena stran med združevanjem uporabnika »[[User:$1|$1]]« z »[[User:$2|{{GENDER:$2|$2}}]]«"
+ "usermerge-move-log": "Samodejno prestavljena stran med združevanjem računa »$1« z »[[User:$2|$2]]«"
}
diff --git a/UserMerge/i18n/sr-ec.json b/UserMerge/i18n/sr-ec.json
index 90a7336b..ac7fd751 100644
--- a/UserMerge/i18n/sr-ec.json
+++ b/UserMerge/i18n/sr-ec.json
@@ -4,33 +4,35 @@
"Milicevic01",
"Rancher",
"Жељко Тодоровић",
- "Михајло Анђелковић"
+ "Михајло Анђелковић",
+ "BadDog",
+ "Zoranzoki21"
]
},
"usermerge": "Обједињавање и брисање налога",
"usermerge-desc": "[[Special:UserMerge|Преноси доприносе једног корисника на другог]] у бази викија; биће избрисани и стари корисници. Потребно је право ''usermerge''.",
- "usermerge-badolduser": "Неисправно старо корисничко име.",
+ "usermerge-badolduser": "Неважеће старо корисничко име.",
"usermerge-badnewuser": "Неисправно ново корисничко име.",
- "usermerge-nonewuser": "Ново корисничко име је празно. Предложено је обједињавање са „{{GENDER:$1|$1}}“.<br />\nКликните на „{{int:usermerge-submit}}“ да бисте прихватили.",
+ "usermerge-nonewuser": "Ново корисничко име је празно. Претпостављам са се спаја на „{{GENDER:$1|$1}}“.<br />\nКликните на „{{int:usermerge-submit}}“ да бисте прихватили.",
"usermerge-noolduser": "Старо корисничко име је празно.",
"usermerge-same-old-and-new-user": "Ново име налога се мора разликовати од старог.",
"usermerge-fieldset": "Налози за обједињавање",
"usermerge-olduser": "Стари налог:",
"usermerge-newuser": "Нови налог:",
"usermerge-deleteolduser": "Избриши стари налог",
- "usermerge-submit": "Обједини налоге",
- "usermerge-badtoken": "Неисправан токен измене.",
+ "usermerge-submit": "Споји корисника",
+ "usermerge-badtoken": "Неважећи токен измене.",
"usermerge-userdeleted": "$1 ($2) је {{GENDER:$1|избрисан|избрисана}}.",
- "usermerge-userdeleted-log": "Избрисан корисник: $2 ($3)",
- "usermerge-success": "Обједињавање корисника {{GENDER:$1|$1}} ($2) и {{GENDER:$3|$3}} ($4) је завршено.",
- "usermerge-success-log": "Налози корисника $2 ($3) и $4 ($5) су обједињени.",
- "usermerge-logpage": "Дневник обједињавања налога",
- "usermerge-logpagetext": "Ово је дневник обједињавања налога.",
+ "usermerge-userdeleted-log": "избрисан кориснички налог: „$2“ ($3)",
+ "usermerge-success": "Обједињавање корисника $1 ($2) и $3 ($4) је завршено.",
+ "usermerge-success-log": "Налози корисника $2 ($3) и \"[[User:$4|$4]]\" ($5) су обједињени.",
+ "usermerge-logpage": "Дневник спајања корисника",
+ "usermerge-logpagetext": "Ово је дневник радња спајања корисника.",
"usermerge-noselfdelete": "Не можете избрисати или објединити {{GENDER:$1|сами себе}}!",
- "usermerge-protectedgroup": "Не могу да објединим налоге {{GENDER:$1|корисника|кориснице}} јер је у заштићеној групи.",
- "right-usermerge": "обједињавање налога",
- "action-usermerge": "обједињавање налога",
+ "usermerge-protectedgroup": "Не могу да објединим налоге {{GENDER:$1|корисника|кориснице}}: Корисник је у заштићеној групи.",
+ "right-usermerge": "спајање корисника",
+ "action-usermerge": "спајате кориснике",
"usermerge-autopagedelete": "Аутоматски се брише при обједињавању налога.",
"usermerge-page-unmoved": "Не могу да преместим страницу $1 у $2.",
- "usermerge-move-log": "Аутоматски премештено при обједињавању налога „[[User:$1|$1]]“ и „[[User:$2|$2]]“."
+ "usermerge-move-log": "Аутоматски премештено при обједињавању налога „$1“ и „[[User:$2|$2]]“."
}
diff --git a/UserMerge/i18n/sv.json b/UserMerge/i18n/sv.json
index 8e8e68c1..a19db006 100644
--- a/UserMerge/i18n/sv.json
+++ b/UserMerge/i18n/sv.json
@@ -23,17 +23,17 @@
"usermerge-deleteolduser": "Ta bort den gamla användaren",
"usermerge-submit": "Förena konton",
"usermerge-badtoken": "Ogiltigt redigeringstecken",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) har raderats.",
- "usermerge-userdeleted-log": "Raderad användare: $2 ($3)",
- "usermerge-success": "Sammanslagning från {{GENDER:$1|$1}} ($2) till {{GENDER:$3|$3}} ($4) är slutfört.",
- "usermerge-success-log": "Användare {{GENDER:$2|$2}} ($3) slogs samman med {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1 ($2) har raderats.",
+ "usermerge-userdeleted-log": "raderade användarkontot \"$2\" ($3)",
+ "usermerge-success": "Sammanslagning från $1 ($2) till $3 ($4) har slutförts.",
+ "usermerge-success-log": "slog samman användare \"$2\" ($3) med \"[[User:$4|$4]]\" ($5)",
"usermerge-logpage": "Användarsammanslagningslogg",
"usermerge-logpagetext": "Det här är en logg över sammanslagningar av användarkonton.",
"usermerge-noselfdelete": "Du kan inte radera eller slå samman {{GENDER:$1|ditt}} eget konto!",
"usermerge-protectedgroup": "Kan inte sammanfoga från {{GENDER:$1|användaren}}: Användaren är medlem i en skyddad användargrupp.",
"right-usermerge": "Slå ihop användarkonton",
"action-usermerge": "slå ihop användarkonton",
- "usermerge-autopagedelete": "Ta bort automatiskt när användare slås ihop",
+ "usermerge-autopagedelete": "Ta bort sida automatiskt när användare sammanfogas",
"usermerge-page-unmoved": "Sidan $1 kan inte tas bort till $2",
- "usermerge-move-log": "Ta automatiskt bort sidan när du slår ihop användare \"[[User:$1|$1]]\" med \"[[User:$2|{{GENDER:$2|$2}}]]\""
+ "usermerge-move-log": "Ta automatiskt bort sidan när du slår ihop användare \"$1\" med \"[[User:$2|]]\""
}
diff --git a/UserMerge/i18n/ur.json b/UserMerge/i18n/ur.json
new file mode 100644
index 00000000..90eaf0dd
--- /dev/null
+++ b/UserMerge/i18n/ur.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Zainab Meher",
+ "BukhariSaeed"
+ ]
+ },
+ "usermerge-userdeleted": "$1 ($2) حذف کیا جا چکا ہے۔",
+ "usermerge-userdeleted-log": "\"$2\" ($3) صارف کا کھاتہ حذف کر دیا گیا",
+ "usermerge-success": " $1 ($2) کا $3 ($4) میں حذف مکمل ہو گیا ہے۔",
+ "usermerge-success-log": " \"$2\" ($3) کا کھاتہ \"[[User:$4|$4]]\" ($5) میں ضم کر دیا گیا",
+ "usermerge-autopagedelete": "صارفین کو ضم کرنے کے دوران میں صفحہ خودکار طریقے سے حذف کر دیا گیا",
+ "usermerge-move-log": "\"$1\" کھاتے کو ضم کرنے کے دوران صفحے کو خودکار طور پر \"[[User:$2|$2]]\"میں منتقل کر دیا گیا"
+}
diff --git a/UserMerge/i18n/yi.json b/UserMerge/i18n/yi.json
new file mode 100644
index 00000000..51f15dba
--- /dev/null
+++ b/UserMerge/i18n/yi.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "usermerge": "צונויפֿגיסן און אויסמעקן באניצער"
+}
diff --git a/UserMerge/i18n/zh-hans.json b/UserMerge/i18n/zh-hans.json
index 898c6aa7..d17b0646 100644
--- a/UserMerge/i18n/zh-hans.json
+++ b/UserMerge/i18n/zh-hans.json
@@ -24,17 +24,17 @@
"usermerge-deleteolduser": "删除旧用户",
"usermerge-submit": "合并用户",
"usermerge-badtoken": "无效的编辑令牌。",
- "usermerge-userdeleted": "{{GENDER:$1|$1}}($2) 已删除。",
- "usermerge-userdeleted-log": "已删除的用户: $2 ($3)",
- "usermerge-success": "由{{GENDER:$1|$1}}($2)到{{GENDER:$3|$3}}($4)的合并已经完成。",
- "usermerge-success-log": "用户{{GENDER:$2|$2}}($3)已合并到{{GENDER:$4|$4}}($5)",
+ "usermerge-userdeleted": "$1($2)已删除。",
+ "usermerge-userdeleted-log": "已删除用户账户“$2”($3)",
+ "usermerge-success": "由$1($2)到$3($4)的合并已经完成。",
+ "usermerge-success-log": "账户“$2”($3)已合并到“[[User:$4|$4]]”($5)",
"usermerge-logpage": "用户合并日志",
"usermerge-logpagetext": "这是一份用户合并动作的记录。",
"usermerge-noselfdelete": "您不能将{{GENDER:$1|自己}}删除或者合并!",
- "usermerge-protectedgroup": "无法完成{{GENDER:$1|用户}}合并:用户位于受保护组中。",
+ "usermerge-protectedgroup": "无法从{{GENDER:$1|用户}}合并:用户属于受保护组。",
"right-usermerge": "合并用户",
"action-usermerge": "合并用户",
- "usermerge-autopagedelete": "合并用户时自动删除",
+ "usermerge-autopagedelete": "在合并用户时自动删除页面",
"usermerge-page-unmoved": "页面$1无法被移动到$2。",
- "usermerge-move-log": "合并用户“[[User:$1|$1]]”到“[[User:$2|{{GENDER:$2|$2}}]]”时自动移动页面"
+ "usermerge-move-log": "在合并账户“$1”到“[[User:$2|$2]]”时自动移动页面"
}
diff --git a/UserMerge/i18n/zh-hant.json b/UserMerge/i18n/zh-hant.json
index 70ecaa15..c1edcbe3 100644
--- a/UserMerge/i18n/zh-hant.json
+++ b/UserMerge/i18n/zh-hant.json
@@ -6,7 +6,8 @@
"Mark85296341",
"Wrightbus",
"Cwlin0416",
- "LNDDYL"
+ "LNDDYL",
+ "Hello903hello"
]
},
"usermerge": "合併並刪除使用者",
@@ -22,17 +23,17 @@
"usermerge-deleteolduser": "刪除舊使用者",
"usermerge-submit": "合併使用者",
"usermerge-badtoken": "無效的編輯權杖。",
- "usermerge-userdeleted": "{{GENDER:$1|$1}} ($2) 已刪除。",
- "usermerge-userdeleted-log": "已刪除使用者:$2 ($3)",
- "usermerge-success": "已完成由 {{GENDER:$1|$1}} ($2) 至 {{GENDER:$3|$3}} ($4) 的合併。",
- "usermerge-success-log": "使用者 {{GENDER:$2|$2}} ($3) 已合併至 {{GENDER:$4|$4}} ($5)",
+ "usermerge-userdeleted": "$1($2)已刪除。",
+ "usermerge-userdeleted-log": "已刪除使用者賬戶「$2」($3)",
+ "usermerge-success": "已完成由 $1($2)至 $3($4)的合併。",
+ "usermerge-success-log": "使用者賬戶「$2」($3)已合併至「[[User:$4|$4]]」($5)",
"usermerge-logpage": "使用者合併日誌",
"usermerge-logpagetext": "此頁為使用者合併動作的記錄。",
"usermerge-noselfdelete": "您無法刪除或合併{{GENDER:$1|自己}}!",
"usermerge-protectedgroup": "無法完成{{GENDER:$1|使用者}}合併:使用者屬於受保護群組成員。",
"right-usermerge": "合併使用者",
"action-usermerge": "合併使用者",
- "usermerge-autopagedelete": "合併後自動刪除使用者",
+ "usermerge-autopagedelete": "合併使用者時自動刪除頁面",
"usermerge-page-unmoved": "頁面 $1 無法移動至 $2。",
- "usermerge-move-log": "合併 \"[[User:$1|$1]]\" 至 \"[[User:$2|{{GENDER:$2|$2}}]]\" 時已自動移動頁面"
+ "usermerge-move-log": "合併賬戶「$1」到「[[User:$2|$2]]」時已自動移動頁面"
}
diff --git a/UserMerge/IUserMergeLogger.php b/UserMerge/includes/IUserMergeLogger.php
index da9febc7..da9febc7 100644
--- a/UserMerge/IUserMergeLogger.php
+++ b/UserMerge/includes/IUserMergeLogger.php
diff --git a/UserMerge/MergeUser.php b/UserMerge/includes/MergeUser.php
index 2292d8ab..6a959c2f 100644
--- a/UserMerge/MergeUser.php
+++ b/UserMerge/includes/MergeUser.php
@@ -1,5 +1,6 @@
<?php
use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\IDatabase;
/**
* Contains the actual database backend logic for merging users
@@ -99,7 +100,13 @@ class MergeUser {
$dbw->endAtomic( __METHOD__ );
}
- private function mergeBlocks( DatabaseBase $dbw ) {
+ /**
+ * @param IDatabase $dbw
+ * @return void
+ * @suppress PhanTypeMismatchArgument Phan thinks that $newBlock and $oldBlock are both null when
+ * Block::newFromRow is called, although the previous if/elseif returns if any of them is null.
+ */
+ private function mergeBlocks( IDatabase $dbw ) {
$dbw->startAtomic( __METHOD__ );
// Pull blocks directly from master
@@ -111,8 +118,8 @@ class MergeUser {
]
);
- $newBlock = false;
- $oldBlock = false;
+ $newBlock = null;
+ $oldBlock = null;
foreach ( $rows as $row ) {
if ( (int)$row->ipb_user === $this->oldUser->getId() ) {
$oldBlock = $row;
@@ -141,7 +148,7 @@ class MergeUser {
return;
}
- // Okay, lets pick the "strongest" block, and re-apply it to
+ // Okay, let's pick the "strongest" block, and re-apply it to
// the new user.
$oldBlockObj = Block::newFromRow( $oldBlock );
$newBlockObj = Block::newFromRow( $newBlock );
@@ -194,6 +201,36 @@ class MergeUser {
return $b2;
}
+ private function stageNeedsUser( $stage ) {
+ if ( !defined( 'MIGRATION_NEW' ) ) {
+ return true;
+ }
+ if ( !class_exists( ActorMigration::class ) ) {
+ return false;
+ }
+
+ if ( defined( 'ActorMigration::MIGRATION_STAGE_SCHEMA_COMPAT' ) ) {
+ return (bool)( $stage & SCHEMA_COMPAT_WRITE_OLD );
+ } else {
+ return $stage < MIGRATION_NEW;
+ }
+ }
+
+ private function stageNeedsActor( $stage ) {
+ if ( !defined( 'MIGRATION_NEW' ) ) {
+ return false;
+ }
+ if ( !class_exists( ActorMigration::class ) ) {
+ return true;
+ }
+
+ if ( defined( 'ActorMigration::MIGRATION_STAGE_SCHEMA_COMPAT' ) ) {
+ return (bool)( $stage & SCHEMA_COMPAT_WRITE_NEW );
+ } else {
+ return $stage > MIGRATION_OLD;
+ }
+ }
+
/**
* Function to merge database references from one user to another user
*
@@ -203,26 +240,43 @@ class MergeUser {
* @param string $fnameTrxOwner
*/
private function mergeDatabaseTables( $fnameTrxOwner ) {
+ global $wgActorTableSchemaMigrationStage;
+
// Fields to update with the format:
// [
// tableName, idField, textField,
- // 'batchKey' => unique field, 'options' => array(), 'db' => DatabaseBase
+ // 'batchKey' => unique field, 'options' => array(), 'db' => IDatabase
+ // 'actorId' => actor ID field,
// ];
// textField, batchKey, db, and options are optional
$updateFields = [
- [ 'archive', 'ar_user', 'ar_user_text', 'batchKey' => 'ar_id' ],
- [ 'revision', 'rev_user', 'rev_user_text', 'batchKey' => 'rev_id' ],
- [ 'filearchive', 'fa_user', 'fa_user_text', 'batchKey' => 'fa_id' ],
- [ 'image', 'img_user', 'img_user_text', 'batchKey' => 'img_name' ],
- [ 'oldimage', 'oi_user', 'oi_user_text', 'batchKey' => 'oi_archive_name' ],
- [ 'recentchanges', 'rc_user', 'rc_user_text', 'batchKey' => 'rc_id' ],
- [ 'logging', 'log_user', 'batchKey' => 'log_id' ],
- [ 'ipblocks', 'ipb_by', 'ipb_by_text', 'batchKey' => 'ipb_id' ],
+ [ 'archive', 'ar_user', 'ar_user_text', 'batchKey' => 'ar_id', 'actorId' => 'ar_actor',
+ 'actorStage' => $wgActorTableSchemaMigrationStage ],
+ [ 'revision', 'rev_user', 'rev_user_text', 'batchKey' => 'rev_id', 'actorId' => '',
+ 'actorStage' => $wgActorTableSchemaMigrationStage ],
+ [ 'filearchive', 'fa_user', 'fa_user_text', 'batchKey' => 'fa_id', 'actorId' => 'fa_actor',
+ 'actorStage' => $wgActorTableSchemaMigrationStage ],
+ [ 'image', 'img_user', 'img_user_text', 'batchKey' => 'img_name', 'actorId' => 'img_actor',
+ 'actorStage' => $wgActorTableSchemaMigrationStage ],
+ [ 'oldimage', 'oi_user', 'oi_user_text', 'batchKey' => 'oi_archive_name',
+ 'actorId' => 'oi_actor', 'actorStage' => $wgActorTableSchemaMigrationStage ],
+ [ 'recentchanges', 'rc_user', 'rc_user_text', 'batchKey' => 'rc_id', 'actorId' => 'rc_actor',
+ 'actorStage' => $wgActorTableSchemaMigrationStage ],
+ [ 'logging', 'log_user', 'log_user_text', 'batchKey' => 'log_id', 'actorId' => 'log_actor',
+ 'actorStage' => $wgActorTableSchemaMigrationStage ],
+ [ 'ipblocks', 'ipb_by', 'ipb_by_text', 'batchKey' => 'ipb_id', 'actorId' => 'ipb_by_actor',
+ 'actorStage' => $wgActorTableSchemaMigrationStage ],
[ 'watchlist', 'wl_user', 'batchKey' => 'wl_title' ],
[ 'user_groups', 'ug_user', 'options' => [ 'IGNORE' ] ],
[ 'user_properties', 'up_user', 'options' => [ 'IGNORE' ] ],
[ 'user_former_groups', 'ufg_user', 'options' => [ 'IGNORE' ] ],
];
+ if ( $this->stageNeedsActor( $wgActorTableSchemaMigrationStage ) ) {
+ $updateFields[] = [
+ 'revision_actor_temp', 'batchKey' => 'revactor_rev', 'actorId' => 'revactor_actor',
+ 'actorStage' => $wgActorTableSchemaMigrationStage
+ ];
+ }
Hooks::run( 'UserMergeAccountFields', [ &$updateFields ] );
@@ -239,6 +293,11 @@ class MergeUser {
}
foreach ( $updateFields as $fieldInfo ) {
+ if ( !isset( $fieldInfo[1] ) ) {
+ // Actors only
+ continue;
+ }
+
$options = isset( $fieldInfo['options'] ) ? $fieldInfo['options'] : [];
unset( $fieldInfo['options'] );
$db = isset( $fieldInfo['db'] ) ? $fieldInfo['db'] : $dbw;
@@ -248,6 +307,11 @@ class MergeUser {
$keyField = isset( $fieldInfo['batchKey'] ) ? $fieldInfo['batchKey'] : null;
unset( $fieldInfo['batchKey'] );
+ if ( isset( $fieldInfo['actorId'] ) && !$this->stageNeedsUser( $fieldInfo['actorStage'] ) ) {
+ continue;
+ }
+ unset( $fieldInfo['actorId'], $fieldInfo['actorStage'] );
+
if ( $db->trxLevel() || $keyField === null ) {
// Can't batch/wait when in a transaction or when no batch key is given
$db->update(
@@ -293,6 +357,67 @@ class MergeUser {
}
}
+ if ( $this->stageNeedsActor( $wgActorTableSchemaMigrationStage ) &&
+ $this->oldUser->getActorId()
+ ) {
+ $oldActorId = $this->oldUser->getActorId();
+ $newActorId = $this->newUser->getActorId( $db );
+
+ foreach ( $updateFields as $fieldInfo ) {
+ if ( empty( $fieldInfo['actorId'] ) || !$this->stageNeedsActor( $fieldInfo['actorStage'] ) ) {
+ continue;
+ }
+
+ $options = isset( $fieldInfo['options'] ) ? $fieldInfo['options'] : [];
+ $db = isset( $fieldInfo['db'] ) ? $fieldInfo['db'] : $dbw;
+ $tableName = array_shift( $fieldInfo );
+ $idField = $fieldInfo['actorId'];
+ $keyField = isset( $fieldInfo['batchKey'] ) ? $fieldInfo['batchKey'] : null;
+
+ if ( $db->trxLevel() || $keyField === null ) {
+ // Can't batch/wait when in a transaction or when no batch key is given
+ $db->update(
+ $tableName,
+ [ $idField => $newActorId ],
+ [ $idField => $oldActorId ],
+ __METHOD__,
+ $options
+ );
+ } else {
+ $limit = 200;
+ do {
+ $checkSince = microtime( true );
+ // Note that UPDATE with ORDER BY + LIMIT is not well supported.
+ // Grab a batch of values on a mostly unique column for this user ID.
+ $res = $db->select(
+ $tableName,
+ [ $keyField ],
+ [ $idField => $oldActorId ],
+ __METHOD__,
+ [ 'LIMIT' => $limit ]
+ );
+ $keyValues = [];
+ foreach ( $res as $row ) {
+ $keyValues[] = $row->$keyField;
+ }
+ // Update only those rows with the given column values
+ if ( count( $keyValues ) ) {
+ $db->update(
+ $tableName,
+ [ $idField => $newActorId ],
+ [ $idField => $oldActorId, $keyField => $keyValues ],
+ __METHOD__,
+ $options
+ );
+ }
+ // Wait for replication to catch up
+ $opts = [ 'ifWritesSince' => $checkSince ];
+ $lbFactory->commitAndWaitForReplication( __METHOD__, $ticket, $opts );
+ } while ( count( $keyValues ) >= $limit );
+ }
+ }
+ }
+
$dbw->delete( 'user_newtalk', [ 'user_id' => $this->oldUser->getId() ] );
Hooks::run( 'MergeAccountFromTo', [ &$this->oldUser, &$this->newUser ] );
@@ -302,7 +427,7 @@ class MergeUser {
* Deduplicate watchlist entries
* which old (merge-from) and new (merge-to) users are watching
*
- * @param DatabaseBase $dbw
+ * @param IDatabase $dbw
*/
private function deduplicateWatchlistEntries( $dbw ) {
$dbw->startAtomic( __METHOD__ );
@@ -371,6 +496,7 @@ class MergeUser {
* Deletes the old user page when the target user page exists
*
* @todo This code is a duplicate of Renameuser and GlobalRename
+ * @suppress PhanParamTooMany Several calls to $message, which is a variadic closure
*
* @param User $performer
* @param callable $msg Function that returns a Message object
@@ -384,7 +510,7 @@ class MergeUser {
$newusername = Title::makeTitleSafe( NS_USER, $wgContLang->ucfirst( $this->newUser->getName() ) );
# select all user pages and sub-pages
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$pages = $dbr->select(
'page',
[ 'page_namespace', 'page_title' ],
@@ -411,9 +537,11 @@ class MergeUser {
if ( $this->newUser->getName() === 'Anonymous' ) { # delete ALL old pages
if ( $oldPage->exists() ) {
+ $error = '';
$oldPageArticle = new Article( $oldPage, 0 );
$oldPageArticle->doDeleteArticle(
- $message( 'usermerge-autopagedelete' )->inContentLanguage()->text()
+ $message( 'usermerge-autopagedelete' )->inContentLanguage()->text(),
+ false, null, null, $error, true
);
}
} elseif ( $newPage->exists()
@@ -421,17 +549,21 @@ class MergeUser {
&& $newPage->getLength() > 0
) {
# delete old pages that can't be moved
+ $error = '';
$oldPageArticle = new Article( $oldPage, 0 );
$oldPageArticle->doDeleteArticle(
- $message( 'usermerge-autopagedelete' )->inContentLanguage()->text()
+ $message( 'usermerge-autopagedelete' )->inContentLanguage()->text(),
+ false, null, null, $error, true
);
} else { # move content to new page
# delete target page if it exists and is blank
if ( $newPage->exists() ) {
+ $error = '';
$newPageArticle = new Article( $newPage, 0 );
$newPageArticle->doDeleteArticle(
- $message( 'usermerge-autopagedelete' )->inContentLanguage()->text()
+ $message( 'usermerge-autopagedelete' )->inContentLanguage()->text(),
+ false, null, null, $error, true
);
}
@@ -456,9 +588,11 @@ class MergeUser {
);
if ( !$dbr->numRows( $res ) ) {
# nothing links here, so delete unmoved page/redirect
+ $error = '';
$oldPageArticle = new Article( $oldPage, 0 );
$oldPageArticle->doDeleteArticle(
- $message( 'usermerge-autopagedelete' )->inContentLanguage()->text()
+ $message( 'usermerge-autopagedelete' )->inContentLanguage()->text(),
+ false, null, null, $error, true
);
}
}
@@ -482,7 +616,7 @@ class MergeUser {
* Format is: table => user_id column
*
* If you want it to use a different db object:
- * table => array( user_id colum, 'db' => DatabaseBase );
+ * table => array( user_id colum, 'db' => IDatabase );
*/
$tablesToDelete = [
'user_groups' => 'ug_user',
@@ -492,7 +626,11 @@ class MergeUser {
Hooks::run( 'UserMergeAccountDeleteTables', [ &$tablesToDelete ] );
- $tablesToDelete['user'] = 'user_id'; // Make sure this always set and last
+ // Make sure these are always set and last
+ if ( $dbw->tableExists( 'actor', __METHOD__ ) ) {
+ $tablesToDelete['actor'] = 'actor_user';
+ }
+ $tablesToDelete['user'] = 'user_id';
foreach ( $tablesToDelete as $table => $field ) {
// Check if a different database object was passed (Echo or Flow)
diff --git a/UserMerge/SpecialUserMerge.php b/UserMerge/includes/SpecialUserMerge.php
index 9af48d51..76f2b96c 100644
--- a/UserMerge/SpecialUserMerge.php
+++ b/UserMerge/includes/SpecialUserMerge.php
@@ -24,21 +24,20 @@ class SpecialUserMerge extends FormSpecialPage {
* @return array
*/
protected function getFormFields() {
- $us = $this;
return [
'olduser' => [
'type' => 'text',
'label-message' => 'usermerge-olduser',
'required' => true,
- 'validation-callback' => function ( $val ) use ( $us ) {
+ 'validation-callback' => function ( $val ) {
// only pass strings to User::newFromName
if ( !is_string( $val ) ) {
return true;
}
- $key = $us->validateOldUser( $val );
+ $key = $this->validateOldUser( $val );
if ( is_string( $key ) || is_array( $key ) ) {
- return $us->msg( $key )->escaped();
+ return $this->msg( $key )->escaped();
}
return true;
},
@@ -47,15 +46,15 @@ class SpecialUserMerge extends FormSpecialPage {
'type' => 'text',
'required' => true,
'label-message' => 'usermerge-newuser',
- 'validation-callback' => function ( $val ) use ( $us ) {
+ 'validation-callback' => function ( $val ) {
// only pass strings to User::newFromName
if ( !is_string( $val ) ) {
return true;
}
- $key = $us->validateNewUser( $val );
+ $key = $this->validateNewUser( $val );
if ( is_string( $key ) ) {
- return $us->msg( $key )->escaped();
+ return $this->msg( $key )->escaped();
}
return true;
},
@@ -68,11 +67,11 @@ class SpecialUserMerge extends FormSpecialPage {
}
/**
- * @param $val user's input for username
- * @return bool|string true if valid, a string of the error's message key if validation failed
+ * @param string $val user's input for username
+ * @return bool|string|string[] true if valid, a string or string[] of the error's message key
+ * if validation failed
*/
public function validateOldUser( $val ) {
- global $wgUserMergeProtectedGroups;
$oldUser = User::newFromName( $val );
if ( !$oldUser || $oldUser->getId() === 0 ) {
return 'usermerge-badolduser';
@@ -80,7 +79,8 @@ class SpecialUserMerge extends FormSpecialPage {
if ( $this->getUser()->getId() === $oldUser->getId() ) {
return [ 'usermerge-noselfdelete', $this->getUser()->getName() ];
}
- if ( count( array_intersect( $oldUser->getGroups(), $wgUserMergeProtectedGroups ) ) ) {
+ $protectedGroups = $this->getConfig()->get( 'UserMergeProtectedGroups' );
+ if ( count( array_intersect( $oldUser->getGroups(), $protectedGroups ) ) ) {
return [ 'usermerge-protectedgroup', $oldUser->getName() ];
}
@@ -88,12 +88,12 @@ class SpecialUserMerge extends FormSpecialPage {
}
/**
- * @param $val user's input for username
+ * @param string $val user's input for username
* @return bool|string true if valid, a string of the error's message key if validation failed
*/
public function validateNewUser( $val ) {
- global $wgUserMergeEnableDelete;
- if ( $wgUserMergeEnableDelete && $val === 'Anonymous' ) {
+ $enableDelete = $this->getConfig()->get( 'UserMergeEnableDelete' );
+ if ( $enableDelete && $val === 'Anonymous' ) {
return true; // Special case
}
$newUser = User::newFromName( $val );
@@ -109,7 +109,6 @@ class SpecialUserMerge extends FormSpecialPage {
*/
protected function alterForm( HTMLForm $form ) {
$form->setSubmitTextMsg( 'usermerge-submit' );
- $form->setWrapperLegendMsg( 'usermerge-fieldset' );
}
/**
@@ -117,12 +116,12 @@ class SpecialUserMerge extends FormSpecialPage {
* @return Status
*/
public function onSubmit( array $data ) {
- global $wgUserMergeEnableDelete;
+ $enableDelete = $this->getConfig()->get( 'UserMergeEnableDelete' );
// Most of the data has been validated using callbacks
// still need to check if the users are different
$newUser = User::newFromName( $data['newuser'] );
// Handle "Anonymous" as a special case for user deletion
- if ( $wgUserMergeEnableDelete && $data['newuser'] === 'Anonymous' ) {
+ if ( $enableDelete && $data['newuser'] === 'Anonymous' ) {
$newUser->mId = 0;
}
@@ -171,6 +170,16 @@ class SpecialUserMerge extends FormSpecialPage {
return Status::newGood();
}
+ /**
+ * @inheritDoc
+ */
+ protected function getDisplayFormat() {
+ return 'ooui';
+ }
+
+ /**
+ * @inheritDoc
+ */
protected function getGroupName() {
return 'users';
}
diff --git a/UserMerge/includes/UserMergeLogFormatter.php b/UserMerge/includes/UserMergeLogFormatter.php
new file mode 100644
index 00000000..7de03811
--- /dev/null
+++ b/UserMerge/includes/UserMergeLogFormatter.php
@@ -0,0 +1,53 @@
+<?php
+
+class UserMergeLogFormatter extends LogFormatter {
+
+ private static $mapLegacy = [
+ 'oldName' => 0,
+ 'oldId' => 1,
+ 'newName' => 2,
+ 'newId' => 3,
+ ];
+
+ /**
+ * @return string
+ */
+ protected function getMessageKey() {
+ if ( $this->entry->getSubtype() === 'deleteuser' ) {
+ return 'logentry-usermerge-deleteuser';
+ } else {
+ return 'logentry-usermerge-mergeuser';
+ }
+ }
+
+ /**
+ * @param string $param
+ * @return mixed
+ */
+ private function getParameter( $param ) {
+ $parameters = $this->entry->getParameters();
+ if ( $this->entry->isLegacy() ) {
+ $param = self::$mapLegacy[$param];
+ }
+ return $parameters[$param];
+ }
+
+ /**
+ * @return array
+ */
+ protected function extractParameters() {
+ $params = [];
+ // 0-2 are set in LogFormatter::getMessageParameters()
+ $params[3] = $this->getParameter( 'oldName' );
+ $params[4] = $this->getParameter( 'oldId' );
+ if ( $this->entry->getSubtype() !== 'deleteuser' ) {
+ $params[5] = $this->formatParameterValue(
+ 'user-link', $this->getParameter( 'newName' ) );
+ $params[6] = $this->getParameter( 'newId' );
+ $params[7] = $this->formatParameterValue(
+ 'user', $this->getParameter( 'newName' ) );
+ }
+ return $params;
+ }
+
+}
diff --git a/UserMerge/includes/UserMergeLogger.php b/UserMerge/includes/UserMergeLogger.php
new file mode 100644
index 00000000..8c63d075
--- /dev/null
+++ b/UserMerge/includes/UserMergeLogger.php
@@ -0,0 +1,42 @@
+<?php
+
+class UserMergeLogger implements IUserMergeLogger {
+
+ /**
+ * Adds a merge log entry
+ *
+ * @param User $performer
+ * @param User $oldUser
+ * @param User $newUser
+ */
+ public function addMergeEntry( User $performer, User $oldUser, User $newUser ) {
+ $logEntry = new ManualLogEntry( 'usermerge', 'mergeuser' );
+ $logEntry->setPerformer( $performer );
+ $logEntry->setTarget( $newUser->getUserPage() );
+ $logEntry->setParameters( [
+ 'oldName' => $oldUser->getName(),
+ 'oldId' => $oldUser->getId(),
+ 'newName' => $newUser->getName(),
+ 'newId' => $newUser->getId(),
+ ] );
+ $logEntry->setRelations( [ 'oldname' => $oldUser->getName() ] );
+ $logEntry->insert();
+ }
+
+ /**
+ * Adds a user deletion log entry
+ *
+ * @param User $performer
+ * @param User $oldUser
+ */
+ public function addDeleteEntry( User $performer, User $oldUser ) {
+ $logEntry = new ManualLogEntry( 'usermerge', 'deleteuser' );
+ $logEntry->setPerformer( $performer );
+ $logEntry->setTarget( $oldUser->getUserPage() );
+ $logEntry->setParameters( [
+ 'oldName' => $oldUser->getName(),
+ 'oldId' => $oldUser->getId(),
+ ] );
+ $logEntry->insert();
+ }
+}
diff --git a/UserMerge/package.json b/UserMerge/package.json
index d0e4bbfd..48588196 100644
--- a/UserMerge/package.json
+++ b/UserMerge/package.json
@@ -1,15 +1,15 @@
{
- "name": "usermerge",
- "version": "0.0.0",
- "private": true,
- "description": "Build tools for the UserMerge extension.",
- "scripts": {
- "test": "grunt test"
- },
- "devDependencies": {
- "grunt": "1.0.1",
- "grunt-banana-checker": "0.4.0",
- "grunt-contrib-jshint": "1.1.0",
- "grunt-jsonlint": "1.0.7"
- }
+ "name": "usermerge",
+ "version": "0.0.0",
+ "private": true,
+ "description": "Build tools for the UserMerge extension.",
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "grunt": "1.0.3",
+ "grunt-banana-checker": "0.6.0",
+ "grunt-contrib-jshint": "1.1.0",
+ "grunt-jsonlint": "1.1.0"
+ }
}
diff --git a/UserMerge/phpcs.xml b/UserMerge/phpcs.xml
deleted file mode 100644
index 68d59638..00000000
--- a/UserMerge/phpcs.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<ruleset>
- <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
- <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
- <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamName" />
- <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
- <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
- <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
- </rule>
- <rule ref="Generic.Files.LineLength">
- <exclude-pattern>UserMerge.alias.php</exclude-pattern>
- </rule>
- <file>.</file>
- <arg name="extensions" value="php,php5,inc" />
- <arg name="encoding" value="UTF-8" />
- <exclude-pattern>vendor</exclude-pattern>
-</ruleset>
diff --git a/UserMerge/tests/phan/config.php b/UserMerge/tests/phan/config.php
new file mode 100644
index 00000000..f2660b8a
--- /dev/null
+++ b/UserMerge/tests/phan/config.php
@@ -0,0 +1,3 @@
+<?php
+
+return require __DIR__ . '/../../vendor/mediawiki/mediawiki-phan-config/src/config.php';
diff --git a/UserMerge/tests/phpunit/MergeUserTest.php b/UserMerge/tests/phpunit/MergeUserTest.php
index 6ae2e4e4..06d8a287 100644
--- a/UserMerge/tests/phpunit/MergeUserTest.php
+++ b/UserMerge/tests/phpunit/MergeUserTest.php
@@ -16,6 +16,7 @@ class MergeUserTest extends MediaWikiTestCase {
}
$user->setName( $name );
$user->addToDatabase();
+ SiteStatsUpdate::factory( [ 'users' => 1 ] )->doUpdate();
return $user;
}
@@ -28,6 +29,9 @@ class MergeUserTest extends MediaWikiTestCase {
$u = User::newFromName( $u->getName() );
}
+ /**
+ * @covers MergeUser::merge
+ */
public function testBasicMerge() {
$user1 = $this->getNewTestUser();
$user1->addToDatabase();
@@ -45,6 +49,9 @@ class MergeUserTest extends MediaWikiTestCase {
$this->assertEquals( 'baz', $user2->getOption( 'foo' ) );
}
+ /**
+ * @covers MergeUser::merge
+ */
public function testMergeOfUserGroups() {
$user1 = $this->getNewTestUser();
$user1->addGroup( 'group1' );
@@ -62,6 +69,9 @@ class MergeUserTest extends MediaWikiTestCase {
$this->assertArrayEquals( [ 'group1', 'group2' ], $user2->getGroups() );
}
+ /**
+ * @covers MergeUser::delete
+ */
public function testDeleteUser() {
$user1 = $this->getNewTestUser();
$user2 = $this->getNewTestUser();
diff --git a/UserMerge/version b/UserMerge/version
index eaf77c86..d117710b 100644
--- a/UserMerge/version
+++ b/UserMerge/version
@@ -1,4 +1,4 @@
-UserMerge: REL1_30
-2017-09-21T22:24:00
+UserMerge: REL1_32
+2019-01-13T20:10:45
-4546537
+66c7030