summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Evans <grknight@gentoo.org>2018-11-20 10:20:19 -0500
committerBrian Evans <grknight@gentoo.org>2018-11-20 10:20:19 -0500
commita06bd1857477ef6074079e318b44a4624c211986 (patch)
treea81c4d8e61e6023b3dd5030c2fe35994554cf43e
parentFlow: remove old files (diff)
downloadextensions-a06bd1857477ef6074079e318b44a4624c211986.tar.gz
extensions-a06bd1857477ef6074079e318b44a4624c211986.tar.bz2
extensions-a06bd1857477ef6074079e318b44a4624c211986.zip
CheckUser: Update to REL_1_30
Signed-off-by: Brian Evans <grknight@gentoo.org>
-rw-r--r--CheckUser/.eslintrc.json23
-rw-r--r--CheckUser/.gitignore24
-rw-r--r--CheckUser/.gitreview2
-rw-r--r--CheckUser/CODE_OF_CONDUCT.md1
-rw-r--r--CheckUser/CheckUser.alias.php603
-rw-r--r--[-rwxr-xr-x]CheckUser/CheckUser.hooks.php280
-rw-r--r--CheckUser/CheckUser.php147
-rw-r--r--CheckUser/CheckUserEncryptedData.php20
-rw-r--r--CheckUser/CheckUserLogPager.php78
-rw-r--r--CheckUser/Gruntfile.js16
-rw-r--r--CheckUser/api/ApiQueryCheckUser.php211
-rw-r--r--CheckUser/api/ApiQueryCheckUserLog.php108
-rw-r--r--CheckUser/composer.json14
-rw-r--r--CheckUser/cu_log_import.inc91
-rw-r--r--CheckUser/extension.json34
-rw-r--r--CheckUser/gitinfo.json1
-rw-r--r--CheckUser/i18n/af.json6
-rw-r--r--CheckUser/i18n/an.json7
-rw-r--r--CheckUser/i18n/ar.json28
-rw-r--r--CheckUser/i18n/arz.json11
-rw-r--r--CheckUser/i18n/ast.json41
-rw-r--r--CheckUser/i18n/av.json9
-rw-r--r--CheckUser/i18n/ba.json53
-rw-r--r--CheckUser/i18n/bcc.json7
-rw-r--r--CheckUser/i18n/bcl.json6
-rw-r--r--CheckUser/i18n/be-tarask.json13
-rw-r--r--CheckUser/i18n/bg.json35
-rw-r--r--CheckUser/i18n/bgn.json8
-rw-r--r--CheckUser/i18n/bn.json63
-rw-r--r--CheckUser/i18n/br.json6
-rw-r--r--CheckUser/i18n/bs.json42
-rw-r--r--CheckUser/i18n/ca.json19
-rw-r--r--CheckUser/i18n/ce.json4
-rw-r--r--CheckUser/i18n/cs.json26
-rw-r--r--CheckUser/i18n/csb.json10
-rw-r--r--CheckUser/i18n/cy.json21
-rw-r--r--CheckUser/i18n/da.json6
-rw-r--r--CheckUser/i18n/de.json39
-rw-r--r--CheckUser/i18n/diq.json21
-rw-r--r--CheckUser/i18n/dsb.json6
-rw-r--r--CheckUser/i18n/el.json6
-rw-r--r--CheckUser/i18n/en-ca.json8
-rw-r--r--CheckUser/i18n/en-gb.json32
-rw-r--r--CheckUser/i18n/en.json35
-rw-r--r--CheckUser/i18n/eo.json16
-rw-r--r--CheckUser/i18n/es.json48
-rw-r--r--CheckUser/i18n/et.json13
-rw-r--r--CheckUser/i18n/eu.json6
-rw-r--r--CheckUser/i18n/fa.json79
-rw-r--r--CheckUser/i18n/fi.json32
-rw-r--r--CheckUser/i18n/fr.json44
-rw-r--r--CheckUser/i18n/frc.json9
-rw-r--r--CheckUser/i18n/frp.json6
-rw-r--r--CheckUser/i18n/ga.json6
-rw-r--r--CheckUser/i18n/gl.json39
-rw-r--r--CheckUser/i18n/got.json8
-rw-r--r--CheckUser/i18n/gsw.json6
-rw-r--r--CheckUser/i18n/hak.json7
-rw-r--r--CheckUser/i18n/he.json43
-rw-r--r--CheckUser/i18n/hi.json22
-rw-r--r--CheckUser/i18n/hr.json13
-rw-r--r--CheckUser/i18n/hsb.json6
-rw-r--r--CheckUser/i18n/hu.json22
-rw-r--r--CheckUser/i18n/ia.json53
-rw-r--r--CheckUser/i18n/id.json52
-rw-r--r--CheckUser/i18n/ig.json3
-rw-r--r--CheckUser/i18n/ilo.json35
-rw-r--r--CheckUser/i18n/inh.json9
-rw-r--r--CheckUser/i18n/io.json5
-rw-r--r--CheckUser/i18n/it.json44
-rw-r--r--CheckUser/i18n/ja.json36
-rw-r--r--CheckUser/i18n/jut.json45
-rw-r--r--CheckUser/i18n/jv.json25
-rw-r--r--CheckUser/i18n/ka.json6
-rw-r--r--CheckUser/i18n/kk-arab.json7
-rw-r--r--CheckUser/i18n/kk-cyrl.json5
-rw-r--r--CheckUser/i18n/kk-latn.json7
-rw-r--r--CheckUser/i18n/km.json4
-rw-r--r--CheckUser/i18n/ko.json51
-rw-r--r--CheckUser/i18n/krc.json3
-rw-r--r--CheckUser/i18n/krl.json5
-rw-r--r--CheckUser/i18n/ksh.json22
-rw-r--r--CheckUser/i18n/lb.json18
-rw-r--r--CheckUser/i18n/li.json6
-rw-r--r--CheckUser/i18n/lo.json12
-rw-r--r--CheckUser/i18n/lt.json41
-rw-r--r--CheckUser/i18n/lv.json9
-rw-r--r--CheckUser/i18n/lzh.json6
-rw-r--r--CheckUser/i18n/mai.json26
-rw-r--r--CheckUser/i18n/mk.json42
-rw-r--r--CheckUser/i18n/ml.json6
-rw-r--r--CheckUser/i18n/mn.json8
-rw-r--r--CheckUser/i18n/mr.json34
-rw-r--r--CheckUser/i18n/ms.json6
-rw-r--r--CheckUser/i18n/mt.json6
-rw-r--r--CheckUser/i18n/mwl.json8
-rw-r--r--CheckUser/i18n/my.json9
-rw-r--r--CheckUser/i18n/nah.json7
-rw-r--r--CheckUser/i18n/nb.json55
-rw-r--r--CheckUser/i18n/nds.json18
-rw-r--r--CheckUser/i18n/ne.json1
-rw-r--r--CheckUser/i18n/nl.json42
-rw-r--r--CheckUser/i18n/nn.json6
-rw-r--r--CheckUser/i18n/oc.json21
-rw-r--r--CheckUser/i18n/or.json6
-rw-r--r--CheckUser/i18n/pl.json28
-rw-r--r--CheckUser/i18n/pms.json6
-rw-r--r--CheckUser/i18n/ps.json4
-rw-r--r--CheckUser/i18n/pt-br.json62
-rw-r--r--CheckUser/i18n/pt.json69
-rw-r--r--CheckUser/i18n/qqq.json49
-rw-r--r--CheckUser/i18n/rif.json5
-rw-r--r--CheckUser/i18n/ro.json6
-rw-r--r--CheckUser/i18n/roa-tara.json35
-rw-r--r--CheckUser/i18n/ru.json52
-rw-r--r--CheckUser/i18n/rue.json6
-rw-r--r--CheckUser/i18n/sah.json13
-rw-r--r--CheckUser/i18n/scn.json6
-rw-r--r--CheckUser/i18n/sco.json8
-rw-r--r--CheckUser/i18n/sd.json8
-rw-r--r--CheckUser/i18n/sh.json6
-rw-r--r--CheckUser/i18n/si.json6
-rw-r--r--CheckUser/i18n/sk.json26
-rw-r--r--CheckUser/i18n/sl.json20
-rw-r--r--CheckUser/i18n/sq.json6
-rw-r--r--CheckUser/i18n/sr-ec.json21
-rw-r--r--CheckUser/i18n/sr-el.json20
-rw-r--r--CheckUser/i18n/stq.json6
-rw-r--r--CheckUser/i18n/su.json23
-rw-r--r--CheckUser/i18n/sv.json25
-rw-r--r--CheckUser/i18n/ta.json1
-rw-r--r--CheckUser/i18n/te.json18
-rw-r--r--CheckUser/i18n/tg-cyrl.json5
-rw-r--r--CheckUser/i18n/tg-latn.json5
-rw-r--r--CheckUser/i18n/tg.json12
-rw-r--r--CheckUser/i18n/tk.json6
-rw-r--r--CheckUser/i18n/tl.json6
-rw-r--r--CheckUser/i18n/tr.json44
-rw-r--r--CheckUser/i18n/tt-cyrl.json2
-rw-r--r--CheckUser/i18n/udm.json8
-rw-r--r--CheckUser/i18n/uk.json39
-rw-r--r--CheckUser/i18n/ur.json7
-rw-r--r--CheckUser/i18n/uz.json1
-rw-r--r--CheckUser/i18n/vec.json6
-rw-r--r--CheckUser/i18n/vi.json30
-rw-r--r--CheckUser/i18n/vo.json6
-rw-r--r--CheckUser/i18n/wa.json6
-rw-r--r--CheckUser/i18n/yi.json6
-rw-r--r--CheckUser/i18n/yue.json7
-rw-r--r--CheckUser/i18n/zh-hans.json47
-rw-r--r--CheckUser/i18n/zh-hant.json32
-rw-r--r--CheckUser/importLog.php53
-rw-r--r--CheckUser/install.inc97
-rw-r--r--CheckUser/install.php22
-rw-r--r--CheckUser/maintenance/importCheckUserLogs.php167
-rw-r--r--CheckUser/maintenance/populateCheckUserTable.php123
-rw-r--r--CheckUser/maintenance/purgeOldData.php16
-rw-r--r--CheckUser/modules/ext.checkuser.caMultiLock.js35
-rw-r--r--CheckUser/modules/ext.checkuser.cidr.js10
-rw-r--r--CheckUser/package.json27
-rw-r--r--CheckUser/phpcs.xml19
-rw-r--r--CheckUser/specials/SpecialCheckUser.php1417
-rw-r--r--CheckUser/specials/SpecialCheckUserLog.php233
-rw-r--r--CheckUser/version6
164 files changed, 3570 insertions, 2921 deletions
diff --git a/CheckUser/.eslintrc.json b/CheckUser/.eslintrc.json
new file mode 100644
index 00000000..c882b462
--- /dev/null
+++ b/CheckUser/.eslintrc.json
@@ -0,0 +1,23 @@
+{
+ "extends": "wikimedia",
+ "env": {
+ "browser": true,
+ "jquery": true,
+ "qunit": true
+ },
+ "globals": {
+ "mediaWiki": false
+ },
+ "rules": {
+ "comma-dangle": 0,
+ "computed-property-spacing": 0,
+ "indent": 0,
+ "no-multi-spaces": 0,
+ "no-undef": 0,
+ "no-use-before-define": 0,
+ "one-var": 0,
+ "space-infix-ops": 0,
+ "vars-on-top": 0,
+ "wrap-iife": 0
+ }
+}
diff --git a/CheckUser/.gitignore b/CheckUser/.gitignore
index 4bf4869f..0676034c 100644
--- a/CheckUser/.gitignore
+++ b/CheckUser/.gitignore
@@ -1,5 +1,23 @@
-.svn
-*~
+/composer.lock
+/node_modules/
+/vendor/
+
+# Editors
*.kate-swp
+*~
+\#*#
+.#*
.*.swp
-node_modules/
+.project
+.buildpath
+.classpath
+.settings
+cscope.files
+cscope.out
+*.orig
+## NetBeans
+nbproject*
+project.index
+## Sublime
+sublime-*
+sftp-config.json
diff --git a/CheckUser/.gitreview b/CheckUser/.gitreview
index 4dd53f37..124bb66d 100644
--- a/CheckUser/.gitreview
+++ b/CheckUser/.gitreview
@@ -2,4 +2,4 @@
host=gerrit.wikimedia.org
port=29418
project=mediawiki/extensions/CheckUser.git
-defaultbranch=REL1_26
+track=1
diff --git a/CheckUser/CODE_OF_CONDUCT.md b/CheckUser/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..d8e5d087
--- /dev/null
+++ b/CheckUser/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
diff --git a/CheckUser/CheckUser.alias.php b/CheckUser/CheckUser.alias.php
index 70762562..803a306e 100644
--- a/CheckUser/CheckUser.alias.php
+++ b/CheckUser/CheckUser.alias.php
@@ -5,459 +5,476 @@
* @file
* @ingroup Extensions
*/
-// @codingStandardsIgnoreFile
-$specialPageAliases = array();
+$specialPageAliases = [];
/** English (English) */
-$specialPageAliases['en'] = array(
- 'CheckUser' => array( 'CheckUser' ),
- 'CheckUserLog' => array( 'CheckUserLog' ),
-);
+$specialPageAliases['en'] = [
+ 'CheckUser' => [ 'CheckUser' ],
+ 'CheckUserLog' => [ 'CheckUserLog' ],
+];
/** Arabic (العربية) */
-$specialPageAliases['ar'] = array(
- 'CheckUser' => array( 'تدقيق_مستخدم' ),
- 'CheckUserLog' => array( 'سجل_تدقيق_المستخدم' ),
-);
+$specialPageAliases['ar'] = [
+ 'CheckUser' => [ 'تدقيق_مستخدم' ],
+ 'CheckUserLog' => [ 'سجل_تدقيق_المستخدم' ],
+];
/** Egyptian Arabic (مصرى) */
-$specialPageAliases['arz'] = array(
- 'CheckUser' => array( 'تدقيق_يوزر' ),
- 'CheckUserLog' => array( 'سجل_التشيك-يوزر' ),
-);
+$specialPageAliases['arz'] = [
+ 'CheckUser' => [ 'تدقيق_يوزر' ],
+ 'CheckUserLog' => [ 'سجل_التشيك-يوزر' ],
+];
/** Assamese (অসমীয়া) */
-$specialPageAliases['as'] = array(
- 'CheckUser' => array( 'সদস্যৰ_অনুসন্ধান_কৰক' ),
- 'CheckUserLog' => array( 'সদস্যৰ_অভিলেখ_চাওক' ),
-);
+$specialPageAliases['as'] = [
+ 'CheckUser' => [ 'সদস্যৰ_অনুসন্ধান_কৰক' ],
+ 'CheckUserLog' => [ 'সদস্যৰ_অভিলেখ_চাওক' ],
+];
/** Avaric (авар) */
-$specialPageAliases['av'] = array(
- 'CheckUser' => array( 'Проверить_участника' ),
- 'CheckUserLog' => array( 'Журнал_проверок_участников' ),
-);
+$specialPageAliases['av'] = [
+ 'CheckUser' => [ 'Проверить_участника' ],
+ 'CheckUserLog' => [ 'Журнал_проверок_участников' ],
+];
/** Bashkir (башҡортса) */
-$specialPageAliases['ba'] = array(
- 'CheckUser' => array( 'CheckUser' ),
- 'CheckUserLog' => array( 'CheckUserLog' ),
-);
+$specialPageAliases['ba'] = [
+ 'CheckUser' => [ 'CheckUser' ],
+ 'CheckUserLog' => [ 'CheckUserLog' ],
+];
+
+/** Bengali (বাংলা) */
+$specialPageAliases['bn'] = [
+ 'CheckUser' => [ 'ব্যবহারকারী_পরীক্ষণ' ],
+ 'CheckUserLog' => [ 'ব্যবহারকারী_পরীক্ষণের_লগ' ],
+];
/** Bulgarian (български) */
-$specialPageAliases['bg'] = array(
- 'CheckUser' => array( 'Проверка_на_потребител' ),
-);
+$specialPageAliases['bg'] = [
+ 'CheckUser' => [ 'Проверка_на_потребител' ],
+];
/** Western Balochi (بلوچی رخشانی) */
-$specialPageAliases['bgn'] = array(
- 'CheckUser' => array( 'کارمرزوکی_تلاشی_کورتین' ),
- 'CheckUserLog' => array( 'کارمرزوکی_تلاشی_ئی_سیاهه' ),
-);
+$specialPageAliases['bgn'] = [
+ 'CheckUser' => [ 'کارمرزوکی_تلاشی_کورتین' ],
+ 'CheckUserLog' => [ 'کارمرزوکی_تلاشی_ئی_سیاهه' ],
+];
/** Banjar (Bahasa Banjar) */
-$specialPageAliases['bjn'] = array(
- 'CheckUser' => array( 'Tukui_pamakai' ),
-);
+$specialPageAliases['bjn'] = [
+ 'CheckUser' => [ 'Tukui_pamakai' ],
+];
/** Breton (brezhoneg) */
-$specialPageAliases['br'] = array(
- 'CheckUser' => array( 'GwiriañAozer' ),
-);
+$specialPageAliases['br'] = [
+ 'CheckUser' => [ 'GwiriañAozer' ],
+];
/** Bosnian (bosanski) */
-$specialPageAliases['bs'] = array(
- 'CheckUser' => array( 'ProvjeraKorisnika' ),
-);
+$specialPageAliases['bs'] = [
+ 'CheckUser' => [ 'ProvjeraKorisnika' ],
+];
/** Catalan (català) */
-$specialPageAliases['ca'] = array(
- 'CheckUser' => array( 'Verificació_de_comptes_d\'usuari' ),
- 'CheckUserLog' => array( 'Registres_de_les_verificacions_de_comptes_d\'usuari' ),
-);
+$specialPageAliases['ca'] = [
+ 'CheckUser' => [ 'Verificació_de_comptes_d\'usuari' ],
+ 'CheckUserLog' => [ 'Registres_de_les_verificacions_de_comptes_d\'usuari' ],
+];
/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
-$specialPageAliases['cdo'] = array(
- 'CheckUser' => array( '檢查用戶' ),
- 'CheckUserLog' => array( '檢查用戶日誌' ),
-);
+$specialPageAliases['cdo'] = [
+ 'CheckUser' => [ '檢查用戶' ],
+ 'CheckUserLog' => [ '檢查用戶日誌' ],
+];
/** Chechen (нохчийн) */
-$specialPageAliases['ce'] = array(
- 'CheckUser' => array( 'Декъашхочунга_хьажар' ),
- 'CheckUserLog' => array( 'Декъашхойн_нисдарийн_тептар' ),
-);
+$specialPageAliases['ce'] = [
+ 'CheckUser' => [ 'Декъашхочунга_хьажар' ],
+ 'CheckUserLog' => [ 'Декъашхойн_нисдарийн_тептар' ],
+];
+
+$specialPageAliases['cs'] = [
+ 'CheckUser' => [ 'Zkontrolovat uživatele' ],
+ 'CheckUserLog' => [ 'Protokolovací záznamy kontrol uživatele' ],
+];
/** German (Deutsch) */
-$specialPageAliases['de'] = array(
- 'CheckUser' => array( 'Checkuser' ),
- 'CheckUserLog' => array( 'Checkuser-Logbuch' ),
-);
+$specialPageAliases['de'] = [
+ 'CheckUser' => [ 'Checkuser' ],
+ 'CheckUserLog' => [ 'Checkuser-Logbuch' ],
+];
/** Zazaki (Zazaki) */
-$specialPageAliases['diq'] = array(
- 'CheckUser' => array( 'KontrolkarKarber' ),
- 'CheckUserLog' => array( 'KontrolkarKarberCıkewtış' ),
-);
+$specialPageAliases['diq'] = [
+ 'CheckUser' => [ 'KontrolkarKarber' ],
+ 'CheckUserLog' => [ 'KontrolkarKarberCıkewtış' ],
+];
/** Lower Sorbian (dolnoserbski) */
-$specialPageAliases['dsb'] = array(
- 'CheckUser' => array( 'Kontrolny_wužywaŕ' ),
-);
+$specialPageAliases['dsb'] = [
+ 'CheckUser' => [ 'Kontrolny_wužywaŕ' ],
+];
/** Greek (Ελληνικά) */
-$specialPageAliases['el'] = array(
- 'CheckUser' => array( 'ΈλεγχοςΧρήστη' ),
-);
+$specialPageAliases['el'] = [
+ 'CheckUser' => [ 'ΈλεγχοςΧρήστη' ],
+];
/** Esperanto (Esperanto) */
-$specialPageAliases['eo'] = array(
- 'CheckUser' => array( 'Kontroli_uzanton' ),
- 'CheckUserLog' => array( 'Protokoloj_de_kontrolado_de_uzantoj' ),
-);
+$specialPageAliases['eo'] = [
+ 'CheckUser' => [ 'Kontroli_uzanton' ],
+ 'CheckUserLog' => [ 'Protokoloj_de_kontrolado_de_uzantoj' ],
+];
/** Spanish (español) */
-$specialPageAliases['es'] = array(
- 'CheckUser' => array( 'VerificarUsuario', 'ComprobarUsuario', 'Comprobar_usuario' ),
-);
+$specialPageAliases['es'] = [
+ 'CheckUser' => [ 'ComprobarUsuario', 'Comprobar_usuario', 'VerificarUsuario', 'Verificar_usuario' ],
+ 'CheckUserLog' => [ 'Registro_de_comprobación_de_usuarios', 'Registro_de_verificación_de_usuarios' ],
+];
+
+/** Basque (euskara) */
+$specialPageAliases['eu'] = [
+ 'CheckUser' => [ 'Lankidea_egiaztatu' ],
+ 'CheckUserLog' => [ 'Lankidearen_erregistroa_egiaztatu' ],
+];
/** Persian (فارسی) */
-$specialPageAliases['fa'] = array(
- 'CheckUser' => array( 'بازرسی_کاربر' ),
- 'CheckUserLog' => array( 'سیاهه_بازرس_کاربر' ),
-);
+$specialPageAliases['fa'] = [
+ 'CheckUser' => [ 'بازرسی_کاربر' ],
+ 'CheckUserLog' => [ 'سیاهه_بازرس_کاربر' ],
+];
/** Finnish (suomi) */
-$specialPageAliases['fi'] = array(
- 'CheckUser' => array( 'Tarkasta_käyttäjä' ),
- 'CheckUserLog' => array( 'Osoitepaljastusloki' ),
-);
+$specialPageAliases['fi'] = [
+ 'CheckUser' => [ 'Tarkasta_käyttäjä' ],
+ 'CheckUserLog' => [ 'Osoitepaljastusloki' ],
+];
/** French (français) */
-$specialPageAliases['fr'] = array(
- 'CheckUser' => array( 'Vérificateur_d\'utilisateur', 'Vérificateur_d\'utilisateurs', 'VérificateurUtilisateur', 'VérificateurUtilisateurs', 'Vérificateur_d’adresse' ),
-);
+$specialPageAliases['fr'] = [
+ 'CheckUser' => [ 'Vérificateur_d\'utilisateur', 'Vérificateur_d\'utilisateurs', 'VérificateurUtilisateur', 'VérificateurUtilisateurs', 'Vérificateur_d’adresse' ],
+];
/** Arpitan (arpetan) */
-$specialPageAliases['frp'] = array(
- 'CheckUser' => array( 'Controlor_d\'usanciér', 'ControlorDUsanciér' ),
-);
+$specialPageAliases['frp'] = [
+ 'CheckUser' => [ 'Controlor_d\'usanciér', 'ControlorDUsanciér' ],
+];
/** Galician (galego) */
-$specialPageAliases['gl'] = array(
- 'CheckUser' => array( 'Verificador_de_usuarios' ),
- 'CheckUserLog' => array( 'Rexistro_de_verificación_de_usuarios' ),
-);
+$specialPageAliases['gl'] = [
+ 'CheckUser' => [ 'Verificador_de_usuarios' ],
+ 'CheckUserLog' => [ 'Rexistro_de_verificación_de_usuarios' ],
+];
/** Swiss German (Alemannisch) */
-$specialPageAliases['gsw'] = array(
- 'CheckUser' => array( 'Benutzerpriefig' ),
-);
+$specialPageAliases['gsw'] = [
+ 'CheckUser' => [ 'Benutzerpriefig' ],
+];
/** Gujarati (ગુજરાતી) */
-$specialPageAliases['gu'] = array(
- 'CheckUser' => array( 'સભ્યચકાસણી' ),
-);
+$specialPageAliases['gu'] = [
+ 'CheckUser' => [ 'સભ્યચકાસણી' ],
+];
/** Hebrew (עברית) */
-$specialPageAliases['he'] = array(
- 'CheckUser' => array( 'בדיקת_משתמש' ),
- 'CheckUserLog' => array( 'יומן_בדיקת_משתמשים' ),
-);
+$specialPageAliases['he'] = [
+ 'CheckUser' => [ 'בדיקת_משתמש' ],
+ 'CheckUserLog' => [ 'יומן_בדיקת_משתמשים' ],
+];
/** Hindi (हिन्दी) */
-$specialPageAliases['hi'] = array(
- 'CheckUser' => array( 'सदस्य_जाँच' ),
- 'CheckUserLog' => array( 'सदस्य_जाँच_लॉग' ),
-);
+$specialPageAliases['hi'] = [
+ 'CheckUser' => [ 'सदस्य_जाँच' ],
+ 'CheckUserLog' => [ 'सदस्य_जाँच_लॉग' ],
+];
/** Croatian (hrvatski) */
-$specialPageAliases['hr'] = array(
- 'CheckUser' => array( 'Provjeri_suradnika' ),
-);
+$specialPageAliases['hr'] = [
+ 'CheckUser' => [ 'Provjeri_suradnika' ],
+];
/** Upper Sorbian (hornjoserbsce) */
-$specialPageAliases['hsb'] = array(
- 'CheckUser' => array( 'Kontrolny_wužiwar' ),
-);
+$specialPageAliases['hsb'] = [
+ 'CheckUser' => [ 'Kontrolny_wužiwar' ],
+];
/** Xiang Chinese (湘语) */
-$specialPageAliases['hsn'] = array(
- 'CheckUser' => array( '检查用户' ),
-);
+$specialPageAliases['hsn'] = [
+ 'CheckUser' => [ '检查用户' ],
+];
/** Haitian (Kreyòl ayisyen) */
-$specialPageAliases['ht'] = array(
- 'CheckUser' => array( 'TchekeItilizatè' ),
-);
+$specialPageAliases['ht'] = [
+ 'CheckUser' => [ 'TchekeItilizatè' ],
+];
/** Hungarian (magyar) */
-$specialPageAliases['hu'] = array(
- 'CheckUser' => array( 'IP-ellenőr' ),
-);
+$specialPageAliases['hu'] = [
+ 'CheckUser' => [ 'IP-ellenőr' ],
+];
/** Interlingua (interlingua) */
-$specialPageAliases['ia'] = array(
- 'CheckUser' => array( 'Verificar_usator' ),
- 'CheckUserLog' => array( 'Verificar_registro_de_usatores' ),
-);
+$specialPageAliases['ia'] = [
+ 'CheckUser' => [ 'Verificar_usator' ],
+ 'CheckUserLog' => [ 'Verificar_registro_de_usatores' ],
+];
/** Indonesian (Bahasa Indonesia) */
-$specialPageAliases['id'] = array(
- 'CheckUser' => array( 'Periksa_pengguna', 'PeriksaPengguna', 'Pemeriksaan' ),
- 'CheckUserLog' => array( 'Catatan_pemeriksaan' ),
-);
+$specialPageAliases['id'] = [
+ 'CheckUser' => [ 'Periksa_pengguna', 'PeriksaPengguna', 'Pemeriksaan' ],
+ 'CheckUserLog' => [ 'Catatan_pemeriksaan' ],
+];
/** Italian (italiano) */
-$specialPageAliases['it'] = array(
- 'CheckUser' => array( 'CU' ),
- 'CheckUserLog' => array( 'RegistroCheckUser' ),
-);
+$specialPageAliases['it'] = [
+ 'CheckUser' => [ 'CU' ],
+ 'CheckUserLog' => [ 'RegistroCheckUser' ],
+];
/** Japanese (日本語) */
-$specialPageAliases['ja'] = array(
- 'CheckUser' => array( 'チェックユーザー', 'チェックユーザ', '利用者調査' ),
- 'CheckUserLog' => array( 'チェックユーザー記録', '利用者調査記録' ),
-);
+$specialPageAliases['ja'] = [
+ 'CheckUser' => [ 'チェックユーザー', 'チェックユーザ', '利用者調査' ],
+ 'CheckUserLog' => [ 'チェックユーザー記録', '利用者調査記録' ],
+];
/** Georgian (ქართული) */
-$specialPageAliases['ka'] = array(
- 'CheckUser' => array( 'ჩეკიუზერი' ),
-);
+$specialPageAliases['ka'] = [
+ 'CheckUser' => [ 'ჩეკიუზერი' ],
+];
/** Khmer (ភាសាខ្មែរ) */
-$specialPageAliases['km'] = array(
- 'CheckUser' => array( 'ត្រួតពិនិត្យអ្នកប្រើប្រាស់' ),
-);
+$specialPageAliases['km'] = [
+ 'CheckUser' => [ 'ត្រួតពិនិត្យអ្នកប្រើប្រាស់' ],
+];
/** Korean (한국어) */
-$specialPageAliases['ko'] = array(
- 'CheckUser' => array( '사용자검사', '사용자확인' ),
- 'CheckUserLog' => array( '사용자검사기록', '사용자확인기록' ),
-);
+$specialPageAliases['ko'] = [
+ 'CheckUser' => [ '사용자검사', '사용자확인' ],
+ 'CheckUserLog' => [ '사용자검사기록', '사용자확인기록' ],
+];
/** Colognian (Ripoarisch) */
-$specialPageAliases['ksh'] = array(
- 'CheckUser' => array( 'Metmaacher_Pröve', 'Metmaacher_Pröfe' ),
-);
+$specialPageAliases['ksh'] = [
+ 'CheckUser' => [ 'Metmaacher_Pröve', 'Metmaacher_Pröfe' ],
+];
/** Cornish (kernowek) */
-$specialPageAliases['kw'] = array(
- 'CheckUser' => array( 'CheckyaDevnydhyer' ),
- 'CheckUserLog' => array( 'CheckyaKovnotenAnDevnydhyer' ),
-);
+$specialPageAliases['kw'] = [
+ 'CheckUser' => [ 'CheckyaDevnydhyer' ],
+ 'CheckUserLog' => [ 'CheckyaKovnotenAnDevnydhyer' ],
+];
/** Ladino (Ladino) */
-$specialPageAliases['lad'] = array(
- 'CheckUser' => array( 'KontrolarUsador' ),
-);
+$specialPageAliases['lad'] = [
+ 'CheckUser' => [ 'KontrolarUsador' ],
+];
/** Luxembourgish (Lëtzebuergesch) */
-$specialPageAliases['lb'] = array(
- 'CheckUser' => array( 'Benotzerkontroll' ),
- 'CheckUserLog' => array( 'Logbuch_vun_der_Benotzerkontroll' ),
-);
+$specialPageAliases['lb'] = [
+ 'CheckUser' => [ 'Benotzerkontroll' ],
+ 'CheckUserLog' => [ 'Logbuch_vun_der_Benotzerkontroll' ],
+];
/** Northern Luri (لۊری شومالی) */
-$specialPageAliases['lrc'] = array(
- 'CheckUser' => array( 'ڤارئسی_کاریار' ),
- 'CheckUserLog' => array( 'پئھرئستنوٙمە_ڤارئسی_کاریار' ),
-);
+$specialPageAliases['lrc'] = [
+ 'CheckUser' => [ 'ڤارئسی_کاریار' ],
+ 'CheckUserLog' => [ 'پئھرئستنوٙمە_ڤارئسی_کاریار' ],
+];
/** Malagasy (Malagasy) */
-$specialPageAliases['mg'] = array(
- 'CheckUser' => array( 'Mpanamarina_mpikambana', 'MpanamarinaMpikambana' ),
- 'CheckUserLog' => array( 'LaogimpanamarinaMpikambana' ),
-);
+$specialPageAliases['mg'] = [
+ 'CheckUser' => [ 'Mpanamarina_mpikambana', 'MpanamarinaMpikambana' ],
+ 'CheckUserLog' => [ 'LaogimpanamarinaMpikambana' ],
+];
/** Minangkabau (Baso Minangkabau) */
-$specialPageAliases['min'] = array(
- 'CheckUser' => array( 'ParesoPangguno' ),
- 'CheckUserLog' => array( 'LogPamaresoan' ),
-);
+$specialPageAliases['min'] = [
+ 'CheckUser' => [ 'ParesoPangguno' ],
+ 'CheckUserLog' => [ 'LogPamaresoan' ],
+];
/** Macedonian (македонски) */
-$specialPageAliases['mk'] = array(
- 'CheckUser' => array( 'ПроверкаНаКорисник' ),
- 'CheckUserLog' => array( 'ПроверкаНаКорисникДневник' ),
-);
+$specialPageAliases['mk'] = [
+ 'CheckUser' => [ 'ПроверкаНаКорисник' ],
+ 'CheckUserLog' => [ 'ПроверкаНаКорисникДневник' ],
+];
/** Malayalam (മലയാളം) */
-$specialPageAliases['ml'] = array(
- 'CheckUser' => array( 'ചെക്ക്‌‌യൂസർ' ),
- 'CheckUserLog' => array( 'ചെക്ക്‌യൂസർരേഖ' ),
-);
+$specialPageAliases['ml'] = [
+ 'CheckUser' => [ 'ചെക്ക്‌‌യൂസർ' ],
+ 'CheckUserLog' => [ 'ചെക്ക്‌യൂസർരേഖ' ],
+];
/** Marathi (मराठी) */
-$specialPageAliases['mr'] = array(
- 'CheckUser' => array( 'सदस्यतपासनिस' ),
-);
+$specialPageAliases['mr'] = [
+ 'CheckUser' => [ 'सदस्यतपासनिस' ],
+];
/** Malay (Bahasa Melayu) */
-$specialPageAliases['ms'] = array(
- 'CheckUser' => array( 'Perisik' ),
- 'CheckUserLog' => array( 'Log_perisik' ),
-);
+$specialPageAliases['ms'] = [
+ 'CheckUser' => [ 'Perisik' ],
+ 'CheckUserLog' => [ 'Log_perisik' ],
+];
/** Erzya (эрзянь) */
-$specialPageAliases['myv'] = array(
- 'CheckUser' => array( 'ВанкшномсКиеТеицясь' ),
-);
+$specialPageAliases['myv'] = [
+ 'CheckUser' => [ 'ВанкшномсКиеТеицясь' ],
+];
/** Norwegian Bokmål (norsk bokmål) */
-$specialPageAliases['nb'] = array(
- 'CheckUser' => array( 'IP-sjekk' ),
- 'CheckUserLog' => array( 'IP-sjekkingslogg' ),
-);
+$specialPageAliases['nb'] = [
+ 'CheckUser' => [ 'IP-sjekk' ],
+ 'CheckUserLog' => [ 'IP-sjekkingslogg' ],
+];
/** Low Saxon (Netherlands) (Nedersaksies) */
-$specialPageAliases['nds-nl'] = array(
- 'CheckUser' => array( 'Gebruker_opvragen' ),
- 'CheckUserLog' => array( 'Logboek_gebruker_naokieken' ),
-);
+$specialPageAliases['nds-nl'] = [
+ 'CheckUser' => [ 'Gebruker_opvragen' ],
+ 'CheckUserLog' => [ 'Logboek_gebruker_naokieken' ],
+];
/** Dutch (Nederlands) */
-$specialPageAliases['nl'] = array(
- 'CheckUser' => array( 'GebruikerControleren' ),
- 'CheckUserLog' => array( 'LogboekGebruikerControleren' ),
-);
+$specialPageAliases['nl'] = [
+ 'CheckUser' => [ 'GebruikerControleren' ],
+ 'CheckUserLog' => [ 'LogboekGebruikerControleren' ],
+];
/** Occitan (occitan) */
-$specialPageAliases['oc'] = array(
- 'CheckUser' => array( 'Verificator_d’adreça', 'VerificatorAdreça', 'VerificatorAdreca' ),
-);
+$specialPageAliases['oc'] = [
+ 'CheckUser' => [ 'Verificator_d’adreça', 'VerificatorAdreça', 'VerificatorAdreca' ],
+];
/** Punjabi (ਪੰਜਾਬੀ) */
-$specialPageAliases['pa'] = array(
- 'CheckUser' => array( 'ਚੈੱਕ_ਵਰਤੋਂਕਾਰ' ),
- 'CheckUserLog' => array( 'ਚੈੱਕ_ਵਰਤੋਂਕਾਰ_ਚਿੱਠਾ' ),
-);
+$specialPageAliases['pa'] = [
+ 'CheckUser' => [ 'ਚੈੱਕ_ਵਰਤੋਂਕਾਰ' ],
+ 'CheckUserLog' => [ 'ਚੈੱਕ_ਵਰਤੋਂਕਾਰ_ਚਿੱਠਾ' ],
+];
/** Portuguese (português) */
-$specialPageAliases['pt'] = array(
- 'CheckUser' => array( 'Verificar_usuário' ),
- 'CheckUserLog' => array( 'Registo_de_verificação_de_usuário', 'Registro_de_verificação_de_usuário' ),
-);
+$specialPageAliases['pt'] = [
+ 'CheckUser' => [ 'Verificar_usuário' ],
+ 'CheckUserLog' => [ 'Registo_de_verificação_de_usuário', 'Registro_de_verificação_de_usuário' ],
+];
/** Brazilian Portuguese (português do Brasil) */
-$specialPageAliases['pt-br'] = array(
- 'CheckUser' => array( 'Verificar_usuário' ),
- 'CheckUserLog' => array( 'Registro_de_verificação_de_usuário', 'Registo_de_verificação_de_usuário' ),
-);
+$specialPageAliases['pt-br'] = [
+ 'CheckUser' => [ 'Verificar_usuário' ],
+ 'CheckUserLog' => [ 'Registro_de_verificação_de_usuário', 'Registo_de_verificação_de_usuário' ],
+];
/** Quechua (Runa Simi) */
-$specialPageAliases['qu'] = array(
- 'CheckUser' => array( 'RuraqtaLlanchiy' ),
-);
+$specialPageAliases['qu'] = [
+ 'CheckUser' => [ 'RuraqtaLlanchiy' ],
+];
/** Romanian (română) */
-$specialPageAliases['ro'] = array(
- 'CheckUser' => array( 'Verifică_utilizator' ),
-);
+$specialPageAliases['ro'] = [
+ 'CheckUser' => [ 'Verifică_utilizator' ],
+];
/** Russian (русский) */
-$specialPageAliases['ru'] = array(
- 'CheckUser' => array( 'Проверить_участника' ),
- 'CheckUserLog' => array( 'Журнал_проверок_участников' ),
-);
+$specialPageAliases['ru'] = [
+ 'CheckUser' => [ 'Проверить_участника' ],
+ 'CheckUserLog' => [ 'Журнал_проверок_участников' ],
+];
/** Sanskrit (संस्कृतम्) */
-$specialPageAliases['sa'] = array(
- 'CheckUser' => array( 'योजकपरिक्षक' ),
-);
+$specialPageAliases['sa'] = [
+ 'CheckUser' => [ 'योजकपरिक्षक' ],
+];
/** Sicilian (sicilianu) */
-$specialPageAliases['scn'] = array(
- 'CheckUser' => array( 'CU' ),
- 'CheckUserLog' => array( 'RegistroCU' ),
-);
+$specialPageAliases['scn'] = [
+ 'CheckUser' => [ 'CU' ],
+ 'CheckUserLog' => [ 'RegistroCU' ],
+];
/** Slovak (slovenčina) */
-$specialPageAliases['sk'] = array(
- 'CheckUser' => array( 'SkontrolovaťPoužívateľa' ),
-);
+$specialPageAliases['sk'] = [
+ 'CheckUser' => [ 'SkontrolovaťPoužívateľa' ],
+];
/** Albanian (shqip) */
-$specialPageAliases['sq'] = array(
- 'CheckUser' => array( 'KontrolloPërdorues' ),
-);
+$specialPageAliases['sq'] = [
+ 'CheckUser' => [ 'KontrolloPërdorues' ],
+];
/** Swedish (svenska) */
-$specialPageAliases['sv'] = array(
- 'CheckUser' => array( 'Kolla_användare' ),
- 'CheckUserLog' => array( 'Kolla_användare_logg' ),
-);
+$specialPageAliases['sv'] = [
+ 'CheckUser' => [ 'Kolla_användare' ],
+ 'CheckUserLog' => [ 'Kolla_användare_logg' ],
+];
/** Swahili (Kiswahili) */
-$specialPageAliases['sw'] = array(
- 'CheckUser' => array( 'MtumiajiMwangalizi' ),
-);
+$specialPageAliases['sw'] = [
+ 'CheckUser' => [ 'MtumiajiMwangalizi' ],
+];
/** Thai (ไทย) */
-$specialPageAliases['th'] = array(
- 'CheckUser' => array( 'ตรวจสอบผู้ใช้' ),
- 'CheckUserLog' => array( 'ปูมตรวจสอบผู้ใช้' ),
-);
+$specialPageAliases['th'] = [
+ 'CheckUser' => [ 'ตรวจสอบผู้ใช้' ],
+ 'CheckUserLog' => [ 'ปูมตรวจสอบผู้ใช้' ],
+];
/** Tagalog (Tagalog) */
-$specialPageAliases['tl'] = array(
- 'CheckUser' => array( 'Suriin_ang_tagagamit' ),
-);
+$specialPageAliases['tl'] = [
+ 'CheckUser' => [ 'Suriin_ang_tagagamit' ],
+];
/** Turkish (Türkçe) */
-$specialPageAliases['tr'] = array(
- 'CheckUser' => array( 'Denetçi', 'KullanıcıDenetle' ),
- 'CheckUserLog' => array( 'DenetçiGünlüğü' ),
-);
+$specialPageAliases['tr'] = [
+ 'CheckUser' => [ 'Denetçi', 'KullanıcıDenetle' ],
+ 'CheckUserLog' => [ 'DenetçiGünlüğü' ],
+];
/** Ukrainian (українська) */
-$specialPageAliases['uk'] = array(
- 'CheckUser' => array( 'Перевірити_користувача' ),
- 'CheckUserLog' => array( 'Журнал_перевірок_користувачів' ),
-);
+$specialPageAliases['uk'] = [
+ 'CheckUser' => [ 'Перевірити_користувача', 'Проверить_участника' ],
+ 'CheckUserLog' => [ 'Журнал_перевірок_користувачів', 'Журнал_проверок_участников' ],
+];
/** Urdu (اردو) */
-$specialPageAliases['ur'] = array(
- 'CheckUser' => array( 'صارف_پڑتال' ),
- 'CheckUserLog' => array( 'نوشتہ_صارف_پڑتال' ),
-);
+$specialPageAliases['ur'] = [
+ 'CheckUser' => [ 'صارف_پڑتال' ],
+ 'CheckUserLog' => [ 'نوشتہ_صارف_پڑتال' ],
+];
/** Venetian (vèneto) */
-$specialPageAliases['vec'] = array(
- 'CheckUser' => array( 'ControlaUtente' ),
-);
+$specialPageAliases['vec'] = [
+ 'CheckUser' => [ 'ControlaUtente' ],
+];
/** Veps (vepsän kel’) */
-$specialPageAliases['vep'] = array(
- 'CheckUser' => array( 'KodvdaKävutajad' ),
-);
+$specialPageAliases['vep'] = [
+ 'CheckUser' => [ 'KodvdaKävutajad' ],
+];
/** Vietnamese (Tiếng Việt) */
-$specialPageAliases['vi'] = array(
- 'CheckUser' => array( 'Kiểm_tra_người_dùng' ),
- 'CheckUserLog' => array( 'Nhật_trình_kiểm_tra_người_dùng' ),
-);
+$specialPageAliases['vi'] = [
+ 'CheckUser' => [ 'Kiểm_tra_người_dùng' ],
+ 'CheckUserLog' => [ 'Nhật_trình_kiểm_tra_người_dùng' ],
+];
/** Chinese (中文) */
-$specialPageAliases['zh'] = array(
- 'CheckUser' => array( '用户查核', '用戶查核', '使用者查核' ),
-);
+$specialPageAliases['zh'] = [
+ 'CheckUser' => [ '用户查核', '用戶查核', '使用者查核' ],
+];
/** Simplified Chinese (中文(简体)‎) */
-$specialPageAliases['zh-hans'] = array(
- 'CheckUser' => array( '用户查核' ),
- 'CheckUserLog' => array( '用户查核日志' ),
-);
+$specialPageAliases['zh-hans'] = [
+ 'CheckUser' => [ '用户查核' ],
+ 'CheckUserLog' => [ '用户查核日志' ],
+];
/** Traditional Chinese (中文(繁體)‎) */
-$specialPageAliases['zh-hant'] = array(
- 'CheckUser' => array( '使用者查核' ),
- 'CheckUserLog' => array( '使用者查核日誌' ),
-);
+$specialPageAliases['zh-hant'] = [
+ 'CheckUser' => [ '使用者查核' ],
+ 'CheckUserLog' => [ '使用者查核日誌' ],
+];
/** Chinese (Hong Kong) (中文(香港)‎) */
-$specialPageAliases['zh-hk'] = array(
- 'CheckUser' => array( '用戶查核' ),
- 'CheckUserLog' => array( '用戶查核日誌' ),
-); \ No newline at end of file
+$specialPageAliases['zh-hk'] = [
+ 'CheckUser' => [ '用戶查核' ],
+ 'CheckUserLog' => [ '用戶查核日誌' ],
+];
diff --git a/CheckUser/CheckUser.hooks.php b/CheckUser/CheckUser.hooks.php
index 8142c99d..8f3586a7 100755..100644
--- a/CheckUser/CheckUser.hooks.php
+++ b/CheckUser/CheckUser.hooks.php
@@ -1,14 +1,36 @@
<?php
+
+use MediaWiki\MediaWikiServices;
+
class CheckUserHooks {
/**
* Hook function for RecentChange_save
* Saves user data into the cu_changes table
* Note that other extensions (like AbuseFilter) may call this function directly
* if they want to send data to CU without creating a recentchanges entry
+ * @param RecentChange $rc
+ * @return bool
*/
public static function updateCheckUserData( RecentChange $rc ) {
global $wgRequest;
+ /**
+ * RC_CATEGORIZE recent changes are generally triggered by other edits.
+ * Thus there is no reason to store checkuser data about them.
+ * @see https://phabricator.wikimedia.org/T125209
+ */
+ if ( defined( 'RC_CATEGORIZE' ) && $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE ) {
+ return true;
+ }
+ /**
+ * RC_EXTERNAL recent changes are not triggered by actions on the local wiki.
+ * Thus there is no reason to store checkuser data about them.
+ * @see https://phabricator.wikimedia.org/T125664
+ */
+ if ( defined( 'RC_EXTERNAL' ) && $rc->getAttribute( 'rc_type' ) == RC_EXTERNAL ) {
+ return true;
+ }
+
$attribs = $rc->getAttributes();
// Get IP
$ip = $wgRequest->getIP();
@@ -33,16 +55,14 @@ class CheckUserHooks {
}
$dbw = wfGetDB( DB_MASTER );
- $cuc_id = $dbw->nextSequenceValue( 'cu_changes_cu_id_seq' );
- $rcRow = array(
- 'cuc_id' => $cuc_id,
+ $rcRow = [
'cuc_namespace' => $attribs['rc_namespace'],
'cuc_title' => $attribs['rc_title'],
'cuc_minor' => $attribs['rc_minor'],
'cuc_user' => $attribs['rc_user'],
'cuc_user_text' => $attribs['rc_user_text'],
'cuc_actiontext' => $actionText,
- 'cuc_comment' => $attribs['rc_comment'],
+ 'cuc_comment' => $rc->getAttribute( 'rc_comment' ),
'cuc_this_oldid' => $attribs['rc_this_oldid'],
'cuc_last_oldid' => $attribs['rc_last_oldid'],
'cuc_type' => $attribs['rc_type'],
@@ -52,13 +72,13 @@ class CheckUserHooks {
'cuc_xff' => !$isSquidOnly ? $xff : '',
'cuc_xff_hex' => ( $xff_ip && !$isSquidOnly ) ? IP::toHex( $xff_ip ) : null,
'cuc_agent' => $agent
- );
+ ];
# On PG, MW unsets cur_id due to schema incompatibilites. So it may not be set!
if ( isset( $attribs['rc_cur_id'] ) ) {
$rcRow['cuc_page_id'] = $attribs['rc_cur_id'];
}
- Hooks::run( 'CheckUserInsertForRecentChange', array( $rc, &$rcRow ) );
+ Hooks::run( 'CheckUserInsertForRecentChange', [ $rc, &$rcRow ] );
$dbw->insert( 'cu_changes', $rcRow, __METHOD__ );
return true;
@@ -67,6 +87,11 @@ class CheckUserHooks {
/**
* Hook function to store password reset
* Saves user data into the cu_changes table
+ *
+ * @param User $user Sender
+ * @param string $ip
+ * @param User $account Receiver
+ * @return bool
*/
public static function updateCUPasswordResetData( User $user, $ip, $account ) {
global $wgRequest;
@@ -77,15 +102,14 @@ class CheckUserHooks {
// Get agent
$agent = $wgRequest->getHeader( 'User-Agent' );
$dbw = wfGetDB( DB_MASTER );
- $cuc_id = $dbw->nextSequenceValue( 'cu_changes_cu_id_seq' );
- $rcRow = array(
- 'cuc_id' => $cuc_id,
+ $rcRow = [
'cuc_namespace' => NS_USER,
'cuc_title' => '',
'cuc_minor' => 0,
'cuc_user' => $user->getId(),
'cuc_user_text' => $user->getName(),
- 'cuc_actiontext' => wfMessage( 'checkuser-reset-action', $account->getName() )->inContentLanguage()->text(),
+ 'cuc_actiontext' => wfMessage( 'checkuser-reset-action', $account->getName() )
+ ->inContentLanguage()->text(),
'cuc_comment' => '',
'cuc_this_oldid' => 0,
'cuc_last_oldid' => 0,
@@ -96,21 +120,34 @@ class CheckUserHooks {
'cuc_xff' => !$isSquidOnly ? $xff : '',
'cuc_xff_hex' => ( $xff_ip && !$isSquidOnly ) ? IP::toHex( $xff_ip ) : null,
'cuc_agent' => $agent
- );
+ ];
$dbw->insert( 'cu_changes', $rcRow, __METHOD__ );
return true;
}
/**
- * Hook function to store email data
- * Saves user data into the cu_changes table
+ * Hook function to store email data.
+ *
+ * Saves user data into the cu_changes table.
+ * Uses a deferred update to save the data, because emails can be sent from code paths
+ * that don't open master connections.
+ *
+ * @param MailAddress $to
+ * @param MailAddress $from
+ * @param string $subject
+ * @param string $text
+ * @return bool
*/
public static function updateCUEmailData( $to, $from, $subject, $text ) {
global $wgSecretKey, $wgRequest, $wgCUPublicKey;
+
if ( !$wgSecretKey || $from->name == $to->name ) {
return true;
+ } elseif ( wfReadOnly() ) {
+ return true;
}
+
$userFrom = User::newFromName( $from->name );
$userTo = User::newFromName( $to->name );
$hash = md5( $userTo->getEmail() . $userTo->getId() . $wgSecretKey );
@@ -121,65 +158,60 @@ class CheckUserHooks {
list( $xff_ip, $isSquidOnly ) = self::getClientIPfromXFF( $xff );
// Get agent
$agent = $wgRequest->getHeader( 'User-Agent' );
- $dbw = wfGetDB( DB_MASTER );
- $cuc_id = $dbw->nextSequenceValue( 'cu_changes_cu_id_seq' );
- $rcRow = array(
- 'cuc_id' => $cuc_id,
+
+ $dbr = wfGetDB( DB_REPLICA );
+ $rcRow = [
'cuc_namespace' => NS_USER,
'cuc_title' => '',
'cuc_minor' => 0,
'cuc_user' => $userFrom->getId(),
'cuc_user_text' => $userFrom->getName(),
- 'cuc_actiontext' => wfMessage( 'checkuser-email-action', $hash )->inContentLanguage()->text(),
+ 'cuc_actiontext' =>
+ wfMessage( 'checkuser-email-action', $hash )->inContentLanguage()->text(),
'cuc_comment' => '',
'cuc_this_oldid' => 0,
'cuc_last_oldid' => 0,
'cuc_type' => RC_LOG,
- 'cuc_timestamp' => $dbw->timestamp( wfTimestampNow() ),
+ 'cuc_timestamp' => $dbr->timestamp( wfTimestampNow() ),
'cuc_ip' => IP::sanitizeIP( $ip ),
'cuc_ip_hex' => $ip ? IP::toHex( $ip ) : null,
'cuc_xff' => !$isSquidOnly ? $xff : '',
'cuc_xff_hex' => ( $xff_ip && !$isSquidOnly ) ? IP::toHex( $xff_ip ) : null,
'cuc_agent' => $agent
- );
+ ];
if ( trim( $wgCUPublicKey ) != '' ) {
$privateData = $userTo->getEmail() . ":" . $userTo->getId();
$encryptedData = new CheckUserEncryptedData( $privateData, $wgCUPublicKey );
- $rcRow = array_merge($rcRow, array( 'cuc_private' => serialize( $encryptedData ) ) );
+ $rcRow = array_merge( $rcRow, [ 'cuc_private' => serialize( $encryptedData ) ] );
}
- $dbw->insert( 'cu_changes', $rcRow, __METHOD__ );
+ $fname = __METHOD__;
+ DeferredUpdates::addCallableUpdate( function () use ( $rcRow, $fname ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->insert( 'cu_changes', $rcRow, $fname );
+ } );
return true;
}
/**
- * Hook function to store autocreation data from the auth plugin
+ * Hook function to store registration and autocreation data
* Saves user data into the cu_changes table
*
- * @param $user User
- *
+ * @param User $user
+ * @param bool $autocreated
* @return true
*/
- public static function onAuthPluginAutoCreate( User $user ) {
- return self::logUserAccountCreation( $user, 'checkuser-autocreate-action' );
- }
-
- /**
- * Hook function to store registration data
- * Saves user data into the cu_changes table
- *
- * @param $user User
- * @param $byEmail bool
- * @return bool
- */
- public static function onAddNewAccount( User $user, $byEmail ) {
- return self::logUserAccountCreation( $user, 'checkuser-create-action' );
+ public static function onLocalUserCreated( User $user, $autocreated ) {
+ return self::logUserAccountCreation(
+ $user,
+ $autocreated ? 'checkuser-autocreate-action' : 'checkuser-create-action'
+ );
}
/**
- * @param $user User
- * @param $actiontext string
+ * @param User $user
+ * @param string $actiontext
* @return bool
*/
protected static function logUserAccountCreation( User $user, $actiontext ) {
@@ -193,9 +225,7 @@ class CheckUserHooks {
// Get agent
$agent = $wgRequest->getHeader( 'User-Agent' );
$dbw = wfGetDB( DB_MASTER );
- $cuc_id = $dbw->nextSequenceValue( 'cu_changes_cu_id_seq' );
- $rcRow = array(
- 'cuc_id' => $cuc_id,
+ $rcRow = [
'cuc_page_id' => 0,
'cuc_namespace' => NS_USER,
'cuc_title' => '',
@@ -213,7 +243,7 @@ class CheckUserHooks {
'cuc_xff' => !$isSquidOnly ? $xff : '',
'cuc_xff_hex' => ( $xff_ip && !$isSquidOnly ) ? IP::toHex( $xff_ip ) : null,
'cuc_agent' => $agent
- );
+ ];
$dbw->insert( 'cu_changes', $rcRow, __METHOD__ );
return true;
@@ -221,26 +251,26 @@ class CheckUserHooks {
/**
* Hook function to prune data from the cu_changes table
+ * @return true
*/
public static function maybePruneIPData() {
# Every 50th edit, prune the checkuser changes table.
if ( 0 == mt_rand( 0, 49 ) ) {
$fname = __METHOD__;
- DeferredUpdates::addCallableUpdate( function() use ( $fname ) {
+ DeferredUpdates::addCallableUpdate( function () use ( $fname ) {
global $wgCUDMaxAge;
$dbw = wfGetDB( DB_MASTER );
$encCutoff = $dbw->addQuotes( $dbw->timestamp( time() - $wgCUDMaxAge ) );
$ids = $dbw->selectFieldValues( 'cu_changes',
'cuc_id',
- array( "cuc_timestamp < $encCutoff" ),
+ [ "cuc_timestamp < $encCutoff" ],
$fname,
- array( 'LIMIT' => 500 )
+ [ 'LIMIT' => 500 ]
);
if ( $ids ) {
- $dbw->delete( 'cu_changes', array( 'cuc_id' => $ids ), $fname );
- $dbw->commit( 'flush' );
+ $dbw->delete( 'cu_changes', [ 'cuc_id' => $ids ], $fname );
}
} );
}
@@ -265,13 +295,20 @@ class CheckUserHooks {
global $wgUsePrivateIPs;
if ( !strlen( $xff ) ) {
- return array( null, false );
+ return [ null, false ];
}
# Get the list in the form of <PROXY N, ... PROXY 1, CLIENT>
$ipchain = array_map( 'trim', explode( ',', $xff ) );
$ipchain = array_reverse( $ipchain );
+ if ( class_exists( ProxyLookup::class ) ) { // MW 1.28+
+ $proxyLookup = MediaWikiServices::getInstance()->getProxyLookup();
+ } else {
+ // This is kind of sketch, but is good enough for back-compat
+ $proxyLookup = new IP();
+ }
+
$client = null; // best guess of the client IP
$isSquidOnly = false; // all proxy servers where site Squid/Varnish servers?
# Step through XFF list and find the last address in the list which is a
@@ -283,7 +320,7 @@ class CheckUserHooks {
if ( $curIP === null ) {
break; // not a valid IP address
}
- $curIsSquid = IP::isConfiguredProxy( $curIP );
+ $curIsSquid = $proxyLookup->isConfiguredProxy( $curIP );
if ( $client === null ) {
$client = $curIP;
$isSquidOnly = $curIsSquid;
@@ -304,48 +341,67 @@ class CheckUserHooks {
break;
}
- return array( $client, $isSquidOnly );
+ return [ $client, $isSquidOnly ];
}
- public static function checkUserSchemaUpdates( DatabaseUpdater $updater ) {
- $base = dirname( __FILE__ );
-
- $updater->addExtensionUpdate( array( 'CheckUserHooks::checkUserCreateTables' ) );
- if ( $updater->getDB()->getType() == 'mysql' ) {
- $updater->addExtensionUpdate( array( 'addIndex', 'cu_changes',
- 'cuc_ip_hex_time', "$base/archives/patch-cu_changes_indexes.sql", true ) );
- $updater->addExtensionUpdate( array( 'addIndex', 'cu_changes',
- 'cuc_user_ip_time', "$base/archives/patch-cu_changes_indexes2.sql", true ) );
- $updater->addExtensionField( 'cu_changes', 'cuc_private', "$base/archives/patch-cu_changes_privatedata.sql" );
- } elseif ( $updater->getDB()->getType() == 'postgres' ) {
- $updater->addExtensionUpdate( array( 'addPgField', 'cu_changes', 'cuc_private', 'BYTEA' ) );
- }
-
- return true;
- }
+ public static function onLoadExtensionSchemaUpdates( DatabaseUpdater $updater ) {
+ $base = __DIR__;
+ $dbType = $updater->getDB()->getType();
+ $isCUInstalled = $updater->tableExists( 'cu_changes' );
- public static function checkUserCreateTables( $updater ) {
- $base = dirname( __FILE__ );
+ $updater->addExtensionTable(
+ 'cu_changes', self::getTableFileName( $dbType, 'cu_changes' )
+ );
+ $updater->addExtensionTable(
+ 'cu_log', self::getTableFileName( $dbType, 'cu_log' )
+ );
- $db = $updater->getDB();
- if ( $db->tableExists( 'cu_changes' ) ) {
- $updater->output( "...cu_changes table already exists.\n" );
- } else {
- require_once "$base/install.inc";
- create_cu_changes( $db );
+ if ( $dbType === 'mysql' ) {
+ $updater->addExtensionIndex(
+ 'cu_changes',
+ 'cuc_ip_hex_time',
+ "$base/archives/patch-cu_changes_indexes.sql"
+ );
+ $updater->addExtensionIndex(
+ 'cu_changes',
+ 'cuc_user_ip_time',
+ "$base/archives/patch-cu_changes_indexes2.sql"
+ );
+ $updater->addExtensionField(
+ 'cu_changes',
+ 'cuc_private',
+ "$base/archives/patch-cu_changes_privatedata.sql"
+ );
+ } elseif ( $dbType === 'postgres' ) {
+ $updater->addExtensionUpdate(
+ [ 'addPgField', 'cu_changes', 'cuc_private', 'BYTEA' ]
+ );
}
- if ( $db->tableExists( 'cu_log' ) ) {
- $updater->output( "...cu_log table already exists.\n" );
- } else {
- require_once "$base/install.inc";
- create_cu_log( $db );
+ if ( !$isCUInstalled ) {
+ // First time so populate cu_changes with recentchanges data.
+ // Note: We cannot completely rely on updatelog here for old entries
+ // as populateCheckUserTable.php doesn't check for duplicates
+ $updater->addPostDatabaseUpdateMaintenance( 'PopulateCheckUserTable' );
}
}
/**
+ * @param string $type DB type
+ * @param string $name Table name
+ */
+ private static function getTableFileName( $type, $name ) {
+ $file = __DIR__ . '/' . $name;
+ return $type === 'postgres'
+ ? $file . '.pg.sql'
+ : $file . '.sql';
+ }
+
+ /**
* Tell the parser test engine to create a stub cu_changes table,
* or temporary pages won't save correctly during the test run.
+ * @param array &$tables
+ * @return bool
*/
public static function checkUserParserTestTables( &$tables ) {
$tables[] = 'cu_changes';
@@ -356,9 +412,9 @@ class CheckUserHooks {
* Add a link to Special:CheckUser and Special:CheckUserLog
* on Special:Contributions/<username> for
* privileged users.
- * @param $id Integer: user ID
- * @param $nt Title: user page title
- * @param $links Array: tool links
+ * @param int $id User ID
+ * @param Title $nt User page title
+ * @param array &$links Tool links
* @return true
*/
public static function checkUserContributionsLinks( $id, $nt, &$links ) {
@@ -367,19 +423,19 @@ class CheckUserHooks {
$links[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'CheckUser' ),
wfMessage( 'checkuser-contribs' )->escaped(),
- array(),
- array( 'user' => $nt->getText() )
+ [],
+ [ 'user' => $nt->getText() ]
);
}
if ( $wgUser->isAllowed( 'checkuser-log' ) ) {
$links[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'CheckUserLog' ),
wfMessage( 'checkuser-contribs-log' )->escaped(),
- array(),
- array(
+ [],
+ [
'cuSearchType' => 'target',
'cuSearch' => $nt->getText()
- )
+ ]
);
}
return true;
@@ -390,23 +446,24 @@ class CheckUserHooks {
* blocked by this Block.
*
* @param Block $block
- * @param Array &$blockIds
+ * @param array &$blockIds
+ * @return bool
*/
public static function doRetroactiveAutoblock( Block $block, array &$blockIds ) {
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$user = User::newFromName( (string)$block->getTarget(), false );
if ( !$user->getId() ) {
- return array(); // user in an IP?
+ return []; // user in an IP?
}
- $options = array( 'ORDER BY' => 'cuc_timestamp DESC' );
+ $options = [ 'ORDER BY' => 'cuc_timestamp DESC' ];
$options['LIMIT'] = 1; // just the last IP used
$res = $dbr->select( 'cu_changes',
- array( 'cuc_ip' ),
- array( 'cuc_user' => $user->getId() ),
- __METHOD__ ,
+ [ 'cuc_ip' ],
+ [ 'cuc_user' => $user->getId() ],
+ __METHOD__,
$options
);
@@ -414,7 +471,9 @@ class CheckUserHooks {
foreach ( $res as $row ) {
if ( $row->cuc_ip ) {
$id = $block->doAutoblock( $row->cuc_ip );
- if ( $id ) $blockIds[] = $id;
+ if ( $id ) {
+ $blockIds[] = $id;
+ }
}
}
@@ -422,9 +481,28 @@ class CheckUserHooks {
}
public static function onUserMergeAccountFields( array &$updateFields ) {
- $updateFields[] = array( 'cu_changes', 'cuc_user', 'cuc_user_text' );
- $updateFields[] = array( 'cu_log', 'cul_user', 'cul_user_text' );
- $updateFields[] = array( 'cu_log', 'cul_target_id' );
+ $updateFields[] = [ 'cu_changes', 'cuc_user', 'cuc_user_text' ];
+ $updateFields[] = [ 'cu_log', 'cul_user', 'cul_user_text' ];
+ $updateFields[] = [ 'cu_log', 'cul_target_id' ];
+
+ return true;
+ }
+
+ /**
+ * For integration with the Renameuser extension.
+ *
+ * @param RenameuserSQL $renameUserSQL
+ * @return bool
+ */
+ public static function onRenameUserSQL( RenameuserSQL $renameUserSQL ) {
+ $renameUserSQL->tablesJob['cu_changes'] = [
+ RenameuserSQL::NAME_COL => 'cuc_user_text',
+ RenameuserSQL::UID_COL => 'cuc_user',
+ RenameuserSQL::TIME_COL => 'cuc_timestamp',
+ 'uniqueKey' => 'cuc_id'
+ ];
+
+ $renameUserSQL->tables['cu_log'] = [ 'cul_user_text', 'cul_user' ];
return true;
}
diff --git a/CheckUser/CheckUser.php b/CheckUser/CheckUser.php
index 0b7c09e9..55328890 100644
--- a/CheckUser/CheckUser.php
+++ b/CheckUser/CheckUser.php
@@ -1,114 +1,59 @@
<?php
-/**
- * CheckUser extension - grants users with the appropriate permission the
- * ability to check user's IP addresses and other information.
- *
- * @file
- * @ingroup Extensions
- * @version 2.3
- * @author Tim Starling
- * @author Aaron Schulz
- * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- * @link http://www.mediawiki.org/wiki/Extension:CheckUser Documentation
- */
-# Not a valid entry point, skip unless MEDIAWIKI is defined
-if ( !defined( 'MEDIAWIKI' ) ) {
- echo "CheckUser extension";
- exit( 1 );
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'CheckUser' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['CheckUser'] = __DIR__ . '/i18n';
+ $wgExtensionMessagesFiles['CheckUserAliases'] = __DIR__ . '/CheckUser.alias.php';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for CheckUser extension. ' .
+ 'Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return;
+} else {
+ die( 'This version of the CheckUser extension requires MediaWiki 1.25+' );
}
-# Internationalisation files
-$dir = __DIR__ . '/';
-$wgMessagesDirs['CheckUser'] = __DIR__ . '/i18n';
-$wgExtensionMessagesFiles['CheckUserAliases'] = $dir . 'CheckUser.alias.php';
-
-// Extension credits that will show up on Special:Version
-$wgExtensionCredits['specialpage'][] = array(
- 'path' => __FILE__,
- 'author' => array( 'Tim Starling', 'Aaron Schulz' ),
- 'name' => 'CheckUser',
- 'version' => '2.4',
- 'url' => 'https://www.mediawiki.org/wiki/Extension:CheckUser',
- 'descriptionmsg' => 'checkuser-desc',
- 'license-name' => 'GPL-2.0+',
-);
-
-// New user rights
-// 'checkuser' right is required to query IPs/users through Special:CheckUser
-// 'checkuser-log' is required to view the private log of checkuser checks
-$wgAvailableRights[] = 'checkuser';
-$wgAvailableRights[] = 'checkuser-log';
-$wgGroupPermissions['checkuser']['checkuser'] = true;
-$wgGroupPermissions['checkuser']['checkuser-log'] = true;
-
-// Legacy variable, no longer used. Used to point to a file in the server where
-// CheckUser would log all queries done through Special:CheckUser.
-// If this file exists, the installer will try to import data from this file to
-// the 'cu_log' table in the database.
-$wgCheckUserLog = '/home/wikipedia/logs/checkuser.log';
+// Global declarations and documentation kept for IDEs and PHP documentors.
+// This code is never executed.
-# How long to keep CU data (in seconds)?
+/** How long to keep CU data (in seconds)? */
$wgCUDMaxAge = 3 * 30 * 24 * 3600; // 3 months
-# Mass block limits
+/** Mass block limits */
$wgCheckUserMaxBlocks = 200;
-// Set this to true if you want to force checkusers into giving a reason for
-// each check they do through Special:CheckUser.
+/**
+ * Set this to true if you want to force checkusers into giving a reason for
+ * each check they do through Special:CheckUser.
+ */
$wgCheckUserForceSummary = false;
-//Shortest CIDR limits that can be checked in any individual range check
-$wgCheckUserCIDRLimit = array(
- 'IPv4'=>16,
- 'IPv6'=>48,
-);
-
-// Public key to encrypt private data that may need to be read later
-// Generate a public key with something like:
-// `openssl genrsa -out cu.key 2048; openssl rsa -in cu.key -pubout > cu.pub`
-// and paste the contents of cu.pub here
-$wgCUPublicKey = <<<CUPUBLICKEY
-
-CUPUBLICKEY;
-
-# Recent changes data hook
-$wgHooks['RecentChange_save'][] = 'CheckUserHooks::updateCheckUserData';
-$wgHooks['EmailUser'][] = 'CheckUserHooks::updateCUEmailData';
-$wgHooks['User::mailPasswordInternal'][] = 'CheckUserHooks::updateCUPasswordResetData';
-$wgHooks['AuthPluginAutoCreate'][] = 'CheckUserHooks::onAuthPluginAutoCreate';
-$wgHooks['AddNewAccount'][] = 'CheckUserHooks::onAddNewAccount';
-$wgHooks['UserMergeAccountFields'][] = 'CheckUserHooks::onUserMergeAccountFields';
+/** Shortest CIDR limits that can be checked in any individual range check */
+$wgCheckUserCIDRLimit = [
+ 'IPv4' => 16,
+ 'IPv6' => 32,
+];
-# Occasional pruning of CU data
-$wgHooks['ArticleEditUpdatesDeleteFromRecentchanges'][] = 'CheckUserHooks::maybePruneIPData';
-
-$wgHooks['ParserTestTables'][] = 'CheckUserHooks::checkUserParserTestTables';
-$wgHooks['LoadExtensionSchemaUpdates'][] = 'CheckUserHooks::checkUserSchemaUpdates';
-$wgHooks['ContributionsToolLinks'][] = 'CheckUserHooks::checkUserContributionsLinks';
-
-# Take over autoblocking
-$wgHooks['PerformRetroactiveAutoblock'][] = 'CheckUserHooks::doRetroactiveAutoblock';
-
-$wgResourceModules['ext.checkUser'] = array(
- 'scripts' => 'modules/ext.checkuser.cidr.js',
- 'dependencies' => array( 'mediawiki.util' ), // IP stuff
- 'localBasePath' => dirname( __FILE__ ),
- 'remoteExtPath' => 'CheckUser',
-);
-
-// Set up the new special page
-$wgSpecialPages['CheckUser'] = 'CheckUser';
-$wgSpecialPages['CheckUserLog'] = 'SpecialCheckUserLog';
-
-$wgAutoloadClasses['CheckUser'] = $dir . 'specials/SpecialCheckUser.php';
-$wgAutoloadClasses['CheckUserHooks'] = $dir . 'CheckUser.hooks.php';
-$wgAutoloadClasses['CheckUserLogPager'] = $dir . 'CheckUserLogPager.php';
-$wgAutoloadClasses['SpecialCheckUserLog'] = $dir . 'specials/SpecialCheckUserLog.php';
-$wgAutoloadClasses['CheckUserEncryptedData'] = $dir . 'CheckUserEncryptedData.php';
+/**
+ * Public key to encrypt private data that may need to be read later
+ * Generate a public key with something like:
+ * `openssl genrsa -out cu.key 2048; openssl rsa -in cu.key -pubout > cu.pub`
+ * and paste the contents of cu.pub here
+ */
+$wgCUPublicKey = '';
-// API modules
-$wgAutoloadClasses['ApiQueryCheckUser'] = $dir . 'api/ApiQueryCheckUser.php';
-$wgAPIListModules['checkuser'] = 'ApiQueryCheckUser';
-$wgAutoloadClasses['ApiQueryCheckUserLog'] = $dir . 'api/ApiQueryCheckUserLog.php';
-$wgAPIListModules['checkuserlog'] = 'ApiQueryCheckUserLog';
+/**
+ * This can be used to add a link to Special:MultiLock by CentralAuth
+ * to the Special:CheckUser's mass block form. This requires CentralAuth
+ * extension to be installed on the wiki.
+ * To enable this, set this to an array with a central wiki's database name
+ * and an array with the name(s) of the global group(s) to add the link for.
+ * Example:
+ * $wgCheckUserCAMultiLock = array(
+ * 'centralDB' => 'metawiki',
+ * 'groups' => array( 'steward' )
+ * );
+ */
+$wgCheckUserCAMultiLock = false;
diff --git a/CheckUser/CheckUserEncryptedData.php b/CheckUser/CheckUserEncryptedData.php
index 64332561..eede1d6d 100644
--- a/CheckUser/CheckUserEncryptedData.php
+++ b/CheckUser/CheckUserEncryptedData.php
@@ -2,7 +2,7 @@
class CheckUserEncryptedData {
- //The data symmetrically encrypted with a random key
+ // The data symmetrically encrypted with a random key
public $encString;
// Symmetric key, encrypted with the public key
@@ -19,8 +19,9 @@ class CheckUserEncryptedData {
/**
* Create an EncryptedData object from
*
- * @param $data Mixed: data/object to be encryted
- * @param $publicKey: public key for encryption
+ * @param mixed $data Data/object to be encryted
+ * @param string $publicKey Public key for encryption
+ * @param string $algorithmName
*/
public function __construct( $data, $publicKey, $algorithmName = 'rc4' ) {
$this->keyHash = crc32( $publicKey );
@@ -31,8 +32,9 @@ class CheckUserEncryptedData {
/**
* Decrypt the text in this object
*
- * @param $privateKey String with ascii-armored block, or the return of openssl_get_privatekey
- * @return String plaintext
+ * @param string $privateKey String with ascii-armored block,
+ * or the return of openssl_get_privatekey
+ * @return string plaintext
*/
public function getPlaintext( $privateKey ) {
$result = openssl_open(
@@ -53,12 +55,12 @@ class CheckUserEncryptedData {
/**
* Encrypt data with a public key
*
- * @param $data String
- * @param $publicKey String with ascii-armored block, or the return of openssl_get_publickey
- * @return String plaintext
+ * @param string $data
+ * @param string $publicKey String with ascii-armored block,
+ * or the return of openssl_get_publickey
*/
private function encryptData( $data, $publicKey ) {
- openssl_seal( $data, $encryptedString, $envelopeKeys, array( $publicKey ), $this->algName );
+ openssl_seal( $data, $encryptedString, $envelopeKeys, [ $publicKey ], $this->algName );
$this->encString = $encryptedString;
$this->envKeys = $envelopeKeys[0];
}
diff --git a/CheckUser/CheckUserLogPager.php b/CheckUser/CheckUserLogPager.php
index c2e02da0..298733ac 100644
--- a/CheckUser/CheckUserLogPager.php
+++ b/CheckUser/CheckUserLogPager.php
@@ -1,23 +1,23 @@
<?php
class CheckUserLogPager extends ReverseChronologicalPager {
- public $searchConds, $specialPage, $y, $m;
-
- function __construct( $specialPage, $searchConds, $y, $m ) {
- parent::__construct();
+ /**
+ * @var array $searchConds
+ */
+ protected $searchConds;
- $this->getDateCond( $y, $m );
- $this->searchConds = $searchConds ? $searchConds : array();
- $this->specialPage = $specialPage;
+ /**
+ * @param IContextSource $context
+ * @param array $conds Should include 'queryConds', 'year', and 'month' keys
+ */
+ public function __construct( IContextSource $context, array $conds ) {
+ parent::__construct( $context );
+ $this->searchConds = $conds['queryConds'];
+ // getDateCond() actually *sets* the timestamp offset..
+ $this->getDateCond( $conds['year'], $conds['month'] );
}
function formatRow( $row ) {
- if ( $row->cul_reason === '' ) {
- $comment = '';
- } else {
- $comment = Linker::commentBlock( $row->cul_reason );
- }
-
$user = Linker::userLink( $row->cul_user, $row->user_name );
if ( $row->cul_type == 'userips' || $row->cul_type == 'useredits' ) {
@@ -28,17 +28,19 @@ class CheckUserLogPager extends ReverseChronologicalPager {
}
// Give grep a chance to find the usages:
- // checkuser-log-userips, checkuser-log-ipedits, checkuser-log-ipusers,
- // checkuser-log-ipedits-xff, checkuser-log-ipusers-xff, checkuser-log-useredits
+ // checkuser-log-entry-userips, checkuser-log-entry-ipedits,
+ // checkuser-log-entry-ipusers, checkuser-log-entry-ipedits-xff
+ // checkuser-log-entry-ipusers-xff, checkuser-log-entry-useredits
return '<li>' .
- $this->getLanguage()->timeanddate( wfTimestamp( TS_MW, $row->cul_timestamp ), true ) .
- $this->msg( 'comma-separator' )->text() .
$this->msg(
- 'checkuser-log-' . $row->cul_type,
+ 'checkuser-log-entry-' . $row->cul_type,
$user,
- $target
+ $target,
+ $this->getLanguage()->timeanddate( wfTimestamp( TS_MW, $row->cul_timestamp ), true ),
+ $this->getLanguage()->date( wfTimestamp( TS_MW, $row->cul_timestamp ), true ),
+ $this->getLanguage()->time( wfTimestamp( TS_MW, $row->cul_timestamp ), true )
)->text() .
- $comment .
+ Linker::commentBlock( $row->cul_reason ) .
'</li>';
}
@@ -72,12 +74,11 @@ class CheckUserLogPager extends ReverseChronologicalPager {
}
function getQueryInfo() {
- $this->searchConds[] = 'user_id = cul_user';
- return array(
- 'tables' => array( 'cu_log', 'user' ),
+ return [
+ 'tables' => [ 'cu_log', 'user' ],
'fields' => $this->selectFields(),
- 'conds' => $this->searchConds
- );
+ 'conds' => array_merge( $this->searchConds, [ 'user_id = cul_user' ] )
+ ];
}
function getIndexField() {
@@ -85,9 +86,32 @@ class CheckUserLogPager extends ReverseChronologicalPager {
}
function selectFields() {
- return array(
+ return [
'cul_id', 'cul_timestamp', 'cul_user', 'cul_reason', 'cul_type',
'cul_target_id', 'cul_target_text', 'user_name'
- );
+ ];
+ }
+
+ /**
+ * Do a batch query for links' existence and add it to LinkCache
+ *
+ * @param ResultWrapper $result
+ */
+ protected function preprocessResults( $result ) {
+ if ( $this->getNumRows() === 0 ) {
+ return;
+ }
+
+ $lb = new LinkBatch;
+ $lb->setCaller( __METHOD__ );
+ foreach ( $result as $row ) {
+ $lb->add( NS_USER, $row->user_name ); // Performer
+ if ( $row->cul_type == 'userips' || $row->cul_type == 'useredits' ) {
+ $lb->add( NS_USER, $row->cul_target_text );
+ $lb->add( NS_USER_TALK, $row->cul_target_text );
+ }
+ }
+ $lb->execute();
+ $result->seek( 0 );
}
}
diff --git a/CheckUser/Gruntfile.js b/CheckUser/Gruntfile.js
index c3be0122..093e3680 100644
--- a/CheckUser/Gruntfile.js
+++ b/CheckUser/Gruntfile.js
@@ -4,22 +4,30 @@
* @package CheckUser
*/
-/*jshint node:true */
+/* eslint-env node */
module.exports = function ( grunt ) {
- grunt.loadNpmTasks( 'grunt-banana-checker' );
+ var conf = grunt.file.readJSON( 'extension.json' );
+ grunt.loadNpmTasks( 'grunt-eslint' );
grunt.loadNpmTasks( 'grunt-jsonlint' );
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
- var conf = grunt.file.readJSON( 'extension.json' );
grunt.initConfig( {
+ eslint: {
+ all: [
+ '*.js',
+ 'modules/**/*.js'
+ ]
+ },
banana: conf.MessagesDirs,
jsonlint: {
all: [
+ '*.json',
'**/*.json',
'!node_modules/**'
]
}
} );
- grunt.registerTask( 'test', [ 'jsonlint', 'banana' ] );
+ grunt.registerTask( 'test', [ 'eslint', 'jsonlint', 'banana' ] );
grunt.registerTask( 'default', 'test' );
};
diff --git a/CheckUser/api/ApiQueryCheckUser.php b/CheckUser/api/ApiQueryCheckUser.php
index 9624a821..de9d53f1 100644
--- a/CheckUser/api/ApiQueryCheckUser.php
+++ b/CheckUser/api/ApiQueryCheckUser.php
@@ -11,25 +11,40 @@ class ApiQueryCheckUser extends ApiQueryBase {
public function execute() {
global $wgCheckUserForceSummary;
- $db = $this->getDB( DB_SLAVE );
+ $db = $this->getDB();
$params = $this->extractRequestParams();
- list( $request, $target, $reason, $timecond, $limit, $xff ) = array(
+ list( $request, $target, $reason, $timecond, $limit, $xff ) = [
$params['request'], $params['target'], $params['reason'],
- $params['timecond'], $params['limit'], $params['xff'] );
-
- if ( !$this->getUser()->isAllowed( 'checkuser' ) ) {
- $this->dieUsage( 'You need the checkuser right', 'permissionerror' );
+ $params['timecond'], $params['limit'], $params['xff'] ];
+
+ if ( is_callable( [ $this, 'checkUserRightsAny' ] ) ) {
+ $this->checkUserRightsAny( 'checkuser' );
+ } else {
+ if ( !$this->getUser()->isAllowed( 'checkuser' ) ) {
+ $this->dieUsage( 'You need the checkuser right', 'permissionerror' );
+ }
}
if ( $wgCheckUserForceSummary && is_null( $reason ) ) {
- $this->dieUsage( 'You must define reason for check', 'missingdata' );
+ if ( is_callable( [ $this, 'dieWithError' ] ) ) {
+ $this->dieWithError( 'apierror-checkuser-missingsummary', 'missingdata' );
+ } else {
+ $this->dieUsage( 'You must define reason for check', 'missingdata' );
+ }
}
$reason = $this->msg( 'checkuser-reason-api', $reason )->inContentLanguage()->text();
$timeCutoff = strtotime( $timecond ); // absolute time
if ( !$timeCutoff ) {
- $this->dieUsage( 'You need use correct time limit (like "2 weeks")', 'invalidtime' );
+ if ( is_callable( [ $this, 'dieWithError' ] ) ) {
+ $this->dieWithError( 'apierror-checkuser-timelimit', 'invalidtime' );
+ } else {
+ $this->dieUsage(
+ 'You need use correct time limit (like "-2 weeks" or "2 weeks ago")',
+ 'invalidtime'
+ );
+ }
}
$this->addTables( 'cu_changes' );
@@ -41,15 +56,21 @@ class ApiQueryCheckUser extends ApiQueryBase {
case 'userips':
$user_id = User::idFromName( $target );
if ( !$user_id ) {
- $this->dieUsage( 'Target user does not exist', 'nosuchuser' );
+ if ( is_callable( [ $this, 'dieWithError' ] ) ) {
+ $this->dieWithError(
+ [ 'nosuchusershort', wfEscapeWikiText( $target ) ], 'nosuchuser'
+ );
+ } else {
+ $this->dieUsage( 'Target user does not exist', 'nosuchuser' );
+ }
}
- $this->addFields( array( 'cuc_timestamp', 'cuc_ip', 'cuc_xff' ) );
+ $this->addFields( [ 'cuc_timestamp', 'cuc_ip', 'cuc_xff' ] );
$this->addWhereFld( 'cuc_user_text', $target );
$res = $this->select( __METHOD__ );
$result = $this->getResult();
- $ips = array();
+ $ips = [];
foreach ( $res as $row ) {
$timestamp = wfTimestamp( TS_ISO_8601, $row->cuc_timestamp );
$ip = strval( $row->cuc_ip );
@@ -63,65 +84,70 @@ class ApiQueryCheckUser extends ApiQueryBase {
}
}
- $resultIPs = array();
+ $resultIPs = [];
foreach ( $ips as $ip => $data ) {
$data['address'] = $ip;
$resultIPs[] = $data;
}
CheckUser::addLogEntry( 'userips', 'user', $target, $reason, $user_id );
- $result->addValue( array(
- 'query', $this->getModuleName() ), 'userips', $resultIPs );
- if ( defined( 'ApiResult::META_CONTENT' ) ) {
- $result->addIndexedTagName( array(
- 'query', $this->getModuleName(), 'userips' ), 'ip' );
- } else {
- $result->setIndexedTagName_internal( array(
- 'query', $this->getModuleName(), 'userips' ), 'ip' );
- }
+ $result->addValue( [
+ 'query', $this->getModuleName() ], 'userips', $resultIPs );
+ $result->addIndexedTagName( [
+ 'query', $this->getModuleName(), 'userips' ], 'ip' );
break;
case 'edits':
if ( IP::isIPAddress( $target ) ) {
$cond = CheckUser::getIpConds( $db, $target, isset( $xff ) );
if ( !$cond ) {
- $this->dieUsage( 'IP or range is invalid', 'invalidip' );
+ if ( is_callable( [ $this, 'dieWithError' ] ) ) {
+ $this->dieWithError( 'apierror-badip', 'invalidip' );
+ } else {
+ $this->dieUsage( 'IP or range is invalid', 'invalidip' );
+ }
}
$this->addWhere( $cond );
- $log_type = array();
+ $log_type = [];
if ( isset( $xff ) ) {
$log_type[] = 'ipedits-xff';
} else {
$log_type[] = 'ipedits';
}
- $log_type[] = 'ip' ;
+ $log_type[] = 'ip';
} else {
$user_id = User::idFromName( $target );
if ( !$user_id ) {
- $this->dieUsage( 'Target user does not exist', 'nosuchuser' );
+ if ( is_callable( [ $this, 'dieWithError' ] ) ) {
+ $this->dieWithError(
+ [ 'nosuchusershort', wfEscapeWikiText( $target ) ], 'nosuchuser'
+ );
+ } else {
+ $this->dieUsage( 'Target user does not exist', 'nosuchuser' );
+ }
}
$this->addWhereFld( 'cuc_user_text', $target );
- $log_type = array( 'useredits', 'user' );
+ $log_type = [ 'useredits', 'user' ];
}
- $this->addFields( array(
+ $this->addFields( [
'cuc_namespace', 'cuc_title', 'cuc_user_text', 'cuc_actiontext',
'cuc_comment', 'cuc_minor', 'cuc_timestamp', 'cuc_ip', 'cuc_xff', 'cuc_agent'
- ) );
+ ] );
$res = $this->select( __METHOD__ );
$result = $this->getResult();
- $edits = array();
+ $edits = [];
foreach ( $res as $row ) {
- $edit = array(
+ $edit = [
'timestamp' => wfTimestamp( TS_ISO_8601, $row->cuc_timestamp ),
'ns' => intval( $row->cuc_namespace ),
'title' => $row->cuc_title,
'user' => $row->cuc_user_text,
'ip' => $row->cuc_ip,
'agent' => $row->cuc_agent,
- );
+ ];
if ( $row->cuc_actiontext ) {
$edit['summary'] = $row->cuc_actiontext;
} elseif ( $row->cuc_comment ) {
@@ -137,20 +163,15 @@ class ApiQueryCheckUser extends ApiQueryBase {
}
CheckUser::addLogEntry( $log_type[0], $log_type[1],
- $target, $reason, isset($user_id) ? $user_id : '0' );
- $result->addValue( array(
- 'query', $this->getModuleName() ), 'edits', $edits );
- if ( defined( 'ApiResult::META_CONTENT' ) ) {
- $result->addIndexedTagName( array(
- 'query', $this->getModuleName(), 'edits' ), 'action' );
- } else {
- $result->setIndexedTagName_internal( array(
- 'query', $this->getModuleName(), 'edits' ), 'action' );
- }
+ $target, $reason, isset( $user_id ) ? $user_id : '0' );
+ $result->addValue( [
+ 'query', $this->getModuleName() ], 'edits', $edits );
+ $result->addIndexedTagName( [
+ 'query', $this->getModuleName(), 'edits' ], 'action' );
break;
case 'ipusers':
- if ( IP::isIPAddress( $target ) ) {
+ if ( IP::isIPAddress( $target ) ) {
$cond = CheckUser::getIpConds( $db, $target, isset( $xff ) );
$this->addWhere( $cond );
$log_type = 'ipusers';
@@ -158,16 +179,20 @@ class ApiQueryCheckUser extends ApiQueryBase {
$log_type .= '-xff';
}
} else {
- $this->dieUsage( 'IP or range is invalid', 'invalidip' );
+ if ( is_callable( [ $this, 'dieWithError' ] ) ) {
+ $this->dieWithError( 'apierror-badip', 'invalidip' );
+ } else {
+ $this->dieUsage( 'IP or range is invalid', 'invalidip' );
+ }
}
- $this->addFields( array(
- 'cuc_user_text', 'cuc_timestamp', 'cuc_ip', 'cuc_agent' ) );
+ $this->addFields( [
+ 'cuc_user_text', 'cuc_timestamp', 'cuc_ip', 'cuc_agent' ] );
$res = $this->select( __METHOD__ );
$result = $this->getResult();
- $users = array();
+ $users = [];
foreach ( $res as $row ) {
$user = $row->cuc_user_text;
$ip = $row->cuc_ip;
@@ -190,7 +215,7 @@ class ApiQueryCheckUser extends ApiQueryBase {
}
}
- $resultUsers = array();
+ $resultUsers = [];
foreach ( $users as $userName => $userData ) {
$userData['name'] = $userName;
$result->setIndexedTagName( $userData['ips'], 'ip' );
@@ -200,19 +225,18 @@ class ApiQueryCheckUser extends ApiQueryBase {
}
CheckUser::addLogEntry( $log_type, 'ip', $target, $reason );
- $result->addValue( array(
- 'query', $this->getModuleName() ), 'ipusers', $resultUsers );
- if ( defined( 'ApiResult::META_CONTENT' ) ) {
- $result->addIndexedTagName( array(
- 'query', $this->getModuleName(), 'ipusers' ), 'user' );
- } else {
- $result->setIndexedTagName_internal( array(
- 'query', $this->getModuleName(), 'ipusers' ), 'user' );
- }
+ $result->addValue( [
+ 'query', $this->getModuleName() ], 'ipusers', $resultUsers );
+ $result->addIndexedTagName( [
+ 'query', $this->getModuleName(), 'ipusers' ], 'user' );
break;
default:
- $this->dieUsage( 'Invalid request mode', 'invalidmode' );
+ if ( is_callable( [ $this, 'dieWithError' ] ) ) {
+ $this->dieWithError( 'apierror-checkuser-invalidmode', 'invalidmode' );
+ } else {
+ $this->dieUsage( 'Invalid request mode', 'invalidmode' );
+ }
}
}
@@ -225,93 +249,50 @@ class ApiQueryCheckUser extends ApiQueryBase {
}
public function getAllowedParams() {
- return array(
- 'request' => array(
+ return [
+ 'request' => [
ApiBase::PARAM_REQUIRED => true,
- ApiBase::PARAM_TYPE => array(
+ ApiBase::PARAM_TYPE => [
'userips',
'edits',
'ipusers',
- )
- ),
- 'target' => array(
+ ]
+ ],
+ 'target' => [
ApiBase::PARAM_REQUIRED => true,
- ),
+ ],
'reason' => null,
- 'limit' => array(
+ 'limit' => [
ApiBase::PARAM_DFLT => 1000,
ApiBase::PARAM_TYPE => 'limit',
ApiBase::PARAM_MIN => 1,
ApiBase::PARAM_MAX => 500,
ApiBase::PARAM_MAX2 => 5000,
- ),
- 'timecond' => array(
+ ],
+ 'timecond' => [
ApiBase::PARAM_DFLT => '-2 weeks'
- ),
+ ],
'xff' => null,
- 'token' => array(
- ApiBase::PARAM_TYPE => 'string',
- ApiBase::PARAM_REQUIRED => true,
- ),
- );
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getParamDescription() {
- return array(
- 'request' => array(
- 'Type of CheckUser request',
- ' userips - get IP of target user',
- ' edits - get changes from target IP or range',
- ' ipusers - get users from target IP or range',
- ),
- 'target' => "Username or IP-address/range to perform check",
- 'reason' => 'Reason to check',
- 'limit' => 'Limit of rows',
- 'timecond' => 'Time limit of user data (like "2 weeks")',
- 'xff' => 'Use xff data instead of IP',
- );
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getDescription() {
- return 'Allows check which IPs are used by a given username and which usernames are used by a given IP';
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getExamples() {
- return array(
- 'api.php?action=query&list=checkuser&curequest=userips&cutarget=Jimbo_Wales',
- 'api.php?action=query&list=checkuser&curequest=edits&cutarget=127.0.0.1/16&xff=1&cureason=Some_check',
- );
+ ];
}
/**
* @see ApiBase::getExamplesMessages()
+ * @return array
*/
protected function getExamplesMessages() {
- return array(
+ return [
'action=query&list=checkuser&curequest=userips&cutarget=Jimbo_Wales'
=> 'apihelp-query+checkuser-example-1',
'action=query&list=checkuser&curequest=edits&cutarget=127.0.0.1/16&xff=1&cureason=Some_check'
=> 'apihelp-query+checkuser-example-2',
- );
+ ];
}
public function getHelpUrls() {
return 'https://www.mediawiki.org/wiki/Extension:CheckUser#API';
}
- public function getTokenSalt() {
- return '';
- }
-
public function needsToken() {
return 'csrf';
}
diff --git a/CheckUser/api/ApiQueryCheckUserLog.php b/CheckUser/api/ApiQueryCheckUserLog.php
index a3557ce6..9b511d4c 100644
--- a/CheckUser/api/ApiQueryCheckUserLog.php
+++ b/CheckUser/api/ApiQueryCheckUserLog.php
@@ -11,8 +11,12 @@ class ApiQueryCheckUserLog extends ApiQueryBase {
public function execute() {
$params = $this->extractRequestParams();
- if ( !$this->getUser()->isAllowed( 'checkuser-log' ) ) {
- $this->dieUsage( 'You need the checkuser-log right', 'permissionerror' );
+ if ( is_callable( [ $this, 'checkUserRightsAny' ] ) ) {
+ $this->checkUserRightsAny( 'checkuser-log' );
+ } else {
+ if ( !$this->getUser()->isAllowed( 'checkuser-log' ) ) {
+ $this->dieUsage( 'You need the checkuser-log right', 'permissionerror' );
+ }
}
$limit = $params['limit'];
@@ -22,12 +26,12 @@ class ApiQueryCheckUserLog extends ApiQueryBase {
$this->addTables( 'cu_log' );
$this->addOption( 'LIMIT', $limit + 1 );
$this->addTimestampWhereRange( 'cul_timestamp', $dir, $params['from'], $params['to'] );
- $this->addFields( array(
- 'cul_id', 'cul_timestamp', 'cul_user_text', 'cul_reason', 'cul_type', 'cul_target_text' ) );
+ $this->addFields( [
+ 'cul_id', 'cul_timestamp', 'cul_user_text', 'cul_reason', 'cul_type', 'cul_target_text' ] );
// Order by both timestamp and id
$order = ( $dir === 'newer' ? '' : ' DESC' );
- $this->addOption( 'ORDER BY', array( 'cul_timestamp' . $order, 'cul_id' . $order ) );
+ $this->addOption( 'ORDER BY', [ 'cul_timestamp' . $order, 'cul_id' . $order ] );
if ( isset( $params['user'] ) ) {
$this->addWhereFld( 'cul_user_text', $params['user'] );
@@ -39,14 +43,13 @@ class ApiQueryCheckUserLog extends ApiQueryBase {
if ( $continue !== null ) {
$cont = explode( '|', $continue );
$op = $dir === 'older' ? '<' : '>';
- if ( count( $cont ) !== 2 || wfTimestamp( TS_UNIX, $cont[0] ) === false ) {
- $this->dieUsage( 'Invalid continue param. You should pass the ' .
- 'original value returned by the previous query', '_badcontinue' );
- }
+ $this->dieContinueUsageIf( count( $cont ) !== 2 );
+ $this->dieContinueUsageIf( wfTimestamp( TS_UNIX, $cont[0] ) === false );
$db = $this->getDB();
$timestamp = $db->addQuotes( $db->timestamp( $cont[0] ) );
$id = intval( $cont[1] );
+ $this->dieContinueUsageIf( $cont[1] !== (string)$id );
$this->addWhere(
"cul_timestamp $op $timestamp OR " .
@@ -67,106 +70,65 @@ class ApiQueryCheckUserLog extends ApiQueryBase {
$this->setContinueEnumParameter( 'continue', $makeContinue( $row ) );
break;
}
- $log = array(
+ $log = [
'timestamp' => wfTimestamp( TS_ISO_8601, $row->cul_timestamp ),
'checkuser' => $row->cul_user_text,
'type' => $row->cul_type,
'reason' => $row->cul_reason,
'target' => $row->cul_target_text,
- );
- $fit = $result->addValue( array( 'query', $this->getModuleName(), 'entries' ), null, $log );
+ ];
+ $fit = $result->addValue( [ 'query', $this->getModuleName(), 'entries' ], null, $log );
if ( !$fit ) {
$this->setContinueEnumParameter( 'continue', $makeContinue( $row ) );
break;
}
}
- if ( defined( 'ApiResult::META_CONTENT' ) ) {
- $result->addIndexedTagName( array( 'query', $this->getModuleName(), 'entries' ), 'entry' );
- } else {
- $result->setIndexedTagName_internal(
- array( 'query', $this->getModuleName(), 'entries' ), 'entry' );
- }
+ $result->addIndexedTagName( [ 'query', $this->getModuleName(), 'entries' ], 'entry' );
}
public function getAllowedParams() {
- return array(
+ return [
'user' => null,
'target' => null,
- 'limit' => array(
+ 'limit' => [
ApiBase::PARAM_DFLT => 10,
ApiBase::PARAM_TYPE => 'limit',
ApiBase::PARAM_MIN => 1,
ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2,
- ),
- 'dir' => array(
+ ],
+ 'dir' => [
ApiBase::PARAM_DFLT => 'older',
- ApiBase::PARAM_TYPE => array(
+ ApiBase::PARAM_TYPE => [
'newer',
'older'
- ),
- /** @todo Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly */
- constant( 'ApiBase::PARAM_HELP_MSG' ) ?: '' => 'api-help-param-direction',
- ),
- 'from' => array(
+ ],
+ ApiBase::PARAM_HELP_MSG => 'api-help-param-direction',
+ ],
+ 'from' => [
ApiBase::PARAM_TYPE => 'timestamp',
- ),
- 'to' => array(
+ ],
+ 'to' => [
ApiBase::PARAM_TYPE => 'timestamp',
- ),
- 'continue' => array(
- /** @todo Once support for MediaWiki < 1.25 is dropped, just use ApiBase::PARAM_HELP_MSG directly */
- constant( 'ApiBase::PARAM_HELP_MSG' ) ?: '' => 'api-help-param-continue',
- ),
- );
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getParamDescription() {
- $p = $this->getModulePrefix();
- return array(
- 'user' => 'Username of CheckUser',
- 'target' => "Checked user or IP-address/range",
- 'limit' => 'Limit of rows',
- 'dir' => array( "In which direction to enumerate}",
- " newer - List oldest first. Note: {$p}from has to be before {$p}to.",
- " older - List newest first (default). Note: {$p}from has to be later than {$p}to." ),
- 'from' => 'The timestamp to start enumerating from',
- 'to' => 'The timestamp to end enumerating',
- 'continue' => 'When more results are available, use this to continue',
- );
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getDescription() {
- return 'Allows get entries of CheckUser log';
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getExamples() {
- return array(
- 'api.php?action=query&list=checkuserlog&culuser=WikiSysop&cullimit=25',
- 'api.php?action=query&list=checkuserlog&cultarget=127.0.0.1&culfrom=20111015230000',
- );
+ ],
+ 'continue' => [
+ ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
+ ],
+ ];
}
/**
* @see ApiBase::getExamplesMessages()
+ * @return array
*/
protected function getExamplesMessages() {
- return array(
+ return [
'action=query&list=checkuserlog&culuser=Example&cullimit=25'
=> 'apihelp-query+checkuserlog-example-1',
'action=query&list=checkuserlog&cultarget=192.0.2.0/24&culfrom=2011-10-15T23:00:00Z'
=> 'apihelp-query+checkuserlog-example-2',
- );
+ ];
}
public function getHelpUrls() {
diff --git a/CheckUser/composer.json b/CheckUser/composer.json
new file mode 100644
index 00000000..802913cb
--- /dev/null
+++ b/CheckUser/composer.json
@@ -0,0 +1,14 @@
+{
+ "require-dev": {
+ "jakub-onderka/php-parallel-lint": "0.9.2",
+ "mediawiki/mediawiki-codesniffer": "0.12.0",
+ "jakub-onderka/php-console-highlighter": "0.3.2"
+ },
+ "scripts": {
+ "test": [
+ "parallel-lint . --exclude vendor --exclude node_modules",
+ "phpcs -p -s"
+ ],
+ "fix": "phpcbf"
+ }
+}
diff --git a/CheckUser/cu_log_import.inc b/CheckUser/cu_log_import.inc
deleted file mode 100644
index 60efbc9d..00000000
--- a/CheckUser/cu_log_import.inc
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-function import_cu_log_line( $line ) {
- $rxTimestamp = '(?P<timestamp>\d+:\d+, \d+ \w+ \d+)';
- $rxUser = '(?P<user>.*?)';
- $rxTarget = '(?P<target>.*?)';
- $rxWiki = '(?P<wiki>[^)]*?)';
- $rxReason = '(?: \("(?P<reason>.*)"\))?';
-
- // Strip nulls due to NFS write collisions
- $line = str_replace( "\0", "", $line );
-
- $regexes = array(
- 'ipedits-xff' => "!^<li>$rxTimestamp, $rxUser got edits for XFF $rxTarget on $rxWiki$rxReason</li>!",
- 'ipedits' => "!^<li>$rxTimestamp, $rxUser got edits for" ." $rxTarget on $rxWiki$rxReason</li>!",
- 'ipusers-xff' => "!^<li>$rxTimestamp, $rxUser got users for XFF $rxTarget on $rxWiki$rxReason</li>!",
- 'ipusers' => "!^<li>$rxTimestamp, $rxUser got users for" ." $rxTarget on $rxWiki$rxReason</li>!",
- 'userips' => "!^<li>$rxTimestamp, $rxUser got IPs for". " $rxTarget on $rxWiki$rxReason</li>!" );
-
- foreach ( $regexes as $type => $regex ) {
- $m = false;
- if ( preg_match( $regex, $line, $m ) ) {
-
- $data = array(
- 'timestamp' => strtotime( $m['timestamp'] ),
- 'user' => $m['user'],
- 'reason' => isset( $m['reason'] ) ? $m['reason'] : '',
- 'type' => $type,
- 'wiki' => $m['wiki'],
- 'target' => $m['target'] );
-
- return $data;
- }
- }
-}
-
-function import_cu_log( $db, $log ) {
- global $wgDBname;
-
- $file = fopen( $log, 'r' );
-
- $matched = 0;
- $unmatched = 0;
-
- while ( false !== ( $line = fgets( $file ) ) ) {
- $data = import_cu_log_line( $line );
- if( $data ) {
- if ( $data['wiki'] != wfWikiID() && $data['wiki'] != $wgDBname ) {
- $unmatched++;
- continue;
- }
-
- // Local wiki lookups...
- $user = User::newFromName( $data['user'] );
-
- list( $start, $end ) = IP::parseRange( $data['target'] );
- if ( $start === false ) {
- $targetUser = User::newFromName( $data['target'] );
- $targetID = $targetUser ? $targetUser->getID() : 0;
- $start = $end = $hex = '';
- } else {
- $hex = $start;
- if ( $start == $end ) {
- $start = $end = '';
- }
- $targetID = 0;
- }
-
- if( $db ) {
- $fields = array(
- 'cul_id' => $db->nextSequenceValue( 'cu_log_cul_id_seq' ),
- 'cul_timestamp' => $db->timestamp( $data['timestamp'] ),
- 'cul_user' => $user->getID(),
- 'cul_user_text' => $user->getName(),
- 'cul_reason' => $data['reason'],
- 'cul_type' => $data['type'],
- 'cul_target_id' => $targetID,
- 'cul_target_text' => $data['target'],
- 'cul_target_hex' => $hex,
- 'cul_range_start' => $start,
- 'cul_range_end' => $end );
-
- $db->insert( 'cu_log', $fields, __METHOD__ );
- }
-
- $matched++;
- }
- $unmatched ++;
- }
- echo "...cu_log table populated: $matched matched rows, $unmatched discarded rows\n";
-}
diff --git a/CheckUser/extension.json b/CheckUser/extension.json
index 9acf58fe..0803a145 100644
--- a/CheckUser/extension.json
+++ b/CheckUser/extension.json
@@ -9,19 +9,23 @@
"descriptionmsg": "checkuser-desc",
"license-name": "GPL-2.0+",
"type": "specialpage",
+ "requires": {
+ "MediaWiki": ">= 1.30.0"
+ },
"ExtensionMessagesFiles": {
"CheckUserAliases": "CheckUser.alias.php"
},
"config": {
+ "@doc": "see CheckUser.php",
"CheckUserCIDRLimit": {
"IPv4": 16,
- "IPv6": 48
+ "IPv6": 32
},
"CheckUserMaxBlocks": 200,
- "CheckUserLog": "/home/wikipedia/logs/checkuser.log",
"CUPublicKey": "",
"CUDMaxAge": 7776000,
- "CheckUserForceSummary": false
+ "CheckUserForceSummary": false,
+ "CheckUserCAMultiLock": false
},
"APIListModules": {
"checkuser": "ApiQueryCheckUser",
@@ -37,15 +41,15 @@
"User::mailPasswordInternal": [
"CheckUserHooks::updateCUPasswordResetData"
],
- "AuthPluginAutoCreate": [
- "CheckUserHooks::onAuthPluginAutoCreate"
- ],
- "AddNewAccount": [
- "CheckUserHooks::onAddNewAccount"
+ "LocalUserCreated": [
+ "CheckUserHooks::onLocalUserCreated"
],
"UserMergeAccountFields": [
"CheckUserHooks::onUserMergeAccountFields"
],
+ "RenameUserSQL": [
+ "CheckUserHooks::onRenameUserSQL"
+ ],
"ArticleEditUpdatesDeleteFromRecentchanges": [
"CheckUserHooks::maybePruneIPData"
],
@@ -53,7 +57,7 @@
"CheckUserHooks::checkUserParserTestTables"
],
"LoadExtensionSchemaUpdates": [
- "CheckUserHooks::checkUserSchemaUpdates"
+ "CheckUserHooks::onLoadExtensionSchemaUpdates"
],
"ContributionsToolLinks": [
"CheckUserHooks::checkUserContributionsLinks"
@@ -73,6 +77,15 @@
"dependencies": [
"mediawiki.util"
]
+ },
+ "ext.checkUser.caMultiLock": {
+ "scripts": "modules/ext.checkuser.caMultiLock.js",
+ "dependencies": [
+ "mediawiki.util"
+ ],
+ "messages": [
+ "checkuser-centralauth-multilock"
+ ]
}
},
"ResourceFileModulePaths": {
@@ -100,7 +113,8 @@
"SpecialCheckUserLog": "specials/SpecialCheckUserLog.php",
"CheckUserEncryptedData": "CheckUserEncryptedData.php",
"ApiQueryCheckUser": "api/ApiQueryCheckUser.php",
- "ApiQueryCheckUserLog": "api/ApiQueryCheckUserLog.php"
+ "ApiQueryCheckUserLog": "api/ApiQueryCheckUserLog.php",
+ "PopulateCheckUserTable": "maintenance/populateCheckUserTable.php"
},
"manifest_version": 1
}
diff --git a/CheckUser/gitinfo.json b/CheckUser/gitinfo.json
new file mode 100644
index 00000000..7bbfcd6c
--- /dev/null
+++ b/CheckUser/gitinfo.json
@@ -0,0 +1 @@
+{"headSHA1": "7a43255c913fa5a2462a3b2504b63fb1526cec9a\n", "head": "7a43255c913fa5a2462a3b2504b63fb1526cec9a\n", "remoteURL": "https://gerrit.wikimedia.org/r/mediawiki/extensions/CheckUser", "branch": "7a43255c913fa5a2462a3b2504b63fb1526cec9a\n", "headCommitDate": "1505679596"} \ No newline at end of file
diff --git a/CheckUser/i18n/af.json b/CheckUser/i18n/af.json
index 7a17b048..ffe16278 100644
--- a/CheckUser/i18n/af.json
+++ b/CheckUser/i18n/af.json
@@ -66,12 +66,6 @@
"checkuser-ipeditcount": "~$1 van alle gebruikers",
"checkuser-log-return": "Terug na Check User belangrikste vorm",
"checkuser-limited": "'''Hierdie resultate is vir prestasieredes afgekap.'''",
- "checkuser-log-userips": "$1 het die IP-adresse deur $2 opgevra",
- "checkuser-log-ipedits": "$1 het die wysigings deur $2 opgevra",
- "checkuser-log-ipusers": "$1 het die gebruikers vir $2 opgevra",
- "checkuser-log-ipedits-xff": "$1 het die wysigings deur XFF $2 opgevra",
- "checkuser-log-ipusers-xff": "$1 het die gebruikers van XFF $2 opgevra",
- "checkuser-log-useredits": "$1 het die wysigings deur $2 aangevra",
"checkuser-autocreate-action": "is outomaties geskep",
"checkuser-create-action": "is geskep",
"checkuser-email-action": "het 'n e-pos aan gebruiker \"$1\" gestuur",
diff --git a/CheckUser/i18n/an.json b/CheckUser/i18n/an.json
index f6797acf..a9a7bb5a 100644
--- a/CheckUser/i18n/an.json
+++ b/CheckUser/i18n/an.json
@@ -36,10 +36,5 @@
"checkuser-search-initiator": "o encetador d'a consulta",
"checkuser-search-target": "obchectivo",
"checkuser-ipeditcount": "~$1 de totz os usuarios",
- "checkuser-log-return": "Tornar ta o formulario prencipal de CheckUser (Comprebación d'usuarios)",
- "checkuser-log-userips": "$1 ha consultato as adrezas IP de $2",
- "checkuser-log-ipedits": "$1 ha consultato as edicions de $2",
- "checkuser-log-ipusers": "$1 ha consultato os nombres d'usuario de $2",
- "checkuser-log-ipedits-xff": "$1 ha consultato as edicions d'o XFF $2",
- "checkuser-log-ipusers-xff": "$1 ha consultato os nombres d'usuario d'o XFF $2"
+ "checkuser-log-return": "Tornar ta o formulario prencipal de CheckUser (Comprebación d'usuarios)"
}
diff --git a/CheckUser/i18n/ar.json b/CheckUser/i18n/ar.json
index 9c924a7d..e0c9fc1d 100644
--- a/CheckUser/i18n/ar.json
+++ b/CheckUser/i18n/ar.json
@@ -6,10 +6,12 @@
"Ciphers",
"Meno25",
"Mido",
- "OsamaK"
+ "OsamaK",
+ "ديفيد",
+ "علاء"
]
},
- "checkuser-summary": "هذه الأداة تفحص أحدث التغييرات لاسترجاع الأيبيهات المستخدمة بواسطة مستخدم أو عرض بيانات التعديل/المستخدم لأيبي.\nالمستخدمون والتعديلات بواسطة أيبي عميل يمكن استرجاعها من خلال عناوين XFF عبر طرق الأيبي IP ب\"/xff\". IPv4 (CIDR $1-32) و IPv6 (CIDR $2-128) مدعومان.\n\tلا أكثر من 5000 تعديل سيتم عرضها لأسباب تتعلق بالأداء.\nاستخدم هذا بالتوافق مع السياسة.",
+ "checkuser-summary": ";ملاحظات\n* تفحص هذه الأداة أحدث التغييرات بهدف استرجاع عنوان الآي بي المُستخدم بواسطة مستخدم ما أو بهدف إظهار تعديلات/بيانات عنوان الآي بي.\n* المستخدمون والتعديلات التي تتم بواسطة عنوان آي بي العميل من الممكن استرجاعها من خلال رؤوس XFF ويتم ذلك من خلال إلحاق \"/xff\" في نهاية عنوان الآي بي. عناوين آي بي في4 (CIDR $1-32) وَآي بي في6 (CIDR $2-128) مدعومة.\n* لن يتم عرض أكثر من 5000 تعديل لأسباب تتعلق بالأداء.\n* استخدام هذه الأداة يتم وفقاً للسياسات.",
"checkuser-desc": "يمنح المستخدمين بالسماح المطلوب القدرة على فحص عناوين الأيبي لمستخدم ما ومعلومات أخرى",
"checkuser-logcase": "بحث السجل حساس لحالة الحروف.",
"checkuser": "تدقيق مستخدم",
@@ -25,13 +27,12 @@
"grouppage-checkuser": "{{ns:project}}:تدقيق مستخدم",
"checkuser-reason": "السبب:",
"checkuser-reason-api": "واجهة برمجة التطبيقات",
- "checkuser-showlog": "عرض السجل",
+ "checkuser-showlog": "التبديل إلى سجل تدقيق المستخدم",
"checkuser-query": "فحص أحدث التغييرات",
"checkuser-target": "عنوان الأيبي أو اسم المستخدم:",
"checkuser-users": "اعرض المستخدمين",
"checkuser-edits": "الحصول على التعديلات",
"checkuser-ips": "اعرض الأيبيهات",
- "checkuser-search": "بحث",
"checkuser-period": "المدة:",
"checkuser-week-1": "آخر أسبوع",
"checkuser-week-2": "آخر أسبوعين",
@@ -52,6 +53,8 @@
"checkuser-localonly": "غير موحد",
"checkuser-massblock": "امنع المستخدمين المختارين",
"checkuser-massblock-text": "الحسابات المختارة سيتم منعها لا نهائيا، مع تفعيل المنع التلقائي وتعطيل إنشاء الحسابات.\nعناوين الأيبي سيتم منعها لمدة 1 أسبوع لمستخدمي الأيبي فقط ومع تعطيل إنشاء الحسابات.",
+ "checkuser-blockemail": "امنع المستخدم من إرسال بريد إلكتروني",
+ "checkuser-blocktalk": "امنع هذا المستخدم من تعديل صفحة نقاشه ما دام ممنوعاً",
"checkuser-blocktag": "استبدل صفحات المستخدمين ب:",
"checkuser-blocktag-talk": "استبدل صفحات النقاش ب:",
"checkuser-massblock-commit": "منع المستخدمين المختارين",
@@ -63,19 +66,20 @@
"checkuser-accounts": "$1 {{PLURAL:$1|حساب|حساب}} جديد",
"checkuser-too-many": "نتائج كثيرة جدا (بناء على استعلام تقريبي)، من فضلك قلل CIDR.\nهذه هي الأيبيهات المستخدمة (5000 كحد أقصى، مرتبة بالعنوان):",
"checkuser-user-nonexistent": "المستخدم المحدد غير موجود.",
- "checkuser-search-form": "اعثر على مدخلات السجل حيث $1 هو $2",
+ "checkuser-search": "بحث في إدخالات سجل تدقيق المستخدم",
"checkuser-search-submit": "بحث",
"checkuser-search-initiator": "بادىء",
"checkuser-search-target": "هدف",
+ "checkuser-log-search-target": "الهدف:",
+ "checkuser-log-search-type": "البحث حسب:",
"checkuser-ipeditcount": "~$1 من كل المستخدمين",
- "checkuser-log-return": "غير إلى استمارة تدقيق المستخدم الرئيسية",
+ "checkuser-showmain": "غير إلى استمارة تدقيق المستخدم الرئيسية",
"checkuser-limited": "'''هذه النتائج تم اختصارها لأسباب تتعلق بالأداء.'''",
- "checkuser-log-userips": "$1 حصل على آيبيهات $2",
- "checkuser-log-ipedits": "$1 حصل على التعديلات ل $2",
- "checkuser-log-ipusers": "$1 حصل على مستخدمي $2",
- "checkuser-log-ipedits-xff": "$1 حصل على التعديلات للإكس إف إف $2",
- "checkuser-log-ipusers-xff": "$1 حصل على المستخدمين للإكس إف إف $2",
- "checkuser-log-useredits": "$1 حصل على تعديلات $2",
+ "checkuser-log-entry-userips": "$3، $1 حصل على عناوين الأيبي ل$2",
+ "checkuser-log-entry-ipedits": "$3، $1 حصل على التعديلات ل$2",
+ "checkuser-log-entry-ipusers": "$3، $1 حصل على المستخدمين ل$2",
+ "checkuser-log-entry-ipedits-xff": "$3، $1 حصل على التعديلات للXFF $2",
+ "checkuser-log-entry-useredits": "$3، $1 حصل على التعديلات ل$2",
"checkuser-autocreate-action": "تم إنشاؤه تلقائيا",
"checkuser-create-action": "تم إنشاؤه",
"checkuser-email-action": "أرسل بريدا إلكترونيا إلى \"$1\"",
diff --git a/CheckUser/i18n/arz.json b/CheckUser/i18n/arz.json
index 735440df..acc301da 100644
--- a/CheckUser/i18n/arz.json
+++ b/CheckUser/i18n/arz.json
@@ -23,7 +23,6 @@
"checkuser-users": "هات اليوزرز",
"checkuser-edits": "هات التعديلات من الاى بي",
"checkuser-ips": "هات الايبيهات",
- "checkuser-search": "تدوير",
"checkuser-period": "المدة:",
"checkuser-week-1": "الاسبوع اللى فات",
"checkuser-week-2": "الاسبوعين اللى فاتو",
@@ -54,19 +53,13 @@
"checkuser-accounts": "$1 جديد {{PLURAL:$1|حساب|حسابات}}",
"checkuser-too-many": "فى نتايج كتيرة جدا, لو سمحت تقلل الـ CIDR.\nدول الايبيهات المستعملة (5000 كحد اقصى, مترتبين بالعنوان):",
"checkuser-user-nonexistent": "اليوزر المتحدد مش موجود",
- "checkuser-search-form": "لاقى مدخلات السجل لما يكون $1 هو $2",
+ "checkuser-search": "تدوير",
"checkuser-search-submit": "تدوير",
"checkuser-search-initiator": "البادي",
"checkuser-search-target": "هدف",
"checkuser-ipeditcount": "~$1 من كل اليوزرز",
- "checkuser-log-return": "ارجع للاستمارة الرئيسية بتاعة تشييك اليوزرز",
+ "checkuser-showmain": "ارجع للاستمارة الرئيسية بتاعة تشييك اليوزرز",
"checkuser-limited": "''' النتايج دى اتعملها اختصار لأسباب متعلقة بالأداء.'''",
- "checkuser-log-userips": "$1 جاب الاى بى بتوع $2",
- "checkuser-log-ipedits": "$1 جاب التعديلات بتاعة $2",
- "checkuser-log-ipusers": "$1 جاب اليوزرز بتوع $2",
- "checkuser-log-ipedits-xff": "$1 جاب التعديلات للإكس إف إف $2",
- "checkuser-log-ipusers-xff": "$1 جاب اليوزرز لل اكس اف اف بتوع $2",
- "checkuser-log-useredits": "$1 جاب التعديلات بتاعة$2",
"checkuser-autocreate-action": "ابتدا اوتوماتيكى",
"checkuser-email-action": "ابعت ايميل لليوزر \"$1\"",
"checkuser-reset-action": "اضبط من تانى الباسورد بتاعة اليوزر \"$1\""
diff --git a/CheckUser/i18n/ast.json b/CheckUser/i18n/ast.json
index b01db1e3..a251a9a3 100644
--- a/CheckUser/i18n/ast.json
+++ b/CheckUser/i18n/ast.json
@@ -4,7 +4,9 @@
"Dferg",
"Esbardu",
"MarcoAurelio",
- "Xuacu"
+ "Xuacu",
+ "Macofe",
+ "McDutchie"
]
},
"checkuser-summary": "Esta ferramienta escanea los cambios recientes pa sacar les IP usaes por un usuariu o p'amosar los datos d'ediciones/usuarios d'una IP.\nLos usuarios y ediciones correspondientes a una IP puen sacase per aciu de les cabeceres XFF amestando depués de la IP \\\"/xff\\\". Puen usase los protocolos IPv4 (CIDR $1-32) ya IPv6 (CIDR $2-128).\nPor razones de rindimientu nun s'amosarán más de 5.000 ediciones.\nEmplega esta ferramienta acordies cola política d'usu.",
@@ -23,13 +25,12 @@
"grouppage-checkuser": "{{ns:project}}:Comprobador d'usuariu",
"checkuser-reason": "Motivu:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Amosar el rexistru",
+ "checkuser-showlog": "Cambiar al rexistru de CheckUser",
"checkuser-query": "Buscar nos cambios recientes",
"checkuser-target": "Direición IP o nome d'usuariu:",
"checkuser-users": "Obtener usuarios",
"checkuser-edits": "Obtener les ediciones",
"checkuser-ips": "Obtener les IP",
- "checkuser-search": "Buscar",
"checkuser-period": "Duración:",
"checkuser-week-1": "cabera selmana",
"checkuser-week-2": "caberes dos selmanes",
@@ -50,6 +51,8 @@
"checkuser-localonly": "Non unificada",
"checkuser-massblock": "Bloquias usuarios seleicionaos",
"checkuser-massblock-text": "Les cuentes seleicionaes van se bloquiaes de forma indefinida, col autobloquéu activáu y la creación de cuentes desactivada.\nLes direiciones IP van ser bloquiaes 1 selmana namái pa usuarios IP y cola creación de cuentes desactivada.",
+ "checkuser-blockemail": "Torgar l'unviu de corréu electrónicu",
+ "checkuser-blocktalk": "Torgar la edición de la so páxina d'alderique mentanto tea bloquiáu",
"checkuser-blocktag": "Sustituyir páxines d'usuariu con:",
"checkuser-blocktag-talk": "Sustituyir páxines d'alderique con:",
"checkuser-massblock-commit": "Bloquiar usuarios seleicionaos",
@@ -57,43 +60,53 @@
"checkuser-block-failure": "'''Nengún usuariu bloquiáu.'''",
"checkuser-block-limit": "Demasiaos usuarios seleicionaos.",
"checkuser-block-noreason": "Tienes que dar un motivu pa los bloqueos.",
+ "checkuser-centralauth-multilock": "Candar múltiples cuentes esbillaes",
"checkuser-noreason": "Tien de dar un motivu pa esta consulta.",
"checkuser-accounts": "$1 {{PLURAL:$1|cuenta nueva|cuentes nueves}}",
"checkuser-too-many": "Demasiaos resultaos (acordies colo albidrao pola consulta), intenta menguar el CIDR.\nEstes son les direiciones IP usaes (5000 max, axeitaes por direición):",
"checkuser-user-nonexistent": "L'usuariu especificáu nun esiste.",
- "checkuser-search-form": "Atopar les entraes de rexistru onde $1 ye $2",
+ "checkuser-search": "Buscar entraes nel rexistru de check user",
"checkuser-search-submit": "Buscar",
"checkuser-search-initiator": "aniciador",
"checkuser-search-target": "oxetivu",
+ "checkuser-log-search-target": "Oxetivu:",
+ "checkuser-log-search-type": "Buscar por:",
"checkuser-ipeditcount": "~$1 de tolos usuarios",
- "checkuser-log-return": "Cambiar al formulariu principal del comprobador d'usuarios",
+ "checkuser-showmain": "Cambiar al formulariu principal del comprobador d'usuarios",
"checkuser-limited": "'''Estos resultaos fueron truncaos por motivos de rendimientu.'''",
- "checkuser-log-userips": "$1 obtuvo les IP pa $2",
- "checkuser-log-ipedits": "$1 obtuvo les ediciones pa $2",
- "checkuser-log-ipusers": "$1 obtuvo los usuarios pa $2",
- "checkuser-log-ipedits-xff": "$1 obtuvo les ediciones pa XFF $2",
- "checkuser-log-ipusers-xff": "$1 obtuvo los usuarios pa XFF $2",
- "checkuser-log-useredits": "$1 obtuvo les ediciones de $2",
+ "checkuser-log-entry-userips": "$3, $1 recibió les direiciones IP de $2",
+ "checkuser-log-entry-ipedits": "$3, $1 recibió les ediciones de $2",
+ "checkuser-log-entry-ipusers": "$3, $1 recibió los usuarios de $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 recibió les ediciones de XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 recibió los usuarios de XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 recibió les ediciones de $2",
"checkuser-autocreate-action": "creóse automáticamente",
"checkuser-create-action": "creóse",
"checkuser-email-action": "unvió un corréu electrónicu a \"$1\"",
- "checkuser-reset-action": "reestableció la conseña del usuariu «$1»",
+ "checkuser-reset-action": "reestableció la contraseña del usuariu «$1»",
+ "checkuser-userlinks-ip": "([[User_talk:$1|alderique]] | [[Special:Contributions/$1|contribuciones]] | [[Special:Block/$1|bloquiar]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|alderique]] | [[Special:Contributions/$1|contribuciones]] | [[Special:Block/$1|bloquiar]])",
"checkuser-token-fail": "Fallu de la sesión. Vuelvi a intentalo.",
"apihelp-query+checkuser-description": "Comprobar qué direiciones IP usa un usuariu determináu o que nomes d'usuariu usa una IP determinada.",
+ "apihelp-query+checkuser-summary": "Comprobar qué direiciones IP usa un usuariu determináu o que nomes d'usuariu usa una IP determinada.",
"apihelp-query+checkuser-param-request": "Tipu de solicitú CheckUser:\n;userips: Devolver la direición IP del usuariu destín.\n;edits: Devolver los cambios de la direición o rangu IP de destín.\n;ipusers: Devolver los usuarios de la direición o rangu IP de destín.",
"apihelp-query+checkuser-param-target": "Nome d'usuariu, direición IP, o rangu CIDR a comprobar.",
"apihelp-query+checkuser-param-reason": "Motivu de la comprobación.",
"apihelp-query+checkuser-param-limit": "Llende de fileres.",
- "apihelp-query+checkuser-param-timecond": "Llende de tiempu de datos del usuariu (p. ex. \"2 weeks\").",
+ "apihelp-query+checkuser-param-timecond": "Llende de tiempu de datos del usuariu (p. ex. \"-2 weeks\" o \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Usar datos XFF en llugar de direiciones IP.",
"apihelp-query+checkuser-example-1": "Comprobar les direiciones IP pa [[User:Example]]",
"apihelp-query+checkuser-example-2": "Comprobar les ediciones dende 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Recibir entraes del rexistru de CheckUser.",
+ "apihelp-query+checkuserlog-summary": "Recibir entraes del rexistru de CheckUser.",
"apihelp-query+checkuserlog-param-user": "Nome d'usuariu de CheckUser.",
"apihelp-query+checkuserlog-param-target": "Usuariu, direición IP o rangu CIDR comprobáu.",
"apihelp-query+checkuserlog-param-limit": "Llende de fileres.",
"apihelp-query+checkuserlog-param-from": "La marca horaria dende la que principiar la enumeración.",
"apihelp-query+checkuserlog-param-to": "La marca horaria na que finar la enumeración.",
"apihelp-query+checkuserlog-example-1": "Amosar les comprobaciones de [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Amosar les comprobaciones de 192.0.2.0/24 después de 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Amosar les comprobaciones de 192.0.2.0/24 después de 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Tienes de dar un motivu pa la comprobación.",
+ "apierror-checkuser-timelimit": "Tienes d'usar una llende de tiempu correuta (como «-2 weeks» o «2 weeks ago»).",
+ "apierror-checkuser-invalidmode": "Mou de solicitú inválidu"
}
diff --git a/CheckUser/i18n/av.json b/CheckUser/i18n/av.json
new file mode 100644
index 00000000..3f048c67
--- /dev/null
+++ b/CheckUser/i18n/av.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Аль-Гимравий"
+ ]
+ },
+ "checkuser-reason": "ГІилла:",
+ "checkuser-target": "IP-адрес яги гІахьалчиясул цІар:"
+}
diff --git a/CheckUser/i18n/ba.json b/CheckUser/i18n/ba.json
index d8068580..402c5fba 100644
--- a/CheckUser/i18n/ba.json
+++ b/CheckUser/i18n/ba.json
@@ -4,7 +4,9 @@
"Assele",
"Haqmar",
"Ләйсән",
- "Рустам Нурыев"
+ "Рустам Нурыев",
+ "Sagan",
+ "Азат Хәлилов"
]
},
"checkuser-summary": "Был ҡорал ҡатнашыусы тарафынан ҡулланылған IP адрестарҙы алыр өсөн йәки IP адрестан эшләнгән үҙгәртеүҙәрҙе/ҡатнашыусыларҙы ҡарар өсөн ҡулланыла ала.\nIP адрестан эшләнгән үҙгәртеүҙәр һәм ҡатнашыусылар күрһәтелгән XFF-башлыҡтар аша, IP адрестан һуң \"/xff\" өҫтәп, алына ала. IPv4 (CIDR $1-32) һәм IPv6 (CIDR $2-128) ҡулланыла ала.\nЕтештереүсәнлек маҡсаттарында тәүге 5000 үҙгәртеү генә күрһәтеләсәк.\nБыл ҡоралды ҡағиҙәләргә ярашлы ҡулланығыҙ.",
@@ -13,19 +15,22 @@
"checkuser": "Ҡулланыусыны тикшер",
"checkuserlog": "Ҡулланыусыларҙы тикшереү журналы",
"checkuser-contribs": "Ҡулланыусынын IP адресын тикшерергә",
+ "checkuser-contribs-log": "Ҡулланыусының һуңғы тикшереүҙәре",
"group-checkuser": "Ҡулланыусыларҙы тикшереүселәр",
"group-checkuser-member": "Ҡулланыусыларҙы тикшереүсе",
"right-checkuser": "Ҡулланыусыларҙың IP адрестарын һәм башҡа мәғлүмәттәрен тикшереү",
"right-checkuser-log": "Ҡулланыусыларҙы тикшереү журналын ҡарау",
+ "action-checkuser": "Ҡулланыусыларҙың IP-адрестарын һәм башҡа мәғлүмәттәрен тикшереү",
+ "action-checkuser-log": "Ҡулланыусыларҙы тикшереү журналын ҡарау",
"grouppage-checkuser": "{{ns:project}}:Ҡулланыусыларҙы тикшереү",
"checkuser-reason": "Сәбәп:",
- "checkuser-showlog": "Журналды күрһәт",
+ "checkuser-reason-api": "API: $1",
+ "checkuser-showlog": "Ҡатнашыусыларҙы тикшереү журналына күсергә",
"checkuser-query": "Һуңғы үҙгәрештәрҙе һоратырға",
"checkuser-target": "Ҡулланыусының IP-адресы йәки исеме:",
"checkuser-users": "Ҡулланыусыларҙы килтер",
"checkuser-edits": "Төҙәтеүҙәрҙе алырға",
"checkuser-ips": "IP-адрестарҙы килтер",
- "checkuser-search": "Эҙләү",
"checkuser-period": "Оҙайлыҡ:",
"checkuser-week-1": "һуңғы аҙна",
"checkuser-week-2": "һуңғы ике аҙна",
@@ -46,6 +51,8 @@
"checkuser-localonly": "Глобаль түгел",
"checkuser-massblock": "Һайланған ҡулланыусыларҙы бикләргә",
"checkuser-massblock-text": "Һайланған иҫәп яҙмалары сикләнмәгән ваҡытҡа IP адрестарҙы автоматик рәүештә бикләү һәм яңы иҫәп яҙмаһын булдырыуҙы тыйыу менән бикләнәсәк.\nIP адрестар танылмаған ҡатнашыусылар өсөн 1 айға бикләнәсәк, яңы иҫәп яҙмаһын булдырыу тыйыласаҡ.",
+ "checkuser-blockemail": "Электрон почта менән хат ебәреүҙе тыйыу",
+ "checkuser-blocktalk": "Блокка бикләү ваҡытында был ҡулланыусыны үҙ фекер алышыу битен мөхәррирләүҙән тыйырға",
"checkuser-blocktag": "Ҡатнашыусыларҙың битен ошоға алыштырырға:",
"checkuser-blocktag-talk": "Фекер алышыу биттәрен ошоға алыштырырға:",
"checkuser-massblock-commit": "Һайланған ҡулланыусыларҙы бикләргә",
@@ -55,23 +62,43 @@
"checkuser-block-noreason": "Һеҙ бикләүҙең сәбәбен күрһәтергә тейешһегеҙ.",
"checkuser-noreason": "Һеҙ был һорауҙың сәбәбен күрһәтергә тейешһегеҙ.",
"checkuser-accounts": "$1 {{PLURAL:$1|яңы иҫәп яҙмаһы}}",
- "checkuser-too-many": "Бигерәк күп һөҙөмтә (һорауҙы баһалау быйынса), зинһар, CIDR-ҙы тарайтығыҙ.\nҠулланылған IP адрестар (иң күбе — 5000, адрестары буйынса тәртипкә килтерелгән):",
+ "checkuser-too-many": "Бигерәк күп һөҙөмтә (һорауҙы баһалау буйынса), зинһар, CIDR-ҙы тарайтығыҙ.\nҠулланылған IP-адрестар (иң күбе — 5000, адрестары буйынса тәртипкә килтерелгән):",
"checkuser-user-nonexistent": "Күрһәтелгән ҡатнашыусы юҡ.",
- "checkuser-search-form": "$1 — $2 булған яҙмаларҙы табырға",
+ "checkuser-search": "Ҡатнашыусыны тикшереү журналы яҙмалары буйынса эләү",
"checkuser-search-submit": "Эҙләү",
"checkuser-search-initiator": "башлаусы",
"checkuser-search-target": "маҡсат",
+ "checkuser-log-search-target": "Маҡсат:",
+ "checkuser-log-search-type": "Буйынса эҙләү:",
"checkuser-ipeditcount": "бөтә ҡатнашыусыларҙан ~$1",
- "checkuser-log-return": "Ҡатнашыусыларҙы тикшереү битенә кире ҡайтырға",
+ "checkuser-showmain": "!!FUZZY!!Ҡатнашыусыларҙы тикшереү битенә кире ҡайтырға",
"checkuser-limited": "'''Һөҙөмтәләр етештереүсәнлек маҡсаттарында киҫелде.'''",
- "checkuser-log-userips": "$1 $2 өсөн IP адрестар алған",
- "checkuser-log-ipedits": "$1 $2 адресы өсөн үҙгәртеүҙәр алған",
- "checkuser-log-ipusers": "$1 $2 адресы өсөн ҡатнашыусыларҙы алған",
- "checkuser-log-ipedits-xff": "$1 XFF $2 өсөн үҙгәртеүҙәр алған",
- "checkuser-log-ipusers-xff": "$1 XFF $2 өсөн ҡатнашыусыларҙы алған",
- "checkuser-log-useredits": "$1 $2 өсөн үҙгәртеүҙәр алған",
+ "checkuser-log-entry-userips": " $2 өсөн IP адрестар алған $1 $3",
+ "checkuser-log-entry-ipedits": "$3 $1 өсөн үҙгәртеүҙәр алған $2",
+ "checkuser-log-entry-ipusers": "$2 адресы өсөн иҫәп яҙмаһы алынды $1 $3",
+ "checkuser-log-entry-ipedits-xff": "$3 $1 төҙәтеү алды XFF $2",
+ "checkuser-log-entry-ipusers-xff": "XFF $2 өсөн иҫәп яҙмаһы алды $3 $1",
+ "checkuser-log-entry-useredits": "$2 өсөн төҙәтеү алды $3 $1",
"checkuser-autocreate-action": "үҙенән-үҙе булдырылған",
"checkuser-create-action": "төҙөлдө",
"checkuser-email-action": "\"$1\" ҡатнашыусыһына электрон хат ебәргән",
- "checkuser-reset-action": "\"$1\" ҡатнашыусыһының серһүҙен үҙгәртергә"
+ "checkuser-reset-action": "\"$1\" ҡатнашыусыһының серһүҙен үҙгәртергә",
+ "checkuser-token-fail": "Сеанс өҙөлдө. Зинһар, тағы бер тапҡыр ҡабатлап ҡарағыҙ.",
+ "apihelp-query+checkuser-description": "Ҡатнашыусы ниндәй IP-адрес ҡуллыныуын йәки ниндәй исемдәр ошоIP-адресты ҡулланыуын тикшерегеҙ.",
+ "apihelp-query+checkuser-param-request": "Чекюзерға һорау ебәреү тибы:\n;userips:Ҡулланыусының IP-адресын алырға .\n; edits:IP-адресынан йәки диапазонынан алынған үҙгәртеүҙәр турыһында мәғлүмәт аларға.\n;ipusers: IP-адресындаға йәки диапозонындағы ҡулланыусыларҙы белергә.",
+ "apihelp-query+checkuser-param-target": "Ҡатнашыу IP-адрес йәки CIDR-диапазоны тикшереү өсөн.",
+ "apihelp-query+checkuser-param-reason": "Тикшереү сәбәбе.",
+ "apihelp-query+checkuser-param-limit": "Юл һанын сикләү.",
+ "apihelp-query+checkuser-param-timecond": "Ҡатнашыусы өсөн ваҡыт сикләүе (мәҫәлән, «-2 weeks» йәки «2 weeks ago»).",
+ "apihelp-query+checkuser-param-xff": "IP-адрес урынына XFF мәғлүмәттәрен ҡулланырға.",
+ "apihelp-query+checkuser-example-1": "IP-адресты тикшерергә [[User:Example]]",
+ "apihelp-query+checkuser-example-2": " 192.0.2.0/24 төҙәтеүҙәрен тикшерергә",
+ "apihelp-query+checkuserlog-description": "Ҡатнашыусыларҙы тикшереү журналынан яҙма алырға (CheckUser).",
+ "apihelp-query+checkuserlog-param-user": "Чекюзер ҡулланыусы исемлеге.",
+ "apihelp-query+checkuserlog-param-target": "IP-адрес йәки CIDR-диапазоны тикшерелелгән ҡатнашыусы.",
+ "apihelp-query+checkuserlog-param-limit": "Юл һанын сикләү.",
+ "apihelp-query+checkuserlog-param-from": "Иҫәп күсереү башланған ваҡыт билдәһе",
+ "apihelp-query+checkuserlog-param-to": "Иҫәп күсереү тамамланған ваҡыт билдәһе",
+ "apihelp-query+checkuserlog-example-1": "Тикшереүҙәрҙә күрһәтергә [[User:Example]]",
+ "apihelp-query+checkuserlog-example-2": "192.0.2.0/24 башлап 2011-10-15T23:00:00Z тиклем тикшереүҙе күрһәтергә"
}
diff --git a/CheckUser/i18n/bcc.json b/CheckUser/i18n/bcc.json
index f51ad6a3..a618c51e 100644
--- a/CheckUser/i18n/bcc.json
+++ b/CheckUser/i18n/bcc.json
@@ -33,10 +33,5 @@
"checkuser-search-initiator": "شروع کنوک",
"checkuser-search-target": "هدف",
"checkuser-ipeditcount": "~$1 چه کلی کابران",
- "checkuser-log-return": "په فرم اصلی کنترل کاربر تر",
- "checkuser-log-userips": "$1 گریت آی پی په $2",
- "checkuser-log-ipedits": "$1 گریت اصلاح په $2",
- "checkuser-log-ipusers": "$1 کابران گریت په $2",
- "checkuser-log-ipedits-xff": "$1 اصلاح کنت په XFF $2",
- "checkuser-log-ipusers-xff": "$1 گریت کابران په XFF $2"
+ "checkuser-log-return": "په فرم اصلی کنترل کاربر تر"
}
diff --git a/CheckUser/i18n/bcl.json b/CheckUser/i18n/bcl.json
index efb8537d..1bc736a4 100644
--- a/CheckUser/i18n/bcl.json
+++ b/CheckUser/i18n/bcl.json
@@ -66,12 +66,6 @@
"checkuser-ipeditcount": "~$1 gikan sa gabos na mga paragamit",
"checkuser-log-return": "Magbalyo sa Rikisahon-an-Paragamit sa pangenot na porma",
"checkuser-limited": "'''Ining mga resulta pinagpahalipot nin huli sa mga rason nin paggigibo.'''",
- "checkuser-log-userips": "$1 nakakua nin mga estada kan IP para ki $2",
- "checkuser-log-ipedits": "$1 nakakua nin mga pagliwat para sa $2",
- "checkuser-log-ipusers": "$1 nakakua nin mga paragamit para sa $2",
- "checkuser-log-ipedits-xff": "$1 nakakua nin mga pagliwat para sa XFF $2",
- "checkuser-log-ipusers-xff": "$1 nakakua nin mga paragamit para sa XFF $2",
- "checkuser-log-useredits": "$1 nakakua nin mga pagliwat para sa $2",
"checkuser-autocreate-action": "an awtomatikong pinagmukna",
"checkuser-create-action": "an pinagmukna",
"checkuser-email-action": "magpadara nin e-surat pasiring sa paragamit na si \"$1\"",
diff --git a/CheckUser/i18n/be-tarask.json b/CheckUser/i18n/be-tarask.json
index b15d82bb..bfa207f9 100644
--- a/CheckUser/i18n/be-tarask.json
+++ b/CheckUser/i18n/be-tarask.json
@@ -23,13 +23,12 @@
"grouppage-checkuser": "{{ns:project}}:Праверка ўдзельнікаў",
"checkuser-reason": "Прычына:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Паказаць журнал",
+ "checkuser-showlog": "Пераключыцца на журнал пераверкі ўдзельнікаў",
"checkuser-query": "Запытаць апошнія зьмены",
"checkuser-target": "IP-адрас альбо рахунак удзельніка:",
"checkuser-users": "Атрымаць рахункі ўдзельнікаў",
"checkuser-edits": "Атрымаць рэдагаваньні",
"checkuser-ips": "Атрымаць IP-адрасы",
- "checkuser-search": "Шукаць",
"checkuser-period": "Працягласьць:",
"checkuser-week-1": "апошні тыдзень",
"checkuser-week-2": "апошнія два тыдні",
@@ -61,19 +60,13 @@
"checkuser-accounts": "$1 {{PLURAL:$1|новы рахунак|новыя рахункі|новых рахункаў}}",
"checkuser-too-many": "Зашмат вынікаў (згодна з ацэнкай запыту), калі ласка, абмяжуйце CIDR.\nТут пададзеныя ўжытыя ІР-адрасы (максымум 5000, адсартаваныя паводле адрасу):",
"checkuser-user-nonexistent": "Пазначанага рахунку ўдзельніка не існуе.",
- "checkuser-search-form": "Пошук запісаў у журнале, дзе $1 зьяўляецца $2",
+ "checkuser-search": "Пошук у запісах журналу праверкі ўдзельнікаў",
"checkuser-search-submit": "Шукаць",
"checkuser-search-initiator": "ініцыятар",
"checkuser-search-target": "мэта",
"checkuser-ipeditcount": "~$1 ад усіх удзельнікаў",
- "checkuser-log-return": "Вярнуцца да галоўнай формы праверкі ўдзельнікаў",
+ "checkuser-showmain": "Вярнуцца да галоўнай формы праверкі ўдзельнікаў",
"checkuser-limited": "'''Гэты вынік быў скарочаны, з прычыны прадукцыйнасьці сыстэмы.'''",
- "checkuser-log-userips": "$1 атрымаў IP-адрасы для $2",
- "checkuser-log-ipedits": "$1 атрымаў рэдагаваньні для $2",
- "checkuser-log-ipusers": "$1 атрымаў рахункі ўдзельнікаў для $2",
- "checkuser-log-ipedits-xff": "$1 атрымаў рэдагаваньні для XFF $2",
- "checkuser-log-ipusers-xff": "$1 атрымаў рахункі ўдзельнікаў для XFF $2",
- "checkuser-log-useredits": "$1 атрымаў рэдагаваньні для $2",
"checkuser-autocreate-action": "быў створаны аўтаматычна",
"checkuser-create-action": "створаны",
"checkuser-email-action": "даслаць ліст удзельніку «$1»",
diff --git a/CheckUser/i18n/bg.json b/CheckUser/i18n/bg.json
index bd44b96c..391807f4 100644
--- a/CheckUser/i18n/bg.json
+++ b/CheckUser/i18n/bg.json
@@ -4,7 +4,10 @@
"Borislav",
"DCLXVI",
"Spiritia",
- "Turin"
+ "Turin",
+ "Vodnokon4e",
+ "StanProg",
+ "Termininja"
]
},
"checkuser-summary": "Този инструмент сканира последните промени и извлича IP адресите, използвани от потребител или показва информацията за редакциите/потребителя за посоченото IP.\n\tПотребители и редакции по клиентско IP могат да бъдат извлечени чрез XFF headers като се добави IP с \"/xff\". Поддържат се IPv4 (CIDR $1-32) и IPv6 (CIDR $2-128).\n\tОт съображения, свързани с производителността на уикито, ще бъдат показани не повече от 5000 редакции. Използвайте инструмента съобразно установената политика.",
@@ -12,20 +15,22 @@
"checkuser-logcase": "Търсенето в дневника различава главни от малки букви.",
"checkuser": "Проверяване на потребител",
"checkuserlog": "Дневник на проверяващите",
- "checkuser-contribs": "проверка на IP-адреса на потребителя",
+ "checkuser-contribs": "проверка на IP-адресите на потребителя",
"group-checkuser": "Проверяващи",
- "group-checkuser-member": "Проверяващ",
- "right-checkuser": "проверяване на потребителски IP адреси и друга информация",
+ "group-checkuser-member": "{{GENDER:$1|проверяващ}}",
+ "right-checkuser": "Проверяване на потребителски IP адреси и друга информация",
"right-checkuser-log": "Преглеждане на дневника с проверки на потребители",
+ "action-checkuser": "проверка на потребител",
+ "action-checkuser-log": "проверка на дневника на проверяващите",
"grouppage-checkuser": "{{ns:project}}:Проверяващи",
"checkuser-reason": "Причина:",
- "checkuser-showlog": "Показване на дневника",
+ "checkuser-reason-api": "API: $1",
+ "checkuser-showlog": "Преминаване към дневника на проверките",
"checkuser-query": "Заявка към последните промени",
"checkuser-target": "IP-адрес или потребителско име:",
"checkuser-users": "Извличане на потребители",
"checkuser-edits": "Извличане на редакции",
"checkuser-ips": "Извличане на IP адреси",
- "checkuser-search": "Търсене",
"checkuser-period": "Продължителност:",
"checkuser-week-1": "последната седмица",
"checkuser-week-2": "последните 2 седмици",
@@ -43,6 +48,8 @@
"checkuser-wasblocked": "Блокиран преди време",
"checkuser-massblock": "Блокиране на избраните потребители",
"checkuser-massblock-text": "Избраните потребителски сметки ще бъдат блокирани безсрочно, като създаването на сметки ще бъде забранено и ще бъде включена автоблокировка на IP адресите.\nСамо за анонимни потребители IP адресите ще бъдат блокирани за една седмица и ще бъде забранено създаването на потребителски сметки.",
+ "checkuser-blockemail": "Забрана на потребителя да праща е-поща",
+ "checkuser-blocktalk": "Спиране на възможността този потребител да редактира беседата си докато е блокиран",
"checkuser-blocktag": "Заместване на потребителските страници с:",
"checkuser-blocktag-talk": "Заместване на беседите с:",
"checkuser-massblock-commit": "Блокиране на избраните потребители",
@@ -52,20 +59,18 @@
"checkuser-block-noreason": "Трябва да се посочи причина за блокиранията.",
"checkuser-noreason": "Необходимо е да се посочи основание за тази заявка.",
"checkuser-accounts": "$1 {{PLURAL:$1|нова сметка|нови сметки}}",
- "checkuser-too-many": "Твърде много резултати. Показани са използваните IP адреси (най-много 5000, сортирани по адрес):",
+ "checkuser-too-many": "Твърде много резултати (според оценката на заявката), моля уточнете CIDR.\nПоказани са използваните IP адреси (най-много 5 000, сортирани по адрес):",
"checkuser-user-nonexistent": "Посоченият потребител не съществува.",
- "checkuser-search-form": "Намиране на записи от дневника, в които $1 е $2",
+ "checkuser-search": "Търсене в дневника на проверките",
"checkuser-search-submit": "Търсене",
"checkuser-search-initiator": "инициатор",
"checkuser-search-target": "цел",
+ "checkuser-log-search-target": "Цел:",
+ "checkuser-log-search-type": "Търсене по:",
"checkuser-ipeditcount": "~$1 от всички потребители",
- "checkuser-log-return": "Връщане към основния формуляр за проверка",
+ "checkuser-showmain": "Преминаване към страницата за проверка на редактори",
"checkuser-limited": "'''Резултатите бяха съкратени от съображения, свързани с производителността на системата.'''",
- "checkuser-log-userips": "$1 е получил айпи адреси за $2",
- "checkuser-log-ipedits": "$1 е получил редакции за $2",
- "checkuser-log-ipusers": "$1 е получил потребители за $2",
- "checkuser-log-ipedits-xff": "$1 е получил редакции за XFF $2",
- "checkuser-log-ipusers-xff": "$1 е получил потребители за XFF $2",
"checkuser-email-action": "изпрати е-писмо на потребител „$1“",
- "checkuser-reset-action": "промяна на парола за потребител \"$1\""
+ "checkuser-reset-action": "промяна на парола за потребител \"$1\"",
+ "apierror-checkuser-invalidmode": "Невалиден режим на заявката"
}
diff --git a/CheckUser/i18n/bgn.json b/CheckUser/i18n/bgn.json
new file mode 100644
index 00000000..056c95c9
--- /dev/null
+++ b/CheckUser/i18n/bgn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim khashrowdi"
+ ]
+ },
+ "checkuser-all": "موچین"
+}
diff --git a/CheckUser/i18n/bn.json b/CheckUser/i18n/bn.json
index 3088896b..9c2d35b7 100644
--- a/CheckUser/i18n/bn.json
+++ b/CheckUser/i18n/bn.json
@@ -9,69 +9,82 @@
"Aftabuzzaman"
]
},
- "checkuser-summary": "এই সরঞ্জামটি সাম্প্রতিক পরিবর্তনসমূহ বিশ্লেষণ করে কোন ব্যবহারকারীর ব্যবহৃত আইপিগুলি নিয়ে আসে কিংবা কোন একটি আইপির জন্য সম্পাদনা/ব্যবহারকারী উপাত্ত প্রদর্শন করে।\nকোন ক্লায়েন্ট আইপি-র জন্য ব্যবহারকারী ও সম্পাদনা XFF হেডারসমূহের সাহায্যে নিয়ে আসা যায়; এজন্য আইপির সাথে \"/xff\" যোগ করতে হয়।\nIPv4 (CIDR $1-32) এবং IPv6 (CIDR $2-128) এই সরঞ্জামে সমর্থিত।\nদক্ষতাজনিত কারণে ৫০০০-এর বেশি সম্পাদনা নিয়ে আসা হবে না। নীতিমালা মেনে এটি ব্যবহার করুন।",
+ "checkuser-summary": "এই সরঞ্জামটি সাম্প্রতিক পরিবর্তনসমূহ বিশ্লেষণ করে একজন ব্যবহারকারীর ব্যবহৃত আইপিগুলি নিয়ে আসে কিংবা কোন একটি আইপির জন্য সম্পাদনা/ব্যবহারকারী উপাত্ত প্রদর্শন করে।\nকোন ক্লায়েন্ট আইপি-র জন্য ব্যবহারকারী ও সম্পাদনা XFF হেডারসমূহের সাহায্যে নিয়ে আসা যায়; এজন্য আইপির সাথে \"/xff\" যোগ করতে হয়। IPv4 (CIDR $1-32) এবং IPv6 (CIDR $2-128) এই সরঞ্জামে সমর্থিত।\nদক্ষতাজনিত কারণে ৫০০০-এর বেশি সম্পাদনা নিয়ে আসা হবে না।\nনীতিমালা মেনে এটি ব্যবহার করুন।",
"checkuser-desc": "যথাযথ অনুমোদনপ্রাপ্ত ব্যবহারকারীদেরকে অন্য ব্যবহারকারীদের আইপি ঠিকানা এবং অন্যান্য তথ্য পরীক্ষা করার ক্ষমতা দেয়",
"checkuser-logcase": "লগ অনুসন্ধান বড়/ছোট হাতের অক্ষরের উপর নির্ভরশীল",
"checkuser": "ব্যবহারকারী পরীক্ষণ",
"checkuserlog": "ব্যবহারকারী পরীক্ষণ লগ",
- "checkuser-contribs": "ব্যবহারকারীর আইপি ঠিকানা পরীক্ষা করা",
+ "checkuser-contribs": "ব্যবহারকারীর আইপি ঠিকানা পরীক্ষা করুন",
"checkuser-contribs-log": "সাম্প্রতিক ব্যবহারকারী পরীক্ষা",
"group-checkuser": "ব্যবহারকারী পরীক্ষক",
"group-checkuser-member": "{{GENDER:$1|ব্যবহারকারী পরীক্ষক}}",
"right-checkuser": "ব্যবহারকারীর আইপি ঠিকানা এবং অন্যান্য তথ্য যাচাই করুন",
- "right-checkuser-log": "চেকইউজার লগ দেখুন",
- "action-checkuser": "চেকইউজার-এর ঠিকানা এবং অন্যান্য তথ্য",
- "action-checkuser-log": "চেকইউজার লগ দেখুন",
- "grouppage-checkuser": "{{ns:project}}:ব্যবহারকারী পরীক্ষণ",
+ "right-checkuser-log": "ব্যবহারকারী পরীক্ষণ লগ দেখুন",
+ "action-checkuser": "ব্যবহারকারীর আইপি ঠিকানা এবং অন্যান্য তথ্য পরীক্ষা",
+ "action-checkuser-log": "ব্যবহারকারী পরীক্ষণ লগ দেখুন",
+ "grouppage-checkuser": "{{ns:project}}:ব্যবহারকারী পরীক্ষক",
"checkuser-reason": "কারণ:",
"checkuser-reason-api": "এপিআই: $1",
- "checkuser-showlog": "লগ দেখাও",
+ "checkuser-showlog": "ব্যবহারকারী পরীক্ষণ লগে যান",
"checkuser-query": "সাম্প্রতিক পরিবর্তনসমূহ জানুন",
"checkuser-target": "আইপি ঠিকানা বা ব্যবহারকারীর নাম:",
- "checkuser-users": "ব্যবহারকারী সমূহ পাওয়া যাবে",
- "checkuser-edits": "সম্পাদনাগুলি পান",
- "checkuser-ips": "আইপি সমূহ পাওয়া যাবে",
- "checkuser-search": "অনুসন্ধান",
+ "checkuser-users": "ব্যবহারকারী খুঁজুন",
+ "checkuser-edits": "সম্পাদনাগুলি খুঁজুন",
+ "checkuser-ips": "আইপিসমূহ খুঁজুন",
"checkuser-period": "সময়:",
"checkuser-week-1": "পূর্ববর্তী সপ্তাহ",
"checkuser-week-2": "পূর্ববর্তী দুই সপ্তাহ",
"checkuser-month": "পূর্ববর্তী ৩০ দিন",
"checkuser-all": "সমস্ত",
+ "checkuser-cidr-label": "আইপি ঠিকানার একটি তালিকার জন্য সাধারণ পরিসীমা এবং প্রভাবিত আইপি ঠিকানাগুলি খুঁজুন",
"checkuser-cidr-res": "সাধারণ সিআইডিআর:",
"checkuser-empty": "এই লগে কিছুই নেই।",
- "checkuser-nomatch": "এর সাথে মিলে এমন কিছু পাওয়া যায়নি।",
+ "checkuser-nomatch": "মিলে যায় এমন কিছু পাওয়া যায়নি।",
+ "checkuser-nomatch-edits": "কোন মিল খুঁজে পাওয়া যায়নি।\nশেষ সম্পাদনাটি ছিল $1 তারিখে $2 টায়।",
"checkuser-check": "পরীক্ষা করুন",
"checkuser-log-fail": "লগ ভুক্তিতে যোগ করা সম্ভব হচ্ছে না",
"checkuser-nolog": "কোন লগ ফাইল পাওয়া যায়নি।",
"checkuser-blocked": "বাধা দেওয়া হয়েছে",
- "checkuser-gblocked": "গ্লোবালি বাধাদানকৃত",
+ "checkuser-gblocked": "বৈশ্বিকভাবে বাধাদানকৃত",
"checkuser-locked": "অবরুদ্ধ",
"checkuser-wasblocked": "পূর্বে বাধাদানকৃত ছিলো",
"checkuser-localonly": "কোনো একত্রকীকরণ নেই",
"checkuser-massblock": "নির্বাচিত ব্যবহারকারীদের বাধা দিন",
+ "checkuser-massblock-text": "আইপি ঠিকানাগুলির স্বয়ংক্রিয় অবরুদ্ধ সক্রিয়করণ এবং অ্যাকাউন্ট সৃষ্টি নিষ্ক্রিয়করণ সহ, নির্বাচিত অ্যাকাউন্টগুলি অনির্দিষ্টকালের জন্য অবরুদ্ধ করা হবে।\nআইপি ঠিকানাগুলি বেনামী ব্যবহারকারীদের জন্য শুধুমাত্র এক সপ্তাহের জন্য অবরুদ্ধ হবে এবং অ্যাকাউন্ট সৃষ্টি নিষ্ক্রিয় করা হবে।",
+ "checkuser-blockemail": "ই-মেইল পাঠানো থেকে বিরত রাখো",
+ "checkuser-blocktalk": "বাধা থাকা অবস্থায় তাদের নিজস্ব আলাপ পাতা সম্পাদনা করা থেকে বিরত রাখো",
"checkuser-blocktag": "যেটির মাধ্যমে ব্যবহারকারী পাতা প্রতিস্থাপন করবেন:",
"checkuser-blocktag-talk": "যেটির মাধ্যমে আলাপ পাতা প্রতিস্থাপন করবেন:",
"checkuser-massblock-commit": "নির্বাচিত ব্যবহারকারীদের বাধা দিন",
+ "checkuser-block-success": "'''$1 {{PLURAL:$2|ব্যবহারকারী|ব্যবহারকারীগণ}} এখন অবরুদ্ধ আছে।'''",
"checkuser-block-failure": "'''বাধাদানকৃত কোনো ব্যবহারকারী নেই।'''",
"checkuser-block-limit": "অনেক বেশি ব্যবহারকারী নির্বাচিত করা হয়েছে।",
- "checkuser-block-noreason": "আপনাকে অবশ্যই এই ব্লকগুলোর জন্য একটি কারণ উল্লেখ করতে হবে।",
+ "checkuser-block-noreason": "আপনাকে অবশ্যই এই বাধাদানের জন্য একটি কারণ উল্লেখ করতে হবে।",
"checkuser-noreason": "আপনাকে অবশ্যই এই কোয়েরির জন্য একটি কারণ উল্লেখ করতে হবে।",
- "checkuser-accounts": "$1 নতুন {{PLURAL:$1|অ্যাকাউন্ট|অ্যাকাউন্টসমূহ}}",
- "checkuser-too-many": "অত্যধিক সংখ্যক ফলাফল (অনুসন্ধান হিসাব অনুযায়ী), অনুগ্রহ করে CIDR সীমিত করুন। নিচের আইপিগুলি ব্যবহৃত হয়েছে (সর্বোচ্চ ৫০০০, ঠিকানা অনুযায়ী বিন্যস্ত):",
+ "checkuser-accounts": "$1টি নতুন {{PLURAL:$1|অ্যাকাউন্ট}}",
+ "checkuser-too-many": "অত্যধিক সংখ্যক ফলাফল (অনুসন্ধান হিসাব অনুযায়ী), অনুগ্রহ করে CIDR সীমিত করুন। নিচের আইপি ঠিকানাগুলি ব্যবহৃত হয়েছে (সর্বোচ্চ ৫০০০, ঠিকানা অনুযায়ী বিন্যস্ত):",
"checkuser-user-nonexistent": "এই নির্দিষ্ট ব্যবহারকারী নেই।",
- "checkuser-search-form": "এমনসব লগ ভুক্তি খুঁজে বের করুন যেখানে $1 হল $2",
+ "checkuser-search": "ব্যবহারকারী পরীক্ষণের ভুক্তিতে খুঁজুন",
"checkuser-search-submit": "অনুসন্ধান",
"checkuser-search-initiator": "আরম্ভকারী",
"checkuser-search-target": "লক্ষ্য",
- "checkuser-ipeditcount": "~$1 সমস্ত ব্যবহাকারী থেকে",
- "checkuser-log-return": "CheckUser মূল ফর্মে ফেরত যান",
- "checkuser-log-userips": "$2 এর জন্য $1 আইপি সমূহ পেয়েছে",
- "checkuser-log-ipedits": "$2 এর জন্য $1 সম্পাদনাসমূহ পেয়েছে",
- "checkuser-log-ipusers": "$2 এর জন্য $1 ব্যবহারকারীসমূহ পেয়েছে",
- "checkuser-log-ipedits-xff": "$2 এর জন্য XFF $1 সম্পাদনাসমূহ পেয়েছে",
- "checkuser-log-ipusers-xff": "$2 এর জন্য XFF $1 ব্যবহারকারীসমূহ পেয়েছে",
+ "checkuser-log-search-target": "লক্ষ্য:",
+ "checkuser-log-search-type": "কর্তৃক অনুসন্ধান:",
+ "checkuser-ipeditcount": "সকল ব্যবহারকারী থেকে ~$1টি",
+ "checkuser-showmain": "CheckUser মূল ফর্মে ফেরত যান",
+ "checkuser-limited": "'''এসব ফলাফল কর্মক্ষমতা কারণে ছেঁটে ফেলা হয়েছে।'''",
+ "checkuser-log-entry-userips": "$3, $1 $2-এর জন্য আইপি ঠিকানাগুলি পেয়েছেন",
+ "checkuser-log-entry-ipedits": "$3, $1 $2-এর জন্য সম্পাদনাগুলি পেয়েছেন",
+ "checkuser-log-entry-ipusers": "$3, $1 $2-এর জন্য ব্যবহারকারীগুলি পেয়েছেন",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 XFF $2-এর জন্য সম্পাদনাগুলি পেয়েছেন",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 XFF $2-এর জন্য ব্যবহারকারীগুলি পেয়েছেন",
+ "checkuser-log-entry-useredits": "$3, $1 $2-এর জন্য সম্পাদনাগুলি পেয়েছেন",
"checkuser-autocreate-action": "স্বয়ংক্রিয়ভাবে তৈরি হয়েছিলো",
"checkuser-create-action": "তৈরি করা হয়েছে",
"checkuser-email-action": "ব্যবহারকারী \"$1\"-এর কাছে একটি ই-মেইল পাঠাও",
- "checkuser-reset-action": "ব্যবহারকারী \"$1\"-এর জন্য পাসওয়ার্ড রিসেট করো"
+ "checkuser-reset-action": "ব্যবহারকারী \"$1\"-এর জন্য পাসওয়ার্ড পুনঃস্থাপন করো",
+ "checkuser-userlinks-ip": "([[User_talk:$1|আলাপ]] | [[Special:Contributions/$1|অবদান]] | [[Special:Block/$1|বাধা দিন]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|আলাপ]] | [[Special:Contributions/$1|অবদান]] | [[Special:Block/$1|বাধা দিন]])",
+ "checkuser-token-fail": "সেশন ব্যর্থতা। অনুগ্রহপূর্বক আবার চেষ্টা করুন।",
+ "apihelp-query+checkuser-param-reason": "পরীক্ষার কারণ।"
}
diff --git a/CheckUser/i18n/br.json b/CheckUser/i18n/br.json
index d843058f..d2565a41 100644
--- a/CheckUser/i18n/br.json
+++ b/CheckUser/i18n/br.json
@@ -67,12 +67,6 @@
"checkuser-ipeditcount": "~$1 gant an holl implijerien",
"checkuser-log-return": "Mont da furmskrid pennañ ar gwiriañ implijerien",
"checkuser-limited": "'''Krennet eo bet an disoc'hoù-mañ evit abegoù efeduster.'''",
- "checkuser-log-userips": "$1 en deus kavet IPoù evit $2",
- "checkuser-log-ipedits": "$1 en deus bet kemmoù evit $2",
- "checkuser-log-ipusers": "$1 en deus kavet implijerien evit $2",
- "checkuser-log-ipedits-xff": "$1 en deus kavet kemmoù evit $2 dre XFF",
- "checkuser-log-ipusers-xff": "Kavet en deus $1 implijerien $2 dre XFF",
- "checkuser-log-useredits": "$1 en deus bet kemmoù evit $2",
"checkuser-autocreate-action": "zo bet krouet ent emgefre",
"checkuser-create-action": "zo bet krouet",
"checkuser-email-action": "en deus kaset ur postel d'an implijer « $1 »",
diff --git a/CheckUser/i18n/bs.json b/CheckUser/i18n/bs.json
index b1f5d04e..84b7668b 100644
--- a/CheckUser/i18n/bs.json
+++ b/CheckUser/i18n/bs.json
@@ -8,24 +8,25 @@
]
},
"checkuser-summary": "Ovaj alat skenira nedavne promjene te vraća IP adrese koje koriste korisnici ili prikazuje podatke o izmjenama i korisnicima za pojedinu IP adresu.\nKorisnici i izmjene nekog IP klijenta mogu biti nađene preko XFF zaglavlja uz primjenu oznake \"/xff\" pored IP-a. Podržani su i IPv4 (CIDR $1-32) i IPv6 (CIDR $2-128).\nZbog boljih performansi, neće biti prikazano više od 5000 izmjena.\nKoristite ovo u skladu s pravilima.",
- "checkuser-desc": "Omogućuje korisnicima sa adekvatnim dopuštenjima sposobnost da provjeravaju korisničke IP adrese i druge podatke",
- "checkuser-logcase": "Pretraga zapisa razlikuje velika i mala slova.",
+ "checkuser-desc": "Daje korisnicima s odgovarajućim pravima mogućnost provjere korisničkih IP adresa i drugih informacija",
+ "checkuser-logcase": "Pretraga zapisnika razlikuje velika i mala slova.",
"checkuser": "Provjera korisnika",
"checkuserlog": "Zapisnik CheckUsera",
"checkuser-contribs": "provjeri korisničke IPe",
- "group-checkuser": "Provjera korisnika",
- "group-checkuser-member": "Provjera {{GENDER:$1|korisnika|korisnice}}",
- "right-checkuser": "Provjera korisničkih IP adresa i drugih informacija",
- "right-checkuser-log": "Pregledanje zapisa provjere korisnika",
- "grouppage-checkuser": "{{ns:project}}:Provjera korisnika",
+ "group-checkuser": "Provjeravači",
+ "group-checkuser-member": "{{GENDER:$1|provjeravač|provjeravačica}}",
+ "right-checkuser": "Provjeravanje korisničkih IP-adresa i drugih podataka",
+ "right-checkuser-log": "Pregledanje zapisnika provjere korisnika",
+ "action-checkuser": "provjerite korisničke IP-adrese i druge podatke",
+ "action-checkuser-log": "pregledate zapisnik provjere korisnika",
+ "grouppage-checkuser": "{{ns:project}}:Provjeravač",
"checkuser-reason": "Razlog:",
- "checkuser-showlog": "Prikaži zapis",
+ "checkuser-showlog": "Prebaci na zapisnik provjeravača",
"checkuser-query": "Pretraži nedavne izmjene",
"checkuser-target": "IP adresa ili korisničko ime:",
"checkuser-users": "Nađi korisnike",
"checkuser-edits": "Prikaži izmjene",
"checkuser-ips": "Prikaži IP adrese",
- "checkuser-search": "Traži",
"checkuser-period": "Trajanje:",
"checkuser-week-1": "Posljednja sedmica",
"checkuser-week-2": "zadnje dvije sedmice",
@@ -33,12 +34,12 @@
"checkuser-all": "sve",
"checkuser-cidr-label": "Pronađi zajednički opseg i pogođene adrese za spisak IPova",
"checkuser-cidr-res": "Zajednički CIDR:",
- "checkuser-empty": "Zapis ne sadrži stavke.",
+ "checkuser-empty": "Zapisnik je prazan.",
"checkuser-nomatch": "Nisu nađeni traženi rezultati.",
"checkuser-nomatch-edits": "Nije pronađen traženi upit.\nPosljednja izmjena bila je $1 u $2.",
"checkuser-check": "Provjera",
- "checkuser-log-fail": "Nije moguće dodati stavku zapisa",
- "checkuser-nolog": "Nije pronađena datoteka zapisa.",
+ "checkuser-log-fail": "Ne mogu dodati stavku u zapisnik",
+ "checkuser-nolog": "Zapisnik nije pronađen.",
"checkuser-blocked": "Blokiran",
"checkuser-gblocked": "Blokiran globalno",
"checkuser-locked": "Zaključano",
@@ -46,6 +47,7 @@
"checkuser-localonly": "Nije spojeno",
"checkuser-massblock": "Blokiraj odabrane korisnike",
"checkuser-massblock-text": "Odabrani računi će biti neograničeno blokirani, sa omogućenom automatskom blokadom i onemogućenim pravljenjem računa.\nIP adrese će biti blokirane u periodu od jedne sedmice samo za IP korisnike i sa onemogućenim pravljenjem računa.",
+ "checkuser-blocktalk": "Spriječi uređivanje vlastite stranice za razgovor za vrijeme blokiranja",
"checkuser-blocktag": "Mijenja korisničku stranicu sa:",
"checkuser-blocktag-talk": "Mijenja sadržaj stranice za razgovor sa:",
"checkuser-massblock-commit": "Blokiraj odabrane korisnike",
@@ -55,23 +57,19 @@
"checkuser-block-noreason": "Morate navesti razlog za blokiranje.",
"checkuser-noreason": "Morate navesti razlog za ovaj upit.",
"checkuser-accounts": "$1 {{PLURAL:$1|novi korisnik|nova korisnika|novih korisnika}}",
- "checkuser-too-many": "Pronađeno previše rezultata (po procjeni upita), molimo da suzite CIDR.\nOvdje su prikazane korištene IP adrese (najviše 5000, poredano po adresi):",
+ "checkuser-too-many": "Pronađeno previše rezultata (po procjeni upita), suzite CIDR.\nOvdje su prikazane korištene IP-adrese (najviše 5000, poredano po adresi):",
"checkuser-user-nonexistent": "Navedeni korisnik ne postoji.",
- "checkuser-search-form": "Nađi stavke zapisa gdje je $1 jednako $2",
+ "checkuser-search": "Pretraži unose u zapisniku provjeravača",
"checkuser-search-submit": "Traži",
"checkuser-search-initiator": "pokretač",
"checkuser-search-target": "cilj",
"checkuser-ipeditcount": "~$1 od svih korisnika",
- "checkuser-log-return": "Povratak na glavni obrazac provjere korisnika",
+ "checkuser-showmain": "Prebaci na glavni obrazac provjeravača",
"checkuser-limited": "'''Ovi rezultati su skraćeni iz razloga bolje performanse.'''",
- "checkuser-log-userips": "Korisnik $1 je našao IP adrese za $2",
- "checkuser-log-ipedits": "Korisnik $1 je našao izmjene za $2",
- "checkuser-log-ipusers": "$1 je našao korisnike na $2",
- "checkuser-log-ipedits-xff": "$1 je našao izmjene za XFF $2",
- "checkuser-log-ipusers-xff": "Korisnik $1 je našao korisnike za XFF $2",
- "checkuser-log-useredits": "$1 nađene izmjene za $2",
"checkuser-autocreate-action": "je automatski napravljen",
"checkuser-create-action": "je napravljen",
"checkuser-email-action": "slanje e-mail korisniku \"$1\"",
- "checkuser-reset-action": "poništi šifru za korisnika \"$1\""
+ "checkuser-reset-action": "poništi šifru za korisnika \"$1\"",
+ "apihelp-query+checkuser-param-timecond": "Vremensko ograničenje za korisničke podatke (npr, \"-2 weeks\" ili \"2 weeks ago\").",
+ "apierror-checkuser-timelimit": "Morate koristiti ispravno vremensko ograničenje (npr, \"-2 weeks\" ili \"2 weeks ago\")."
}
diff --git a/CheckUser/i18n/ca.json b/CheckUser/i18n/ca.json
index e013d3c6..36d8efe2 100644
--- a/CheckUser/i18n/ca.json
+++ b/CheckUser/i18n/ca.json
@@ -37,7 +37,6 @@
"checkuser-users": "Retorna els usuaris",
"checkuser-edits": "Obté edicions",
"checkuser-ips": "Retorna adreces IP",
- "checkuser-search": "Cerca",
"checkuser-period": "Durada:",
"checkuser-week-1": "Darrera setmana",
"checkuser-week-2": "Darreres dues setmanes",
@@ -54,34 +53,28 @@
"checkuser-blocked": "Blocat",
"checkuser-gblocked": "Blocat globalment",
"checkuser-locked": "Blocat",
- "checkuser-wasblocked": "Prèviament bloquejat",
+ "checkuser-wasblocked": "Prèviament blocat",
"checkuser-localonly": "No unificat",
- "checkuser-massblock": "Bloqueja els usuaris seleccionats",
+ "checkuser-massblock": "Bloca els usuaris seleccionats",
"checkuser-massblock-text": "Els comptes seleccionats seran blocat indefinidament, amb l'''autoblocking'' activat i prohibint la creació de nous comptes.\nLes adreces IP seran blocades per una setmana només amb la prohibició de crear comptes.",
"checkuser-blocktag": "Canvia les pàgines d'usuari per:",
"checkuser-blocktag-talk": "Reemplaça les pàgines de discussió amb:",
- "checkuser-massblock-commit": "Bloqueja usuaris seleccionats",
+ "checkuser-massblock-commit": "Bloca els usuaris seleccionats",
"checkuser-block-success": "'''{{PLURAL:$2|S'ha blocat|S'han blocat}} {{PLURAL:$2|l'usuari|els usuaris}} $1.'''",
"checkuser-block-failure": "'''No s'han blocat usuaris.'''",
"checkuser-block-limit": "Massa usuaris seleccionats.",
- "checkuser-block-noreason": "Heu d'indicar un motiu pels bloquejos.",
+ "checkuser-block-noreason": "Heu d'indicar un motiu pels blocatges.",
"checkuser-noreason": "Heu de donar un motiu per a executar aquesta consulta.",
"checkuser-accounts": "$1 {{PLURAL:$1|nou compte|nous comptes}}",
"checkuser-too-many": "Hi ha massa resultats (d'acord amb l'estimació de la consulta), cal que useu un CIDR més petit.\nAquí teniu les IP usades (màx. 5000 ordenades per adreça):",
"checkuser-user-nonexistent": "L'usuari especificat no existeix.",
- "checkuser-search-form": "Cerca entrades al registre on $1 és $2",
+ "checkuser-search": "Cerca",
"checkuser-search-submit": "Cerca",
"checkuser-search-initiator": "l'iniciador",
"checkuser-search-target": "el consultat",
"checkuser-ipeditcount": "~$1 de tots els usuaris",
- "checkuser-log-return": "Canvia al formulari principal de verificador de comptes d'usuari",
+ "checkuser-showmain": "Canvia al formulari principal de verificador de comptes d'usuari",
"checkuser-limited": "'''Els resultats s'han trucat per raons de rendiment.'''",
- "checkuser-log-userips": "$1 consulta les IP de $2",
- "checkuser-log-ipedits": "$1 consulta les edicions de $2",
- "checkuser-log-ipusers": "$1 consulta els usuaris de $2",
- "checkuser-log-ipedits-xff": "$1 consulta les edicions del XFF $2",
- "checkuser-log-ipusers-xff": "$1 consulta els usuaris del XFF $2",
- "checkuser-log-useredits": "$1 consulta les edicions de $2",
"checkuser-autocreate-action": "fou automàticament creat",
"checkuser-create-action": "va ser creat",
"checkuser-email-action": "S'ha enviat un missatge de correu electrònic a {{GENDER:$1|l'usuari|la usuària}} $1",
diff --git a/CheckUser/i18n/ce.json b/CheckUser/i18n/ce.json
index 6d6fa412..3a49ab99 100644
--- a/CheckUser/i18n/ce.json
+++ b/CheckUser/i18n/ce.json
@@ -22,7 +22,6 @@
"checkuser-users": "Керла декъашхой",
"checkuser-edits": "Нисдарш хьажа",
"checkuser-ips": "Деха IP-адрес",
- "checkuser-search": "Лахар",
"checkuser-period": "Йохалла:",
"checkuser-week-1": "тӀаьххьара кӀира",
"checkuser-week-2": "тӀаьххьара ши кӀира",
@@ -34,7 +33,10 @@
"checkuser-gblocked": "Глобальни блоктоьхна",
"checkuser-locked": "Блоктоьхна",
"checkuser-block-success": "'''ХӀинца {{PLURAL:$2|1=блоктоьхна $1 декъашхочун|блоктоьхна $1 декъашхойн}}.'''",
+ "checkuser-search": "Лахар",
"checkuser-search-submit": "Лахар",
"checkuser-search-target": "Ӏалашо",
+ "checkuser-log-search-target": "Ӏалашо:",
+ "checkuser-log-search-type": "Лахар:",
"checkuser-create-action": "кхолийна"
}
diff --git a/CheckUser/i18n/cs.json b/CheckUser/i18n/cs.json
index 012aad52..5ec4f027 100644
--- a/CheckUser/i18n/cs.json
+++ b/CheckUser/i18n/cs.json
@@ -23,13 +23,12 @@
"grouppage-checkuser": "{{ns:project}}:Revize uživatele",
"checkuser-reason": "Důvod:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Zobrazit záznamy",
+ "checkuser-showlog": "Přepnout na protokol kontroly uživatelů",
"checkuser-query": "Dotaz na poslední změny",
"checkuser-target": "IP adresa nebo uživatelské jméno:",
"checkuser-users": "Najít uživatele",
"checkuser-edits": "Najít editace",
"checkuser-ips": "Najít IP adresy",
- "checkuser-search": "Hledat",
"checkuser-period": "Období:",
"checkuser-week-1": "poslední týden",
"checkuser-week-2": "poslední dva týdny",
@@ -50,6 +49,8 @@
"checkuser-localonly": "Nesjednocený",
"checkuser-massblock": "Zablokovat vybrané uživatele",
"checkuser-massblock-text": "Vybrané účty budou zablokovány do odvolání, se zapnutým automatickým blokováním a zákazem tvorby nových účtů. IP adresy budou zablokovány na týden, pouze pro neregistrované uživatele a se zákazem tvorby nových účtů.",
+ "checkuser-blockemail": "Bránit v posílání e-mailů",
+ "checkuser-blocktalk": "Zabránit editovat vlastní uživatelskou diskusi po dobu zablokování",
"checkuser-blocktag": "Nahradit obsah uživatelských stránek textem:",
"checkuser-blocktag-talk": "Nahradit obsah uživatelských diskusí textem:",
"checkuser-massblock-commit": "Zablokovat vybrané uživatele",
@@ -57,26 +58,31 @@
"checkuser-block-failure": "'''Žádný uživatel nebyl zablokován.'''",
"checkuser-block-limit": "Vybráno příliš mnoho uživatelů",
"checkuser-block-noreason": "Musíte zadat důvod blokování",
+ "checkuser-centralauth-multilock": "Hromadně zamknout vybrané účty",
"checkuser-noreason": "K tomuto dotazu musíte uvést důvod.",
"checkuser-accounts": "$1 {{PLURAL:$1|nový účet|nové účty|nových účtů}}",
"checkuser-too-many": "Příliš mnoho výsledků (podle odhadu dotazu), zkuste omezit CIDR.\nNíže jsou použité IP adresy (nejvýše 5000, seřazené podle adresy):",
"checkuser-user-nonexistent": "Zadaný uživatel neexistuje.",
- "checkuser-search-form": "Hledej záznamy, kde $1 je $2",
+ "checkuser-search": "Hledání v záznamech kontroly uživatelů",
"checkuser-search-submit": "Hledat",
"checkuser-search-initiator": "kontrolující",
"checkuser-search-target": "kontrolováno",
+ "checkuser-log-search-target": "Cíl:",
+ "checkuser-log-search-type": "Hledat podle:",
"checkuser-ipeditcount": "asi $1 od všech uživatelů",
- "checkuser-log-return": "Přepnout na hlavní formulář Kontroly uživatele",
+ "checkuser-showmain": "Přepnout na hlavní formulář Kontroly uživatele",
"checkuser-limited": "'''Výsledky byly z výkonnostních důvodů zkráceny.'''",
- "checkuser-log-userips": "$1 zjišťuje IP adresy uživatele $2",
- "checkuser-log-ipedits": "$1 zjišťuje editace z IP $2",
- "checkuser-log-ipusers": "$1 zjišťuje uživatele z IP $2",
- "checkuser-log-ipedits-xff": "$1 zjišťuje editace s XFF $2",
- "checkuser-log-ipusers-xff": "$1 zjišťuje uživatele s XFF $2",
- "checkuser-log-useredits": "$1 zjišťuje editace od $2",
+ "checkuser-log-entry-userips": "$3, $1 zjišťuje IP adresy uživatele $2",
+ "checkuser-log-entry-ipedits": "$3, $1 zjišťuje editace z $2",
+ "checkuser-log-entry-ipusers": "$3, $1 zjišťuje uživatele z $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 zjišťuje editace s XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 zjišťuje uživatele s XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 zjišťuje editace uživatele $2",
"checkuser-autocreate-action": "byl automaticky vytvořen",
"checkuser-create-action": "byl vytvořen",
"checkuser-email-action": "odeslal e-mail uživateli „$1“",
"checkuser-reset-action": "požádal o nové heslo pro uživatele „$1“",
+ "checkuser-userlinks-ip": "([[User_talk:$1|diskuse]] | [[Special:Contributions/$1|příspěvky]] | [[Special:Block/$1|zablokovat]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|diskuse]] | [[Special:Contributions/$1|příspěvky]] | [[Special:Block/$1|zablokovat]])",
"checkuser-token-fail": "Chyba relace. Zkuste to prosím znovu."
}
diff --git a/CheckUser/i18n/csb.json b/CheckUser/i18n/csb.json
index 25803bcf..18ea19d4 100644
--- a/CheckUser/i18n/csb.json
+++ b/CheckUser/i18n/csb.json
@@ -1,9 +1,13 @@
{
"@metadata": {
"authors": [
- "Byulent"
+ "Byulent",
+ "Kirsan",
+ "Kaszeba"
]
},
- "checkuser-search": "Szëkba",
- "checkuser-all": "wszëtczé"
+ "checkuser-all": "wszëtczé",
+ "checkuser-search": "Szëkna w registrze sprôwdzających brëkòwników",
+ "checkuser-search-target": "cél",
+ "checkuser-log-search-target": "Cél:"
}
diff --git a/CheckUser/i18n/cy.json b/CheckUser/i18n/cy.json
index 83bacb63..9a8cc36c 100644
--- a/CheckUser/i18n/cy.json
+++ b/CheckUser/i18n/cy.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Lloffiwr"
+ "Lloffiwr",
+ "Robin Owain"
]
},
"checkuser-summary": "Mae'r teclyn hwn yn sganio newidiadau diweddar i gael hyd i'r cyfeiriadau IP a ddefnyddir gan ddefnyddiwr, neu i ddangos data golygu neu ddata defnyddiwr ar gyfer rhyw gyfeiriad IP. \nGall y teclyn gael hyd i ddefnyddwyr rhyw gyfeiriad IP cleient, neu'r golygiadau a ddaw ohono, drwy atodi \"/xff\" i'r cyfeiriad IP. Mae IPv4 (CIDR $1-32) a IPv6 (CIDR $2-128) yn cael eu cynnal. \nNi chaiff mwy na 5,000 o olygiadau eu dychwelyd er mwyn peidio amharu ar berfformiad y wefan. \nDefnyddiwch hwn yn unol â'n polisi.",
@@ -20,13 +21,12 @@
"grouppage-checkuser": "{{ns:project}}:Archwilio defnyddwyr",
"checkuser-reason": "Rheswm:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Dangos y lòg",
+ "checkuser-showlog": "Newid i lòg CheckUser",
"checkuser-query": "Chwilio'r newidiadau diweddar",
"checkuser-target": "Defnyddiwr neu gyfeiriad IP:",
"checkuser-users": "Nôl defnyddwyr",
"checkuser-edits": "Nôl golygiadau",
"checkuser-ips": "Nôl cyfeiriadau IP",
- "checkuser-search": "Chwilio",
"checkuser-period": "Cyfnod:",
"checkuser-week-1": "yr wythnos ddiwethaf",
"checkuser-week-2": "y pythefnos ddiwethaf",
@@ -56,23 +56,18 @@
"checkuser-block-noreason": "Rhaid cynnig rheswm dros y blociau.",
"checkuser-noreason": "Rhaid cynnig rheswm dros yr ymholiad hwn.",
"checkuser-accounts": "$1 {{PLURAL:$1|cyfrif|cyfrif|gyfrif|chyfrif|chyfrif|cyfrif}} newydd",
- "checkuser-too-many": "Mae gormod o lawer o ganlyniadau (yn ôl amcangyfrif yr ymholiad), cyfyngwch y CIDR os gwelwch yn dda. Dyma'r IPau a ddefnyddiwyd (hyd at 5000 ohonynt, yn nhrefn y cyfeiriadau):",
+ "checkuser-too-many": "Mae gormod o lawer o ganlyniadau (yn ôl amcangyfrif yr ymholiad), cyfyngwch y CIDR. Dyma'r IPau a ddefnyddiwyd (hyd at 5000 ohonynt, yn nhrefn y cyfeiriadau):",
"checkuser-user-nonexistent": "Nid yw'r defnyddiwr a enwyd ar gael.",
- "checkuser-search-form": "Canfod y cofnodion lòg sy'n ymwneud â'r $1 $2",
+ "checkuser-search": "Chwiliwch a gwirwch logiau'r defnyddiwr",
"checkuser-search-submit": "Chwilier",
"checkuser-search-initiator": "archwiliwr",
"checkuser-search-target": "y targed",
"checkuser-ipeditcount": "~$1 gan holl ddefnyddwyr y cyfeiriad IP",
- "checkuser-log-return": "Mynd at brif ffurflen Archwilio Defnyddwyr",
+ "checkuser-showmain": "Mynd at brif ffurflen Archwilio Defnyddwyr",
"checkuser-limited": "'''Cwtogwyd ar y canlyniadau hyn er mwyn gallu perfformio'r dasg.'''",
- "checkuser-log-userips": "$1 wedi nôl y cyfeiriadau IP ynghlwm wrth $2",
- "checkuser-log-ipedits": "$1 wedi nôl y golygiadau gan $2",
- "checkuser-log-ipusers": "$1 wedi nôl y defnyddwyr sy'n defnyddio $2",
- "checkuser-log-ipedits-xff": "$1 wedi nôl y golygiadau o'r cyfeiriad XFF $2",
- "checkuser-log-ipusers-xff": "$1 wedi nôl y defnyddwyr sy'n defnyddio'r cyfeiriad XFF $2",
- "checkuser-log-useredits": "$1 wedi nôl y golygiadau gan $2",
"checkuser-autocreate-action": "wedi ei greu'n awtomatig",
"checkuser-create-action": "wedi ei greu",
"checkuser-email-action": "wedi anfon e-bost at y defnyddiwr \"$1\"",
- "checkuser-reset-action": "wedi ailosod y cyfrinair ar gyfer y defnyddiwr \"$1\""
+ "checkuser-reset-action": "wedi ailosod y cyfrinair ar gyfer y defnyddiwr \"$1\"",
+ "checkuser-token-fail": "Methodd y sesiwn; ceisiwch eto."
}
diff --git a/CheckUser/i18n/da.json b/CheckUser/i18n/da.json
index d26244f1..e0108f14 100644
--- a/CheckUser/i18n/da.json
+++ b/CheckUser/i18n/da.json
@@ -74,12 +74,6 @@
"checkuser-ipeditcount": "~$1 fra alle brugere",
"checkuser-log-return": "Gå til hovedformularen for tjekbruger",
"checkuser-limited": "'''Disse resultater er blevet afkortet af hensyn til ydeevnen.'''",
- "checkuser-log-userips": "$1 fik IP'er for $2",
- "checkuser-log-ipedits": "$1 fik redigeringer for $2",
- "checkuser-log-ipusers": "$1 fik brugere for $2",
- "checkuser-log-ipedits-xff": "$1 fik redigeringer for XFF $2",
- "checkuser-log-ipusers-xff": "$1 fik brugere for XFF $2",
- "checkuser-log-useredits": "$1 fik redigeringer for $2",
"checkuser-autocreate-action": "blev oprettet automatisk",
"checkuser-create-action": "blev oprettet",
"checkuser-email-action": "sendte en e-mail til \"$1\"",
diff --git a/CheckUser/i18n/de.json b/CheckUser/i18n/de.json
index 547e3860..76e8ba6e 100644
--- a/CheckUser/i18n/de.json
+++ b/CheckUser/i18n/de.json
@@ -11,7 +11,8 @@
"Umherirrender",
"Luke081515",
"Tiin",
- "J. 'mach' wust"
+ "J. 'mach' wust",
+ "McDutchie"
]
},
"checkuser-summary": "Dieses Werkzeug durchsucht die letzten Änderungen, um die IP-Adressen eines Benutzers bzw. die Bearbeitungen/Benutzernamen für eine IP-Adresse zu ermitteln. Benutzer und Bearbeitungen einer IP-Adresse können auch nach Informationen aus den XFF-Headern abgefragt werden, indem der IP-Adresse ein „/xff“ angehängt wird. IPv4 (CIDR $1-32) und IPv6 (CIDR $2-128) werden unterstützt.\nZur Aufrechterhaltung der Leistungsfähigkeit werden maximal 5000 Bearbeitungen ausgegeben. Benutze CheckUser ausschließlich in Übereinstimmung mit den Datenschutzrichtlinien.",
@@ -30,13 +31,12 @@
"grouppage-checkuser": "{{ns:project}}:CheckUser",
"checkuser-reason": "Grund:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Logbuch anzeigen",
+ "checkuser-showlog": "Zum Checkuser-Logbuch wechseln",
"checkuser-query": "Letzte Änderungen abfragen",
"checkuser-target": "IP-Adresse oder Benutzername:",
"checkuser-users": "Hole Benutzer",
"checkuser-edits": "Bearbeitungen abrufen",
"checkuser-ips": "Hole IP-Adressen",
- "checkuser-search": "Suchen",
"checkuser-period": "Dauer:",
"checkuser-week-1": "letzte 7 Tage",
"checkuser-week-2": "letzte 14 Tage",
@@ -47,7 +47,7 @@
"checkuser-empty": "Das Logbuch enthält keine Einträge.",
"checkuser-nomatch": "Es wurden keine Übereinstimmungen gefunden.",
"checkuser-nomatch-edits": "Es wurde keine Übereinstimmungen gefunden.\nDie letzte Bearbeitung hat am $1 um $2 Uhr stattgefunden.",
- "checkuser-check": "Ausführen",
+ "checkuser-check": "Abfragen",
"checkuser-log-fail": "Der Logbuch-Eintrag kann nicht hinzugefügt werden.",
"checkuser-nolog": "Es ist keine Logbuchdatei vorhanden.",
"checkuser-blocked": "gesperrt",
@@ -57,6 +57,8 @@
"checkuser-localonly": "nicht zusammengeführt",
"checkuser-massblock": "Ausgewählte Benutzer sperren",
"checkuser-massblock-text": "Die ausgewählten Benutzerkonten werden dauerhaft gesperrt (Autoblock ist aktiv, die Anlage neuer Benutzerkonten wird unterbunden).\nIP-Adressen werden für eine Woche gesperrt (nur für unangemeldete Benutzer, die Anlage neuer Benutzerkonten wird unterbunden).",
+ "checkuser-blockemail": "Vom Versenden von E-Mails abhalten",
+ "checkuser-blocktalk": "Vom Bearbeiten der eigenen Diskussionsseite abhalten, während der Benutzer gesperrt ist.",
"checkuser-blocktag": "Inhalt der Benutzerseiten ersetzen durch:",
"checkuser-blocktag-talk": "Inhalt der Benutzerdiskussionsseiten ersetzen durch:",
"checkuser-massblock-commit": "Ausgewählte Benutzer sperren",
@@ -64,43 +66,52 @@
"checkuser-block-failure": "'''Es wurden keine Benutzer gesperrt.'''",
"checkuser-block-limit": "Es wurden zu viele Benutzer ausgewählt.",
"checkuser-block-noreason": "Du musst einen Grund für die Sperre angeben.",
+ "checkuser-centralauth-multilock": "Ausgewählte Benutzerkonten sperren",
"checkuser-noreason": "Für diese Abfrage muss eine Begründung angegeben werden.",
"checkuser-accounts": "$1 {{PLURAL:$1|neues Benutzerkonto|neue Benutzerkonten}}",
"checkuser-too-many": "Die Ergebnisliste ist zu lang (nach Schätzung der Abfrage). Bitte grenze den IP-Adressbereich weiter ein.\nEs folgen die benutzten IP-Adressen (maximal 5000, sortiert nach Adresse):",
"checkuser-user-nonexistent": "Das angegebene Benutzerkonto ist nicht vorhanden.",
- "checkuser-search-form": "Suche Logbucheinträge, bei denen $1 $2 ist.",
+ "checkuser-search": "Einträge im Checkuser-Logbuch durchsuchen",
"checkuser-search-submit": "Suche",
"checkuser-search-initiator": "CheckUser-Berechtigter",
"checkuser-search-target": "Abfrageziel (Benutzerkonto/IP-Adresse)",
+ "checkuser-log-search-target": "Ziel:",
+ "checkuser-log-search-type": "Suchen nach:",
"checkuser-ipeditcount": "~ $1 von allen Benutzern",
- "checkuser-log-return": "Zum CheckUser-Hauptformular wechseln",
+ "checkuser-showmain": "Zum CheckUser-Hauptformular wechseln",
"checkuser-limited": "'''Die Ergebnisliste wurde zur Aufrechterhaltung der Leistungsfähigkeit gekürzt.'''",
- "checkuser-log-userips": "$1 holte IP-Adressen für $2",
- "checkuser-log-ipedits": "$1 holte Bearbeitungen für $2",
- "checkuser-log-ipusers": "$1 holte Benutzer für $2",
- "checkuser-log-ipedits-xff": "$1 holte Bearbeitungen für XFF $2",
- "checkuser-log-ipusers-xff": "$1 holte Benutzer für XFF $2",
- "checkuser-log-useredits": "$1 holte Bearbeitungen für $2",
+ "checkuser-log-entry-userips": "$1 rief am $3 die IP-Adressen für $2 ab",
+ "checkuser-log-entry-ipedits": "$1 rief am $3 die Bearbeitungen für $2 ab",
+ "checkuser-log-entry-ipusers": "$1 rief am $3 die Benutzer für $2 ab",
+ "checkuser-log-entry-ipedits-xff": "$1 rief am $3 die Bearbeitungen für XFF $2 ab",
+ "checkuser-log-entry-ipusers-xff": "$1 rief am $3 die Benutzer für XFF $2 ab",
+ "checkuser-log-entry-useredits": "$1 rief am $3 die Bearbeitungen für $2 ab",
"checkuser-autocreate-action": "wurde automatisch erstellt",
"checkuser-create-action": "wurde erstellt",
"checkuser-email-action": "sendete E-Mail an „$1“",
"checkuser-reset-action": "forderte ein Passwort für {{GENDER:$1|Benutzer|Benutzerin}} „$1“ an",
+ "checkuser-userlinks-ip": "([[User_talk:$1|Diskussion]] | [[Special:Contributions/$1|Beiträge]] | [[Special:Block/$1|Sperren]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|Diskussion]] | [[Special:Contributions/$1|Beiträge]] | [[Special:Block/$1|Sperren]])",
"checkuser-token-fail": "Sitzungsfehler. Bitte erneut versuchen.",
"apihelp-query+checkuser-description": "Überprüfen, welche IP-Adressen durch einen bestimmten Benutzernamen oder welche Benutzernamen von einer bestimmten IP-Adresse verwendet werden.",
"apihelp-query+checkuser-param-request": "Art der CheckUser-Anfrage:\n;userips:Ermittelt die IP-Adresse des Ziel-Benutzers.\n;edits:Ermittelt Änderungen der Ziel-IP-Adresse oder des Adressbereichs.\n;ipusers:Ermittelt den Benutzer der Ziel-IP-Adresse oder des Adressbereichs.",
"apihelp-query+checkuser-param-target": "Zu überprüfender Benutzername, CIDR-Bereich oder zu überprüfende IP-Adresse.",
"apihelp-query+checkuser-param-reason": "Grund für die Überprüfung.",
"apihelp-query+checkuser-param-limit": "Zeilenlimit.",
- "apihelp-query+checkuser-param-timecond": "Zeitlimit der Benutzerdaten (wie „2 weeks“).",
+ "apihelp-query+checkuser-param-timecond": "Zeitlimit der Benutzerdaten (wie „-2 weeks“ oder „2 weeks ago“).",
"apihelp-query+checkuser-param-xff": "XFF-Daten anstelle der IP-Adresse verwenden.",
"apihelp-query+checkuser-example-1": "IP-Adressen für [[User:Example]] überprüfen",
"apihelp-query+checkuser-example-2": "Bearbeitungen von 192.0.2.0/24 überprüfen",
"apihelp-query+checkuserlog-description": "Einträge aus dem CheckUser-Logbuch abrufen.",
+ "apihelp-query+checkuserlog-summary": "Ruft Einträge aus dem Checkuser-Logbuch ab.",
"apihelp-query+checkuserlog-param-user": "Benutzername des zu überprüfenden Benutzers.",
"apihelp-query+checkuserlog-param-target": "Überprüfter Benutzer, CIDR-Bereich oder überprüfte IP-Adresse.",
"apihelp-query+checkuserlog-param-limit": "Zeilenlimit.",
"apihelp-query+checkuserlog-param-from": "Der Zeitstempel, bei dem die Aufzählung beginnen soll.",
"apihelp-query+checkuserlog-param-to": "Der Zeitstempel, bei dem die Aufzählung enden soll.",
"apihelp-query+checkuserlog-example-1": "Prüfungen von [[User:Example]] anzeigen",
- "apihelp-query+checkuserlog-example-2": "Zeigt Überprüfungen von 192.0.2.0/24 nach 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Zeigt Überprüfungen von 192.0.2.0/24 nach 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Du musst zur Überprüfung einen Grund angeben.",
+ "apierror-checkuser-timelimit": "Du musst das korrekte Zeitlimit verwenden (wie „-2 weeks“ oder „2 weeks ago“).",
+ "apierror-checkuser-invalidmode": "Ungültiger Abfragemodus"
}
diff --git a/CheckUser/i18n/diq.json b/CheckUser/i18n/diq.json
index 080e7b76..e13b3d3f 100644
--- a/CheckUser/i18n/diq.json
+++ b/CheckUser/i18n/diq.json
@@ -5,23 +5,25 @@
"Gorizon",
"Mirzali",
"Xoser",
- "Marmase"
+ "Marmase",
+ "Kumkumuk",
+ "1917 Ekim Devrimi"
]
},
"checkuser-summary": "Eno xacet vurnayışanê neweyan sken keno ke adresanê IPyan reyna biaro ke bımocno ra yew adresa IPya melumatê karberi ser.\nKarberan u vurnayışan ke yew IPyê karberi kerd a reyna yeno pê XFF u \"/xff\". IPv4 (CIDR $1-32) u IPv6 (CIDR $2-128) rê zi desteg beno.\n5000 zafêr vurnayışan sero netice nêdano, qet performans hêdi beno.\nEna politika ma sero kar bıke.",
"checkuser-desc": "Karberan rê destur bide ke adresanê IPyan u enformasyonê bînan kontrol bike",
"checkuser-logcase": "Ena bigêrayîşê logî case sensitive o.",
- "checkuser": "Karber kontrol bike",
+ "checkuser": "Teftişwan",
"checkuserlog": "Cıkewtışê karberi qontrol ke",
"checkuser-contribs": "adresanê IPyê karberi kontrol ke",
"checkuser-contribs-log": "weynayışê peyênê karberi",
- "group-checkuser": "Karberan kontrol ke",
+ "group-checkuser": "Weynayoği",
"group-checkuser-member": "{{GENDER:$1|Kontrolkar}}",
"right-checkuser": "Adresanê IPyê karberi û melumatê bini kontrol ke",
"right-checkuser-log": "Qeydé rocekané karber cernayışi bıvin",
"action-checkuser": "adresanê IPyê karberi û melumatê bini kontrol ke",
"action-checkuser-log": "Rocekane Karber kontroli bıvin",
- "grouppage-checkuser": "{{ns:project}}:Karber kontrol bike",
+ "grouppage-checkuser": "{{ns:project}}:Teftişwan",
"checkuser-reason": "Sebeb:",
"checkuser-reason-api": "API: $1",
"checkuser-showlog": "Qeydé asayışi",
@@ -30,7 +32,6 @@
"checkuser-users": "Karberî bivîne",
"checkuser-edits": "Vurnayışan bıgê",
"checkuser-ips": "Adresê IPyî bivîne",
- "checkuser-search": "Cı geyre",
"checkuser-period": "Sure:",
"checkuser-week-1": "hefteyê verînî",
"checkuser-week-2": "di hefteyê verînî",
@@ -62,19 +63,13 @@
"checkuser-accounts": "$1 {{PLURAL:$1|hesab|hesaban}} newî",
"checkuser-too-many": "Zaf neticiyan esto (ser texminê cigeyrayîşî), şima ra rica keno CIDR qickek bike.\nTiya de IPyan ke sero kar biyo (5000 max, pê adresan):",
"checkuser-user-nonexistent": "Karbero ke ti specife kerd, ay database ma de niesto.",
- "checkuser-search-form": "Entryanê logan ke $1 biy $2, înan bivîne",
+ "checkuser-search": "Cı geyre",
"checkuser-search-submit": "Cı geyre",
"checkuser-search-initiator": "başlî kerdoğ",
"checkuser-search-target": "hedef",
"checkuser-ipeditcount": "~$1 karberan pêrıne ra",
- "checkuser-log-return": "Peyd şori form de KarberKontroli",
+ "checkuser-showmain": "Peyd şori form de KarberKontroli",
"checkuser-limited": "'''Ena neticeyan qe sebabanê performansî ra kilm kerd.'''",
- "checkuser-log-userips": "Qe $2, $1adresanê IPyan girewt",
- "checkuser-log-ipedits": "Qe $2, $1vurnayîşan girewt",
- "checkuser-log-ipusers": "Qe $2, $1 karberan girewt",
- "checkuser-log-ipedits-xff": "Qe $2, $1vurnayîşan ser XFF girewt",
- "checkuser-log-ipusers-xff": "Qe $2, $1karberan ser XFF girewt",
- "checkuser-log-useredits": "$2, vurnayışê $1 peyd groti",
"checkuser-autocreate-action": "otomatikî ra virziyo",
"checkuser-create-action": "Vıraziya",
"checkuser-email-action": "karberê $1î rê email Bırşe",
diff --git a/CheckUser/i18n/dsb.json b/CheckUser/i18n/dsb.json
index e1fd00ed..ac8487d1 100644
--- a/CheckUser/i18n/dsb.json
+++ b/CheckUser/i18n/dsb.json
@@ -65,12 +65,6 @@
"checkuser-ipeditcount": "~$1 ze wšych wužywarjow",
"checkuser-log-return": "Ku głownemu formularoju CheckUser",
"checkuser-limited": "'''Toś te wuslědki su se z pśicynow wugbałosći wobrězali.'''",
- "checkuser-log-userips": "$1 jo IP-adrese za $2 wobstarał",
- "checkuser-log-ipedits": "$1 jo změny za $2 wobstarał",
- "checkuser-log-ipusers": "$1 jo wužywarjow za $2 wobstarał",
- "checkuser-log-ipedits-xff": "$1 jo změny za XFF $2 wobstarał",
- "checkuser-log-ipusers-xff": "$1 jo wužywarjow za XFF $2 wobstarał",
- "checkuser-log-useredits": "$1 jo změny za $2 wobstarał",
"checkuser-autocreate-action": "jo se awtomatiski załožyło",
"checkuser-create-action": "jo se napórał",
"checkuser-email-action": "jo e-mail na wužywarja \"$1\" pósłał",
diff --git a/CheckUser/i18n/el.json b/CheckUser/i18n/el.json
index a45db42a..333fa9e5 100644
--- a/CheckUser/i18n/el.json
+++ b/CheckUser/i18n/el.json
@@ -75,12 +75,6 @@
"checkuser-ipeditcount": "~$1 από όλους τους χρήστες",
"checkuser-log-return": "Γυρίστε στην κύρια φόρμα CheckUser",
"checkuser-limited": "'''Αυτά τα αποτελέσματα περικόπησαν για λόγους απόδοσης.'''",
- "checkuser-log-userips": "Ο $1 πήρε τις IP διευθύνσεις για τον $2",
- "checkuser-log-ipedits": "Ο $1 πήρε τις επεξεργασίες για το $2",
- "checkuser-log-ipusers": "Ο $1 πήρε τους χρήστες για το $2",
- "checkuser-log-ipedits-xff": "Ο $1 πήρε τις επεξεργασίες για το XFF $2",
- "checkuser-log-ipusers-xff": "Ο $1 πήρε τους χρήστες για το XFF $2",
- "checkuser-log-useredits": "$1 έλαβε τις επεξεργασίες για τον $2",
"checkuser-autocreate-action": "δημιουργήθηκε αυτόματα",
"checkuser-create-action": "δημιουργήθηκε",
"checkuser-email-action": "έστειλε ένα ηλεκτρονικό μήνυμα στον χρήστη \"$1\"",
diff --git a/CheckUser/i18n/en-ca.json b/CheckUser/i18n/en-ca.json
new file mode 100644
index 00000000..60822a8c
--- /dev/null
+++ b/CheckUser/i18n/en-ca.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Guycn2"
+ ]
+ },
+ "checkuser-showlog": "Switch to CheckUser log"
+}
diff --git a/CheckUser/i18n/en-gb.json b/CheckUser/i18n/en-gb.json
index 29d6a82f..10dc51e1 100644
--- a/CheckUser/i18n/en-gb.json
+++ b/CheckUser/i18n/en-gb.json
@@ -1,7 +1,10 @@
{
"@metadata": {
"authors": [
- "Chase me ladies, I'm the Cavalry"
+ "Chase me ladies, I'm the Cavalry",
+ "Macofe",
+ "Guycn2",
+ "Andibing"
]
},
"checkuser-summary": "This tool scans recent changes to retrieve the IP addresses used by a user or show the edit/user data for an IP address.\nUsers and edits by a client IP address can be retrieved via XFF headers by appending the IP address with \"/xff\". IPv4 (CIDR $1-32) and IPv6 (CIDR $2-128) are supported.\nNo more than 5,000 edits will be returned for performance reasons.\nUse this in accordance with policy.",
@@ -20,13 +23,12 @@
"grouppage-checkuser": "{{ns:project}}:Check user",
"checkuser-reason": "Reason:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Show log",
+ "checkuser-showlog": "Switch to CheckUser log",
"checkuser-query": "Query recent changes",
"checkuser-target": "IP address or username:",
"checkuser-users": "Get users",
"checkuser-edits": "Get edits",
"checkuser-ips": "Get IP addresses",
- "checkuser-search": "Search",
"checkuser-period": "Duration:",
"checkuser-week-1": "last week",
"checkuser-week-2": "last two weeks",
@@ -47,6 +49,8 @@
"checkuser-localonly": "Not unified",
"checkuser-massblock": "Block selected users",
"checkuser-massblock-text": "Selected accounts will be blocked indefinitely, with autoblocking of IP addresses enabled and account creation disabled.\nIP addresses will be blocked for one week for anonymous users only and account creation will be disabled.",
+ "checkuser-blockemail": "Prevent from sending email",
+ "checkuser-blocktalk": "Prevent from editing their own talk page while blocked",
"checkuser-blocktag": "Replace user pages with:",
"checkuser-blocktag-talk": "Replace talk pages with:",
"checkuser-massblock-commit": "Block selected users",
@@ -54,33 +58,37 @@
"checkuser-block-failure": "'''No users blocked.'''",
"checkuser-block-limit": "Too many users selected.",
"checkuser-block-noreason": "You must give a reason for the blocks.",
+ "checkuser-centralauth-multilock": "Multi lock selected accounts",
"checkuser-noreason": "You must give a reason for this query.",
"checkuser-accounts": "$1 new {{PLURAL:$1|account|accounts}}",
"checkuser-too-many": "Too many results (according to query estimate), please narrow down the CIDR.\nHere are the IP addresses used (5000 max, sorted by address):",
"checkuser-user-nonexistent": "The specified user does not exist.",
- "checkuser-search-form": "Find log entries where the $1 is $2",
+ "checkuser-search": "Search check user log entries",
"checkuser-search-submit": "Search",
"checkuser-search-initiator": "initiator",
"checkuser-search-target": "target",
+ "checkuser-log-search-target": "Target:",
+ "checkuser-log-search-type": "Search by:",
"checkuser-ipeditcount": "~$1 from all users",
- "checkuser-log-return": "Switch to CheckUser main form",
+ "checkuser-showmain": "Switch to CheckUser main form",
"checkuser-limited": "'''These results have been truncated for performance reasons.'''",
- "checkuser-log-userips": "$1 got IP addresses for $2",
- "checkuser-log-ipedits": "$1 got edits for $2",
- "checkuser-log-ipusers": "$1 got users for $2",
- "checkuser-log-ipedits-xff": "$1 got edits for XFF $2",
- "checkuser-log-ipusers-xff": "$1 got users for XFF $2",
- "checkuser-log-useredits": "$1 got edits for $2",
+ "checkuser-log-entry-userips": "$3, $1 got IP addresses for $2",
+ "checkuser-log-entry-ipedits": "$3, $1 got edits for $2",
+ "checkuser-log-entry-ipusers": "$3, $1 got users for $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 got edits for XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 got users for XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 got edits for $2",
"checkuser-autocreate-action": "was automatically created",
"checkuser-create-action": "was created",
"checkuser-email-action": "sent an email to user \"$1\"",
"checkuser-reset-action": "reset password for user \"$1\"",
+ "checkuser-token-fail": "Session failure. Please try again.",
"apihelp-query+checkuser-description": "Check which IP addresses are used by a given username, or which usernames are used by a given IP.",
"apihelp-query+checkuser-param-request": "Type of CheckUser request:\n;userips:Get IP address of target user.\n;edits:Get changes from target IP address or range.\n;ipusers:Get users from target IP address or range.",
"apihelp-query+checkuser-param-target": "Username, IP address, or CIDR range to check.",
"apihelp-query+checkuser-param-reason": "Reason to check.",
"apihelp-query+checkuser-param-limit": "Limit of rows.",
- "apihelp-query+checkuser-param-timecond": "Time limit of user data (like \"2 weeks\").",
+ "apihelp-query+checkuser-param-timecond": "Time limit of user data (like \"-2 weeks\" or \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Use XFF data instead of IP address.",
"apihelp-query+checkuser-example-1": "Check IP addresses for [[User:Example]]",
"apihelp-query+checkuser-example-2": "Check edits from 192.0.2.0/24",
diff --git a/CheckUser/i18n/en.json b/CheckUser/i18n/en.json
index 3766fef4..ce5d3354 100644
--- a/CheckUser/i18n/en.json
+++ b/CheckUser/i18n/en.json
@@ -22,13 +22,12 @@
"grouppage-checkuser": "{{ns:project}}:Check user",
"checkuser-reason": "Reason:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Show log",
+ "checkuser-showlog": "Switch to CheckUser log",
"checkuser-query": "Query recent changes",
"checkuser-target": "IP address or username:",
"checkuser-users": "Get users",
"checkuser-edits": "Get edits",
"checkuser-ips": "Get IP addresses",
- "checkuser-search": "Search",
"checkuser-period": "Duration:",
"checkuser-week-1": "last week",
"checkuser-week-2": "last two weeks",
@@ -49,6 +48,8 @@
"checkuser-localonly": "Not unified",
"checkuser-massblock": "Block selected users",
"checkuser-massblock-text": "Selected accounts will be blocked indefinitely, with autoblocking of IP addresses enabled and account creation disabled.\nIP addresses will be blocked for one week for anonymous users only and account creation will be disabled.",
+ "checkuser-blockemail": "Prevent from sending email",
+ "checkuser-blocktalk": "Prevent from editing their own talk page while blocked",
"checkuser-blocktag": "Replace user pages with:",
"checkuser-blocktag-talk": "Replace talk pages with:",
"checkuser-massblock-commit": "Block selected users",
@@ -56,46 +57,56 @@
"checkuser-block-failure": "'''No users blocked.'''",
"checkuser-block-limit": "Too many users selected.",
"checkuser-block-noreason": "You must give a reason for the blocks.",
+ "checkuser-centralauth-multilock": "Multi lock selected accounts",
"checkuser-noreason": "You must give a reason for this query.",
"checkuser-accounts": "$1 new {{PLURAL:$1|account|accounts}}",
"checkuser-too-many": "Too many results (according to query estimate), please narrow down the CIDR.\nHere are the IP addresses used (5000 max, sorted by address):",
"checkuser-user-nonexistent": "The specified user does not exist.",
- "checkuser-search-form": "Find log entries where the $1 is $2",
+ "checkuser-search": "Search check user log entries",
"checkuser-search-submit": "Search",
"checkuser-search-initiator": "initiator",
"checkuser-search-target": "target",
+ "checkuser-log-search-target": "Target:",
+ "checkuser-log-search-type": "Search by:",
"checkuser-ipeditcount": "~$1 from all users",
- "checkuser-log-return": "Switch to CheckUser main form",
+ "checkuser-showmain": "Switch to CheckUser main form",
"checkuser-limited": "'''These results have been truncated for performance reasons.'''",
- "checkuser-log-userips": "$1 got IP addresses for $2",
- "checkuser-log-ipedits": "$1 got edits for $2",
- "checkuser-log-ipusers": "$1 got users for $2",
- "checkuser-log-ipedits-xff": "$1 got edits for XFF $2",
- "checkuser-log-ipusers-xff": "$1 got users for XFF $2",
- "checkuser-log-useredits": "$1 got edits for $2",
+ "checkuser-log-entry-userips": "$3, $1 got IP addresses for $2",
+ "checkuser-log-entry-ipedits": "$3, $1 got edits for $2",
+ "checkuser-log-entry-ipusers": "$3, $1 got users for $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 got edits for XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 got users for XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 got edits for $2",
"checkuser-autocreate-action": "was automatically created",
"checkuser-create-action": "was created",
"checkuser-email-action": "sent an email to user \"$1\"",
"checkuser-reset-action": "reset password for user \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|talk]] | [[Special:Contributions/$1|contribs]] | [[Special:Block/$1|block]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|talk]] | [[Special:Contributions/$1|contribs]] | [[Special:Block/$1|block]])",
"checkuser-toollinks": "<span class=\"plainlinks\">[[https://www.robtex.com/whois/$1.html WHOIS/RDNS] ·\n[https://www.robtex.com/rbls/$1.html RBLs] ·\n[http://www.dnsstuff.com/tools/tracert.ch?ip=$1 Traceroute] ·\n[https://www.ip2location.com/$1 Geolocate] ·\n[https://www.dan.me.uk/torcheck?ip=$1 Tor check]]</span>",
"checkuser-token-fail": "Session failure. Please try again.",
"group-checkuser.css": "/* CSS placed here will affect checkuser only */",
"group-checkuser.js": "/* JS placed here will affect checkuser only */",
"apihelp-query+checkuser-description": "Check which IP addresses are used by a given username or which usernames are used by a given IP address.",
+ "apihelp-query+checkuser-summary": "Check which IP addresses are used by a given username or which usernames are used by a given IP address.",
"apihelp-query+checkuser-param-request": "Type of CheckUser request:\n;userips:Get IP address of target user.\n;edits:Get changes from target IP address or range.\n;ipusers:Get users from target IP address or range.",
"apihelp-query+checkuser-param-target": "Username, IP address, or CIDR range to check.",
"apihelp-query+checkuser-param-reason": "Reason to check.",
"apihelp-query+checkuser-param-limit": "Limit of rows.",
- "apihelp-query+checkuser-param-timecond": "Time limit of user data (like \"2 weeks\").",
+ "apihelp-query+checkuser-param-timecond": "Time limit of user data (like \"-2 weeks\" or \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Use XFF data instead of IP address.",
"apihelp-query+checkuser-example-1": "Check IP addresses for [[User:Example]]",
"apihelp-query+checkuser-example-2": "Check edits from 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Get entries from the CheckUser log.",
+ "apihelp-query+checkuserlog-summary": "Get entries from the CheckUser log.",
"apihelp-query+checkuserlog-param-user": "Username of the CheckUser.",
"apihelp-query+checkuserlog-param-target": "Checked user, IP address, or CIDR range.",
"apihelp-query+checkuserlog-param-limit": "Limit of rows.",
"apihelp-query+checkuserlog-param-from": "The timestamp to start enumerating from.",
"apihelp-query+checkuserlog-param-to": "The timestamp to end enumerating.",
"apihelp-query+checkuserlog-example-1": "Show checks of [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Show checks of 192.0.2.0/24 after 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Show checks of 192.0.2.0/24 after 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "You must define reason for check.",
+ "apierror-checkuser-timelimit": "You need use correct time limit (like \"-2 weeks\" or \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "Invalid request mode"
}
diff --git a/CheckUser/i18n/eo.json b/CheckUser/i18n/eo.json
index 109e39f8..6c82dfbd 100644
--- a/CheckUser/i18n/eo.json
+++ b/CheckUser/i18n/eo.json
@@ -3,7 +3,8 @@
"authors": [
"Blahma",
"Michawiki",
- "Yekrats"
+ "Yekrats",
+ "Robin van der Vliet"
]
},
"checkuser-summary": "Ĉi tiu ilo skanas lastajn ŝanĝojn por akiri la IP-adresojn uzatajn de uzanto aŭ montri la datenojn de redakto/uzanto por aparta IP-adreso.\nUzantoj kaj redaktoj de klienta IP-adreso povas esti akirita per XFF-titolaro postaldonante al la IP-adreso kun \"/xff\".\nIPv4 (CIDR $1-32) kaj IPv6 (CIDR $2-128) estas subtenataj.\nNeniom pli ol 5000 redaktoj estos montrita pro bona datumbaza funkciado.\nUzu ĉi tion laŭ regularo.",
@@ -14,7 +15,7 @@
"checkuser-contribs": "kontroli IP-adresojn de uzantoj",
"checkuser-contribs-log": "lastaj kontroloj de uzantoj",
"group-checkuser": "Kontrolaj uzantoj",
- "group-checkuser-member": "{{GENDER:$1|Kontrolanto de IP-adresoj|Kontrolantino de IP-adresoj}}",
+ "group-checkuser-member": "{{GENDER:$1|kontrolanto de IP-adresoj}}",
"right-checkuser": "Kontroli la IP-adreson kaj alian informon de uzanto",
"right-checkuser-log": "Vidi la protokolon pri kontrolantoj de IP-adresoj",
"action-checkuser": "kontroli la IP-adreson kaj aliajn informojn de la uzanto",
@@ -28,7 +29,6 @@
"checkuser-users": "Akiri uzantojn",
"checkuser-edits": "Mendi redaktojn",
"checkuser-ips": "Preni IP-adresojn",
- "checkuser-search": "Serĉi",
"checkuser-period": "Daŭro:",
"checkuser-week-1": "lasta semajno",
"checkuser-week-2": "lastaj du semajnoj",
@@ -60,19 +60,13 @@
"checkuser-accounts": "$1 {{PLURAL:$1|nova konto|novaj kontoj}}",
"checkuser-too-many": "Tro da rezultoj, laŭ taskoj de serĉomendo. Bonvolu malvastigi la CIDR.\nJen la IP-adresoj uzitaj (maksimume 5000, ordigita laŭ adresoj):",
"checkuser-user-nonexistent": "La donata uzanto ne ekzistas.",
- "checkuser-search-form": "Trovi protokolerojn en kiu la $1 estas $2",
+ "checkuser-search": "Serĉi",
"checkuser-search-submit": "Serĉi",
"checkuser-search-initiator": "inicianto",
"checkuser-search-target": "celo",
"checkuser-ipeditcount": "~$1 de ĉiuj uzantoj",
- "checkuser-log-return": "Reiri al ĉefa kamparo por CheckUser",
+ "checkuser-showmain": "Reiri al ĉefa kamparo por CheckUser",
"checkuser-limited": "'''Ĉi tiuj rezultoj estis stumpigitaj pro laborecaj kialoj.",
- "checkuser-log-userips": "$1 akiris IP-adresojn por $2",
- "checkuser-log-ipedits": "$1 akiris redaktojn por $2",
- "checkuser-log-ipusers": "$1 akiris uzantojn por $2",
- "checkuser-log-ipedits-xff": "$1 akiris redaktojn por XFF $2",
- "checkuser-log-ipusers-xff": "$1 akiris uzantojn por XFF $2",
- "checkuser-log-useredits": "$1 tenis redaktojn por $2",
"checkuser-autocreate-action": "estis aŭtomate kreita",
"checkuser-create-action": "estis kreita",
"checkuser-email-action": "sendis retpoŝton al uzanto \"$1\"",
diff --git a/CheckUser/i18n/es.json b/CheckUser/i18n/es.json
index 37faadea..1ae84d72 100644
--- a/CheckUser/i18n/es.json
+++ b/CheckUser/i18n/es.json
@@ -39,20 +39,19 @@
"checkuser-contribs-log": "comprobaciones efectuadas sobre este usuario recientemente",
"group-checkuser": "Verificadores de usuarios",
"group-checkuser-member": "{{GENDER:$1|verificador de usuarios|verificadora de usuarios}}",
- "right-checkuser": "Comprobar las IPs de los usuarios y obtener otra información relacionada",
+ "right-checkuser": "Comprobar las direcciones IP y otra información de los usuarios",
"right-checkuser-log": "Ver el registro de verificación de usuarios",
- "action-checkuser": "Comprobar las IPs de los usuarios y obtener otra información relacionada",
+ "action-checkuser": "comprobar las direcciones IP y otra información de los usuarios",
"action-checkuser-log": "ver el registro de checkuser",
"grouppage-checkuser": "{{ns:project}}:Verificador de usuarios",
"checkuser-reason": "Motivo:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Ver registro",
+ "checkuser-showlog": "Cambiar al registro de CheckUser",
"checkuser-query": "Buscar en cambios recientes",
"checkuser-target": "Usuario o dirección IP:",
"checkuser-users": "Obtener usuarios",
"checkuser-edits": "Obtener ediciones",
"checkuser-ips": "Obtener direcciones IP",
- "checkuser-search": "Buscar",
"checkuser-period": "Duración:",
"checkuser-week-1": "última semana",
"checkuser-week-2": "últimas dos semanas",
@@ -73,6 +72,8 @@
"checkuser-localonly": "No unificada",
"checkuser-massblock": "Bloquear usuarios seleccionados",
"checkuser-massblock-text": "Las cuentas seleccionadas serán bloqueadas de forma indefinida, con el autobloqueo habilitado y la creación de cuentas deshabilitada.\nLas direcciones IP serán bloqueadas durante una semana para usuarios anónimos sólamente con la creación de cuentas deshabilitada.",
+ "checkuser-blockemail": "Impedir que envíe correo electrónico",
+ "checkuser-blocktalk": "Impedir la edición de su propia página de discusión mientras esté bloqueado",
"checkuser-blocktag": "Reemplazar páginas del usuario con:",
"checkuser-blocktag-talk": "Reemplazar las páginas de discusión con:",
"checkuser-massblock-commit": "Bloquear usuarios seleccionados",
@@ -80,40 +81,55 @@
"checkuser-block-failure": "'''No hay usuarios bloqueados.'''",
"checkuser-block-limit": "Demasiados usarios seleccionados.",
"checkuser-block-noreason": "Debes dar una razón para los bloqueos.",
+ "checkuser-centralauth-multilock": "Bloquear globalmente las cuentas seleccionadas",
"checkuser-noreason": "Debes dar una razón para esta consulta.",
"checkuser-accounts": "$1 {{PLURAL:$1|cuenta nueva|cuentas nuevas}}",
"checkuser-too-many": "Hay demasiados resultados (de acuerdo al estimado de la consulta). Prueba limitar el CIDR.\nAquí se ven las IPs usadas (máximo 5000, ordenadas por dirección):",
"checkuser-user-nonexistent": "El usuario especificado no existe.",
- "checkuser-search-form": "Encontrar entradas de registros en las que el $1 es $2",
+ "checkuser-search": "Buscar entradas del registro de CheckUser",
"checkuser-search-submit": "Buscar",
"checkuser-search-initiator": "verificador",
"checkuser-search-target": "usuario verificado",
+ "checkuser-log-search-target": "Destino:",
+ "checkuser-log-search-type": "Buscar por:",
"checkuser-ipeditcount": "~$1 de todos los usuarios",
- "checkuser-log-return": "Cambiar al formulario principal de verificador de usuarios (CheckUser)",
+ "checkuser-showmain": "Cambiar al formulario principal de verificador de usuarios (CheckUser)",
"checkuser-limited": "'''Estos resultados han sido truncados por motivos de rendimiento.'''",
- "checkuser-log-userips": "$1 obtuvo las direcciones IP de $2",
- "checkuser-log-ipedits": "$1 obtuvo las contribuciones de $2",
- "checkuser-log-ipusers": "$1 obtuvo los usuarios de $2",
- "checkuser-log-ipedits-xff": "$1 obtuvo las contribuciones de XFF de $2",
- "checkuser-log-ipusers-xff": "$1 obtuvo los usuarios para XFF $2",
- "checkuser-log-useredits": "$1 obtuvo las contribuciones de $2",
+ "checkuser-log-entry-userips": "$3, $1 obtuvo las direcciones IP de $2",
+ "checkuser-log-entry-ipedits": "$3, $1 obtuvo las contribuciones de $2",
+ "checkuser-log-entry-ipusers": "$3, $1 obtuvo los usuarios de $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 obtuvo las contribuciones de XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 obtuvo los usuarios de XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 obtuvo las contribuciones de $2",
"checkuser-autocreate-action": "fue creada automáticamente",
"checkuser-create-action": "se creó",
- "checkuser-email-action": "envió un correo electrónico al usuario «$1»",
- "checkuser-reset-action": "solicitó un recordatorio de contraseña para el usuario «$1»",
+ "checkuser-email-action": "envió un correo electrónico {{GENDER:$1|al usuario|a la usuaria}} «$1»",
+ "checkuser-reset-action": "restableció la contraseña {{GENDER:$1|del usuario|de la usuaria}} «$1»",
+ "checkuser-userlinks-ip": "([[User_talk:$1|discusión]] | [[Special:Contributions/$1|contribuciones]] | [[Special:Block/$1|bloquear]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|discusión]] | [[Special:Contributions/$1|contribuciones]] | [[Special:Block/$1|bloquear]])",
"checkuser-token-fail": "Fallo en la sesión. Intenta de nuevo.",
+ "group-checkuser.css": "/* El código CSS colocado aquí sólo afectará a los usuarios con permisos de checkuser */",
+ "group-checkuser.js": "/* El código JavaScript colocado en esta página sólo afectará a los usuarios con permisos de checkuser */",
"apihelp-query+checkuser-description": "Comprueba qué direcciones IP utiliza el nombre de usuario dado o qué nombres de usuario han utilizado una dirección IP específica.",
+ "apihelp-query+checkuser-summary": "Comprobar qué direcciones IP han sido usadas por un determinado usuario o qué usuarios han usado una determinada dirección IP.",
+ "apihelp-query+checkuser-param-request": "Tipos de solicitudes:\n;userips:Obtener las direcciones IP del usuario a verificar.\n;edits:Obtener las ediciones hechas desde una determinada dirección IP o rango de IPs.\n;ipusers:Obtener los usuarios que han usado una determinada dirección IP o rango de IPs.",
"apihelp-query+checkuser-param-target": "Nombre de usuario, dirección IP o intervalo CIDR que comprobar.",
"apihelp-query+checkuser-param-reason": "Motivo para comprobar.",
"apihelp-query+checkuser-param-limit": "Límite de filas.",
- "apihelp-query+checkuser-param-timecond": "Límite de tiempo de datos del usuario (p. ej. \"2 weeks\").",
+ "apihelp-query+checkuser-param-timecond": "Límite de tiempo de datos del usuario (p. ej. \"-2 weeks\" o \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Utiliza datos XFF en lugar de direcciones IP.",
"apihelp-query+checkuser-example-1": "Comprobar direcciones IP para [[User:Example]]",
"apihelp-query+checkuser-example-2": "Comprobar ediciones desde 192.0.2.0/24",
+ "apihelp-query+checkuserlog-description": "Obtener entradas del registro de verificación de usuarios.",
+ "apihelp-query+checkuserlog-summary": "Obtener entradas del registro de verificación de usuarios.",
+ "apihelp-query+checkuserlog-param-user": "Nombre del usuario con permiso de verificador de usuarios.",
"apihelp-query+checkuserlog-param-target": "Se ha comprobado el usuario, dirección IP o CIDR.",
"apihelp-query+checkuserlog-param-limit": "Límite de filas.",
"apihelp-query+checkuserlog-param-from": "El sello de tiempo para comenzar la enumeración",
"apihelp-query+checkuserlog-param-to": "El sello de tiempo para finalizar la enumeración",
"apihelp-query+checkuserlog-example-1": "Mostrar verificaciones de [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Mostrar verificaciones de 192.0.2.0/24 después del 15 de octubre de 2011 a las 23:00:00"
+ "apihelp-query+checkuserlog-example-2": "Mostrar verificaciones de 192.0.2.0/24 después del 15 de octubre de 2011 a las 23:00:00",
+ "apierror-checkuser-missingsummary": "Debes introducir una razón para la comprobación.",
+ "apierror-checkuser-timelimit": "Necesitas introducir un plazo máximo de tiempo correcto (como \"-2 weeks\" o \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "Modo de solicitud no válido"
}
diff --git a/CheckUser/i18n/et.json b/CheckUser/i18n/et.json
index 69b6a46e..fe9c0925 100644
--- a/CheckUser/i18n/et.json
+++ b/CheckUser/i18n/et.json
@@ -20,13 +20,12 @@
"action-checkuser-log": "vaadata kasutajakontrolli logi",
"grouppage-checkuser": "{{ns:project}}:Kontrollkasutajad",
"checkuser-reason": "Põhjus:",
- "checkuser-showlog": "Näita logi",
+ "checkuser-showlog": "Mine kasutajakontrolli logisse",
"checkuser-query": "Viimaste muudatuste päring",
"checkuser-target": "IP-aadress või kasutajanimi:",
"checkuser-users": "Hangi kasutajad",
"checkuser-edits": "Hangi muudatused",
"checkuser-ips": "Hangi IP-aadressid",
- "checkuser-search": "Otsimine",
"checkuser-period": "Ajavahemik:",
"checkuser-week-1": "viimane nädal",
"checkuser-week-2": "viimased kaks nädalat",
@@ -55,18 +54,12 @@
"checkuser-noreason": "Päringu jaoks peab põhjuse andma.",
"checkuser-accounts": "$1 {{PLURAL:$1|uus konto|uut kontot}}",
"checkuser-user-nonexistent": "Etteantud kasutajat pole olemas.",
- "checkuser-search-form": "Leia logisissekanded, kus $1 on $2",
+ "checkuser-search": "Kasutajakontrolli logi sissekannete otsimine",
"checkuser-search-submit": "Otsi",
"checkuser-search-initiator": "kontrollija",
"checkuser-search-target": "kontrollitav",
"checkuser-ipeditcount": "~$1 kõigilt kasutajatelt",
- "checkuser-log-return": "Mine kasutajakontrolli peavormi juurde",
- "checkuser-log-userips": "$1 hankis kasutaja $2 IP-aadressid",
- "checkuser-log-ipedits": "$1 hankis IP-aadressi $2 tehtud muudatused",
- "checkuser-log-ipusers": "$1 hankis IP-aadressi $2 kasutajad",
- "checkuser-log-ipedits-xff": "$1 hankis IP-aadressi (XFF) $2 tehtud muudatused",
- "checkuser-log-ipusers-xff": "$1 hankis IP-aadressi (XFF) $2 kasutajad",
- "checkuser-log-useredits": "$1 hankis kasutaja $2 tehtud muudatused",
+ "checkuser-showmain": "Mine kasutajakontrolli peavormi juurde",
"checkuser-autocreate-action": "loodud automaatselt",
"checkuser-create-action": "loodud",
"checkuser-email-action": "e-kiri kasutajale \"$1\" saadetud"
diff --git a/CheckUser/i18n/eu.json b/CheckUser/i18n/eu.json
index 955d8457..530cb322 100644
--- a/CheckUser/i18n/eu.json
+++ b/CheckUser/i18n/eu.json
@@ -10,16 +10,15 @@
},
"checkuser": "Erabiltzailea egiaztatu",
"group-checkuser": "Erabiltzaileak egiaztatu",
- "group-checkuser-member": "Erabiltzailea egiaztatu",
+ "group-checkuser-member": "{{GENDER:$1|erabiltzaile egiaztatzailea}}",
"grouppage-checkuser": "{{ns:project}}:Lankidea egiaztatu",
"checkuser-reason": "Arrazoia:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Erregistroa erakutsi",
+ "checkuser-showlog": "CheckUser erregistrora aldatu",
"checkuser-target": "IP helbide edo lankide izena:",
"checkuser-users": "Lankideak ikusi",
"checkuser-edits": "Aldaketak ikusi",
"checkuser-ips": "IPak ikusi",
- "checkuser-search": "Bilatu",
"checkuser-period": "Iraupena:",
"checkuser-week-1": "azken astea",
"checkuser-week-2": "azken bi asteak",
@@ -37,6 +36,7 @@
"checkuser-block-success": "'''$1 {{PLURAL:$2|erabiltzailea|erabiltzaileak}} blokeaturik {{PLURAL:$2|dago|daude}} orain.'''",
"checkuser-block-limit": "Lankide gehiegi hautatu duzu.",
"checkuser-accounts": "{{PLURAL:$1|Kontu berri bat|$1 kontu berri}}",
+ "checkuser-search": "Bilatu",
"checkuser-search-submit": "Bilatu",
"checkuser-search-target": "helburua",
"checkuser-autocreate-action": "automatikoki sortua izan da",
diff --git a/CheckUser/i18n/fa.json b/CheckUser/i18n/fa.json
index 3e85c25d..ee96ce47 100644
--- a/CheckUser/i18n/fa.json
+++ b/CheckUser/i18n/fa.json
@@ -9,52 +9,54 @@
"Reza1615",
"ZxxZxxZ",
"Alirezaaa",
- "Danialbehzadi"
+ "Danialbehzadi",
+ "GMozafarian"
]
},
- "checkuser-summary": "این ابزار تغییرات اخیر را برای به دست آوردن نشانی‌های آی‌پی استفاده شده توسط یک کاربر و یا تعیین ویرایش‌ها و اطلاعات کاربری مرتبط با یک نشانی آی‌پی جستجو می‌کند.\nکاربرها و ویرایش‌های مرتبط با یک نشانی آی‌پی را می‌توان با توجه به اطلاعات سرآیند XFF (با افزودن «‏‎/xff» به انتهای نشانی آی‌پی) پیدا کرد.\nهر دو پروتکل IPv4 (معادل CIDR $1-32) و IPv6 (معادل CIDR $2-128) توسط این ابزار پشتیبانی می‌شوند.\nبنا به دلایل عملکردی، بیش از ۵۰۰۰ ویرایش بازگردانده نمی‌شود.\nاز این ابزار طبق سیاست‌ها استفاده کنید.",
- "checkuser-desc": "به کاربرها اختیارات لازم را برای بررسی نشانی آی‌پی کاربرها و اطلاعات دیگر می‌دهد",
+ "checkuser-summary": "این ابزار تغییرات اخیر را برای به دست آوردن نشانی‌های آی‌پی استفاده شده توسط یک کاربر و یا تعیین ویرایش‌ها و اطلاعات کاربری مرتبط با یک نشانی آی‌پی جستجو می‌کند.\nکاربرها و ویرایش‌های مرتبط با یک نشانی آی‌پی را می‌توان با توجه به اطلاعات سرآیند اکس‌اف‌اف (با افزودن «‏‎/xff» به انتهای نشانی آی‌پی) پیدا کرد.\nهر دو پروتکل IPv4 (معادل CIDR $1-32) و IPv6 (معادل CIDR $2-128) توسط این ابزار پشتیبانی می‌شوند.\nبنا به دلایل عملکردی، بیش از ۵۰۰۰ ویرایش بازگردانده نمی‌شود.\nاز این ابزار طبق سیاست‌ها استفاده کنید.",
+ "checkuser-desc": "به کاربران اختیارات لازم را برای بررسی نشانی‌های آی‌پی و دیگر اطلاعات دیگر یک کاربر می‌دهد",
"checkuser-logcase": "جستجوی سیاهه به کوچک یا بزرگ بودن حروف حساس است.",
"checkuser": "بازرسی کاربر",
"checkuserlog": "سیاهه بازرسی کاربر",
"checkuser-contribs": "بازرسی نشانی‌های آی‌پی کاربر",
"checkuser-contribs-log": "بازرسی‌های کاربر اخیر",
"group-checkuser": "بازرسان کاربر",
- "group-checkuser-member": "بازرس کاربر",
+ "group-checkuser-member": "{{GENDER:$1|بازرس کاربر}}",
"right-checkuser": "بازرسی نشانی‌های آی‌پی و دیگر اطلاعات کاربر",
"right-checkuser-log": "مشاهدهٔ سیاههٔ بازرسی کاربر",
"action-checkuser": "بازرسی نشانی‌های آی‌پی و دیگر اطلاعات کاربر",
"action-checkuser-log": "نمایش سیاههٔ بازرسی کاربر",
"grouppage-checkuser": "{{ns:project}}:بازرسی کاربر",
"checkuser-reason": "دلیل:",
- "checkuser-reason-api": "API: $1",
- "checkuser-showlog": "نمایش سیاهه",
+ "checkuser-reason-api": "رابط برنامه‌نویسی کاربردی: $1",
+ "checkuser-showlog": "تغییر وضعیت به سیاهه بازرسی کاربر",
"checkuser-query": "جستجوی تغییرات اخیر",
"checkuser-target": "نشانی آی‌پی یا نام کاربری:",
- "checkuser-users": "فهرست‌کردن کاربرها",
- "checkuser-edits": "نمایش ویرایش‌ها",
- "checkuser-ips": "فهرست‌کردن نشانی‌های آی‌پی",
- "checkuser-search": "جستجو",
+ "checkuser-users": "فهرست‌کردن کاربران",
+ "checkuser-edits": "دریافت ویرایش‌ها",
+ "checkuser-ips": "دریافت نشانی‌های آی‌پی",
"checkuser-period": "بازهٔ زمانی:",
"checkuser-week-1": "هفتهٔ گذشته",
"checkuser-week-2": "دو هفتهٔ گذشته",
"checkuser-month": "۳۰ روز گذشته",
"checkuser-all": "همه",
"checkuser-cidr-label": "پیدا کردن بازه‌های مشترک آی‌پی و آی‌پی‌های تاثیرپذیرفته برای یک فهرست از نشانی‌های آی‌پی",
- "checkuser-cidr-res": "CIDR مشترک",
- "checkuser-empty": "سیاهه خالی است.",
+ "checkuser-cidr-res": "سی‌آی‌دی‌آر مشترک:",
+ "checkuser-empty": "سیاهه حاوی هیچ موردی نیست.",
"checkuser-nomatch": "موردی که مطابقت داشته باشد پیدا نشد.",
"checkuser-nomatch-edits": "مورد مطابق پیدا نشد.\nآخرین ویرایش در $1 ساعت $2 بود.",
"checkuser-check": "بازرسی",
"checkuser-log-fail": "امکان افزودن اطلاعات به سیاهه وجود ندارد",
- "checkuser-nolog": "پرونده سیاهه پیدا نشد.",
+ "checkuser-nolog": "پروندهٔ سیاهه پیدا نشد.",
"checkuser-blocked": "بسته شده",
- "checkuser-gblocked": "بسته شده سرتاسری",
+ "checkuser-gblocked": "سراسری بسته شده",
"checkuser-locked": "قفل شده",
"checkuser-wasblocked": "قبلاً بسته شده",
"checkuser-localonly": "یکی نشده",
"checkuser-massblock": "بستن کاربرهای انتخاب شده",
"checkuser-massblock-text": "حساب‌های انتخاب شده برای همیشه بسته خواهند شد، قطع دسترسی خودکار هم فعال خواهد بود و از ایجاد حساب کاربری هم جلوگیری خواهد شد. نشانی‌های آی‌پی برای یک هفته فقط برای کاربران ناشناس بسته خواهند شد و از ایجاد حساب کاربری توسط آنان جلوگیری خواهد شد.",
+ "checkuser-blockemail": "ممانعت از ارسال ایمیل",
+ "checkuser-blocktalk": "ممانعت از ویرایش صفحه بحث در زمانی که بسته است",
"checkuser-blocktag": "جایگزین کردن صفحهٔ کاربرها با:",
"checkuser-blocktag-talk": "جایگزین کردن صفحه‌های بحث با:",
"checkuser-massblock-commit": "بستن کاربرهای انتخاب شده",
@@ -62,28 +64,51 @@
"checkuser-block-failure": "'''هیچ کاربری بسته نشد.'''",
"checkuser-block-limit": "تعداد بیش از اندازه‌ای از کاربران انتخاب شده‌اند.",
"checkuser-block-noreason": "شما باید دلیلی برای قطع دسترسی‌ها ارائه کنید.",
+ "checkuser-centralauth-multilock": "بستن‌های چندگانه حساب‌های کاربری انتخاب‌شده",
"checkuser-noreason": "شما باید دلیلی برای این درخواست وارد کنید.",
"checkuser-accounts": "$1 {{PLURAL:$1|حساب|حساب}} کاربری تازه",
- "checkuser-too-many": "تعداد نتایج بسیار زیاد است (طبق تخمین‌ها)، لطفاً CIDR را محدودتر کنید.\nدر زیر نشانی‌های آی‌پی استفاده شده را می‌بینید (حداکثر ۵۰۰۰ مورد، به ترتیب نشانی):",
+ "checkuser-too-many": "تعداد نتایج بسیار زیاد است (طبق تخمین‌های پرسمان)، لطفاً سی‌آی‌دی‌آر را محدودتر کنید.\nدر زیر نشانی‌های آی‌پی استفاده شده را می‌بینید (حداکثر ۵۰۰۰ مورد، به ترتیب نشانی):",
"checkuser-user-nonexistent": "کاربر مورد نظر وجود ندارد.",
- "checkuser-search-form": "پیدا کردن مواردی در سیاهه‌ها که $1 برابر است با $2",
+ "checkuser-search": "جستجوی موارد سیاههٔ بازرسی کاربر",
"checkuser-search-submit": "جستجو",
"checkuser-search-initiator": "آغازگر",
"checkuser-search-target": "هدف",
+ "checkuser-log-search-target": "هدف:",
+ "checkuser-log-search-type": "جستجو با:",
"checkuser-ipeditcount": "~$1 از همهٔ کاربران",
- "checkuser-log-return": "رفتن به فرم اصلی بازرسی کاربر",
+ "checkuser-showmain": "رفتن به فرم اصلی بازرسی کاربر",
"checkuser-limited": "'''این نتایج برای کارآیی سامانه کوتاه شده‌اند.'''",
- "checkuser-log-userips": "$1 نشانی‌های آی‌پی $2 را گرفت",
- "checkuser-log-ipedits": "$1 ویرایش‌های $2 را گرفت",
- "checkuser-log-ipusers": "$1 کاربرهای مربوط به $2 را گرفت",
- "checkuser-log-ipedits-xff": "$1 ویرایش‌های XFF $2 را گرفت",
- "checkuser-log-ipusers-xff": "$1 کاربرهای مربوط به XFF $2 را گرفت",
- "checkuser-log-useredits": "$1 ویرایش‌های $2 را گرفت",
+ "checkuser-log-entry-userips": "$3، $1 نشانی‌های آی‌پی $2 را گرفت",
+ "checkuser-log-entry-ipedits": "$3، $1 ویرایش‌های $2 را گرفت",
+ "checkuser-log-entry-ipusers": "$3، $1 کاربرهای $2 را گرفت",
+ "checkuser-log-entry-ipedits-xff": "$3، $1 ویرایش‌های اکس‌اف‌اف $2 را گرفت",
+ "checkuser-log-entry-ipusers-xff": "$3، $1 کاربرهای اکس‌اف‌اف $2 را گرفت",
+ "checkuser-log-entry-useredits": "$3، $1 ویرایش‌های $2 را گرفت",
"checkuser-autocreate-action": "به طور خودکار ساخته شد",
- "checkuser-create-action": "ایجاد گردید",
+ "checkuser-create-action": "ایجاد شد",
"checkuser-email-action": "به کاربر «$1» ایمیل ارسال شد",
"checkuser-reset-action": "گذرواژه کاربر «$1» را از نو تنظیم کرد",
- "checkuser-token-fail": "نشیت با شکست مواجه شد. لطفاً دوباره سعی کنید.",
- "apihelp-query+checkuser-param-limit": "محدودهٔ ردیف‌ها",
- "apihelp-query+checkuser-param-timecond": "محدودهٔ زمانی دادهٔ کاربر (مانند \"دو هفته\")"
+ "checkuser-userlinks-ip": "([[User_talk:$1|بحث]] | [[Special:Contributions/$1|مشارکت‌ها]] | [[Special:Block/$1|بستن]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|بحث]] | [[Special:Contributions/$1|مشارکت‌ها]] | [[Special:Block/$1|بستن]])",
+ "checkuser-token-fail": "نشست با شکست مواجه شد. لطفاً دوباره سعی کنید.",
+ "apihelp-query+checkuser-description": "بررسی کنید کدام نشانی‌های آی‌پی توسط یک حساب استفاده شده‌اند، یا کدام حساب‌ها توسط یک نشانی آی‌پی به کار رفته‌اند.",
+ "apihelp-query+checkuser-param-request": "انواع درخواست‌های بازرسی کاربر:\n;userips: گرفتن نشانی آی‌پی کاربر هدف.\n;edits: گرفتن فهرست تغییرات مرتبط با یک نشانی یا بازهٔ آی‌پی\n;ipusers: گرفتن کاربرهای مرتبط با یک نشانی یا بازهٔ آی‌پی",
+ "apihelp-query+checkuser-param-target": "نام کاربر، بازهٔ آی‌پی، یا بازهٔ سی‌آی‌دی‌آر که بازرسی می‌شود.",
+ "apihelp-query+checkuser-param-reason": "دلیل بازرسی.",
+ "apihelp-query+checkuser-param-limit": "محدودهٔ سطرها.",
+ "apihelp-query+checkuser-param-timecond": "محدودهٔ زمانی دادهٔ کاربر (مثلاً «‎-2 weeks» یا «‎2 weeks ago»).",
+ "apihelp-query+checkuser-param-xff": "به جای نشانی آی‌پی از اطلاعات اکس‌اف‌اف استفاده شود.",
+ "apihelp-query+checkuser-example-1": "بازرسی نشانی‌های آی‌پی برای [[User:Example]]",
+ "apihelp-query+checkuser-example-2": "بازرسی ویرایش‌های انجام شده از 192.0.2.0/24",
+ "apihelp-query+checkuserlog-description": "دریافت موارد از سیاههٔ بازرسی.",
+ "apihelp-query+checkuserlog-param-user": "نام کاربری بازرس.",
+ "apihelp-query+checkuserlog-param-target": "بازرسی کاربر، نشانی آی‌پی، یا بازهٔ سی‌آی‌دی‌آر.",
+ "apihelp-query+checkuserlog-param-limit": "محدودیت ردیف‌ها.",
+ "apihelp-query+checkuserlog-param-from": "برچسب زمان برای شروع شمارش.",
+ "apihelp-query+checkuserlog-param-to": "برچسب زمان برای پایان شمارش.",
+ "apihelp-query+checkuserlog-example-1": "نمایش بازرسی‌های [[User:Example]]",
+ "apihelp-query+checkuserlog-example-2": "نمایش بازرسی‌های 192.0.2.0/24 پس از 2011‎-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "باید دلیل بازرسی را مشخص کنید.",
+ "apierror-checkuser-timelimit": "باید بازهٔ زمانی درست استفاده کنید (نظیر «‎2 weeks ago» یا «‎-2 weeks»).",
+ "apierror-checkuser-invalidmode": "شیوهٔ درخواست نامعتبر"
}
diff --git a/CheckUser/i18n/fi.json b/CheckUser/i18n/fi.json
index ad56dc9e..eb58a70c 100644
--- a/CheckUser/i18n/fi.json
+++ b/CheckUser/i18n/fi.json
@@ -13,7 +13,9 @@
"Str4nd",
"Stryn",
"Varusmies",
- "ZeiP"
+ "ZeiP",
+ "McSalama",
+ "01miki10"
]
},
"checkuser-summary": "Tämän työkalun avulla voidaan tutkia tuoreet muutokset ja paljastaa käyttäjien IP-osoitteet tai noutaa IP-osoitteiden muokkaukset ja käyttäjätiedot.\nKäyttäjät ja muokkaukset voidaan hakea myös uudelleenohjausosoitteen (X-Forwarded-For) takaa käyttämällä IP-osoitteen perässä <tt>/xff</tt> -merkintää. Työkalu tukee sekä IPv4 (CIDR $1–32) ja IPv6 (CIDR $2–128) -standardeja.",
@@ -26,19 +28,18 @@
"group-checkuser": "osoitepaljastimen käyttäjät",
"group-checkuser-member": "{{GENDER:$1|osoitepaljastimen käyttäjä}}",
"right-checkuser": "Tarkastaa käyttäjän IP-osoitteita ja muita tietoja",
- "right-checkuser-log": "Nähdä osoitepaljastusten lokin",
+ "right-checkuser-log": "Katsoa osoitepaljastusten lokia",
"action-checkuser": "tarkastaa käyttäjän IP-osoitteita ja muita tietoja",
"action-checkuser-log": "katsoa osoitepaljastuslokia",
"grouppage-checkuser": "{{ns:project}}:Osoitepaljastin",
"checkuser-reason": "Syy:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Näytä loki",
+ "checkuser-showlog": "Näytä osoitepaljastinloki",
"checkuser-query": "Hae tuoreet muutokset",
"checkuser-target": "IP-osoite tai käyttäjätunnus:",
"checkuser-users": "Hae käyttäjät",
"checkuser-edits": "Hae muokkaukset",
"checkuser-ips": "Hae IP-osoitteet",
- "checkuser-search": "Etsi",
"checkuser-period": "Aikaväli:",
"checkuser-week-1": "viimeisin viikko",
"checkuser-week-2": "viimeiset kaksi viikkoa",
@@ -59,6 +60,8 @@
"checkuser-localonly": "Ei yhdistettynä",
"checkuser-massblock": "Estä valitut käyttäjät",
"checkuser-massblock-text": "Valitut tunnukset estetään toistaiseksi (\"autoblocking\", \"tunnusten luonti estetty\").\nVain rekisteröimättömien käyttäjien IP-osoitteet estetään yhdeksi viikoksi (myös tunnusten luonti estetty).",
+ "checkuser-blockemail": "Estä sähköpostin lähettäminen",
+ "checkuser-blocktalk": "Estä käyttäjää muokkaamasta omaa keskustelusivuaan eston aikana",
"checkuser-blocktag": "Korvaa käyttäjäsivut sisällöllä:",
"checkuser-blocktag-talk": "Korvaa keskustelusivut sisällöllä:",
"checkuser-massblock-commit": "Estä valitut käyttäjät",
@@ -66,25 +69,26 @@
"checkuser-block-failure": "'''Yhtään käyttäjää ei estetty.'''",
"checkuser-block-limit": "Liian monta käyttäjää valittu.",
"checkuser-block-noreason": "Estoille on annettava syy.",
+ "checkuser-centralauth-multilock": "Lukitse valitut tunnukset",
"checkuser-noreason": "Sinun tulee antaa syy tälle kyselylle.",
"checkuser-accounts": "$1 {{PLURAL:$1|uusi tunnus|uutta tunnusta}}",
- "checkuser-too-many": "Liian monta tulosta (kyselyarvion mukaan), pienennä CIDR-aluetta.\nKäytetyt IP:t (enintään 5000, järjestetty osoitteen mukaan):",
+ "checkuser-too-many": "Liian monta tulosta (kyselyarvion mukaan), pienennä CIDR-aluetta.\nKäytetyt IP-osoitteet (enintään 5000, järjestetty osoitteen mukaan):",
"checkuser-user-nonexistent": "Määritettyä käyttäjää ei ole olemassa.",
- "checkuser-search-form": "Etsi lokimerkintöjä, joissa $1 on $2",
+ "checkuser-search": "Etsi osoitinpaljastinlokin merkinnöistä",
"checkuser-search-submit": "Hae",
"checkuser-search-initiator": "alullepanija",
"checkuser-search-target": "kohde",
+ "checkuser-log-search-target": "Kohde:",
"checkuser-ipeditcount": "noin $1 muokkausta kaikilta käyttäjiltä",
- "checkuser-log-return": "Siirry osoitepaljastimen päälomakkeeseen",
+ "checkuser-showmain": "Siirry osoitepaljastimen päälomakkeeseen",
"checkuser-limited": "'''Nämä tulokset on lyhennetty suorituskykysyistä.'''",
- "checkuser-log-userips": "$1 haki käyttäjän $2 IP-osoitteet",
- "checkuser-log-ipedits": "$1 haki käyttäjän $2 muokkaukset",
- "checkuser-log-ipusers": "$1 haki osoitteen $2 käyttämät tunnukset",
- "checkuser-log-ipedits-xff": "$1 haki muokkaukset XFF-osoitteesta $2",
- "checkuser-log-ipusers-xff": "$1 haki käyttäjät XFF-osoitteesta $2",
- "checkuser-log-useredits": "$1 haki käyttäjän $2 muokkaukset",
+ "checkuser-log-entry-userips": "$3, $1 haki käyttäjän $2 IP-osoitteet",
+ "checkuser-log-entry-ipedits": "$3, $1 haki IP-osoitteen $2 muokkaukset",
+ "checkuser-log-entry-ipusers": "$3, $1 haki IP-osoitteen $2 käyttäjät",
+ "checkuser-log-entry-useredits": "$3, $1 haki käyttäjän $2 muokkaukset",
"checkuser-autocreate-action": "luotiin automaattisesti",
"checkuser-create-action": "luotiin",
"checkuser-email-action": "käyttäjälle ”$1” lähetetty sähköpostiviesti",
- "checkuser-reset-action": "käyttäjän ”$1” salasana nollattu"
+ "checkuser-reset-action": "käyttäjän ”$1” salasana nollattu",
+ "checkuser-token-fail": "Istuntovirhe. Ole hyvä ja yritä uudelleen."
}
diff --git a/CheckUser/i18n/fr.json b/CheckUser/i18n/fr.json
index eaace331..a540a036 100644
--- a/CheckUser/i18n/fr.json
+++ b/CheckUser/i18n/fr.json
@@ -14,10 +14,15 @@
"Verdy p",
"Wyz",
"Zetud",
- "Element303"
+ "Element303",
+ "Orlodrim",
+ "Lbayle",
+ "Yasten",
+ "Wladek92",
+ "McDutchie"
]
},
- "checkuser-summary": "Cet outil parcourt la liste des changements récents à la recherche des adresses IP employées par un utilisateur ou affiche toutes les données utilisateur d’une adresse IP.\nLes comptes et les modifications faites par une adresse IP cliente peuvent être récupérés via les entêtes XFF en suffisant l’adresse IP avec \"/xff\". Les adresses IPv4 (CIDR /$1 à /32) et IPv6 (CIDR /$2 à /128) sont supportées.\nPas plus de 5000 modifications ne seront renvoyées, pour des questions de performance.\nVeuillez utiliser cet outil dans le respect de la charte d’utilisation.",
+ "checkuser-summary": "Cet outil parcourt la liste des changements récents à la recherche des adresses IP employées par un utilisateur ou affiche toutes les données utilisateur d’une adresse IP.\nLes comptes et les modifications faites par une adresse IP cliente peuvent être récupérés via les entêtes XFF en suffixant l’adresse IP avec \"/xff\". Les adresses IPv4 (CIDR /$1 à /32) et IPv6 (CIDR /$2 à /128) sont prises en charge.\nPas plus de 5000 modifications ne seront renvoyées, pour des questions de performance.\nVeuillez utiliser cet outil dans le respect de la charte d’utilisation.",
"checkuser-desc": "Donne la possibilité aux utilisateurs dûment autorisés de vérifier les adresses IP des utilisateurs ainsi que d’autres informations les concernant",
"checkuser-logcase": "La recherche dans le journal est sensible à la casse.",
"checkuser": "Vérificateur d’utilisateur",
@@ -33,13 +38,12 @@
"grouppage-checkuser": "{{ns:project}}:Vérificateurs d’utilisateurs",
"checkuser-reason": "Motif :",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Afficher le journal",
+ "checkuser-showlog": "Basculer sur le journal CheckUser",
"checkuser-query": "Recherche des modifications récentes",
"checkuser-target": "Nom d’utilisateur ou adresse IP :",
"checkuser-users": "Obtenir les utilisateurs",
"checkuser-edits": "Obtenir les modifications",
"checkuser-ips": "Obtenir les adresses IP",
- "checkuser-search": "Rechercher",
"checkuser-period": "Durée :",
"checkuser-week-1": "la semaine dernière",
"checkuser-week-2": "les deux dernières semaines",
@@ -60,6 +64,8 @@
"checkuser-localonly": "Non unifié",
"checkuser-massblock": "Bloquer les utilisateurs sélectionnés",
"checkuser-massblock-text": "Les comptes sélectionnés seront bloqués indéfiniment, avec le blocage automatique activé et la création de compte désactivée.\nLes adresses IP seront bloquées pendant une semaine uniquement pour les utilisateurs sous IP et avec la création de compte désactivée.",
+ "checkuser-blockemail": "Empêcher l’utilisateur d’envoyer des courriels",
+ "checkuser-blocktalk": "Empêcher l’utilisateur de modifier sa page de discussion pendant le blocage",
"checkuser-blocktag": "Remplacer les pages utilisateur par :",
"checkuser-blocktag-talk": "Remplacer les pages de discussion par :",
"checkuser-massblock-commit": "Bloquer les utilisateurs sélectionnés",
@@ -67,45 +73,55 @@
"checkuser-block-failure": "'''Aucun utilisateur bloqué.'''",
"checkuser-block-limit": "Trop d’utilisateurs sélectionnés.",
"checkuser-block-noreason": "Vous devez donner un motif justifiant les blocages.",
+ "checkuser-centralauth-multilock": "Verrouiller les comptes sélectionnés",
"checkuser-noreason": "Vous devez donner une raison pour cette requête.",
"checkuser-accounts": "$1 nouveau{{PLURAL:$1||x}} compte{{PLURAL:$1||s}}",
"checkuser-too-many": "Trop de résultats (selon l’estimation de la requête), veuillez affiner l’étendue CIDR.\nVoici un extrait des adresses IP utilisées ({{formatnum:5000}} maximum, triées par adresse) :",
"checkuser-user-nonexistent": "L’utilisateur indiqué n’existe pas.",
- "checkuser-search-form": "Chercher les entrées de journal où $1 est $2.",
+ "checkuser-search": "Rechercher ,les entrées de journal de vérification utilisateur",
"checkuser-search-submit": "Rechercher",
"checkuser-search-initiator": "l’initiateur",
"checkuser-search-target": "la cible",
+ "checkuser-log-search-target": "Cible :",
+ "checkuser-log-search-type": "Rechercher par :",
"checkuser-ipeditcount": "~$1 par tous les utilisateurs",
- "checkuser-log-return": "Basculer vers le formulaire principal du vérificateur d’utilisateur",
+ "checkuser-showmain": "Basculer vers le formulaire principal du vérificateur d’utilisateur",
"checkuser-limited": "'''Ces résultats ont été tronqués pour des raisons liées à la performance.'''",
- "checkuser-log-userips": "$1 a obtenu des IP utilisées par « $2 »",
- "checkuser-log-ipedits": "$1 a obtenu des modifications par l’adresse $2",
- "checkuser-log-ipusers": "$1 a obtenu des utilisateurs à l’adresse $2",
- "checkuser-log-ipedits-xff": "$1 a obtenu des modifications par l’adresse XFF $2",
- "checkuser-log-ipusers-xff": "$1 a obtenu des utilisateurs à l’adresse XFF $2",
- "checkuser-log-useredits": "$1 a obtenu des modifications par $2",
+ "checkuser-log-entry-userips": "$3, $1 a récupéré les adresses IP pour $2",
+ "checkuser-log-entry-ipedits": "$3, $1 a récupéré les modifications pour $2",
+ "checkuser-log-entry-ipusers": "$3, $1 a récupéré les utilisateurs pour $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 a récupéré les modifications pour $2 XFF",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 a récupéré les utilisateurs pour $2 XFF",
+ "checkuser-log-entry-useredits": "$3, $1 a récupéré les modifications pour $2",
"checkuser-autocreate-action": "a été créé automatiquement",
"checkuser-create-action": "a été créé",
"checkuser-email-action": "a envoyé un courriel à l’utilisateur « $1 »",
"checkuser-reset-action": "réinitialise le mot de passe de l’utilisateur « $1 »",
+ "checkuser-userlinks-ip": "([[User_talk:$1|discussion]] | [[Special:Contributions/$1|contributions]] | [[Special:Block/$1|blocage]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|discussion]] | [[Special:Contributions/$1|contributions]] | [[Special:Block/$1|blocage]])",
"checkuser-token-fail": "Échec de session. Veuillez réessayer.",
"group-checkuser.css": "/* Le CSS placé ici n’affectera que les membres du groupe « checkuser » */",
"group-checkuser.js": "/* Le Javascript placé ici n’affectera que les membres du groupe « checkuser » */",
"apihelp-query+checkuser-description": "Vérifier quelles adresses IP sont utilisées par un nom d’utilisateur donné ou quels noms d’utilisateur sont utilisés par une adresse IP donnée.",
+ "apihelp-query+checkuser-summary": "Vérifier quelles adresses IP sont utilisées pour un nom d’utilisateur donné, ou quels noms d’utilisateur sont utilisés pour une adresse IP donnée.",
"apihelp-query+checkuser-param-request": "Type de demande CheckUser :\n;userips:Obtenir l’adresse IP de l’utilisateur cible.\n;edits:Obtenir les modifications de l’adresse IP ou de la plage cible.\n;ipusers:Obtenir les utilisateurs de l’adresse IP ou de la plage cible.",
"apihelp-query+checkuser-param-target": "Nom d'utilisateur, adresse IP ou plage CIDR à vérifier.",
"apihelp-query+checkuser-param-reason": "Motif de vérification.",
"apihelp-query+checkuser-param-limit": "Limite de lignes.",
- "apihelp-query+checkuser-param-timecond": "Limite de temps des données utilisateur (comme « 2 semaines »).",
+ "apihelp-query+checkuser-param-timecond": "Limite de temps des données de l'utilisateur (comme \"-2 weeks\" ou \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Utiliser des données XFF au lieu d'adresse IP.",
"apihelp-query+checkuser-example-1": "Vérifier les adresses IP pour [[User:Example]]",
"apihelp-query+checkuser-example-2": "Vérifier les modifications pour 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Obtenir les entrées du journal CheckUser.",
+ "apihelp-query+checkuserlog-summary": "Obtenir les entrées du journal de vérification des utilisateurs.",
"apihelp-query+checkuserlog-param-user": "Nom d’utilisateur de CheckUser.",
"apihelp-query+checkuserlog-param-target": "Utilisateur, adresse IP ou plage CIDR vérifié.",
"apihelp-query+checkuserlog-param-limit": "Limite de lignes.",
"apihelp-query+checkuserlog-param-from": "L’horodatage auquel démarrer l’énumération.",
"apihelp-query+checkuserlog-param-to": "L’horodatage auquel arrêter l’énumération.",
"apihelp-query+checkuserlog-example-1": "Afficher les vérifications de [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Afficher les vérifications de 192.0.2.0/24 après 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Afficher les vérifications de 192.0.2.0/24 après 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Vous devez définir la raison pour laquelle le contrôle est fait.",
+ "apierror-checkuser-timelimit": "Vous devez utiliser une limite de temps correcte (comme \"-2 weeks\" ou \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "Mode de requête invalide"
}
diff --git a/CheckUser/i18n/frc.json b/CheckUser/i18n/frc.json
index 1a3b5bb9..651f34cc 100644
--- a/CheckUser/i18n/frc.json
+++ b/CheckUser/i18n/frc.json
@@ -1,10 +1,11 @@
{
"@metadata": {
"authors": [
- "JeanVoisin"
+ "JeanVoisin",
+ "Urhixidur"
]
},
- "checkuser-summary": "Cet outil observe les derniers changements pour récupérer l’adresse IP de l’useur ou pour montrer les données de modification et de l’useur de cette adresse IP.\nLes useurs et les modifications par l’adresse IP d’un client peuvent être récupérés par les en-têtes XFF en ajoutant « /xff » à l’adresse IP. Les adresses IPv4 (CIDR $1–32) et IPv6 (CIDR $2-128) sont supportées.\nPour des raisons de performance, cet outil ne retourne pas plus de 5&nbsp;000 modifications.\nUsez ça ici en accord avec les régulations.",
+ "checkuser-summary": "Cet outil parcourt la liste des changements récents à la recherche des adresses IP employées par un utilisateur ou affiche toutes les données utilisateur d’une adresse IP.\nLes comptes et les modifications faites par une adresse IP cliente peuvent être récupérés via les entêtes XFF en suffixant l’adresse IP avec \"/xff\". Les adresses IPv4 (CIDR /$1 à /32) et IPv6 (CIDR /$2 à /128) sont prises en charge.\nPas plus de 5000 modifications ne seront renvoyées, pour des questions de performance.\nVeuillez utiliser cet outil dans le respect de la charte d’utilisation.",
"checkuser-logcase": "La charche des notes est sensible aux lettres basses ou hautes.",
"checkuser": "'Gardez-voir à l'useur encore",
"checkuserlog": "Notes de la Garde d'useur",
@@ -18,10 +19,10 @@
"checkuser-users": "Obtenir les useurs",
"checkuser-edits": "Obtenir les modifications du IP",
"checkuser-ips": "Obtenir les adresses IP",
- "checkuser-search": "Charche",
"checkuser-empty": "Les notes sont vides.",
"checkuser-nomatch": "Rien pareil trouvé.",
"checkuser-check": "Charche",
"checkuser-log-fail": "Pas capable d'additionner la note",
- "checkuser-nolog": "Rien trouvé dans les notes."
+ "checkuser-nolog": "Rien trouvé dans les notes.",
+ "checkuser-search": "Charche"
}
diff --git a/CheckUser/i18n/frp.json b/CheckUser/i18n/frp.json
index 83e86183..4217f8a5 100644
--- a/CheckUser/i18n/frp.json
+++ b/CheckUser/i18n/frp.json
@@ -64,12 +64,6 @@
"checkuser-ipeditcount": "~$1 per tôs los usanciérs",
"checkuser-log-return": "Tornar u formulèro principâl du contrôlo d’usanciér",
"checkuser-limited": "'''Cetos rèsultats ont étâ tronchiês por des rêsons liyês a la pèrformence.'''",
- "checkuser-log-userips": "$1 at obtegnu des IP por $2",
- "checkuser-log-ipedits": "$1 at avu des changements per l’adrèce IP $2",
- "checkuser-log-ipusers": "$1 at obtegnu des usanciérs por $2",
- "checkuser-log-ipedits-xff": "$1 at avu des changements per l’adrèce XFF $2",
- "checkuser-log-ipusers-xff": "$1 at obtegnu des usanciérs por XFF $2",
- "checkuser-log-useredits": "$1 at avu des changements per $2",
"checkuser-autocreate-action": "at étâ fêt ôtomaticament",
"checkuser-create-action": "at étâ fêt",
"checkuser-email-action": "at mandâ un mèssâjo a l’usanciér « $1 »",
diff --git a/CheckUser/i18n/ga.json b/CheckUser/i18n/ga.json
index 3ac30ba3..a1fe3485 100644
--- a/CheckUser/i18n/ga.json
+++ b/CheckUser/i18n/ga.json
@@ -44,12 +44,6 @@
"checkuser-search-initiator": "tionscnóir",
"checkuser-search-target": "targaid",
"checkuser-ipeditcount": "~$1 as na n-úsáideoir go léir",
- "checkuser-log-userips": "Fuair $1 seolaidh IP le $2",
- "checkuser-log-ipedits": "Fuair $1 athruithe le $2",
- "checkuser-log-ipusers": "Fuair $1 úsáideoirí le $2",
- "checkuser-log-ipedits-xff": "Fuair $1 athruithe le XFF $2",
- "checkuser-log-ipusers-xff": "Fuair $1 úsáideoirí le XFF $2",
- "checkuser-log-useredits": "Fuair $1 athruithe le $2",
"checkuser-autocreate-action": "a chruthú go huathoibríoch",
"checkuser-email-action": "a chur riomhphoist do úsáideoir \"$1\"",
"checkuser-reset-action": "a athshocrú pásfhocal le úsáideoir \"$1\""
diff --git a/CheckUser/i18n/gl.json b/CheckUser/i18n/gl.json
index 6e2ab9a6..8e2f3b9a 100644
--- a/CheckUser/i18n/gl.json
+++ b/CheckUser/i18n/gl.json
@@ -6,7 +6,9 @@
"Xosé",
"Banjo",
"Fisterraeomar",
- "Elisardojm"
+ "Elisardojm",
+ "Macofe",
+ "McDutchie"
]
},
"checkuser-summary": "Esta ferramenta analiza os cambios para recuperar os enderezos IP utilizados por un usuario ou mostrar as edicións ou os datos de usuario dun enderezo IP.\nOs usuarios e as edicións dun cliente IP poden recuperarse a través de cabeceiras XFF, engadindo o sufixo \"/xff\" ao enderezo IP. IPv4 (CIDR $1-32) e IPv6 (CIDR $2-128) están soportados.\nNon se devolverán máis de 5.000 edicións por motivos de rendemento.\nUse isto de acordo coas políticas.",
@@ -25,13 +27,12 @@
"grouppage-checkuser": "{{ns:project}}:Verificadores de usuarios",
"checkuser-reason": "Motivo:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Mostrar o rexistro",
+ "checkuser-showlog": "Cambiar ó rexistro CheckUser",
"checkuser-query": "Examinar os cambios recentes",
"checkuser-target": "Enderezo IP ou nome de usuario:",
"checkuser-users": "Obter os usuarios",
"checkuser-edits": "Obter as edicións",
"checkuser-ips": "Obter os enderezos IP",
- "checkuser-search": "Procurar",
"checkuser-period": "Período:",
"checkuser-week-1": "última semana",
"checkuser-week-2": "últimas dúas semanas",
@@ -52,6 +53,8 @@
"checkuser-localonly": "Sen unificar",
"checkuser-massblock": "Bloquear os usuarios seleccionados",
"checkuser-massblock-text": "As contas seleccionadas bloquearanse indefinidamente, co bloqueo automático activado e a creación de contas desactivada.\nOs enderezos IP bloquearanse cun tempo de duración dunha semana só para os usuarios anónimos e coa creación de contas desactivada.",
+ "checkuser-blockemail": "Impedir que se envíen correos electrónicos",
+ "checkuser-blocktalk": "Impedir que edite a súa propia páxina de conversa mentres dure o bloqueo",
"checkuser-blocktag": "Substituír as páxinas de usuario por:",
"checkuser-blocktag-talk": "Substituír as conversas con:",
"checkuser-massblock-commit": "Bloquear os usuarios seleccionados",
@@ -59,45 +62,55 @@
"checkuser-block-failure": "'''Non hai ningún usuario bloqueado.'''",
"checkuser-block-limit": "Hai seleccionados demasiados usuarios.",
"checkuser-block-noreason": "Debe dar unha razón para os bloqueos.",
+ "checkuser-centralauth-multilock": "Bloquear contas múltiples seleccionadas",
"checkuser-noreason": "Debe dar unha razón para esta pescuda.",
"checkuser-accounts": "{{PLURAL:$1|Unha nova conta|$1 novas contas}}",
"checkuser-too-many": "Hai demasiados resultados (segundo a estimación da pescuda), restrinxa o CIDR.\nAquí están os enderezos IP usados (máximo de 5.000, ordenados por enderezo):",
"checkuser-user-nonexistent": "O usuario especificado non existe.",
- "checkuser-search-form": "Atopar as entradas do rexistro nas que $1 é $2",
+ "checkuser-search": "Procurar as entradas do rexistro de verificación de usuarios",
"checkuser-search-submit": "Procurar",
"checkuser-search-initiator": "iniciador",
"checkuser-search-target": "destino",
+ "checkuser-log-search-target": "Obxectivo:",
+ "checkuser-log-search-type": "Procurar por:",
"checkuser-ipeditcount": "~$1 de todos os usuarios",
- "checkuser-log-return": "Cambiar ao formulario principal de verificador de usuarios",
+ "checkuser-showmain": "Cambiar ao formulario principal de verificador de usuarios",
"checkuser-limited": "'''Estes resultados foron truncados por motivos de rendemento.'''",
- "checkuser-log-userips": "$1 obteu os enderezos IP de \"$2\"",
- "checkuser-log-ipedits": "$1 obteu as edicións de \"$2\"",
- "checkuser-log-ipusers": "$1 obteu os usuarios de \"$2\"",
- "checkuser-log-ipedits-xff": "$1 obteu as edicións de XFF $2",
- "checkuser-log-ipusers-xff": "$1 obteu os usuarios de XFF $2",
- "checkuser-log-useredits": "\"$1\" obteu as edicións de \"$2\"",
+ "checkuser-log-entry-userips": "$3, $1 obtivo as direccións IP de $2",
+ "checkuser-log-entry-ipedits": "$3, $1 obtivo as contribucións de $2",
+ "checkuser-log-entry-ipusers": "$3, $1 obtivo os usuarios de $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 obtivo as contribucións de XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 obtivo os usuarios de XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 obtivo as contribucións de $2",
"checkuser-autocreate-action": "foi creada automaticamente",
"checkuser-create-action": "foi creada",
"checkuser-email-action": "envioulle un correo electrónico ao usuario \"$1\"",
"checkuser-reset-action": "envioulle un novo contrasinal ao usuario \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|conversa]] | [[Special:Contributions/$1|contribucións]] | [[Special:Block/$1|bloquear]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|conversa]] | [[Special:Contributions/$1|contribucións]] | [[Special:Block/$1|bloquear]])",
"checkuser-token-fail": "Fallo na sesión. Probe de novo.",
"group-checkuser.css": "/* O CSS que se coloque aquí afectará soamente aos verificadores de usuarios */",
"group-checkuser.js": "/* O JS que se coloque aquí afectará soamente aos verificadores de usuarios */",
"apihelp-query+checkuser-description": "Comprobar que enderezos IP son empregados por un usuario concreto ou que nomes de usuario son empregados por un IP específico.",
+ "apihelp-query+checkuser-summary": "Comprobar que enderezos IP son empregados por un usuario concreto ou que nomes de usuario son empregados por un IP específico.",
"apihelp-query+checkuser-param-request": "Tipo da petición CheckUser:\n;userips: Retornar o enderezo IP do usuario obxetivo.\n;edits: Retornar os cambios do enderezo IP ou rango obxetivo.\n;ipusers: Retornar os usuarios do enderezo IP ou rango obxetivo.",
"apihelp-query+checkuser-param-target": "Nome de usuario, dirección IP, ou rango CIDR a comprobar.",
"apihelp-query+checkuser-param-reason": "Motivo para a comprobación.",
"apihelp-query+checkuser-param-limit": "Límite de filas.",
- "apihelp-query+checkuser-param-timecond": "Límite de tempo dos datos de usuario (coma \"2 semanas\").",
+ "apihelp-query+checkuser-param-timecond": "Límite de tempo dos datos de usuario (coma \"-2 weeks\" ou \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Usar datos XFF no canto do enderezo IP.",
"apihelp-query+checkuser-example-1": "Comprobar enderezos IP para [[User:Example]]",
"apihelp-query+checkuser-example-2": "Comprobar as edicións de 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Retornar entradas do rexistro de CheckUser",
+ "apihelp-query+checkuserlog-summary": "Retornar entradas do rexistro de CheckUser",
"apihelp-query+checkuserlog-param-user": "Nome de usuario do CheckUser.",
"apihelp-query+checkuserlog-param-target": "Usuario comprobado, enderezo IP, ou rango CIDR.",
"apihelp-query+checkuserlog-param-limit": "Límite de filas.",
"apihelp-query+checkuserlog-param-from": "Selo de tempo no que comezar a enumeración.",
"apihelp-query+checkuserlog-param-to": "Selo de tempo para rematar a enumeración.",
"apihelp-query+checkuserlog-example-1": "Amosar as comprobacións de [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Amosar as comprobacións de 192.0.2.0/24 despois de 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Amosar as comprobacións de 192.0.2.0/24 despois de 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Debes definir un motivo para comprobar.",
+ "apierror-checkuser-timelimit": "Debe usar un límite de tempo correcto (como \"-2 weeks\" ou \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "Modo de petición non válido"
}
diff --git a/CheckUser/i18n/got.json b/CheckUser/i18n/got.json
index 60c8cba5..2c28e8aa 100644
--- a/CheckUser/i18n/got.json
+++ b/CheckUser/i18n/got.json
@@ -1,6 +1,6 @@
{
- "@metadata": {
- "authors": []
- },
- "checkuser-reason": "𐍆𐌰𐌹𐍂𐌹𐌽𐌰:"
+ "@metadata": {
+ "authors": []
+ },
+ "checkuser-reason": "𐍆𐌰𐌹𐍂𐌹𐌽𐌰:"
} \ No newline at end of file
diff --git a/CheckUser/i18n/gsw.json b/CheckUser/i18n/gsw.json
index a131ba9f..37e1edf3 100644
--- a/CheckUser/i18n/gsw.json
+++ b/CheckUser/i18n/gsw.json
@@ -67,12 +67,6 @@
"checkuser-ipeditcount": "~$1 vu allene Benutzer",
"checkuser-log-return": "Zum CheckUser-Hauptformular wächsle",
"checkuser-limited": "'''D Ergebnislischt isch us Performancegrind gchirzt wore.'''",
- "checkuser-log-userips": "$1 het IP-Adrässe fir $2 gholt",
- "checkuser-log-ipedits": "$1 het Bearbeitige fir $2 gholt",
- "checkuser-log-ipusers": "$1 het Benutzer fir $2 gholt",
- "checkuser-log-ipedits-xff": "$1 het Bearbeitige fir XFF $2 gholt",
- "checkuser-log-ipusers-xff": "$1 het Benutzer fir XFF $2 gholt",
- "checkuser-log-useredits": "$1 het Bearbeitige fir $2 gholt",
"checkuser-autocreate-action": "isch automatisch aagleit wore",
"checkuser-create-action": "isch erstellt worde",
"checkuser-email-action": "het e E-Mail an „$1“ gschickt",
diff --git a/CheckUser/i18n/hak.json b/CheckUser/i18n/hak.json
index 60d48401..09491e1f 100644
--- a/CheckUser/i18n/hak.json
+++ b/CheckUser/i18n/hak.json
@@ -1,9 +1,10 @@
{
"@metadata": {
"authors": [
- "Hakka"
+ "Hakka",
+ "唐吉訶德的侍從"
]
},
- "checkuser-search": "Chhìm-cháu",
- "checkuser-search-submit": "Chhìm-cháu"
+ "checkuser-search": "Chhìm",
+ "checkuser-search-submit": "Chhìm"
}
diff --git a/CheckUser/i18n/he.json b/CheckUser/i18n/he.json
index 113f18b6..d6afae68 100644
--- a/CheckUser/i18n/he.json
+++ b/CheckUser/i18n/he.json
@@ -18,20 +18,19 @@
"checkuser-contribs-log": "בדיקות השוואת כתובת אחרונות של המשתמש",
"group-checkuser": "בודקים",
"group-checkuser-member": "{{GENDER:$1|בודק|בודקת}}",
- "right-checkuser": "מציאת כתובות IP של משתמשים ומידע נוסף",
+ "right-checkuser": "מציאת כתובות IP ומידע נוסף של משתמשים",
"right-checkuser-log": "צפייה ביומן הבדיקות",
- "action-checkuser": "בדיקת כתובות ה־IP של משתמש זה ומידע אחר",
- "action-checkuser-log": "להציג את יומן בדיקת המשתמשים",
+ "action-checkuser": "למצוא כתובות IP ומידע נוסף של משתמשים",
+ "action-checkuser-log": "לצפות ביומן הבדיקות",
"grouppage-checkuser": "{{ns:project}}:בודק",
"checkuser-reason": "סיבה:",
"checkuser-reason-api": "API‏: $1",
- "checkuser-showlog": "הצגת יומן",
+ "checkuser-showlog": "מעבר ליומן בדיקת משתמשים",
"checkuser-query": "שאילתה בשינויים אחרונים",
"checkuser-target": "כתובת IP או שם משתמש:",
"checkuser-users": "שליפת משתמשים",
"checkuser-edits": "שליפת עריכות",
"checkuser-ips": "שליפת כתובות IP",
- "checkuser-search": "חיפוש",
"checkuser-period": "פרק זמן:",
"checkuser-week-1": "השבוע האחרון",
"checkuser-week-2": "השבועיים האחרונים",
@@ -52,6 +51,8 @@
"checkuser-localonly": "חשבון לא מאוחד",
"checkuser-massblock": "חסימת המשתמשים שנבחרו",
"checkuser-massblock-text": "חשבונות המשתמש שנבחרו ייחסמו לצמיתות, עם הפעלה של חסימה אוטומטית של כתובות IP וללא אפשרות ליצור חשבון.\nכתובות IP תיחסמנה לשבוע אחד עבור משתמשים אנונימיים בלבד, וללא אפשרות ליצור חשבון.",
+ "checkuser-blockemail": "למנוע שליחת דואר אלקטרוני",
+ "checkuser-blocktalk": "למנוע עריכת את דף שיחת המשתמש בזמן החסימה",
"checkuser-blocktag": "החלפת דפי המשתמש עם:",
"checkuser-blocktag-talk": "החלפת דפי השיחה עם:",
"checkuser-massblock-commit": "חסימת המשתמשים שנבחרו",
@@ -59,45 +60,55 @@
"checkuser-block-failure": "'''לא נחסמו משתמשים.'''",
"checkuser-block-limit": "נבחרו יותר מדי משתמשים.",
"checkuser-block-noreason": "יש לתת סיבה לחסימות.",
+ "checkuser-centralauth-multilock": "נעילה מרובה של חשבונות שנבחרו",
"checkuser-noreason": "יש לכתוב סיבה לשאילתה הזאת.",
"checkuser-accounts": "{{PLURAL:$1|חשבון חדש אחד|$1 חשבונות חדשים}}",
"checkuser-too-many": "נמצאו תוצאות רבות מדי (לפי הערכה של השאילתה). נא לצמצם את ה־CIDR.\nלהלן כתובות ה־IP שנעשה בהן שימוש (מוצגות 5,000 לכל היותר, וממוינות לפי כתובת):",
"checkuser-user-nonexistent": "המשתמש שצוין לא נמצא.",
- "checkuser-search-form": "מציאת ערכים ביומן שבהם ה$1 הוא $2",
+ "checkuser-search": "חיפוש עיולים ביומן בדיקת משתמשים",
"checkuser-search-submit": "חיפוש",
"checkuser-search-initiator": "בודק",
"checkuser-search-target": "נבדק",
+ "checkuser-log-search-target": "יעד:",
+ "checkuser-log-search-type": "חיפוש לפי:",
"checkuser-ipeditcount": "בערך $1 מכל המשתמשים",
- "checkuser-log-return": "מעבר לטופס הבדיקה הראשי",
+ "checkuser-showmain": "מעבר לטופס הבדיקה הראשי",
"checkuser-limited": "'''הדף נקטע כדי לחסוך במשאבים.'''",
- "checkuser-log-userips": "$1 {{GENDER:$1|שלף|שלפה}} את כתובות ה־IP של $2",
- "checkuser-log-ipedits": "$1 {{GENDER:$1|שלף|שלפה}} את העריכות של $2",
- "checkuser-log-ipusers": "$1 {{GENDER:$1|שלף|שלפה}} את המשתמשים של $2",
- "checkuser-log-ipedits-xff": "$1 {{GENDER:$1|שלף|שלפה}} את העריכות של כתובת ה־XFF $2",
- "checkuser-log-ipusers-xff": "$1 {{GENDER:$1|שלף|שלפה}} את המשתמשים של כתובת ה־XFF $2",
- "checkuser-log-useredits": "$1 {{GENDER:$1|שלף|שלפה}} את העריכות של $2",
+ "checkuser-log-entry-userips": "$3, משתמש $1 קיבל כתובות IP עבור $2",
+ "checkuser-log-entry-ipedits": "$3, משתמש $1 קיבל עריכות עבור $2",
+ "checkuser-log-entry-ipusers": "$3, משתמש $1 קיבל משתמשים עבור $2",
+ "checkuser-log-entry-ipedits-xff": "$3, משתמש $1 קיבל עריכות עבור ה־XFF בכתובת $2",
+ "checkuser-log-entry-ipusers-xff": "$3, משתמש $1 קיבל משתמשים עבור ה־XFF בכתובת $2",
+ "checkuser-log-entry-useredits": "$3, משתמש $1 קיבל עריכות עבור $2",
"checkuser-autocreate-action": "נוצר אוטומטית",
"checkuser-create-action": "נוצר",
"checkuser-email-action": "נשלח דואר אלקטרוני למשתמש \"$1\"",
"checkuser-reset-action": "איפס את הסיסמה של המשתמש \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|שיחה]] | [[Special:Contributions/$1|תרומות]] | [[Special:Block/$1|חסימה]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|שיחה]] | [[Special:Contributions/$1|תרומות]] | [[Special:Block/$1|חסימה]])",
"checkuser-token-fail": "כשל שיחה. נא לנסות שוב.",
"group-checkuser.css": "/* הסגנונות הנכתבים כאן ישפיעו על בודקים בלבד */",
- "group-checkuser.js": "/* כל סקריפט JavaScript שנכתב כאן ירוץ עבור בודקים בלבד */",
+ "group-checkuser.js": "/* כל הסקריפטים הנכתבים כאן ייטענו עבור בודקים בלבד */",
"apihelp-query+checkuser-description": "בדיקה אילו כתובות IP משמשות שם משתמש מסוים או אילו שמות משתמש משמשות כתובת IP מסוימת.",
+ "apihelp-query+checkuser-summary": "בדיקה אילו כתובות IP משמשות שם משתמש מסוים או אילו שמות משתמש משמשות כתובת IP מסוימת.",
"apihelp-query+checkuser-param-request": "סוגי בדיקת משתמש:\n;userips:קבלת כתובות IP של המשתמש המיועד.\n;edits:קבלת שינויים מכתובת ה־IP או מהטווח המיועדים.\n;ipusers:קבלת משתמשים מכתובת ה־IP או מהטווח המיועדים.",
"apihelp-query+checkuser-param-target": "ש משתמש, כתובת IP, או טווח CIDR לבדיקה.",
"apihelp-query+checkuser-param-reason": "סיבה לבדיקה.",
"apihelp-query+checkuser-param-limit": "מגבלת שורות.",
- "apihelp-query+checkuser-param-timecond": "מגבלת זמן של נתוני משתמש (כמו \"2 weeks\").",
+ "apihelp-query+checkuser-param-timecond": "מגבלת זמן של נתוני משתמש (כמו \"-2 weeks\" או \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "להשתמש בנתוני XFF במקום בכתובת IP.",
"apihelp-query+checkuser-example-1": "בדיקת כתובות IP עבור [[User:Example]]",
"apihelp-query+checkuser-example-2": "בדיקת עריכות מ־192.0.2.0/24",
"apihelp-query+checkuserlog-description": "קבלת עיוליחם מיומן בדיקת משתמשים.",
+ "apihelp-query+checkuserlog-summary": "קבלת עיולים מיומן בדיקת משתמשים.",
"apihelp-query+checkuserlog-param-user": "שם משתמש של הבודק.",
"apihelp-query+checkuserlog-param-target": "המשתמש הנבדק, כתובת IP או טווח CIDR.",
"apihelp-query+checkuserlog-param-limit": "מגבלת שורות.",
"apihelp-query+checkuserlog-param-from": "חותם־הזמן שהמנייה תתחיל ממנו.",
"apihelp-query+checkuserlog-param-to": "חותם־הזמן שהמנייה תסתיים בו.",
"apihelp-query+checkuserlog-example-1": "הצגת בדיקות של [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "קבלת בדיקות של 192.0.2.0/24 אחרי 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "קבלת בדיקות של 192.0.2.0/24 אחרי 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "עליך להגדיר סיבה לבדיקה.",
+ "apierror-checkuser-timelimit": "עליך להגדיר מגבלת זמן נכונה (למשל \"-2 weeks\" או \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "מצב בקשה בלתי־תקין"
}
diff --git a/CheckUser/i18n/hi.json b/CheckUser/i18n/hi.json
index 081c8e0f..a9e417e7 100644
--- a/CheckUser/i18n/hi.json
+++ b/CheckUser/i18n/hi.json
@@ -4,7 +4,9 @@
"Ansumang",
"Kaustubh",
"Shyam",
- "Siddhartha Ghai"
+ "Siddhartha Ghai",
+ "जनक राज भट्ट",
+ "Sfic"
]
},
"checkuser-summary": "यह उपकरण हाल में किये गये बदलावों की जाँच किसी सदस्य द्वारा प्रयुक्त सारे आई॰पी पते खोजने के लिए, अथवा किसी आई॰पी का उपयोग करने वाले सभी सदस्यों का सम्पादन एवं सदस्य डाटा खोजने के लिए करता है।\nXFF headers का प्रयोग कर के किसी आई॰पी से सम्बद्ध सदस्य एवं सम्पादन जानकारी आई॰पी पते के आगे \"/xff\" लगाकर खोजी जा सकती है। IPv4 (CIDR $1-32) और IPv6 (CIDR $2-128) समर्थित हैं।\nप्रदर्शन कारणों की वजह से पाँच हज़ार से अधिक सम्पादन नहीं दिखाए जाएँगे।\nइसे नीति के अनुसार प्रयोग करें।",
@@ -23,13 +25,12 @@
"grouppage-checkuser": "{{ns:project}}: सदस्य जाँचकर्ता",
"checkuser-reason": "कारण:",
"checkuser-reason-api": "ए॰पी॰आई: $1",
- "checkuser-showlog": "लॉग दिखायें",
+ "checkuser-showlog": "सदस्यजाँच लॉग दिखायें",
"checkuser-query": "हाल में हुए बदलावों में खोजें",
"checkuser-target": "आई॰पी पता या सदस्यनाम:",
"checkuser-users": "सदस्य खोजें",
"checkuser-edits": "सम्पादन खोजें",
"checkuser-ips": "आई॰पी पते खोजें",
- "checkuser-search": "खोजें",
"checkuser-period": "अवधि:",
"checkuser-week-1": "पिछले सप्ताह",
"checkuser-week-2": "पिछले दो सप्ताह",
@@ -61,23 +62,20 @@
"checkuser-accounts": "$1 {{PLURAL:$1|नया खाता|नये खाते}}",
"checkuser-too-many": "बहुत सारे परिणाम (खोज अंदाज़े अनुसार)। कृपया CIDR छोटा करें।\nनीचे प्रयुक्त आई॰पी पतों की सूची हैं (अधिकतम पाँच हज़ार, अनुक्रम में):",
"checkuser-user-nonexistent": "निर्दिष्ट सदस्य मौजूद नहीं है।",
- "checkuser-search-form": "ऐसी लॉग प्रविष्टियाँ खोजें जिनमें $1 है $2",
+ "checkuser-search": "खोजें",
"checkuser-search-submit": "खोजें",
"checkuser-search-initiator": "कर्ता",
"checkuser-search-target": "लक्ष्य",
+ "checkuser-log-search-target": "लक्ष्य:",
"checkuser-ipeditcount": "~$1 सभी सदस्यों से",
- "checkuser-log-return": "सदस्य जाँच मुख्य फ़ॉर्म पर वापिस जायें",
+ "checkuser-showmain": "सदस्य जाँच मुख्य फ़ॉर्म पर वापिस जायें",
"checkuser-limited": "'''प्रदर्शन कारणों की वजह से केवल सीमित परिणाम दिखाये जा रहे हैं।'''",
- "checkuser-log-userips": "$1 ने $2 के लिये आई॰पी जानकारी ली",
- "checkuser-log-ipedits": "$1 ने $2 के लिये सम्पादन जानकारी ली",
- "checkuser-log-ipusers": "$1 ने $2 के लिये सदस्य जानकारी ली",
- "checkuser-log-ipedits-xff": "$1 ने XFF $2 के लिये सम्पादन जानकारी ली",
- "checkuser-log-ipusers-xff": "$1 ने XFF $2 के लिये सदस्य जानकारी ली",
- "checkuser-log-useredits": "$1 ने $2 के लिए सम्पादन जानकारी ली",
"checkuser-autocreate-action": "स्वचालित रूप से निर्मित हुआ था",
"checkuser-create-action": "बनाया गया था",
"checkuser-email-action": "सदस्य \"$1\" को ई-मेल भेजा गया",
"checkuser-reset-action": "\"$1\" के लिए पासवर्ड रीसेट करें",
"group-checkuser.css": "/* यहाँ पर दी सी॰एस॰एस केवल सदस्य जाँचकर्ताओं के लिये होगी */",
- "group-checkuser.js": "/* यहाँ पर दी जावास्क्रिप्ट केवल सदस्य जाँचकर्ताओं के लिए होगी */"
+ "group-checkuser.js": "/* यहाँ पर दी जावास्क्रिप्ट केवल सदस्य जाँचकर्ताओं के लिए होगी */",
+ "apihelp-query+checkuser-param-limit": "पंक्तियों की सीमा",
+ "apihelp-query+checkuserlog-param-limit": "पंक्तियों की सीमा"
}
diff --git a/CheckUser/i18n/hr.json b/CheckUser/i18n/hr.json
index 3c8a4465..8046cce8 100644
--- a/CheckUser/i18n/hr.json
+++ b/CheckUser/i18n/hr.json
@@ -31,7 +31,6 @@
"checkuser-users": "Suradnička imena",
"checkuser-edits": "Nađi izmjene",
"checkuser-ips": "IP adrese",
- "checkuser-search": "Traži",
"checkuser-period": "Vrijeme:",
"checkuser-week-1": "posljednji tjedan",
"checkuser-week-2": "posljednja dva tjedna",
@@ -63,21 +62,15 @@
"checkuser-accounts": "$1 {{PLURAL:$1|novi račun|novih računa}}",
"checkuser-too-many": "Previše rezultata, molimo suzite opseg (CIDR). Slijede korištene IP adrese (max 5000, poredano adresno):",
"checkuser-user-nonexistent": "Traženi suradnik (suradničko ime) ne postoji.",
- "checkuser-search-form": "Nađi zapise u evidenciji gdje $1 je $2",
+ "checkuser-search": "Traži",
"checkuser-search-submit": "Traži",
"checkuser-search-initiator": "provjeritelj",
"checkuser-search-target": "cilj (traženi pojam)",
"checkuser-ipeditcount": "~$1 od svih suradnika",
- "checkuser-log-return": "Vrati se na stranicu za provjeru",
+ "checkuser-showmain": "Vrati se na stranicu za provjeru",
"checkuser-limited": "'''Ovi rezultati su skraćeni zbog veće učinkovitosti izvođenja.'''",
- "checkuser-log-userips": "$1 tražio je IP adrese suradnika $2",
- "checkuser-log-ipedits": "$1 tražio je uređivanja suradnika $2",
- "checkuser-log-ipusers": "$1 tražio je suradnička imena za IP adresu $2",
- "checkuser-log-ipedits-xff": "$1 tražio je uređivanja za XFF $2",
- "checkuser-log-ipusers-xff": "$1 tražio je imena suradnika za XFF $2",
- "checkuser-log-useredits": "$1 tražio je uređivanja za $2",
"checkuser-autocreate-action": "je automatski stvoren",
"checkuser-create-action": "je napravljen",
"checkuser-email-action": "poslan email za \"$1\"",
- "checkuser-reset-action": "ponovno postavi lozinku za suradnika \"$1\""
+ "checkuser-reset-action": "ponovno postavi zaporku za suradnika \"$1\""
}
diff --git a/CheckUser/i18n/hsb.json b/CheckUser/i18n/hsb.json
index 4f663bcc..0e67107b 100644
--- a/CheckUser/i18n/hsb.json
+++ b/CheckUser/i18n/hsb.json
@@ -65,12 +65,6 @@
"checkuser-ipeditcount": "~$1 wot wšěch wužiwarjow",
"checkuser-log-return": "K hłownemu formularej CheckUser",
"checkuser-limited": "'''Tute wuslědki buchu z wukonowych přičinow wobrězane.'''",
- "checkuser-log-userips": "$1 dósta IP za $2",
- "checkuser-log-ipedits": "$1 dósta změny za $2",
- "checkuser-log-ipusers": "$1 dósta wužiwarjow za $2",
- "checkuser-log-ipedits-xff": "$1 dósta změny za XFF $2",
- "checkuser-log-ipusers-xff": "$1 dósta wužiwarjow za XFF $2",
- "checkuser-log-useredits": "$1 je změny za $2 wobstarał",
"checkuser-autocreate-action": "bu awtomatisce załožene",
"checkuser-create-action": "bu wutworjeny",
"checkuser-email-action": "pósła e-mejlku na wužiwarja \"$1\"",
diff --git a/CheckUser/i18n/hu.json b/CheckUser/i18n/hu.json
index 35097340..1b55b9fd 100644
--- a/CheckUser/i18n/hu.json
+++ b/CheckUser/i18n/hu.json
@@ -10,7 +10,8 @@
"Hunyadym",
"KossuthRad",
"Terik",
- "Tgr"
+ "Tgr",
+ "Wolf Rex"
]
},
"checkuser-summary": "Ez az eszköz végigvizsgálja a friss változásokat, hogy lekérje egy adott felhasználó IP-címeit vagy megjelenítse egy adott IP-címet használó szerkesztőket és az IP szerkesztéseit.\nEgy kliens IP-cím által végzett szerkesztések és felhasználói XFF fejlécek segítségével kérhetőek le, az IP-cím utáni „/xff” parancssal. Az IPv4 (CIDR $1-32) és az IPv6 (CIDR $2-128) is támogatott.\nMaximum 5000 szerkesztés fog megjelenni teljesítményi okok miatt. Az eszközt a szabályoknak megfelelően használd.",
@@ -28,13 +29,12 @@
"grouppage-checkuser": "{{ns:project}}:IP-ellenőrök",
"checkuser-reason": "Ok:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Napló megjelenítése",
+ "checkuser-showlog": "IP-ellenőrzési napló megjelenítése",
"checkuser-query": "Kétséges aktuális változások",
"checkuser-target": "IP-cím vagy felhasználónév:",
"checkuser-users": "Felhasználók keresése",
"checkuser-edits": "Szerkesztések lekérése",
"checkuser-ips": "IP-címek keresése",
- "checkuser-search": "Keresés",
"checkuser-period": "Időtartam:",
"checkuser-week-1": "előző hét",
"checkuser-week-2": "előző két hét",
@@ -66,21 +66,19 @@
"checkuser-accounts": "{{PLURAL:$1|egy|$1}} új felhasználói fiók",
"checkuser-too-many": "Túl sok találat (a lekérdezési becslés szerint), kérlek, szűkítsd le a CIDR-t.\nItt vannak a használt IP-címek (maximum 5000, cím alapján rendezve):",
"checkuser-user-nonexistent": "A megadott szerkesztő nem létezik.",
- "checkuser-search-form": "Naplóbejegyzések keresése, ahol $1 $2",
+ "checkuser-search": "Keresés a naplófájlokban",
"checkuser-search-submit": "Keresés",
"checkuser-search-initiator": "kezdeményező",
"checkuser-search-target": "Cél",
+ "checkuser-log-search-target": "Cél:",
"checkuser-ipeditcount": "~$1 az összes szerkesztő által",
- "checkuser-log-return": "Vissza az IP-ellenőri oldalra",
+ "checkuser-showmain": "Vissza az IP-ellenőri oldalra",
"checkuser-limited": "'''Teljesítményi okok miatt nem az összes találat lett megjelenítve.'''",
- "checkuser-log-userips": "$1 lekérte $2 IP-címeit",
- "checkuser-log-ipedits": "$1 lekérte $2 szerkesztéseit",
- "checkuser-log-ipusers": "$1 lekérte a(z) $2 IP-címhez tartozó szerkesztőket",
- "checkuser-log-ipedits-xff": "$1 lekérte XFF $2 szerkesztéseit",
- "checkuser-log-ipusers-xff": "$1 lekérte XFF $2 szerkesztőit",
- "checkuser-log-useredits": "$1 lekérdezte $2 szerkesztéseit",
"checkuser-autocreate-action": "automatikusan létrehozva",
"checkuser-create-action": "készült",
"checkuser-email-action": "e-mailt küldött „$1” szerkesztőnek",
- "checkuser-reset-action": "lecserélte „$1” jelszavát"
+ "checkuser-reset-action": "lecserélte „$1” jelszavát",
+ "apihelp-query+checkuser-param-reason": "Az ellenőrzés oka.",
+ "apihelp-query+checkuser-param-xff": "XFF-adat használata IP-cím helyett.",
+ "apihelp-query+checkuserlog-param-user": "Az IP-ellenőr neve."
}
diff --git a/CheckUser/i18n/ia.json b/CheckUser/i18n/ia.json
index f0eba62e..815ffe00 100644
--- a/CheckUser/i18n/ia.json
+++ b/CheckUser/i18n/ia.json
@@ -20,13 +20,12 @@
"grouppage-checkuser": "{{ns:project}}:Verificator de usatores",
"checkuser-reason": "Motivo:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Monstrar registro",
+ "checkuser-showlog": "Passar al registro CheckUser",
"checkuser-query": "Consultar le modificationes recente",
"checkuser-target": "Adresse IP o nomine de usator:",
"checkuser-users": "Cercar usatores",
"checkuser-edits": "Obtener modificationes",
"checkuser-ips": "Cercar IPs",
- "checkuser-search": "Cercar",
"checkuser-period": "Durata:",
"checkuser-week-1": "ultime septimana",
"checkuser-week-2": "ultime duo septimanas",
@@ -47,6 +46,8 @@
"checkuser-localonly": "Non unificate",
"checkuser-massblock": "Blocar usatores seligite",
"checkuser-massblock-text": "Le contos seligite essera blocate infinitemente, con le blocada automatic activate e le creation de contos disactivate.\nLe adresses IP essera blocate durante 1 septimana pro usatores IP solmente e con le creation de contos disactivate.",
+ "checkuser-blockemail": "Impedir de inviar e-mail",
+ "checkuser-blocktalk": "Impedir de modificar le proprie pagina de discussion durante le blocada",
"checkuser-blocktag": "Reimplaciar paginas de usatores con:",
"checkuser-blocktag-talk": "Reimplaciar le paginas de discussion per:",
"checkuser-massblock-commit": "Blocar usatores seligite",
@@ -54,25 +55,53 @@
"checkuser-block-failure": "'''Nulle usator blocate.'''",
"checkuser-block-limit": "Troppo de usatores seligite.",
"checkuser-block-noreason": "Tu debe indicar un motivo pro le blocadas.",
+ "checkuser-centralauth-multilock": "Multi-blocar le contos seligite",
"checkuser-noreason": "Tu debe dar un motivo pro iste consulta.",
"checkuser-accounts": "$1 nove {{PLURAL:$1|conto|contos}}",
- "checkuser-too-many": "Troppo de resultatos (secundo un estimation del consulta). Per favor restringe le CIDR.\nEcce le IPs usate (max. 5000, ordinate per adresse):",
+ "checkuser-too-many": "Troppo de resultatos (per estimation del consulta). Per favor, specifica un CIDR plus stricte.\nEcce le IPs usate (max. 5000, ordinate per adresse):",
"checkuser-user-nonexistent": "Le usator specificate non existe.",
- "checkuser-search-form": "Cercar entratas in le registro ubi le $1 es $2",
+ "checkuser-search": "Cercar entratas de registro CheckUser",
"checkuser-search-submit": "Cercar",
"checkuser-search-initiator": "initiator",
"checkuser-search-target": "objectivo",
+ "checkuser-log-search-target": "Objectivo:",
+ "checkuser-log-search-type": "Cercar per:",
"checkuser-ipeditcount": "~$1 de tote le usatores",
- "checkuser-log-return": "Cambiar al formulario principal del verification de usatores",
+ "checkuser-showmain": "Cambiar al formulario principal del verification de usatores",
"checkuser-limited": "'''Iste resultatos ha essite truncate pro motivos de prestationes.'''",
- "checkuser-log-userips": "$1 obteneva IPs pro $2",
- "checkuser-log-ipedits": "$1 obteneva modificationes pro $2",
- "checkuser-log-ipusers": "$1 obteneva usatores pro $2",
- "checkuser-log-ipedits-xff": "$1 obteneva modificationes pro XFF $2",
- "checkuser-log-ipusers-xff": "$1 obteneva usatores pro XFF $2",
- "checkuser-log-useredits": "$1 obteneva modificationes de $2",
+ "checkuser-log-entry-userips": "$3, $1 ha obtenite le adresses IP pro $2",
+ "checkuser-log-entry-ipedits": "$3, $1 ha obtenite le modificationes pro $2",
+ "checkuser-log-entry-ipusers": "$3, $1 ha obtenite le usatores pro $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 ha obtenite le modificationes pro XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 ha obtenite le usatores pro XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 ha obtenite le modificationes pro $2",
"checkuser-autocreate-action": "ha essite create automaticamente",
"checkuser-create-action": "ha essite create",
"checkuser-email-action": "inviava un e-mail al usator \"$1\"",
- "checkuser-reset-action": "redefiniva contrasigno pro usator \"$1\""
+ "checkuser-reset-action": "redefiniva contrasigno pro usator \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|discussion]] | [[Special:Contributions/$1|contributiones]] | [[Special:Block/$1|blocar]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|discussion]] | [[Special:Contributions/$1|contributiones]] | [[Special:Block/$1|blocar]])",
+ "checkuser-token-fail": "Session fallite. Per favor, essaya de novo.",
+ "apihelp-query+checkuser-description": "Verificar qual nomines de usator usa un adresse IP date o qual adresses IP usa un nomine de usator date.",
+ "apihelp-query+checkuser-summary": "Verificar qual nomines de usator usa un adresse IP date o qual adresses IP usa un nomine de usator date.",
+ "apihelp-query+checkuser-param-request": "Typo de demanda CheckUser :\n;userips:Obtener le adresse IP del usator.\n;edits:Obtener le modificationes del adresse o intervallo IP.\n;ipusers:Obtener le usatores del adresse o intervallo IP.",
+ "apihelp-query+checkuser-param-target": "Le nomine de usator, adresse IP o intervallo CIDR a verificar.",
+ "apihelp-query+checkuser-param-reason": "Motivo pro verificar.",
+ "apihelp-query+checkuser-param-limit": "Limite de lineas.",
+ "apihelp-query+checkuser-param-timecond": "Limite de tempore del datos de usator (in anglese, como \"-2 weeks\" o \"2 weeks ago\").",
+ "apihelp-query+checkuser-param-xff": "Usar datos XFF in loco del adresse IP.",
+ "apihelp-query+checkuser-example-1": "Verificar adresses IP pro [[User:Example]]",
+ "apihelp-query+checkuser-example-2": "Verificar modificationes ab 192.0.2.0/24",
+ "apihelp-query+checkuserlog-description": "Obtener entratas ab le registro CheckUser.",
+ "apihelp-query+checkuserlog-summary": "Obtener entratas ab le registro CheckUser.",
+ "apihelp-query+checkuserlog-param-user": "Nomine del usator con le derecto CheckUser.",
+ "apihelp-query+checkuserlog-param-target": "Le usator, adresse IP o intervallo CIDR verificate.",
+ "apihelp-query+checkuserlog-param-limit": "Limite de lineas.",
+ "apihelp-query+checkuserlog-param-from": "Le data e hora al qual comenciar a enumerar.",
+ "apihelp-query+checkuserlog-param-to": "Le data e hora al qual cessar de enumerar.",
+ "apihelp-query+checkuserlog-example-1": "Monstrar verificationes de [[User:Example]]",
+ "apihelp-query+checkuserlog-example-2": "Monstrar verificationes de 192.0.2.0/24 post 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Tu debe scriber un motivo pro verificar.",
+ "apierror-checkuser-timelimit": "Tu debe usar un limite de tempore correcte (in anglese, como \"-2 weeks\" or \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "Modo de requesta invalide"
}
diff --git a/CheckUser/i18n/id.json b/CheckUser/i18n/id.json
index aad16478..e87e1ab8 100644
--- a/CheckUser/i18n/id.json
+++ b/CheckUser/i18n/id.json
@@ -8,7 +8,11 @@
"IvanLanin",
"Iwan Novirion",
"Kenrick95",
- "Rex"
+ "Rex",
+ "Arief",
+ "Rachmat.Wahidi",
+ "McDutchie",
+ "Rachmat04"
]
},
"checkuser-summary": "Peralatan ini memindai perubahan terbaru untuk mengetahui IP seorang pengguna atau menampilkan data suntingan/pengguna untuk suatu IP.\nPengguna dan suntingan suatu IP dapat diketahui melalui kepala XFF dengan menambahkan \"/xff\" pada IP tersebut. Alat ini mendukung baik IPv4 (CIDR $1-32) maupun IPv6 (CIDR $2-128).\nKarena alasan kinerja, maksimum hanya 5000 suntingan yang dapat diambil.\nHarap gunakan peralatan ini sesuai dengan kebijakan yang ada.",
@@ -27,13 +31,12 @@
"grouppage-checkuser": "{{ns:project}}:Pemeriksa",
"checkuser-reason": "Alasan:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Tampilkan log",
+ "checkuser-showlog": "beralih ke Log Pemeriksaan Pengguna",
"checkuser-query": "Kueri perubahan terbaru",
"checkuser-target": "Alamat IP atau nama pengguna:",
"checkuser-users": "Cari pengguna",
"checkuser-edits": "Cari suntingan",
"checkuser-ips": "Cari IP",
- "checkuser-search": "Cari",
"checkuser-period": "Jangka waktu:",
"checkuser-week-1": "minggu lalu",
"checkuser-week-2": "dua minggu terakhir",
@@ -54,6 +57,8 @@
"checkuser-localonly": "Tidak digabungkan",
"checkuser-massblock": "Blokir pengguna yang dipilih",
"checkuser-massblock-text": "Akun-akun yang dipilih akan diblokir selamanya, alamat-alamat IP terakhir yang digunakan otomatis diblokir dan tidak diperbolehkan membuat akun.\nAlamat-alamat IP akan diblokir selama 1 minggu untuk pengguna anonim dan tidak diperbolehkan membuat akun.",
+ "checkuser-blockemail": "Cegah pengguna mengirimkan surel",
+ "checkuser-blocktalk": "Cegah pengguna ini untuk menyunting halaman pembicaraannya saat diblokir",
"checkuser-blocktag": "Ganti halaman pengguna dengan:",
"checkuser-blocktag-talk": "Ganti halaman pembicaraan dengan:",
"checkuser-massblock-commit": "Blokir pengguna yang dipilih",
@@ -61,25 +66,46 @@
"checkuser-block-failure": "'''Tidak ada pengguna yang diblokir.'''",
"checkuser-block-limit": "Jumlah pengguna yang dipilih terlalu banyak.",
"checkuser-block-noreason": "Anda harus mengisi alasan pemblokiran.",
+ "checkuser-centralauth-multilock": "Kunci beberapa akun terpilih",
"checkuser-noreason": "Anda harus memberikan alasan untuk kueri ini.",
"checkuser-accounts": "$1 {{PLURAL:$1|akun|akun-akun}} baru",
- "checkuser-too-many": "Terlalu banyak hasil pencarian (menurut perkiraan permintaan), mohon persempit CIDR. Berikut adalah alamat-alamat IP yang digunakan (5000 maks, diurut berdasarkan alamat):",
+ "checkuser-too-many": "Terlalu banyak hasil pencarian (menurut perkiraan permintaan), mohon persempit CIDR. Berikut adalah alamat-alamat IP yang digunakan (5000 maksimum, diurut berdasarkan alamat):",
"checkuser-user-nonexistent": "Pengguna yang dimaksud tidak ditemukan",
- "checkuser-search-form": "Cari catatan log dengan $1 adalah $2",
+ "checkuser-search": "Cari entri log pengguna",
"checkuser-search-submit": "Cari",
"checkuser-search-initiator": "pemeriksa",
"checkuser-search-target": "target",
+ "checkuser-log-search-target": "Target",
+ "checkuser-log-search-type": "Bar pencarian",
"checkuser-ipeditcount": "~$1 dari seluruh pengguna",
- "checkuser-log-return": "Beralih ke bentuk utama Pemeriksa",
+ "checkuser-showmain": "Beralih ke bentuk utama Pemeriksa",
"checkuser-limited": "'''Hasil berikut telah dipotong agar tidak menurunkan kinerja.'''",
- "checkuser-log-userips": "$1 melihat IP dari $2",
- "checkuser-log-ipedits": "$1 melihat suntingan dari $2",
- "checkuser-log-ipusers": "$1 melihat nama pengguna dari $2",
- "checkuser-log-ipedits-xff": "$1 melihat suntingan dari XFF $2",
- "checkuser-log-ipusers-xff": "$1 melihat nama pengguna dari XFF $2",
- "checkuser-log-useredits": "$1 memiliki suntingan-suntingan untuk $2",
+ "checkuser-log-entry-userips": "$3, $1 mendapatkan alamat IP untuk $2",
+ "checkuser-log-entry-ipedits": "$3, $1 mendapatkan suntingan untuk $2",
+ "checkuser-log-entry-ipusers": "$3, $1 mendapatkan pengguna untuk $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 mendapatkan suntingan untuk XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 mendapatkan pengguna untuk XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 mendapatkan suntingan untuk $2",
"checkuser-autocreate-action": "dibuat secara otomatis",
"checkuser-create-action": "dibuat",
"checkuser-email-action": "mengirimkan surel ke \"$1\"",
- "checkuser-reset-action": "Set ulang kata sandi pengguna \"$1\""
+ "checkuser-reset-action": "Set ulang kata sandi pengguna \"$1\"",
+ "checkuser-token-fail": "Kegagalan sesi. Silakan coba kembali.",
+ "apihelp-query+checkuser-description": "Periksa alamat IP mana yang digunakan oleh pengguna yang ditentukan atau nama pengguna manakah yang digunakan oleh alamat IP yang ditentukan.",
+ "apihelp-query+checkuser-param-request": "Jenis permintaan CheckUser:\n;userips: Mendapatkan alamat IP dari pengguna yang dituju.\n;edits: Mendapatkan perubahan dari alamat IP atau rentang alamat IP tujuan.\n;ipusers: Mendapatkan pengguna dari alamat IP atau rentang alamat IP tujuan.",
+ "apihelp-query+checkuser-param-target": "Nama pengguna, alamat IP atau rentang CIDR untuk diperiksa.",
+ "apihelp-query+checkuser-param-reason": "Alasan pemeriksaan.",
+ "apihelp-query+checkuser-param-limit": "Batas baris.",
+ "apihelp-query+checkuser-param-timecond": "Batas waktu data pengguna (seperti \"-2 weeks\" atau \"2 weeks ago\").",
+ "apihelp-query+checkuser-param-xff": "Gunakan data XFF alih-alih alamat IP.",
+ "apihelp-query+checkuser-example-1": "Periksa alamat IP untuk [[User:Example]]",
+ "apihelp-query+checkuser-example-2": "Periksa suntingan dari 192.0.2.0/24",
+ "apihelp-query+checkuserlog-description": "Dapatkan entri dari catatan CheckUser.",
+ "apihelp-query+checkuserlog-param-user": "Nama pengguna CheckUser.",
+ "apihelp-query+checkuserlog-param-target": "Pengguna yang telah diperiksa, alamat IP, atau rentang CIDR.",
+ "apihelp-query+checkuserlog-param-limit": "Batas baris.",
+ "apihelp-query+checkuserlog-param-from": "Stempel waktu untuk mulai menghitung.",
+ "apihelp-query+checkuserlog-param-to": "Stempel waktu untuk mengakhiri hitungan.",
+ "apihelp-query+checkuserlog-example-1": "Tampilkan pemeriksaan dari [[User:Example]]",
+ "apihelp-query+checkuserlog-example-2": "Tampilkan pemeriksaan dari 192.0.2.0/24 setelah 2011-10-15T23:00:00Z"
}
diff --git a/CheckUser/i18n/ig.json b/CheckUser/i18n/ig.json
index 000228df..628db56a 100644
--- a/CheckUser/i18n/ig.json
+++ b/CheckUser/i18n/ig.json
@@ -22,6 +22,5 @@
"checkuser-locked": "Gbàchịrị",
"checkuser-search-submit": "Chọwa",
"checkuser-search-initiator": "onyé bịdòrò",
- "checkuser-search-target": "ẹ́té",
- "checkuser-log-useredits": "$1 nwèrè orü màkà $2"
+ "checkuser-search-target": "ẹ́té"
}
diff --git a/CheckUser/i18n/ilo.json b/CheckUser/i18n/ilo.json
index 1215de7a..4940d17e 100644
--- a/CheckUser/i18n/ilo.json
+++ b/CheckUser/i18n/ilo.json
@@ -4,35 +4,34 @@
"Lam-ang"
]
},
- "checkuser-summary": "Daytoy a ramit ket ag-scan kadagiti kaudian a balbaliw tapno agala kadagiti IP a pagtaengan nga inus-usar ti agar-aramat wenno agiparang ti data ti inurnos/agar-aramat para iti IP a pagtaengan.\nDagiti agar-aramat ket inurnos babaen ti kliente ti IP a pagtaengan ket maala babaen dagiti XFF a paulo babaen ti panagala ti IP a pagtaengan nga addaan ti \"/xff\". Nasuportaran ti IPv4 (CIDR $1-32) ken IPv6 (CIDR $2-128) .\n\nUsaren daytoy babaen ti annuroten.",
- "checkuser-desc": "Agited kadagiti agar-aramat ti maibagay a pammalubos ti abilidad nga agkita kadagiti IP a pagtaengan ti agar-aramat ken sabsabali pay a pakaammo.",
- "checkuser-logcase": "Ti panag-biruk ti listaan ket sensitibo ti kadakkel ti letra.",
+ "checkuser-summary": "Daytoy a ramit ket agiskan kadagiti kaudian a balbaliw tapno agala kadagiti adres ti IP nga inus-usar ti agar-aramat wenno agiparang ti inurnos/datos ti agar-aramat para iti maysa nga adres ti IP.\nDagiti agar-aramat ken dagiti inurnos babaen ti kliente ti adres ti IP ket maala babaen dagiti paulo ti XFF babaen ti panagala ti adres ti IP nga agraman iti \"/xff\". Nasuportaran ti IPv4 (CIDR $1-32) ken IPv6 (CIDR $2-128) .\n\nUsaren daytoy babaen ti annuroten.",
+ "checkuser-desc": "Agited kadagiti agar-aramat ti maibagay a pammalubos ti abilidad nga agkita kadagiti adres ti IP ti agar-aramat ken sabsabali pay a pakaammo",
+ "checkuser-logcase": "Ti panagbiruk ti listaan ket sensitibo ti kadakkel ti letra.",
"checkuser": "Kitaen ti agar-aramat",
"checkuserlog": "Kitaen ti listaan ti agar-aramat",
- "checkuser-contribs": "kitaen ti IP a pagtaengan ti agar-aramat",
+ "checkuser-contribs": "kitaen ti adres ti IP ti agar-aramat",
"checkuser-contribs-log": "dagiti kinaudi a panagkita ti agar-aramat",
"group-checkuser": "Kitaen dagiti agar-aramat",
"group-checkuser-member": "{{GENDER:$1|kitaen ti agar-aramat}}",
- "right-checkuser": "Kitaen dagiti IP a pagtaengan ti agar-aramat ken sabsabali a pakaammo.",
+ "right-checkuser": "Kitaen dagiti adres ti IP ti agar-aramat ken sabsabali a pakaammo.",
"right-checkuser-log": "Kitaen ti listaan ti panagkita ti agar-aramat",
- "action-checkuser": "kitaen dagiti IP a pagtaengan ti agar-aramat ken sabsabali a pakaammo",
+ "action-checkuser": "kitaen dagiti adres ti IP ti agar-aramat ken sabsabali a pakaammo",
"action-checkuser-log": "kitaen ti listaan ti panagkita ti agar-aramat",
"grouppage-checkuser": "{{ns:project}}:Kitaen ti agar-aramat",
"checkuser-reason": "Rason:",
"checkuser-reason-api": "API: $1",
"checkuser-showlog": "Ipakita ti listaan",
"checkuser-query": "Sapulen dagiti kaudian a balbaliw",
- "checkuser-target": "IP a pagtaengan wenno nagan ti agar-aramat:",
+ "checkuser-target": "Adres ti IP wenno nagan ti agar-aramat:",
"checkuser-users": "Alaen dagiti agar-aramat",
"checkuser-edits": "Alaen dagiti inurnos",
- "checkuser-ips": "Alaen dagiti IP a pagtaengan",
- "checkuser-search": "Biruken",
+ "checkuser-ips": "Alaen dagiti adres ti IP",
"checkuser-period": "Kabayag:",
"checkuser-week-1": "napalabas a lawas",
"checkuser-week-2": "dua a lawas a napalabas",
"checkuser-month": "napalabas a 30 nga al-aldaw",
"checkuser-all": "amin",
- "checkuser-cidr-label": "Biruken ti kadawyan a sakup ken maaringan nga IP a pagtaengan para ti listaan iti IP a pagtaengan",
+ "checkuser-cidr-label": "Biruken ti kadawyan a sakup ken maaringan nga adres ti IP para iti listaan dagiti adres ti IP",
"checkuser-cidr-res": "Kadawyan a CIDR:",
"checkuser-empty": "Ti listaan ket awanen ti banbanag.",
"checkuser-nomatch": "Awan ti kapadpada a nabirukan.",
@@ -46,31 +45,25 @@
"checkuser-wasblocked": "Naserraan idi",
"checkuser-localonly": "Saan a naitipon",
"checkuser-massblock": "Serran dagiti napili nga agar-aramat",
- "checkuser-massblock-text": "Dagiti napili a pakabilangan ket maserraan ingat ingana, nga addaan ti automatiko a panagserra dagiti IP a pagtaengan ke napakabaelan ken ti panagramid ti pakabilangan ket nabaldado.",
+ "checkuser-massblock-text": "Dagiti napili a pakabilangan ket maserraan ingat ingana, a napakabaelan ti automatiko a panagserra dagiti adres ti IP ken mabaldado ti panagpartuat ti pakabilangan.\nDagiti adres ti IP ket maserraandanto iti maysa a lawas para kadagiti di ammo nga agar-aramat laeng ken mabaldado ti panagpartuat ti pakabilangan.",
"checkuser-blocktag": "Sukatan dagiti panid ti agar-aramid iti:",
"checkuser-blocktag-talk": "Sukatan dagiti patungtungan a panid ti agar-aramid iti:",
"checkuser-massblock-commit": "Serran dagiti napili nga agar-aramat",
"checkuser-block-success": "''' {{PLURAL:$2|Ti agar-aramat|Dagiti agar-aramat}} $1 {{PLURAL:$2|ket|ket}} naserran dan.'''",
"checkuser-block-failure": "'''Awan ti agar-aramat a naserraan.'''",
"checkuser-block-limit": "Adu unay ti agar-aramat a napili.",
- "checkuser-block-noreason": "Masapul nga agited ka ti rason para kadagiti panag-serra.",
+ "checkuser-block-noreason": "Masapul nga agitedka ti rason para kadagiti panagserra.",
"checkuser-noreason": "Masapul nga agited ka ti rason para kadagitoy panagsapul.",
"checkuser-accounts": "$1 baro {{PLURAL:$1|a pakabilangan|a dagiti pakabilangan}}",
"checkuser-too-many": "Adu unay dagiti nagbanagan (babaen ti karkulo ti panagsapul), pangngaasi a pabassiten ti CIDR.\nAdda ditoy dagiti IP a nausar ( 5000 kangato, nailasin babaen ti pagtaengan):",
"checkuser-user-nonexistent": "Ti nainaganan nga agar-aramat ket awanen.",
- "checkuser-search-form": "Agbiruk kadagiti naikabil iti listaan ti ayan ti $1 ket $2",
- "checkuser-search-submit": "Biruken",
+ "checkuser-search": "Biruken",
+ "checkuser-search-submit": "Agbiruk",
"checkuser-search-initiator": "nangrugi",
"checkuser-search-target": "puntaan",
"checkuser-ipeditcount": "~$1 manipud kadagiti agar-aramat",
- "checkuser-log-return": "Iyallatiw idiay umuna a nakabuklan ti CheckUser",
+ "checkuser-showmain": "Iyallatiw idiay umuna a nakabuklan ti CheckUser",
"checkuser-limited": "'''Dagitoy a nagbanagan ket napasardeng para iti pannaka-aramid a rason.'''",
- "checkuser-log-userips": "$1 ket nakaala ti IP a pagtaengan para iti $2",
- "checkuser-log-ipedits": "$1 nakaala dagiti inurnos para iti $2",
- "checkuser-log-ipusers": "$1 nakala dagiti agar-aramat para iti $2",
- "checkuser-log-ipedits-xff": "$1 nakaala kadagiti inurnos para iti XFF $2",
- "checkuser-log-ipusers-xff": "$1 nakaala kadagiti agar-aramat para iti XFF $2",
- "checkuser-log-useredits": "$1 nakaala dagiti inurnos para iti $2",
"checkuser-autocreate-action": "ket automatiko a naaramid",
"checkuser-create-action": "ket naaramid",
"checkuser-email-action": "nagipatulod ti e-surat ti agar-aramat \"$1\"",
diff --git a/CheckUser/i18n/inh.json b/CheckUser/i18n/inh.json
new file mode 100644
index 00000000..2fcd64a0
--- /dev/null
+++ b/CheckUser/i18n/inh.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Adam-Yourist"
+ ]
+ },
+ "checkuser-search": "Доакъашхочун тохкама тептара чу лахар",
+ "checkuser-search-submit": "Хьалáха"
+}
diff --git a/CheckUser/i18n/io.json b/CheckUser/i18n/io.json
index 42acd2a5..63f48727 100644
--- a/CheckUser/i18n/io.json
+++ b/CheckUser/i18n/io.json
@@ -1,11 +1,12 @@
{
"@metadata": {
"authors": [
- "Malafaya"
+ "Malafaya",
+ "Robin van der Vliet"
]
},
"checkuser-reason": "Motivo:",
- "checkuser-target": "IP-adreso od uzanto-nomo:",
+ "checkuser-target": "IP-adreso od uzeronomo:",
"checkuser-week-1": "lasta semano",
"checkuser-week-2": "lasta du semani",
"checkuser-month": "lasta 30 dii",
diff --git a/CheckUser/i18n/it.json b/CheckUser/i18n/it.json
index 37c07942..339ba68d 100644
--- a/CheckUser/i18n/it.json
+++ b/CheckUser/i18n/it.json
@@ -13,7 +13,11 @@
"Nemo bis",
"Pietrodn",
"Stefano-c",
- "Nivit"
+ "Nivit",
+ "Lucas2",
+ "Selven",
+ "McDutchie",
+ "Daimona Eaytoy"
]
},
"checkuser-summary": "Questo strumento analizza le modifiche recenti per recuperare gli indirizzi IP utilizzati da un utente o mostrare contributi e dati di un IP. Utenti e contributi di un client IP possono essere rintracciati attraverso gli header XFF aggiungendo all'IP il suffisso \"/xff\". Sono supportati IPv4 (CIDR $1-32) e IPv6 (CIDR $2-128). Non saranno restituite più di 5.000 modifiche, per ragioni di prestazioni. Usa questo strumento in stretta conformità alle policy.",
@@ -23,24 +27,23 @@
"checkuserlog": "Registro dei controlli utente",
"checkuser-contribs": "controlla gli indirizzi IP dell'utente",
"checkuser-contribs-log": "controlli utente recenti",
- "group-checkuser": "Check users",
+ "group-checkuser": "Check user",
"group-checkuser-member": "{{GENDER:$1|Check user}}",
"right-checkuser": "Visualizza gli indirizzi IP usati dall'utente e altre informazioni",
"right-checkuser-log": "Visualizza il log dei checkuser",
- "action-checkuser": "controlla gli indirizzi IP dell'utente e altre informazioni",
+ "action-checkuser": "controllare gli indirizzi IP dell'utente e altre informazioni",
"action-checkuser-log": "vedere il log dei checkuser",
"grouppage-checkuser": "{{ns:project}}:Check user",
"checkuser-reason": "Motivo:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Mostra il log",
+ "checkuser-showlog": "Passa al registro CheckUser",
"checkuser-query": "Cerca nelle ultime modifiche",
"checkuser-target": "Indirizzo IP o nome utente:",
"checkuser-users": "Cerca utenti",
"checkuser-edits": "Vedi i contributi",
"checkuser-ips": "Cerca IP",
- "checkuser-search": "Cerca",
"checkuser-period": "Periodo:",
- "checkuser-week-1": "ultima settimana",
+ "checkuser-week-1": "settimana scorsa",
"checkuser-week-2": "ultime due settimane",
"checkuser-month": "ultimi 30 giorni",
"checkuser-all": "tutti gli edit",
@@ -59,6 +62,8 @@
"checkuser-localonly": "Non unificato",
"checkuser-massblock": "Blocca utenti selezionati",
"checkuser-massblock-text": "Gli utenti selezionati saranno bloccati infinito, con il blocco automatico attivato e la registrazione disattivata.\nGli indirizzi IP saranno bloccati per una settimana solo per gli utenti anonimi e con la registrazione disattivata.",
+ "checkuser-blockemail": "Impedisci l'invio di email",
+ "checkuser-blocktalk": "Impedisci di modificare la propria pagina di discussioni mentre è bloccato",
"checkuser-blocktag": "Sostituisci pagine utente con:",
"checkuser-blocktag-talk": "Sostituisci pagine di discussione con:",
"checkuser-massblock-commit": "Blocca utenti selezionati",
@@ -66,34 +71,39 @@
"checkuser-block-failure": "'''Nessun utente bloccato.'''",
"checkuser-block-limit": "Troppi utenti selezionati.",
"checkuser-block-noreason": "È obbligatorio fornire una motivazione per i blocchi.",
+ "checkuser-centralauth-multilock": "Blocco multiplo degli utenti selezionati",
"checkuser-noreason": "È necessario fornire una motivazione per questa query.",
"checkuser-accounts": "$1 {{PLURAL:$1|nuova|nuove}} utenze",
"checkuser-too-many": "Troppi risultati (per stima della query), per favore usa un CIDR più ristretto.\nQui di seguito ci sono gli indirizzi IP utilizzati (fino a un massimo di 5000, ordinati per indirizzo):",
"checkuser-user-nonexistent": "L'utente indicato non esiste.",
- "checkuser-search-form": "Trova le voci del log per le quali $1 è $2",
+ "checkuser-search": "Cerca nel registro check user",
"checkuser-search-submit": "Ricerca",
"checkuser-search-initiator": "richiedente",
"checkuser-search-target": "obiettivo",
+ "checkuser-log-search-target": "Obiettivo:",
+ "checkuser-log-search-type": "Ricerca per:",
"checkuser-ipeditcount": "~$1 complessivamente",
- "checkuser-log-return": "Passa al modulo principale del Controllo utenze",
+ "checkuser-showmain": "Passa al modulo principale CheckUser",
"checkuser-limited": "'''I risultati sono stati troncati per motivi di prestazioni.'''",
- "checkuser-log-userips": "$1 ha ottenuto gli indirizzi IP di $2",
- "checkuser-log-ipedits": "$1 ha ottenuto le modifiche di $2",
- "checkuser-log-ipusers": "$1 ha ottenuto le utenze di $2",
- "checkuser-log-ipedits-xff": "$1 ha ottenuto le modifiche di $2 via XFF",
- "checkuser-log-ipusers-xff": "$1 ha ottenuto le utenze di $2 via XFF",
- "checkuser-log-useredits": "$1 ha ottenuto i contributi di $2",
+ "checkuser-log-entry-userips": "$3, $1 ha ottenuto gli indirizzi IP di $2",
+ "checkuser-log-entry-ipedits": "$3, $1 ha ottenuto le modifiche di $2",
+ "checkuser-log-entry-ipusers": "$3, $1 ha ottenuto le utenze di $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 ha ottenuto le modifiche di $2 via XFF",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 ha ottenuto le utenze di $2 via XFF",
+ "checkuser-log-entry-useredits": "$3, $1 ha ottenuto le modifiche di $2",
"checkuser-autocreate-action": "è stato creato automaticamente",
"checkuser-create-action": "è stato creato",
"checkuser-email-action": "ha inviato una e-mail a \"$1\"",
"checkuser-reset-action": "reimposta password per l'utente \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|discussioni]] | [[Special:Contributions/$1|contributi]] | [[Special:Block/$1|blocca]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|discussioni]] | [[Special:Contributions/$1|contributi]] | [[Special:Block/$1|blocca]])",
"checkuser-token-fail": "Errore di sessione. Riprova ancora.",
"apihelp-query+checkuser-description": "Controlla quali indirizzi IP vengono usati da un determinato nome utente o quali nomi utente vengono usati da un dato IP.",
"apihelp-query+checkuser-param-request": "Tipo di richiesta CheckUser:\n;userips:Ottieni l'indirizzo IP dell'utente osservato.\n;edit:Ottieni i cambiamenti dell'indirizzo IP o range.\n;ipusers:Ottieni gli utenti da un indirizzo IP o range.",
"apihelp-query+checkuser-param-target": "Nome utente, indirizzo IP, o range CIDR da controllare.",
"apihelp-query+checkuser-param-reason": "Ragione per controllare.",
"apihelp-query+checkuser-param-limit": "Limite di righe.",
- "apihelp-query+checkuser-param-timecond": "Il limite di tempo dei dati utente (come \"2 settimane\").",
+ "apihelp-query+checkuser-param-timecond": "Il limite di tempo dei dati utente (come \"-2 weeks\" o \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Utilizzare dati XFF invece dell'indirizzo IP.",
"apihelp-query+checkuser-example-1": "Verificare gli indirizzi IP per [[User:Example]]",
"apihelp-query+checkuser-example-2": "Controllare le modifiche di 192.0.2.0/24",
@@ -101,8 +111,8 @@
"apihelp-query+checkuserlog-param-user": "Nome del CheckUser.",
"apihelp-query+checkuserlog-param-target": "Utente, indirizzo IP, o range CIDR controllato.",
"apihelp-query+checkuserlog-param-limit": "Limite di righe.",
- "apihelp-query+checkuserlog-param-from": "Il timestamp da cui iniziare il conteggio.",
- "apihelp-query+checkuserlog-param-to": "Il timestamp al quale terminare il conteggio.",
+ "apihelp-query+checkuserlog-param-from": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+checkuserlog-param-to": "Il timestamp al quale interrompere l'elenco.",
"apihelp-query+checkuserlog-example-1": "Mostra controlli di [[User:Example]]",
"apihelp-query+checkuserlog-example-2": "Mostra controlli di 192.0.2.0/24 dopo il 2011-10-15T23:00:00Z"
}
diff --git a/CheckUser/i18n/ja.json b/CheckUser/i18n/ja.json
index b65e9ae8..9ef4739c 100644
--- a/CheckUser/i18n/ja.json
+++ b/CheckUser/i18n/ja.json
@@ -18,7 +18,11 @@
"青子守歌",
"Rxy",
"W.CC",
- "2nd-player"
+ "2nd-player",
+ "Azeha",
+ "Otokoume",
+ "Sujiniku",
+ "Mirinano"
]
},
"checkuser-summary": "このツールは最近の更新をもとに、ある利用者が使用したIPアドレスの検索、または、あるIPアドレスからなされた編集および利用者名の表示を行います。\nIPアドレスと共に「/xff」オプションを指定すると、XFF (X-Forwarded-For) ヘッダーを通じてクライアントIPアドレスを取得し、そこからなされた編集および利用者名の検索をすることができます。\nIPv4 ($1から32ビットのCIDR表記) と IPv6 ($2から128ビットのCIDR表記) に対応しています。\nパフォーマンス上の理由により、最大5000件の編集しか表示できません。\n方針に従って使用してください。",
@@ -37,13 +41,12 @@
"grouppage-checkuser": "{{ns:project}}:利用者調査者",
"checkuser-reason": "理由:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "調査記録を表示",
+ "checkuser-showlog": "チェックユーザー記録に切り替え",
"checkuser-query": "最近の更新の照会",
"checkuser-target": "IPアドレスまたは利用者名:",
"checkuser-users": "利用者名を取得",
"checkuser-edits": "編集を取得",
"checkuser-ips": "IPアドレスを取得",
- "checkuser-search": "検索",
"checkuser-period": "期間:",
"checkuser-week-1": "過去 1 週間",
"checkuser-week-2": "過去 2 週間",
@@ -64,6 +67,8 @@
"checkuser-localonly": "統合されていません",
"checkuser-massblock": "選択した利用者をブロック",
"checkuser-massblock-text": "選択した利用者は無期限ブロックされ、同時に自動ブロックが作動しアカウント作成も禁止されます。\nIPアドレスはIP利用者向けに1週間ブロックされ、アカウント作成が禁止されます。",
+ "checkuser-blockemail": "メール送信を禁止させる",
+ "checkuser-blocktalk": "この利用者がブロック中に自身のトークページを編集することを禁止",
"checkuser-blocktag": "利用者ページを以下で置換:",
"checkuser-blocktag-talk": "トークページを以下で置換:",
"checkuser-massblock-commit": "選択した利用者をブロック",
@@ -71,27 +76,32 @@
"checkuser-block-failure": "'''ブロックされた利用者はありません。'''",
"checkuser-block-limit": "選択した利用者の数が多すぎます。",
"checkuser-block-noreason": "ブロック理由の記入が必要です。",
+ "checkuser-centralauth-multilock": "選択したアカウントをロック",
"checkuser-noreason": "照会理由の記入が必要です。",
"checkuser-accounts": "新しい$1{{PLURAL:$1|アカウント}}",
"checkuser-too-many": "(クエリを見積もったところ) 検索結果が多すぎます。CIDRの指定を小さく絞り込んでください。\n使用したIPアドレスは以下の通り (上限 5000 件、並び順はアドレス順):",
"checkuser-user-nonexistent": "指定された利用者は存在しません。",
- "checkuser-search-form": "$1 が $2 であるログ項目を探す",
+ "checkuser-search": "利用者調査のログ項目を検索",
"checkuser-search-submit": "検索",
"checkuser-search-initiator": "調査実行者",
"checkuser-search-target": "調査対象者",
+ "checkuser-log-search-target": "利用者名:",
+ "checkuser-log-search-type": "検索:",
"checkuser-ipeditcount": "全利用者による編集 ~$1回",
- "checkuser-log-return": "利用者調査のメインフォームに切り替える",
+ "checkuser-showmain": "利用者調査のメインフォームに切り替える",
"checkuser-limited": "'''パフォーマンス上の理由で、結果は省略されています。'''",
- "checkuser-log-userips": "$1 は $2 が使用したIPアドレスを取得",
- "checkuser-log-ipedits": "$1 は $2 からなされた編集を取得",
- "checkuser-log-ipusers": "$1 が、$2 を使用した利用者一覧を取得",
- "checkuser-log-ipedits-xff": "$1 が、XFF $2 からなされた編集を取得",
- "checkuser-log-ipusers-xff": "$1 は XFF $2 からアクセスした利用者名を取得",
- "checkuser-log-useredits": "$1 は $2 による編集を取得",
+ "checkuser-log-entry-userips": "$3 $1 は $2 が使用したIPアドレスを取得",
+ "checkuser-log-entry-ipedits": "$3 $1 は $2 からの編集を取得",
+ "checkuser-log-entry-ipusers": "$3 $1 は $2 から編集を行ったユーザーを取得",
+ "checkuser-log-entry-ipedits-xff": "$3 $1 は XFF $2 からの編集を取得",
+ "checkuser-log-entry-ipusers-xff": "$3 $1 は XFF $2 から編集を行ったユーザーを取得",
+ "checkuser-log-entry-useredits": "$3 $1 は $2 の編集を取得",
"checkuser-autocreate-action": "自動的に作成",
"checkuser-create-action": "作成済",
"checkuser-email-action": "利用者「$1」にメールを送信",
"checkuser-reset-action": "利用者「$1」のパスワードをリセット",
+ "checkuser-userlinks-ip": "([[User_talk:$1|トーク]] | [[Special:Contributions/$1|投稿記録]] | [[Special:Block/$1|ブロック]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|トーク]] | [[Special:Contributions/$1|投稿記録]] | [[Special:Block/$1|ブロック]])",
"checkuser-token-fail": "セッション失敗。もう一度やり直してください。",
"group-checkuser.css": "/* ここに記述したCSSは利用者調査者のみに影響します */",
"group-checkuser.js": "/* ここに記述したJSは利用者調査者のみに影響します */",
@@ -100,13 +110,13 @@
"apihelp-query+checkuser-param-target": "調査する利用者名、IP アドレス、CIDR 範囲のいずれかです。",
"apihelp-query+checkuser-param-reason": "調査の理由です。",
"apihelp-query+checkuser-param-limit": "行数の上限です。",
- "apihelp-query+checkuser-param-timecond": "利用者データの期間の上限です (例: \"2 weeks\")。",
+ "apihelp-query+checkuser-param-timecond": "利用者データの期間の上限です (例: \"-2 weeks\" または \"2 weeks ago\")。",
"apihelp-query+checkuser-param-xff": "IPアドレス の代わりに XFF データを使用します。",
"apihelp-query+checkuser-example-1": "[[User:Example]] が使用した IPアドレス を調査",
"apihelp-query+checkuser-example-2": "192.0.2.0/24 からなされた編集を調査",
"apihelp-query+checkuserlog-description": "利用者調査の記録から項目を取得します。",
"apihelp-query+checkuserlog-param-user": "利用者調査の実行者の利用者名です。",
- "apihelp-query+checkuserlog-param-target": "利用者調査の対象の利用者、IP アドレス、CIDR 範囲のいずれかです。",
+ "apihelp-query+checkuserlog-param-target": "調査する対象の利用者、IP アドレス、CIDR範囲のいずれかです。",
"apihelp-query+checkuserlog-param-limit": "行数の上限です。",
"apihelp-query+checkuserlog-param-from": "一覧の開始点となる日時",
"apihelp-query+checkuserlog-param-to": "一覧の終了点となる日時",
diff --git a/CheckUser/i18n/jut.json b/CheckUser/i18n/jut.json
index 2415e396..144bc0e5 100644
--- a/CheckUser/i18n/jut.json
+++ b/CheckUser/i18n/jut.json
@@ -5,38 +5,33 @@
"Jyllanj"
]
},
- "checkuser-summary": "Dette værktøj scanner Seneste ændringer for at finde IP'er brugt af en bestemt bruger, eller for at vise redigerings- eller brugerdata for en IP.\nBruger og redigeringer fra en klient IP kan hentes via XFF headers ved at tilføje \"/xff\" til IP'en. Ipv4 (CIRD $1-32) og IPv6 (CIDR $2-128) er understøttet.\nFor at sikre programmelets ydeevne kan maksimalt 5000 redigeringer returneres. Brug kun dette værktøj i overensstemmelse med gældende politiker på {{SITENAME}}.",
- "checkuser-desc": "Giver brugere med den rette godkendelse muligheden for at checke brugeres IP-adresser og anden information",
- "checkuser-logcase": "Logsøgning er case sensitiv (der gøres forskel på store og små bogstaver)",
- "checkuser": "Check user",
- "checkuserlog": "CheckUser log",
- "group-checkuser": "Check users",
+ "checkuser-summary": "Detj wärktye scanne Siensti øndrenge for å finj IP'e brugtj å i bestemtj bruge, elle for å wis redigiirengs- elle brugedata for i IP.\nBruge å redigiirenge fra i klient-IP kan hentjs via XFF-headers we å tilfye \"/xff\" te IP'i. Ipv4 (CIRD $1-32) å IPv6 (CIDR $2-128) ä unjestøtten.\nFor å siker programmes ye-ewn kan maksimalt 5000 redigiirenge djenförs.\nBrug kons detj wärktye i öwe-iensstæmmels mä djäljenje politike på {{SITENAME}}.",
+ "checkuser-desc": "Djie bruga mä den rett guetjennels mulihede for å tjekk brugaris IP-adresse å ånj informasjon",
+ "checkuser-logcase": "Loggsyegneng djör forskell på stuer å små buegstawe.",
+ "checkuser": "Tjekkbruge",
+ "checkuserlog": "Tjekkbrugelogg",
+ "group-checkuser": "Tjekkbruga",
"group-checkuser-member": "Check user",
- "grouppage-checkuser": "{{ns:project}}:Check user",
- "checkuser-reason": "Begrundelse:",
- "checkuser-showlog": "Se'n log",
- "checkuser-query": "Søĝ i seneste ændrenger",
+ "grouppage-checkuser": "{{ns:project}}:Tjekkbruge",
+ "checkuser-reason": "Begrunjels:",
+ "checkuser-showlog": "Wis logg",
+ "checkuser-query": "Syeg i siensti øndrenge",
"checkuser-target": "Bruger æller IP",
- "checkuser-users": "Gæt bruger!",
+ "checkuser-users": "Hentj bruga!",
"checkuser-edits": "Gæt redigærer IPs!",
- "checkuser-ips": "Gæt IP!",
+ "checkuser-ips": "Hentj IP-e",
"checkuser-search": "Syeg",
- "checkuser-empty": "Loggen indeholder ingen poster.",
- "checkuser-nomatch": "Ingen matchende resultater blev fundet.",
+ "checkuser-empty": "Loggi inholje ien poste.",
+ "checkuser-nomatch": "Ien öwe-iensstæmmenje resultate bløw funjen.",
"checkuser-check": "Tjekk",
"checkuser-log-fail": "Ku ett tilfye loggpost",
"checkuser-nolog": "Loggfili bløw ett funjen.",
"checkuser-blocked": "Blokiirtj",
"checkuser-too-many": "For mange resultater, gør CIDR'en smallere. Her er de brugte IP'er (max 5000, sorteret efter adresse):",
- "checkuser-user-nonexistent": "Den anførte bruger eksisterer ikke.",
- "checkuser-search-form": "Find log-poster hvor $1 er $2",
- "checkuser-search-submit": "Søg",
- "checkuser-search-initiator": "initiatår",
- "checkuser-search-target": "mål",
- "checkuser-log-return": "Gå tilbage til hovedformularen for checkbruger",
- "checkuser-log-userips": "$1 fik IP'er for $2",
- "checkuser-log-ipedits": "$1 fik redigeringer for $2",
- "checkuser-log-ipusers": "$1 fik brugere for $2",
- "checkuser-log-ipedits-xff": "$1 fik redigeringer for XFF $2",
- "checkuser-log-ipusers-xff": "$1 fik brugere for XFF $2"
+ "checkuser-user-nonexistent": "Ånförtje brugari eksistiire ett.",
+ "checkuser-search-form": "Finj loggposte hwor $1 ä $2",
+ "checkuser-search-submit": "Syeg",
+ "checkuser-search-initiator": "initiatiwtar",
+ "checkuser-search-target": "mol",
+ "checkuser-log-return": "Gå tilbage til hovedformularen for checkbruger"
}
diff --git a/CheckUser/i18n/jv.json b/CheckUser/i18n/jv.json
index 55c63f5a..b3044cd5 100644
--- a/CheckUser/i18n/jv.json
+++ b/CheckUser/i18n/jv.json
@@ -18,7 +18,7 @@
"right-checkuser": "Priksa alamat-alamat IP panganggo lan informasi liyané",
"right-checkuser-log": "Pirsani log pamriksa",
"action-checkuser": "priksa alamat IP lan inpormasi liya panganggo",
- "action-checkuser-log": "delok log pamriksa",
+ "action-checkuser-log": "deleng log pamriksa",
"grouppage-checkuser": "{{ns:project}}:Pamriksa panganggo",
"checkuser-reason": "Alesan:",
"checkuser-reason-api": "API: $1",
@@ -26,9 +26,8 @@
"checkuser-query": "Pitakonan owah-owahan pungkasan",
"checkuser-target": "Alamat IP utawa jeneng panganggo:",
"checkuser-users": "Golèk panganggo",
- "checkuser-edits": "Éntukaké suntingan",
+ "checkuser-edits": "Golèk besutan",
"checkuser-ips": "Golèk IP",
- "checkuser-search": "Golèk",
"checkuser-period": "Jangka wektu:",
"checkuser-week-1": "minggu kapungkur",
"checkuser-week-2": "rong minggu kapungkur",
@@ -41,7 +40,7 @@
"checkuser-nomatch-edits": "Ora ana sing cocog.\nSuntingan pungkasan ing $2, $1.",
"checkuser-check": "Priksa",
"checkuser-log-fail": "Log èntri ora bisa ditambahaké",
- "checkuser-nolog": "Ora ditemokaké berkas log.",
+ "checkuser-nolog": "Barkas log ora ana.",
"checkuser-blocked": "Diblokir",
"checkuser-gblocked": "Diblokir sacara global",
"checkuser-locked": "Dikunci",
@@ -50,31 +49,25 @@
"checkuser-massblock": "Blokir panganggo kapilih",
"checkuser-massblock-text": "Akun-akun kapilih bakal diblokir salawasé, alamat-alamat IP pungkasan sing dipigunakaké otomatis diblokir lan ora bisa gawé akun.\nAlamat-alamat IP bakal diblokir jroning 1 minggu tumrap panganggo anonim lan ora bisa gawé akun.",
"checkuser-blocktag": "Ganti kaca panganggo dadi:",
- "checkuser-blocktag-talk": "Ganti kaca wicara nganggo:",
+ "checkuser-blocktag-talk": "Ganti kaca parembugan karo:",
"checkuser-massblock-commit": "Blokir panganggo kapilih",
"checkuser-block-success": "'''{{PLURAL:$2|Panganggo|panganggo}} $1 {{PLURAL:$2|wis|wis}} diblokir.'''",
"checkuser-block-failure": "'''Ora ana panganggo sing diblokir.'''",
"checkuser-block-limit": "Cacahing panganggo sing dipilih kakèhan.",
- "checkuser-block-noreason": "Panjenengan kudu mènèhi alesan pamblokiran",
+ "checkuser-block-noreason": "Sampéyan kudu wènèh alesan mblokir.",
"checkuser-noreason": "Sampéyan kudu ngawèhi alesan kanggo kuèri iki.",
"checkuser-accounts": "$1 {{PLURAL:$1|akun|akun-akun}} anyar",
"checkuser-too-many": "Kakèhan pituwas (miturut estimasi piakonan), tulung CIDR diciyutaké.\nIng ngisor iki kapacak alamat-alamat IP sing dianggo (maks. 5.000, diurutaké miturut alamat):",
"checkuser-user-nonexistent": "Panganggo iki ora ana.",
- "checkuser-search-form": "Temokna cathetan log ing ngendi $1 iku $2",
+ "checkuser-search": "Golèk",
"checkuser-search-submit": "Golèk",
"checkuser-search-initiator": "pamriksa",
"checkuser-search-target": "tujuan",
"checkuser-ipeditcount": "~$1 saka kabèh panganggo",
- "checkuser-log-return": "Ganti nèng pormulir utama CheckUser",
+ "checkuser-showmain": "Ganti nèng pormulir utama CheckUser",
"checkuser-limited": "'''Kasil iki wis dicekak amarga alesan kinerja.'''",
- "checkuser-log-userips": "$1 ndeleng IP saka $2",
- "checkuser-log-ipedits": "$1 ndeleng suntingan saka $2",
- "checkuser-log-ipusers": "$1 ndeleng jeneng panganggo saka $2",
- "checkuser-log-ipedits-xff": "$1 ndeleng suntingan saka XFF $2",
- "checkuser-log-ipusers-xff": "$1 ndeleng jeneng panganggo saka XFF $2",
- "checkuser-log-useredits": "$1 nduwèni suntingan-suntingan kanggo $2",
"checkuser-autocreate-action": "digawé sacara otomatis",
"checkuser-create-action": "digawé",
- "checkuser-email-action": "Wis ngirim layang-e menyang panganggo \"$1\"",
- "checkuser-reset-action": "Sèt ulang tembung sandi panganggo \"$1\""
+ "checkuser-email-action": "ngirim layang-èl menyang \"$1\"",
+ "checkuser-reset-action": "setèl ulang tembung wadiné panganggo \"$1\""
}
diff --git a/CheckUser/i18n/ka.json b/CheckUser/i18n/ka.json
index a49c629e..45245e9f 100644
--- a/CheckUser/i18n/ka.json
+++ b/CheckUser/i18n/ka.json
@@ -67,12 +67,6 @@
"checkuser-ipeditcount": "~$1 ყველა მომხმარებლისგან",
"checkuser-log-return": "მომხმარებელთა შემოწმების გვერდზე გადასვლა",
"checkuser-limited": "'''რეზულტატები შეიკუმშა სერვერზე დამატებითი დატვირთვის არ შექმნის მიზნით.'''",
- "checkuser-log-userips": "$1 მიიღო IP $2-თვის",
- "checkuser-log-ipedits": "$1 მიიღო რედაქტირებები $2-თვის",
- "checkuser-log-ipusers": "$1 მიიღო მომხმარებლები $2-თვის",
- "checkuser-log-ipedits-xff": "$1 მიიღო რედაქტირებები XFF $2-თვის",
- "checkuser-log-ipusers-xff": "$1 მიიღო მომხმარებლები XFF $2-თვის",
- "checkuser-log-useredits": "$1 მიიღო რედაქტირებები $2-თვის",
"checkuser-autocreate-action": "ავტომატურად შეიქმნა",
"checkuser-create-action": "შეიქმნა",
"checkuser-email-action": "გაუგზავნა წერილი მომხმარებელ «$1»-ს",
diff --git a/CheckUser/i18n/kk-arab.json b/CheckUser/i18n/kk-arab.json
index 0e2595df..76e861d7 100644
--- a/CheckUser/i18n/kk-arab.json
+++ b/CheckUser/i18n/kk-arab.json
@@ -27,10 +27,5 @@
"checkuser-search-submit": "ىزدەۋ",
"checkuser-search-initiator": "باستاماشى",
"checkuser-search-target": "نىسانا",
- "checkuser-log-return": "CheckUser باسقى پىشىنىنە ورالۋ",
- "checkuser-log-userips": "$2 ٴۇشىن $1 IP جاي الىندى",
- "checkuser-log-ipedits": "$2 ٴۇشىن $1 تۇزەتۋ الىندى",
- "checkuser-log-ipusers": "$2 ٴۇشىن $1 IP قاتىسۋشى الىندى",
- "checkuser-log-ipedits-xff": "XFF $2 ٴۇشىن $1 تۇزەتۋ الىندى",
- "checkuser-log-ipusers-xff": "XFF $2 ٴۇشىن $1 قاتىسۋشى الىندى"
+ "checkuser-log-return": "CheckUser باسقى پىشىنىنە ورالۋ"
}
diff --git a/CheckUser/i18n/kk-cyrl.json b/CheckUser/i18n/kk-cyrl.json
index d73324a9..4d59c77f 100644
--- a/CheckUser/i18n/kk-cyrl.json
+++ b/CheckUser/i18n/kk-cyrl.json
@@ -52,11 +52,6 @@
"checkuser-search-target": "нысана",
"checkuser-ipeditcount": "Барлық қатысушылардан ~$1",
"checkuser-log-return": "Қатысушыларды тексеру басты пішініне ауысу",
- "checkuser-log-userips": "$2 үшін $1 IP жай алынды",
- "checkuser-log-ipedits": "$2 үшін $1 түзету алынды",
- "checkuser-log-ipusers": "$2 үшін $1 IP қатысушы алынды",
- "checkuser-log-ipedits-xff": "XFF $2 үшін $1 түзету алынды",
- "checkuser-log-ipusers-xff": "XFF $2 үшін $1 қатысушы алынды",
"checkuser-autocreate-action": "автоматты түрде басталды",
"checkuser-create-action": "басталды",
"checkuser-email-action": "«$1» деген қатысушыға электронды хат жіберу"
diff --git a/CheckUser/i18n/kk-latn.json b/CheckUser/i18n/kk-latn.json
index b2ec35b3..eadcca90 100644
--- a/CheckUser/i18n/kk-latn.json
+++ b/CheckUser/i18n/kk-latn.json
@@ -27,10 +27,5 @@
"checkuser-search-submit": "İzdew",
"checkuser-search-initiator": "bastamaşı",
"checkuser-search-target": "nısana",
- "checkuser-log-return": "CheckUser basqı pişinine oralw",
- "checkuser-log-userips": "$2 üşin $1 IP jaý alındı",
- "checkuser-log-ipedits": "$2 üşin $1 tüzetw alındı",
- "checkuser-log-ipusers": "$2 üşin $1 IP qatıswşı alındı",
- "checkuser-log-ipedits-xff": "XFF $2 üşin $1 tüzetw alındı",
- "checkuser-log-ipusers-xff": "XFF $2 üşin $1 qatıswşı alındı"
+ "checkuser-log-return": "CheckUser basqı pişinine oralw"
}
diff --git a/CheckUser/i18n/km.json b/CheckUser/i18n/km.json
index 9c3c33ab..c05bb912 100644
--- a/CheckUser/i18n/km.json
+++ b/CheckUser/i18n/km.json
@@ -62,10 +62,6 @@
"checkuser-search-target": "គោលដៅ",
"checkuser-ipeditcount": "~$1 ពីគ្រប់អ្នកប្រើប្រាស់ទាំងអស់",
"checkuser-log-return": "ត្រឡប់ទៅកាន់បែបបទដើមនៃការត្រួតពិនិត្យអ្នកប្រើប្រាស់",
- "checkuser-log-userips": "$1បានទទួល IPs ដែល$2បានប្រើប្រាស់",
- "checkuser-log-ipedits": "$1បានទទួលចំនួនកំណែប្រែពី$2",
- "checkuser-log-ipedits-xff": "$1 បានទទួលកំណែប្រែពី XFF $2",
- "checkuser-log-useredits": "$1 បានទទួលកំណែប្រែពី $2",
"checkuser-autocreate-action": "ត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិ",
"checkuser-create-action": "បានបង្កើត",
"checkuser-email-action": "បានផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើប្រាស់ \"$1\"",
diff --git a/CheckUser/i18n/ko.json b/CheckUser/i18n/ko.json
index 3e00305a..b6f4b771 100644
--- a/CheckUser/i18n/ko.json
+++ b/CheckUser/i18n/ko.json
@@ -10,10 +10,14 @@
"아라",
"Revi",
"SeoJeongHo",
- "IRTC1015"
+ "IRTC1015",
+ "Priviet",
+ "Ykhwong",
+ "Jerrykim306",
+ "McDutchie"
]
},
- "checkuser-summary": "이 도구는 특정 사용자가 이용한 IP 또는 특정 IP에 대한 편집/사용자 정보를 검사합니다.\n클라이언트 IP를 통한 사용자와 편집은 IP 주소 뒤에 \"/xff\"를 더함으로서 XFF 제공자를 통해 조사할 수 있습니다. IPv4 (CIDR $1-32) 와 IPv6 (CIDR $2-128)을 지원합니다.\n성능상의 이유로 최대 5000개의 편집만 보여질 것입니다.\n이 도구는 정책에 맞게 사용하십시오.",
+ "checkuser-summary": "이 도구는 최근의 변경 사항을 검사하여 특정 사용자가 이용한 IP 주소를 검색하거나 특정 IP 주소에 대한 편집/사용자 정보를 보여줍니다.\n클라이언트 IP를 통한 사용자와 편집은 IP 주소 뒤에 \"/xff\"를 추가함으로써 XFF 헤더를 통해 조사할 수 있습니다. IPv4 (CIDR $1-32)와 IPv6 (CIDR $2-128)을 지원합니다.\n성능 상의 이유로 최대 5,000개의 편집만 반환됩니다.\n이 도구는 정책에 맞게 사용하십시오.",
"checkuser-desc": "사용자의 IP 주소 등의 정보를 조사할 수 있는 적절한 권한을 특정한 사용자에게 줍니다",
"checkuser-logcase": "기록 검색은 대소문자를 구분합니다.",
"checkuser": "사용자 검사",
@@ -29,13 +33,12 @@
"grouppage-checkuser": "{{ns:project}}:검사관",
"checkuser-reason": "이유:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "기록 보기",
+ "checkuser-showlog": "검사관 기록 보기",
"checkuser-query": "쿼리 최근 바뀜",
"checkuser-target": "IP 주소 또는 사용자 이름:",
"checkuser-users": "특정 IP를 사용한 사용자 확인",
"checkuser-edits": "편집을 확인",
"checkuser-ips": "IP 주소 확인",
- "checkuser-search": "검색",
"checkuser-period": "기간:",
"checkuser-week-1": "지난 1주일",
"checkuser-week-2": "지난 2주일",
@@ -56,6 +59,8 @@
"checkuser-localonly": "계정이 통합되지 않음",
"checkuser-massblock": "선택한 사용자 차단",
"checkuser-massblock-text": "선택한 계정은 무기한 (자동 차단 활성화, 계정 만들기 금지됨) 차단될 것입니다.\nIP 주소는 1주일 (IP만 막음, 계정 만들기 금지됨) 차단될 것입니다.",
+ "checkuser-blockemail": "이메일을 보내지 못하도록 막기",
+ "checkuser-blocktalk": "차단된 동안 자신의 사용자 토론 문서를 편집하지 못하도록 막기",
"checkuser-blocktag": "사용자 문서를 다음 내용으로 바꾸기:",
"checkuser-blocktag-talk": "토론 문서를 다음 내용으로 바꾸기:",
"checkuser-massblock-commit": "선택한 사용자를 차단",
@@ -63,45 +68,55 @@
"checkuser-block-failure": "'''차단된 사용자가 없습니다.'''",
"checkuser-block-limit": "너무 많은 사용자를 선택하였습니다.",
"checkuser-block-noreason": "차단하는 이유를 반드시 입력해야 합니다.",
+ "checkuser-centralauth-multilock": "선택한 여러 계정을 잠그기",
"checkuser-noreason": "이 명령에 대한 이유를 반드시 제시해야 합니다.",
"checkuser-accounts": "새 {{PLURAL:$1|계정}} $1개",
"checkuser-too-many": "쿼리 정보의 결과가 너무 많습니다. CIDR 범위를 좁혀 주세요.\n다음은 사용되고 있는 IP 주소의 목록입니다 (최대 5000개, 주소별로 정렬됨):",
"checkuser-user-nonexistent": "해당 사용자가 존재하지 않습니다.",
- "checkuser-search-form": "$1이 $2인 기록 항목 찾기",
+ "checkuser-search": "사용자 검사 기록 항목 검색",
"checkuser-search-submit": "검색",
"checkuser-search-initiator": "작업 수행자",
"checkuser-search-target": "대상",
+ "checkuser-log-search-target": "대상:",
+ "checkuser-log-search-type": "검색 종류:",
"checkuser-ipeditcount": "모든 사용자로부터 편집 $1개",
- "checkuser-log-return": "사용자검사 기본 양식으로 돌아가기",
- "checkuser-limited": "'''성능상의 이유로 결과 중 일부만 보여줍니다.'''",
- "checkuser-log-userips": "$1 사용자는 $2 사용자가 사용한 IP 주소를 얻었습니다.",
- "checkuser-log-ipedits": "$1 사용자는 $2의 편집을 얻었습니다.",
- "checkuser-log-ipusers": "$1 사용자가 $2 IP 주소를 사용한 사용자를 확인하였습니다.",
- "checkuser-log-ipedits-xff": "$1 사용자가 XFF $2 IP 주소에서의 편집을 얻었습니다.",
- "checkuser-log-ipusers-xff": "$1 사용자가 XFF $2 IP 주소를 사용한 사용자의 목록을 얻었습니다.",
- "checkuser-log-useredits": "$1 사용자가 $2 사용자의 편집을 얻었습니다.",
+ "checkuser-showmain": "사용자검사 기본 양식으로 돌아가기",
+ "checkuser-limited": "'''성능 상의 이유로 결과 중 일부만 보여줍니다.'''",
+ "checkuser-log-entry-userips": "$3, $1님이 $2의 IP 주소를 조회했습니다",
+ "checkuser-log-entry-ipedits": "$3, $1님이 $2의 편집을 조회했습니다",
+ "checkuser-log-entry-ipusers": "$3, $1님이 $2 IP를 사용한 계정을 조회하였습니다",
+ "checkuser-log-entry-ipedits-xff": "$3, $1님이 XFF $2의 편집을 조회하였습니다",
+ "checkuser-log-entry-ipusers-xff": "$3, $1님이 XFF $2의 사용자를 조회했습니다",
+ "checkuser-log-entry-useredits": "$3, $1님이 $2님의 편집을 조회하였습니다",
"checkuser-autocreate-action": "자동으로 만들어졌습니다",
"checkuser-create-action": "만들어졌습니다",
"checkuser-email-action": "\"$1\" 사용자에게 이메일을 보냈습니다",
- "checkuser-reset-action": "\"$1\" 사용자의 비밀번호를 바꿨습니다",
- "checkuser-token-fail": "세션 실패. 다시 시도 하십시오.",
+ "checkuser-reset-action": "\"$1\" 사용자의 비밀번호를 재설정했습니다",
+ "checkuser-userlinks-ip": "([[User_talk:$1|토론]] | [[Special:Contributions/$1|기여]] | [[Special:Block/$1|차단]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|토론]] | [[Special:Contributions/$1|기여]] | [[Special:Block/$1|차단]])",
+ "checkuser-token-fail": "세션 실패. 다시 시도하십시오.",
"group-checkuser.css": "/* 이 CSS 설정은 검사관에만 적용됩니다 */",
"group-checkuser.js": "/* 이 자바스크립트 설정은 검사관에만 적용됩니다 */",
"apihelp-query+checkuser-description": "특정한 사용자가 어떤 IP 주소를 썼는지 확인하거나 특정한 IP 주소를 사용한 계정 이름을 확인합니다.",
+ "apihelp-query+checkuser-summary": "특정한 사용자가 어떤 IP 주소를 썼는지 확인하거나 특정한 IP 주소를 사용한 계정 이름을 확인합니다.",
"apihelp-query+checkuser-param-request": "검사 요청의 유형:\n;userips: 대상 사용자의 IP 주소를 불러옴.\n;edits: 대상 IP 주소나 대역에서 이루어진 편집을 불러옴.\n;ipusers: 대상 IP 주소나 대역을 사용한 계정을 불러옴.",
"apihelp-query+checkuser-param-target": "검사할 계정 이름, IP 주소 혹은 CIDR 범위",
"apihelp-query+checkuser-param-reason": "검사 이유.",
"apihelp-query+checkuser-param-limit": "검사 한도",
- "apihelp-query+checkuser-param-timecond": "사용자 데이터의 시간 제약 (예시: \"2 weeks\").",
+ "apihelp-query+checkuser-param-timecond": "사용자 데이터의 시간 제약 (예: \"-2 weeks\" 또는 \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "IP 주소 대신 XFF 데이터를 이용.",
"apihelp-query+checkuser-example-1": "[[User:Example]]에 대해 IP 주소 검사",
"apihelp-query+checkuser-example-2": "192.0.2.0/24에 대해 편집 검사",
- "apihelp-query+checkuserlog-description": "검사관 기록에서 항목 가져오기",
+ "apihelp-query+checkuserlog-description": "검사관 기록에서 항목을 가져옵니다.",
+ "apihelp-query+checkuserlog-summary": "검사관 기록에서 항목을 가져옵니다.",
"apihelp-query+checkuserlog-param-user": "검사관의 사용자 이름",
"apihelp-query+checkuserlog-param-target": "검사된 사용자, IP 주소, CIDR 범위",
"apihelp-query+checkuserlog-param-limit": "검사 한도",
"apihelp-query+checkuserlog-param-from": "나열을 시작할 타임스탬프",
"apihelp-query+checkuserlog-param-to": "나열을 끝낼 타임스탬프",
"apihelp-query+checkuserlog-example-1": "[[User:Example]]에 대한 검사 보기",
- "apihelp-query+checkuserlog-example-2": "192.0.2.0/24에 대한 2011-10-15T23:00:00Z 이후의 검사 보기"
+ "apihelp-query+checkuserlog-example-2": "192.0.2.0/24에 대한 2011-10-15T23:00:00Z 이후의 검사 보기",
+ "apierror-checkuser-missingsummary": "검사 이유를 지정해야 합니다.",
+ "apierror-checkuser-timelimit": "올바른 시간 형식(\"-2 weeks\" 혹은 \"2 weeks ago\"과 같이)으로 사용하셔야 합니다.",
+ "apierror-checkuser-invalidmode": "잘못된 요청 모드"
}
diff --git a/CheckUser/i18n/krc.json b/CheckUser/i18n/krc.json
index ef2f29ea..0f2f7181 100644
--- a/CheckUser/i18n/krc.json
+++ b/CheckUser/i18n/krc.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Iltever"
+ "Iltever",
+ "Ernác"
]
},
"group-checkuser": "Къошулуучуланы тинтиучюле"
diff --git a/CheckUser/i18n/krl.json b/CheckUser/i18n/krl.json
index 340860a6..4f5b80d7 100644
--- a/CheckUser/i18n/krl.json
+++ b/CheckUser/i18n/krl.json
@@ -1,9 +1,10 @@
{
"@metadata": {
"authors": [
- "Flrn"
+ "Flrn",
+ "Likopiän tyttö"
]
},
"checkuser-search": "Ečindy",
- "checkuser-search-submit": "Ečči"
+ "checkuser-search-submit": "Eči"
}
diff --git a/CheckUser/i18n/ksh.json b/CheckUser/i18n/ksh.json
index 734a91e4..4ee82ca0 100644
--- a/CheckUser/i18n/ksh.json
+++ b/CheckUser/i18n/ksh.json
@@ -20,13 +20,12 @@
"grouppage-checkuser": "{{ns:project}}:Metmaacher-Övverpröhfer",
"checkuser-reason": "Aanlass:",
"checkuser-reason-api": "<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>: $1",
- "checkuser-showlog": "Et Logbohch aanzeije",
+ "checkuser-showlog": "Et Logbohch vum Metaacher övverpröhve aanzeije",
"checkuser-query": "En de {{LCFIRST:{{int:recentchanges}}}} frohre",
"checkuser-target": "De <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß udder dä Metmaacher_Nahme:",
"checkuser-users": "Metmaacher holle",
"checkuser-edits": "Änderonge holle",
"checkuser-ips": "<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße holle",
- "checkuser-search": "Söhke",
"checkuser-period": "De Dohr:",
"checkuser-week-1": "läz Woch",
"checkuser-week-2": "de läzde zwai Woche",
@@ -47,6 +46,8 @@
"checkuser-localonly": "Nit zosamme jelaht",
"checkuser-massblock": "Don de usjesöhk Metmaacher schpärre",
"checkuser-massblock-text": "De ußjesohte Metmaacher wähde för ihwich jeschpächt, met automattesch wigger schpärre ennjeschalldt un et Metmaacher_Neu_Aanlähje es verbodde.\nDe nahmelohse Metmaacher un ier <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße wähde för en Woch jeschpächt — Enlogge fun doh es ävver wigger müjjelesch — un et Metmaacher_Neu_Aanlähje es doh och verbodde.",
+ "checkuser-blockemail": "Et <i lang=\"en\">e-mail</i>-Verschecke ongerbenge",
+ "checkuser-blocktalk": "Dä Metmaacher darf sing Klaafsigg nit änndere, esulang wi hä jeschpäächd es",
"checkuser-blocktag": "Der Metmaacher ier Sigge iere Ennhalt ußtuusche jäje:",
"checkuser-blocktag-talk": "Donn de Klaafsigge övverschrihve met:",
"checkuser-massblock-commit": "Ußjesohte Metmaacher schpärre",
@@ -58,19 +59,20 @@
"checkuser-accounts": "{{PLURAL:$1|Eine|$1|Keine}} neue Metmaacher",
"checkuser-too-many": "Zoo fill jefonge, pä Övverschlaach. Beß esu jood un maach dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Classless Inter-Domain Routing\">CIDR</i>-Berätt kleijner.\nHeh sin de eetßte 5000 <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße, zottehrt:",
"checkuser-user-nonexistent": "Dä aanjejovve Metmaacher jidd_et jaa nit.",
- "checkuser-search-form": "Sök noh Enndrähsch em Logbohch, woh $1 $2 es.",
+ "checkuser-search": "Söhk em Logbohch vum Metmaacher-Övverwaache",
"checkuser-search-submit": "Lohß jonn!",
"checkuser-search-initiator": "dä Metmaacher-Övverpröhfer",
"checkuser-search-target": "dä Nahme vom övverpröhvte Metmaacher",
+ "checkuser-log-search-type": "Söhk övver:",
"checkuser-ipeditcount": "~$1 Änderonge fun alle Metmaacher",
- "checkuser-log-return": "Zerök zom Houpfommolaa vum „Metmaacher Övverprööfe“",
+ "checkuser-showmain": "Zerök zom Houpfommolaa vum „Metmaacher Övverprööfe“",
"checkuser-limited": "'''Di Leß es affjeschnedde, öm nit der ẞööver onnühdesch ze belaste.'''",
- "checkuser-log-userips": "$1 hät de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße för $2 jehollt<!--\nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Checkuser-log-userips/ksh\n-->",
- "checkuser-log-ipedits": "$1 hät de Änderonge för de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß $2 jehollt <!--\nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Checkuser-log-userips/ksh\n-->",
- "checkuser-log-ipusers": "$1 hät de Metmaacher för de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß $2 jehollt <!--\nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Checkuser-log-userips/ksh\n-->",
- "checkuser-log-ipedits-xff": "$1 hät de Änderonge jehollt för de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"X-Forwarded-For\">XFF</i>-<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß $2 jehollt <!--\nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Checkuser-log-userips/ksh\n-->",
- "checkuser-log-ipusers-xff": "$1 hät de Metmaacher för de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"X-Forwarded-For\">XFF</i>-<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß $2 jehollt <!--\nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Checkuser-log-userips/ksh\n-->",
- "checkuser-log-useredits": "dä Metmmacher „$1“ hät dem Metmaacher „$2“ sing Änderunge aanjeloort <!--\nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Checkuser-log-userips/ksh\n-->",
+ "checkuser-log-entry-userips": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät aam $4 öm $5 de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße för $2 jehollt.",
+ "checkuser-log-entry-ipedits": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät aam $4 öm $5 de Ännderonge för $2 jehollt.",
+ "checkuser-log-entry-ipusers": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät aam $4 öm $5 de Metmaacher för $2 jehollt.",
+ "checkuser-log-entry-ipedits-xff": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät aam $4 öm $5 de Ännderonge för <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"X-Forwarded-For\">XFF</i> $2 jehollt.",
+ "checkuser-log-entry-ipusers-xff": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät aam $4 öm $5 de Metmaacher för <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"X-Forwarded-For\">XFF</i> $2 jehollt.",
+ "checkuser-log-entry-useredits": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät aam $4 öm $5 de Ännderonge för $2 jehollt.",
"checkuser-autocreate-action": "wohd automattesch aanjelaat",
"checkuser-create-action": "wood aanjelaat",
"checkuser-email-action": "en e-mail aan „$1“ jescheck",
diff --git a/CheckUser/i18n/lb.json b/CheckUser/i18n/lb.json
index 24a017f9..570c139a 100644
--- a/CheckUser/i18n/lb.json
+++ b/CheckUser/i18n/lb.json
@@ -22,13 +22,12 @@
"grouppage-checkuser": "{{ns:project}}:Benotzer-Kontroller",
"checkuser-reason": "Grond:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Logbuch weisen",
+ "checkuser-showlog": "Op d'Logbuch vun CheckUser wiesselen",
"checkuser-query": "Rezent Ännerungen offroen",
"checkuser-target": "IP-Adress oder Benotzernumm:",
"checkuser-users": "Benotzer kréien",
"checkuser-edits": "Ännerunge kréien",
"checkuser-ips": "IP-Adresse kréien/weisen",
- "checkuser-search": "Sichen",
"checkuser-period": "Zäitraum:",
"checkuser-week-1": "lescht Woch",
"checkuser-week-2": "lescht 2 Wochen",
@@ -49,6 +48,8 @@
"checkuser-localonly": "Net zesummegeluecht",
"checkuser-massblock": "Ausgewielt Benotzer spären",
"checkuser-massblock-text": "Déi erausgesicht Benotzerkonte gi fir eng onbestëmmt Zäit gespaart, Autoblock ass ageschalt an d'Opmaache vu Benotzerkonten ass ausgeschalt., IP-Adresse gi fir eng Woch gespaart fir IP Benotzer an d'Opmaache vu Benotzerkonten ass ausgeschalt.",
+ "checkuser-blockemail": "Verhënnere fir E-Mailen ze verschécken",
+ "checkuser-blocktalk": "Verhënnere fir seng eegen Diskussiounssäit z'ännere sou laang wéi e gespaart ass",
"checkuser-blocktag": "Benotzersäiten duerch dëst ersetzen:",
"checkuser-blocktag-talk": "Diskussiounssäiten ersetzen duerch:",
"checkuser-massblock-commit": "Ausgewielt Benotzer spären",
@@ -60,19 +61,16 @@
"checkuser-accounts": "$1 {{PLURAL:$1|neie Benotzerkont|nei Benotzerkonten}}",
"checkuser-too-many": "Zevill Resultater (am Vergäich zu der Schätzung vun der Ufro), reduzéiert w.e.g. de Beräich vum CIDR.\nHei sinn déi benotzten IP-Adressen (max 5000, zortéiert no der Adress):",
"checkuser-user-nonexistent": "De gesichte Benotzer gëtt et net.",
- "checkuser-search-form": "An de Lëschten fannen, wou den $1 den $2 ass",
+ "checkuser-search": "Am CheckUser-Logbuch sichen",
"checkuser-search-submit": "Sichen",
"checkuser-search-initiator": "Initiator",
"checkuser-search-target": "Zil",
+ "checkuser-log-search-target": "Zil:",
+ "checkuser-log-search-type": "Sichen no:",
"checkuser-ipeditcount": "~$1 vun alle Benotzer",
- "checkuser-log-return": "Op den Haaptformulaire vun CheckUser wiesselen",
+ "checkuser-showmain": "Op den Haaptformulaire vun CheckUser wiesselen",
"checkuser-limited": "'''Dës Lëscht gouf aus Grënn vun der performance vun de Servere gekierzt.'''",
- "checkuser-log-userips": "$1 krut IPen fir $2",
- "checkuser-log-ipedits": "$1 huet Ännerunge kritt fir $2",
- "checkuser-log-ipusers": "$1 huet Benotzer kritt fir $2",
- "checkuser-log-ipedits-xff": "$1 krut ännerunge fir XFF $2",
- "checkuser-log-ipusers-xff": "$1 krut d'Benotzer fir XFF $2",
- "checkuser-log-useredits": "$1 huet d'Ännerunge fir $2 kritt",
+ "checkuser-log-entry-ipedits": "$3, $1 huet d'Ännerunge vun $2 kritt",
"checkuser-autocreate-action": "gouf automatesch ugeluecht",
"checkuser-create-action": "gouf ugeluecht",
"checkuser-email-action": "dem Benotzer \"$1\" eng E-Mail geschéckt",
diff --git a/CheckUser/i18n/li.json b/CheckUser/i18n/li.json
index 54809c94..de39bcb4 100644
--- a/CheckUser/i18n/li.json
+++ b/CheckUser/i18n/li.json
@@ -66,12 +66,6 @@
"checkuser-ipeditcount": "~$1 van alle gebroekers",
"checkuser-log-return": "Nao 't huidformeleer van KonterleerGebroeker trökgaon",
"checkuser-limited": "'''Dees rizzeltaote zeen neet gans óm perstaasjereeje.'''",
- "checkuser-log-userips": "$1 haet IP-adresse veur $2",
- "checkuser-log-ipedits": "$1 haet bewèrkinge veur $2",
- "checkuser-log-ipusers": "$1 haet gebroekers veur $2",
- "checkuser-log-ipedits-xff": "$1 haet bewèrkinge veur XFF $2",
- "checkuser-log-ipusers-xff": "$1 haet gebrokers veur XFF $2",
- "checkuser-log-useredits": "$1 haet bewèrkinger veur $2",
"checkuser-autocreate-action": "is autematisch aangemaak",
"checkuser-create-action": "is aangemaak",
"checkuser-email-action": "haet get pós gestuurdj aan \"$1\"",
diff --git a/CheckUser/i18n/lo.json b/CheckUser/i18n/lo.json
index 3a24b16b..bdb150de 100644
--- a/CheckUser/i18n/lo.json
+++ b/CheckUser/i18n/lo.json
@@ -1,14 +1,18 @@
{
- "@metadata": [],
+ "@metadata": {
+ "authors": [
+ "Aefgh39622"
+ ]
+ },
"checkuser": "ກວດຜູ້ໃຊ້",
"checkuserlog": "ບັນທຶກການກວດຜູ້ໃຊ້",
"checkuser-reason": "ເຫດຜົນ:",
"checkuser-showlog": "ສະແດງບັນທຶກ",
- "checkuser-target": "ຜູ້ໃຊ້ ຫຼື IP",
+ "checkuser-target": "ທີ່ຢູ່ IP ຫຼື ຊື່ຜູ້ໃຊ້:",
"checkuser-edits": "ເອົາ ການດັດແກ້ ຈາກ ທີ່ຢູ່ IP",
"checkuser-ips": "ເອົາ ທີ່ຢູ່ IP",
- "checkuser-search": "ຊອກຫາ",
"checkuser-empty": "ບໍ່ມີເນື້ອໃນຖືກບັນທຶກ",
"checkuser-nomatch": "ບໍ່ພົບສິ່ງທີ່ຊອກຫາ",
- "checkuser-check": "ກວດ"
+ "checkuser-check": "ກວດ",
+ "checkuser-search": "ຊອກຫາ"
}
diff --git a/CheckUser/i18n/lt.json b/CheckUser/i18n/lt.json
index 3a16825c..1b080218 100644
--- a/CheckUser/i18n/lt.json
+++ b/CheckUser/i18n/lt.json
@@ -7,14 +7,16 @@
"Matasg"
]
},
+ "checkuser-desc": "Suteikia naudotojams, turintiems atitinkamas teises, galimybę patikrinti naudotojo IP adresus ir kitą informaciją",
"checkuser": "Patikrinkite vartotoją",
"checkuserlog": "Peržiūrėti vartotojo žurnalą",
- "checkuser-contribs": "Patikrinkite vartotojo IP adresus",
+ "checkuser-contribs": "patikrinti naudotojo IP adresus",
"checkuser-contribs-log": "naujausi vartotojo patikrinimai",
- "group-checkuser": "Patikrinkite vartotojus",
- "group-checkuser-member": "Patikrinkite vartotoją",
+ "group-checkuser": "Naudotojų tikrintojai",
+ "group-checkuser-member": "{{GENDER:$1|naudotojo tikrintojas|naudotojo tikrintoja}}",
"right-checkuser": "Tikrinti naudotojo IP adresus ir kitą informaciją",
"action-checkuser": "patikrinti vartotojo IP adresą ir kita informaciją",
+ "grouppage-checkuser": "{{ns:project}}:Patikrinti vartotoją",
"checkuser-reason": "Priežastis:",
"checkuser-reason-api": "API: $1",
"checkuser-showlog": "Rodyti sąrašą",
@@ -22,7 +24,6 @@
"checkuser-users": "Gauti naudotojus",
"checkuser-edits": "Gauti redagavimus",
"checkuser-ips": "Gauti IP",
- "checkuser-search": "Ieškoti",
"checkuser-period": "Trukmė:",
"checkuser-week-1": "Praeitą savaitę",
"checkuser-week-2": "Paskutines dvi savaites",
@@ -37,21 +38,47 @@
"checkuser-blocked": "Užblokuotas",
"checkuser-gblocked": "Užblokuotas globaliai",
"checkuser-locked": "Užrakintas",
+ "checkuser-wasblocked": "Anksčiau užblokuotas",
+ "checkuser-localonly": "Nevieningas",
"checkuser-massblock": "Blokuoti pasirinktus naudotojus",
+ "checkuser-blockemail": "Neleisti siųsti el. laiškų",
+ "checkuser-blocktalk": "Neleisti redaguoti savo aptarimo puslapio, kol yra užblokuoti",
+ "checkuser-blocktag": "Pakeisti vartotojo puslapius su:",
+ "checkuser-blocktag-talk": "Pakeisti aptarimo puslapius su:",
"checkuser-massblock-commit": "Blokuoti pasirinktus naudotojus",
+ "checkuser-block-success": "'''{{PLURAL:$2|vartotojas|vartotojai}} $1 dabar yra užblokuoti.'''",
"checkuser-block-failure": "'''Nėra užblokuotų vartotijų.'''",
"checkuser-block-limit": "Pasirinkta per daug naudotojų.",
"checkuser-block-noreason": "Jūs turite nurodyti blokavimų priežastį.",
+ "checkuser-noreason": "Šiai užklausai turite pateikti priežastį.",
"checkuser-accounts": "$1 nauja {{PLURAL:$1|paskyra|paskyros}}",
"checkuser-too-many": "Per daug rezultatų, susiaurinkite CIDR.\nČia pateikiami naudojami IP adresai (daugiausiai 5000, suskirstyti pagal adresus):",
"checkuser-user-nonexistent": "Nurodytas naudotojas neegzistuoja.",
+ "checkuser-search": "Ieškoti",
"checkuser-search-submit": "Ieškoti",
"checkuser-search-initiator": "iniciatorius",
"checkuser-search-target": "taikinys",
+ "checkuser-log-search-target": "Tikslas:",
+ "checkuser-log-search-type": "Ieškoti pagal:",
"checkuser-ipeditcount": "~$1 iš visų vartotojų",
- "checkuser-log-userips": "$1 gavo IP adresų $2",
+ "checkuser-log-entry-userips": "$3, $1 gauti $2 IP adresai",
+ "checkuser-log-entry-ipedits": "$3, $1 gavo $2 keitimus",
+ "checkuser-log-entry-ipusers": "$3, $1 gavo $2 vartotojus",
"checkuser-autocreate-action": "buvo automatiškai sukurtas",
"checkuser-create-action": "buvo sukurta",
- "checkuser-email-action": "siųsti el. laišką vartotojui \" $1 \"",
- "checkuser-reset-action": "iš naujo nustatyti slaptažodį naudotojui \"$1\""
+ "checkuser-email-action": "siųsti el. laišką naudotojui \"$1\"",
+ "checkuser-reset-action": "iš naujo nustatyti slaptažodį naudotojui \"$1\"",
+ "checkuser-token-fail": "Sesijos klaida. Prašome bandyti dar kartą.",
+ "apihelp-query+checkuser-description": "Patikrinti kokie IP adresai yra naudojami pateikto vartotojo vardo arba kokie vartotojų vardai yra naudojami pateikto IP adreso.",
+ "apihelp-query+checkuser-param-reason": "Tikrinimo priežastis.",
+ "apihelp-query+checkuser-param-limit": "Eilučių limitas.",
+ "apihelp-query+checkuser-example-1": "Patikrinti [[User:Example]] IP adresus",
+ "apihelp-query+checkuser-example-2": "Patikrinti 192.0.2.0/24 keitimus",
+ "apihelp-query+checkuserlog-description": "Gauti įrašus iš CheckUser žurnalo.",
+ "apihelp-query+checkuserlog-param-user": "CheckUser vartotojo vardas.",
+ "apihelp-query+checkuserlog-param-limit": "Eilučių limitas.",
+ "apihelp-query+checkuserlog-example-1": "Rodyti [[User:Example]] patikrinimus",
+ "apihelp-query+checkuserlog-example-2": "Rodyti 192.0.2.0/24 patikrinimus, po 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Privalote nurodyti tikrinimo priežastį.",
+ "apierror-checkuser-invalidmode": "Negalimas prašymo režimas"
}
diff --git a/CheckUser/i18n/lv.json b/CheckUser/i18n/lv.json
index 2cf91310..9cfd94a4 100644
--- a/CheckUser/i18n/lv.json
+++ b/CheckUser/i18n/lv.json
@@ -5,7 +5,8 @@
"GreenZeb",
"Papuass",
"Xil",
- "Yyy"
+ "Yyy",
+ "Zuiks"
]
},
"checkuser-desc": "Atļauj lietotājiem ar attiecīgām pilnvarām pārbaudīt lietotāja IP adresi un citu informāciju.",
@@ -21,7 +22,6 @@
"checkuser-users": "Iegūt lietotājus",
"checkuser-edits": "Iegūt labojumus",
"checkuser-ips": "Iegūt IP adreses",
- "checkuser-search": "Meklēt",
"checkuser-period": "Ilgums:",
"checkuser-week-1": "pēdējā nedēļa",
"checkuser-week-2": "pēdējās divas nedēļas",
@@ -33,12 +33,15 @@
"checkuser-localonly": "Nav apvienots",
"checkuser-massblock": "Bloķēt izvēlētos lietotājus",
"checkuser-blocktag-talk": "Aizstāt lietotāja diskusijas lapu ar:",
- "checkuser-massblock-commit": "Bloķēt izvēlētos lietotājus.",
+ "checkuser-massblock-commit": "Bloķēt izvēlētos dalībniekus.",
"checkuser-block-failure": "\"' Neviens lietotājs netika bloķēts.\" \"",
"checkuser-block-limit": "Izvēlēti pārāk daudzi lietotāji.",
"checkuser-block-noreason": "Jums jānorāda bloķēšanas iemesli.",
"checkuser-accounts": "$1 {{PLURAL:$1|jauni konti|jauns konts|jauni konti}}",
+ "checkuser-search": "Meklēt",
"checkuser-search-submit": "Meklēt",
"checkuser-search-initiator": "iniciators",
+ "checkuser-log-search-target": "Mērķis:",
+ "checkuser-log-search-type": "Meklēt pēc:",
"checkuser-email-action": "aizsūtīt ziņu uz lietotāja \"$1\" e-pastu"
}
diff --git a/CheckUser/i18n/lzh.json b/CheckUser/i18n/lzh.json
index 790bc649..83987945 100644
--- a/CheckUser/i18n/lzh.json
+++ b/CheckUser/i18n/lzh.json
@@ -1,9 +1,13 @@
{
"@metadata": {
"authors": [
- "LNDDYL"
+ "LNDDYL",
+ "逆襲的天邪鬼",
+ "WAN233"
]
},
+ "group-checkuser": "知簿",
+ "group-checkuser-member": "{{GENDER:$1|知簿}}",
"checkuser-search": "尋",
"checkuser-search-submit": "尋"
}
diff --git a/CheckUser/i18n/mai.json b/CheckUser/i18n/mai.json
index 976e525e..960a9bf8 100644
--- a/CheckUser/i18n/mai.json
+++ b/CheckUser/i18n/mai.json
@@ -11,20 +11,19 @@
"checkuser-contribs-log": "सन्निकट में भेल प्रयोक्ता जांच",
"group-checkuser": "प्रयोक्ता जाँचकर्ता",
"group-checkuser-member": "{{GENDER:$1|प्रयोक्ता जाँचकर्ता}}",
- "right-checkuser": "प्रयोक्ता के आई॰पी॰ पता आ अन्य जानकारी जांचु",
- "right-checkuser-log": "प्रयोक्ता जाँच लग देखु",
- "action-checkuser": "प्रयोक्ता के आई॰पी॰ पता आ आर जानकारी जांचु",
- "action-checkuser-log": "प्रयोक्ता जाँच लग देखु",
+ "right-checkuser": "प्रयोक्ताक आइपी ठेगान आ अन्य जानकारी जाँची",
+ "right-checkuser-log": "प्रयोक्ता जाँच लग देखी",
+ "action-checkuser": "प्रयोक्ताक आइपी ठेगान आ अन्य जानकारी जाँची",
+ "action-checkuser-log": "प्रयोक्ता जाँच लग देखी",
"grouppage-checkuser": "{{ns:project}}: प्रयोक्ता जाँचकर्ता",
"checkuser-reason": "कारण:",
"checkuser-reason-api": "ए॰पी॰आई: $1",
- "checkuser-showlog": "लग देखाऊ",
+ "checkuser-showlog": "प्रयोगकर्ताजाँच लगक लेल जाए",
"checkuser-query": "सन्निकट में भेल परिवर्त्तन खोजु",
"checkuser-target": "आई॰पी॰ पता वा प्रयोक्तानाम:",
- "checkuser-users": "प्रयोक्ता ताकु",
+ "checkuser-users": "प्रयोक्ता ताकी",
"checkuser-edits": "सम्पादन खोजु",
"checkuser-ips": "आई॰पी॰ पता खोजु",
- "checkuser-search": "ताकू",
"checkuser-period": "अवधि:",
"checkuser-week-1": "पहुन्का सप्ताह",
"checkuser-week-2": "पहुन्का दू सप्ताह",
@@ -32,29 +31,26 @@
"checkuser-all": "सभ",
"checkuser-cidr-label": "आइ॰पी॰ पता के सूचीके लेल मामुली रेन्ज आर प्रभावित आइ॰पी॰ पता ताकू",
"checkuser-cidr-res": "मामुली CIDR:",
- "checkuser-empty": "ऐ लग में कोनो प्रविष्टि नै छै।",
+ "checkuser-empty": "ई लौगमे कोनो प्रविष्टि नै अछि।",
"checkuser-nomatch": "कोनो मेल खाएत परिणाम नै भेटल।",
"checkuser-check": "जाँचु",
"checkuser-log-fail": "लॉग प्रविष्टि जोड़ नै सकलिए",
"checkuser-nolog": "कुनो लॉग फ़ाइल नैं मिल्ल।",
"checkuser-blocked": "अवरुद्ध",
- "checkuser-gblocked": "वैश्विक रूप सs अवरुद्ध",
+ "checkuser-gblocked": "विश्वव्यापी रूपसँ अवरुद्ध",
"checkuser-locked": "बंद भेल",
"checkuser-wasblocked": "पहिले सs अवरुद्ध",
"checkuser-localonly": "एकीकृत नै अछि",
"checkuser-massblock": "चुन्ल प्रयोक्ता कs ब्लक करु",
- "checkuser-blocktag": "प्रयोक्ता पृष्ठ के ई पाठ से बदलु:",
- "checkuser-blocktag-talk": "वार्ता पृष्ठ के ई पाठ से बदलु:",
+ "checkuser-blocktag": "प्रयोक्ता पृष्ठके ई पाठसँ परिवर्तन करी:",
+ "checkuser-blocktag-talk": "वार्ता पृष्ठके ई पाठ सँ परिवर्तन करी:",
"checkuser-massblock-commit": "चुन्ल प्रयोक्ता कs ब्लक करु",
"checkuser-block-failure": "'''कुनो प्रयोक्ता अवरुद्ध नै केल गेल।'''",
"checkuser-block-limit": "बहुते बेसी प्रयोक्ता सभ चुन्ल अछि।",
+ "checkuser-search": "ताकी",
"checkuser-search-submit": "ताकू",
"checkuser-search-target": "लक्ष्य",
"checkuser-ipeditcount": "~$1 सभ प्रयोक्ता सs",
- "checkuser-log-userips": "$1 $2 के लेल आईपी ठेगाना मिल्ल",
- "checkuser-log-ipedits": "$1 $2 के लेल संपादन मिल्ल",
- "checkuser-log-ipusers": "$1 $2 के लेल प्रयोक्ता मिल्ल",
- "checkuser-log-useredits": "$1 $2 के लेल संपादन मिल्ल",
"checkuser-autocreate-action": "स्वचालित रूप से निर्माण करल गेल",
"checkuser-create-action": "निर्माण करल गेल",
"checkuser-email-action": "प्रयोक्ता \"$1\" के ई-पत्र भेजल गेल",
diff --git a/CheckUser/i18n/mk.json b/CheckUser/i18n/mk.json
index b6bc48b5..514535c0 100644
--- a/CheckUser/i18n/mk.json
+++ b/CheckUser/i18n/mk.json
@@ -3,7 +3,8 @@
"authors": [
"Bjankuloski06",
"Brest",
- "Misos"
+ "Misos",
+ "McDutchie"
]
},
"checkuser-summary": "Оваа алатка врши преглед на скорешни промени за да ги добие IP-адресите користени од некој корисник или да ги прикаже податоците за уредувања/корисници за некоја IP-адреса.\nКорисниците и уредувањата од клиентска IP-адреса можат да се добијат преку XFF наслови со додавање на „/xff“ на IP-адресата. Поддржани се IPv4 (CIDR $1-32) и IPv6 (CIDR $2-128).\nЌе се прикажат највеќе до 5000 уредувања од функционални причини.\nКористете го ова во согласност со правилата.",
@@ -22,13 +23,12 @@
"grouppage-checkuser": "{{ns:project}}:Проверувачи на корисници",
"checkuser-reason": "Причина:",
"checkuser-reason-api": "Извршник: $1",
- "checkuser-showlog": "Прикажи дневник",
+ "checkuser-showlog": "Префрли на дневникот на проверки",
"checkuser-query": "Побарај скорешни промени",
"checkuser-target": "IP-адреса или корисничко име:",
"checkuser-users": "Види корисници",
"checkuser-edits": "Прикажи уредувања",
"checkuser-ips": "Прикажи IP-адреси",
- "checkuser-search": "Пребарај",
"checkuser-period": "Траење:",
"checkuser-week-1": "последна седмица",
"checkuser-week-2": "последни две седмици",
@@ -49,6 +49,8 @@
"checkuser-localonly": "Необединета",
"checkuser-massblock": "Блокирај ги избраните корисници",
"checkuser-massblock-text": "Избраните сметки ќе бидат трајно блокирани, со овозможено автоблокирање и оневозможено создавање на сметки.\nIP-адресите ќе бидат блокирани 1 недела за само за корисници со IP-адреса, и со оневозможено создавање на сметка.",
+ "checkuser-blockemail": "Оневозможи испраќање е-пошта",
+ "checkuser-blocktalk": "Спречи уредување своја страница за разговор додека е блокиран",
"checkuser-blocktag": "Замени ги корисничките страници со:",
"checkuser-blocktag-talk": "Замени ги страниците за разговор со:",
"checkuser-massblock-commit": "Блокирај ги избраните корисници",
@@ -56,45 +58,55 @@
"checkuser-block-failure": "'''Никој не е блокиран.'''",
"checkuser-block-limit": "Избравте премногу корисници.",
"checkuser-block-noreason": "Мора да наведете причина за блокирањата.",
+ "checkuser-centralauth-multilock": "Повеќекратно заклучување на сметки",
"checkuser-noreason": "Мора да наведете причина за ова барање.",
"checkuser-accounts": "$1 {{PLURAL:$1|нова сметка|нови сметки}}",
- "checkuser-too-many": "Премногу резултати (според процената на барањето). Истенчете го CIDR.\nЕве ги користените IP-адреси (највеќе 5000, подредени по адреса):",
+ "checkuser-too-many": "Премногу ставки (според процената на барањето). Уточнете го CIDR.\nЕве ги користените IP-адреси (највеќе 5000, подредени по адреса):",
"checkuser-user-nonexistent": "Наведениот корисник не постои.",
- "checkuser-search-form": "Пронајди ставки во дневникот каде $1 е $2",
+ "checkuser-search": "Пребарај по ставките од дневникот на проверки",
"checkuser-search-submit": "Пребарај",
"checkuser-search-initiator": "иницијатор",
"checkuser-search-target": "цел",
+ "checkuser-log-search-target": "Цел:",
+ "checkuser-log-search-type": "Пребарај по:",
"checkuser-ipeditcount": "~$1 од сите корисници",
- "checkuser-log-return": "Префрли ме на главниот образец за проверување корисници",
- "checkuser-limited": "'''Резултатите се скратени од функционални причини.'''",
- "checkuser-log-userips": "$1 доби IP-адреси за $2",
- "checkuser-log-ipedits": "$1 доби уредувања за $2",
- "checkuser-log-ipusers": "$1 доби корисници за $2",
- "checkuser-log-ipedits-xff": "$1 доби уредувања за XFF $2",
- "checkuser-log-ipusers-xff": "$1 доби корисници за XFF $2",
- "checkuser-log-useredits": "$1 доби уредувања за $2",
+ "checkuser-showmain": "Префрли ме на главниот образец за проверување корисници",
+ "checkuser-limited": "'''Исходов е скратен од делотворрни причини.'''",
+ "checkuser-log-entry-userips": "$3, $1 доби IP-адреси за за $2",
+ "checkuser-log-entry-ipedits": "$3, $1 доби уредувања за $2",
+ "checkuser-log-entry-ipusers": "$3, $1 доби корисници за $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 доби уредувања за XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 доби корисници за XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 доби уредувања за $2",
"checkuser-autocreate-action": "беше автоматски создадена",
"checkuser-create-action": "е создаден",
"checkuser-email-action": "му испрати е-пошта на корисникот „$1“",
"checkuser-reset-action": "смени лозинка за корисникот „$1“",
+ "checkuser-userlinks-ip": "([[User_talk:$1|разговор]] | [[Special:Contributions/$1|придонеси]] | [[Special:Block/$1|блокирај]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|разговор]] | [[Special:Contributions/$1|придонеси]] | [[Special:Block/$1|блокирај]])",
"checkuser-token-fail": "Седницата не успеа. Обидете се повторно.",
"group-checkuser.css": "/* Тука поставениот CSS ќе се применува само врз проверувачи на корисници */",
"group-checkuser.js": "/* Тука поставениот JS ќе се применува само врз проверувачи на корисници */",
"apihelp-query+checkuser-description": "Провери кои IP-адреси ги користи дадено корисничко име или пак кои кориснички имиња ги користи дадена IP-адреса.",
+ "apihelp-query+checkuser-summary": "Провери кои IP-адреси ги користи дадено корисничко име или пак кои кориснички имиња ги користи дадена IP-адреса.",
"apihelp-query+checkuser-param-request": "Тип на барање со CheckUser:\n;userips: Дај IP-адреса на целен корисник.\n;edits: Дај промени од целна IP-адреса или опсег.\n;ipusers: Дај корисници од целна IP-адреса или опсег.",
"apihelp-query+checkuser-param-target": "Корисничко име, IP-адреса или CIDR-опсег за проверка.",
"apihelp-query+checkuser-param-reason": "Причина за проверката.",
"apihelp-query+checkuser-param-limit": "Ограничување на редовите.",
- "apihelp-query+checkuser-param-timecond": "Временско ограничување за корисничките податоци (како на пр. „2 недели“).",
+ "apihelp-query+checkuser-param-timecond": "Временско ограничување за корисничките податоци (како на пр. „-2 weeks“ или „2 weeks ago“).",
"apihelp-query+checkuser-param-xff": "Користи XFF-податоци наместо IP-адреса.",
"apihelp-query+checkuser-example-1": "Провери го [[User:Example]] по IP-адресите",
"apihelp-query+checkuser-example-2": "Провери ги уредувањата од 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Дај ставки од записникот на CheckUser.",
+ "apihelp-query+checkuserlog-summary": "Дај ставки од записникот на CheckUser.",
"apihelp-query+checkuserlog-param-user": "Кориснилчко име на проверувачот (CheckUser).",
"apihelp-query+checkuserlog-param-target": "Проверен корисник, IP-адреса или CIDR-опсег.",
"apihelp-query+checkuserlog-param-limit": "Ограничување на редовите.",
"apihelp-query+checkuserlog-param-from": "Од кој датум и време да почне набројувањето.",
"apihelp-query+checkuserlog-param-to": "На кој датум и време да запре набројувањето.",
"apihelp-query+checkuserlog-example-1": "Прикажи проверки на [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Прикажи проверки на 192.0.2.0/24 по 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Прикажи проверки на 192.0.2.0/24 по 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Мора да зададете причина за проверка.",
+ "apierror-checkuser-timelimit": "Ќе треба да употребите исправно временско ограничување (на пр. „-2 weeks“ „2 weeks ago“).",
+ "apierror-checkuser-invalidmode": "Неважечки режим на побарување"
}
diff --git a/CheckUser/i18n/ml.json b/CheckUser/i18n/ml.json
index d6286a1c..5b7ca3c5 100644
--- a/CheckUser/i18n/ml.json
+++ b/CheckUser/i18n/ml.json
@@ -67,12 +67,6 @@
"checkuser-ipeditcount": "~$1എല്ലാ ഉപയോക്താക്കളിൽ നിന്നും",
"checkuser-log-return": "ചെക്ക് യൂസറിന്റെ പ്രധാന ഫോമിലേക്ക് മാറുക",
"checkuser-limited": "'''പ്രവർത്തന മികവു സംബന്ധിച്ച പ്രശ്നങ്ങളാൽ ഫലങ്ങൾ വെട്ടിച്ചുരുക്കിയിരിക്കുന്നു.'''",
- "checkuser-log-userips": "$1 $2 എന്ന ഉപയോക്താവിന്റെ ഐ.പി.കൾ പരിശോധിച്ചു",
- "checkuser-log-ipedits": "$1 $2യുടെ തിരുത്തുകൾ പരിശോധിച്ചു.",
- "checkuser-log-ipusers": "$1നു $2ൽ ഉപയോക്താക്കൾ ഉണ്ട്",
- "checkuser-log-ipedits-xff": "$1 XFF $2ൽ തിരുത്തുകൾ പരിശോധിച്ചു",
- "checkuser-log-ipusers-xff": "$1നു XFF $2ൽ ഉപയോക്താക്കൾ ഉണ്ട്",
- "checkuser-log-useredits": "$2 നടത്തിയ തിരുത്തുകൾ $1 പിടിച്ചിരിക്കുന്നു",
"checkuser-autocreate-action": "സ്വയം സൃഷ്ടിച്ചതാണ്",
"checkuser-create-action": "സൃഷ്ടിച്ചിരിക്കുന്നു",
"checkuser-email-action": "\"$1\" എന്ന ഉപയോക്താവിന് ഇമെയിൽ അയച്ചുകഴിഞ്ഞു",
diff --git a/CheckUser/i18n/mn.json b/CheckUser/i18n/mn.json
index 39bd2e8a..edf29fb3 100644
--- a/CheckUser/i18n/mn.json
+++ b/CheckUser/i18n/mn.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Chinneeb"
+ "Chinneeb",
+ "Munkhzaya.E"
]
},
"checkuser": "Шалгагч хэрэглэгч",
@@ -9,8 +10,9 @@
"group-checkuser-member": "Шалгагч хэрэглэгч",
"grouppage-checkuser": "{{ns:project}}:Шалгагч хэрэглэгч",
"checkuser-reason": "Шалтгаан:",
- "checkuser-search": "Хайх",
"checkuser-all": "бүгдийг",
"checkuser-blocked": "Түгжигдсэн",
- "checkuser-search-submit": "Хайх"
+ "checkuser-search": "Хайх",
+ "checkuser-search-submit": "Хайх",
+ "checkuser-log-search-target": "Зорилго:"
}
diff --git a/CheckUser/i18n/mr.json b/CheckUser/i18n/mr.json
index 2e7f1c77..f4ea878c 100644
--- a/CheckUser/i18n/mr.json
+++ b/CheckUser/i18n/mr.json
@@ -4,7 +4,8 @@
"Htt",
"Kaustubh",
"Mahitgar",
- "V.narsikar"
+ "V.narsikar",
+ "McDutchie"
]
},
"checkuser-summary": "हे उपकरण अलीकडील बदलांमधून एखाद्या सदस्याने वापरलेले अंकपत्ते किंवा एखाद्या अंकपत्त्याची संपादने/सदस्य दाखविते.\nक्लायंट अंकपत्त्यावरील सदस्य अथवा संपादने पाहण्यासाठी अंकपत्त्यानंतर \"/xff\" द्यावे लागेल.\nIPv4 (CIDR $1-32) आणि IPv6 (CIDR $2-128) वापरता येऊ शकेल.\nएका वेळी ५००० पेक्षा जास्त संपादने दाखविली जाणार नाहीत. हे उपकरण पॉलिसीच्या नियमांना धरून वापरावे.",
@@ -23,13 +24,12 @@
"grouppage-checkuser": "{{ns:project}}:सदस्य तपासा",
"checkuser-reason": "कारण:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "लॉग दाखवा",
+ "checkuser-showlog": "चेकयूजर नोंदीकडे बदल् करा",
"checkuser-query": "अलीकडील बदल पृच्छा",
"checkuser-target": "सदस्य किंवा अंकपत्ता",
"checkuser-users": "सदस्य शोधा",
"checkuser-edits": "अंकपत्त्याची संपादने मिळवा",
"checkuser-ips": "अंकपत्ते शोधा",
- "checkuser-search": "शोधा",
"checkuser-period": "कालावधी:",
"checkuser-week-1": "मागील आठवडा",
"checkuser-week-2": "मागील दोन आठवडे",
@@ -37,6 +37,7 @@
"checkuser-all": "सर्व",
"checkuser-empty": "लॉग मध्ये एकही नोंद नाही",
"checkuser-nomatch": "नोंदी सापडल्या नाहीत",
+ "checkuser-nomatch-edits": "काहीच अनुरुपन सापडले नाही.\nशेवटले संपादन $2ला $1वर होते.",
"checkuser-check": "पडताळा",
"checkuser-log-fail": "लॉगमध्ये नोंद वाढविता आलेली नाही.",
"checkuser-nolog": "लॉग संचिका सापडलेली नाही.",
@@ -47,6 +48,8 @@
"checkuser-localonly": "एकीकृत नाही",
"checkuser-massblock": "निवडलेल्या सदस्यांना प्रतिबंधित करा",
"checkuser-massblock-text": "निवडलेली खाती ही बेमुदत प्रतिबंधित करण्यात येतील, ज्याने,त्यांचे अंकपत्ते स्वयंचलितरित्या अवरुद्ध होतील व ते येथे नविन खाते करू शकणार नाहीत.फक्त अनामिक सदस्यांसाठीच, अंकपत्ते एका आठवड्यासाठी प्रतिबंधित होतील व नविन खाते बनविणेही अवरुद्ध होईल.",
+ "checkuser-blockemail": "विपत्र पाठविण्यास अवरुद्ध करा",
+ "checkuser-blocktalk": "प्रतिबंधित असतांना त्यांची स्वतःची चर्चा पाने संपादन करण्यास अटकाव करा",
"checkuser-blocktag": "सदस्यपान याने बदला:",
"checkuser-blocktag-talk": "चर्चा पान याने बदला:",
"checkuser-massblock-commit": "निवडलेल्या सदस्यांना प्रतिबंधित करा",
@@ -58,21 +61,28 @@
"checkuser-accounts": "$1 नविन {{PLURAL:$1|खाते|खाती}}",
"checkuser-too-many": "(पृच्छा अनुमानापेक्षा) खूप निकाल आलेले आहेत, कृपया शोधशब्दांमध्ये योग्य बदल करा. खाली, वापरलेल्या अंकपत्त्यांची यादी आहे (जास्तीत जास्त ५०००, पत्यानूसार विल्हेवारीत):",
"checkuser-user-nonexistent": "हे सदस्यनाम अस्तित्त्वात नाही.",
- "checkuser-search-form": "अशा नोंदी शोधा जिथे $1 हा $2 आहे.",
+ "checkuser-search": "सदस्य तपास नोंदी शोधा",
"checkuser-search-submit": "शोधा",
"checkuser-search-initiator": "चालक (चालना देणारा)",
"checkuser-search-target": "लक्ष्य",
+ "checkuser-log-search-target": "लक्ष्य:",
+ "checkuser-log-search-type": "द्वारे शोध:",
"checkuser-ipeditcount": "~$1 सर्व सदस्यांकडून",
- "checkuser-log-return": "सदस्यतपासच्या मुख्य अर्जाकडे परत जा",
+ "checkuser-showmain": "सदस्यतपासच्या मुख्य अर्जाकडे परत जा",
"checkuser-limited": "'''उत्तम कामगिरी देण्यासाठीच्या कारणास्तव, निकालात काटछाट करण्यात आली आहे.'''",
- "checkuser-log-userips": "$1 कडे $2 साठीचे अंकपत्ते आहेत",
- "checkuser-log-ipedits": "$1 कडे $2 साठीची संपादने आहेत",
- "checkuser-log-ipusers": "$1 कडे $2 साठीचे सदस्य आहेत",
- "checkuser-log-ipedits-xff": "$1 कडे XFF $2 साठीची संपादने आहेत",
- "checkuser-log-ipusers-xff": "$1 कडे XFF $2 साठीचे सदस्य आहेत",
- "checkuser-log-useredits": "$1 कडे $2 साठीची संपादने आहेत",
+ "checkuser-log-entry-userips": "$3,$1ने $2साठी अंकपत्ते मिळविले",
+ "checkuser-log-entry-ipedits": "$3,$1ने $2साठी संपादने मिळविली",
+ "checkuser-log-entry-ipusers": "$3,$1ने $2साठी सदस्य मिळविले",
+ "checkuser-log-entry-useredits": "$3,$1ने $2साठी संपादने मिळविली",
"checkuser-autocreate-action": "आपोआप निर्माण केल्या गेले",
"checkuser-create-action": "निर्माण केल्या गेले",
"checkuser-email-action": "\"$1\"ला विपत्र पाठविले",
- "checkuser-reset-action": "सदस्य $1चा परवलीचा शब्द पुनर्स्थापित करा"
+ "checkuser-reset-action": "सदस्य $1चा परवलीचा शब्द पुनर्स्थापित करा",
+ "checkuser-token-fail": "सत्र अयशस्वी.कृपया पुन्हा प्रयत्न करा.",
+ "apihelp-query+checkuser-description": "दिलेले सदस्यनाव कोणते अंकपत्ते वापरते किंवा दिलेल्या अंकपत्त्याद्वारे कोणती सदस्यनावे वापरल्या जातात ते तपासा.",
+ "apihelp-query+checkuser-param-target": "तपासावयाचे सदस्यनाव, अंकपत्ता किंवा सीआयडीआर रेंज.",
+ "apihelp-query+checkuser-param-reason": "तपासण्याचे कारण.",
+ "apihelp-query+checkuser-param-limit": "ओळींची मर्यादा.",
+ "apihelp-query+checkuser-param-timecond": "सदस्यडाटाची काल मर्यादा(जसे \"-2 weeks\" किंवा \"2 weeks ago\").",
+ "apihelp-query+checkuserlog-param-limit": "ओळींची मर्यादा."
}
diff --git a/CheckUser/i18n/ms.json b/CheckUser/i18n/ms.json
index 6009d6a0..f2f679fe 100644
--- a/CheckUser/i18n/ms.json
+++ b/CheckUser/i18n/ms.json
@@ -68,12 +68,6 @@
"checkuser-ipeditcount": "~$1 daripada semua pengguna",
"checkuser-log-return": "Kembali ke borang utama CheckUser",
"checkuser-limited": "Hasil-hasil berikut telah dipendekkan atas sebab-sebab prestasi.",
- "checkuser-log-userips": "$1 mendapatkan senarai IP bagi $2",
- "checkuser-log-ipedits": "$1 mendapatkan senarai suntingan bagi $2",
- "checkuser-log-ipusers": "$1 mendapatkan senarai pengguna bagi $2",
- "checkuser-log-ipedits-xff": "$1 mendapatkan senarai suntingan bagi XFF $2",
- "checkuser-log-ipusers-xff": "$1 mendapatkan senarai pengguna bagi XFF $2",
- "checkuser-log-useredits": "$1 mendapatkan senarai suntingan bagi $2",
"checkuser-autocreate-action": "dicipta secara automatik",
"checkuser-create-action": "telah dicipta",
"checkuser-email-action": "hantar e-mel kepada \"$1\"",
diff --git a/CheckUser/i18n/mt.json b/CheckUser/i18n/mt.json
index e297c268..69696fe5 100644
--- a/CheckUser/i18n/mt.json
+++ b/CheckUser/i18n/mt.json
@@ -65,12 +65,6 @@
"checkuser-ipeditcount": "~$1 mill-utenti kollha",
"checkuser-log-return": "Dur għall-formola prinċipali tal-Kontroll tal-utenti",
"checkuser-limited": "'''Dawn ir-riżulati ġew imqassra għal raġunijiet ta' prestazzjoni.'''",
- "checkuser-log-userips": "$1 kiseb l-indirizzi IP ta' $2",
- "checkuser-log-ipedits": "$1 kiseb il-modifiki ta' $2",
- "checkuser-log-ipusers": "$1 kiseb l-utenti ta' $2",
- "checkuser-log-ipedits-xff": "$1 kiseb il-modifiki ta' $2 permezz ta' XFF",
- "checkuser-log-ipusers-xff": "$1 kiseb l-utenti ta' $2 permezz ta' XFF",
- "checkuser-log-useredits": "$1 kiseb il-modifiki ta' $2",
"checkuser-autocreate-action": "ġie maħluq awtomatikament",
"checkuser-create-action": "ġie maħluq",
"checkuser-email-action": "bagħat ittra-e lill-utent \"$1\"",
diff --git a/CheckUser/i18n/mwl.json b/CheckUser/i18n/mwl.json
new file mode 100644
index 00000000..6b6d0be5
--- /dev/null
+++ b/CheckUser/i18n/mwl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "MokaAkashiyaPT"
+ ]
+ },
+ "checkuser-userlinks": "([[User_talk:$1|cumbersa]] | [[Special:Contributions/$1|cuntribuiçones]] | [[Special:Block/$1|bloquiar]])"
+}
diff --git a/CheckUser/i18n/my.json b/CheckUser/i18n/my.json
new file mode 100644
index 00000000..e9bf0651
--- /dev/null
+++ b/CheckUser/i18n/my.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ninjastrikers"
+ ]
+ },
+ "checkuser-all": "အားလုံး",
+ "checkuser-search-submit": "ရှာဖွေရန်"
+}
diff --git a/CheckUser/i18n/nah.json b/CheckUser/i18n/nah.json
index b97f4ae2..9744e7e5 100644
--- a/CheckUser/i18n/nah.json
+++ b/CheckUser/i18n/nah.json
@@ -2,10 +2,11 @@
"@metadata": {
"authors": [
"Fluence",
- "Teòtlalili"
+ "Teòtlalili",
+ "Akapochtli"
]
},
"checkuser-reason": "Īxtlamatiliztli:",
- "checkuser-search": "Motèmòs",
- "checkuser-search-submit": "Motèmòs"
+ "checkuser-search": "Motemoz icalaquiyan CheckUser",
+ "checkuser-search-submit": "Tlatemoliztli"
}
diff --git a/CheckUser/i18n/nb.json b/CheckUser/i18n/nb.json
index 04815c6b..bf75a996 100644
--- a/CheckUser/i18n/nb.json
+++ b/CheckUser/i18n/nb.json
@@ -5,7 +5,9 @@
"Danmichaelo",
"Finnrind",
"Laaknor",
- "Nghtwlkr"
+ "Nghtwlkr",
+ "Jon Harald Søby",
+ "McDutchie"
]
},
"checkuser-summary": "Dette verktøyet går gjennom siste endringer for å hente IP-ene som er brukt av en bruker, eller viser redigerings- eller brukerinformasjonen for en IP.\n\nBrukere og redigeringer kan hentes med en XFF-IP ved å legge til «/xff» bak IP-en. IPv4 (CIDR $1-32) og IPv6 (CIDR $2-128) støttes.\n\nAv ytelsesgrunner vises maksimalt 5000 redigeringer. Bruk dette verktøyet i samsvar med retningslinjer.",
@@ -24,13 +26,12 @@
"grouppage-checkuser": "{{ns:project}}:IP-kontrollør",
"checkuser-reason": "Årsak:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Vis logg",
+ "checkuser-showlog": "Endre til IP-kontroll-logg",
"checkuser-query": "Søk i siste endringer",
"checkuser-target": "IP-adresse eller brukernavn:",
"checkuser-users": "Få brukere",
"checkuser-edits": "Hent redigeringer",
"checkuser-ips": "Få IP-er",
- "checkuser-search": "Søk",
"checkuser-period": "Varighet:",
"checkuser-week-1": "forrige uke",
"checkuser-week-2": "siste to uker",
@@ -51,6 +52,8 @@
"checkuser-localonly": "Ikke sammenslått",
"checkuser-massblock": "Blokker valgte brukere",
"checkuser-massblock-text": "Valgte kontoer vil blokkeres på ubestemt tid, med autoblokkering slått på og kontooppretting slått av.\nIP-adresser vil blokkeres i én uke for anonyme brukere, med kontooppretting slått av.",
+ "checkuser-blockemail": "Forhindre fra å sende epost",
+ "checkuser-blocktalk": "Forhindre fra å redigere deres egen diskusjonsside mens han/hun er blokkert",
"checkuser-blocktag": "Erstatt brukersider med:",
"checkuser-blocktag-talk": "Erstatt diskusjonssider med:",
"checkuser-massblock-commit": "Blokker valgte brukere",
@@ -58,25 +61,53 @@
"checkuser-block-failure": "'''Ingen brukere blokkert.'''",
"checkuser-block-limit": "For mange brukere valgt.",
"checkuser-block-noreason": "Du må oppgi en blokkeringsgrunn.",
+ "checkuser-centralauth-multilock": "Lås flere valgte kontoer",
"checkuser-noreason": "Du må oppgi en grunn for denne spørringen.",
"checkuser-accounts": "$1 {{PLURAL:$1|ny konto|nye kontoer}}",
"checkuser-too-many": "For mange resultater (ifølge overslag for spørringen), vennligst innskrenk CIDR.\nHer er de brukte IP-ene (maks 5000, sortert etter adresse):",
"checkuser-user-nonexistent": "Det gitte brukernavnet finnes ikke.",
- "checkuser-search-form": "Finn loggelementer der $1 er $2",
+ "checkuser-search": "Søk i IP-kontroll-loggoppføringer",
"checkuser-search-submit": "Søk",
"checkuser-search-initiator": "IP-kontrolløren",
"checkuser-search-target": "målet",
+ "checkuser-log-search-target": "Mål:",
+ "checkuser-log-search-type": "Søk etter:",
"checkuser-ipeditcount": "~$1 fra alle brukere",
- "checkuser-log-return": "Gå til hovedskjemaet for CheckUser",
+ "checkuser-showmain": "Gå til hovedskjemaet for CheckUser",
"checkuser-limited": "'''Disse resultatene har blitt avkortet av ytelsesgrunner.'''",
- "checkuser-log-userips": "$1 fikk IP-adressene til $2",
- "checkuser-log-ipedits": "$1 fikk endringer av $2",
- "checkuser-log-ipusers": "$1 fikk brukere av $2",
- "checkuser-log-ipedits-xff": "$1 fikk endringer av XFF-en $2",
- "checkuser-log-ipusers-xff": "$1 fikk brukere av XFF-en $2",
- "checkuser-log-useredits": "$1 hentet redigeringer for $2",
+ "checkuser-log-entry-userips": "$3, $1 hentet IP-adresser for $2",
+ "checkuser-log-entry-ipedits": "$3, $1 hentet redigeringer for $2",
+ "checkuser-log-entry-ipusers": "$3, $1 hentet brukere for $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 hentet redigeringer for XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 hentet brukere for XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 hentet redigeringer for $2",
"checkuser-autocreate-action": "ble automatisk opprettet",
"checkuser-create-action": "ble opprettet",
"checkuser-email-action": "sendte e-post til «$1»",
- "checkuser-reset-action": "nullstilte passord for «$1»"
+ "checkuser-reset-action": "nullstilte passord for «$1»",
+ "checkuser-userlinks-ip": "([[User_talk:$1|diskusjon]] | [[Special:Contributions/$1|bidrag]] | [[Special:Block/$1|blokker]] | <span class=\"plainlinks\">[https://www.robtext.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|diskusjon]] | [[Special:Contributions/$1|bidrag]] | [[Special:Block/$1|blokker]])",
+ "checkuser-token-fail": "Øktfeil. Prøv igjen.",
+ "apihelp-query+checkuser-description": "Sjekk hvilke IP-adresser som er brukt av et gitt brukernavn eller hvilke brukernavn som brukes av en gitt IP-adresse.",
+ "apihelp-query+checkuser-summary": "Sjekk hvilke IP-adresser som brukes av et gitt brukernavn eller hvilke brukernavn som brukes av ei gitt IP-adresse.",
+ "apihelp-query+checkuser-param-request": "Type IP-kontrollforespørsel:\n;userips:Hent IP-adresse for målbrukeren.\n;edits:Hent endringer fra mål-IP-en.\n;ipusers:Hent brukere fra mål-IP-en.",
+ "apihelp-query+checkuser-param-target": "Brukernavn, IP-adresse eller CIDR-område å sjekke.",
+ "apihelp-query+checkuser-param-reason": "Årsak for kontrollen.",
+ "apihelp-query+checkuser-param-limit": "Begrensning av rader.",
+ "apihelp-query+checkuser-param-timecond": "Tidsgrense for brukerdata (som «-2 weeks» eller «2 weeks ago»).",
+ "apihelp-query+checkuser-param-xff": "Bruk XFF-data i stedet for IP-adresse.",
+ "apihelp-query+checkuser-example-1": "Sjekk IP-adresser for [[User:Example]]",
+ "apihelp-query+checkuser-example-2": "Sjekk redigeringer fra 192.0.2.0/24",
+ "apihelp-query+checkuserlog-description": "Hent oppføringer fra IP-kontroll-loggen.",
+ "apihelp-query+checkuserlog-summary": "Hent oppføringer fra IP-kontroll-loggen.",
+ "apihelp-query+checkuserlog-param-user": "Brukernavnet til IP-kontrolløren.",
+ "apihelp-query+checkuserlog-param-target": "Sjekket bruker, IP-adresse eller CIDR-område.",
+ "apihelp-query+checkuserlog-param-limit": "Begrensning av rader.",
+ "apihelp-query+checkuserlog-param-from": "Tidsstempelet det skal startes fra.",
+ "apihelp-query+checkuserlog-param-to": "Tidsstempelet det skal sluttes på.",
+ "apihelp-query+checkuserlog-example-1": "Vis sjekker av [[User:Example]]",
+ "apihelp-query+checkuserlog-example-2": "Vis sjekker av 192.0.2.0/24 etter 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Du må angi en årsak for sjekken.",
+ "apierror-checkuser-timelimit": "Du må bruke en korrekt tidsgrense (som «-2 weeks» eller «2 weeks ago»).",
+ "apierror-checkuser-invalidmode": "Ugyldig forespørselsmodus"
}
diff --git a/CheckUser/i18n/nds.json b/CheckUser/i18n/nds.json
index 8c2db5ca..b6381fd7 100644
--- a/CheckUser/i18n/nds.json
+++ b/CheckUser/i18n/nds.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Slomox"
+ "Slomox",
+ "Joachim Mos"
]
},
"checkuser-summary": "Dit Warktüüch dörsöcht de lesten Ännern na de IP-Adressen, de en Bruker bruukt hett, oder na de Ännern un Brukernaams, de vun en bestimmte IP maakt/bruukt worrn sünd.\nBrukers un Ännern vun XFF-IPs ut köönt ankeken warrn, wenn „/xff“ achter de IP toschreven warrt. IPv4 (CIDR $1-32) un IPv6 (CIDR $2-128) warrt all beid ünnerstütt.\nDe Maximaltall vun trüchlevert Ännern is 5000.\nDit Warktüüch dröff blot na de Regeln mit de Richtlienen bruukt warrn.",
@@ -11,18 +12,17 @@
"checkuserlog": "Checkuser-Logbook",
"checkuser-contribs": "IP-Adressen vun Bruker prüfen",
"group-checkuser": "Brukers nakieken",
- "group-checkuser-member": "Bruker nakieken",
+ "group-checkuser-member": "{{GENDER:$1|Bruker nakieken}}",
"right-checkuser": "IP-Adressen un annere Infos vun Brukers bekieken",
"right-checkuser-log": "Checkuser-Logbook ankieken",
"grouppage-checkuser": "{{ns:project}}:Checkuser",
"checkuser-reason": "Grund:",
"checkuser-showlog": "Logbook wiesen",
"checkuser-query": "Toletzt ännert affragen",
- "checkuser-target": "Bruker oder IP",
+ "checkuser-target": "IP-Adress oder Brukernaam:",
"checkuser-users": "Brukers kriegen",
"checkuser-edits": "Ännern vun IP-Adress wiesen",
"checkuser-ips": "IPs kriegen",
- "checkuser-search": "Söken",
"checkuser-period": "Duur:",
"checkuser-week-1": "leste Week",
"checkuser-week-2": "leste twee Weken",
@@ -53,19 +53,13 @@
"checkuser-accounts": "$1 {{PLURAL:$1|nee Brukerkonto|ne’e Brukerkonten}}",
"checkuser-too-many": "To veel funnen, grenz de IP-Reeg wieder in. Dit sünd de bruukten IP-Adressen (maximal 5000, sorteert na Adress):",
"checkuser-user-nonexistent": "Den angevene Bruker gifft dat nich.",
- "checkuser-search-form": "Söök na Logbook-Indrääg, bi de $1 $2 is.",
+ "checkuser-search": "Söken",
"checkuser-search-submit": "Söök",
"checkuser-search-initiator": "Initiater",
"checkuser-search-target": "Ziel",
"checkuser-ipeditcount": "~$1 vun all Brukers",
- "checkuser-log-return": "Trüch na dat CheckUser-Hööftformular",
+ "checkuser-showmain": "Trüch na dat CheckUser-Hööftformular",
"checkuser-limited": "'''De List mit Resultaten is to lang wesen un körter maakt worrn.'''",
- "checkuser-log-userips": "$1 hett IP-Adressen för $2 rutsöcht",
- "checkuser-log-ipedits": "$1 hett Ännern vun $2 rutsöcht",
- "checkuser-log-ipusers": "$1 hett Brukers för $2 rutsöcht",
- "checkuser-log-ipedits-xff": "$1 hett Ännern för de XFF-IP $2 rutsöcht",
- "checkuser-log-ipusers-xff": "$1 hett Brukers för de XFF-IP $2 rutsöcht",
- "checkuser-log-useredits": "$1 hett Ännern för $2 haalt",
"checkuser-autocreate-action": "automaatsch opstellt",
"checkuser-email-action": "hett Bruker „$1“ en E-Mail tostüürt",
"checkuser-reset-action": "hett en nee Passwoord för Bruker „$1“ feddert"
diff --git a/CheckUser/i18n/ne.json b/CheckUser/i18n/ne.json
index 489f450f..65c727e2 100644
--- a/CheckUser/i18n/ne.json
+++ b/CheckUser/i18n/ne.json
@@ -46,7 +46,6 @@
"checkuser-wasblocked": "पछिल्लो निषेधित",
"checkuser-localonly": "एकीकृत छैन",
"checkuser-search-submit": "खोज",
- "checkuser-log-userips": "$2को लागि $1 आइ पी ठेगाना पाइयो",
"apihelp-query+checkuser-param-reason": "जाँच्ने कारण।",
"apihelp-query+checkuser-param-limit": "पङ्क्तिहरूको सीमा।",
"apihelp-query+checkuserlog-param-user": "प्रयोगकर्ताजाँचको प्रयोगकर्ता नाम।",
diff --git a/CheckUser/i18n/nl.json b/CheckUser/i18n/nl.json
index 25982f14..aa38e3ec 100644
--- a/CheckUser/i18n/nl.json
+++ b/CheckUser/i18n/nl.json
@@ -4,7 +4,10 @@
"Erwin",
"SPQRobin",
"Siebrand",
- "Troefkaart"
+ "Troefkaart",
+ "Sjoerddebruin",
+ "Akoopal",
+ "Mainframe98"
]
},
"checkuser-summary": "Dit hulpmiddel bekijkt recente wijzigingen om IP-adressen die een gebruiker heeft gebruikt te achterhalen of geeft de bewerkings- en gebruikersgegegevens weer voor een IP-adres.\nGebruikers en bewerkingen van een IP-adres van een client kunnen achterhaald worden via XFF-headers door \"/xff\" achter het IP-adres toe te voegen. IPv4 (CIDR $1-32) en IPv6 (CIDR $2-128) worden ondersteund.\nOm prestatieredenen worden niet meer dan 5.000 bewerkingen weergegeven.\nGebruik dit hulpmiddel volgens het vastgestelde beleid.",
@@ -23,19 +26,18 @@
"grouppage-checkuser": "{{ns:project}}:Controlegebruiker",
"checkuser-reason": "Reden:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Logboek weergeven",
+ "checkuser-showlog": "CheckUser-logboek weergeven",
"checkuser-query": "Bevraag recente wijzigingen",
"checkuser-target": "IP-adres of gebruikersnaam:",
"checkuser-users": "Gebruikers opvragen",
"checkuser-edits": "Bewerkingen opvragen",
"checkuser-ips": "IP-adressen opvragen",
- "checkuser-search": "Zoeken",
"checkuser-period": "Duur:",
"checkuser-week-1": "laatste week",
"checkuser-week-2": "laatste twee weken",
"checkuser-month": "laatste 30 dagen",
"checkuser-all": "alle",
- "checkuser-cidr-label": "Gemeenschappelijke reeks en getroffen adressen zoeken uit een lijst van IP-adressen",
+ "checkuser-cidr-label": "Gemeenschappelijke range en getroffen adressen zoeken uit een lijst van IP-adressen",
"checkuser-cidr-res": "Gemeenschappelijke CIDR:",
"checkuser-empty": "Het logboek bevat geen regels.",
"checkuser-nomatch": "Geen overeenkomsten gevonden.",
@@ -50,6 +52,8 @@
"checkuser-localonly": "Niet samengevoegd",
"checkuser-massblock": "Geselecteerde gebruikers blokkeren",
"checkuser-massblock-text": "De geselecteerde gebruikers worden voor onbepaalde tijd geblokkeerd, met automatische IP-adresblokkade ingeschakeld en het aanmaken van nieuwe gebruikers uitgeschakeld.\nIP-adressen worden één week geblokkeerd voor anonieme gebruikers, met het aanmaken van nieuwe gebruikers uitgeschakeld.",
+ "checkuser-blockemail": "Gebruiker weerhouden van het sturen van e-mail",
+ "checkuser-blocktalk": "Voorkomen dat deze gebruiker tijdens de blokkade de eigen overlegpagina kan bewerken",
"checkuser-blocktag": "Gebruikerspagina's vervangen door:",
"checkuser-blocktag-talk": "Overlegpagina's vervangen door:",
"checkuser-massblock-commit": "Geselecteerde gebruikers blokkeren",
@@ -57,43 +61,49 @@
"checkuser-block-failure": "'''Geen gebruikers geblokkeerd.'''",
"checkuser-block-limit": "Te veel gebruikers geselecteerd.",
"checkuser-block-noreason": "U moet een reden opgeven voor de blokkades.",
+ "checkuser-centralauth-multilock": "Lock alle geselecteerde gebruikers",
"checkuser-noreason": "U moet een reden opgeven voor deze zoekopdracht.",
"checkuser-accounts": "$1 nieuwe {{PLURAL:$1|gebruiker|gebruikers}}",
"checkuser-too-many": "Te veel resultaten (volgens de schatting). Maak de CIDR kleiner:\nHieronder worden de gebruikte IP-adressen weergegeven (maximaal 5000, op IP-adres gesorteerd):",
"checkuser-user-nonexistent": "De opgegeven gebruiker bestaat niet.",
- "checkuser-search-form": "Logboekregels zoeken waar de $1 $2 is",
+ "checkuser-search": "Checkuserlogboekregels doorzoeken",
"checkuser-search-submit": "Zoeken",
"checkuser-search-initiator": "aanvrager",
"checkuser-search-target": "onderwerp",
+ "checkuser-log-search-target": "Doel:",
+ "checkuser-log-search-type": "Zoeken op:",
"checkuser-ipeditcount": "~$1 van alle gebruikers",
- "checkuser-log-return": "Naar het hoofdformulier van GebruikerControleren gaan",
+ "checkuser-showmain": "Naar het hoofdformulier van GebruikerControleren gaan",
"checkuser-limited": "'''Deze resultaten zijn niet volledig om prestatieredenen.'''",
- "checkuser-log-userips": "$1 heeft de IP-adressen voor $2 opgevraagd",
- "checkuser-log-ipedits": "$1 heeft de bewerkingen door $2 opgevraagd",
- "checkuser-log-ipusers": "$1 heeft de gebruikers voor $2 opgevraagd",
- "checkuser-log-ipedits-xff": "$1 heeft de bewerkingen door XFF $2 opgevraagd",
- "checkuser-log-ipusers-xff": "$1 heeft de gebruikers van XFF $2 opgevraagd",
- "checkuser-log-useredits": "$1 heeft de bewerkingen door $2 opgevraagd",
+ "checkuser-log-entry-userips": "$3, $1 heeft IP-adressen opgevraagd voor $2",
+ "checkuser-log-entry-ipedits": "$3, $1 heeft bewerkingen opgevraagd voor $2",
+ "checkuser-log-entry-ipusers": "$3, $1 heeft gebruikers opgevraagd voor $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 heeft bewerkingen opgevraagd voor XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 heeft gebruikers opgevraagd voor XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 heeft bewerkingen opgevraagd voor $2",
"checkuser-autocreate-action": "is automatisch aangemaakt",
"checkuser-create-action": "is aangemaakt",
"checkuser-email-action": "heeft een e-mail gestuurd aan \"$1\"",
"checkuser-reset-action": "heeft het wachtwoord voor gebruiker \"$1\" opnieuw ingesteld",
+ "checkuser-userlinks-ip": "([[User_talk:$1|overleg]] | [[Special:Contributions/$1|bijdragen]] | [[Special:Block/$1|blokkeren]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|overleg]] | [[Special:Contributions/$1|bijdragen]] | [[Special:Block/$1|blokkeren]])",
"checkuser-token-fail": "Sessie is mislukt. Probeer het opnieuw.",
"apihelp-query+checkuser-description": "Controleer welke IP-adressen gebruikt worden door een opgegeven gebruikersnaam of welke gebruikersnamen worden gebruikt door een opgegeven IP-adres.",
"apihelp-query+checkuser-param-request": "Type van het CheckUserverzoek:\n;userips:IP-adres van de doelgebruiker ophalen.\n;edits:Wijzigingen van IP-adres of IP-adresreeks ophalen.\n;ipusers:Gebruikers van IP-adres of IP-adresreeks ophalen.",
- "apihelp-query+checkuser-param-target": "Gebruikersnaam, IP-adres, of te controleren CIDR-reeks.",
+ "apihelp-query+checkuser-param-target": "Gebruikersnaam, IP-adres, of te controleren CIDR-range.",
"apihelp-query+checkuser-param-reason": "Reden voor controleren.",
"apihelp-query+checkuser-param-limit": "Limiet voor rijen.",
- "apihelp-query+checkuser-param-timecond": "Tijdslimiet voor gebruikersgegevens, bijvoorbeeld \"2 weeks\".",
+ "apihelp-query+checkuser-param-timecond": "Tijdslimiet voor gebruikersgegevens, bijvoorbeeld \"-2 weeks\" of \"2 weeks ago\".",
"apihelp-query+checkuser-param-xff": "XFF-gegevens gebruiken in plaats van IP-adres.",
"apihelp-query+checkuser-example-1": "IP-adressen controleren voor [[User:Example]].",
"apihelp-query+checkuser-example-2": "Bewerkingen controleren voor 192.0.2.0/24.",
"apihelp-query+checkuserlog-description": "Regels uit het CheckUserlogboek ophalen.",
"apihelp-query+checkuserlog-param-user": "Naam van de gebruiker met CheckUserrechten.",
- "apihelp-query+checkuserlog-param-target": "Gebruiker, IP-adres of CIDR-reeks gecontroleerd.",
+ "apihelp-query+checkuserlog-param-target": "Gebruiker, IP-adres of CIDR-range gecontroleerd.",
"apihelp-query+checkuserlog-param-limit": "Limiet voor rijen.",
"apihelp-query+checkuserlog-param-from": "Het tijdstip waar de opsomming begint.",
"apihelp-query+checkuserlog-param-to": "Het tijdstip waar de opsomming eindigt.",
"apihelp-query+checkuserlog-example-1": "Controles van [[User:Example]] weergeven.",
- "apihelp-query+checkuserlog-example-2": "Controles van 192.0.2.0/24 na 2011-10-15T23:00:00Z weergeven."
+ "apihelp-query+checkuserlog-example-2": "Controles van 192.0.2.0/24 na 2011-10-15T23:00:00Z weergeven.",
+ "apierror-checkuser-missingsummary": "U moet een reden opgeven voor deze controle."
}
diff --git a/CheckUser/i18n/nn.json b/CheckUser/i18n/nn.json
index 6e85e979..6252438b 100644
--- a/CheckUser/i18n/nn.json
+++ b/CheckUser/i18n/nn.json
@@ -68,12 +68,6 @@
"checkuser-ipeditcount": "~$1 frå alle brukarar",
"checkuser-log-return": "Byt til hovudskjemaet for CheckUser",
"checkuser-limited": "'''Desse resultata har vortne avkorta av ytegrunnar.'''",
- "checkuser-log-userips": "$1 fekk IP-adressene til $2",
- "checkuser-log-ipedits": "$1 fekk endringar av $2",
- "checkuser-log-ipusers": "$1 fekk brukarar av $2",
- "checkuser-log-ipedits-xff": "$1 fekk endringar av XFF-en $2",
- "checkuser-log-ipusers-xff": "$1 fekk brukarar av XFF-en $2",
- "checkuser-log-useredits": "$1 henta endringar for $2",
"checkuser-autocreate-action": "vart automatisk oppretta",
"checkuser-create-action": "vart oppretta",
"checkuser-email-action": "sendte e-post til «$1»",
diff --git a/CheckUser/i18n/oc.json b/CheckUser/i18n/oc.json
index 8baa075a..1243a80b 100644
--- a/CheckUser/i18n/oc.json
+++ b/CheckUser/i18n/oc.json
@@ -5,7 +5,7 @@
"Cedric31"
]
},
- "checkuser-summary": "Aquesta aisina passa en revista los cambiaments recents per recercar l'IPS emplegada per un utilizaire, mostrar totas las edicions fachas per una IP, o per enumerar los utilizaires qu'an emplegat las IPs. Los utilizaires e las modificacions pòdon èsser trobatss amb una IP XFF se s'acaba amb « /xff ». IPv4 (CIDR $1-32) e IPv6(CIDR $2-128) son suportats. Emplegatz aquò segon las cadenas de caractèrs.",
+ "checkuser-summary": "Aquesta aisina passa en revista los cambiaments recents per recercar l'IPS emplegada per un utilizaire, mostrar totas las edicions faitas per una IP, o per enumerar los utilizaires qu'an emplegat las IPs. Los utilizaires e las modificacions pòdon èsser trobats amb una IP XFF se s'acaba amb « /xff ». IPv4 (CIDR $1-32) e IPv6(CIDR $2-128) son suportats. Emplegatz aquò segon las cadenas de caractèrs.",
"checkuser-desc": "Balha la possibilitat a las personas exprèssament autorizadas de verificar las adreças IP dels utilizaires e mai d’autras entresenhas los concernent",
"checkuser-logcase": "La recèrca dins lo Jornal es sensibla a la cassa.",
"checkuser": "Verificator d’utilizaire",
@@ -18,13 +18,12 @@
"grouppage-checkuser": "{{ns:project}}:Verificator d’utilizaire",
"checkuser-reason": "Motiu :",
"checkuser-reason-api": "API : $1",
- "checkuser-showlog": "Afichar lo jornal",
+ "checkuser-showlog": "Bascular sul jornal CheckUser",
"checkuser-query": "Recèrca dels darrièrs cambiaments",
"checkuser-target": "Nom d'utilizaire o adreça IP :",
"checkuser-users": "Obténer los utilizaires",
"checkuser-edits": "Obténer las modificacions",
"checkuser-ips": "Obténer las adreças IP",
- "checkuser-search": "Recèrca",
"checkuser-period": "Durada :",
"checkuser-week-1": "darrièra setmana",
"checkuser-week-2": "las doas darrièras setmanas",
@@ -36,11 +35,11 @@
"checkuser-nomatch": "Recèrcas infructuosas.",
"checkuser-nomatch-edits": "Cap d'ocurréncia pas trobada.\nLa darrièra modificacion èra lo $1 a $2.",
"checkuser-check": "Recèrca",
- "checkuser-log-fail": "Incapable d'apondre l'entrada del jornal.",
+ "checkuser-log-fail": "Impossible d'apondre l'entrada del jornal.",
"checkuser-nolog": "Cap de fichièr jornal pas trobat.",
"checkuser-blocked": "Blocat",
"checkuser-gblocked": "Globalament blocat",
- "checkuser-locked": "Varrolhat",
+ "checkuser-locked": "Verrolhat",
"checkuser-wasblocked": "Blocat precedentament",
"checkuser-localonly": "Pas unificat",
"checkuser-massblock": "Utilizaires de la plaja seleccionada",
@@ -54,21 +53,15 @@
"checkuser-block-noreason": "Vos cal especificar un motiu pels blocatges.",
"checkuser-noreason": "Vos cal balhar una rason per aquesta requèsta.",
"checkuser-accounts": "$1 {{PLURAL:$1|compte novèl|comptes novèls}}",
- "checkuser-too-many": "Tròp de resultats (segon l'estimacion de la requèsta), afinatz l’espandida CIDR.\nVaquí un extrach de las IP utilizadas ({{formatnum:5000}} maximum, triadas per adreça) :",
+ "checkuser-too-many": "Tròp de resultats (segon l'estimacion de la requèsta), afinatz l’espandida CIDR.\nVaquí un extrait de las adreças IP utilizadas ({{formatnum:5000}} maximum, triadas per adreça) :",
"checkuser-user-nonexistent": "L’utilizaire indicat existís pas",
- "checkuser-search-form": "Cercar lo jornal de las entradas ont $1 es $2.",
+ "checkuser-search": "Recercar las entradas de jornal de verificacion utilizaire",
"checkuser-search-submit": "Recercar",
"checkuser-search-initiator": "l’iniciaire",
"checkuser-search-target": "la cibla",
"checkuser-ipeditcount": "~$1 per totes los utilizaires",
- "checkuser-log-return": "Bascuolar cap al formulari principal del verificator d'utilizaire",
+ "checkuser-showmain": "Bascuolar cap al formulari principal del verificator d'utilizaire",
"checkuser-limited": "'''Aquestes resultats son estats troncats per de rasons ligadas a la performància.'''",
- "checkuser-log-userips": "$1 a obtengut d'IP per $2",
- "checkuser-log-ipedits": "$1 a obtengut de modificacions per $2",
- "checkuser-log-ipusers": "$1 a obtengut d'utilizaires per $2",
- "checkuser-log-ipedits-xff": "$1 a obtengut de modificacions per XFF $2",
- "checkuser-log-ipusers-xff": "$1 a obtengut d'utilizaires per XFF $2",
- "checkuser-log-useredits": "$1 a obtengut las modificacions per $2",
"checkuser-autocreate-action": "es estat creat automaticament",
"checkuser-create-action": "es estat creat",
"checkuser-email-action": "a mandat un corrièr electronic a « $1 »",
diff --git a/CheckUser/i18n/or.json b/CheckUser/i18n/or.json
index ecc48a64..3ac10ade 100644
--- a/CheckUser/i18n/or.json
+++ b/CheckUser/i18n/or.json
@@ -63,12 +63,6 @@
"checkuser-search-target": "ଲକ୍ଷ",
"checkuser-ipeditcount": "ସବୁ ବ୍ୟବହରକାରୀଙ୍କ ଠାରୁ ~$1",
"checkuser-log-return": "CheckUser ମୂଳ ଆବେଦନ ପତ୍ରକୁ ଫେରିଯାନ୍ତୁ",
- "checkuser-log-userips": "$1ଙ୍କ ପାଖରେ $2 ପାଇଁ IP ଠିକଣା ରହିଛି",
- "checkuser-log-ipedits": "$1, $2ଙ୍କ ପାଇଁ ସମ୍ପାଦନା କରିଛନ୍ତି",
- "checkuser-log-ipusers": "$1ରେ $2 ପାଇଁ ବ୍ୟବହାରକାରୀ ଅଛନ୍ତି",
- "checkuser-log-ipedits-xff": "$1 XFF $2 ପାଇଁ ସମ୍ପାଦନା କରିଛନ୍ତି",
- "checkuser-log-ipusers-xff": "$1ରେ XFF $2 ପାଇଁ ସମ୍ପାଦନା ଅଛି",
- "checkuser-log-useredits": "$1ରେ $2ପାଇଁ ସମ୍ପାଦନା ଅଛି",
"checkuser-autocreate-action": "ଆପେଆପେ ଗଢ଼ାହୋଇଥିଲା",
"checkuser-create-action": "ଗଢ଼ାଗଲା",
"checkuser-email-action": "\"$1\"ଙ୍କୁ ଇମେଲଟିଏ ପଠାଗଲା",
diff --git a/CheckUser/i18n/pl.json b/CheckUser/i18n/pl.json
index 64c422c6..b97ba917 100644
--- a/CheckUser/i18n/pl.json
+++ b/CheckUser/i18n/pl.json
@@ -31,13 +31,12 @@
"grouppage-checkuser": "{{ns:project}}:CheckUser",
"checkuser-reason": "Powód",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Pokaż rejestr",
+ "checkuser-showlog": "Przełącz na rejestr CheckUserów",
"checkuser-query": "Przeanalizuj ostatnie zmiany",
"checkuser-target": "Adres IP lub nazwa użytkownika",
"checkuser-users": "Znajdź użytkowników",
"checkuser-edits": "Pokaż edycje",
"checkuser-ips": "Znajdź adresy IP",
- "checkuser-search": "Szukaj",
"checkuser-period": "Okres",
"checkuser-week-1": "ostatni tydzień",
"checkuser-week-2": "ostatnie dwa tygodnie",
@@ -58,6 +57,8 @@
"checkuser-localonly": "Nie posiada konta uniwersalnego",
"checkuser-massblock": "Blokowanie wybranych użytkowników",
"checkuser-massblock-text": "Wybrane konta zostaną zablokowane na zawsze (z włączoną funkcją automatycznego blokowania adresów IP, spod których łączą się te konta oraz wyłączoną funkcją zapobiegania utworzenia konta).\nAdresy IP anonimowych użytkowników będą blokowane na 1 tydzień, możliwość utworzenia konta zostanie również zablokowana.",
+ "checkuser-blockemail": "Zablokuj możliwość wysyłania e‐mailów",
+ "checkuser-blocktalk": "Zablokuj możliwość edytowania przez tego użytkownika własnej strony dyskusji w czasie trwania blokady",
"checkuser-blocktag": "Podmień strony blokowanych użytkowników na",
"checkuser-blocktag-talk": "Podmień strony dyskusji blokowanych użytkowników na",
"checkuser-massblock-commit": "Zablokuj wybranych użytkowników",
@@ -65,34 +66,39 @@
"checkuser-block-failure": "'''Nie udało się zablokować użytkowników.'''",
"checkuser-block-limit": "Wybrano zbyt wielu użytkowników.",
"checkuser-block-noreason": "Należy podać powód blokad.",
+ "checkuser-centralauth-multilock": "Zablokuj wybrane konta",
"checkuser-noreason": "Musisz podać powód wykonania zapytania.",
"checkuser-accounts": "$1 {{PLURAL:$1|nowe konto|nowe konta|nowych kont}}",
"checkuser-too-many": "System oszacował, że zapytanie zwróci zbyt wiele wyników; spróbuj zawęzić zakres CIDR.\n\nPoniżej wyświetlono pierwszych 5000 adresów IP (posortowane według adresu):",
"checkuser-user-nonexistent": "Taki użytkownik nie istnieje.",
- "checkuser-search-form": "Szukaj wpisów w rejestrze, dla których $1 odpowiadał $2",
+ "checkuser-search": "Szukaj w rejestrze checkuserów",
"checkuser-search-submit": "Szukaj",
"checkuser-search-initiator": "sprawdzającym",
"checkuser-search-target": "sprawdzanym",
+ "checkuser-log-search-target": "Cel:",
+ "checkuser-log-search-type": "Szukaj według:",
"checkuser-ipeditcount": "~$1 od wszystkich użytkowników",
- "checkuser-log-return": "Przejdź do głównego formularza CheckUser",
+ "checkuser-showmain": "Przejdź do głównego formularza CheckUser",
"checkuser-limited": "'''Długość listy wyników została ograniczona ze względu na wydajność.'''",
- "checkuser-log-userips": "$1 otrzymał adresy IP używane przez $2",
- "checkuser-log-ipedits": "$1 otrzymał historię edycji dla $2",
- "checkuser-log-ipusers": "$1 otrzymał listę użytkowników korzystających z adresu IP $2",
- "checkuser-log-ipedits-xff": "$1 otrzymał listę edycji dla XFF $2",
- "checkuser-log-ipusers-xff": "$1 otrzymał listę użytkowników dla XFF $2",
- "checkuser-log-useredits": "$1 otrzymał historię edycji wykonane przez $2",
+ "checkuser-log-entry-userips": "$3, $1 otrzymał adresy IP używane przez $2",
+ "checkuser-log-entry-ipedits": "$3, $1 otrzymał historię edycji dla $2",
+ "checkuser-log-entry-ipusers": "$3, $1 otrzymał listę użytkowników korzystających z adresu IP $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 otrzymał listę edycji dla XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 otrzymał listę użytkowników dla XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 otrzymał historię edycji wykonanych przez $2",
"checkuser-autocreate-action": "został automatycznie utworzony",
"checkuser-create-action": "utworzono",
"checkuser-email-action": "wysłał e‐mail do użytkownika „$1”",
"checkuser-reset-action": "reset hasła dla użytkownika „$1”",
+ "checkuser-userlinks-ip": "([[User_talk:$1|dyskusja]] | [[Special:Contributions/$1|wkład]] | [[Special:Block/$1|zablokuj]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|dyskusja]] | [[Special:Contributions/$1|edycje]] | [[Special:Block/$1|zablokuj]])",
"checkuser-token-fail": "Awaria sesji. Spróbuj jeszcze raz.",
"apihelp-query+checkuser-description": "Umożliwia sprawdzenie, z których adresów IP edytował zadany użytkownik lub odnalezienie nazw użytkowników korzystających z zadanego adresu IP.",
"apihelp-query+checkuser-param-request": "Rodzaj zapytania checkuser:\n;userips: Pobierz adresy IP zadanego użytkownika\n;edits: Pobierz edycje z zadanego adresu IP lub ich zakresu\n;ipusers: Pobierz nazwy użytkowników dla zadanego adresu IP lub ich zakresu",
"apihelp-query+checkuser-param-target": "Nazwa użytkownika, adres IP lub zakres CIDR do sprawdzenia.",
"apihelp-query+checkuser-param-reason": "Powód dla sprawdzenia",
"apihelp-query+checkuser-param-limit": "Limit liczby zwróconych wierszy",
- "apihelp-query+checkuser-param-timecond": "Przedział czasowy dla pobierancych danych (np. \"2 weeks\" dla ostatnich dwóch tygodni)",
+ "apihelp-query+checkuser-param-timecond": "Przedział czasowy dla pobieranych danych (np. \"-2 weeks\" lub \"2 weeks ago\" dla ostatnich dwóch tygodni)",
"apihelp-query+checkuser-param-xff": "Sprawdź nagłówki XFF zamiast rzeczywistego adresu IP",
"apihelp-query+checkuser-example-1": "Sprawdź adresy IP dla [[User:Example]]",
"apihelp-query+checkuser-example-2": "Pobierz edycje dla zakresu 192.0.2.0/24",
diff --git a/CheckUser/i18n/pms.json b/CheckUser/i18n/pms.json
index 6e2a61c5..6c6abb3f 100644
--- a/CheckUser/i18n/pms.json
+++ b/CheckUser/i18n/pms.json
@@ -67,12 +67,6 @@
"checkuser-ipeditcount": "~$1 da tùit j'utent",
"checkuser-log-return": "Torna a la forma prinsipal dël Controlor dj'utent",
"checkuser-limited": "'''Sti arzultà-sì a son ëstàit troncà për rason ëd prestassion.'''",
- "checkuser-log-userips": "$1 a l'ha pijà j'adrësse IP da $2",
- "checkuser-log-ipedits": "$1 a l'ha pijà le modìfiche për $2",
- "checkuser-log-ipusers": "$1 a l'ha pijà j'utent për $2",
- "checkuser-log-ipedits-xff": "$1 a l'ha pijà le modìfiche për XFF $2",
- "checkuser-log-ipusers-xff": "$1 a l'ha pijà j'utent për XFF $2",
- "checkuser-log-useredits": "$1 a l'ha otnù le modìfiche për $2",
"checkuser-autocreate-action": "a l'é stàit creà automaticament",
"checkuser-create-action": "a l'é stàit creà",
"checkuser-email-action": "a l'ha mandà un mëssagi ëd pòsta eletrònica a l'utent \"$1\"",
diff --git a/CheckUser/i18n/ps.json b/CheckUser/i18n/ps.json
index 1d221147..fa3cfece 100644
--- a/CheckUser/i18n/ps.json
+++ b/CheckUser/i18n/ps.json
@@ -12,7 +12,6 @@
"checkuser-target": "کارن يا IP پته:",
"checkuser-users": "کارنان راغوښتل",
"checkuser-ips": "آی پي پتې ترلاسه کول",
- "checkuser-search": "پلټل",
"checkuser-period": "موده:",
"checkuser-week-1": "تېره اوونۍ",
"checkuser-week-2": "تېرې دوه اوونۍ",
@@ -31,11 +30,12 @@
"checkuser-block-limit": "له حد نه ډېر زيات کارنان ټاکل شوي.",
"checkuser-block-noreason": "تاسې بايد د بنديز لگولو يو سبب څرگند کړئ.",
"checkuser-accounts": "$1 {{PLURAL:$1|نوی گڼون|نوي گڼونونه}}",
+ "checkuser-search": "پلټل",
"checkuser-search-submit": "پلټل",
"checkuser-search-initiator": "پېلوونکی",
"checkuser-search-target": "موخه",
+ "checkuser-log-search-target": "موخه:",
"checkuser-ipeditcount": "~$1 د ټولو کارنانو نه",
- "checkuser-log-userips": "$1 د $2 آی پي پتې ترلاسه کړې",
"checkuser-autocreate-action": "په خپلکاره توگه جوړ شو",
"checkuser-create-action": "جوړ شو",
"checkuser-email-action": "د \"$1\" کارن ته يو برېښليک ولېږل شو",
diff --git a/CheckUser/i18n/pt-br.json b/CheckUser/i18n/pt-br.json
index 865915e9..822e755e 100644
--- a/CheckUser/i18n/pt-br.json
+++ b/CheckUser/i18n/pt-br.json
@@ -16,32 +16,34 @@
"Pedroca cerebral",
"555",
"He7d3r",
- "Araceletorres"
+ "Araceletorres",
+ "Macofe",
+ "Felipe L. Ewald",
+ "RadiX"
]
},
- "checkuser-summary": "Esta ferramenta varre as Mudanças recentes para obter os endereços de IP de um usuário ou para exibir os dados de edições/usuários para um IP.\nUsuários e edições podem ser obtidos por um IP XFF colocando-se \"/xff\" no final do endereço. São suportados endereços IPv4 (CIDR $1-32) e IPv6 (CIDR $2-128).\nNão serão retornadas mais de 5000 edições por motivos de desempenho. O uso desta ferramenta deverá estar de acordo com as políticas.",
+ "checkuser-summary": "Esta ferramenta varre as mudanças recentes para obter os endereços de IP de um usuário ou para exibir os dados de edições/usuários para um IP.\nUsuários e edições podem ser obtidos por um IP XFF colocando-se \"/xff\" no final do endereço. São suportados endereços IPv4 (CIDR $1-32) e IPv6 (CIDR $2-128).\nNão serão retornadas mais de 5000 edições por motivos de desempenho. O uso desta ferramenta deverá estar de acordo com as políticas.",
"checkuser-desc": "Concede a usuários com a permissão apropriada a possibilidade de verificar os endereços IP de um usuário e outras informações",
"checkuser-logcase": "As buscas nos registros são sensíveis a letras maiúsculas ou minúsculas.",
"checkuser": "Verificar usuário",
"checkuserlog": "Registros de verificação de usuários",
- "checkuser-contribs": "Verificar IPs do usuário",
+ "checkuser-contribs": "verificar IPs do usuário",
"checkuser-contribs-log": "verificações de usuário recentes",
"group-checkuser": "Verificadores",
- "group-checkuser-member": "{{GENDER:$1|check user}}",
+ "group-checkuser-member": "verificador{{GENDER:$1||a|(a)}} de contas",
"right-checkuser": "Verificar os endereços de IP e outras informações dos usuários",
"right-checkuser-log": "Ver os registros das verificações",
- "action-checkuser": "verificar os endereços IP do usuário e outras informações.",
- "action-checkuser-log": "Ver os registros das verificações",
+ "action-checkuser": "verificar os endereços IP do usuário e outras informações",
+ "action-checkuser-log": "ver os registros das verificações",
"grouppage-checkuser": "{{ns:project}}:Verificadores",
"checkuser-reason": "Motivo:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Exibir registros",
- "checkuser-query": "Examinar as Mudanças recentes",
+ "checkuser-showlog": "Mudar para registros do CheckUser",
+ "checkuser-query": "Examinar as mudanças recentes",
"checkuser-target": "Endereço IP ou nome do usuário:",
"checkuser-users": "Mostrar usuários",
"checkuser-edits": "Obter edições",
"checkuser-ips": "Obter IPs",
- "checkuser-search": "Pesquisar",
"checkuser-period": "Duração:",
"checkuser-week-1": "última semana",
"checkuser-week-2": "últimas duas semanas",
@@ -62,6 +64,8 @@
"checkuser-localonly": "Não unificada",
"checkuser-massblock": "Bloquear usuários selecionados",
"checkuser-massblock-text": "As contas selecionadas serão bloqueadas indefinidamente, com bloqueio automático ativado e criação de conta desabilitada.\nEndereços IP serão bloqueados por 1 semana com criação de conta desabilitada.",
+ "checkuser-blockemail": "Previne de enviar e-mail",
+ "checkuser-blocktalk": "Evite editar sua própria página de discussão enquanto estiver bloqueada",
"checkuser-blocktag": "Substituir páginas de usuário com:",
"checkuser-blocktag-talk": "Substituir páginas de discussão por:",
"checkuser-massblock-commit": "Bloquear usuários selecionados",
@@ -69,43 +73,55 @@
"checkuser-block-failure": "'''Nenhum usuário bloqueado.'''",
"checkuser-block-limit": "Muitos usuários selecionados.",
"checkuser-block-noreason": "Você deve especificar um motivo para os bloqueios.",
+ "checkuser-centralauth-multilock": "Multi-bloqueio de contas selecionadas",
"checkuser-noreason": "Você deve fornecer um motivo para esta pesquisa.",
"checkuser-accounts": "$1 {{PLURAL:$1|nova conta|novas contas}}",
"checkuser-too-many": "Há muitos resultados (de acordo com a estimativa de consulta), por favor, restrinja o CIDR. \nAqui estão os IPs usados (5000 no máx., ordenados por endereço):",
"checkuser-user-nonexistent": "O usuário especificado não existe.",
- "checkuser-search-form": "Procurar entradas no registro onde $1 seja $2",
+ "checkuser-search": "Pesquisar entradas do registro do CheckUser",
"checkuser-search-submit": "Pesquisar",
"checkuser-search-initiator": "iniciador",
"checkuser-search-target": "alvo",
+ "checkuser-log-search-target": "Destinatário:",
+ "checkuser-log-search-type": "Pesquisa para:",
"checkuser-ipeditcount": "~$1 de todos os usuários",
- "checkuser-log-return": "Retornar ao formulário principal de CheckUser",
+ "checkuser-showmain": "Retornar ao formulário principal de CheckUser",
"checkuser-limited": "'''Estes resultados foram removidos por motivos de performance.'''",
- "checkuser-log-userips": "$1 obteve IPs de $2",
- "checkuser-log-ipedits": "$1 obteve edições de $2",
- "checkuser-log-ipusers": "$1 obteve usuários de $2",
- "checkuser-log-ipedits-xff": "$1 obteve edições para o XFF $2",
- "checkuser-log-ipusers-xff": "$1 obteve usuários para o XFF $2",
- "checkuser-log-useredits": "$1 obteve edições de $2",
+ "checkuser-log-entry-userips": "$3, $1 tem endereços IP para $2",
+ "checkuser-log-entry-ipedits": "$3, $1 obteve edições por $2",
+ "checkuser-log-entry-ipusers": "$3, $1 obteve usuários para $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 obteve edições para XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 obteve usuários para XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 obteve edições por $2",
"checkuser-autocreate-action": "foi automaticamente criada",
"checkuser-create-action": "foi criada",
- "checkuser-email-action": "Enviar email para o usuário \"$1\"",
+ "checkuser-email-action": "enviar email para o usuário \"$1\"",
"checkuser-reset-action": "suprimir a senha do usuário \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|discussão]] | [[Special:Contributions/$1|contribuições]] | [[Special:Block/$1|bloqueio]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|discussão]] | [[Special:Contributions/$1|contribuições]] | [[Special:Block/$1|bloqueio]])",
"checkuser-token-fail": "Falha na sessão. Por favor, tente novamente.",
+ "group-checkuser.css": "/* CSS colocado aqui afetará apenas checkuser */",
+ "group-checkuser.js": "/* JS colocado aqui afetará o usuário do checkeruser */",
"apihelp-query+checkuser-description": "Verifique quais endereços IP são utilizados por um determinado nome de usuário ou quais nomes de usuários são utilizados por um determinado endereço IP.",
+ "apihelp-query+checkuser-summary": "Verifique quais endereços IP são utilizados por um determinado nome de usuário ou quais nomes de usuários são utilizados por um determinado endereço IP.",
"apihelp-query+checkuser-param-request": "Tipo de pedido CheckUser:\n;userips:Obter endereço IP do usuário-alvo.\n;edits:Obter alterações de endereço IP de destino ou intervalo.\n;ipusers:Obter usuários de endereço IP de destino ou intervalo.",
"apihelp-query+checkuser-param-target": "Nome de usuário, endereço IP ou intervalo CIDR para verificar.",
"apihelp-query+checkuser-param-reason": "Motivo para verificar.",
- "apihelp-query+checkuser-param-limit": "Limite de filas.",
- "apihelp-query+checkuser-param-timecond": "Limite de tempo dos dados do usuário (como \"2 semanas\").",
+ "apihelp-query+checkuser-param-limit": "Limite de linhas.",
+ "apihelp-query+checkuser-param-timecond": "Limite de tempo dos dados do usuário (como \"-2 weeks\" ou \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Usar dados XFF no lugar do endereço IP.",
"apihelp-query+checkuser-example-1": "Verificar endereço IP para [[User:Example]]",
"apihelp-query+checkuser-example-2": "Verificar edições de 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Obter entradas do registro do CheckUser.",
+ "apihelp-query+checkuserlog-summary": "Obter entradas do registro do CheckUser.",
"apihelp-query+checkuserlog-param-user": "Nome de usuário do CheckUser.",
"apihelp-query+checkuserlog-param-target": "Usuário verificado, endereço IP ou intervalo CIDR.",
- "apihelp-query+checkuserlog-param-limit": "Limite de filas.",
- "apihelp-query+checkuserlog-param-from": "O selo do tempo para começar a enumeração.",
+ "apihelp-query+checkuserlog-param-limit": "Limite de linhas.",
+ "apihelp-query+checkuserlog-param-from": "O timestamp para começar a enumeração.",
"apihelp-query+checkuserlog-param-to": "O selo do tempo para finalizar a enumeração.",
"apihelp-query+checkuserlog-example-1": "Mostrar verificações de [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Mostrar verificações de 192.0.2.0/24 após 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Mostrar verificações de 192.0.2.0/24 após 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Você deve definir o motivo da verificação.",
+ "apierror-checkuser-timelimit": "Você precisa usar o limite de tempo correto (como \"-2 semanas\" ou \"2 semanas atrás\").",
+ "apierror-checkuser-invalidmode": "Modo de solicitação inválido"
}
diff --git a/CheckUser/i18n/pt.json b/CheckUser/i18n/pt.json
index 3dac8e7f..0f516d97 100644
--- a/CheckUser/i18n/pt.json
+++ b/CheckUser/i18n/pt.json
@@ -9,7 +9,8 @@
"Waldir",
"555",
"Vitorvicentevalente",
- "Fúlvio"
+ "Fúlvio",
+ "RadiX"
]
},
"checkuser-summary": "Esta ferramenta varre as mudanças recentes para obter os endereços IP de um utilizador ou para apresentar os dados de edições/utilizadores para um determinado IP.\nOs utilizadores e edições de um determinado IP, podem ser obtidos através de cabeçalhos XFF, acrescentando \"/xff\" no final do endereço.\nSão suportados endereços IPv4 (CIDR $1-32) e IPv6 (CIDR $2-128).\nPor motivos de desempenho não serão fornecidas mais do que 5000 edições.\nO uso desta ferramenta deverá respeitar as normas e recomendações.",
@@ -17,7 +18,7 @@
"checkuser-logcase": "As buscas nos registos distinguem maiúsculas de minúsculas.",
"checkuser": "Verificação de utilizadores",
"checkuserlog": "Registo das verificações de utilizadores",
- "checkuser-contribs": "verificar IPs do utilizador",
+ "checkuser-contribs": "verificar endereços IP do utilizador",
"checkuser-contribs-log": "verificações de utilizador recentes",
"group-checkuser": "Verificadores de utilizadores",
"group-checkuser-member": "{{GENDER:$1|verificador|verificadora}} de utilizadores",
@@ -25,16 +26,15 @@
"right-checkuser-log": "Ver o registo das verificações de utilizadores",
"action-checkuser": "verificar os endereços IP e outras informações de um utilizador",
"action-checkuser-log": "ver o registo das verificações de utilizadores",
- "grouppage-checkuser": "{{ns:project}}:Verificadores",
+ "grouppage-checkuser": "{{ns:project}}:Verificadores de utilizadores",
"checkuser-reason": "Motivo:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Mostrar registos",
+ "checkuser-showlog": "Alternar para o registo das verificações de utilizadores",
"checkuser-query": "Examinar as mudanças recentes",
- "checkuser-target": "Endereço IP ou nome do utilizador:",
- "checkuser-users": "Mostrar utilizadores",
+ "checkuser-target": "Endereço IP ou nome de utilizador:",
+ "checkuser-users": "Obter utilizadores",
"checkuser-edits": "Obter edições",
- "checkuser-ips": "Obter IPs",
- "checkuser-search": "Pesquisar",
+ "checkuser-ips": "Obter endereços IP",
"checkuser-period": "Duração:",
"checkuser-week-1": "última semana",
"checkuser-week-2": "últimas duas semanas",
@@ -55,33 +55,62 @@
"checkuser-localonly": "Não unificada",
"checkuser-massblock": "Bloquear utilizadores selecionados",
"checkuser-massblock-text": "As contas selecionadas serão bloqueadas indefinidamente, com o bloqueio automático ativado e a criação de conta impossibilitada.\nEndereços IP serão bloqueados por 1 semana com a criação de conta impossibilitada.",
- "checkuser-blocktag": "Substituir páginas de utilizador com:",
+ "checkuser-blockemail": "Impedir de enviar correio eletrónico",
+ "checkuser-blocktalk": "Impedir de editar a sua própria página de discussão enquanto estiver bloqueado",
+ "checkuser-blocktag": "Substituir páginas de utilizador por:",
"checkuser-blocktag-talk": "Substituir páginas de discussão por:",
"checkuser-massblock-commit": "Bloquear utilizadores selecionados",
"checkuser-block-success": "'''{{PLURAL:$2|O utilizador|Os utilizadores}} $1 {{PLURAL:$2|está agora bloqueado|estão agora bloqueados}}.'''",
"checkuser-block-failure": "'''Não há utilizadores bloqueados.'''",
"checkuser-block-limit": "Há demasiados utilizadores selecionados.",
"checkuser-block-noreason": "Tem de especificar um motivo para os bloqueios.",
+ "checkuser-centralauth-multilock": "Bloquear contas globais selecionadas",
"checkuser-noreason": "Tem de fornecer um motivo para esta pesquisa.",
"checkuser-accounts": "$1 {{PLURAL:$1|nova conta|novas contas}}",
"checkuser-too-many": "Há demasiados resultados (segundo estimativa da pesquisa); por favor, restrinja o CIDR.\nAqui estão os endereços IP utilizados (5000 no máx., ordenados por endereço):",
"checkuser-user-nonexistent": "O utilizador especificado não existe.",
- "checkuser-search-form": "Procurar entradas no registo onde $1 seja $2",
+ "checkuser-search": "Pesquisar entradas do registo de verificações de utilizadores",
"checkuser-search-submit": "Pesquisar",
"checkuser-search-initiator": "iniciador",
"checkuser-search-target": "alvo",
+ "checkuser-log-search-target": "Destinatário:",
+ "checkuser-log-search-type": "Pesquisar por:",
"checkuser-ipeditcount": "~$1 de todos os utilizadores",
- "checkuser-log-return": "Mudar para o formulário principal da verificação de utilizadores",
+ "checkuser-showmain": "Mudar para o formulário principal da verificação de utilizadores",
"checkuser-limited": "'''Estes resultados foram truncados por motivos de desempenho.'''",
- "checkuser-log-userips": "$1 obteve IPs de $2",
- "checkuser-log-ipedits": "$1 obteve edições de $2",
- "checkuser-log-ipusers": "$1 obteve utilizadores de $2",
- "checkuser-log-ipedits-xff": "$1 obteve edições para o XFF $2",
- "checkuser-log-ipusers-xff": "$1 obteve utilizadores para o XFF $2",
- "checkuser-log-useredits": "$1 obteve edições de $2",
+ "checkuser-log-entry-userips": "$3, $1 obteve endereços IP de $2",
+ "checkuser-log-entry-ipedits": "$3, $1 obteve edições de $2",
+ "checkuser-log-entry-ipusers": "$3, $1 obteve utilizadores de $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 obteve edições do XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 obteve utilizadores do XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 obteve edições de $2",
"checkuser-autocreate-action": "foi criada automaticamente",
"checkuser-create-action": "foi criada",
- "checkuser-email-action": "correio electrónico enviado para o utilizador \"$1\"",
- "checkuser-reset-action": "foi reiniciada a palavra-chave do utilizador \"$1\"",
- "checkuser-token-fail": "Falha na sessão. Por favor, tente novamente."
+ "checkuser-email-action": "correio eletrónico enviado para o utilizador \"$1\"",
+ "checkuser-reset-action": "foi reiniciada a palavra-passe do utilizador \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|discussão]] | [[Special:Contributions/$1|contribs]] | [[Special:Block/$1|bloquear]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|discussão]] | [[Special:Contributions/$1|contribs]] | [[Special:Block/$1|bloquear]])",
+ "checkuser-token-fail": "Falha na sessão. Por favor, tente novamente.",
+ "apihelp-query+checkuser-description": "Verificar que endereços IP são usados por determinado nome de utilizador ou que nomes de utilizador são usados por um determinado endereço IP.",
+ "apihelp-query+checkuser-summary": "Verificar que endereços IP são usados por determinado nome de utilizador ou que nomes de utilizador são usados por um determinado endereço IP.",
+ "apihelp-query+checkuser-param-request": "Tipo do pedido de verificação de utilizadores:\n;userips:Obter endereço IP do utilizador alvo.\n;edits:Obter alterações do endereço IP ou gama IP alvo.\n;ipusers:Obter utilizadores do endereço IP ou gama IP alvo.",
+ "apihelp-query+checkuser-param-target": "Nome de utilizador, endereço IP, ou gama CIDR a verificar",
+ "apihelp-query+checkuser-param-reason": "Motivo da verificação.",
+ "apihelp-query+checkuser-param-limit": "Limite de linhas.",
+ "apihelp-query+checkuser-param-timecond": "Limite temporal dos dados de utilizador (como \"-2 weeks\" ou \"2 weeks ago\").",
+ "apihelp-query+checkuser-param-xff": "Usar dados XFF em vez do endereço IP.",
+ "apihelp-query+checkuser-example-1": "Verificar o endereço IP de [[User:Example]]",
+ "apihelp-query+checkuser-example-2": "Verificar edições de 192.0.2.0/24",
+ "apihelp-query+checkuserlog-description": "Obter entradas do registo de verificação de utilizadores.",
+ "apihelp-query+checkuserlog-summary": "Obter entradas do registo de verificação de utilizadores.",
+ "apihelp-query+checkuserlog-param-user": "Nome de utilizador do pedido de verificação de utilizadores.",
+ "apihelp-query+checkuserlog-param-target": "Utilizador verificado, endereço IP ou gama CIDR.",
+ "apihelp-query+checkuserlog-param-limit": "Limite de linhas.",
+ "apihelp-query+checkuserlog-param-from": "A data e hora a partir da qual será começada a enumeração.",
+ "apihelp-query+checkuserlog-param-to": "A data e hora na qual será parada a enumeração.",
+ "apihelp-query+checkuserlog-example-1": "Mostrar verificações de [[User:Example]]",
+ "apihelp-query+checkuserlog-example-2": "Mostrar verificações de 192.0.2.0/24 após 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Tem de definir um motivo para a verificação.",
+ "apierror-checkuser-timelimit": "Tem de usar um limite temporal correto (como \"-2 weeks\" ou \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "Modo de pedido inválido"
}
diff --git a/CheckUser/i18n/qqq.json b/CheckUser/i18n/qqq.json
index 6126126e..a80836a7 100644
--- a/CheckUser/i18n/qqq.json
+++ b/CheckUser/i18n/qqq.json
@@ -21,10 +21,14 @@
"The Evil IP address",
"Umherirrender",
"Liuxinyu970226",
- "Nemo bis"
+ "Nemo bis",
+ "Revi",
+ "Beta16",
+ "McDutchie",
+ "Purodha Blissenbach"
]
},
- "checkuser-summary": "Explanation of CheckUser tool. See [[mw:Extension:CheckUser#Basic_interface|screenshot titled 'Basic CheckUser interface']].\n\nParameters:\n* $1 - an integer. default value: 16\n* $2 - an integer. default value: 48",
+ "checkuser-summary": "Explanation of CheckUser tool. See [[mw:Extension:CheckUser#Basic_interface|screenshot titled 'Basic CheckUser interface']].\n\nParameters:\n* $1 - an integer. default value: 16\n* $2 - an integer. default value: 32",
"checkuser-desc": "{{desc|name=Check User|url=https://www.mediawiki.org/wiki/Extension:CheckUser}}",
"checkuser-logcase": "Unused at this time.",
"checkuser": "Check user extension.\n{{doc-special|CheckUser}}\nIn the special page, checkusers can check the IP addresses of users.\n{{Identical|Check user}}",
@@ -40,13 +44,12 @@
"grouppage-checkuser": "{{doc-group|checkuser|page}}\n{{Identical|Check user}}",
"checkuser-reason": "Field name on CheckUser Special page. See screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.\n{{Identical|Reason}}",
"checkuser-reason-api": "Prefixes check user query reasons that are made through the API\n\n* $1 = User specified reason\n{{Identical|API}}",
- "checkuser-showlog": "Label for link on CheckUser special page. Linked to CheckUser Log special page.\n\nSee screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.",
+ "checkuser-showlog": "Label for link on CheckUser special page's subtitle. Linked to CheckUser Log special page. See also {{msg-mw|checkuser-showmain}}.",
"checkuser-query": "Fieldset label. See [[mw:Extension:CheckUser#Basic_interface|screenshot titled 'Basic CheckUser interface']].",
"checkuser-target": "{{Identical|IP address or username}}",
"checkuser-users": "Radio button option on CheckUser Special page. See screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.",
"checkuser-edits": "Radio button option on CheckUser Special page. See screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.",
"checkuser-ips": "Option on CheckUser Special page. See screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.",
- "checkuser-search": "Heading of fieldset on log of CheckUser searches. See screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Identical|Search}}",
"checkuser-period": "Field name next to drop-down input box on CheckUser Special page. See screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.\n{{Identical|Duration}}",
"checkuser-week-1": "Option in drop-down input box \"Duration\" on CheckUser Special page. See screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.\n{{Identical|Last week}}",
"checkuser-week-2": "Option in drop-down input box \"Duration\" on CheckUser Special page. See screenshot '[[mw:Extension:CheckUser#Basic_interface|Basic CheckUser interface]]'.",
@@ -67,6 +70,8 @@
"checkuser-localonly": "Used as a flag in [[Special:CheckUser]].",
"checkuser-massblock": "Used as fieldset label.\n\nThis message is followed by the following message:\n* {{msg-mw|Checkuser-massblock-text}}\n{{Identical|Block selected users}}",
"checkuser-massblock-text": "Used as intro text for the form {{msg-mw|checkuser-massblock}}.",
+ "checkuser-blockemail": "Used as a label for a checkbox asking to block email access.",
+ "checkuser-blocktalk": "Used as a label for a checkbox asking to block talk page access.",
"checkuser-blocktag": "[[File:Special-checkuser-get-users en.png|thumb|Checkuser interface]]Used as checkbox label in [[Special:CheckUser]].\n\nThis message is followed by \"tag\" input box. The input box is for text which replaces the entire wikitext of the concerned page.\n\nSee also:\n* {{msg-mw|Checkuser-blocktag-talk}}",
"checkuser-blocktag-talk": "[[File:Special-checkuser-get-users en.png|thumb|Checkuser interface]]Used as checkbox label in [[Special:CheckUser]].\n\nThis message is followed by \"talktag\" input box. The input box is for text which replaces the entire wikitext of the concerned page.\n\nSee also:\n* {{msg-mw|Checkuser-blocktag}}",
"checkuser-massblock-commit": "Used as Submit button text in [[Special:CheckUser]].\n{{Identical|Block selected users}}",
@@ -74,46 +79,56 @@
"checkuser-block-failure": "Used as failure message in [[Special:CheckUser]].\n\nSee also:\n* {{msg-mw|Checkuser-block-success}}\n* {{msg-mw|Checkuser-block-limit}}\n* {{msg-mw|Checkuser-block-noreason}}",
"checkuser-block-limit": "Used as failure message in [[Special:CheckUser]].\n\nSee also:\n* {{msg-mw|Checkuser-block-success}}\n* {{msg-mw|Checkuser-block-failure}}\n* {{msg-mw|Checkuser-block-noreason}}",
"checkuser-block-noreason": "Used as failure message in [[Special:CheckUser]].\n\nSee also:\n* {{msg-mw|Checkuser-block-success}}\n* {{msg-mw|Checkuser-block-failure}}\n* {{msg-mw|Checkuser-block-limit}}",
+ "checkuser-centralauth-multilock": "Label of link to Special:MultiLock shown on Special:CheckUser's block form.\n\nCf. {{msg-mw|multilock}}.",
"checkuser-noreason": "Used as error message in [[Special:CheckUser]].",
"checkuser-accounts": "Used in Special:CheckUser. Parameters:\n* $1 - number of accounts",
"checkuser-too-many": "Used in [[Special:CheckUser]].\n\nThis message is followed by a list of IPs that have edits.\n\nIf the number of IPs is 5000 or more, the following message is shown:\n* {{msg-mw|checkuser-limited}}",
"checkuser-user-nonexistent": "Used as error message in [[Special:CheckUserLog]].",
- "checkuser-search-form": "This message is a search form for the checkuser log. Parameters:\n* $1 - a drop down box with search types\n* $2 - a text input field for the search pattern\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".",
+ "checkuser-search": "Heading of fieldset on log of CheckUser searches. See screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]",
"checkuser-search-submit": "Button label on log of CheckUser searches. See screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Identical|Search}}",
- "checkuser-search-initiator": "This message is an option in an input box on the search form for the checkuser log.\n\nUsed as <code>$1</code> in the message {{msg-mw|Checkuser-search-form}}.\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n\nInitiator means the CheckUser who checks someone's information.\n{{Identical|Initiator}}",
- "checkuser-search-target": "The target of the check. The user checked.\n{{Identical|Target}}",
+ "checkuser-search-initiator": "This message is an option in a radio button on the search form for the checkuser log.\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n\nInitiator means the CheckUser who checks someone's information.\n{{Identical|Initiator}}",
+ "checkuser-search-target": "This message is used in an option in a radio button on the search form for the checkuser log. The target of the check means the user which was checked.\n{{Identical|Target}}",
+ "checkuser-log-search-target": "Label of form field on Special:CheckUserLog's search form. Valid values in the field can be either an IP address or an IP address range or a username.\n{{Identical|Target}}",
+ "checkuser-log-search-type": "Label of form field on Special:CheckUserLog's search form. This corresponds to the radio buttons for the search type. See {{msg-mw|checkuser-search-initiator}} and {{msg-mw|checkuser-log-search-target}}.",
"checkuser-ipeditcount": "This information is shown on the result page of [[mw:Extension:CheckUser#Basic_interface|Special:CheckUser]] (when doing the ''{{int:Checkuser-users}}'' check), next to the individual listed IPs.\n\nSee [[mw:Extension:CheckUser#Basic_interface|screenshot]] \"Example user name check\").\n\nParameters:\n* $1 - an estimate of the total number of edits from the respective IP (i.e. the number of edits by all users, not only by the requested user). As the comment in the code says: ''If we get some results, it helps to know if the IP in general has a lot more edits, e.g. \"tip of the iceberg\"…''",
- "checkuser-log-return": "Link label on log of CheckUser searches. See screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".",
+ "checkuser-showmain": "Link label on Special:CheckUserLog's subtitle. Links to Special:CheckUser. See also {{msg-mw|checkuser-showlog}}.",
"checkuser-limited": "A message shown above CheckUser results if the result list would be longer than the specified limit (5000 entries), and has been truncated.",
- "checkuser-log-userips": "This is an entry in the checkuser log when a checkuser checks from which IP addresses a user has edited.\n\nParameters:\n* $1 - the user who did the check\n* $2 - the user that was checked, with links to talk page, contributions, and block (like this: [[User:Username|Username]] ( [[User talk|Talk]] | [[Special:Contributions/Username|contribs]] | [[Special:Blockip|block]]) )\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
- "checkuser-log-ipedits": "This is an entry in the checkuser log when a checkuser checks which edits have been done from an IP address.\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address that was checked\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
- "checkuser-log-ipusers": "This is an entry in the checkuser log when a checkuser checks which users have used an IP address.\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
- "checkuser-log-ipedits-xff": "This is an entry in the checkuser log when a checkuser checks which edits have been done from an XFF IP address (XFF means X-Forwarded-For. Some providers use proxies to forward user requests. This effectively means anonymization of requests. To make the requesting user identifiable again, the original requesting IP is transmitted in a separate HTTP header, the XFF header.).\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address that was checked\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
- "checkuser-log-ipusers-xff": "This is an entry in the checkuser log when a checkuser checks which users have used an XFF IP address (XFF means X-Forwarded-For. Some providers use proxies to forward user requests. This effectively means anonymization of requests. To make the requesting user identifiable again, the original requesting IP is transmitted in a separate HTTP header, the XFF header.).\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
- "checkuser-log-useredits": "This is an entry in the checkuser log when a checkuser checks which edits have been done from an IP address.\n\nParameters:\n* $1 - name of checkuser\n* $2 - name of user whose edits were inspected\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
+ "checkuser-log-entry-userips": "This is an entry in the checkuser log when a checkuser checks from which IP addresses a user has edited.\n\nParameters:\n* $1 - the user who did the check\n* $2 - the user that was checked, with links to talk page, contributions, and block (like this: [[User:Username|Username]] ( [[User talk|Talk]] | [[Special:Contributions/Username|contribs]] | [[Special:Blockip|block]]) )\n* $3 - a formatted timestamp of the event\n* $4 - a formatted date of the event\n* $5 - a formatted time of the event\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
+ "checkuser-log-entry-ipedits": "This is an entry in the checkuser log when a checkuser checks which edits have been done from an IP address.\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address that was checked\n* $3 - a formatted timestamp of the event\n* $4 - a formatted date of the event\n* $5 - a formatted time of the event\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
+ "checkuser-log-entry-ipusers": "This is an entry in the checkuser log when a checkuser checks which users have used an IP address.\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address\n* $3 - formatted timestamp of the log\n* $4 - a formatted date of the event\n* $5 - a formatted time of the event\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
+ "checkuser-log-entry-ipedits-xff": "This is an entry in the checkuser log when a checkuser checks which edits have been done from an XFF IP address (XFF means X-Forwarded-For. Some providers use proxies to forward user requests. This effectively means anonymization of requests. To make the requesting user identifiable again, the original requesting IP is transmitted in a separate HTTP header, the XFF header.).\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address that was checked\n* $3 - a formatted timestamp of the event\n* $4 - a formatted date of the event\n* $5 - a formatted time of the event\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
+ "checkuser-log-entry-ipusers-xff": "This is an entry in the checkuser log when a checkuser checks which users have used an XFF IP address (XFF means X-Forwarded-For. Some providers use proxies to forward user requests. This effectively means anonymization of requests. To make the requesting user identifiable again, the original requesting IP is transmitted in a separate HTTP header, the XFF header.).\n\nParameters:\n* $1 - the user who did the check\n* $2 - the IP address\n* $3 - a formatted timestamp of the event\n* $4 - a formatted date of the event\n* $5 - a formatted time of the event\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
+ "checkuser-log-entry-useredits": "This is an entry in the checkuser log when a checkuser checks which edits have been done from an IP address.\n\nParameters:\n* $1 - name of checkuser\n* $2 - name of user whose edits were inspected\n* $3 - a formatted timestamp of the event\n* $4 - a formatted date of the event\n* $5 - a formatted time of the event\n\nSee screenshot \"[[mw:Extension:CheckUser#Basic_interface|Example log]]\".\n{{Related|Checkuser-log}}",
"checkuser-autocreate-action": "Text of the event displayed in the CheckUser results, corresponding to the automatic creation of a new user account (by CentralAuth).",
"checkuser-create-action": "Text of the event displayed in the CheckUser results. Indicates creation of the user.",
"checkuser-email-action": "Logged text when a user sends an e-mail. Probably preceded by the name of the checkuser.\n\nParameters:\n* $1 - a salted MD5 hash for the user an email was sent to",
"checkuser-reset-action": "Logged text when a user resets a password. Parameters:\n* $1 - the username for which the password was reset. Can be used for GENDER.",
+ "checkuser-userlinks-ip": "Links shown next to an IP address in a CheckUser result entry. $1 - IP address\n\nSee also:\n*{{msg-mw|Signature}}\n*{{msg-mw|Checkuser-userlinks}}",
+ "checkuser-userlinks": "Links shown next to a user in a CheckUser result entry. $1 - Name of user\n\nSee also:\n*{{msg-mw|Signature}}\n*{{msg-mw|Checkuser-userlinks-ip}}",
"checkuser-toollinks": "{{notranslate}}\nParameters:\n* $1 - IP address",
"checkuser-token-fail": "Error message shown when the CSRF token does not match the current session.",
"group-checkuser.css": "{{doc-group|checkuser|css}}",
"group-checkuser.js": "{{doc-group|checkuser|js}}",
"apihelp-query+checkuser-description": "{{doc-apihelp-description|query+checkuser}}",
+ "apihelp-query+checkuser-summary": "{{doc-apihelp-summary|query+checkuser}}",
"apihelp-query+checkuser-param-request": "{{doc-apihelp-param|query+checkuser|request}}",
"apihelp-query+checkuser-param-target": "{{doc-apihelp-param|query+checkuser|target}}",
"apihelp-query+checkuser-param-reason": "{{doc-apihelp-param|query+checkuser|reason}}",
"apihelp-query+checkuser-param-limit": "{{doc-apihelp-param|query+checkuser|limit}}",
- "apihelp-query+checkuser-param-timecond": "Do not translate \"2 weeks\". It must be in [http://www.php.net/strtotime original format].\n----\n{{doc-apihelp-param|query+checkuser|timecond}}",
+ "apihelp-query+checkuser-param-timecond": "{{doc-important|Do not translate \"-2 weeks\" or \"2 weeks ago\". It must be in [http://www.php.net/strtotime original format].}}\n----\n{{doc-apihelp-param|query+checkuser|timecond}}",
"apihelp-query+checkuser-param-xff": "{{doc-apihelp-param|query+checkuser|xff}}",
"apihelp-query+checkuser-example-1": "{{doc-apihelp-example|query+checkuser}}",
"apihelp-query+checkuser-example-2": "{{doc-apihelp-example|query+checkuser}}",
"apihelp-query+checkuserlog-description": "{{doc-apihelp-description|query+checkuserlog}}",
+ "apihelp-query+checkuserlog-summary": "{{doc-apihelp-summary|query+checkuserlog}}",
"apihelp-query+checkuserlog-param-user": "{{doc-apihelp-param|query+checkuserlog|user}}",
"apihelp-query+checkuserlog-param-target": "{{doc-apihelp-param|query+checkuserlog|target}}",
"apihelp-query+checkuserlog-param-limit": "{{doc-apihelp-param|query+checkuserlog|limit}}",
"apihelp-query+checkuserlog-param-from": "{{doc-apihelp-param|query+checkuserlog|from}}",
"apihelp-query+checkuserlog-param-to": "{{doc-apihelp-param|query+checkuserlog|to}}",
- "apihelp-query+checkuserlog-example-1": "Do not translate \"User:Example\".\n----\n{{doc-apihelp-example|query+checkuserlog}}",
- "apihelp-query+checkuserlog-example-2": "{{doc-apihelp-example|query+checkuserlog}}"
+ "apihelp-query+checkuserlog-example-1": "{{doc-important|Do not translate \"User:Example\".}}\n{{doc-apihelp-example|query+checkuserlog}}",
+ "apihelp-query+checkuserlog-example-2": "{{doc-apihelp-example|query+checkuserlog}}",
+ "apierror-checkuser-missingsummary": "{{doc-apierror}}",
+ "apierror-checkuser-timelimit": "{{doc-apierror}}\n{{doc-important|Do not translate \"-2 weeks\" or \"2 weeks ago\". It must be in [http://www.php.net/strtotime original format].}}",
+ "apierror-checkuser-invalidmode": "{{doc-apierror}}"
}
diff --git a/CheckUser/i18n/rif.json b/CheckUser/i18n/rif.json
index fcf81f9e..f3427ded 100644
--- a/CheckUser/i18n/rif.json
+++ b/CheckUser/i18n/rif.json
@@ -1,9 +1,10 @@
{
"@metadata": {
"authors": [
- "Jose77"
+ "Jose77",
+ "Amara-Amaziɣ"
]
},
"checkuser-search": "Tarzzut",
- "checkuser-search-submit": "Tarzzut"
+ "checkuser-search-submit": "ⵔⵣⵓ"
}
diff --git a/CheckUser/i18n/ro.json b/CheckUser/i18n/ro.json
index 81be3248..e2072deb 100644
--- a/CheckUser/i18n/ro.json
+++ b/CheckUser/i18n/ro.json
@@ -71,12 +71,6 @@
"checkuser-ipeditcount": "~$1 de la toți utilizatorii",
"checkuser-log-return": "Comută la formularul principal Verifică Utilizatorul",
"checkuser-limited": "'''Aceste rezultate au fost sortate din motive de performanță.'''",
- "checkuser-log-userips": "$1 a verificat IP-urile lui $2",
- "checkuser-log-ipedits": "$1 a verificat modificările efectuate de $2",
- "checkuser-log-ipusers": "$1 a verificat conturile lui $2",
- "checkuser-log-ipedits-xff": "$1 a verificat modificările efectuate de la adresa XFF $2",
- "checkuser-log-ipusers-xff": "$1 a verificat conturile lui XFF $2",
- "checkuser-log-useredits": "$1 a verificat modificările efectuate de $2",
"checkuser-autocreate-action": "a fost creat automat",
"checkuser-create-action": "a fost creat",
"checkuser-email-action": "trimite email utilizatorului „$1”",
diff --git a/CheckUser/i18n/roa-tara.json b/CheckUser/i18n/roa-tara.json
index d35cbaeb..2e3490b6 100644
--- a/CheckUser/i18n/roa-tara.json
+++ b/CheckUser/i18n/roa-tara.json
@@ -21,13 +21,12 @@
"grouppage-checkuser": "{{ns:project}}:Utende ca verifiche",
"checkuser-reason": "Mutive:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Fà vedè l'archivije",
+ "checkuser-showlog": "Cange sus a l'archivije CheckUser",
"checkuser-query": "Inderroghe l'urteme cangiaminde",
"checkuser-target": "Indirizze IP o utende:",
"checkuser-users": "Pigghje l'utende",
"checkuser-edits": "Pigghje le cangiaminde",
"checkuser-ips": "Pigghje l'IP",
- "checkuser-search": "Cirche",
"checkuser-period": "Durete:",
"checkuser-week-1": "urtema sumane",
"checkuser-week-2": "urteme doje sumane",
@@ -48,6 +47,8 @@
"checkuser-localonly": "Non unificate",
"checkuser-massblock": "Bluecche l'utinde scacchiate",
"checkuser-massblock-text": "Le cunde utinde scacchiate honne a essere bloccate pe' 'nu timbe 'ndeterminate, c'u blocche automateche de le inderizze IP e 'a ccrejàzione cunde utinde desattevate.\nLe inderizze IP honne a essere bloccate pe' 'na sumáne sule pe' l'utinde anonime e 'a ccrejàzione cunde utinde ha ddà esere desattevate.",
+ "checkuser-blockemail": "No fà mannà email a l'utinde",
+ "checkuser-blocktalk": "Non ge face cangià a stu utende 'a pàgena de le 'ngazzaminde sue fine ca jè bloccate",
"checkuser-blocktag": "Sostituisce le pàggene utinde cu:",
"checkuser-blocktag-talk": "Sostituisce le pàggene de le 'ngazzaminde cu:",
"checkuser-massblock-commit": "Bluecche l'utinde scacchiate",
@@ -55,43 +56,53 @@
"checkuser-block-failure": "'''Nisciune utende blccate.'''",
"checkuser-block-limit": "Troppe utinde scacchiate.",
"checkuser-block-noreason": "Tu à dà 'nu mutive pe le blocche.",
+ "checkuser-centralauth-multilock": "Blocche le cunde scacchiate",
"checkuser-noreason": "Tu à dà 'nu mutive pe st'inderrogazione.",
"checkuser-accounts": "$1 {{PLURAL:$1|cunde utende|cunde utinde}} nuève",
"checkuser-too-many": "Stonne assaje resultate (seconne 'a stime fatte de l'inderrogazzione), pe' piacere restringe 'u CIDR.\nAqquà stonne le IP ausate (5000 masseme, ordenate pe' inderizze):",
"checkuser-user-nonexistent": "L'utende specificate non g'esiste.",
- "checkuser-search-form": "Acchie le vôsce d'u reggistre addò $1 jè $2",
+ "checkuser-search": "Cirche le vôsce jndr'à l'archivije ''check user''",
"checkuser-search-submit": "Cirche",
"checkuser-search-initiator": "iniziatore",
"checkuser-search-target": "destinazione",
+ "checkuser-log-search-target": "Destinazione:",
+ "checkuser-log-search-type": "Cirche pe:",
"checkuser-ipeditcount": "~$1 da tutte l'utinde",
- "checkuser-log-return": "Veje sus a 'u module prengepàle de CheckUser",
+ "checkuser-showmain": "Veje sus a 'u module prengepàle de CheckUser",
"checkuser-limited": "'''Chiste resultate onne state tagghiate pe mutive de performance.'''",
- "checkuser-log-userips": "$1 ha pigghiete le IP pe $2",
- "checkuser-log-ipedits": "$1 ha pigghiete le cangiaminde pe $2",
- "checkuser-log-ipusers": "$1 ha pigghiete le utinde pe $2",
- "checkuser-log-ipedits-xff": "$1 ha pigghiete le cangiaminde pe XFF $2",
- "checkuser-log-ipusers-xff": "$1 ha pigghiete le utinde pe XFF $2",
- "checkuser-log-useredits": "$1 ha pigghiete le cangiaminde pe $2",
+ "checkuser-log-entry-userips": "$3, $1 ha pigghiate le indirizze IP pe $2",
+ "checkuser-log-entry-ipedits": "$3, $1 ha pigghiate le cangiaminde pe $2",
+ "checkuser-log-entry-ipusers": "$3, $1 ha pigghiate le utinde pe $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 ha pigghiate le cangiaminde pe XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 ha pigghiate le utinde pe XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 ha pigghiate le cangiaminde pe $2",
"checkuser-autocreate-action": "ha state ccrejete automaticamende",
"checkuser-create-action": "ha state ccrejate",
"checkuser-email-action": "mannate 'na mail a l'utende \"$1\"",
"checkuser-reset-action": "azzere 'a password pe l'utende \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|'ngazzaminde]] | [[Special:Contributions/$1|condrebbute]] | [[Special:Block/$1|blocche]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|'ngazzaminde]] | [[Special:Contributions/$1|condrebbute]] | [[Special:Block/$1|blocche]])",
"checkuser-token-fail": "Sessione fallite. Pruève arrete.",
"apihelp-query+checkuser-description": "Verifiche quale IP so ausate da 'nu certe nome utende o quale nome de utinde so ausate da 'nu certe IP.",
+ "apihelp-query+checkuser-summary": "Verifiche quale IP so ausate da 'nu certe nome utende o quale nome de utinde so ausate da 'nu certe IP.",
"apihelp-query+checkuser-param-request": "Tipe de richieste de CheckUser:\n;userips:Pigghie l'indirizze IP de l'utende de destinazione.\n;edits:Pigghie le cangiaminde da l'indirizze IP de destinazione o de l'indervalle.\n;ipusers:Pigghie le utinde da l'indirizze IP de destinazione o de l'indervalle..",
"apihelp-query+checkuser-param-target": "Nome de l'utende, indirizze IP o indervalle CIDR da verificà.",
"apihelp-query+checkuser-param-reason": "Mutive d'u condrolle.",
"apihelp-query+checkuser-param-limit": "Limite de righe.",
- "apihelp-query+checkuser-param-timecond": "Tiembe limite de le date utende (cumme \"2 sumàne\").",
+ "apihelp-query+checkuser-param-timecond": "Tiembe limite de le date utende (cumme \"2 sumàne\" o \"2 sumàne fa\").",
"apihelp-query+checkuser-param-xff": "Ause date XFF invece de l'indirizze IP.",
"apihelp-query+checkuser-example-1": "Verifiche l'indirizze IP pe [[User:Example]]",
"apihelp-query+checkuser-example-2": "Verifiche le cangiaminde da 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Pigghie le vôsce da l'archivije CheckUser.",
+ "apihelp-query+checkuserlog-summary": "Pigghie le v147sce de l'archivije d'u CheckUser.",
"apihelp-query+checkuserlog-param-user": "Nome de l'utende de CheckUser.",
"apihelp-query+checkuserlog-param-target": "Utende condrollate, indirizze IP o indervalle CIDR.",
"apihelp-query+checkuserlog-param-limit": "Limite de righe.",
"apihelp-query+checkuserlog-param-from": "Orarie da addò accumenze l'enumerazione.",
"apihelp-query+checkuserlog-param-to": "Orarie da addò spicce l'enumerazione.",
"apihelp-query+checkuserlog-example-1": "Fà vedè le verifiche sus a [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Fà vedè le verifiche de 192.0.2.0/24 apprisse 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Fà vedè le verifiche de 192.0.2.0/24 apprisse 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Tu ha dicere 'nu mutive de verifiche.",
+ "apierror-checkuser-timelimit": "Tu è abbesogne de ausà 'u limite de tiembe corrette (cumme \"-2 sumàne\" o \"2 sumàne rrete\").",
+ "apierror-checkuser-invalidmode": "Mode de richieste invalide"
}
diff --git a/CheckUser/i18n/ru.json b/CheckUser/i18n/ru.json
index f9eeebc2..9ef7950b 100644
--- a/CheckUser/i18n/ru.json
+++ b/CheckUser/i18n/ru.json
@@ -17,7 +17,11 @@
"Silence",
"Александр Сигачёв",
"Okras",
- "Mariya"
+ "Mariya",
+ "Ядерный Трамвай",
+ "Cat1987",
+ "Mailman",
+ "Facenapalm"
]
},
"checkuser-summary": "Данный инструмент может быть использован, чтобы получить IP-адреса, использовавшиеся участником, либо чтобы показать правки/участников, работавших с IP-адреса.\nПравки и пользователи, которые правили с определённого IP-адреса, указанного в X-Forwarded-For, можно получить, добавив постфикс <code>/xff</code> к IP-адресу. Поддерживаемые версии IP: 4 (CIDR $1—32) и 6 (CIDR $2—128).\nИз соображений производительности будут показаны только первые 5000 правок.\nИспользуйте эту страницу '''только в соответствии с правилами'''.",
@@ -30,19 +34,18 @@
"group-checkuser": "Проверяющие участников",
"group-checkuser-member": "{{GENDER:$1|проверяющий участников|проверяющая участников}}",
"right-checkuser": "проверка IP-адресов и другой информации участников",
- "right-checkuser-log": "просмотр журнала проверки участников",
+ "right-checkuser-log": "просмотр журнала проверок участников",
"action-checkuser": "проверка IP-адресов и другой информации участников",
- "action-checkuser-log": "просмотр журнала проверки участников",
+ "action-checkuser-log": "просмотр журнала проверок участников",
"grouppage-checkuser": "{{ns:project}}:Проверка участников",
"checkuser-reason": "Причина:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Показать журнал",
+ "checkuser-showlog": "Перейти на журнал проверки участников",
"checkuser-query": "Запросить свежие правки",
"checkuser-target": "IP-адрес или имя участника:",
"checkuser-users": "Получить участников",
"checkuser-edits": "Получить правки",
"checkuser-ips": "Запросить IP-адреса",
- "checkuser-search": "Найти",
"checkuser-period": "Длительность:",
"checkuser-week-1": "последняя неделя",
"checkuser-week-2": "последние две недели",
@@ -62,7 +65,9 @@
"checkuser-wasblocked": "Подвергался блокировке",
"checkuser-localonly": "Не глобальная",
"checkuser-massblock": "Заблокировать выбранных участников",
- "checkuser-massblock-text": "Выбранные учётные записи будут заблокированы бессрочно с автоблокировкой и запретом создания новых учётных записей.\nIP-адреса будут заблокированы на 1 неделю для непредставившихся участников, будет включён запрет на создание учётных записей.",
+ "checkuser-massblock-text": "Выбранные учётные записи будут заблокированы бессрочно с автоблокировкой и запретом создания новых учётных записей.\nIP-адреса будут заблокированы на 1 неделю для непредставившихся участников; будет включён запрет на создание учётных записей.",
+ "checkuser-blockemail": "Запретить отправлять письма по электронной почте",
+ "checkuser-blocktalk": "Запретить редактировать свою страницу обсуждения во время блокировки",
"checkuser-blocktag": "Заменить страницы участников на:",
"checkuser-blocktag-talk": "Заменить страницы обсуждения на:",
"checkuser-massblock-commit": "Заблокировать выбранных участников",
@@ -70,40 +75,53 @@
"checkuser-block-failure": "'''Нет заблокированных участников.'''",
"checkuser-block-limit": "Выбрано слишком много участников.",
"checkuser-block-noreason": "Вы должны указать причину блокировок.",
+ "checkuser-centralauth-multilock": "Глобально заблокировать выбранные учётные записи",
"checkuser-noreason": "Вы должны указать причину для этого запроса.",
"checkuser-accounts": "$1 {{PLURAL:$1|новая учётная запись|новых учётных записи|новых учётных записей}}",
"checkuser-too-many": "Слишком много результатов (согласно оценке запроса), пожалуйста, сузьте CIDR.\nИспользованные IP (максимум 5000, отсортировано по адресу):",
"checkuser-user-nonexistent": "Указанного участника не существует",
- "checkuser-search-form": "Найти записи журнала, где $1 является $2",
+ "checkuser-search": "Поиск по записям журнала проверки пользователя",
"checkuser-search-submit": "Найти",
"checkuser-search-initiator": "инициатор",
"checkuser-search-target": "цель",
+ "checkuser-log-search-target": "Цель:",
+ "checkuser-log-search-type": "Поиск по",
"checkuser-ipeditcount": "~$1 от всех участников",
- "checkuser-log-return": "Перейти к странице проверки участников",
+ "checkuser-showmain": "Перейти к странице проверки участников",
"checkuser-limited": "'''Результаты были усечены чтобы не создавать дополнительной нагрузки на сервер.'''",
- "checkuser-log-userips": "$1 получил IP адреса для $2",
- "checkuser-log-ipedits": "$1 получил правки для $2",
- "checkuser-log-ipusers": "$1 получил учётные записи для $2",
- "checkuser-log-ipedits-xff": "$1 получил правки для XFF $2",
- "checkuser-log-ipusers-xff": "$1 получил учётные записи для XFF $2",
- "checkuser-log-useredits": "$1 получил правки $2",
+ "checkuser-log-entry-userips": "$3 $1 получил IP-адреса для $2",
+ "checkuser-log-entry-ipedits": "$3 $1 получил правки для $2",
+ "checkuser-log-entry-ipusers": "$3 $1 получил учётные записи для $2",
+ "checkuser-log-entry-ipedits-xff": "$3 $1 получил правки для XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3 $1 получил учётные записи для XFF $2",
+ "checkuser-log-entry-useredits": "$3 $1 получил правки для $2",
"checkuser-autocreate-action": "был создан автоматически",
"checkuser-create-action": "создан",
"checkuser-email-action": "отправил письмо участнику «$1»",
"checkuser-reset-action": "сбросил пароль для участника $1",
+ "checkuser-userlinks-ip": "([[User_talk:$1|обсуждение]] | [[Special:Contributions/$1|вклад]] | [[Special:Block/$1|заблокировать]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|обсуждение]] | [[Special:Contributions/$1|вклад]] | [[Special:Block/$1|заблокировать]])",
"checkuser-token-fail": "Сеанс прерван. Пожалуйста, попробуйте еще раз.",
- "apihelp-query+checkuser-description": "Проверить, какие IP-адреса используются заданных именем участника или какие имена участников используются заданным IP-адресом.",
+ "apihelp-query+checkuser-description": "Проверить, какие IP-адреса используются данным именем участника или какие имена участников используются заданным IP-адресом.",
+ "apihelp-query+checkuser-summary": "Проверить, какие IP-адреса используются данным именем участника или какие имена участников используются заданным IP-адресом.",
+ "apihelp-query+checkuser-param-request": "Тип запроса чекюзера:\n;userips:Получить IP-адрес целевого пользователя.\n; edits:Получить изменения, сделанные с целевого IP-адреса или диапазона адресов.\n;ipusers:Получить пользователей по целевому IP-адресу или диапазону.",
"apihelp-query+checkuser-param-target": "Имя участника, IP-адрес или CIDR-диапазон для проверки.",
"apihelp-query+checkuser-param-reason": "Причина проверки.",
"apihelp-query+checkuser-param-limit": "Ограничение количества строк.",
- "apihelp-query+checkuser-param-timecond": "Ограничение по времени для данных об участнике (например, «2 недели»).",
+ "apihelp-query+checkuser-param-timecond": "Ограничение по времени для данных об участнике (например, «-2 weeks» или «2 weeks ago»).",
"apihelp-query+checkuser-param-xff": "Использовать XFF-данные вместо IP-адреса.",
"apihelp-query+checkuser-example-1": "Проверить IP-адреса [[User:Example]]",
"apihelp-query+checkuser-example-2": "Проверить правки с 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Получить записи из журнала проверки участников (CheckUser).",
+ "apihelp-query+checkuserlog-summary": "Получить записи из журнала проверки участников.",
+ "apihelp-query+checkuserlog-param-user": "Имя пользователя чекюзера.",
+ "apihelp-query+checkuserlog-param-target": "Проверенный участник, IP-адрес или CIDR-диапазон.",
"apihelp-query+checkuserlog-param-limit": "Ограничение количества строк.",
"apihelp-query+checkuserlog-param-from": "Метка времени, с которого нужно начинать перечисление.",
"apihelp-query+checkuserlog-param-to": "Метка времени, до которого делать перечисление.",
"apihelp-query+checkuserlog-example-1": "Показать проверки [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Показать проверки 192.0.2.0/24 начиная с 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Показать проверки 192.0.2.0/24 начиная с 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Вы должны указать причину для проверки.",
+ "apierror-checkuser-timelimit": "Вам необходимо использовать правильное ограничение по времени (например, «-2 weeks» или «2 weeks ago»).",
+ "apierror-checkuser-invalidmode": "Недопустимый режим запроса"
}
diff --git a/CheckUser/i18n/rue.json b/CheckUser/i18n/rue.json
index ca42ccbb..87b6707b 100644
--- a/CheckUser/i18n/rue.json
+++ b/CheckUser/i18n/rue.json
@@ -62,12 +62,6 @@
"checkuser-ipeditcount": "асі $1 од вшыткых хоснователїв",
"checkuser-log-return": "Перекапчати на на головный формуларь Перевіркы хоснователя",
"checkuser-limited": "'''Резултаты были з выконостных причін скорочены.'''",
- "checkuser-log-userips": "$1 обтримав IP адресы про $2",
- "checkuser-log-ipedits": "$1 отбримав едітованя про $2",
- "checkuser-log-ipusers": "$1 обтримав конта про $2",
- "checkuser-log-ipedits-xff": "$1 обтримав едітованя про XFF $2",
- "checkuser-log-ipusers-xff": "$1 обтримав конта про XFF $2",
- "checkuser-log-useredits": "$1 обтримав едітованя про $2",
"checkuser-autocreate-action": "створеный автоматічно",
"checkuser-create-action": "створено",
"checkuser-email-action": "послав ел. пошту хоснователёві „$1“",
diff --git a/CheckUser/i18n/sah.json b/CheckUser/i18n/sah.json
index e23cd005..7cdc8eed 100644
--- a/CheckUser/i18n/sah.json
+++ b/CheckUser/i18n/sah.json
@@ -22,7 +22,6 @@
"checkuser-users": "Кыттаачылары ыларга",
"checkuser-edits": "Көннөрүүлэри көрүү",
"checkuser-ips": "IP-лары көрдөр",
- "checkuser-search": "Көрдөө",
"checkuser-period": "Уһуна:",
"checkuser-week-1": "бүтэһик нэдиэлэ",
"checkuser-week-2": "бүтэһик икки нэдиэлэ",
@@ -54,21 +53,15 @@
"checkuser-accounts": "$1 саҥа {{PLURAL:$1|аат|ааттар}}",
"checkuser-too-many": "Наһаа элбэх булулунна (көрдөбүл түмүгүнэн), бука диэн CIDR кыччатан биэр. \nТуһаныллыбыт IP (саамай элбэҕэ 5000, бу аадырыһынан наардаммыт):",
"checkuser-user-nonexistent": "Маннык ааттаах кыттааччы суох",
- "checkuser-search-form": "$1 сурунаалга $2 буоларын бул",
+ "checkuser-search": "Көрдөө",
"checkuser-search-submit": "Буларга",
"checkuser-search-initiator": "саҕалааччы",
"checkuser-search-target": "сыал-сорук",
"checkuser-ipeditcount": "~$1 бары кыттааччылартан",
- "checkuser-log-return": "Кытааччылары бэрэбиэркэлээһин сүрүн сирэйигэр төнүн",
+ "checkuser-showmain": "Кытааччылары бэрэбиэркэлээһин сүрүн сирэйигэр төнүн",
"checkuser-limited": "'''Түмүк, сиэрбэри наһаа ноҕуруускалаамаары, сорҕото быһыллыбыт.'''",
- "checkuser-log-userips": "$1 манна анаан $2 IP аадырыстаах",
- "checkuser-log-ipedits": "$1 манна анаан $2 көннөрүүлэрдээх",
- "checkuser-log-ipusers": "$1 манна анаан $2 ааттардаах (учётные записи)",
- "checkuser-log-ipedits-xff": "$1 манна анаан XFF $2 көннөрүүлэрдээх",
- "checkuser-log-ipusers-xff": "$1 кыттаачылары ылбыт (для XFF $2)",
- "checkuser-log-useredits": "$1 $2 көннөрүүлэрин ылбыт",
"checkuser-autocreate-action": "аптамаатынан оҥоһуллубут",
"checkuser-create-action": "оҥоһуллубут",
"checkuser-email-action": "\"$1\" кыттаачыга сурук ыыппыт",
- "checkuser-reset-action": "\"$1\" киирии тылын бырахпыт"
+ "checkuser-reset-action": "\"$1\" кыттааччы аһарык тылын бырахпыт"
}
diff --git a/CheckUser/i18n/scn.json b/CheckUser/i18n/scn.json
index 6984e58f..a52539e3 100644
--- a/CheckUser/i18n/scn.json
+++ b/CheckUser/i18n/scn.json
@@ -68,12 +68,6 @@
"checkuser-ipeditcount": "~$1 di tutti pari l’utenti",
"checkuser-log-return": "Torna ô mòdulu principali dû cuntrollu di l'utenti",
"checkuser-limited": "'''Li risurtati foru tagghiati pi mutivi di pristazzioni.'''",
- "checkuser-log-userips": "$1 vosi canùsciri li nnirizzi IP di $2",
- "checkuser-log-ipedits": "$1 vosi canùsciri li canciamenti fatti dû nnirizzu $2",
- "checkuser-log-ipusers": "$1 vosi canùsciri l'utenti cu nnirizzu $2",
- "checkuser-log-ipedits-xff": "$1 vosi canùsciri li canciamenti fatti dû nnirizzu $2 via XFF",
- "checkuser-log-ipusers-xff": "$1 vosi canùsciri l'utenti cu nnirizzu $2 via XFF",
- "checkuser-log-useredits": "$1 vosi canùsciri li canciamenti fatti di $2",
"checkuser-autocreate-action": "fu criatu autumaticamenti",
"checkuser-create-action": "fu criatu",
"checkuser-email-action": "mannau nu missaggiu di posta elittrònica a «$1»",
diff --git a/CheckUser/i18n/sco.json b/CheckUser/i18n/sco.json
new file mode 100644
index 00000000..73cbaddf
--- /dev/null
+++ b/CheckUser/i18n/sco.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "AmaryllisGardener"
+ ]
+ },
+ "checkuser-blocktag": "Replace uiser pages wi:"
+}
diff --git a/CheckUser/i18n/sd.json b/CheckUser/i18n/sd.json
new file mode 100644
index 00000000..8dc9d8e0
--- /dev/null
+++ b/CheckUser/i18n/sd.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehtab ahmed"
+ ]
+ },
+ "checkuser-all": "سڀ"
+}
diff --git a/CheckUser/i18n/sh.json b/CheckUser/i18n/sh.json
index 447fd9b6..df8d6b1d 100644
--- a/CheckUser/i18n/sh.json
+++ b/CheckUser/i18n/sh.json
@@ -65,12 +65,6 @@
"checkuser-ipeditcount": "~$1 od svih korisnika",
"checkuser-log-return": "Nazad na glavni obrazac za proveravanje korisnika",
"checkuser-limited": "'''Ovi rezultati su skraćeni zbog performansi.'''",
- "checkuser-log-userips": "$1 je dobio IP adrese za $2",
- "checkuser-log-ipedits": "$1 je dobio izmene za XFF $2",
- "checkuser-log-ipusers": "$1 je dobio IP adrese za $2",
- "checkuser-log-ipedits-xff": "$1 je dobio izmene za XFF $2",
- "checkuser-log-ipusers-xff": "$1 je dobio korisnike za XFF $2",
- "checkuser-log-useredits": "$1 preuzeo izmene od $2",
"checkuser-autocreate-action": "je automatski napravljen",
"checkuser-create-action": "je napravljen",
"checkuser-email-action": "e-mail je poslat korisniku „$1“",
diff --git a/CheckUser/i18n/si.json b/CheckUser/i18n/si.json
index aa23a151..d5e491fd 100644
--- a/CheckUser/i18n/si.json
+++ b/CheckUser/i18n/si.json
@@ -60,12 +60,6 @@
"checkuser-ipeditcount": "~$1 සියලුම පරිශිලකයන්ගෙන්",
"checkuser-log-return": "පරිශීලකපිරික්සුම් ප්‍රධාන ෆෝරමය වෙත නැවත යන්න",
"checkuser-limited": "'''කාර්ය සාධනය හේතුන් නිසා ප්‍රතිපල ලුප්ත කරන ලදී.'''",
- "checkuser-log-userips": "සංස්කරණය සඳහා $2 විසින් භාවිත කෙරුණු අන්තර්ජාල ලිපිනයන් $1 විසින් පරික්‍ෂා කොට දැනගෙන ඇත",
- "checkuser-log-ipedits": "$2 අන්තර්ජාල ලිපිනය වෙතින් සිදු කෙරුණු සංස්කරණයන් $1 විසින් පරික්‍ෂා කොට දැනගෙන ඇත",
- "checkuser-log-ipusers": "$2 අන්තර්ජාල ලිපිනය භාවිතා කල පරිශීලකයන් $1 විසින් පරික්‍ෂා කොට දැනගෙන ඇත",
- "checkuser-log-ipedits-xff": "$2 XFF අන්තර්ජාල ලිපිනය මගින් සිදු කෙරුණු සංස්කරණයන් $1 විසින් පරික්‍ෂා කොට දැනගෙන ඇත",
- "checkuser-log-ipusers-xff": "$2 XFF අන්තර්ජාල ලිපිනය භාවිතා කල පරිශීලකයන් $1 විසින් පරික්‍ෂා කොට දැනගෙන ඇත",
- "checkuser-log-useredits": "$2 අන්තර්ජාල ලිපිනය වෙතින් සිදු කෙරුණු සංස්කරණයන් $1 විසින් පරික්‍ෂා කොට දැනගෙන ඇත",
"checkuser-autocreate-action": "ස්වයංක්‍රීය ලෙස තැනිණි",
"checkuser-create-action": "තනන ලදී",
"checkuser-email-action": " \"$1\" පරිශීලක වෙත විද්‍යුත්-ගැපෑලක් යැවිණි",
diff --git a/CheckUser/i18n/sk.json b/CheckUser/i18n/sk.json
index c2c8da07..a6eccba6 100644
--- a/CheckUser/i18n/sk.json
+++ b/CheckUser/i18n/sk.json
@@ -29,7 +29,6 @@
"checkuser-users": "Získať používateľov",
"checkuser-edits": "Získať úpravy",
"checkuser-ips": "Získať IP adresy",
- "checkuser-search": "Hľadať",
"checkuser-period": "Trvanie:",
"checkuser-week-1": "posledný týždeň",
"checkuser-week-2": "posledné dva týždne",
@@ -50,6 +49,8 @@
"checkuser-localonly": "Nezjednotené",
"checkuser-massblock": "Zablokovať vybraných používateľov",
"checkuser-massblock-text": "Vybrané účty sa zablokujú na neurčito, automatické blokovanie bude zapnuté a vytváranie účtov vypnuté.\nIP adresy sa zablokujú na 1 týždeň pri iba anonymných používateľoch a vytváranie účtov bude vypnuté.",
+ "checkuser-blockemail": "Brániť v posielaní e-mailov",
+ "checkuser-blocktalk": "Zabrániť editovať vlastnú používateľskú diskusiu po dobu bloku",
"checkuser-blocktag": "Nahradiť používateľké stránky textom:",
"checkuser-blocktag-talk": "nahradiť diskusné stránky čím:",
"checkuser-massblock-commit": "Zablokovať vybraných používateľov",
@@ -57,25 +58,28 @@
"checkuser-block-failure": "'''Žiaden používateľ nebol zablokovaný.'''",
"checkuser-block-limit": "Bolo zvolených príliš veľa používateľov.",
"checkuser-block-noreason": "Musíte zadať dôvod blokovaní.",
+ "checkuser-centralauth-multilock": "Hromadne zamknúť zvolené účty",
"checkuser-noreason": "Musíte uviesť dôvod tejto požiadavky.",
"checkuser-accounts": "$1 {{PLURAL:$1|nový účet|nové účty|nových účtov}}",
"checkuser-too-many": "Príliš veľa výsledkov (podľa odhadu požiadavky), prosím zúžte CIDR.\nTu sú použité IP (max. 5 000, zoradené podľa adresy):",
"checkuser-user-nonexistent": "Uvedený používateľ neexistuje.",
- "checkuser-search-form": "Nájsť položky záznamu, kde $1 je $2",
+ "checkuser-search": "Hľadať",
"checkuser-search-submit": "Hľadať",
"checkuser-search-initiator": "začínajúci",
"checkuser-search-target": "cieľ",
+ "checkuser-log-search-target": "Cieľ:",
+ "checkuser-log-search-type": "Hľadať podľa:",
"checkuser-ipeditcount": "asi $1 zo všetkých používateľov",
- "checkuser-log-return": "Návrat na hlavný formulár kontroly používateľa",
+ "checkuser-showmain": "Návrat na hlavný formulár kontroly používateľa",
"checkuser-limited": "'''Tieto výsledky boli z výkonnostných dôvodov skrátené.'''",
- "checkuser-log-userips": "$1 má IP adresy $2",
- "checkuser-log-ipedits": "$1 má úpravy $2",
- "checkuser-log-ipusers": "$1 má používateľov $2",
- "checkuser-log-ipedits-xff": "$1 má úpravy XFF $2",
- "checkuser-log-ipusers-xff": "$1 má používateľov XFF $2",
- "checkuser-log-useredits": "$1 má úpravy $2",
+ "checkuser-log-entry-userips": "$3, $1 zisťuje IP adresy používateľa $2",
+ "checkuser-log-entry-ipedits": "$3, $1 zisťuje úpravy z $2",
+ "checkuser-log-entry-ipusers": "$3, $1 zisťuje používateľa z $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 zisťuje úpravy s XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 zisťuje používateľa s XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 zisťuje úpravy používateľa $2",
"checkuser-autocreate-action": "bol automaticky vytvorený",
"checkuser-create-action": "bol vytvorený",
- "checkuser-email-action": "poslaný email používateľovi „$1”",
- "checkuser-reset-action": "vytvoriť nové heslo pre používateľa „$1”"
+ "checkuser-email-action": "odoslal e-mail používateľovi „$1”",
+ "checkuser-reset-action": "požiadal o nové heslo pre používateľa „$1”"
}
diff --git a/CheckUser/i18n/sl.json b/CheckUser/i18n/sl.json
index daed08a3..08ab72d1 100644
--- a/CheckUser/i18n/sl.json
+++ b/CheckUser/i18n/sl.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Dbc334"
+ "Dbc334",
+ "Janezdrilc"
]
},
"checkuser-summary": "Orodje pregleda zadnje spremembe, da pridobi IP-naslove, ki jih uporablja uporabnik, ali prikaže podatke urejanja/uporabniške podatke IP-naslova.\nUporabniki in urejanja odjemalčevega IP-naslova se lahko pridobijo preko glav XFF tako, da se IP-naslovu pripne »/xff«. Podprta sta IPv4 (CIDR $1-32) in IPv6 (CIDR $2-128).\nZaradi zmogljivostnih razlogov se ne prikaže več kot 5.000 urejanj.\nOrodje uporabljajte v skladu s pravilnikom.",
@@ -11,8 +12,8 @@
"checkuserlog": "Dnevnik CheckUser",
"checkuser-contribs": "preveri uporabnikove IP-naslove",
"checkuser-contribs-log": "nedavna preverjanja uporabnikov",
- "group-checkuser": "Preveri uporabnike",
- "group-checkuser-member": "{{GENDER:$1|preverjalec|preverjalka}} uporabnikov",
+ "group-checkuser": "Preverjevalci uporabnikov",
+ "group-checkuser-member": "{{GENDER:$1|preverjevalec|preverjevalka}} uporabnikov",
"right-checkuser": "Preverjanje uporabnikovih IP-naslovov in drugih informacij",
"right-checkuser-log": "Ogled dnevnika preverjanja uporabnikov",
"action-checkuser": "preverjanje uporabnikovih IP-naslovov in drugih informacij",
@@ -20,13 +21,12 @@
"grouppage-checkuser": "{{ns:project}}:Preveri uporabnika",
"checkuser-reason": "Razlog:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Prikaži dnevnik",
+ "checkuser-showlog": "Preklopi na dnevnik CheckUser",
"checkuser-query": "Poizvedi zadnje spremembe",
"checkuser-target": "IP-naslov ali uporabniško ime:",
"checkuser-users": "Dobi uporabnike",
"checkuser-edits": "Dobi urejanja",
"checkuser-ips": "Dobi IP-naslove",
- "checkuser-search": "Iskanje",
"checkuser-period": "Trajanje:",
"checkuser-week-1": "pretekli teden",
"checkuser-week-2": "pretekla dva tedna",
@@ -58,19 +58,13 @@
"checkuser-accounts": "$1 {{PLURAL:$1|nov račun|nova računa|novi računi|novih računov}}",
"checkuser-too-many": "Preveč rezultatov (glede na oceno poizvedbe), prosimo zožite CIDR.\nTukaj so uporabljeni IP-naslovi (največ 5000, razvrščeni po naslovu):",
"checkuser-user-nonexistent": "Določen uporabnik ne obstaja.",
- "checkuser-search-form": "Najdi dnevniške vnose, kjer je $1 enak $2",
+ "checkuser-search": "Iskanje vnosov v dnevniku CheckUser",
"checkuser-search-submit": "Išči",
"checkuser-search-initiator": "sprožitelj",
"checkuser-search-target": "cilj",
"checkuser-ipeditcount": "~$1 od vseh uporabnikov",
- "checkuser-log-return": "Preklopi na glavni obrazec CheckUser",
+ "checkuser-showmain": "Preklopi na glavni obrazec CheckUser",
"checkuser-limited": "'''Rezultati so bili okrnjeni iz zmogljivostnih razlogov.'''",
- "checkuser-log-userips": "$1 je pridobil(-a) IP-naslove $2",
- "checkuser-log-ipedits": "$1 je pridobil(-a) urejanja $2",
- "checkuser-log-ipusers": "$1 je pridobil(-a) uporabnike $2",
- "checkuser-log-ipedits-xff": "$1 je pridobil(-a) urejanja XFF $2",
- "checkuser-log-ipusers-xff": "$1 je pridobil(-a) uporabnike XFF $2",
- "checkuser-log-useredits": "$1 je pridobil(-a) urejanja $2",
"checkuser-autocreate-action": "je bil samodejno ustvarjen",
"checkuser-create-action": "je bil ustvarjen",
"checkuser-email-action": "pošlji e-pošto uporabniku »$1«",
diff --git a/CheckUser/i18n/sq.json b/CheckUser/i18n/sq.json
index 52c869b5..1d40508e 100644
--- a/CheckUser/i18n/sq.json
+++ b/CheckUser/i18n/sq.json
@@ -2,11 +2,13 @@
"@metadata": {
"authors": [
"Dori",
- "Ammartivari"
+ "Ammartivari",
+ "Toplove12"
]
},
"checkuser": "Kontrollo përdoruesin",
"checkuser-reason": "Arsyeja:",
"checkuser-blocked": "Bllokuar",
- "checkuser-wasblocked": "Bllokuar më parë"
+ "checkuser-wasblocked": "Bllokuar më parë",
+ "checkuser-log-search-type": "Kërko nga:"
}
diff --git a/CheckUser/i18n/sr-ec.json b/CheckUser/i18n/sr-ec.json
index 7854e783..87c598f6 100644
--- a/CheckUser/i18n/sr-ec.json
+++ b/CheckUser/i18n/sr-ec.json
@@ -9,7 +9,8 @@
"Јованвб",
"Жељко Тодоровић",
"Михајло Анђелковић",
- "Обрадовић Горан"
+ "Обрадовић Горан",
+ "Сербијана"
]
},
"checkuser-summary": "Ова алатка прегледа скорашње измене и враћа ИП адресе које је корисник користио или показује податке о кориснику/изменама за дати ИП. Корисници и измене клијентског ИП се могу добавити преко XFF заглавља додавањем <code>/xff</code> иза ИП адресе. Подржани су формати IPv4 (CIDR $1-32) и IPv6 (CIDR $2-128).\nЗбог перформанси неће бити враћено више од 5000 измена.\nАлатку користите у складу са политиком.",
@@ -28,13 +29,12 @@
"grouppage-checkuser": "{{ns:project}}:Чекјузер",
"checkuser-reason": "Разлог:",
"checkuser-reason-api": "АПИ: $1",
- "checkuser-showlog": "Прикажи дневник",
+ "checkuser-showlog": "Прикажи дневник чекјузера",
"checkuser-query": "Упит на скорашње измене.",
"checkuser-target": "Корисничко име или ИП адреса:",
"checkuser-users": "Добави кориснике",
"checkuser-edits": "Добави измене",
"checkuser-ips": "Добави ИП адресе",
- "checkuser-search": "Претрага",
"checkuser-period": "Трајање:",
"checkuser-week-1": "последња недеља",
"checkuser-week-2": "последње две недеље",
@@ -55,6 +55,8 @@
"checkuser-localonly": "Није унифицирано",
"checkuser-massblock": "Блокирај изабране кориснике",
"checkuser-massblock-text": "Изабрани налози ће бити блокирани на неодређено, уз обележене опције аутоблокирања и забране прављења налога.\nИП адресе ће бити блокиране на недељу дана за ИП кориснике, уз забрану прављења налога.",
+ "checkuser-blockemail": "Онемогући кориснику да шаље имејлове",
+ "checkuser-blocktalk": "Онемогући кориснику да уређује своју страницу за разговор",
"checkuser-blocktag": "Замени корисничке странице са:",
"checkuser-blocktag-talk": "Замени стране за разговор са:",
"checkuser-massblock-commit": "Блокирај изабраног корисника",
@@ -66,21 +68,16 @@
"checkuser-accounts": "$1 {{PLURAL:$1|нови налог|нова налога|нових налога}}",
"checkuser-too-many": "Нађено је превише резултата (према процени захтева). Молимо Вас да сузите CIDR.\nОвде су коришћене ИП адресе (највише 5.000, сортираних по адреси):",
"checkuser-user-nonexistent": "Наведени корисник не постоји.",
- "checkuser-search-form": "Пронађи ставке у дневнику где је $1 једнако $2",
+ "checkuser-search": "Претрага дневника чекјузера",
"checkuser-search-submit": "Претражи",
"checkuser-search-initiator": "покретач",
"checkuser-search-target": "циљ",
+ "checkuser-log-search-target": "Циљ:",
"checkuser-ipeditcount": "~$1 од свих корисника",
- "checkuser-log-return": "Назад на главни образац за проверавање корисника",
+ "checkuser-showmain": "Назад на главни образац за проверавање корисника",
"checkuser-limited": "'''Ови резултати су скраћени због перформанси.'''",
- "checkuser-log-userips": "$1 је добио ИП адресе за $2",
- "checkuser-log-ipedits": "$1 је добио измене за $2",
- "checkuser-log-ipusers": "$1 је добио кориснике за $2",
- "checkuser-log-ipedits-xff": "$1 је добио измене за XFF $2",
- "checkuser-log-ipusers-xff": "$1 је добио кориснике за XFF $2",
- "checkuser-log-useredits": "$1 преузео измене од $2",
"checkuser-autocreate-action": "је аутоматски направљен",
"checkuser-create-action": "је направљен",
- "checkuser-email-action": "е-порука је послата кориснику „$1“",
+ "checkuser-email-action": "имејл је послат кориснику „$1“",
"checkuser-reset-action": "resetuj lozinku za korisnika „$1“"
}
diff --git a/CheckUser/i18n/sr-el.json b/CheckUser/i18n/sr-el.json
index ac94fa25..7be3e0d5 100644
--- a/CheckUser/i18n/sr-el.json
+++ b/CheckUser/i18n/sr-el.json
@@ -4,7 +4,8 @@
"Michaello",
"Milicevic01",
"Жељко Тодоровић",
- "Михајло Анђелковић"
+ "Михајло Анђелковић",
+ "Сербијана"
]
},
"checkuser-summary": "Ova alatka pregleda skorašnje izmene i vraća IP adrese koje je korisnik koristio ili pokazuje podatke o korisniku/izmenama za dati IP. Korisnici i izmene klijentskog IP se mogu dobaviti preko XFF zaglavlja dodavanjem <code>/xff</code> iza IP adrese. Podržani su formati IPv4 (CIDR $1-32) i IPv6 (CIDR $2-128).\nZbog performansi neće biti vraćeno više od 5000 izmena.\nAlatku koristite u skladu sa politikom.",
@@ -22,13 +23,12 @@
"grouppage-checkuser": "{{ns:project}}:Čekjuzer",
"checkuser-reason": "Razlog:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Prikaži dnevnik",
+ "checkuser-showlog": "Prikaži dnevnik čekjuzera",
"checkuser-query": "Upit na skorašnje izmene.",
"checkuser-target": "Korisničko ime ili IP adresa:",
"checkuser-users": "Dobavi korisnike",
"checkuser-edits": "Dobavi izmene",
"checkuser-ips": "Dobavi IP adrese",
- "checkuser-search": "Pretraga",
"checkuser-period": "Trajanje:",
"checkuser-week-1": "poslednja nedelja",
"checkuser-week-2": "poslednje dve nedelje",
@@ -49,6 +49,8 @@
"checkuser-localonly": "Nije unificirano",
"checkuser-massblock": "Blokiraj izabrane korisnike",
"checkuser-massblock-text": "Izabrani nalozi će biti blokirani na neodređeno, uz obeležene opcije autoblokiranja i zabrane pravljenja naloga.\nIP adrese će biti blokirane na nedelju dana za IP korisnike, uz zabranu pravljenja naloga.",
+ "checkuser-blockemail": "Onemogući korisniku da šalje imejlove",
+ "checkuser-blocktalk": "Onemogući korisniku da uređuje svoju stranicu za razgovor",
"checkuser-blocktag": "Zameni korisničke stranice sa:",
"checkuser-blocktag-talk": "Zameni strane za razgovor sa:",
"checkuser-massblock-commit": "Blokiraj izabranog korisnika",
@@ -60,21 +62,15 @@
"checkuser-accounts": "$1 {{PLURAL:$1|novi nalog|nova naloga|novih naloga}}",
"checkuser-too-many": "Nađeno je previše rezultata (prema proceni zahteva). Molimo Vas da suzite CIDR.\nOvde su korišćene IP adrese (najviše 5.000, sortiranih po adresi):",
"checkuser-user-nonexistent": "Navedeni korisnik ne postoji.",
- "checkuser-search-form": "Pronađi stavke u dnevniku gde je $1 jednako $2",
+ "checkuser-search": "Pretraga dnevnika čekjuzera",
"checkuser-search-submit": "Pretraži",
"checkuser-search-initiator": "pokretač",
"checkuser-search-target": "cilj",
"checkuser-ipeditcount": "~$1 od svih korisnika",
- "checkuser-log-return": "Povratak na osnovnu formu čekjuzera.",
+ "checkuser-showmain": "Povratak na osnovnu formu čekjuzera.",
"checkuser-limited": "'''Ovi rezultati su skraćeni zbog performansi.'''",
- "checkuser-log-userips": "$1 je dobio IP adrese za $2",
- "checkuser-log-ipedits": "$1 je dobio izmene za $2",
- "checkuser-log-ipusers": "$1 je dobio korisnike za $2",
- "checkuser-log-ipedits-xff": "$1 je dobio izmene za XFF $2",
- "checkuser-log-ipusers-xff": "$1 je dobio korisnike za XFF $2",
- "checkuser-log-useredits": "$1 preuzeo izmene od $2",
"checkuser-autocreate-action": "je automatski napravljen",
"checkuser-create-action": "je napravljen",
- "checkuser-email-action": "e-poruka je poslata korisniku „$1“",
+ "checkuser-email-action": "imejl je poslata korisniku „$1“",
"checkuser-reset-action": "resetuj lozinku za korisnika „$1“"
}
diff --git a/CheckUser/i18n/stq.json b/CheckUser/i18n/stq.json
index e982ec7d..3623a7dd 100644
--- a/CheckUser/i18n/stq.json
+++ b/CheckUser/i18n/stq.json
@@ -63,12 +63,6 @@
"checkuser-ipeditcount": "~$1 fon aal Benutsere",
"checkuser-log-return": "Tourääch ätter dät CheckUser-Haudformular",
"checkuser-limited": "'''Ju Resultoatelieste wuud uut Performancegruunden kuuted.'''",
- "checkuser-log-userips": "$1 hoalde IP-Adressen foar $2",
- "checkuser-log-ipedits": "$1 hoalde Beoarbaidengen foar $2",
- "checkuser-log-ipusers": "$1 hoalde Benutsere foar $2",
- "checkuser-log-ipedits-xff": "$1 hoalde Beoarbaidengen foar XFF $2",
- "checkuser-log-ipusers-xff": "$1 hoalde Benutsere foar XFF $2",
- "checkuser-log-useredits": "$1 hoalde Beoarbaidengen foar $2",
"checkuser-autocreate-action": "automatisk moaked",
"checkuser-email-action": "E-Mail an „$1“ soand",
"checkuser-reset-action": "Anfoarderenge fon n näi Paaswoud foar „Benutser:$1“"
diff --git a/CheckUser/i18n/su.json b/CheckUser/i18n/su.json
index c0c75181..df2ffeaa 100644
--- a/CheckUser/i18n/su.json
+++ b/CheckUser/i18n/su.json
@@ -2,7 +2,8 @@
"@metadata": {
"authors": [
"Irwangatot",
- "Kandar"
+ "Kandar",
+ "Uchup19"
]
},
"checkuser-desc": "Leler kawenangan pikeun mariksa alamat IP jeung émbaran lianna ti hiji pamaké",
@@ -15,27 +16,21 @@
"checkuser-reason": "Alesan:",
"checkuser-showlog": "Témbongkeun log",
"checkuser-target": "Sandiasma atawa alamat IP:",
- "checkuser-users": "Sungsi pamaké",
- "checkuser-edits": "Sungsi éditan",
- "checkuser-ips": "Sungsi IP",
- "checkuser-search": "Sungsi",
+ "checkuser-users": "Paluruh pamaké",
+ "checkuser-edits": "Paluruh éditan",
+ "checkuser-ips": "Paluruh IP",
"checkuser-empty": "Logna kosong.",
"checkuser-nomatch": "Euweuh nu cocog.",
"checkuser-check": "Pariksa",
"checkuser-log-fail": "Teu bisa nambahkeun kana log",
- "checkuser-nolog": "Koropak log teu kapanggih.",
+ "checkuser-nolog": "Log berkas teu kapanggih.",
"checkuser-blocked": "Dipeungpeuk",
"checkuser-too-many": "Hasilna loba teuing, heureutan CIDR-na.\nDi handap ieu béréndélan IP nu dipaké (paling loba 5000, disusun dumasar alamat):",
"checkuser-user-nonexistent": "Euweuh pamaké nu cocog jeung pamundut.",
- "checkuser-search-form": "Téang éntri log nu $1-na sarua jeung $2",
- "checkuser-search-submit": "Sungsi",
+ "checkuser-search": "Paluruh éntri log pamaké",
+ "checkuser-search-submit": "Paluruh",
"checkuser-search-initiator": "inisiator",
"checkuser-search-target": "tujul",
"checkuser-ipeditcount": "~$1 ti sakumna pamaké",
- "checkuser-log-return": "Balik ka formulir utama PamakéPamariksa",
- "checkuser-log-userips": "$1 manggih IP ti $2",
- "checkuser-log-ipedits": "$1 manggih éditan ti $2",
- "checkuser-log-ipusers": "$1 manggih pamaké ti $2",
- "checkuser-log-ipedits-xff": "$1 manggih éditan ti XFF $2",
- "checkuser-log-ipusers-xff": "$1 manggih pamaké ti XFF $2"
+ "checkuser-showmain": "Balik ka formulir utama PamakéPamariksa"
}
diff --git a/CheckUser/i18n/sv.json b/CheckUser/i18n/sv.json
index cd3d51bc..01917547 100644
--- a/CheckUser/i18n/sv.json
+++ b/CheckUser/i18n/sv.json
@@ -13,7 +13,8 @@
"Hangsna",
"Lokal Profil",
"Jenniesarina",
- "Jopparn"
+ "Jopparn",
+ "McDutchie"
]
},
"checkuser-summary": "Det här verktyget söker igenom de senaste ändringarna för att hämta IP-adresser för en användare, eller redigeringar och användare för en IP-adress.\nAnvändare och redigeringar kan visas med IP-adress från XFF genom att lägga till \"/xff\" efter IP-adressen. Verktyget stödjer IPv4 (CIDR $1-32) och IPv6 (CIDR $2-128).\nPå grund av prestandaskäl så visas inte mer än 5000 redigeringar. Använd verktyget i enlighet med policy.",
@@ -38,7 +39,6 @@
"checkuser-users": "Hämta användare",
"checkuser-edits": "Hämta redigeringar",
"checkuser-ips": "Hämta IP-adresser",
- "checkuser-search": "Sök",
"checkuser-period": "Tidsperiod:",
"checkuser-week-1": "senaste veckan",
"checkuser-week-2": "senaste två veckorna",
@@ -59,6 +59,7 @@
"checkuser-localonly": "Inte sammanslaget",
"checkuser-massblock": "Blockera valda användare",
"checkuser-massblock-text": "Valda konton kommer blockeras på obestämd tid, med autoblockering aktiverad och kontoskapande avaktiverat.\nIP-adresser kommer blockeras i en vecka för anonyma användare, med kontoskapande avaktiverat.",
+ "checkuser-blockemail": "Förhindra från att skicka e-post",
"checkuser-blocktag": "Ersätt användarsidor med:",
"checkuser-blocktag-talk": "Ersätt diskussionssidor med:",
"checkuser-massblock-commit": "Blockera valda användare",
@@ -70,30 +71,32 @@
"checkuser-accounts": "$1 {{PLURAL:$1|nytt konto|nya konton}}",
"checkuser-too-many": "För många resultat (enligt uppskattning). Du bör söka i ett mindre CIDR-block. Här är de IP-adresser som använts (högst 5000, sorterade efter adress):",
"checkuser-user-nonexistent": "Användarnamnet som angavs finns inte.",
- "checkuser-search-form": "Sök efter poster där $1 är $2",
+ "checkuser-search": "Sök",
"checkuser-search-submit": "Sök",
"checkuser-search-initiator": "kontrollanten",
"checkuser-search-target": "kontrollmålet",
"checkuser-ipeditcount": "~$1 från alla användare",
- "checkuser-log-return": "Växla till CheckUser huvudformulär",
+ "checkuser-showmain": "Växla till CheckUser huvudformulär",
"checkuser-limited": "'''Dessa resultat har av prestandaskäl blivit avkortade.'''",
- "checkuser-log-userips": "$1 hämtade IP-adresser för $2",
- "checkuser-log-ipedits": "$1 hämtade redigeringar från $2",
- "checkuser-log-ipusers": "$1 hämtade användare från $2",
- "checkuser-log-ipedits-xff": "$1 hämtade redigeringar från XFF $2",
- "checkuser-log-ipusers-xff": "$1 hämtade användare från XFF $2",
- "checkuser-log-useredits": "$1 hämtade redigeringar för $2",
+ "checkuser-log-entry-userips": "$3, $1 hämtade IP-adresser för $2",
+ "checkuser-log-entry-ipedits": "$3, $1 hämtade redigeringar för $2",
+ "checkuser-log-entry-ipusers": "$3, $1 hämtade användare för $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 hämtade redigeringar för XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 hämtade användare för XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 hämtade redigeringar för $2",
"checkuser-autocreate-action": "skapades automatiskt",
"checkuser-create-action": "skapades",
"checkuser-email-action": "skickade ett mejl till användare \"$1\"",
"checkuser-reset-action": "återställ lösenord för användare \"$1\"",
+ "checkuser-userlinks-ip": "([[User_talk:$1|diskussion]] | [[Special:Contributions/$1|bidrag]] | [[Special:Block/$1|blockera]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|diskussion]] | [[Special:Contributions/$1|bidrag]] | [[Special:Block/$1|blockera]])",
"checkuser-token-fail": "Session misslyckande. Var god försök igen.",
"apihelp-query+checkuser-description": "Kontrollera vilka IP-adresser som används av ett visst användarnamn eller vilka användarnamn som används av en viss IP-adress.",
"apihelp-query+checkuser-param-request": "Typ av CheckUser begäran:\n;userips:Få IP-adresser för målanvändaren.\n;edits:Få ändringar från mål-IP-adresser eller -intervall.\n;ipusers:Få användare från mål-IP-adresser eller -intervall.",
"apihelp-query+checkuser-param-target": "Användarnamn, IP-adress eller CIDR-intervall att kontrollera.",
"apihelp-query+checkuser-param-reason": "Skäl att kontrollera.",
"apihelp-query+checkuser-param-limit": "Begränsning av rader.",
- "apihelp-query+checkuser-param-timecond": "Tidsgräns för användardata (som \"2 weeks\").",
+ "apihelp-query+checkuser-param-timecond": "Tidsgräns för användardata (som \"-2 weeks\" eller \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Använd XFF data istället för IP-adress.",
"apihelp-query+checkuser-example-1": "Kontrollera IP-adresser för [[User:Example]]",
"apihelp-query+checkuser-example-2": "Kontrollera redigeringar från 192.0.2.0/24",
diff --git a/CheckUser/i18n/ta.json b/CheckUser/i18n/ta.json
index dca15760..23005945 100644
--- a/CheckUser/i18n/ta.json
+++ b/CheckUser/i18n/ta.json
@@ -59,7 +59,6 @@
"checkuser-search-submit": "தேடுக",
"checkuser-search-initiator": "தொடக்கக்காரர்",
"checkuser-search-target": "இலக்கு",
- "checkuser-log-ipedits": "$1, $2-க்கான தொகுப்புகளை பெற்றார்",
"checkuser-autocreate-action": "தானகவே உருவாக்கப்பட்டது",
"checkuser-create-action": "உருவாக்கப்பட்டது",
"checkuser-email-action": "\"$1\" பயனருக்கு ஒரு மின்னஞ்சல் அனுப்பப்பட்டது"
diff --git a/CheckUser/i18n/te.json b/CheckUser/i18n/te.json
index d15b0c2e..b2d43213 100644
--- a/CheckUser/i18n/te.json
+++ b/CheckUser/i18n/te.json
@@ -28,7 +28,6 @@
"checkuser-users": "వాడుకరులను తీసుకురా",
"checkuser-edits": "మార్పుచేర్పులను తీసుకురా",
"checkuser-ips": "ఐపీలను తీసుకురా",
- "checkuser-search": "వెతుకు",
"checkuser-period": "నిడివి:",
"checkuser-week-1": "గత వారం",
"checkuser-week-2": "గత రెండు వారాలు",
@@ -46,6 +45,7 @@
"checkuser-wasblocked": "గతంలో నిరోధించబడ్డారు",
"checkuser-localonly": "ఏకీకృతం కాలేదు",
"checkuser-massblock": "ఎంచుకున్న వాడుకరులను నిరోధించు",
+ "checkuser-blockemail": "ఈ-మెయిల్ చెయ్యకుండా నివారించు",
"checkuser-blocktag": "వాడుకరి పేజీలను దీనితో నింపు:",
"checkuser-blocktag-talk": "చర్చా పేజీలను దీనితో నింపు:",
"checkuser-massblock-commit": "ఎంచుకున్న వాడుకరులను నిరోధించు",
@@ -57,20 +57,18 @@
"checkuser-accounts": "$1 కొత్త {{PLURAL:$1|ఖాతా|ఖాతాలు}}",
"checkuser-too-many": "మరీ ఎక్కువ ఫలితాలొచ్చాయి(క్వేరీ ఎస్టిమేటు ప్రకారము), దయచేసి CIDR ను మరింత కుదించండి. వాడిన ఐపీలివిగో (గరిష్ఠంగా 5000 -అడ్రసు వారీగా పేర్చి)",
"checkuser-user-nonexistent": "ఆ వాడుకరి ఉనికిలో లేరు.",
- "checkuser-search-form": "$1 అనేది $2గా ఉన్న చిట్టా పద్దులను కనుగొనండి",
+ "checkuser-search": "వెతుకు",
"checkuser-search-submit": "వెతుకు",
"checkuser-search-initiator": "ఆరంభకుడు",
"checkuser-search-target": "లక్ష్యం",
+ "checkuser-log-search-target": "లక్ష్యం:",
+ "checkuser-log-search-type": "దీని ప్రకారం వెతకండి:",
"checkuser-ipeditcount": "వాడుకరులందరి నుండి ~$1",
- "checkuser-log-return": "CheckUser ముఖ్య ఫారముకు వెళ్ళు",
- "checkuser-log-userips": "$2 కోసం $1 ఐపీలను తెచ్చింది",
- "checkuser-log-ipedits": "$2 కోసం $1 దిద్దుబాట్లను తెచ్చింది",
- "checkuser-log-ipusers": "$2 కోసం $1 వాడుకరులను తెచ్చింది",
- "checkuser-log-ipedits-xff": "XFF $2 కోసం $1, దిద్దుబాట్లను తెచ్చింది",
- "checkuser-log-ipusers-xff": "XFF $2 కోసం $1, వాడుకరులను తెచ్చింది",
- "checkuser-log-useredits": "$2 కోసం $1 దిద్దుబాట్లను తెచ్చింది",
+ "checkuser-showmain": "CheckUser ముఖ్య ఫారముకు వెళ్ళు",
"checkuser-autocreate-action": "యాంత్రికంగా సృష్టించబడింది",
"checkuser-create-action": "సృష్టించిన తేదీ",
"checkuser-email-action": "వాడుకరి \"$1\"కి ఈమెయిలు పంపించాం",
- "checkuser-reset-action": "\"$1\" వాడుకరి సంకేతపదం రీసెట్ చెయ్యి"
+ "checkuser-reset-action": "\"$1\" వాడుకరి సంకేతపదం రీసెట్ చెయ్యి",
+ "checkuser-userlinks-ip": "([[User_talk:$1|చర్చ]] | [[Special:Contributions/$1|రచనలు]] | [[Special:Block/$1|నిరోధించు]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|చర్చ]] | [[Special:Contributions/$1|రచనలు]] | [[Special:Block/$1|నిరోధించు]])"
}
diff --git a/CheckUser/i18n/tg-cyrl.json b/CheckUser/i18n/tg-cyrl.json
index 41424fe8..a8bfa135 100644
--- a/CheckUser/i18n/tg-cyrl.json
+++ b/CheckUser/i18n/tg-cyrl.json
@@ -47,11 +47,6 @@
"checkuser-search-initiator": "оғозгар",
"checkuser-search-target": "ҳадаф",
"checkuser-log-return": "Бозгашт ба форми аслии бозрасии корбар",
- "checkuser-log-userips": "$1 нишонаҳои интернетии IP-ҳои $2ро гирифт",
- "checkuser-log-ipedits": "$1 вироишҳои $2ро гирифт",
- "checkuser-log-ipusers": "$1 корбарони марбут ба $2ро гирифт",
- "checkuser-log-ipedits-xff": "$1 вироишҳои XFF $2ро гирифт",
- "checkuser-log-ipusers-xff": "$1 корбарони марбут ба XFF $2ро гирифт",
"checkuser-autocreate-action": "ба таври худкор эҷод шуда буд",
"checkuser-email-action": "почтаи электронӣ ба корбар \"$1\" фиристода шуд"
}
diff --git a/CheckUser/i18n/tg-latn.json b/CheckUser/i18n/tg-latn.json
index 6db4f909..dfe66341 100644
--- a/CheckUser/i18n/tg-latn.json
+++ b/CheckUser/i18n/tg-latn.json
@@ -45,11 +45,6 @@
"checkuser-search-initiator": "oƣozgar",
"checkuser-search-target": "hadaf",
"checkuser-log-return": "Bozgaşt ba formi asliji bozrasiji korbar",
- "checkuser-log-userips": "$1 nişonahoi internetiji IP-hoi $2ro girift",
- "checkuser-log-ipedits": "$1 viroişhoi $2ro girift",
- "checkuser-log-ipusers": "$1 korbaroni marbut ba $2ro girift",
- "checkuser-log-ipedits-xff": "$1 viroişhoi XFF $2ro girift",
- "checkuser-log-ipusers-xff": "$1 korbaroni marbut ba XFF $2ro girift",
"checkuser-autocreate-action": "ba tavri xudkor eçod şuda bud",
"checkuser-email-action": "poctai elektronī ba korbar \"$1\" firistoda şud"
}
diff --git a/CheckUser/i18n/tg.json b/CheckUser/i18n/tg.json
index 036be1fa..d6259e21 100644
--- a/CheckUser/i18n/tg.json
+++ b/CheckUser/i18n/tg.json
@@ -1,8 +1,8 @@
{
- "@metadata": {
- "authors": [
- "Ibrahim"
- ]
- },
- "right-checkuser-log": "Мушоҳидаи гузоришҳои бозрасии корбарӣ"
+ "@metadata": {
+ "authors": [
+ "Ibrahim"
+ ]
+ },
+ "right-checkuser-log": "Мушоҳидаи гузоришҳои бозрасии корбарӣ"
} \ No newline at end of file
diff --git a/CheckUser/i18n/tk.json b/CheckUser/i18n/tk.json
index b5131fb2..a2e91fe5 100644
--- a/CheckUser/i18n/tk.json
+++ b/CheckUser/i18n/tk.json
@@ -55,12 +55,6 @@
"checkuser-search-initiator": "başladan",
"checkuser-search-target": "niýetlenilýän",
"checkuser-ipeditcount": "ähli ulanyjylardan ~$1",
- "checkuser-log-userips": "$1, $2 üçin IP adresleri aldy",
- "checkuser-log-ipedits": "$1, $2 üçin özgerdişleri aldy",
- "checkuser-log-ipusers": "$1, $2 üçin ulanyjylary aldy",
- "checkuser-log-ipedits-xff": "$1, XFF $2 üçin özgerdişleri aldy",
- "checkuser-log-ipusers-xff": "$1, XFF $2 üçin ulanyjylary aldy",
- "checkuser-log-useredits": "$1, $2 üçin özgerdişleri aldy",
"checkuser-autocreate-action": "awtomatik döredildi",
"checkuser-email-action": "\"$1\" ulanyjysyna e-poçta iberdi",
"checkuser-reset-action": "\"$1\" ulanyjysy üçin paroly başky ýagdaýa getirdi"
diff --git a/CheckUser/i18n/tl.json b/CheckUser/i18n/tl.json
index badcb828..693dc2d7 100644
--- a/CheckUser/i18n/tl.json
+++ b/CheckUser/i18n/tl.json
@@ -67,12 +67,6 @@
"checkuser-ipeditcount": "~$1 mula sa lahat ng mga tagagamit",
"checkuser-log-return": "Lumipat sa pangunahing pormularyo ng Suriin ang Tagagamit",
"checkuser-limited": "'''Pinutol o pinungusan ang mga resulta dahil sa mga kadahilanang panggawain (pagsasagawa).'''",
- "checkuser-log-userips": "Nakakuha si $1 ng mga IP para kay $2",
- "checkuser-log-ipedits": "Nakakuha si $1 ng mga pagbabago para kay $2",
- "checkuser-log-ipusers": "Nakakuha si $1 ng mga tagagamit para sa $2",
- "checkuser-log-ipedits-xff": "Nakakuha si $1 ng mga pagbabago para sa XFF na $2",
- "checkuser-log-ipusers-xff": "Nakakuha si $1 ng mga tagagamit para sa XFF na $2",
- "checkuser-log-useredits": "Nakakuha si $1 ng mga pagbabago para sa $2",
"checkuser-autocreate-action": "ay kusang nalikha",
"checkuser-create-action": "ay nalikha na",
"checkuser-email-action": "nagpadala ng isang e-liham patungo kay tagagamit na \"$1\"",
diff --git a/CheckUser/i18n/tr.json b/CheckUser/i18n/tr.json
index 8786a966..4a95fe72 100644
--- a/CheckUser/i18n/tr.json
+++ b/CheckUser/i18n/tr.json
@@ -9,13 +9,16 @@
"Suelnur",
"Vito Genovese",
"Sadrettin",
- "Ömer Berkay"
+ "Ömer Berkay",
+ "Sayginer",
+ "McDutchie",
+ "HakanIST"
]
},
"checkuser-summary": "Bu araç bir kullanıcı tarafından kullanılan IP'leri almak için son değişiklikleri tarar ya da bir IP için değişiklik/kullanıcı verisini gösterir.\nAlıcı IP'deki kullanıcı ve değişiklikler, IP'ye \"/xff\" eklenmesiyle XFF başlıklarıyla alınabilir. IPv4 (CIDR $1-32) ve IPv6 (CIDR $2-128) desteklenmektedir.\nPerformans nedeniyle 5000'den fazla değişiklik dönmeyecektir.\nBunu ilkelere uygun olarak kullanın.",
"checkuser-desc": "Kullanıcıların IP adreslerini ve diğer bilgilerini denetleme yeteneği için, uygun izinleri kullanıcılara tahsis eder",
"checkuser-logcase": "Günlük araması büyük-küçük harfe duyarlıdır.",
- "checkuser": "IP denetçisi",
+ "checkuser": "Denetçi",
"checkuserlog": "Denetçi kaydı",
"checkuser-contribs": "kullanıcı IPlerini kontrol et",
"checkuser-contribs-log": "son kullanıcı kontrolleri",
@@ -34,13 +37,12 @@
"checkuser-users": "Kullanıcıları bulup getir",
"checkuser-edits": "Değişiklikleri al",
"checkuser-ips": "IPleri bulup getir",
- "checkuser-search": "Ara",
"checkuser-period": "Süre:",
"checkuser-week-1": "son hafta",
"checkuser-week-2": "son iki hafta",
"checkuser-month": "son 30 gün",
"checkuser-all": "hepsi",
- "checkuser-cidr-label": "Bir IP listesi için ortak aralığı ve etkilenen adresleri bul",
+ "checkuser-cidr-label": "Bir IP adresi listesi için ortak aralığı ve etkilenen adresleri bul",
"checkuser-cidr-res": "Ortak CIDR:",
"checkuser-empty": "Günlükte başka öğe yok.",
"checkuser-nomatch": "Eşleşen bulunamadı.",
@@ -54,7 +56,9 @@
"checkuser-wasblocked": "Önceden engellenmiş",
"checkuser-localonly": "Birleştirilmemiş",
"checkuser-massblock": "Seçili kullanıcıları engelle",
- "checkuser-massblock-text": "Seçili hesaplar süresiz olarak engellenecektir, otomatik engelleme devrede ve hesap oluşturma devre dışı olarak.\nIP adresleri sadece IP kullanıcıları için 1 hafta boyunca engellenecektir ve hesap oluşturma devre dışı olacaktır.",
+ "checkuser-massblock-text": "Seçili hesaplar süresiz olarak engellenecektir, IP adresinden otomatik engelleme devrede ve hesap oluşturma devre dışı olarak.\nIP adresleri sadece anonim kullanıcılar için 1 hafta boyunca engellenecektir ve hesap oluşturma devre dışı olacaktır.",
+ "checkuser-blockemail": "E-posta göndermesini önle",
+ "checkuser-blocktalk": "Engelliyken kendi mesaj sayfasında değişiklik yapmasını önle",
"checkuser-blocktag": "Kullanıcı sayfalarını şununla yer değiştir:",
"checkuser-blocktag-talk": "Tartışma sayfalarını şununla yer değiştir:",
"checkuser-massblock-commit": "Seçili kullanıcıları engelle",
@@ -62,23 +66,26 @@
"checkuser-block-failure": "'''Hiçbir kullanıcı engellenmedi.'''",
"checkuser-block-limit": "Çok fazla kullanıcı seçildi.",
"checkuser-block-noreason": "Engellemeler için bir neden belirtmelisiniz.",
- "checkuser-noreason": "Bu sorgu için bir sebep göstermelisiniz.",
+ "checkuser-centralauth-multilock": "Seçili hesapları toplu kilitle",
+ "checkuser-noreason": "Bu sorgu için bir gerekçe göstermelisiniz.",
"checkuser-accounts": "$1 yeni {{PLURAL:$1|hesap|hesap}}",
- "checkuser-too-many": "Çok fazla sonuç var (sorgu tahminine göre), lütfen CIDR'ı daraltın.\nKullanılan IP'ler (max 5000, adrese göre sıralı):",
+ "checkuser-too-many": "Çok fazla sonuç var (sorgu tahminine göre), lütfen CIDR'ı daraltın.\nKullanılan IP'ler (maks 5000, adrese göre sıralı):",
"checkuser-user-nonexistent": "Belirtilen kullanıcı mevcut değil.",
- "checkuser-search-form": "$1'in $2 olduğu günlük girişlerini bul",
+ "checkuser-search": "Denetçi günlüğünde ara",
"checkuser-search-submit": "Ara",
"checkuser-search-initiator": "Başlatan",
"checkuser-search-target": "Hedef",
+ "checkuser-log-search-target": "Hedef:",
+ "checkuser-log-search-type": "Arama ölçütü:",
"checkuser-ipeditcount": "tüm kullanıcılardan ~$1",
- "checkuser-log-return": "KullancıDenetle ana formuna geri dön",
+ "checkuser-showmain": "KullancıDenetle ana formuna geri dön",
"checkuser-limited": "'''Performans nedeniyle sonuçlar kırpıldı.'''",
- "checkuser-log-userips": "$1, $2 için IPleri aldı",
- "checkuser-log-ipedits": "$1, $2 için değişiklikleri aldı",
- "checkuser-log-ipusers": "$1, $2 için kullanıcıları aldı",
- "checkuser-log-ipedits-xff": "$1, XFF $2 için değişiklikleri aldı",
- "checkuser-log-ipusers-xff": "$1, XFF $2 için kullanıcıları aldı",
- "checkuser-log-useredits": "$1, $2 için değişiklikleri aldı",
+ "checkuser-log-entry-userips": "$3, $1 IP adreslerini aldı: $2",
+ "checkuser-log-entry-ipedits": "$3, $1 değişiklikleri aldı: $2",
+ "checkuser-log-entry-ipusers": "$3, $1 kullanıcı isimlerini aldı: $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 değişiklikleri aldı: XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 kullanıcı isimlerini aldı: XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 değişiklikleri aldı: $2",
"checkuser-autocreate-action": "otomatik olarak oluşturuldu",
"checkuser-create-action": "oluşturuldu",
"checkuser-email-action": "\"$1\" kullanıcısına e-posta gönder",
@@ -88,11 +95,12 @@
"apihelp-query+checkuser-param-target": "Kullanıcı adı, IP adresi veya CIDR aralığını kontrol et.",
"apihelp-query+checkuser-param-reason": "Kontrol nedeni.",
"apihelp-query+checkuser-param-limit": "Satır sınırı",
- "apihelp-query+checkuser-param-timecond": "Kullanıcı verilerinin zaman sınırı (\"2 hafta\" gibi).",
+ "apihelp-query+checkuser-param-timecond": "Kullanıcı verilerinin zaman sınırı (\"-2 weeks\" veya \"2 weeks ago\" gibi).",
"apihelp-query+checkuser-param-xff": "IP adresi yerine XFF veri kullanın.",
- "apihelp-query+checkuser-example-1": "[[Kullanıcı:Örnek]] IP adresini kontrol et",
+ "apihelp-query+checkuser-example-1": "[[User:Example]] için IP adreslerini kontrol et",
"apihelp-query+checkuser-example-2": "192.0.2.0/24 tarafından yapılan değişiklikleri kontrol et",
"apihelp-query+checkuserlog-param-user": "Denetçi olan kullanıcı adları.",
"apihelp-query+checkuserlog-param-target": "Kontrol edilen IP adresleri veya CIDR aralığı.",
- "apihelp-query+checkuserlog-param-limit": "Satır sınırı."
+ "apihelp-query+checkuserlog-param-limit": "Satır sınırı.",
+ "apihelp-query+checkuserlog-example-1": "[[User:Example]] için yapılan kontrolleri göster"
}
diff --git a/CheckUser/i18n/tt-cyrl.json b/CheckUser/i18n/tt-cyrl.json
index 2f992e00..269ee060 100644
--- a/CheckUser/i18n/tt-cyrl.json
+++ b/CheckUser/i18n/tt-cyrl.json
@@ -5,6 +5,6 @@
]
},
"group-checkuser": "Кулланучыларны тикшереп торучылар",
- "group-checkuser-member": "кулланучыларны тикшереп торучы",
+ "group-checkuser-member": "{{GENDER:$1|кулланучыларны тикшерүче}}",
"right-checkuser": "куланучының IP-юлламасын тикшерү"
}
diff --git a/CheckUser/i18n/udm.json b/CheckUser/i18n/udm.json
new file mode 100644
index 00000000..593818e8
--- /dev/null
+++ b/CheckUser/i18n/udm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaganer"
+ ]
+ },
+ "checkuser-all": "ваньзэ"
+}
diff --git a/CheckUser/i18n/uk.json b/CheckUser/i18n/uk.json
index f85dfbfc..c98f18b8 100644
--- a/CheckUser/i18n/uk.json
+++ b/CheckUser/i18n/uk.json
@@ -9,7 +9,9 @@
"Prima klasy4na",
"Sodmy",
"Тест",
- "Piramidion"
+ "Piramidion",
+ "Alex Khimich",
+ "Ата"
]
},
"checkuser-summary": "Цей засіб переглядає нові редагування для отримання IP-адрес, які використовував певний користувач, або щоб знайти редагування/користувача за IP-адресою.\nРедагування і користувачів, що редагували з певної IP-адреси, заначеної в X-Forwarded-For, можна отримати, додавши префікс <code>/xff</code> до IP-адреси. Підтримувані версії IP: 4 (CIDR $1—32) і 6 (CIDR $2-128).\nЗ огляду на продуктивність буде показано не більше 5000 редагувань.\nВикористовуйте цей засіб тільки відповідно до правил.",
@@ -28,13 +30,12 @@
"grouppage-checkuser": "{{ns:project}}:Чек'юзери",
"checkuser-reason": "Причина:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Показати журнал",
+ "checkuser-showlog": "Перейти на журнал перевірок",
"checkuser-query": "Переглянути останні зміни",
"checkuser-target": "IP-адреса або ім'я користувача:",
"checkuser-users": "Отримати користувачів",
"checkuser-edits": "Отримати редагування",
"checkuser-ips": "Отримати IP-адреси",
- "checkuser-search": "Знайти",
"checkuser-period": "Тривалість:",
"checkuser-week-1": "останній тиждень",
"checkuser-week-2": "останні два тижні",
@@ -55,6 +56,8 @@
"checkuser-localonly": "Не об'єднана",
"checkuser-massblock": "Заблокувати вибраних користувачів",
"checkuser-massblock-text": "Вибрані облікові записи будуть заблоковані безстроково з автоблокуванням і забороною створення нових облікових записів.\nIP-адреси користувачів, які не увійшли до системи будуть заблоковані на 1 тиждень із забороною створення нових облікових записів.",
+ "checkuser-blockemail": "Заборонити надсилання електронної пошти",
+ "checkuser-blocktalk": "Заборонити редагування власної сторінки обговорення під час блокування",
"checkuser-blocktag": "Замінити сторінки користувачів на:",
"checkuser-blocktag-talk": "Замінити сторінки обговорення на:",
"checkuser-massblock-commit": "Заблокувати вибраних користувачів",
@@ -62,43 +65,53 @@
"checkuser-block-failure": "'''Немає заблокованих користувачів.'''",
"checkuser-block-limit": "Вибрано забагато користувачів.",
"checkuser-block-noreason": "Ви повинні вказати причину блокувань.",
+ "checkuser-centralauth-multilock": "Заблокувати вибрані облікові записи",
"checkuser-noreason": "Вам необхідно зазначити причину цього запиту.",
"checkuser-accounts": "$1 {{PLURAL:$1|новий обліковий запис|нові облікові записи|нових облікових записів}}",
"checkuser-too-many": "Забагато результатів (згідно з оцінкою запиту), будь ласка, звузьте CIDR.\nВикористані IP (максимум 5000, відсортовані за адресою):",
"checkuser-user-nonexistent": "Зазначений користувач не існує.",
- "checkuser-search-form": "Знайти записи журналу, де $1 є $2",
+ "checkuser-search": "Знайти записи в журналі перевірок",
"checkuser-search-submit": "Знайти",
"checkuser-search-initiator": "ініціатор",
"checkuser-search-target": "ціль",
+ "checkuser-log-search-target": "Ціль:",
+ "checkuser-log-search-type": "Пошук за:",
"checkuser-ipeditcount": "~$1 від усіх користувачів",
- "checkuser-log-return": "Перейти до головної сторінки перевірки",
+ "checkuser-showmain": "Перейти до головної сторінки перевірки",
"checkuser-limited": "'''Результати урізано, щоб не обтяжувати сервер.'''",
- "checkuser-log-userips": "$1 отримав IP-адреси для $2",
- "checkuser-log-ipedits": "$1 отримав редагування для $2",
- "checkuser-log-ipusers": "$1 отримав облікові записи для $2",
- "checkuser-log-ipedits-xff": "$1 отримав редагування для XFF $2",
- "checkuser-log-ipusers-xff": "$1 отримав облікові записи для XFF $2",
- "checkuser-log-useredits": "$1 отримав редагування $2",
+ "checkuser-log-entry-userips": "$3, $1 отримав IP-адреси для $2",
+ "checkuser-log-entry-ipedits": "$3, $1 отримав редагування для $2",
+ "checkuser-log-entry-ipusers": "$3, $1 отримав користувачів для $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 отримав редагування для XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 отримав користувачів для XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 отримав редагування для $2",
"checkuser-autocreate-action": "створений автоматично",
"checkuser-create-action": "створено",
"checkuser-email-action": "надіслав листа користувачеві «$1»",
"checkuser-reset-action": "скинув пароль для користувача $1",
+ "checkuser-userlinks-ip": "([[User_talk:$1|обговорення]] | [[Special:Contributions/$1|внесок]] | [[Special:Block/$1|блокувати]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|обговорення]] | [[Special:Contributions/$1|внесок]] | [[Special:Block/$1|блокувати]])",
"checkuser-token-fail": "Помилка сесії. Будь ласка, спробуйте знову.",
"apihelp-query+checkuser-description": "Перевірка того, які IP-адреси використовуються даним іменем користувача, або які імена користувачів використовуються даною IP-адресою.",
+ "apihelp-query+checkuser-summary": "Перевірка того, які IP-адреси використовуються даним іменем користувача, або які імена користувачів використовуються даною IP-адресою.",
"apihelp-query+checkuser-param-request": "Тип запиту перевірки користувача:\n;userips:Отримати IP-адреси цільового користувача.\n;edits:Отримати зміни з цільової IP-адреси або діапазону.\n;ipusers:Отримати користувачів з цільової IP-адреси або діапазону.",
"apihelp-query+checkuser-param-target": "Ім'я користувача, IP-адреса, або CIDR-діапазон для перевірки.",
"apihelp-query+checkuser-param-reason": "Причина перевірки.",
"apihelp-query+checkuser-param-limit": "Обмеження рядків.",
- "apihelp-query+checkuser-param-timecond": "Обмеження часу даних користувача (як то «2 weeks»).",
+ "apihelp-query+checkuser-param-timecond": "Обмеження часу для даних користувача (як то \"-2 weeks\" чи \"2 weeks ago\").",
"apihelp-query+checkuser-param-xff": "Використовуйте XFF-дані замість IP-адреси.",
"apihelp-query+checkuser-example-1": "Перевірити IP-адреси для [[User:Example]]",
"apihelp-query+checkuser-example-2": "Перевірити редагування з 192.0.2.0/24",
"apihelp-query+checkuserlog-description": "Отримати записи з журналу перевірки користувачів.",
+ "apihelp-query+checkuserlog-summary": "Отримати записи з журналу перевірки користувачів.",
"apihelp-query+checkuserlog-param-user": "Ім'я користувача перевіряльника користувачів.",
"apihelp-query+checkuserlog-param-target": "Перевірений користувач, IP-адреса чи CIDR-діапазон.",
"apihelp-query+checkuserlog-param-limit": "Обмеження рядків.",
"apihelp-query+checkuserlog-param-from": "Часова мітка початку переліку.",
"apihelp-query+checkuserlog-param-to": "Часова мітка завершення переліку.",
"apihelp-query+checkuserlog-example-1": "Показати перевірки [[User:Example]]",
- "apihelp-query+checkuserlog-example-2": "Показати перевірки 192.0.2.0/24 після 2011-10-15T23:00:00Z"
+ "apihelp-query+checkuserlog-example-2": "Показати перевірки 192.0.2.0/24 після 2011-10-15T23:00:00Z",
+ "apierror-checkuser-missingsummary": "Вам необхідно зазначити причину для перевірки.",
+ "apierror-checkuser-timelimit": "Вам необхідно використовувати правильне обмеження за часом (наприклад, \"-2 weeks\" або \"2 weeks ago\").",
+ "apierror-checkuser-invalidmode": "Неправильний параметр запиту"
}
diff --git a/CheckUser/i18n/ur.json b/CheckUser/i18n/ur.json
index 2fa1d10a..7f0bcd46 100644
--- a/CheckUser/i18n/ur.json
+++ b/CheckUser/i18n/ur.json
@@ -1,22 +1,25 @@
{
"@metadata": {
"authors": [
- "පසිඳු කාවින්ද"
+ "පසිඳු කාවින්ද",
+ "Muhammad Shuaib"
]
},
"checkuser-logcase": "لاگ ان کریں تلاش کیس حساس ہے.",
"checkuser": "صارف کو چیک کریں",
"checkuserlog": "صارف لاگ ان کریں چیک کریں",
"checkuser-contribs-log": "حال ہی میں صارف کي",
+ "right-checkuser": "صارف کے آئی پی پتوں اور دیگر متعلقہ معلومات کی جانچ",
+ "right-checkuser-log": "نوشتہ صارف پڑتال کا مشاہدہ",
"checkuser-reason": "وجہ:",
"checkuser-showlog": "شو کے لاگ ان کریں",
- "checkuser-search": "تلاش",
"checkuser-week-1": "گزشتہ ہفتے",
"checkuser-week-2": "گزشتہ دو ہفتوں",
"checkuser-month": "گزشتہ 30 دن میں",
"checkuser-all": "سب",
"checkuser-nomatch": "کوئی میچ پایا.",
"checkuser-check": "چیک کریں",
+ "checkuser-search": "تلاش",
"checkuser-search-submit": "تلاش",
"checkuser-search-target": "ہدف"
}
diff --git a/CheckUser/i18n/uz.json b/CheckUser/i18n/uz.json
index 556531c3..2bf33a24 100644
--- a/CheckUser/i18n/uz.json
+++ b/CheckUser/i18n/uz.json
@@ -6,5 +6,6 @@
]
},
"group-checkuser": "Foydalanuvchilarni tekshiruvchilar",
+ "checkuser-search-target": "chetlatiluvchi",
"checkuser-autocreate-action": "avtomatik ravishda yaratilgan"
}
diff --git a/CheckUser/i18n/vec.json b/CheckUser/i18n/vec.json
index f9026d54..80cd0d8c 100644
--- a/CheckUser/i18n/vec.json
+++ b/CheckUser/i18n/vec.json
@@ -61,12 +61,6 @@
"checkuser-ipeditcount": "~$1 par tuti i utenti",
"checkuser-log-return": "Torna al modulo prinçipal de Controlo utenze",
"checkuser-limited": "'''Sti risultati i xe stà tajà a metà par motivi de prestazion.'''",
- "checkuser-log-userips": "$1 el gà otegnù i indirizi IP de $2",
- "checkuser-log-ipedits": "$1 el gà otegnù le modifiche de $2",
- "checkuser-log-ipusers": "$1 el gà otegnù le utenze de $2",
- "checkuser-log-ipedits-xff": "$1 el gà otegnù le modifiche de $2 via XFF",
- "checkuser-log-ipusers-xff": "$1 el gà otegnù le utenze de $2 via XFF",
- "checkuser-log-useredits": "$1 gà otegnù i contributi de $2",
"checkuser-autocreate-action": "xe stà creà automaticamente",
"checkuser-email-action": "gà mandà na e-mail a \"$1\"",
"checkuser-reset-action": "reinposta la password par l'utente \"$1\""
diff --git a/CheckUser/i18n/vi.json b/CheckUser/i18n/vi.json
index b62200f9..dd33bbc3 100644
--- a/CheckUser/i18n/vi.json
+++ b/CheckUser/i18n/vi.json
@@ -21,13 +21,12 @@
"grouppage-checkuser": "{{ns:project}}:Kiểm định viên",
"checkuser-reason": "Lý do:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "Xem nhật trình",
+ "checkuser-showlog": "Chuyển qua nhật trình Checkuser",
"checkuser-query": "Truy vấn các thay đổi gần đây",
"checkuser-target": "Tên người dùng hay địa chỉ IP:",
"checkuser-users": "Lấy ra thành viên",
"checkuser-edits": "Lấy ra sửa đổi",
"checkuser-ips": "Lấy ra IP",
- "checkuser-search": "Tìm kiếm",
"checkuser-period": "Thời gian:",
"checkuser-week-1": "tuần trước",
"checkuser-week-2": "hai tuần trước",
@@ -48,6 +47,8 @@
"checkuser-localonly": "Chưa thống nhất",
"checkuser-massblock": "Cấm các người dùng được chọn",
"checkuser-massblock-text": "Các tài khoản được chọn sẽ bị cấm vô hạn, cũng cấm mở tài khoản và tự động cấm các địa chỉ IP. Những người dùng những địa chỉ IP này sẽ bị cấm một tuần và không được mở tài khoản.",
+ "checkuser-blockemail": "Không cho gửi thư điện tử",
+ "checkuser-blocktalk": "Không cho người dùng này sửa trang thảo luận người dùng của họ khi bị cấm",
"checkuser-blocktag": "Thay thế các trang cá nhân bằng:",
"checkuser-blocktag-talk": "Thay các trang thảo luận bằng:",
"checkuser-massblock-commit": "Cấm những người dùng được chọn",
@@ -55,27 +56,32 @@
"checkuser-block-failure": "'''Không ai bị cấm.'''",
"checkuser-block-limit": "Đã chọn nhiều người dùng quá.",
"checkuser-block-noreason": "Phải đưa ra lý do cấm.",
+ "checkuser-centralauth-multilock": "Khóa các tài khoản được chọn",
"checkuser-noreason": "Bạn phải đưa ra lý do truy vấn.",
- "checkuser-accounts": "{{PLURAL:$1|tài khoản|tài khoản}} mới",
+ "checkuser-accounts": "$1 tài khoản mới",
"checkuser-too-many": "Có quá nhiều kết quả (theo ước lượng truy vấn). Xin hãy thu hẹp CIDR. Đây là các địa chỉ IP được sử dụng (tối đa 5.000, xếp theo địa chỉ):",
"checkuser-user-nonexistent": "Thành viên chỉ định không tồn tại.",
- "checkuser-search-form": "Tìm thấy các mục nhật trình trong đó $1 là $2",
+ "checkuser-search": "Tìm kiếm mục trong nhật trình CheckUser",
"checkuser-search-submit": "Tìm kiếm",
"checkuser-search-initiator": "người khởi đầu",
"checkuser-search-target": "mục tiêu",
+ "checkuser-log-search-target": "Mục tiêu:",
+ "checkuser-log-search-type": "Tìm theo:",
"checkuser-ipeditcount": "~$1 trong tất cả các thành viên",
- "checkuser-log-return": "Mở mẫu CheckUser chính",
+ "checkuser-showmain": "Mở mẫu CheckUser chính",
"checkuser-limited": "'''Các kết quả đã được lược bớt để tăng hiệu suất hoạt động.'''",
- "checkuser-log-userips": "$1 lấy địa chỉ IP của $2",
- "checkuser-log-ipedits": "$1 lấy sửa đổi của $2",
- "checkuser-log-ipusers": "$1 lấy tên thành viên của $2",
- "checkuser-log-ipedits-xff": "$1 lấy sửa đổi của XFF $2",
- "checkuser-log-ipusers-xff": "$1 lấy tên thành viên của XFF $2",
- "checkuser-log-useredits": "$1 lấy các sửa đổi của $2",
+ "checkuser-log-entry-userips": "$3, $1 lấy địa chỉ IP của $2",
+ "checkuser-log-entry-ipedits": "$3, $1 lấy sửa đổi của $2",
+ "checkuser-log-entry-ipusers": "$3, $1 lấy tên thành viên của $2",
+ "checkuser-log-entry-ipedits-xff": "$3, $1 lấy sửa đổi của XFF $2",
+ "checkuser-log-entry-ipusers-xff": "$3, $1 lấy tên thành viên của XFF $2",
+ "checkuser-log-entry-useredits": "$3, $1 lấy sửa đổi của $2",
"checkuser-autocreate-action": "được tạo ra tự động",
"checkuser-create-action": "được tạo ra",
"checkuser-email-action": "gửi thư điện tử cho người dùng “$1”",
"checkuser-reset-action": "tái tạo mật khẩu của người dùng “$1”",
+ "checkuser-userlinks-ip": "([[User_talk:$1|thảo luận]] | [[Special:Contributions/$1|đóng góp]] | [[Special:Block/$1|cấm]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/rDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|thảo luận]] | [[Special:Contributions/$1|đóng góp]] | [[Special:Block/$1|cấm]])",
"checkuser-token-fail": "Phiên làm việc bị thất bại. Xin hãy thử lại.",
"group-checkuser.css": "/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các kiểm tra viên */",
"group-checkuser.js": "/* Mã JS tại đây sẽ chỉ ảnh hưởng đến các kiểm tra viên */",
@@ -84,7 +90,7 @@
"apihelp-query+checkuser-param-target": "Tên người dùng, địa chỉ IP, hoặc dãy CIDR để kiểm tra.",
"apihelp-query+checkuser-param-reason": "Lý do kiểm tra.",
"apihelp-query+checkuser-param-limit": "Số hàng tối đa.",
- "apihelp-query+checkuser-param-timecond": "Giới hạn thời gian của dữ liệu người dùng (ví dụ “2 weeks”).",
+ "apihelp-query+checkuser-param-timecond": "Giới hạn thời gian của dữ liệu người dùng (ví dụ “-2 weeks” hoặc “2 weeks ago”).",
"apihelp-query+checkuser-param-xff": "Sử dụng dữ liệu XFF thay vì địa chỉ IP.",
"apihelp-query+checkuser-example-1": "Kiểm tra địa chỉ IP của [[User:Example]]",
"apihelp-query+checkuser-example-2": "Kiểm tra các sửa đổi do 192.0.2.0/24 thực hiện",
diff --git a/CheckUser/i18n/vo.json b/CheckUser/i18n/vo.json
index 63aab89f..8cedd36f 100644
--- a/CheckUser/i18n/vo.json
+++ b/CheckUser/i18n/vo.json
@@ -56,12 +56,6 @@
"checkuser-search-target": "zeil",
"checkuser-ipeditcount": "~$1 de gebans valik",
"checkuser-log-return": "Geikön lü cifafomet",
- "checkuser-log-userips": "$1 labon ladetis-IP ela $2",
- "checkuser-log-ipedits": "$1 labon redakamis ela $2",
- "checkuser-log-ipusers": "$1 labon gebanis ela $2",
- "checkuser-log-ipedits-xff": "$1 labon redakamis ela XFF $2",
- "checkuser-log-ipusers-xff": "$1 labon gebanis ela XFF $2",
- "checkuser-log-useredits": "$1 labon redakamis pro $2",
"checkuser-autocreate-action": "pejafon itjäfidiko",
"checkuser-email-action": "äsedon penedi leäktronik gebane: „$1“",
"checkuser-reset-action": "votükön letavödi gebana: „$1“"
diff --git a/CheckUser/i18n/wa.json b/CheckUser/i18n/wa.json
index 4a29a8de..31e48f58 100644
--- a/CheckUser/i18n/wa.json
+++ b/CheckUser/i18n/wa.json
@@ -64,12 +64,6 @@
"checkuser-ipeditcount": "~$1 tot contant tos les uzeus",
"checkuser-log-return": "Rivni al formulrece do verifiaedje des uzeus",
"checkuser-limited": "'''Les rzultats ont stî tronkés po des råjhons di performance.'''",
- "checkuser-log-userips": "$1 a cwerou les adresses IP eployeyes pa $2",
- "checkuser-log-ipedits": "$1 a cwerou les candjmints fwaits a pårti d' l' adresse $2",
- "checkuser-log-ipusers": "$1 a cwerou les uzeus eployant l' adresse $2",
- "checkuser-log-ipedits-xff": "$1 a cwerou les candjmints do XFF $2",
- "checkuser-log-ipusers-xff": "$1 a cwerou les uzeus eployant l' XFF $2",
- "checkuser-log-useredits": "$1 a cwerou les candjmints da $2",
"checkuser-autocreate-action": "ahivé otomaticmint",
"checkuser-create-action": "ahivé",
"checkuser-email-action": "evoya-st èn emile a «$1»",
diff --git a/CheckUser/i18n/yi.json b/CheckUser/i18n/yi.json
index c5ec6f74..d32b8d05 100644
--- a/CheckUser/i18n/yi.json
+++ b/CheckUser/i18n/yi.json
@@ -14,9 +14,8 @@
"grouppage-checkuser": "{{ns:project}}:בודק",
"checkuser-reason": "אורזאַך:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "ווײַזן לאגבוך",
+ "checkuser-showlog": "אריבער צו קאנטראל־באניצער לאגבוך",
"checkuser-target": "IP אַדרעס אדער באַניצער נאָמען:",
- "checkuser-search": "זוכן",
"checkuser-period": "דויער:",
"checkuser-week-1": "פֿאריגע וואך",
"checkuser-week-2": "פֿאריגע צוויי וואכן",
@@ -31,7 +30,10 @@
"checkuser-blocked": "בלאקירט",
"checkuser-gblocked": "בלאקירט גלאבאַליש",
"checkuser-locked": "פֿאַרשלאסן",
+ "checkuser-blockemail": "פֿארמײַדן פון שיקן ע־פאסט",
+ "checkuser-blocktalk": "פארמײַדן פון רעדאקטירן זײַן אייגענעם רעדן בלאט בשעת ער איז בלאקירט",
"checkuser-block-limit": "צופיל באניצער אויסגעקליבן",
+ "checkuser-search": "זוכן קאנטראל־באניצער־לאגבוך פרטים",
"checkuser-search-submit": "זוכן",
"checkuser-search-initiator": "בודק",
"checkuser-search-target": "ציל",
diff --git a/CheckUser/i18n/yue.json b/CheckUser/i18n/yue.json
index 1bc6f3a6..bc0cd59e 100644
--- a/CheckUser/i18n/yue.json
+++ b/CheckUser/i18n/yue.json
@@ -34,10 +34,5 @@
"checkuser-search-initiator": "創始者",
"checkuser-search-target": "目標",
"checkuser-ipeditcount": "~響全部用戶度搵$1",
- "checkuser-log-return": "返去核對用戶主要表格",
- "checkuser-log-userips": "$1 拎到 $2 嘅 IP",
- "checkuser-log-ipedits": "$1 拎到 $2 嘅編輯",
- "checkuser-log-ipusers": "$1 拎到 $2 嘅用戶",
- "checkuser-log-ipedits-xff": "$1 拎到 XFF $2 嘅編輯",
- "checkuser-log-ipusers-xff": "$1 拎到 XFF $2 嘅用戶"
+ "checkuser-log-return": "返去核對用戶主要表格"
}
diff --git a/CheckUser/i18n/zh-hans.json b/CheckUser/i18n/zh-hans.json
index 0b60a654..bcc6435b 100644
--- a/CheckUser/i18n/zh-hans.json
+++ b/CheckUser/i18n/zh-hans.json
@@ -16,10 +16,12 @@
"白布飘扬",
"乌拉跨氪",
"Mywood",
- "Yfdyh000"
+ "Yfdyh000",
+ "WhitePhosphorus",
+ "Wmr"
]
},
- "checkuser-summary": "本工具会从最近更改中获取用户使用过的IP地址,可使用XFF头信息来获取同一客户端IP地址下的用户和编辑,即在IP地址后方附加“/xff”。本工具支持IPv4(CIDR $1-32)和IPv6(CIDR $2-128)。由于效率原因,本工具只能查询最近5000笔编辑次数。请确保你的操作符合方针。",
+ "checkuser-summary": "本工具会从最近更改中获取用户使用过的IP地址,可使用XFF头信息来获取同一客户端IP地址下的用户和编辑,即在IP地址后方附加“/xff”。本工具支持IPv4(CIDR $1-32)和IPv6(CIDR $2-128)。由于效率原因,本工具只能查询最近5000笔编辑次数。请确保您的操作符合方针。",
"checkuser-desc": "令已授权用户可以核查用户的IP地址及其他信息",
"checkuser-logcase": "日志搜索是区分大小写的。",
"checkuser": "用户查核",
@@ -35,13 +37,12 @@
"grouppage-checkuser": "{{ns:project}}:用户查核",
"checkuser-reason": "原因:",
"checkuser-reason-api": "API: $1",
- "checkuser-showlog": "显示日志",
+ "checkuser-showlog": "切换到用户查核日志",
"checkuser-query": "查询最近更改",
"checkuser-target": "IP地址或用户名:",
"checkuser-users": "获取用户",
"checkuser-edits": "获取编辑",
"checkuser-ips": "获取IP地址",
- "checkuser-search": "搜索",
"checkuser-period": "期限:",
"checkuser-week-1": "上周",
"checkuser-week-2": "前两周",
@@ -62,52 +63,64 @@
"checkuser-localonly": "未整合",
"checkuser-massblock": "封禁选中用户",
"checkuser-massblock-text": "选择的账户将被不限期封禁,并启用IP地址自动封禁,停用账户创建。IP地址将仅对匿名用户封禁一周,账户创建将停用。",
+ "checkuser-blockemail": "阻止发送电子邮件",
+ "checkuser-blocktalk": "在封禁期间阻止编辑他们自己的讨论页",
"checkuser-blocktag": "替换用户页面内容为:",
"checkuser-blocktag-talk": "替换讨论页内容:",
"checkuser-massblock-commit": "封禁选中用户",
"checkuser-block-success": "'''{{PLURAL:$2|用户}} $1 {{PLURAL:$2|已被}}封禁。'''",
"checkuser-block-failure": "'''没有用户被封禁。'''",
"checkuser-block-limit": "选中用户数量过多。",
- "checkuser-block-noreason": "你必须解释此次封禁的原因。",
- "checkuser-noreason": "你必须解释此次查询的原因。",
+ "checkuser-block-noreason": "您必须解释此次封禁的原因。",
+ "checkuser-centralauth-multilock": "多重锁定选定帐户",
+ "checkuser-noreason": "您必须解释此次查询的原因。",
"checkuser-accounts": "$1个新{{PLURAL:$1|账户}}",
"checkuser-too-many": "结果过多(根据查询估计),请缩小CIDR的范围。\n下面列出了使用过的IP地址(最多5000个,按地址排列):",
"checkuser-user-nonexistent": "指定的用户不存在。",
- "checkuser-search-form": "查找当 $1 是 $2 时的日志记录",
+ "checkuser-search": "搜索用户查核日志记录",
"checkuser-search-submit": "搜索",
"checkuser-search-initiator": "操作者",
"checkuser-search-target": "目标",
+ "checkuser-log-search-target": "目标:",
+ "checkuser-log-search-type": "搜索类型:",
"checkuser-ipeditcount": "~在全部用户中$1",
- "checkuser-log-return": "切换到用户查核主表单",
+ "checkuser-showmain": "切换到用户查核主表单",
"checkuser-limited": "'''结果已因效率原因而被删减。'''",
- "checkuser-log-userips": "$1取得$2的IP信息",
- "checkuser-log-ipedits": "$1取得$2的编辑记录",
- "checkuser-log-ipusers": "$1取得$2的用户信息",
- "checkuser-log-ipedits-xff": "$1取得XFF $2的编辑记录",
- "checkuser-log-ipusers-xff": "$1取得XFF $2的用户信息",
- "checkuser-log-useredits": "$1取得$2的编辑记录",
+ "checkuser-log-entry-userips": "$3,$1获取了$2的IP地址",
+ "checkuser-log-entry-ipedits": "$3,$1获取了$2的编辑记录",
+ "checkuser-log-entry-ipusers": "$3,$1获取了$2的用户信息",
+ "checkuser-log-entry-ipedits-xff": "$3,$1获取了XFF $2的编辑记录",
+ "checkuser-log-entry-ipusers-xff": "$3,$1获取了XFF $2的用户信息",
+ "checkuser-log-entry-useredits": "$3,$1获取了$2的编辑记录",
"checkuser-autocreate-action": "已自动创建",
"checkuser-create-action": "已创建",
"checkuser-email-action": "向用户“$1”发送电邮",
"checkuser-reset-action": "为用户“$1”重置密码",
+ "checkuser-userlinks-ip": "([[User_talk:$1|讨论]] | [[Special:Contributions/$1|贡献]] | [[Special:Block/$1|封禁]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|讨论]] | [[Special:Contributions/$1|贡献]] | [[Special:Block/$1|封禁]])",
"checkuser-token-fail": "会话故障。请重新尝试。",
"group-checkuser.css": "/* 这里放置的CSS将只影响用户查核员 */",
- "group-checkuser.js": "/* 放置于此的JS将只影响用户查核员 */",
+ "group-checkuser.js": "/* 这里放置的JS将只影响用户查核员 */",
"apihelp-query+checkuser-description": "检查指定用户名使用的IP地址或指定IP地址使用过的用户名。",
+ "apihelp-query+checkuser-summary": "检查指定用户名使用过的IP地址或指定IP地址使用过的用户名。",
"apihelp-query+checkuser-param-request": "用户查核请求类型:\n;userips:获取目标用户的IP地址。\n;edits:获取目标IP地址或地址段的更改。\n;ipusers:获取目标IP地址或地址段的用户。",
"apihelp-query+checkuser-param-target": "要查核的用户名、IP地址或CIDR地址段。",
"apihelp-query+checkuser-param-reason": "查核原因。",
"apihelp-query+checkuser-param-limit": "限定行数。",
- "apihelp-query+checkuser-param-timecond": "用户数据的限定(例如“2 weeks”)。",
+ "apihelp-query+checkuser-param-timecond": "用户数据的限定(例如“-2 weeks”或“2 weeks ago”)。",
"apihelp-query+checkuser-param-xff": "使用XFF数据代替IP地址。",
"apihelp-query+checkuser-example-1": "查核[[User:Example]]的IP地址",
"apihelp-query+checkuser-example-2": "查核来自192.0.2.0/24的编辑",
"apihelp-query+checkuserlog-description": "从用户查核日志获得记录。",
+ "apihelp-query+checkuserlog-summary": "获取用户查核日志中的记录。",
"apihelp-query+checkuserlog-param-user": "用户查核员的用户名。",
"apihelp-query+checkuserlog-param-target": "已查核的用户、IP地址或CIDR地址段。",
"apihelp-query+checkuserlog-param-limit": "限定行数。",
"apihelp-query+checkuserlog-param-from": "枚举的起始时间戳。",
"apihelp-query+checkuserlog-param-to": "枚举的结束时间戳。",
"apihelp-query+checkuserlog-example-1": "显示[[User:Example]]的查核",
- "apihelp-query+checkuserlog-example-2": "显示2011-10-15T23:00:00Z之后对192.0.2.0/24的查核"
+ "apihelp-query+checkuserlog-example-2": "显示2011-10-15T23:00:00Z之后对192.0.2.0/24的查核",
+ "apierror-checkuser-missingsummary": "您必须定义查核原因。",
+ "apierror-checkuser-timelimit": "您需要使用正确的时间限制(例如“-2 weeks”或“2 weeks ago”)。",
+ "apierror-checkuser-invalidmode": "无效的请求模式"
}
diff --git a/CheckUser/i18n/zh-hant.json b/CheckUser/i18n/zh-hant.json
index 07c6b3b6..2d02102a 100644
--- a/CheckUser/i18n/zh-hant.json
+++ b/CheckUser/i18n/zh-hant.json
@@ -12,10 +12,11 @@
"Wrightbus",
"Cwlin0416",
"LNDDYL",
- "EagerLin"
+ "EagerLin",
+ "一個正常人"
]
},
- "checkuser-summary": "本工具會從近期變更中取得使用者使用過的 IP 位址,可使用 XFF 標頭資訊來取得同一客戶端 IP 位址下的使用者和編輯,即在 IP 位址後方加上 \"/xff\"。 本工具支援 IPv4 (CIDR $1-32) 與 IPv6 (CIDR $2-128)。 考量到效率問題,本工具只允許查詢最近 5000 筆編輯。 請確認你的操作符合政策規範。",
+ "checkuser-summary": "本工具會從最近更改中取得使用者使用過的 IP 位址,可使用 XFF 標頭資訊來取得同一客戶端 IP 位址下的使用者和編輯,即在 IP 位址後方加上 \"/xff\"。 本工具支援 IPv4 (CIDR $1-32) 與 IPv6 (CIDR $2-128)。 考量到效率問題,本工具只允許查詢最近 5000 筆編輯。 請確認你的操作符合政策規範。",
"checkuser-desc": "授權使用者適當的權限能夠檢查使用者的 IP 位址與其他資訊",
"checkuser-logcase": "搜尋時請注意大小寫的區分",
"checkuser": "查核使用者",
@@ -31,13 +32,12 @@
"grouppage-checkuser": "{{ns:project}}:使用者查核",
"checkuser-reason": "原因:",
"checkuser-reason-api": "API:$1",
- "checkuser-showlog": "顯示日誌",
- "checkuser-query": "查詢近期變更",
+ "checkuser-showlog": "切換到用戶查核日誌",
+ "checkuser-query": "查詢最近變更",
"checkuser-target": "IP 位址或使用者名稱:",
"checkuser-users": "查詢使用者",
"checkuser-edits": "查詢編輯",
"checkuser-ips": "查詢 IP 位址",
- "checkuser-search": "搜尋",
"checkuser-period": "期間:",
"checkuser-week-1": "最近 1 週",
"checkuser-week-2": "最近 2 週",
@@ -58,6 +58,8 @@
"checkuser-localonly": "未統一",
"checkuser-massblock": "封鎖已選擇的使用者",
"checkuser-massblock-text": "選擇的帳號將會被永久封鎖,並自動封鎖 IP 位址與禁止建立帳號。\n匿名使用者將會封鎖的 IP 位址一週,並且禁止建立帳號。",
+ "checkuser-blockemail": "禁止傳送電郵",
+ "checkuser-blocktalk": "在封禁期間禁止編輯自己的用戶討論頁",
"checkuser-blocktag": "替換使用者頁面為:",
"checkuser-blocktag-talk": "替換對話頁面為:",
"checkuser-massblock-commit": "封鎖選擇的使用者",
@@ -65,34 +67,36 @@
"checkuser-block-failure": "'''沒有使用者被封鎖。'''",
"checkuser-block-limit": "選擇的使用者過多。",
"checkuser-block-noreason": "您必須提供進行禁鎖的原因。",
+ "checkuser-centralauth-multilock": "多重鎖定選定帳戶",
"checkuser-noreason": "您必須提供進行查詢的原因。",
"checkuser-accounts": "$1 個新帳號",
"checkuser-too-many": "查詢結果過多 (根據查詢估計),請縮小 CIDR 的範圍。\n以下為使用到的 IP 位址 (最多 5000 個,依位址排列):",
"checkuser-user-nonexistent": "指定的使用者不存在。",
- "checkuser-search-form": "尋找 $1 為 $2 的日誌項目",
+ "checkuser-search": "搜尋用戶查核日誌",
"checkuser-search-submit": "搜尋",
"checkuser-search-initiator": "操作者",
"checkuser-search-target": "目標",
+ "checkuser-log-search-target": "目標:",
+ "checkuser-log-search-type": "搜尋類型:",
"checkuser-ipeditcount": "~從全部使用者中 $1",
- "checkuser-log-return": "切換至檢查使用者主表單",
+ "checkuser-showmain": "切換至檢查使用者主表單",
"checkuser-limited": "'''查詢結果因效能問題已刪減。'''",
- "checkuser-log-userips": "$1 取得 $2 的 IP 位址",
- "checkuser-log-ipedits": "$1 取得 $2 的編輯",
- "checkuser-log-ipusers": "$1 取得 $2 的使用者",
- "checkuser-log-ipedits-xff": "$1 取得 XFF $2 的編輯",
- "checkuser-log-ipusers-xff": "$1 取得 XFF $2 的使用者",
- "checkuser-log-useredits": "$1 取得 $2 的編輯",
+ "checkuser-log-entry-userips": "$3,$1取得了$2的IP地址",
+ "checkuser-log-entry-ipedits": "$3,$1獲取了$2的編輯記錄",
+ "checkuser-log-entry-ipusers": "$3,$1獲取了$2的用戶資料",
"checkuser-autocreate-action": "已自動建立",
"checkuser-create-action": "已建立",
"checkuser-email-action": "傳送電子郵件聯絡使用者 \"$1\"",
"checkuser-reset-action": "為使用者 \"$1\" 重設密碼",
+ "checkuser-userlinks-ip": "([[User_talk:$1|討論]] | [[Special:Contributions/$1|貢獻]] | [[Special:Block/$1|封鎖]] | <span class=\"plainlinks\">[https://www.robtex.com/whois/$1.html WHOIS/RDNS]</span>)",
+ "checkuser-userlinks": "([[User_talk:$1|討論]] | [[Special:Contributions/$1|貢獻]] | [[Special:Block/$1|封鎖]])",
"checkuser-token-fail": "連線階段錯誤,請再試一次。",
"apihelp-query+checkuser-description": "檢查指定使用者使用的 IP 地址或指定 IP 地址使用的使用者",
"apihelp-query+checkuser-param-request": "使用者查核請求類型:\n;userips:取得目標使用者的 IP。\n;edits:取得目標 IP 或地址段所作的更改。\n;ipusers:取得目標 IP 或地址段的使用者。",
"apihelp-query+checkuser-param-target": "要查核的使用者名稱 IP 地址,或 CIDR 地址段。",
"apihelp-query+checkuser-param-reason": "查核原因。",
"apihelp-query+checkuser-param-limit": "行數限制。",
- "apihelp-query+checkuser-param-timecond": "使用者資料的時限 (例如 \"2 weeks\" ) 。",
+ "apihelp-query+checkuser-param-timecond": "使用者資料的時限 (例如 \"-2 weeks\" 或 \"2 weeks ago\" ) 。",
"apihelp-query+checkuser-param-xff": "使用 XFF 資料代替 IP。",
"apihelp-query+checkuser-example-1": "查核[[User:Example]]的 IP",
"apihelp-query+checkuser-example-2": "查核來自 192.0.2.0/24 的編輯",
diff --git a/CheckUser/importLog.php b/CheckUser/importLog.php
deleted file mode 100644
index fba49eba..00000000
--- a/CheckUser/importLog.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-require_once ( getenv( 'MW_INSTALL_PATH' ) !== false
- ? getenv( 'MW_INSTALL_PATH' ) . "/maintenance/commandLine.inc"
- : dirname( __FILE__ ) . '/../../maintenance/commandLine.inc' );
-require "cu_log_import.inc";
-
-function test_cu_log( $log ) {
- $matched = 0;
- $unmatched = 0;
- $badtime = 0;
-
- $file = fopen( $log, 'r' );
- while ( false !== ( $line = fgets( $file ) ) ) {
- $data = import_cu_log_line( $line );
- if ( $data ) {
- $matched++;
- if ( !$data['timestamp'] ) {
- print "[bad timestamp] $line";
- $badtime++;
- }
- } else {
- print "[bad format] $line";
- $unmatched++;
- }
- }
- fclose( $file );
- print "\n$matched matched, $badtime matched with bad time, $unmatched unprocessed\n";
-}
-
-if ( $args ) {
- $log = $args[0];
- if ( isset( $options['test'] ) ) {
- test_cu_log( $log );
- } else {
- $dryRun = isset( $options['dry-run'] );
- if ( $dryRun ) {
- $db = false;
- echo "Dry run; no actual imports will be made...\n";
- } else {
- $db = wfGetDB( DB_MASTER );
- }
- import_cu_log( $db, $log );
- }
-} else {
- echo "CheckUser old log file importer.\n";
- echo "If cu_log table has been manually added, can be used to import old data.\n";
- echo "\n";
- echo "Usage: php importLog.php [--test] [--dry-run] checkuser.log\n";
- echo " --dry-run Parse and do local lookups, but don't perform inserts\n";
- echo " --test Test log parser without doing local lookups\n";
- echo "\n";
-}
diff --git a/CheckUser/install.inc b/CheckUser/install.inc
deleted file mode 100644
index ccf4e592..00000000
--- a/CheckUser/install.inc
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-require "cu_log_import.inc";
-
-define( 'BATCH_SIZE', 100 );
-
-function create_cu_changes( $db, $cutoff = null ) {
- global $wgDBtype;
- if( !$db->tableExists( 'cu_changes' ) ) {
- $sourcefile = $wgDBtype === 'postgres' ? '/cu_changes.pg.sql' : '/cu_changes.sql';
- $db->sourceFile( dirname( __FILE__ ) . $sourcefile );
- }
-
- echo "...cu_changes table added.\n";
- // Check if the table is empty
- $rcRows = $db->selectField( 'recentchanges', 'COUNT(*)', false, __FUNCTION__ );
- if ( !$rcRows ) {
- echo "recentchanges is empty; nothing to add.\n";
- return;
- }
-
- if( $cutoff ) {
- // Something leftover... clear old entries to minimize dupes
- $encCutoff = $db->addQuotes( $db->timestamp( $cutoff ) );
- $db->delete( 'cu_changes',
- array( "cuc_timestamp < $encCutoff" ),
- __METHOD__ );
- $cutoffCond = "AND rc_timestamp < $encCutoff";
- } else {
- $cutoffCond = "";
- }
-
- $start = $db->selectField( 'recentchanges', 'MIN(rc_id)', false, __FUNCTION__ );
- $end = $db->selectField( 'recentchanges', 'MAX(rc_id)', false, __FUNCTION__ );
- # Do remaining chunk
- $end += BATCH_SIZE - 1;
- $blockStart = $start;
- $blockEnd = $start + BATCH_SIZE - 1;
-
- while ( $blockStart <= $end ) {
- echo "...doing rc_id from $blockStart to $blockEnd\n";
- $cond = "rc_id BETWEEN $blockStart AND $blockEnd $cutoffCond";
- $res = $db->select( 'recentchanges', '*', $cond, __FUNCTION__ );
- $batch = array();
- foreach ( $res as $row ) {
- $batch[] = array(
- 'cuc_timestamp' => $row->rc_timestamp,
- 'cuc_user' => $row->rc_user,
- 'cuc_user_text' => $row->rc_user_text,
- 'cuc_namespace' => $row->rc_namespace,
- 'cuc_title' => $row->rc_title,
- 'cuc_comment' => $row->rc_comment,
- 'cuc_minor' => $row->rc_minor,
- 'cuc_page_id' => $row->rc_cur_id,
- 'cuc_this_oldid' => $row->rc_this_oldid,
- 'cuc_last_oldid' => $row->rc_last_oldid,
- 'cuc_type' => $row->rc_type,
- 'cuc_ip' => $row->rc_ip,
- 'cuc_ip_hex' => IP::toHex( $row->rc_ip ),
- );
- }
- if ( count( $batch ) ) {
- $db->insert( 'cu_changes', $batch, __FUNCTION__ );
- }
- $blockStart += BATCH_SIZE - 1;
- $blockEnd += BATCH_SIZE - 1;
- wfWaitForSlaves( 5 );
- }
-
- echo "...cu_changes table added and populated.\n";
-}
-
-function create_cu_log( $db ) {
- global $wgDBtype, $wgCheckUserLog;
- if( $db->tableExists( 'cu_log' ) ) {
- echo "...cu_log already exists\n";
- return;
- }
-
- $sourcefile = $wgDBtype === 'postgres' ? '/cu_log.pg.sql' : '/cu_log.sql';
- $db->sourceFile( dirname( __FILE__ ) . $sourcefile );
-
- echo "...cu_log added\n";
-
- if( empty( $wgCheckUserLog ) ) {
- echo "...logging disabled, skipping log import.\n";
- return;
- }
-
- if( !file_exists( $wgCheckUserLog ) ) {
- echo "...log file missing, skipping log import.\n";
- return;
- }
-
- echo "...importing old CheckUser log file...\n";
- import_cu_log( $db, $wgCheckUserLog );
-}
diff --git a/CheckUser/install.php b/CheckUser/install.php
deleted file mode 100644
index 2c1d94a8..00000000
--- a/CheckUser/install.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Makes the required database changes for the CheckUser extension
- */
-
-require_once ( getenv( 'MW_INSTALL_PATH' ) !== false
- ? getenv( 'MW_INSTALL_PATH' ) . "/maintenance/commandLine.inc"
- : dirname( __FILE__ ) . '/../../maintenance/commandLine.inc' );
-require_once dirname( __FILE__ ) . '/install.inc';
-
-$db = wfGetDB( DB_MASTER );
-if ( $db->tableExists( 'cu_changes' ) && !isset( $options['force'] ) ) {
- echo "...cu_changes already exists.\n";
-} else {
- $cutoff = isset( $options['cutoff'] ) ? wfTimestamp( TS_MW, $options['cutoff'] ) : null;
- create_cu_changes( $db, $cutoff );
-}
-if ( $db->tableExists( 'cu_log' ) && !isset( $options['force'] ) ) {
- echo "...cu_log already exists.\n";
-} else {
- create_cu_log( $db );
-}
diff --git a/CheckUser/maintenance/importCheckUserLogs.php b/CheckUser/maintenance/importCheckUserLogs.php
new file mode 100644
index 00000000..6894f50c
--- /dev/null
+++ b/CheckUser/maintenance/importCheckUserLogs.php
@@ -0,0 +1,167 @@
+<?php
+
+$IP = getenv( 'MW_INSTALL_PATH' );
+if ( $IP === false ) {
+ $IP = __DIR__ . '/../../..';
+}
+require_once "$IP/maintenance/Maintenance.php";
+
+/**
+ * CheckUser old log file importer.
+ * If cu_log table has been manually added, can be used to import old data.
+ * https://phabricator.wikimedia.org/T29807
+ */
+class ImportCheckUserLogs extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'dry-run', 'Parse and do local lookups, but don\'t perform inserts' );
+ $this->addOption( 'test', 'Test log parser without doing local lookups' );
+ $this->addArg( 'file', 'Log file containing import data', true );
+
+ $this->requireExtension( 'CheckUser' );
+ }
+
+ public function execute() {
+ $log = $this->getArg( 0 );
+ $file = fopen( $log, 'r' );
+ if ( $file === false ) {
+ $this->error( "Could not open file: {$log}" );
+ return;
+ }
+
+ if ( $this->hasOption( 'test' ) ) {
+ $this->testLog( $file );
+ } else {
+ if ( $this->hasOption( 'dry-run' ) ) {
+ $this->output( "Dry run; no actual imports will be made...\n" );
+ }
+ $this->importLog( $file );
+ }
+
+ fclose( $file );
+ }
+
+ protected function parseLogLine( $line ) {
+ $rxTimestamp = '(?P<timestamp>\d+:\d+, \d+ \w+ \d+)';
+ $rxUser = '(?P<user>.*?)';
+ $rxTarget = '(?P<target>.*?)';
+ $rxWiki = '(?P<wiki>[^)]*?)';
+ $rxReason = '(?: \("(?P<reason>.*)"\))?';
+
+ // Strip nulls due to NFS write collisions
+ $line = str_replace( "\0", '', $line );
+
+ $regexes = [
+ 'ipedits-xff' => "!^<li>$rxTimestamp, $rxUser got edits for XFF " .
+ "$rxTarget on $rxWiki$rxReason</li>!",
+ 'ipedits' => "!^<li>$rxTimestamp, $rxUser got edits for" .
+ " $rxTarget on $rxWiki$rxReason</li>!",
+ 'ipusers-xff' => "!^<li>$rxTimestamp, $rxUser got users for XFF " .
+ "$rxTarget on $rxWiki$rxReason</li>!",
+ 'ipusers' => "!^<li>$rxTimestamp, $rxUser got users for" .
+ " $rxTarget on $rxWiki$rxReason</li>!",
+ 'userips' => "!^<li>$rxTimestamp, $rxUser got IPs for" .
+ " $rxTarget on $rxWiki$rxReason</li>!",
+ ];
+
+ foreach ( $regexes as $type => $regex ) {
+ $m = false;
+ if ( preg_match( $regex, $line, $m ) ) {
+ $data = [
+ 'timestamp' => strtotime( $m['timestamp'] ),
+ 'user' => $m['user'],
+ 'reason' => isset( $m['reason'] ) ? $m['reason'] : '',
+ 'type' => $type,
+ 'wiki' => $m['wiki'],
+ 'target' => $m['target'] ];
+
+ return $data;
+ }
+ }
+
+ return null;
+ }
+
+ protected function importLog( $file ) {
+ global $wgDBname;
+
+ $matched = 0;
+ $unmatched = 0;
+
+ while ( false !== ( $line = fgets( $file ) ) ) {
+ $data = $this->parseLogLine( $line );
+ if ( $data ) {
+ if ( $data['wiki'] != wfWikiID() && $data['wiki'] != $wgDBname ) {
+ $unmatched++;
+ continue;
+ }
+
+ // Local wiki lookups...
+ $user = User::newFromName( $data['user'] );
+
+ list( $start, $end ) = IP::parseRange( $data['target'] );
+ if ( $start === false ) {
+ $targetUser = User::newFromName( $data['target'] );
+ $targetID = $targetUser ? $targetUser->getID() : 0;
+ $start = $end = $hex = '';
+ } else {
+ $hex = $start;
+ if ( $start == $end ) {
+ $start = $end = '';
+ }
+ $targetID = 0;
+ }
+
+ if ( !$this->hasOption( 'dry-run' ) ) {
+ $dbw = $this->getDB( DB_MASTER );
+ $fields = [
+ 'cul_timestamp' => $dbw->timestamp( $data['timestamp'] ),
+ 'cul_user' => $user->getID(),
+ 'cul_user_text' => $user->getName(),
+ 'cul_reason' => $data['reason'],
+ 'cul_type' => $data['type'],
+ 'cul_target_id' => $targetID,
+ 'cul_target_text' => $data['target'],
+ 'cul_target_hex' => $hex,
+ 'cul_range_start' => $start,
+ 'cul_range_end' => $end ];
+
+ $dbw->insert( 'cu_log', $fields, __METHOD__ );
+ }
+
+ $matched++;
+ }
+ $unmatched ++;
+ }
+
+ $this->output(
+ "...cu_log table populated: $matched matched rows, $unmatched discarded rows\n"
+ );
+ }
+
+ protected function testLog( $file ) {
+ $matched = 0;
+ $unmatched = 0;
+ $badtime = 0;
+
+ while ( false !== ( $line = fgets( $file ) ) ) {
+ $data = $this->parseLogLine( $line );
+ if ( $data ) {
+ $matched++;
+ if ( !$data['timestamp'] ) {
+ $this->output( "[bad timestamp] $line" );
+ $badtime++;
+ }
+ } else {
+ $this->output( "[bad format] $line" );
+ $unmatched++;
+ }
+ }
+ $this->output(
+ "\n$matched matched, $badtime matched with bad time, $unmatched unprocessed\n"
+ );
+ }
+}
+
+$maintClass = 'ImportCheckUserLogs';
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/CheckUser/maintenance/populateCheckUserTable.php b/CheckUser/maintenance/populateCheckUserTable.php
new file mode 100644
index 00000000..70c95da3
--- /dev/null
+++ b/CheckUser/maintenance/populateCheckUserTable.php
@@ -0,0 +1,123 @@
+<?php
+
+$IP = getenv( 'MW_INSTALL_PATH' );
+if ( $IP === false ) {
+ $IP = __DIR__ . '/../../..';
+}
+require_once "$IP/maintenance/Maintenance.php";
+
+/**
+ * Populate the cu_changes table needed for CheckUser queries with
+ * data from recent changes.
+ * This is automatically run during first installation within update.php
+ * but --force parameter should be set if you want to manually run thereafter.
+ */
+class PopulateCheckUserTable extends LoggedUpdateMaintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addDescription( 'Populate `cu_changes` table with entries from recentchanges' );
+ $this->addOption( 'cutoff', 'Cut-off time for rc_timestamp' );
+ $this->setBatchSize( 100 );
+
+ $this->requireExtension( 'CheckUser' );
+ }
+
+ protected function getUpdateKey() {
+ return __CLASS__;
+ }
+
+ protected function doDBUpdates() {
+ $db = $this->getDB( DB_MASTER );
+
+ // Check if the table is empty
+ $rcRows = $db->selectField( 'recentchanges', 'COUNT(*)', false, __METHOD__ );
+ if ( !$rcRows ) {
+ $this->output( "recentchanges is empty; nothing to add.\n" );
+ return true;
+ }
+
+ $cutoff = $this->getOption( 'cutoff' );
+ if ( $cutoff ) {
+ // Something leftover... clear old entries to minimize dupes
+ $cutoff = wfTimestamp( TS_MW, $cutoff );
+ $encCutoff = $db->addQuotes( $db->timestamp( $cutoff ) );
+ $db->delete(
+ 'cu_changes',
+ [ "cuc_timestamp < $encCutoff" ],
+ __METHOD__
+ );
+ $cutoffCond = "AND rc_timestamp < $encCutoff";
+ } else {
+ $cutoffCond = "";
+ }
+
+ $start = $db->selectField( 'recentchanges', 'MIN(rc_id)', false, __METHOD__ );
+ $end = $db->selectField( 'recentchanges', 'MAX(rc_id)', false, __METHOD__ );
+ // Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+
+ $this->output(
+ "Starting poulation of cu_changes with recentchanges rc_id from $start to $end\n"
+ );
+
+ $commentStore = CommentStore::newKey( 'rc_comment' );
+ $commentQuery = $commentStore->getJoin();
+
+ while ( $blockStart <= $end ) {
+ $this->output( "...migrating rc_id from $blockStart to $blockEnd\n" );
+ $cond = "rc_id BETWEEN $blockStart AND $blockEnd $cutoffCond";
+ $res = $db->select(
+ [ 'recentchanges' ] + $commentQuery['tables'],
+ [
+ 'rc_timestamp',
+ 'rc_user',
+ 'rc_user_text',
+ 'rc_namespace',
+ 'rc_title',
+ 'rc_minor',
+ 'rc_cur_id',
+ 'rc_this_oldid',
+ 'rc_last_oldid',
+ 'rc_type',
+ 'rc_ip',
+ ] + $commentQuery['fields'],
+ $cond,
+ __METHOD__,
+ [],
+ $commentQuery['joins']
+ );
+ $batch = [];
+ foreach ( $res as $row ) {
+ $batch[] = [
+ 'cuc_timestamp' => $row->rc_timestamp,
+ 'cuc_user' => $row->rc_user,
+ 'cuc_user_text' => $row->rc_user_text,
+ 'cuc_namespace' => $row->rc_namespace,
+ 'cuc_title' => $row->rc_title,
+ 'cuc_comment' => $commentStore->getComment( $row )->text,
+ 'cuc_minor' => $row->rc_minor,
+ 'cuc_page_id' => $row->rc_cur_id,
+ 'cuc_this_oldid' => $row->rc_this_oldid,
+ 'cuc_last_oldid' => $row->rc_last_oldid,
+ 'cuc_type' => $row->rc_type,
+ 'cuc_ip' => $row->rc_ip,
+ 'cuc_ip_hex' => IP::toHex( $row->rc_ip ),
+ ];
+ }
+ if ( count( $batch ) ) {
+ $db->insert( 'cu_changes', $batch, __METHOD__ );
+ }
+ $blockStart += $this->mBatchSize - 1;
+ $blockEnd += $this->mBatchSize - 1;
+ wfWaitForSlaves( 5 );
+ }
+
+ $this->output( "...cu_changes table has been populated.\n" );
+ return true;
+ }
+}
+
+$maintClass = 'PopulateCheckUserTable';
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/CheckUser/maintenance/purgeOldData.php b/CheckUser/maintenance/purgeOldData.php
index 2edac904..4db7dc26 100644
--- a/CheckUser/maintenance/purgeOldData.php
+++ b/CheckUser/maintenance/purgeOldData.php
@@ -2,15 +2,17 @@
if ( getenv( 'MW_INSTALL_PATH' ) ) {
$IP = getenv( 'MW_INSTALL_PATH' );
} else {
- $IP = dirname( __FILE__ ) . '/../../..';
+ $IP = __DIR__ . '/../../..';
}
-require_once( "$IP/maintenance/Maintenance.php" );
+require_once "$IP/maintenance/Maintenance.php";
class PurgeOldIPAddressData extends Maintenance {
public function __construct() {
parent::__construct();
$this->mDescription = "Purge expired rows in CheckUser and RecentChanges";
$this->setBatchSize( 200 );
+
+ $this->requireExtension( 'CheckUser' );
}
public function execute() {
@@ -40,7 +42,7 @@ class PurgeOldIPAddressData extends Maintenance {
$res = $dbw->select( $table, $ts_column,
$expiredCond,
__METHOD__,
- array( 'ORDER BY' => "$ts_column ASC", 'LIMIT' => $this->mBatchSize )
+ [ 'ORDER BY' => "$ts_column ASC", 'LIMIT' => $this->mBatchSize ]
);
if ( !$res->numRows() ) {
break; // all cleared
@@ -52,11 +54,11 @@ class PurgeOldIPAddressData extends Maintenance {
$res->free();
// Do the actual delete...
- $dbw->begin();
+ $this->beginTransaction( $dbw, __METHOD__ );
$dbw->delete( $table,
- array( "$ts_column BETWEEN $blockStart AND $blockEnd" ), __METHOD__ );
+ [ "$ts_column BETWEEN $blockStart AND $blockEnd" ], __METHOD__ );
$count += $dbw->affectedRows();
- $dbw->commit();
+ $this->commitTransaction( $dbw, __METHOD__ );
wfWaitForSlaves();
}
@@ -66,4 +68,4 @@ class PurgeOldIPAddressData extends Maintenance {
}
$maintClass = "PurgeOldIPAddressData";
-require_once( RUN_MAINTENANCE_IF_MAIN );
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/CheckUser/modules/ext.checkuser.caMultiLock.js b/CheckUser/modules/ext.checkuser.caMultiLock.js
new file mode 100644
index 00000000..99d62e26
--- /dev/null
+++ b/CheckUser/modules/ext.checkuser.caMultiLock.js
@@ -0,0 +1,35 @@
+/**
+ * Adds a link to Special:MultiLock on a central wiki if $wgCheckUserCAMultiLock
+ * is configured on the Special:CheckUser's block form
+ */
+( function ( mw, $ ) {
+ var centralURL = mw.config.get( 'wgCUCAMultiLockCentral' ),
+ $userCheckboxes = $( '#checkuserresults li :checkbox' );
+
+ // Initialize the link
+ $( '#checkuserblock fieldset' ).append(
+ $( '<a>', {
+ id: 'cacu-multilock-link',
+ text: mw.msg( 'checkuser-centralauth-multilock' ),
+ href: centralURL,
+ } )
+ );
+
+ // Change the URL of the link when a checkbox's state is changed
+ $userCheckboxes.on( 'change', function() {
+ var names = [];
+ $.each( $userCheckboxes.serializeArray(), function( i, obj ) {
+ if ( obj.name && obj.name === 'users[]' ) {
+ // Only registered accounts (not IPs) can be locked
+ if ( !mw.util.isIPAddress( obj.value ) ) {
+ names.push( obj.value );
+ }
+ }
+ } );
+
+ var mlHref = centralURL + '?wpTarget=' + encodeURIComponent( names.join( '\n' ) );
+ // Update the href of the link with the latest change
+ $( '#cacu-multilock-link' ).prop( 'href', mlHref );
+ } );
+
+}( mediaWiki, jQuery ) );
diff --git a/CheckUser/modules/ext.checkuser.cidr.js b/CheckUser/modules/ext.checkuser.cidr.js
index c305273b..f07bfd15 100644
--- a/CheckUser/modules/ext.checkuser.cidr.js
+++ b/CheckUser/modules/ext.checkuser.cidr.js
@@ -1,6 +1,4 @@
/* -- (c) Aaron Schulz 2009 */
-/*global mediaWiki*/
-
( function ( mw, $ ) {
var showResults = function ( size, cidr ) {
$( '#mw-checkuser-cidr-res' ).val( cidr );
@@ -30,6 +28,8 @@ var updateCIDRresult = function () {
ips = text.split( '\t' );
} else if ( text.indexOf( ',' ) !== -1 ) {
ips = text.split( ',' );
+ } else if ( text.indexOf( ' - ' ) !== -1 ) {
+ ips = text.split( ' - ' );
} else if ( text.indexOf( '-' ) !== -1 ) {
ips = text.split( '-' );
} else if ( text.indexOf( ' ' ) !== -1 ) {
@@ -177,7 +177,7 @@ var updateCIDRresult = function () {
// Build the IP in CIDR form
prefixCidr = binPrefix.length;
// CIDR too small?
- if ( prefixCidr < 96 ) {
+ if ( prefixCidr < 32 ) {
showResults( '!', '>' + Math.pow( 2, 128 - prefixCidr ) );
return; // too big
}
@@ -252,8 +252,8 @@ var hex2int = function ( hex ) {
$( function () {
updateCIDRresult();
- $( '#mw-checkuser-iplist' ).bind( 'keyup click', function () {
+ $( '#mw-checkuser-iplist' ).on( 'keyup click', function () {
updateCIDRresult();
} );
} );
-} )( mediaWiki, jQuery ); \ No newline at end of file
+} )( mediaWiki, jQuery );
diff --git a/CheckUser/package.json b/CheckUser/package.json
index aee35766..14c16e25 100644
--- a/CheckUser/package.json
+++ b/CheckUser/package.json
@@ -1,15 +1,16 @@
{
- "name": "checkuser",
- "version": "0.0.0",
- "private": true,
- "description": "Build tools for the CheckUser extension.",
- "scripts": {
- "test": "grunt test"
- },
- "devDependencies": {
- "grunt": "0.4.5",
- "grunt-cli": "0.1.13",
- "grunt-banana-checker": "0.2.2",
- "grunt-jsonlint": "1.0.4"
- }
+ "name": "checkuser",
+ "version": "0.0.0",
+ "private": true,
+ "description": "Build tools for the CheckUser extension.",
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "eslint-config-wikimedia": "0.3.0",
+ "grunt": "1.0.1",
+ "grunt-banana-checker": "0.6.0",
+ "grunt-eslint": "19.0.0",
+ "grunt-jsonlint": "1.1.0"
+ }
}
diff --git a/CheckUser/phpcs.xml b/CheckUser/phpcs.xml
new file mode 100644
index 00000000..68a2c869
--- /dev/null
+++ b/CheckUser/phpcs.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
+ <exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName" />
+ <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
+ <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
+ <exclude name="MediaWiki.Files.ClassMatchesFilename.NotMatch" />
+ <exclude name="MediaWiki.Files.ClassMatchesFilename.WrongCase" />
+ </rule>
+ <rule ref="Generic.Files.LineLength">
+ <exclude-pattern>CheckUser\.alias\.php</exclude-pattern>
+ </rule>
+ <file>.</file>
+ <arg name="extensions" value="php,php5,inc" />
+ <arg name="encoding" value="UTF-8" />
+</ruleset>
diff --git a/CheckUser/specials/SpecialCheckUser.php b/CheckUser/specials/SpecialCheckUser.php
index 048a0d20..135d8254 100644
--- a/CheckUser/specials/SpecialCheckUser.php
+++ b/CheckUser/specials/SpecialCheckUser.php
@@ -2,22 +2,47 @@
class CheckUser extends SpecialPage {
/**
- * Constructor -- set up the new special page
+ * @var null|array $message Used to cache frequently used messages
*/
+ protected $message = null;
+
public function __construct() {
parent::__construct( 'CheckUser', 'checkuser' );
}
+ public function doesWrites() {
+ return true; // logging
+ }
+
public function execute( $subpage ) {
+ $this->setHeaders();
+ $this->checkPermissions();
+ // Logging and blocking requires writing so stop from here if read-only mode
+ $this->checkReadOnly();
+
+ // Blocked users are not allowed to run checkuser queries (bug T157883)
+ $callingUser = $this->getUser();
+ if ( $callingUser->isBlocked() ) {
+ throw new UserBlockedError( $callingUser->getBlock() );
+ }
+
+ $out = $this->getOutput();
$request = $this->getRequest();
- $this->checkPermissions();
- $this->setHeaders();
+ if ( $this->getUser()->isAllowed( 'checkuser-log' ) ) {
+ $subtitleLink = $this->getLinkRenderer()->makeKnownLink(
+ SpecialPage::getTitleFor( 'CheckUserLog' ),
+ $this->msg( 'checkuser-showlog' )->text()
+ );
+ $out->addSubtitle( $subtitleLink );
+ }
$user = $request->getText( 'user', $request->getText( 'ip', $subpage ) );
$user = trim( $user );
$reason = $request->getText( 'reason' );
- $blockreason = $request->getText( 'blockreason' );
+ $blockreason = $request->getText( 'blockreason', '' );
+ $disableUserTalk = $request->getBool( 'blocktalk', false );
+ $disableEmail = $request->getBool( 'blockemail', false );
$checktype = $request->getVal( 'checktype' );
$period = $request->getInt( 'period' );
$users = $request->getArray( 'users' );
@@ -26,34 +51,36 @@ class CheckUser extends SpecialPage {
$talkTag = $request->getBool( 'usettag' ) ?
trim( $request->getVal( 'talktag' ) ) : '';
- $m = array();
- # An IPv4? An IPv6? CIDR included?
+ $blockParams = [
+ 'reason' => $blockreason,
+ 'talk' => $disableUserTalk,
+ 'email' => $disableEmail,
+ ];
+
+ $ip = $name = $xff = '';
+ $m = [];
if ( IP::isIPAddress( $user ) ) {
+ // A single IP address or an IP range
$ip = IP::sanitizeIP( $user );
- $name = '';
- $xff = '';
- # An IPv4/IPv6 XFF string? CIDR included?
} elseif ( preg_match( '/^(.+)\/xff$/', $user, $m ) && IP::isIPAddress( $m[1] ) ) {
- $ip = '';
- $name = '';
+ // A single IP address or range with XFF string included
$xff = IP::sanitizeIP( $m[1] );
- # A user?
} else {
- $ip = '';
+ // A user?
$name = $user;
- $xff = '';
}
+ $this->showIntroductoryText();
$this->showForm( $user, $reason, $checktype, $ip, $xff, $name, $period );
- # Perform one of the various submit operations...
+ // Perform one of the various submit operations...
if ( $request->wasPosted() ) {
if ( !$this->getUser()->matchEditToken( $request->getVal( 'wpEditToken' ) ) ) {
- $this->getOutput()->wrapWikiMsg( '<div class="error">$1</div>', 'checkuser-token-fail' );
+ $out->wrapWikiMsg( '<div class="error">$1</div>', 'checkuser-token-fail' );
} elseif ( $request->getVal( 'action' ) === 'block' ) {
- $this->doMassUserBlock( $users, $blockreason, $tag, $talkTag );
+ $this->doMassUserBlock( $users, $blockParams, $tag, $talkTag );
} elseif ( !$this->checkReason( $reason ) ) {
- $this->getOutput()->addWikiMsg( 'checkuser-noreason' );
+ $out->addWikiMsg( 'checkuser-noreason' );
} elseif ( $checktype == 'subuserips' ) {
$this->doUserIPsRequest( $name, $reason, $period );
} elseif ( $xff && $checktype == 'subedits' ) {
@@ -68,57 +95,35 @@ class CheckUser extends SpecialPage {
$this->doIPUsersRequest( $ip, false, $reason, $period, $tag, $talkTag );
}
}
- # Add CIDR calculation convenience form
+ // Add CIDR calculation convenience JS form
$this->addJsCIDRForm();
- $this->getOutput()->addModules( 'ext.checkUser' ); // JS
+ $out->addModules( 'ext.checkUser' );
}
- /**
- * As we use the same small set of messages in various methods and that
- * they are called often, we call them once and save them in $this->message
- */
- protected function preCacheMessages() {
- // Precache various messages
- if ( !isset( $this->message ) ) {
- foreach ( array( 'diff', 'hist', 'minoreditletter', 'newpageletter', 'blocklink', 'log' ) as $msg ) {
- $this->message[$msg] = $this->msg( $msg )->escaped();
- }
- }
- }
-
- /**
- * @return Title
- */
- public function getCheckUserLogTitle() {
- if ( !isset( $this->checkUserLogTitle ) ) {
- $this->checkUserLogTitle = SpecialPage::getTitleFor( 'CheckUserLog' );
- }
- return $this->checkUserLogTitle;
- }
-
- protected function showGuide() {
+ protected function showIntroductoryText() {
global $wgCheckUserCIDRLimit;
$this->getOutput()->addWikiText(
$this->msg( 'checkuser-summary',
$wgCheckUserCIDRLimit['IPv4'],
- $wgCheckUserCIDRLimit['IPv6'] )->text() .
- "\n\n[[" . $this->getCheckUserLogTitle()->getPrefixedText() .
- '|' . $this->msg( 'checkuser-showlog' )->text() . ']]'
+ $wgCheckUserCIDRLimit['IPv6']
+ )->text()
);
}
/**
- * @param $user
- * @param $reason
- * @param $checktype
- * @param $ip
- * @param $xff
- * @param $name
- * @param $period
+ * Show the CheckUser query form
+ *
+ * @param string $user
+ * @param string $reason
+ * @param string $checktype
+ * @param string $ip
+ * @param string $xff
+ * @param string $name
+ * @param int $period
*/
protected function showForm( $user, $reason, $checktype, $ip, $xff, $name, $period ) {
$action = htmlspecialchars( $this->getPageTitle()->getLocalUrl() );
- # Fill in requested type if it makes sense
+ // Fill in requested type if it makes sense
$encipusers = $encedits = $encuserips = 0;
if ( $checktype == 'subipusers' && ( $ip || $xff ) ) {
$encipusers = 1;
@@ -126,64 +131,67 @@ class CheckUser extends SpecialPage {
$encuserips = 1;
} elseif ( $checktype == 'subedits' ) {
$encedits = 1;
- # Defaults otherwise
+ // Defaults otherwise
} elseif ( $ip || $xff ) {
$encedits = 1;
} else {
$encuserips = 1;
}
- # Compile our nice form...
- # Username field should fit things like "2001:0db8:85a3:08d3:1319:8a2e:0370:7344/100/xff"
- $this->showGuide(); // explanation text
- $form = Xml::openElement( 'form', array( 'action' => $action,
- 'name' => 'checkuserform', 'id' => 'checkuserform', 'method' => 'post' ) );
+ $form = Xml::openElement( 'form', [ 'action' => $action,
+ 'name' => 'checkuserform', 'id' => 'checkuserform', 'method' => 'post' ] );
$form .= '<fieldset><legend>' . $this->msg( 'checkuser-query' )->escaped() . '</legend>';
- $form .= Xml::openElement( 'table', array( 'style' => 'border:0' ) );
+ $form .= Xml::openElement( 'table', [ 'style' => 'border:0' ] );
$form .= '<tr>';
$form .= '<td>' . $this->msg( 'checkuser-target' )->escaped() . '</td>';
- $form .= '<td>' . Xml::input( 'user', 46, $user, array( 'id' => 'checktarget' ) );
+ // User field should fit things like "2001:0db8:85a3:08d3:1319:8a2e:0370:7344/100/xff"
+ $form .= '<td>' . Xml::input( 'user', 46, $user, [ 'id' => 'checktarget' ] );
$form .= '&#160;' . $this->getPeriodMenu( $period ) . '</td>';
$form .= '</tr><tr>';
$form .= '<td></td>';
- $form .= Xml::openElement( 'td', array( 'class' => 'checkuserradios' ) );
- $form .= Xml::openElement( 'table', array( 'style' => 'border:0' ) );
+ $form .= Xml::openElement( 'td', [ 'class' => 'checkuserradios' ] );
+ $form .= Xml::openElement( 'table', [ 'style' => 'border:0' ] );
$form .= '<tr>';
$form .= '<td>' .
- Xml::radio( 'checktype', 'subuserips', $encuserips, array( 'id' => 'subuserips' ) );
+ Xml::radio( 'checktype', 'subuserips', $encuserips, [ 'id' => 'subuserips' ] );
$form .= ' ' . Xml::label( $this->msg( 'checkuser-ips' )->text(), 'subuserips' ) . '</td>';
$form .= '<td>' .
- Xml::radio( 'checktype', 'subedits', $encedits, array( 'id' => 'subedits' ) );
+ Xml::radio( 'checktype', 'subedits', $encedits, [ 'id' => 'subedits' ] );
$form .= ' ' . Xml::label( $this->msg( 'checkuser-edits' )->text(), 'subedits' ) . '</td>';
$form .= '<td>' .
- Xml::radio( 'checktype', 'subipusers', $encipusers, array( 'id' => 'subipusers' ) );
- $form .= ' ' . Xml::label( $this->msg( 'checkuser-users' )->text(), 'subipusers' ) . '</td>';
+ Xml::radio( 'checktype', 'subipusers', $encipusers, [ 'id' => 'subipusers' ] );
+ $form .= ' ' .
+ Xml::label( $this->msg( 'checkuser-users' )->text(), 'subipusers' ) . '</td>';
$form .= '</tr>';
$form .= Xml::closeElement( 'table' );
$form .= Xml::closeElement( 'td' );
$form .= '</tr><tr>';
$form .= '<td>' . $this->msg( 'checkuser-reason' )->escaped() . '</td>';
$form .= '<td>' . Xml::input( 'reason', 46, $reason,
- array( 'maxlength' => '150', 'id' => 'checkreason' ) );
+ [ 'maxlength' => '150', 'id' => 'checkreason' ] );
$form .= '&#160; &#160;' . Xml::submitButton( $this->msg( 'checkuser-check' )->text(),
- array( 'id' => 'checkusersubmit', 'name' => 'checkusersubmit' ) ) . '</td>';
+ [ 'id' => 'checkusersubmit', 'name' => 'checkusersubmit' ] ) . '</td>';
$form .= '</tr>';
$form .= Xml::closeElement( 'table' );
$form .= '</fieldset>';
$form .= Html::hidden( 'wpEditToken', $this->getUser()->getEditToken() );
$form .= Xml::closeElement( 'form' );
- # Output form
+
$this->getOutput()->addHTML( $form );
}
/**
* Get a selector of time period options
- * @param int $selected, selected level
+ * @param int $selected Currently selected option
* @return string
*/
- protected function getPeriodMenu( $selected = null ) {
- $s = '<label for="period">' . $this->msg( 'checkuser-period' )->escaped() . '</label>&#160;';
- $s .= Xml::openElement( 'select', array( 'name' => 'period', 'id' => 'period', 'style' => 'margin-top:.2em;' ) );
+ protected function getPeriodMenu( $selected ) {
+ $s = '<label for="period">' .
+ $this->msg( 'checkuser-period' )->escaped() . '</label>&#160;';
+ $s .= Xml::openElement(
+ 'select',
+ [ 'name' => 'period', 'id' => 'period', 'style' => 'margin-top:.2em;' ]
+ );
$s .= Xml::option( $this->msg( 'checkuser-week-1' )->text(), 7, $selected === 7 );
$s .= Xml::option( $this->msg( 'checkuser-week-2' )->text(), 14, $selected === 14 );
$s .= Xml::option( $this->msg( 'checkuser-month' )->text(), 31, $selected === 31 );
@@ -200,37 +208,65 @@ class CheckUser extends SpecialPage {
'<legend>' . $this->msg( 'checkuser-cidr-label' )->escaped() . '</legend>';
$s .= '<textarea id="mw-checkuser-iplist" dir="ltr" rows="5" cols="50"></textarea><br />';
$s .= $this->msg( 'checkuser-cidr-res' )->escaped() . '&#160;' .
- Xml::input( 'mw-checkuser-cidr-res', 35, '', array( 'id' => 'mw-checkuser-cidr-res' ) ) .
+ Xml::input( 'mw-checkuser-cidr-res', 35, '', [ 'id' => 'mw-checkuser-cidr-res' ] ) .
'&#160;<strong id="mw-checkuser-ipnote"></strong>';
$s .= '</fieldset>';
$this->getOutput()->addHTML( $s );
}
/**
+ * @param string $reason
+ * @return bool
+ */
+ protected function checkReason( $reason ) {
+ global $wgCheckUserForceSummary;
+ return ( !$wgCheckUserForceSummary || strlen( $reason ) );
+ }
+
+ /**
+ * As we use the same small set of messages in various methods and that
+ * they are called often, we call them once and save them in $this->message
+ */
+ protected function preCacheMessages() {
+ if ( $this->message === null ) {
+ $msgKeys = [ 'diff', 'hist', 'minoreditletter', 'newpageletter', 'blocklink', 'log' ];
+ foreach ( $msgKeys as $msg ) {
+ $this->message[$msg] = $this->msg( $msg )->escaped();
+ }
+ }
+ }
+
+ /**
* Block a list of selected users
* @param array $users
- * @param string $reason
+ * @param array $blockParams
* @param string $tag
* @param string $talkTag
*/
- protected function doMassUserBlock( $users, $reason = '', $tag = '', $talkTag = '' ) {
+ protected function doMassUserBlock( $users, $blockParams, $tag = '', $talkTag = '' ) {
global $wgCheckUserMaxBlocks;
- if ( empty( $users ) || $this->getUser()->isBlocked( false ) ) {
+ $usersCount = count( $users );
+ if ( !$this->getUser()->isAllowed( 'block' ) || $this->getUser()->isBlocked()
+ || !$usersCount
+ ) {
$this->getOutput()->addWikiMsg( 'checkuser-block-failure' );
return;
- } elseif ( count( $users ) > $wgCheckUserMaxBlocks ) {
+ } elseif ( $usersCount > $wgCheckUserMaxBlocks ) {
$this->getOutput()->addWikiMsg( 'checkuser-block-limit' );
return;
- } elseif ( !$reason ) {
+ } elseif ( !$blockParams['reason'] ) {
$this->getOutput()->addWikiMsg( 'checkuser-block-noreason' );
return;
}
- $safeUsers = self::doMassUserBlockInternal( $users, $reason, $tag, $talkTag );
- if ( !empty( $safeUsers ) ) {
+
+ $blockedUsers = $this->doMassUserBlockInternal( $users, $blockParams, $tag, $talkTag );
+ $blockedCount = count( $blockedUsers );
+ if ( $blockedCount > 0 ) {
$lang = $this->getLanguage();
- $n = count( $safeUsers );
- $ulist = $lang->listToText( $safeUsers );
- $this->getOutput()->addWikiMsg( 'checkuser-block-success', $ulist, $lang->formatNum( $n ) );
+ $this->getOutput()->addWikiMsg( 'checkuser-block-success',
+ $lang->listToText( $blockedUsers ),
+ $lang->formatNum( $blockedCount )
+ );
} else {
$this->getOutput()->addWikiMsg( 'checkuser-block-failure' );
}
@@ -239,150 +275,183 @@ class CheckUser extends SpecialPage {
/**
* Block a list of selected users
*
- * @param $users Array
- * @param $reason String
- * @param $tag String: replaces user pages
- * @param $talkTag String: replaces user talk pages
- * @return Array: list of html-safe usernames
+ * @param string[] $users
+ * @param array $blockParams
+ * @param string $tag replaces user pages
+ * @param string $talkTag replaces user talk pages
+ * @return string[] List of html-safe usernames which were actually were blocked
*/
- public static function doMassUserBlockInternal( $users, $reason = '', $tag = '', $talkTag = '' ) {
- global $wgUser;
+ protected function doMassUserBlockInternal( $users, array $blockParams,
+ $tag = '', $talkTag = '' ) {
+ global $wgBlockAllowsUTEdit;
- $counter = $blockSize = 0;
- $safeUsers = array();
- $log = new LogPage( 'block' );
+ $currentUser = $this->getUser();
+ $safeUsers = [];
foreach ( $users as $name ) {
- # Enforce limits
- $counter++;
- $blockSize++;
- # Lets not go *too* fast
- if ( $blockSize >= 20 ) {
- $blockSize = 0;
- wfWaitForSlaves( 5 );
- }
$u = User::newFromName( $name, false );
- // If user doesn't exist, it ought to be an IP then
- if ( is_null( $u ) || ( !$u->getId() && !IP::isIPAddress( $u->getName() ) ) ) {
+ // Do some checks to make sure we can block this user first
+ if ( $u === null ) {
+ // Invalid user
+ continue;
+ }
+ $isIP = IP::isIPAddress( $u->getName() );
+ if ( !$u->getId() && !$isIP ) {
+ // Not a registered user or an IP
+ continue;
+ }
+
+ if ( $u->isBlocked() ) {
+ // If the user is already blocked, just leave it as is
continue;
}
+
$userTitle = $u->getUserPage();
$userTalkTitle = $u->getTalkPage();
- $userpage = WikiPage::factory( $userTitle );
- $usertalk = WikiPage::factory( $userTalkTitle );
- $safeUsers[] = '[[' . $userTitle->getPrefixedText() . '|' . $userTitle->getText() . ']]';
- $expirestr = $u->getId() ? 'indefinite' : '1 week';
+ $safeUsers[] = "[[{$userTitle->getPrefixedText()}|{$userTitle->getText()}]]";
+ $expirestr = $isIP ? '1 week' : 'indefinite';
$expiry = SpecialBlock::parseExpiryInput( $expirestr );
- $anonOnly = IP::isIPAddress( $u->getName() ) ? 1 : 0;
// Create the block
$block = new Block();
$block->setTarget( $u );
- $block->setBlocker( $wgUser );
- $block->mReason = $reason;
+ $block->setBlocker( $currentUser );
+ $block->mReason = $blockParams['reason'];
$block->mExpiry = $expiry;
- $block->isHardblock( !IP::isIPAddress( $u->getName() ) );
+ $block->isHardblock( !$isIP );
$block->isAutoblocking( true );
$block->prevents( 'createaccount', true );
- $block->prevents( 'sendemail', false );
- $block->prevents( 'editownusertalk', false );
-
- $oldblock = Block::newFromTarget( $u->getName() );
- if ( !$oldblock ) {
- $block->insert();
- # Prepare log parameters
- $logParams = array();
- $logParams[] = $expirestr;
- $flags = array( 'nocreate' );
- if ( $anonOnly ) {
- $flags[] = 'anononly';
- }
- $logParams[] = implode( ',', $flags );
- # Add log entry
- $log->addEntry( 'block', $userTitle, $reason, $logParams );
- }
- # Tag userpage! (check length to avoid mistakes)
- if ( strlen( $tag ) > 2 ) {
- $flags = 0;
- if ( $userpage->exists() ) {
- $flags |= EDIT_MINOR;
- }
- $userpage->doEditContent( new WikitextContent( $tag ), $reason, $flags );
- }
- if ( strlen( $talkTag ) > 2 ) {
- $flags = 0;
- if ( $usertalk->exists() ) {
- $flags |= EDIT_MINOR;
- }
- $usertalk->doEditContent( new WikitextContent( $talkTag ), $reason, $flags );
- }
+ $block->prevents( 'sendemail',
+ ( SpecialBlock::canBlockEmail( $currentUser ) && $blockParams['email'] )
+ );
+ $block->prevents( 'editownusertalk', ( !$wgBlockAllowsUTEdit || $blockParams['talk'] ) );
+ $status = $block->insert();
+
+ // Prepare log parameters for the block
+ $logParams = [];
+ $logParams['5::duration'] = $expirestr;
+ $logParams['6::flags'] = self::userBlockLogFlags( $isIP, $blockParams );
+
+ $logEntry = new ManualLogEntry( 'block', 'block' );
+ $logEntry->setTarget( $userTitle );
+ $logEntry->setComment( $blockParams['reason'] );
+ $logEntry->setPerformer( $currentUser );
+ $logEntry->setParameters( $logParams );
+ $blockIds = array_merge( [ $status['id'] ], $status['autoIds'] );
+ $logEntry->setRelations( [ 'ipb_id' => $blockIds ] );
+ $logEntry->publish( $logEntry->insert() );
+
+ // Tag user page and user talk page
+ $this->tagPage( $userTitle, $tag, $blockParams['reason'] );
+ $this->tagPage( $userTalkTitle, $talkTag, $blockParams['reason'] );
}
+
return $safeUsers;
}
/**
+ * Return a comma-delimited list of "flags" to be passed to the block log.
+ * Flags are 'anononly', 'nocreate', 'noemail' and 'nousertalk'.
+ * @param bool $anonOnly
+ * @param array $blockParams
+ * @return string
+ */
+ protected static function userBlockLogFlags( $anonOnly, array $blockParams ) {
+ global $wgBlockAllowsUTEdit;
+ $flags = [];
+
+ if ( $anonOnly ) {
+ $flags[] = 'anononly';
+ }
+
+ $flags[] = 'nocreate';
+
+ if ( $blockParams['email'] ) {
+ $flags[] = 'noemail';
+ }
+
+ if ( $wgBlockAllowsUTEdit && $blockParams['talk'] ) {
+ $flags[] = 'nousertalk';
+ }
+
+ return implode( ',', $flags );
+ }
+
+ /**
+ * Make an edit to the given page with the tag provided
+ *
+ * @param Title $title
+ * @param string $tag
+ * @param string $summary
+ */
+ protected function tagPage( Title $title, $tag, $summary ) {
+ // Check length to avoid mistakes
+ if ( strlen( $tag ) > 2 ) {
+ $page = WikiPage::factory( $title );
+ $flags = 0;
+ if ( $page->exists() ) {
+ $flags |= EDIT_MINOR;
+ }
+ $page->doEditContent( new WikitextContent( $tag ), $summary,
+ $flags, false, $this->getUser() );
+ }
+ }
+
+ /**
* Give a "no matches found for X" message.
* If $checkLast, then mention the last edit by this user or IP.
*
- * @param $userName
+ * @param string $userName
* @param bool $checkLast
- * @return String
+ * @return string
*/
protected function noMatchesMessage( $userName, $checkLast = true ) {
if ( $checkLast ) {
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$user_id = User::idFromName( $userName );
if ( $user_id ) {
$revEdit = $dbr->selectField( 'revision',
'rev_timestamp',
- array( 'rev_user' => $user_id ),
+ [ 'rev_user' => $user_id ],
__METHOD__,
- array( 'ORDER BY' => 'rev_timestamp DESC' )
+ [ 'ORDER BY' => 'rev_timestamp DESC' ]
);
$logEdit = $dbr->selectField( 'logging',
'log_timestamp',
- array( 'log_user' => $user_id ),
+ [ 'log_user' => $user_id ],
__METHOD__,
- array( 'ORDER BY' => 'log_timestamp DESC' )
+ [ 'ORDER BY' => 'log_timestamp DESC' ]
);
} else {
$revEdit = $dbr->selectField( 'revision',
'rev_timestamp',
- array( 'rev_user_text' => $userName ),
+ [ 'rev_user_text' => $userName ],
__METHOD__,
- array( 'ORDER BY' => 'rev_timestamp DESC' )
+ [ 'ORDER BY' => 'rev_timestamp DESC' ]
);
$logEdit = false; // no log_user_text index
}
$lastEdit = max( $revEdit, $logEdit );
if ( $lastEdit ) {
+ $lastEditTime = wfTimestamp( TS_MW, $lastEdit );
$lang = $this->getLanguage();
- $lastEditDate = $lang->date( wfTimestamp( TS_MW, $lastEdit ), true );
- $lastEditTime = $lang->time( wfTimestamp( TS_MW, $lastEdit ), true );
// FIXME: don't pass around parsed messages
- return $this->msg( 'checkuser-nomatch-edits', $lastEditDate, $lastEditTime )->parseAsBlock();
+ return $this->msg( 'checkuser-nomatch-edits',
+ $lang->date( $lastEditTime, true ),
+ $lang->time( $lastEditTime, true )
+ )->parseAsBlock();
}
}
return $this->msg( 'checkuser-nomatch' )->parseAsBlock();
}
/**
- * @param $reason
- * @return bool
- */
- protected function checkReason( $reason ) {
- global $wgCheckUserForceSummary;
- return ( !$wgCheckUserForceSummary || strlen( $reason ) );
- }
-
- /**
- * FIXME: documentation out of date
- * @param string $ip <???
- * @param bool $xfor <???
+ * Show all the IPs used by a user
+ *
+ * @param string $user
* @param string $reason
- * Get all IPs used by a user
- * Shows first and last date and number of edits
+ * @param int $period
*/
- protected function doUserIPsRequest( $user , $reason = '', $period = 0 ) {
+ protected function doUserIPsRequest( $user, $reason = '', $period = 0 ) {
$out = $this->getOutput();
$userTitle = Title::newFromText( $user, NS_USER );
@@ -390,54 +459,50 @@ class CheckUser extends SpecialPage {
// normalize the username
$user = $userTitle->getText();
}
- # IPs are passed in as a blank string
+ // IPs are passed in as a blank string
if ( !$user ) {
$out->addWikiMsg( 'nouserspecified' );
return;
}
- # Get ID, works better than text as user may have been renamed
+ // Get ID, works better than text as user may have been renamed
$user_id = User::idFromName( $user );
- # If user is not IP or nonexistent
+ // If user is not IP or nonexistent
if ( !$user_id ) {
- $out->addWikiMsgArray( 'nosuchusershort', $user );
+ $out->addWikiMsg( 'nosuchusershort', $user );
return;
}
- # Record check...
- if ( !self::addLogEntry( 'userips', 'user', $user, $reason, $user_id ) ) {
- // FIXME: addWikiMsg
- $out->addHTML( '<p>' . $this->msg( 'checkuser-log-fail' )->escaped() . '</p>' );
- }
+ // Record check...
+ self::addLogEntry( 'userips', 'user', $user, $reason, $user_id );
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$time_conds = $this->getTimeConds( $period );
- # Ordering by the latest timestamp makes a small filesort on the IP list
+ // Ordering by the latest timestamp makes a small filesort on the IP list
$ret = $dbr->select(
'cu_changes',
- array(
+ [
'cuc_ip',
'cuc_ip_hex',
'COUNT(*) AS count',
'MIN(cuc_timestamp) AS first',
'MAX(cuc_timestamp) AS last',
- ),
- array( 'cuc_user' => $user_id, $time_conds ),
+ ],
+ [ 'cuc_user' => $user_id, $time_conds ],
__METHOD__,
- array(
+ [
'ORDER BY' => 'last DESC',
'GROUP BY' => 'cuc_ip,cuc_ip_hex',
'LIMIT' => 5001,
'USE INDEX' => 'cuc_user_ip_time',
- )
+ ]
);
if ( !$dbr->numRows( $ret ) ) {
$s = $this->noMatchesMessage( $user ) . "\n";
} else {
- $blockip = SpecialPage::getTitleFor( 'Block' );
- $ips_edits = array();
+ $ips_edits = [];
$counter = 0;
foreach ( $ret as $row ) {
if ( $counter >= 5000 ) {
@@ -455,46 +520,46 @@ class CheckUser extends SpecialPage {
set_time_limit( 60 );
wfRestoreWarnings();
- $logs = SpecialPage::getTitleFor( 'Log' );
$s = '<div id="checkuserresults"><ul>';
foreach ( $ips_edits as $ip => $edits ) {
$s .= '<li>';
- $s .= '<a href="' .
- htmlspecialchars( $this->getPageTitle()->getLocalURL( array(
+ $s .= $this->getSelfLink( $ip,
+ [
'user' => $ip,
- 'reason' => $reason
- ) ) ) . '">' .
- htmlspecialchars( $ip ) . '</a>';
- $s .= ' (<a href="' . htmlspecialchars( $blockip->getLocalURL( 'ip=' . urlencode( $ip ) ) ) . '">' .
- $this->msg( 'blocklink' )->escaped() . '</a>)';
- if ( $ips_first[$ip] == $ips_last[$ip] ) {
- $s .= ' (' . $this->getLanguage()->timeanddate( wfTimestamp( TS_MW, $ips_first[$ip] ), true ) . ') ';
- } else {
- $lang = $this->getLanguage();
- $s .= ' (' . $lang->timeanddate( wfTimestamp( TS_MW, $ips_first[$ip] ), true ) .
- ' -- ' . $lang->timeanddate( wfTimestamp( TS_MW, $ips_last[$ip] ), true ) . ') ';
- }
+ 'reason' => $reason,
+ ]
+ );
+ $s .= ' ' . $this->msg( 'parentheses' )->rawParams(
+ $this->getLinkRenderer()->makeKnownLink(
+ SpecialPage::getTitleFor( 'Block', $ip ),
+ $this->msg( 'blocklink' )->text()
+ )
+ )->escaped();
+ $s .= ' ' . $this->getTimeRangeString( $ips_first[$ip], $ips_last[$ip] ) . ' ';
$s .= ' <strong>[' . $edits . ']</strong>';
- # If we get some results, it helps to know if the IP in general
- # has a lot more edits, e.g. "tip of the iceberg"...
+ // If we get some results, it helps to know if the IP in general
+ // has a lot more edits, e.g. "tip of the iceberg"...
$ipedits = $dbr->estimateRowCount( 'cu_changes', '*',
- array( 'cuc_ip_hex' => $ips_hex[$ip], $time_conds ),
+ [ 'cuc_ip_hex' => $ips_hex[$ip], $time_conds ],
__METHOD__ );
- # If small enough, get a more accurate count
+ // If small enough, get a more accurate count
if ( $ipedits <= 1000 ) {
$ipedits = $dbr->selectField( 'cu_changes', 'COUNT(*)',
- array( 'cuc_ip_hex' => $ips_hex[$ip], $time_conds ),
+ [ 'cuc_ip_hex' => $ips_hex[$ip], $time_conds ],
__METHOD__ );
}
if ( $ipedits > $ips_edits[$ip] ) {
- $s .= ' <i>(' . $this->msg( 'checkuser-ipeditcount', $ipedits )->escaped() . ')</i>';
+ $s .= ' <i>(' .
+ $this->msg( 'checkuser-ipeditcount' )->numParams( $ipedits )->escaped() .
+ ')</i>';
}
- # If this IP is blocked, give a link to the block log
+ // If this IP is blocked, give a link to the block log
$s .= $this->getIPBlockInfo( $ip );
$s .= '<div style="margin-left:5%">';
- $s .= '<small>' . $this->msg( 'checkuser-toollinks', urlencode( $ip ) )->parse() . '</small>';
+ $s .= '<small>' . $this->msg( 'checkuser-toollinks', urlencode( $ip ) )->parse() .
+ '</small>';
$s .= '</div>';
$s .= "</li>\n";
}
@@ -506,88 +571,90 @@ class CheckUser extends SpecialPage {
protected function getIPBlockInfo( $ip ) {
$block = Block::newFromTarget( null, $ip, false );
if ( $block instanceof Block ) {
- if ( $block->getType() == Block::TYPE_RANGE ) {
- $userpage = Title::makeTitle( NS_USER, $block->getTarget() );
- $blocklog = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Log' ),
- $this->msg( 'checkuser-blocked' )->escaped(),
- array(),
- array(
- 'type' => 'block',
- 'page' => $userpage->getPrefixedText()
- )
- );
- return ' <strong>(' . $blocklog . ' - ' . $block->getTarget() . ')</strong>';
- } elseif ( $block->getType() == Block::TYPE_AUTO ) {
- $blocklog = Linker::linkKnown(
- SpecialPage::getTitleFor( 'BlockList' ),
- $this->msg( 'checkuser-blocked' )->escaped(),
- array(),
- array( 'ip' => "#{$block->getId()}" )
- );
- return ' <strong>(' . $blocklog . ')</strong>';
- } else {
- $userpage = Title::makeTitle( NS_USER, $block->getTarget() );
- $blocklog = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Log' ),
- $this->msg( 'checkuser-blocked' )->escaped(),
- array(),
- array(
- 'type' => 'block',
- 'page' => $userpage->getPrefixedText()
- )
- );
- return ' <strong>(' . $blocklog . ')</strong>';
- }
+ return $this->getBlockFlag( $block );
}
return '';
}
/**
+ * Get a link to block information about the passed block for displaying to the user.
+ *
+ * @param Block $block
+ * @return string
+ */
+ protected function getBlockFlag( Block $block ) {
+ if ( $block->getType() == Block::TYPE_AUTO ) {
+ $ret = $this->getLinkRenderer()->makeKnownLink(
+ SpecialPage::getTitleFor( 'BlockList' ),
+ $this->msg( 'checkuser-blocked' )->text(),
+ [],
+ [ 'wpTarget' => "#{$block->getId()}" ]
+ );
+ } else {
+ $userPage = Title::makeTitle( NS_USER, $block->getTarget() );
+ $ret = $this->getLinkRenderer()->makeKnownLink(
+ SpecialPage::getTitleFor( 'Log' ),
+ $this->msg( 'checkuser-blocked' )->text(),
+ [],
+ [
+ 'type' => 'block',
+ 'page' => $userPage->getPrefixedText()
+ ]
+ );
+ }
+
+ // Add the blocked range if the block is on a range
+ if ( $block->getType() == Block::TYPE_RANGE ) {
+ $ret .= ' - ' . htmlspecialchars( $block->getTarget() );
+ }
+
+ return '<strong>' .
+ $this->msg( 'parentheses' )->rawParams( $ret )->escaped()
+ . '</strong>';
+ }
+
+ /**
+ * Shows all changes made by an IP address or range
+ *
* @param string $ip
- * @param bool $xfor
+ * @param bool $xfor if query is for XFF
* @param string $reason
- * FIXME: $period ???
- * Shows all edits in Recent Changes by this IP (or range) and who made them
+ * @param int $period
*/
protected function doIPEditsRequest( $ip, $xfor = false, $reason = '', $period = 0 ) {
$out = $this->getOutput();
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
- # Invalid IPs are passed in as a blank string
+ // Invalid IPs are passed in as a blank string
$ip_conds = self::getIpConds( $dbr, $ip, $xfor );
if ( !$ip || $ip_conds === false ) {
$out->addWikiMsg( 'badipaddress' );
return;
}
- $logType = 'ipedits';
- if ( $xfor ) {
- $logType .= '-xff';
- }
- # Record check...
- if ( !self::addLogEntry( $logType, 'ip', $ip, $reason ) ) {
- $out->addWikiMsg( 'checkuser-log-fail' );
- }
+ $logType = $xfor ? 'ipedits-xff' : 'ipedits';
+
+ // Record check in the logs
+ self::addLogEntry( $logType, 'ip', $ip, $reason );
$ip_conds = $dbr->makeList( $ip_conds, LIST_AND );
$time_conds = $this->getTimeConds( $period );
- # Ordered in descent by timestamp. Can cause large filesorts on range scans.
- # Check how many rows will need sorting ahead of time to see if this is too big.
- # Also, if we only show 5000, too many will be ignored as well.
+ // Ordered in descent by timestamp. Can cause large filesorts on range scans.
+ // Check how many rows will need sorting ahead of time to see if this is too big.
+ // Also, if we only show 5000, too many will be ignored as well.
$index = $xfor ? 'cuc_xff_hex_time' : 'cuc_ip_hex_time';
if ( strpos( $ip, '/' ) !== false ) {
- # Quick index check only OK if no time constraint
+ // Quick index check only OK if no time constraint
if ( $period ) {
$rangecount = $dbr->selectField( 'cu_changes', 'COUNT(*)',
- array( $ip_conds, $time_conds ),
+ [ $ip_conds, $time_conds ],
__METHOD__,
- array( 'USE INDEX' => $index ) );
+ [ 'USE INDEX' => $index ] );
} else {
$rangecount = $dbr->estimateRowCount( 'cu_changes', '*',
- array( $ip_conds ),
+ [ $ip_conds ],
__METHOD__,
- array( 'USE INDEX' => $index ) );
+ [ 'USE INDEX' => $index ] );
}
// Sorting might take some time...make sure it is there
wfSuppressWarnings();
@@ -595,20 +662,26 @@ class CheckUser extends SpecialPage {
wfRestoreWarnings();
}
$counter = 0;
- # See what is best to do after testing the waters...
+ // See what is best to do after testing the waters...
if ( isset( $rangecount ) && $rangecount > 5000 ) {
- $ret = $dbr->select( 'cu_changes',
- array( 'cuc_ip_hex', 'COUNT(*) AS count', 'MIN(cuc_timestamp) AS first', 'MAX(cuc_timestamp) AS last' ),
- array( $ip_conds, $time_conds ),
+ $ret = $dbr->select(
+ 'cu_changes',
+ [
+ 'cuc_ip_hex',
+ 'COUNT(*) AS count',
+ 'MIN(cuc_timestamp) AS first',
+ 'MAX(cuc_timestamp) AS last'
+ ],
+ [ $ip_conds, $time_conds ],
__METHOD__,
- array(
+ [
'GROUP BY' => 'cuc_ip_hex',
'ORDER BY' => 'cuc_ip_hex',
'LIMIT' => 5001,
'USE INDEX' => $index,
- )
+ ]
);
- # List out each IP that has edits
+ // List out each IP that has edits
$s = $this->msg( 'checkuser-too-many' )->parseAsBlock();
$s .= '<ol>';
foreach ( $ret as $row ) {
@@ -616,27 +689,22 @@ class CheckUser extends SpecialPage {
$out->addWikiMsg( 'checkuser-limited' );
break;
}
- # Convert the IP hexes into normal form
+ // Convert the IP hexes into normal form
if ( strpos( $row->cuc_ip_hex, 'v6-' ) !== false ) {
$ip = substr( $row->cuc_ip_hex, 3 );
$ip = IP::HextoOctet( $ip );
} else {
- $ip = long2ip( wfBaseConvert( $row->cuc_ip_hex, 16, 10, 8 ) );
+ $ip = long2ip( Wikimedia\base_convert( $row->cuc_ip_hex, 16, 10, 8 ) );
}
- $s .= '<li><a href="' .
- htmlspecialchars( $this->getPageTitle()->getLocalURL( array(
+ $s .= '<li>';
+ $s .= $this->getSelfLink( $ip,
+ [
'user' => $ip,
'reason' => $reason,
'checktype' => 'subipusers'
- ) ) ) .
- '">' . $ip . '</a>';
- if ( $row->first == $row->last ) {
- $s .= ' (' . $this->getLanguage()->timeanddate( wfTimestamp( TS_MW, $row->first ), true ) . ') ';
- } else {
- $lang = $this->getLanguage();
- $s .= ' (' . $lang->timeanddate( wfTimestamp( TS_MW, $row->first ), true ) .
- ' -- ' . $lang->timeanddate( wfTimestamp( TS_MW, $row->last ), true ) . ') ';
- }
+ ]
+ );
+ $s .= ' ' . $this->getTimeRangeString( $row->first, $row->last ) . ' ';
$s .= ' [<strong>' . $row->count . "</strong>]</li>\n";
++$counter;
}
@@ -650,40 +718,42 @@ class CheckUser extends SpecialPage {
return;
}
- # OK, do the real query...
+ // OK, do the real query...
$ret = $dbr->select(
'cu_changes',
- array(
- 'cuc_namespace', 'cuc_title', 'cuc_user', 'cuc_user_text', 'cuc_comment', 'cuc_actiontext',
- 'cuc_timestamp', 'cuc_minor', 'cuc_page_id', 'cuc_type', 'cuc_this_oldid',
- 'cuc_last_oldid', 'cuc_ip', 'cuc_xff', 'cuc_agent'
- ),
- array( $ip_conds, $time_conds ),
+ [
+ 'cuc_namespace', 'cuc_title', 'cuc_user', 'cuc_user_text', 'cuc_comment',
+ 'cuc_actiontext', 'cuc_timestamp', 'cuc_minor', 'cuc_page_id', 'cuc_type',
+ 'cuc_this_oldid', 'cuc_last_oldid', 'cuc_ip', 'cuc_xff', 'cuc_agent'
+ ],
+ [ $ip_conds, $time_conds ],
__METHOD__,
- array(
+ [
'ORDER BY' => 'cuc_timestamp DESC',
'LIMIT' => 5001,
'USE INDEX' => $index,
- )
+ ]
);
if ( !$dbr->numRows( $ret ) ) {
$s = $this->noMatchesMessage( $ip, !$xfor ) . "\n";
} else {
- # Cache common messages
+ // Cache common messages
$this->preCacheMessages();
- # Try to optimize this query
+ // Try to optimize this query
$lb = new LinkBatch;
foreach ( $ret as $row ) {
$userText = str_replace( ' ', '_', $row->cuc_user_text );
- $lb->add( $row->cuc_namespace, $row->cuc_title );
+ if ( $row->cuc_title !== '' ) {
+ $lb->add( $row->cuc_namespace, $row->cuc_title );
+ }
$lb->add( NS_USER, $userText );
$lb->add( NS_USER_TALK, $userText );
}
$lb->execute();
$ret->seek( 0 );
- # List out the edits
+ // List out the edits
$s = '<div id="checkuserresults">';
foreach ( $ret as $row ) {
if ( $counter >= 5000 ) {
@@ -700,9 +770,26 @@ class CheckUser extends SpecialPage {
}
/**
+ * @param ResultWrapper $rows Results with cuc_namespace and cuc_title field
+ */
+ protected function doLinkCache( $rows ) {
+ $lb = new LinkBatch();
+ $lb->setCaller( __METHOD__ );
+ foreach ( $rows as $row ) {
+ if ( $row->cuc_title !== '' ) {
+ $lb->add( $row->cuc_namespace, $row->cuc_title );
+ }
+ }
+ $lb->execute();
+ $rows->seek( 0 );
+ }
+
+ /**
+ * Shows all changes made by a particular user
+ *
* @param string $user
* @param string $reason
- * Shows all edits in Recent Changes by this user
+ * @param int $period
*/
protected function doUserEditsRequest( $user, $reason = '', $period = 0 ) {
$out = $this->getOutput();
@@ -712,70 +799,64 @@ class CheckUser extends SpecialPage {
// normalize the username
$user = $userTitle->getText();
}
- # IPs are passed in as a blank string
+ // IPs are passed in as a blank string
if ( !$user ) {
$out->addWikiMsg( 'nouserspecified' );
return;
}
- # Get ID, works better than text as user may have been renamed
+ // Get ID, works better than text as user may have been renamed
$user_id = User::idFromName( $user );
- # If user is not IP or nonexistent
+ // If user is not IP or nonexistent
if ( !$user_id ) {
$s = $this->msg( 'nosuchusershort', $user )->parseAsBlock();
$out->addHTML( $s );
return;
}
- # Record check...
- if ( !self::addLogEntry( 'useredits', 'user', $user, $reason, $user_id ) ) {
- $out->addHTML( '<p>' . $this->msg( 'checkuser-log-fail' )->escaped() . '</p>' );
- }
+ // Record check...
+ self::addLogEntry( 'useredits', 'user', $user, $reason, $user_id );
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$user_cond = "cuc_user = '$user_id'";
$time_conds = $this->getTimeConds( $period );
- # Ordered in descent by timestamp. Causes large filesorts if there are many edits.
- # Check how many rows will need sorting ahead of time to see if this is too big.
- # If it is, sort by IP,time to avoid the filesort.
+ // Ordered in descent by timestamp. Causes large filesorts if there are many edits.
+ // Check how many rows will need sorting ahead of time to see if this is too big.
+ // If it is, sort by IP,time to avoid the filesort.
if ( $period ) {
$count = $dbr->selectField( 'cu_changes', 'COUNT(*)',
- array( $user_cond, $time_conds ),
+ [ $user_cond, $time_conds ],
__METHOD__,
- array( 'USE INDEX' => 'cuc_user_ip_time' ) );
+ [ 'USE INDEX' => 'cuc_user_ip_time' ] );
} else {
$count = $dbr->estimateRowCount( 'cu_changes', '*',
- array( $user_cond, $time_conds ),
+ [ $user_cond, $time_conds ],
__METHOD__,
- array( 'USE INDEX' => 'cuc_user_ip_time' ) );
+ [ 'USE INDEX' => 'cuc_user_ip_time' ] );
}
- # Cache common messages
+ // Cache common messages
$this->preCacheMessages();
- # See what is best to do after testing the waters...
+ // See what is best to do after testing the waters...
if ( $count > 5000 ) {
$out->addHTML( $this->msg( 'checkuser-limited' )->parse() );
$ret = $dbr->select(
'cu_changes',
'*',
- array( $user_cond, $time_conds ),
+ [ $user_cond, $time_conds ],
__METHOD__,
- array(
+ [
'ORDER BY' => 'cuc_ip ASC, cuc_timestamp DESC',
'LIMIT' => 5000,
'USE INDEX' => 'cuc_user_ip_time'
- )
+ ]
);
- # Try to optimize this query
- $lb = new LinkBatch;
- foreach ( $ret as $row ) {
- $lb->add( $row->cuc_namespace, $row->cuc_title );
- }
- $lb->execute();
- $ret->seek( 0 );
+ // Try to optimize this query
+ $this->doLinkCache( $ret );
$s = '';
foreach ( $ret as $row ) {
- if ( !$ip = htmlspecialchars( $row->cuc_ip ) ) {
+ $ip = htmlspecialchars( $row->cuc_ip );
+ if ( !$ip ) {
continue;
}
if ( !isset( $lastIP ) ) {
@@ -798,30 +879,24 @@ class CheckUser extends SpecialPage {
set_time_limit( 60 );
wfRestoreWarnings();
- # OK, do the real query...
+ // OK, do the real query...
$ret = $dbr->select(
'cu_changes',
'*',
- array( $user_cond, $time_conds ),
+ [ $user_cond, $time_conds ],
__METHOD__,
- array(
+ [
'ORDER BY' => 'cuc_timestamp DESC',
'LIMIT' => 5000,
'USE INDEX' => 'cuc_user_ip_time'
- )
+ ]
);
if ( !$dbr->numRows( $ret ) ) {
$s = $this->noMatchesMessage( $user ) . "\n";
} else {
- # Try to optimize this query
- $lb = new LinkBatch;
- foreach ( $ret as $row ) {
- $lb->add( $row->cuc_namespace, $row->cuc_title );
- }
- $lb->execute();
- $ret->seek( 0 );
- # List out the edits
+ $this->doLinkCache( $ret );
+ // List out the edits
$s = '<div id="checkuserresults">';
foreach ( $ret as $row ) {
$s .= $this->CUChangesLine( $row, $reason );
@@ -833,53 +908,53 @@ class CheckUser extends SpecialPage {
}
/**
+ * Lists all users in recent changes who used an IP, newest to oldest down
+ * Outputs usernames, latest and earliest found edit date, and count
+ * List unique IPs used for each user in time order, list corresponding user agent
+ *
* @param string $ip
* @param bool $xfor
* @param string $reason
* @param int $period
* @param string $tag
* @param string $talkTag
- * Lists all users in recent changes who used an IP, newest to oldest down
- * Outputs usernames, latest and earliest found edit date, and count
- * List unique IPs used for each user in time order, list corresponding user agent
*/
- protected function doIPUsersRequest( $ip, $xfor = false, $reason = '', $period = 0, $tag = '', $talkTag = '' ) {
+ protected function doIPUsersRequest(
+ $ip, $xfor = false, $reason = '', $period = 0, $tag = '', $talkTag = ''
+ ) {
+ global $wgMemc;
$out = $this->getOutput();
+ $dbr = wfGetDB( DB_REPLICA );
- $dbr = wfGetDB( DB_SLAVE );
- # Invalid IPs are passed in as a blank string
+ // Invalid IPs are passed in as a blank string
$ip_conds = self::getIpConds( $dbr, $ip, $xfor );
if ( !$ip || $ip_conds === false ) {
$out->addWikiMsg( 'badipaddress' );
return;
}
- $logType = 'ipusers';
- if ( $xfor ) {
- $logType .= '-xff';
- }
- # Log the check...
- if ( !self::addLogEntry( $logType, 'ip', $ip, $reason ) ) {
- $out->addHTML( '<p>' . $this->msg( 'checkuser-log-fail' )->escaped() . '</p>' );
- }
+ $logType = $xfor ? 'ipusers-xff' : 'ipusers';
+
+ // Log the check...
+ self::addLogEntry( $logType, 'ip', $ip, $reason );
$ip_conds = $dbr->makeList( $ip_conds, LIST_AND );
$time_conds = $this->getTimeConds( $period );
$index = $xfor ? 'cuc_xff_hex_time' : 'cuc_ip_hex_time';
- # Ordered in descent by timestamp. Can cause large filesorts on range scans.
- # Check how many rows will need sorting ahead of time to see if this is too big.
+ // Ordered in descent by timestamp. Can cause large filesorts on range scans.
+ // Check how many rows will need sorting ahead of time to see if this is too big.
if ( strpos( $ip, '/' ) !== false ) {
- # Quick index check only OK if no time constraint
+ // Quick index check only OK if no time constraint
if ( $period ) {
$rangecount = $dbr->selectField( 'cu_changes', 'COUNT(*)',
- array( $ip_conds, $time_conds ),
+ [ $ip_conds, $time_conds ],
__METHOD__,
- array( 'USE INDEX' => $index ) );
+ [ 'USE INDEX' => $index ] );
} else {
$rangecount = $dbr->estimateRowCount( 'cu_changes', '*',
- array( $ip_conds ),
+ [ $ip_conds ],
__METHOD__,
- array( 'USE INDEX' => $index ) );
+ [ 'USE INDEX' => $index ] );
}
// Sorting might take some time...make sure it is there
wfSuppressWarnings();
@@ -890,20 +965,20 @@ class CheckUser extends SpecialPage {
if ( isset( $rangecount ) && $rangecount > 10000 ) {
$ret = $dbr->select(
'cu_changes',
- array(
+ [
'cuc_ip_hex', 'COUNT(*) AS count',
'MIN(cuc_timestamp) AS first', 'MAX(cuc_timestamp) AS last'
- ),
- array( $ip_conds, $time_conds ),
+ ],
+ [ $ip_conds, $time_conds ],
__METHOD__,
- array(
+ [
'GROUP BY' => 'cuc_ip_hex',
'ORDER BY' => 'cuc_ip_hex',
'LIMIT' => 5001,
'USE INDEX' => $index,
- )
+ ]
);
- # List out each IP that has edits
+ // List out each IP that has edits
$s = '<h5>' . $this->msg( 'checkuser-too-many' )->escaped() . '</h5>';
$s .= '<ol>';
$counter = 0;
@@ -912,27 +987,22 @@ class CheckUser extends SpecialPage {
$out->addHTML( $this->msg( 'checkuser-limited' )->parseAsBlock() );
break;
}
- # Convert the IP hexes into normal form
+ // Convert the IP hexes into normal form
if ( strpos( $row->cuc_ip_hex, 'v6-' ) !== false ) {
$ip = substr( $row->cuc_ip_hex, 3 );
- $ip = IP::HextoOctet( $ip );
+ $ip = IP::hexToOctet( $ip );
} else {
- $ip = long2ip( wfBaseConvert( $row->cuc_ip_hex, 16, 10, 8 ) );
+ $ip = long2ip( Wikimedia\base_convert( $row->cuc_ip_hex, 16, 10, 8 ) );
}
- $s .= '<li><a href="' .
- htmlspecialchars( $this->getPageTitle()->getLocalURL( array(
+ $s .= '<li>';
+ $s .= $this->getSelfLink( $ip,
+ [
'user' => $ip,
'reason' => $reason,
'checktype' => 'subipusers'
- ) ) ) .
- '">' . $ip . '</a>';
- if ( $row->first == $row->last ) {
- $s .= ' (' . $this->getLanguage()->timeanddate( wfTimestamp( TS_MW, $row->first ), true ) . ') ';
- } else {
- $lang = $this->getLanguage();
- $s .= ' (' . $lang->timeanddate( wfTimestamp( TS_MW, $row->first ), true ) .
- ' -- ' . $lang->timeanddate( wfTimestamp( TS_MW, $row->last ), true ) . ') ';
- }
+ ]
+ );
+ $s .= ' ' . $this->getTimeRangeString( $row->first, $row->last ) . ' ';
// @todo FIXME: Hard coded brackets.
$s .= ' [<strong>' . $row->count . "</strong>]</li>\n";
++$counter;
@@ -947,24 +1017,27 @@ class CheckUser extends SpecialPage {
return;
}
- global $wgMemc;
- # OK, do the real query...
-
+ // OK, do the real query...
$ret = $dbr->select(
'cu_changes',
- array(
+ [
'cuc_user_text', 'cuc_timestamp', 'cuc_user', 'cuc_ip', 'cuc_agent', 'cuc_xff'
- ),
- array( $ip_conds, $time_conds ),
+ ],
+ [ $ip_conds, $time_conds ],
__METHOD__,
- array(
+ [
'ORDER BY' => 'cuc_timestamp DESC',
'LIMIT' => 10000,
'USE INDEX' => $index,
- )
+ ]
);
- $users_first = $users_last = $users_edits = $users_ids = array();
+ $users_first = [];
+ $users_last = [];
+ $users_edits = [];
+ $users_ids = [];
+ $users_agentsets = [];
+ $users_infosets = [];
if ( !$dbr->numRows( $ret ) ) {
$s = $this->noMatchesMessage( $ip, !$xfor ) . "\n";
} else {
@@ -973,19 +1046,19 @@ class CheckUser extends SpecialPage {
$users_last[$row->cuc_user_text] = $row->cuc_timestamp;
$users_edits[$row->cuc_user_text] = 0;
$users_ids[$row->cuc_user_text] = $row->cuc_user;
- $users_infosets[$row->cuc_user_text] = array();
- $users_agentsets[$row->cuc_user_text] = array();
+ $users_infosets[$row->cuc_user_text] = [];
+ $users_agentsets[$row->cuc_user_text] = [];
}
$users_edits[$row->cuc_user_text] += 1;
$users_first[$row->cuc_user_text] = $row->cuc_timestamp;
- # Treat blank or NULL xffs as empty strings
+ // Treat blank or NULL xffs as empty strings
$xff = empty( $row->cuc_xff ) ? null : $row->cuc_xff;
- $xff_ip_combo = array( $row->cuc_ip, $xff );
- # Add this IP/XFF combo for this username if it's not already there
+ $xff_ip_combo = [ $row->cuc_ip, $xff ];
+ // Add this IP/XFF combo for this username if it's not already there
if ( !in_array( $xff_ip_combo, $users_infosets[$row->cuc_user_text] ) ) {
$users_infosets[$row->cuc_user_text][] = $xff_ip_combo;
}
- # Add this agent string if it's not already there; 10 max.
+ // Add this agent string if it's not already there; 10 max.
if ( count( $users_agentsets[$row->cuc_user_text] ) < 10 ) {
if ( !in_array( $row->cuc_agent, $users_agentsets[$row->cuc_user_text] ) ) {
$users_agentsets[$row->cuc_user_text][] = $row->cuc_agent;
@@ -993,75 +1066,72 @@ class CheckUser extends SpecialPage {
}
}
+ // @todo FIXME: This form (and checkboxes) shouldn't be initiated for users without 'block' right
$action = htmlspecialchars( $this->getPageTitle()->getLocalURL( 'action=block' ) );
$s = "<form name='checkuserblock' id='checkuserblock' action=\"$action\" method='post'>";
$s .= '<div id="checkuserresults"><ul>';
foreach ( $users_edits as $name => $count ) {
$s .= '<li>';
- $s .= Xml::check( 'users[]', false, array( 'value' => $name ) ) . '&#160;';
- # Load user object
+ $s .= Xml::check( 'users[]', false, [ 'value' => $name ] ) . '&#160;';
+ // Load user object
$user = User::newFromName( $name, false );
- # Add user tool links
- $s .= Linker::userLink( - 1 , $name ) . Linker::userToolLinks( - 1 , $name );
- # Add CheckUser link
- $s .= ' (<a href="' . htmlspecialchars( $this->getPageTitle()->getLocalURL( array(
- 'user' => $name,
- 'reason' => $reason
- ) ) ) . '">' . $this->msg( 'checkuser-check' )->escaped() . '</a>)';
- # Show edit time range
- if ( $users_first[$name] == $users_last[$name] ) {
- // @todo FIXME: Hard coded parentheses.
- $s .= ' (' . $this->getLanguage()->timeanddate( wfTimestamp( TS_MW, $users_first[$name] ), true ) . ') ';
- } else {
- // @todo FIXME: Hard coded parentheses.
- $lang = $this->getLanguage();
- $s .= ' (' . $lang->timeanddate( wfTimestamp( TS_MW, $users_first[$name] ), true ) .
- ' -- ' . $lang->timeanddate( wfTimestamp( TS_MW, $users_last[$name] ), true ) . ') ';
- }
- # Total edit count
+ // Add user page and tool links
+ $s .= Linker::userLink( -1, $name ) . ' ';
+ $ip = IP::isIPAddress( $name ) ? $name : '';
+ $linksMsgKey = $ip ? 'checkuser-userlinks-ip' : 'checkuser-userlinks';
+ $s .= $this->msg( $linksMsgKey, $name )->parse();
+ // Add CheckUser link
+ $s .= ' ' . $this->msg( 'parentheses' )->rawParams(
+ $this->getSelfLink(
+ $this->msg( 'checkuser-check' )->text(),
+ [
+ 'user' => $name,
+ 'reason' => $reason
+ ]
+ )
+ )->escaped();
+ // Show edit time range
+ $s .= ' ' . $this->getTimeRangeString( $users_first[$name], $users_last[$name] ) . ' ';
+ // Total edit count
// @todo FIXME: i18n issue: Hard coded brackets.
$s .= ' [<strong>' . $count . '</strong>]<br />';
- # Check if this user or IP is blocked. If so, give a link to the block log...
- $ip = IP::isIPAddress( $name ) ? $name : '';
+ // Check if this user or IP is blocked. If so, give a link to the block log...
$flags = $this->userBlockFlags( $ip, $users_ids[$name], $user );
- # Check how many accounts the user made recently?
+ // Check how many accounts the user made recently
if ( $ip ) {
$key = wfMemcKey( 'acctcreate', 'ip', $ip );
$count = intval( $wgMemc->get( $key ) );
if ( $count ) {
// @todo FIXME: i18n issue: Hard coded brackets.
- $flags[] = '<strong>[' . $this->msg( 'checkuser-accounts' )->numParams( $count )->escaped() . ']</strong>';
+ $flags[] = '<strong>[' .
+ $this->msg( 'checkuser-accounts' )->numParams( $count )->escaped() .
+ ']</strong>';
}
}
$s .= implode( ' ', $flags );
$s .= '<ol>';
- # List out each IP/XFF combo for this username
+ // List out each IP/XFF combo for this username
for ( $i = ( count( $users_infosets[$name] ) - 1 ); $i >= 0; $i-- ) {
$set = $users_infosets[$name][$i];
- # IP link
+ // IP link
$s .= '<li>';
- $s .= '<a href="' .
- htmlspecialchars( $this->getPageTitle()->getLocalURL( 'user=' . urlencode( $set[0] ) ) ) .
- '">' . htmlspecialchars( $set[0] ) . '</a>';
- # XFF string, link to /xff search
+ $s .= $this->getSelfLink( $set[0], [ 'user' => $set[0] ] );
+ // XFF string, link to /xff search
if ( $set[1] ) {
- # Flag our trusted proxies
+ // Flag our trusted proxies
list( $client ) = CheckUserHooks::getClientIPfromXFF( $set[1] );
// XFF was trusted if client came from it
$trusted = ( $client === $row->cuc_ip );
$c = $trusted ? '#F0FFF0' : '#FFFFCC';
- $s .= '&#160;&#160;&#160;<span style="background-color: ' . $c . '"><strong>XFF</strong>: ';
- $s .= Linker::linkKnown(
- $this->getPageTitle(),
- htmlspecialchars( $set[1] ),
- array(),
- array( 'user' => $client . '/xff' )
- ) . '</span>';
+ $s .= '&#160;&#160;&#160;<span style="background-color: ' . $c .
+ '"><strong>XFF</strong>: ';
+ $s .= $this->getSelfLink( $set[1], [ 'user' => $client . '/xff' ] ) .
+ '</span>';
}
$s .= "</li>\n";
}
$s .= '</ol><br /><ol>';
- # List out each agent for this username
+ // List out each agent for this username
for ( $i = ( count( $users_agentsets[$name] ) - 1 ); $i >= 0; $i-- ) {
$agent = $users_agentsets[$name][$i];
$s .= '<li><i>' . htmlspecialchars( $agent ) . "</i></li>\n";
@@ -1071,113 +1141,152 @@ class CheckUser extends SpecialPage {
}
$s .= "</ul></div>\n";
if ( $this->getUser()->isAllowed( 'block' ) && !$this->getUser()->isBlocked() ) {
- $s .= "<fieldset>\n";
- $s .= '<legend>' . $this->msg( 'checkuser-massblock' )->escaped() . "</legend>\n";
- $s .= '<p>' . $this->msg( 'checkuser-massblock-text' )->parse() . "</p>\n";
- $s .= '<table><tr>' .
- '<td>' . Xml::check( 'usetag', false, array( 'id' => 'usetag' ) ) . '</td>' .
- '<td>' . Xml::label( $this->msg( 'checkuser-blocktag' )->escaped(), 'usetag' ) . '</td>' .
- '<td>' . Xml::input( 'tag', 46, $tag, array( 'id' => 'blocktag' ) ) . '</td>' .
- '</tr><tr>' .
- '<td>' . Xml::check( 'usettag', false, array( 'id' => 'usettag' ) ) . '</td>' .
- '<td>' . Xml::label( $this->msg( 'checkuser-blocktag-talk' )->escaped(), 'usettag' ) . '</td>' .
- '<td>' . Xml::input( 'talktag', 46, $talkTag, array( 'id' => 'talktag' ) ) . '</td>' .
- '</tr></table>';
- $s .= '<p>' . $this->msg( 'checkuser-reason' )->escaped() . '&#160;';
- $s .= Xml::input( 'blockreason', 46, '', array( 'maxlength' => '150', 'id' => 'blockreason' ) );
- $s .= '&#160;' . Xml::submitButton( $this->msg( 'checkuser-massblock-commit' )->escaped(),
- array( 'id' => 'checkuserblocksubmit', 'name' => 'checkuserblock' ) ) . "</p>\n";
- $s .= "</fieldset>\n";
+ // FIXME: The block <form> is currently added for users without 'block' right
+ // - only the user-visible form is shown appropriately
+ $s .= $this->getBlockForm( $tag, $talkTag );
+ $s .= Html::hidden( 'wpEditToken', $this->getUser()->getEditToken() );
}
- $s .= Html::hidden( 'wpEditToken', $this->getUser()->getEditToken() );
- $s .= '</form>';
+ $s .= "</form>\n";
}
$out->addHTML( $s );
}
/**
- * @param $ip
- * @param $userId
- * @param $user User
+ * @param string $tag
+ * @param string $talkTag
+ * @return string
+ */
+ protected function getBlockForm( $tag, $talkTag ) {
+ global $wgBlockAllowsUTEdit, $wgCheckUserCAMultiLock;
+ if ( $wgCheckUserCAMultiLock !== false ) {
+ if ( !class_exists( 'CentralAuthUser' ) ) {
+ // $wgCheckUserCAMultiLock shouldn't be enabled if CA is not loaded
+ throw new Exception( '$wgCheckUserCAMultiLock requires CentralAuth extension.' );
+ }
+
+ $caUserGroups = CentralAuthUser::getInstance( $this->getUser() )->getGlobalGroups();
+ // Only load the script for users in the configured global group(s)
+ if ( count( array_intersect( $wgCheckUserCAMultiLock['groups'], $caUserGroups ) ) ) {
+ $out = $this->getOutput();
+ $out->addModules( 'ext.checkUser.caMultiLock' );
+ $centralMLUrl = WikiMap::getForeignURL(
+ $wgCheckUserCAMultiLock['centralDB'],
+ // Use canonical name instead of local name so that it works
+ // even if the local language is different from central wiki
+ 'Special:MultiLock'
+ );
+ if ( $centralMLUrl === false ) {
+ throw new Exception(
+ "Could not retrieve URL for {$wgCheckUserCAMultiLock['centralDB']}"
+ );
+ }
+ $out->addJsConfigVars( 'wgCUCAMultiLockCentral', $centralMLUrl );
+ }
+ }
+
+ $s = "<fieldset>\n";
+ $s .= '<legend>' . $this->msg( 'checkuser-massblock' )->escaped() . "</legend>\n";
+ $s .= $this->msg( 'checkuser-massblock-text' )->parseAsBlock() . "\n";
+ $s .= '<table><tr>' .
+ '<td>' . Xml::check( 'usetag', false, [ 'id' => 'usetag' ] ) . '</td>' .
+ '<td>' . Xml::label( $this->msg( 'checkuser-blocktag' )->escaped(), 'usetag' ) .
+ '</td>' .
+ '<td>' . Xml::input( 'tag', 46, $tag, [ 'id' => 'blocktag' ] ) . '</td>' .
+ '</tr><tr>' .
+ '<td>' . Xml::check( 'usettag', false, [ 'id' => 'usettag' ] ) . '</td>' .
+ '<td>' . Xml::label( $this->msg( 'checkuser-blocktag-talk' )->escaped(), 'usettag' ) .
+ '</td>' .
+ '<td>' . Xml::input( 'talktag', 46, $talkTag, [ 'id' => 'talktag' ] ) . '</td>';
+ if ( $wgBlockAllowsUTEdit ) {
+ $s .= '</tr><tr>' .
+ '<td>' . Xml::check( 'blocktalk', false, [ 'id' => 'blocktalk' ] ) . '</td>' .
+ '<td>' . Xml::label( $this->msg( 'checkuser-blocktalk' )->escaped(), 'blocktalk' ) .
+ '</td>';
+ }
+ if ( SpecialBlock::canBlockEmail( $this->getUser() ) ) {
+ $s .= '</tr><tr>' .
+ '<td>' . Xml::check( 'blockemail', false, [ 'id' => 'blockemail' ] ) . '</td>' .
+ '<td>' . Xml::label( $this->msg( 'checkuser-blockemail' )->escaped(), 'blockemail' )
+ . '</td>';
+ }
+ $s .= '</tr></table>';
+ $s .= '<p>' . $this->msg( 'checkuser-reason' )->escaped() . '&#160;';
+ $s .= Xml::input( 'blockreason', 46, '', [ 'maxlength' => '150', 'id' => 'blockreason' ] );
+ $s .= '&#160;' . Xml::submitButton( $this->msg( 'checkuser-massblock-commit' )->escaped(),
+ [ 'id' => 'checkuserblocksubmit', 'name' => 'checkuserblock' ] ) . "</p>\n";
+ $s .= "</fieldset>\n";
+
+ return $s;
+ }
+
+ /**
+ * Get an HTML link (<a> element) to Special:CheckUser
+ *
+ * @param string $text content to use within <a> tag
+ * @param array $params query parameters to use in the URL
+ * @return string
+ */
+ private function getSelfLink( $text, array $params ) {
+ static $title;
+ if ( $title === null ) {
+ $title = $this->getPageTitle();
+ }
+ return $this->getLinkRenderer()->makeKnownLink(
+ $title,
+ $text,
+ [],
+ $params
+ );
+ }
+
+ /**
+ * @param string $ip
+ * @param int $userId
+ * @param User $user
* @return array
*/
protected function userBlockFlags( $ip, $userId, $user ) {
- global $wgAuth;
- static $logs, $blocklist;
- $logs = SpecialPage::getTitleFor( 'Log' );
- $blocklist = SpecialPage::getTitleFor( 'BlockList' );
+ $flags = [];
+
$block = Block::newFromTarget( $user, $ip, false );
- $flags = array();
if ( $block instanceof Block ) {
- // Range blocked?
- if ( $block->getType() == Block::TYPE_RANGE ) {
- $userpage = Title::makeTitle( NS_USER, $block->getTarget() );
- $blocklog = Linker::linkKnown(
- $logs,
- $this->msg( 'checkuser-blocked' )->escaped(),
- array(),
- array(
- 'type' => 'block',
- 'page' => $userpage->getPrefixedText()
- )
- );
- $flags[] = '<strong>(' . $blocklog . ' - ' . $block->getTarget() . ')</strong>';
- // Auto blocked?
- } elseif ( $block->getType() == Block::TYPE_AUTO ) {
- $blocklog = Linker::linkKnown(
- $blocklist,
- $this->msg( 'checkuser-blocked' )->escaped(),
- array(),
- array( 'ip' => "#{$block->getId()}" )
- );
- // @todo FIXME: Hard coded parentheses.
- $flags[] = '<strong>(' . $blocklog . ')</strong>';
- } else {
- $userpage = $user->getUserPage();
- $blocklog =Linker::linkKnown(
- $logs,
- $this->msg( 'checkuser-blocked' )->escaped(),
- array(),
- array(
- 'type' => 'block',
- 'page' => $userpage->getPrefixedText()
- )
- );
- // @todo FIXME: Hard coded parentheses.
- $flags[] = '<strong>(' . $blocklog . ')</strong>';
- }
- // IP that is blocked on all wikis?
+ // Locally blocked
+ $flags[] = $this->getBlockFlag( $block );
} elseif ( $ip == $user->getName() && $user->isBlockedGlobally( $ip ) ) {
+ // Globally blocked IP
$flags[] = '<strong>(' . $this->msg( 'checkuser-gblocked' )->escaped() . ')</strong>';
} elseif ( self::userWasBlocked( $user->getName() ) ) {
+ // Previously blocked
$userpage = $user->getUserPage();
- $blocklog = Linker::linkKnown(
- $logs,
- $this->msg( 'checkuser-wasblocked' )->escaped(),
- array(),
- array(
- 'type'=> 'block',
+ $blocklog = $this->getLinkRenderer()->makeKnownLink(
+ SpecialPage::getTitleFor( 'Log' ),
+ $this->msg( 'checkuser-wasblocked' )->text(),
+ [],
+ [
+ 'type' => 'block',
'page' => $userpage->getPrefixedText()
- )
+ ]
);
// @todo FIXME: Hard coded parentheses.
$flags[] = '<strong>(' . $blocklog . ')</strong>';
}
- # Show if account is local only
- $authUser = $wgAuth->getUserInstance( $user );
- if ( $user->getId() && $authUser->getId() === 0 ) {
+ // Show if account is local only
+ if ( $user->getId() &&
+ CentralIdLookup::factory()
+ ->centralIdFromLocalUser( $user, CentralIdLookup::AUDIENCE_RAW ) === 0
+ ) {
// @todo FIXME: i18n issue: Hard coded parentheses.
$flags[] = '<strong>(' . $this->msg( 'checkuser-localonly' )->escaped() . ')</strong>';
}
- # Check for extra user rights...
+ // Check for extra user rights...
if ( $userId ) {
if ( $user->isLocked() ) {
// @todo FIXME: i18n issue: Hard coded parentheses.
$flags[] = '<b>(' . $this->msg( 'checkuser-locked' )->escaped() . ')</b>';
}
- $list = array();
+ $list = [];
foreach ( $user->getGroups() as $group ) {
$list[] = self::buildGroupLink( $group, $user->getName() );
}
@@ -1192,14 +1301,15 @@ class CheckUser extends SpecialPage {
}
/**
- * @param Row $row
+ * Get a streamlined recent changes line with IP data
+ *
+ * @param stdClass $row
* @param string $reason
- * @return a streamlined recent changes line with IP data
+ * @return string
*/
protected function CUChangesLine( $row, $reason ) {
- static $cuTitle, $flagCache;
- $cuTitle = SpecialPage::getTitleFor( 'CheckUser' );
- # Add date headers as needed
+ static $flagCache;
+ // Add date headers as needed
$date = $this->getLanguage()->date( wfTimestamp( TS_MW, $row->cuc_timestamp ), true, true );
if ( !isset( $this->lastdate ) ) {
$this->lastdate = $date;
@@ -1211,14 +1321,16 @@ class CheckUser extends SpecialPage {
$line = '';
}
$line .= '<li>';
- # Create diff/hist/page links
+ // Create diff/hist/page links
$line .= $this->getLinksFromRow( $row );
- # Show date
- $line .= ' . . ' . $this->getLanguage()->time( wfTimestamp( TS_MW, $row->cuc_timestamp ), true, true ) . ' . . ';
- # Userlinks
+ // Show date
+ $line .= ' . . ' .
+ $this->getLanguage()->time( wfTimestamp( TS_MW, $row->cuc_timestamp ), true, true )
+ . ' . . ';
+ // Userlinks
$line .= Linker::userLink( $row->cuc_user, $row->cuc_user_text );
$line .= Linker::userToolLinks( $row->cuc_user, $row->cuc_user_text );
- # Get block info
+ // Get block info
if ( isset( $flagCache[$row->cuc_user_text] ) ) {
$flags = $flagCache[$row->cuc_user_text];
} else {
@@ -1227,46 +1339,43 @@ class CheckUser extends SpecialPage {
$flags = $this->userBlockFlags( $ip, $row->cuc_user, $user );
$flagCache[$row->cuc_user_text] = $flags;
}
- # Add any block information
+ // Add any block information
if ( count( $flags ) ) {
$line .= ' ' . implode( ' ', $flags );
}
- # Action text, hackish ...
+ // Action text, hackish ...
if ( $row->cuc_actiontext ) {
$line .= ' ' . Linker::formatComment( $row->cuc_actiontext ) . ' ';
}
- # Comment
+ // Comment
$line .= Linker::commentBlock( $row->cuc_comment );
$line .= '<br />&#160; &#160; &#160; &#160; <small>';
- # IP
- $line .= ' <strong>IP</strong>: ' . Linker::linkKnown(
- $cuTitle,
- htmlspecialchars( $row->cuc_ip ),
- array(),
- array(
+ // IP
+ $line .= ' <strong>IP</strong>: ';
+ $line .= $this->getSelfLink( $row->cuc_ip,
+ [
'user' => $row->cuc_ip,
'reason' => $reason
- )
+ ]
);
- # XFF
+ // XFF
if ( $row->cuc_xff != null ) {
- # Flag our trusted proxies
+ // Flag our trusted proxies
list( $client ) = CheckUserHooks::getClientIPfromXFF( $row->cuc_xff );
$trusted = ( $client === $row->cuc_ip ); // XFF was trusted if client came from it
$c = $trusted ? '#F0FFF0' : '#FFFFCC';
- $line .= '&#160;&#160;&#160;<span class="mw-checkuser-xff" style="background-color: ' . $c . '">' .
+ $line .= '&#160;&#160;&#160;';
+ $line .= '<span class="mw-checkuser-xff" style="background-color: ' . $c . '">' .
'<strong>XFF</strong>: ';
- $line .= Linker::linkKnown(
- $cuTitle,
- htmlspecialchars( $row->cuc_xff ),
- array(),
- array(
+ $line .= $this->getSelfLink( $row->cuc_xff,
+ [
'user' => $client . '/xff',
'reason' => $reason
- )
- ) . '</span>';
+ ]
+ );
+ $line .= '</span>';
}
- # User agent
+ // User agent
$line .= '&#160;&#160;&#160;<span class="mw-checkuser-agent" style="color:#888;">' .
htmlspecialchars( $row->cuc_agent ) . '</span>';
@@ -1276,80 +1385,118 @@ class CheckUser extends SpecialPage {
}
/**
- * @param $row
- * @create diff/hist/page link
+ * Get formatted timestamp(s) to show the time of first and last change.
+ * If both timestamps are the same, it will be shown only once.
+ *
+ * @param string $first Timestamp of the first change
+ * @param string $last Timestamp of the last change
+ * @return string
+ */
+ protected function getTimeRangeString( $first, $last ) {
+ $s = $this->getFormattedTimestamp( $first );
+ if ( $first !== $last ) {
+ // @todo i18n issue - hardcoded string
+ $s .= ' -- ';
+ $s .= $this->getFormattedTimestamp( $last );
+ }
+ return $this->msg( 'parentheses' )->rawParams( $s )->escaped();
+ }
+
+ /**
+ * Get a formatted timestamp string in the current language
+ * for displaying to the user.
+ *
+ * @param string $timestamp
+ * @return string
+ */
+ protected function getFormattedTimestamp( $timestamp ) {
+ return $this->getLanguage()->timeanddate(
+ wfTimestamp( TS_MW, $timestamp ), true
+ );
+ }
+
+ /**
+ * @param stdClass $row
+ * @return string diff, hist and page other links related to the change
*/
protected function getLinksFromRow( $row ) {
- $links = array();
+ $links = [];
// Log items
if ( $row->cuc_type == RC_LOG ) {
$title = Title::makeTitle( $row->cuc_namespace, $row->cuc_title );
// @todo FIXME: Hard coded parentheses.
- $links['log'] = '(' . Linker::linkKnown(
+ $links['log'] = '(' . $this->getLinkRenderer()->makeKnownLink(
SpecialPage::getTitleFor( 'Log' ),
$this->message['log'],
- array(),
- array( 'page' => $title->getPrefixedText() )
+ [],
+ [ 'page' => $title->getPrefixedText() ]
) . ')';
} else {
$title = Title::makeTitle( $row->cuc_namespace, $row->cuc_title );
- # New pages
+ // New pages
if ( $row->cuc_type == RC_NEW ) {
$links['diff'] = '(' . $this->message['diff'] . ') ';
} else {
- # Diff link
+ // Diff link
// @todo FIXME: Hard coded parentheses.
- $links['diff'] = ' (' . Linker::linkKnown(
+ $links['diff'] = ' (' . $this->getLinkRenderer()->makeKnownLink(
$title,
$this->message['diff'],
- array(),
- array(
+ [],
+ [
'curid' => $row->cuc_page_id,
'diff' => $row->cuc_this_oldid,
'oldid' => $row->cuc_last_oldid
- )
+ ]
) . ') ';
}
- # History link
+ // History link
// @todo FIXME: Hard coded parentheses.
- $links['history'] = ' (' . Linker::linkKnown(
+ $links['history'] = ' (' . $this->getLinkRenderer()->makeKnownLink(
$title,
$this->message['hist'],
- array(),
- array(
+ [],
+ [
'curid' => $row->cuc_page_id,
'action' => 'history'
- )
+ ]
) . ') . . ';
- # Some basic flags
+ // Some basic flags
if ( $row->cuc_type == RC_NEW ) {
- $links['newpage'] = '<span class="newpage">' . $this->message['newpageletter'] . '</span>';
+ $links['newpage'] = '<span class="newpage">' . $this->message['newpageletter'] .
+ '</span>';
}
if ( $row->cuc_minor ) {
- $links['minor'] = '<span class="minor">' . $this->message['minoreditletter'] . '</span>';
+ $links['minor'] = '<span class="minor">' . $this->message['minoreditletter'] .
+ '</span>';
}
- # Page link
- $links['title'] = Linker::link( $title );
+ // Page link
+ $links['title'] = $this->getLinkRenderer()->makeLink( $title );
}
- Hooks::run( 'SpecialCheckUserGetLinksFromRow', array( $this, $row, &$links ) );
+ Hooks::run( 'SpecialCheckUserGetLinksFromRow', [ $this, $row, &$links ] );
if ( is_array( $links ) ) {
return implode( ' ', $links );
} else {
- wfDebugLog( __CLASS__, __METHOD__ . ': Expected array from SpecialCheckUserGetLinksFromRow $links param, but received ' . gettype( $links ) );
+ wfDebugLog( __CLASS__,
+ __METHOD__ . ': Expected array from SpecialCheckUserGetLinksFromRow $links param,'
+ . ' but received ' . gettype( $links )
+ );
return '';
}
}
protected static function userWasBlocked( $name ) {
$userpage = Title::makeTitle( NS_USER, $name );
- return wfGetDB( DB_SLAVE )->selectField( 'logging', '1',
- array( 'log_type' => array( 'block', 'suppress' ),
+ return (bool)wfGetDB( DB_REPLICA )->selectField( 'logging', '1',
+ [
+ 'log_type' => [ 'block', 'suppress' ],
'log_action' => 'block',
'log_namespace' => $userpage->getNamespace(),
- 'log_title' => $userpage->getDBkey() ),
+ 'log_title' => $userpage->getDBkey()
+ ],
__METHOD__,
- array( 'USE INDEX' => 'page_time' ) );
+ [ 'USE INDEX' => 'page_time' ] );
}
/**
@@ -1359,56 +1506,45 @@ class CheckUser extends SpecialPage {
* @param string $username
* @return string
*/
- protected static function buildGroupLink( $group, $username = '#' ) {
- static $cache = array();
+ protected static function buildGroupLink( $group, $username ) {
+ static $cache = [];
if ( !isset( $cache[$group] ) ) {
- $cache[$group] = User::makeGroupLinkHtml( $group, User::getGroupMember( $group, $username ) );
+ $cache[$group] = UserGroupMembership::getLink(
+ $group, RequestContext::getMain(), 'html'
+ );
}
return $cache[$group];
}
/**
- * @param DatabaseBase $db
- * @param string $ip
+ * @param IDatabase $db
+ * @param string $target an IP address or CIDR range
* @param string|bool $xfor
- * @return mixed array/false conditions
+ * @return array|false array for valid conditions, false if invalid
*/
- public static function getIpConds( $db, $ip, $xfor = false ) {
+ public static function getIpConds( $db, $target, $xfor = false ) {
global $wgCheckUserCIDRLimit;
- $type = ( $xfor ) ? 'xff' : 'ip';
- // IPv4 CIDR, 16-32 bits
- $matches = array();
- if ( preg_match( '#^(\d+\.\d+\.\d+\.\d+)/(\d+)$#', $ip, $matches ) ) {
- if ( $matches[2] < $wgCheckUserCIDRLimit['IPv4'] || $matches[2] > 32 ) {
- return false; // invalid
+ $type = $xfor ? 'xff' : 'ip';
+ if ( IP::isValidRange( $target ) ) {
+ list( $ip, $range ) = explode( '/', $target, 2 );
+ list( $start, $end ) = IP::parseRange( $target );
+ if ( ( IP::isIPv4( $ip ) && $range < $wgCheckUserCIDRLimit['IPv4'] ) ||
+ ( IP::isIPv6( $ip ) && $range < $wgCheckUserCIDRLimit['IPv6'] ) ) {
+ return false; // range is too wide
}
- list( $start, $end ) = IP::parseRange( $ip );
- return array( 'cuc_' . $type . '_hex BETWEEN ' . $db->addQuotes( $start ) . ' AND ' . $db->addQuotes( $end ) );
- } elseif ( preg_match( '#^\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}/(\d+)$#', $ip, $matches ) ) {
- // IPv6 CIDR, 48-128 bits
- if ( $matches[1] < $wgCheckUserCIDRLimit['IPv6'] || $matches[1] > 128 ) {
- return false; // invalid
- }
- list( $start, $end ) = IP::parseRange( $ip );
- return array( 'cuc_' . $type . '_hex BETWEEN ' . $db->addQuotes( $start ) . ' AND ' . $db->addQuotes( $end ) );
- } elseif ( preg_match( '#^(\d+)\.(\d+)\.(\d+)\.(\d+)$#', $ip ) ) {
- // 32 bit IPv4
- $ip_hex = IP::toHex( $ip );
- return array( 'cuc_' . $type . '_hex' => $ip_hex );
- } elseif ( preg_match( '#^\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}$#', $ip ) ) {
- // 128 bit IPv6
- $ip_hex = IP::toHex( $ip );
- return array( 'cuc_' . $type . '_hex' => $ip_hex );
+ return [ 'cuc_' . $type . '_hex BETWEEN ' . $db->addQuotes( $start ) .
+ ' AND ' . $db->addQuotes( $end ) ];
+ } elseif ( IP::isValid( $target ) ) {
+ return [ "cuc_{$type}_hex" => IP::toHex( $target ) ];
}
- // throw away this query, incomplete IP, these don't get through the entry point anyway
- return false; // invalid
+ return false; // invalid IP
}
protected function getTimeConds( $period ) {
if ( !$period ) {
return '1 = 1';
}
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$cutoff_unixtime = time() - ( $period * 24 * 3600 );
$cutoff_unixtime = $cutoff_unixtime - ( $cutoff_unixtime % 86400 );
$cutoff = $dbr->addQuotes( $dbr->timestamp( $cutoff_unixtime ) );
@@ -1416,7 +1552,7 @@ class CheckUser extends SpecialPage {
}
public static function addLogEntry( $logType, $targetType, $target, $reason, $targetID = 0 ) {
- global $wgUser;
+ $user = RequestContext::getMain()->getUser();
if ( $targetType == 'ip' ) {
list( $rangeStart, $rangeEnd ) = IP::parseRange( $target );
@@ -1428,27 +1564,56 @@ class CheckUser extends SpecialPage {
$targetHex = $rangeStart = $rangeEnd = '';
}
- $dbw = wfGetDB( DB_MASTER );
- $cul_id = $dbw->nextSequenceValue( 'cu_log_cul_id_seq' );
- $dbw->insert( 'cu_log',
- array(
- 'cul_id' => $cul_id,
- 'cul_timestamp' => $dbw->timestamp(),
- 'cul_user' => $wgUser->getID(),
- 'cul_user_text' => $wgUser->getName(),
- 'cul_reason' => $reason,
- 'cul_type' => $logType,
- 'cul_target_id' => $targetID,
- 'cul_target_text' => $target,
- 'cul_target_hex' => $targetHex,
- 'cul_range_start' => $rangeStart,
- 'cul_range_end' => $rangeEnd,
- ), __METHOD__ );
- return true;
+ $timestamp = time();
+ $data = [
+ 'cul_user' => $user->getId(),
+ 'cul_user_text' => $user->getName(),
+ 'cul_reason' => $reason,
+ 'cul_type' => $logType,
+ 'cul_target_id' => $targetID,
+ 'cul_target_text' => $target,
+ 'cul_target_hex' => $targetHex,
+ 'cul_range_start' => $rangeStart,
+ 'cul_range_end' => $rangeEnd
+ ];
+
+ DeferredUpdates::addCallableUpdate(
+ function () use ( $data, $timestamp ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->insert(
+ 'cu_log',
+ [
+ 'cul_timestamp' => $dbw->timestamp( $timestamp )
+ ] + $data,
+ __METHOD__
+ );
+ },
+ DeferredUpdates::PRESEND // fail on error and show no output
+ );
+ }
+
+ /**
+ * Return an array of subpages beginning with $search that this special page will accept.
+ *
+ * @param string $search Prefix to search for
+ * @param int $limit Maximum number of results to return (usually 10)
+ * @param int $offset Number of results to skip (usually 0)
+ * @return string[] Matching subpages
+ */
+ public function prefixSearchSubpages( $search, $limit, $offset ) {
+ if ( !class_exists( 'UserNamePrefixSearch' ) ) { // check for version 1.27
+ return [];
+ }
+ $user = User::newFromName( $search );
+ if ( !$user ) {
+ // No prefix suggestion for invalid user
+ return [];
+ }
+ // Autocomplete subpage as user list - public to allow caching
+ return UserNamePrefixSearch::search( 'public', $search, $limit, $offset );
}
protected function getGroupName() {
return 'users';
}
}
-
diff --git a/CheckUser/specials/SpecialCheckUserLog.php b/CheckUser/specials/SpecialCheckUserLog.php
index 8cf83656..32d096d8 100644
--- a/CheckUser/specials/SpecialCheckUserLog.php
+++ b/CheckUser/specials/SpecialCheckUserLog.php
@@ -1,121 +1,59 @@
<?php
class SpecialCheckUserLog extends SpecialPage {
- public function __construct() {
- parent::__construct( 'CheckUserLog', 'checkuser-log' );
- }
-
/**
- * @var Title
+ * @var string $target
*/
- public $checkUserFormTitle;
+ protected $target;
- /**
- * @return Title
- */
- function getCheckUserFormTitle() {
- if ( !isset( $this->checkUserFormTitle ) ) {
- $this->checkUserFormTitle = SpecialPage::getTitleFor('CheckUser');
- }
- return $this->checkUserFormTitle;
+ public function __construct() {
+ parent::__construct( 'CheckUserLog', 'checkuser-log' );
}
- function execute( $par ) {
+ public function execute( $par ) {
+ $this->setHeaders();
$this->checkPermissions();
$out = $this->getOutput();
$request = $this->getRequest();
- $this->setHeaders();
- $type = $request->getVal( 'cuSearchType' );
- $target = $request->getVal( 'cuSearch' );
- $target = trim( $target );
- $year = $request->getIntOrNull( 'year' );
- $month = $request->getIntOrNull( 'month' );
- $error = false;
- $dbr = wfGetDB( DB_SLAVE );
- $searchConds = false;
- if ( $type === null ) {
- $type = 'target';
- } elseif ( $type == 'initiator' ) {
- $user = User::newFromName( $target );
- if ( !$user || !$user->getID() ) {
- $error = 'checkuser-user-nonexistent';
- } else {
- $searchConds = array( 'cul_user' => $user->getID() );
- }
- } else /* target */ {
- $type = 'target';
- // Is it an IP?
- list( $start, $end ) = IP::parseRange( $target );
- if ( $start !== false ) {
- if ( $start == $end ) {
- $searchConds = array( 'cul_target_hex = ' . $dbr->addQuotes( $start ) . ' OR ' .
- '(cul_range_end >= ' . $dbr->addQuotes( $start ) . ' AND ' .
- 'cul_range_start <= ' . $dbr->addQuotes( $end ) . ')'
- );
- } else {
- $searchConds = array(
- '(cul_target_hex >= ' . $dbr->addQuotes( $start ) . ' AND ' .
- 'cul_target_hex <= ' . $dbr->addQuotes( $end ) . ') OR ' .
- '(cul_range_end >= ' . $dbr->addQuotes( $start ) . ' AND ' .
- 'cul_range_start <= ' . $dbr->addQuotes( $end ) . ')'
- );
- }
- } else {
- // Is it a user?
- $user = User::newFromName( $target );
- if ( $user && $user->getID() ) {
- $searchConds = array(
- 'cul_type' => array( 'userips', 'useredits' ),
- 'cul_target_id' => $user->getID(),
- );
- } elseif ( $target ) {
- $error = 'checkuser-user-nonexistent';
- }
- }
+ if ( $this->getUser()->isAllowed( 'checkuser' ) ) {
+ $subtitleLink = $this->getLinkRenderer()->makeKnownLink(
+ SpecialPage::getTitleFor( 'CheckUser' ),
+ $this->msg( 'checkuser-showmain' )->text()
+ );
+ $out->addSubtitle( $subtitleLink );
}
- $out->addHTML( Linker::linkKnown(
- $this->getCheckUserFormTitle(),
- $this->msg( 'checkuser-log-return' ) ) );
-
- // Give grep a chance to find the usages:
- // checkuser-search-initiator, checkuser-search-target
- $searchTypes = array( 'initiator', 'target' );
- $select = "<select name=\"cuSearchType\" style='margin-top:.2em;'>\n";
- foreach ( $searchTypes as $searchType ) {
- if ( $type == $searchType ) {
- $checked = 'selected="selected"';
- } else {
- $checked = '';
- }
- $caption = $this->msg( 'checkuser-search-' . $searchType )->escaped();
- $select .= "<option value=\"$searchType\" $checked>$caption</option>\n";
+ $this->target = trim( $request->getVal( 'cuSearch', $par ) );
+ $type = $request->getVal( 'cuSearchType', 'target' );
+
+ $this->displaySearchForm();
+
+ // Default to all log entries - we'll add conditions below if a target was provided
+ $searchConds = [];
+
+ if ( $this->target !== '' ) {
+ $searchConds = ( $type === 'initiator' )
+ ? $this->getPerformerSearchConds()
+ : $this->getTargetSearchConds();
}
- $select .= '</select>';
-
- $encTarget = htmlspecialchars( $target );
- $msgSearch = $this->msg( 'checkuser-search' )->escaped();
- $input = "<input type=\"text\" name=\"cuSearch\" value=\"$encTarget\" size=\"40\"/>";
- $msgSearchForm = $this->msg( 'checkuser-search-form' )->rawParams( $select, $input )->escaped();
- $formAction = htmlspecialchars( $this->getPageTitle()->getLocalURL() );
- $msgSearchSubmit = '&#160;&#160;' . $this->msg( 'checkuser-search-submit' )->escaped() . '&#160;&#160;';
-
- $s = "<form method='get' action=\"$formAction\">\n" .
- "<fieldset><legend>$msgSearch</legend>\n" .
- "<p>$msgSearchForm</p>\n" .
- "<p>" . Xml::dateMenu( $year, $month ) . "&#160;&#160;&#160;\n" .
- "<input type=\"submit\" name=\"cuSearchSubmit\" value=\"$msgSearchSubmit\"/></p>\n" .
- "</fieldset></form>\n";
- $out->addHTML( $s );
-
- if ( $error !== false ) {
- $out->wrapWikiMsg( '<div class="errorbox">$1</div>', $error );
+
+ if ( $searchConds === null ) {
+ // Invalid target was input so show an error message and stop from here
+ $out->wrapWikiMsg( "<div class='errorbox'>\n$1\n</div>", 'checkuser-user-nonexistent' );
return;
}
- $pager = new CheckUserLogPager( $this, $searchConds, $year, $month );
+ $pager = new CheckUserLogPager(
+ $this->getContext(),
+ [
+ 'queryConds' => $searchConds,
+ 'year' => $request->getInt( 'year' ),
+ 'month' => $request->getInt( 'month' ),
+ ]
+ );
+
$out->addHTML(
$pager->getNavigationBar() .
$pager->getBody() .
@@ -123,6 +61,103 @@ class SpecialCheckUserLog extends SpecialPage {
);
}
+ /**
+ * Use an HTMLForm to create and output the search form used on this page.
+ */
+ protected function displaySearchForm() {
+ $request = $this->getRequest();
+ $fields = [
+ 'target' => [
+ 'type' => 'user',
+ // validation in execute() currently
+ 'exists' => false,
+ 'ipallowed' => true,
+ 'name' => 'cuSearch',
+ 'size' => 40,
+ 'label-message' => 'checkuser-log-search-target',
+ 'default' => $this->target,
+ ],
+ 'type' => [
+ 'type' => 'radio',
+ 'name' => 'cuSearchType',
+ 'label-message' => 'checkuser-log-search-type',
+ 'options-messages' => [
+ 'checkuser-search-target' => 'target',
+ 'checkuser-search-initiator' => 'initiator',
+ ],
+ 'flatlist' => true,
+ 'default' => 'target',
+ ],
+ // @todo hack until HTMLFormField has a proper date selector
+ 'monthyear' => [
+ 'type' => 'info',
+ 'default' => Xml::dateMenu( $request->getInt( 'year' ), $request->getInt( 'month' ) ),
+ 'raw' => true,
+ ],
+ ];
+
+ $form = HTMLForm::factory( 'table', $fields, $this->getContext() );
+ $form->setMethod( 'get' )
+ ->setWrapperLegendMsg( 'checkuser-search' )
+ ->setSubmitTextMsg( 'checkuser-search-submit' )
+ ->prepareForm()
+ ->displayForm( false );
+ }
+
+ /**
+ * Get DB search conditions depending on the CU performer/initiator
+ * Use this only for searches by 'initiator' type
+ *
+ * @return array|null array if valid target, null if invalid
+ */
+ protected function getPerformerSearchConds() {
+ $initiator = User::newFromName( $this->target );
+ if ( $initiator && $initiator->getId() ) {
+ return [ 'cul_user' => $initiator->getId() ];
+ }
+ return null;
+ }
+
+ /**
+ * Get DB search conditions according to the CU target given.
+ *
+ * @return array|null array if valid target, null if invalid target given
+ */
+ protected function getTargetSearchConds() {
+ list( $start, $end ) = IP::parseRange( $this->target );
+ $conds = null;
+
+ if ( $start !== false ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ if ( $start === $end ) {
+ // Single IP address
+ $conds = [
+ 'cul_target_hex = ' . $dbr->addQuotes( $start ) . ' OR ' .
+ '(cul_range_end >= ' . $dbr->addQuotes( $start ) . ' AND ' .
+ 'cul_range_start <= ' . $dbr->addQuotes( $start ) . ')'
+ ];
+ } else {
+ // IP range
+ $conds = [
+ '(cul_target_hex >= ' . $dbr->addQuotes( $start ) . ' AND ' .
+ 'cul_target_hex <= ' . $dbr->addQuotes( $end ) . ') OR ' .
+ '(cul_range_end >= ' . $dbr->addQuotes( $start ) . ' AND ' .
+ 'cul_range_start <= ' . $dbr->addQuotes( $end ) . ')'
+ ];
+ }
+ } else {
+ $user = User::newFromName( $this->target );
+ if ( $user && $user->getId() ) {
+ // Registered user
+ $conds = [
+ 'cul_type' => [ 'userips', 'useredits' ],
+ 'cul_target_id' => $user->getId(),
+ ];
+ }
+ }
+ return $conds;
+ }
+
protected function getGroupName() {
return 'changes';
}
diff --git a/CheckUser/version b/CheckUser/version
index 79767ae7..9e8abf0c 100644
--- a/CheckUser/version
+++ b/CheckUser/version
@@ -1,4 +1,4 @@
-CheckUser: REL1_26
-2015-11-17T01:02:55
+CheckUser: REL1_30
+2017-09-21T22:03:53
-710d302
+7a43255