Jack Phoenix has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/384248 )

Change subject: Initial import from ShoutWiki SVN
......................................................................

Initial import from ShoutWiki SVN

Highly Automated Welcome Tool (HAWelcome) welcomes new users after their
first edit.

This is a fork of Wikia's version, based on their version as of r8975/27
December 2009 with some obvious subsequent changes and features done by
ShoutWiki to make the code work on newer versions of MediaWiki.

TODO:
* Should not hardcode in the welcomer name (currently hardcoded to "ShoutWiki" 
in HAWelcome.class.php)
* staff user rights are fetched from global_user_groups table which exists only 
if [[Extension:GlobalUserrights]] is installed (as it is on ShoutWiki); the 
extension should take into account that it's possible the DB table does _not_ 
exist
* support for expiring user rights? (new feature in MW 1.29)
* review Wikia and wikiHow patches to HAWelcome and incorporate the useful 
changes not specific to their codebases

Change-Id: Iae65c45673c445588895eb208d37165ae1cfaa97
---
A HAWelcome.class.php
A extension.json
A i18n/br.json
A i18n/de.json
A i18n/en.json
A i18n/es.json
A i18n/fa.json
A i18n/fi.json
A i18n/fr.json
A i18n/gl.json
A i18n/he.json
A i18n/hu.json
A i18n/ia.json
A i18n/id.json
A i18n/it.json
A i18n/ja.json
A i18n/ko.json
A i18n/lb.json
A i18n/mk.json
A i18n/nl.json
A i18n/no.json
A i18n/oc.json
A i18n/pl.json
A i18n/pms.json
A i18n/pt-br.json
A i18n/pt.json
A i18n/ru.json
A i18n/sr-ec.json
A i18n/sv.json
A i18n/tl.json
A i18n/uk.json
31 files changed, 820 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/HAWelcome 
refs/changes/48/384248/1

diff --git a/HAWelcome.class.php b/HAWelcome.class.php
new file mode 100644
index 0000000..fbf7478
--- /dev/null
+++ b/HAWelcome.class.php
@@ -0,0 +1,469 @@
+<?php
+/**
+ * Highly Automated Welcome Tool -- welcomes new users after their first edit
+ *
+ * @file
+ * @ingroup JobQueue
+ * @author Krzysztof Krzyżaniak (eloy) <e...@wikia-inc.com>
+ * @author Maciej Błaszkowski (Marooned) <marooned at wikia-inc.com>
+ * @author Jack Phoenix <j...@countervandalism.net>
+ * @date 2009-12-27 (r8975)
+ * @copyright Copyright © Krzysztof Krzyżaniak for Wikia Inc.
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ */
+class HAWelcomeJob extends Job {
+
+       private
+               $mUserId,
+               $mUserName,
+               $mUserIP,
+               $mUser,
+               $mAnon,
+               $mSysop;
+
+       const WELCOMEUSER = 'ShoutWiki';
+
+       /**
+        * Construct a job
+        *
+        * @param Title $title The title linked to
+        * @param array $params Job parameters (table, start and end page_ids)
+        * @param int $id job_id, 0 by default
+        */
+       public function __construct( $title, $params, $id = 0 ) {
+               parent::__construct( 'HAWelcome', $title, $params, $id );
+
+               $this->mUserId   = $params['user_id'];
+               $this->mUserIP   = $params['user_ip'];
+               $this->mUserName = $params['user_name'];
+               $this->mAnon     = (bool)$params['is_anon'];
+               $this->mSysop    = false;
+
+               if ( $this->mAnon ) {
+                       $this->mUser = User::newFromName( $this->mUserIP, false 
);
+               } else {
+                       $this->mUser = User::newFromId( $this->mUserId );
+               }
+
+               /**
+                * fallback
+                */
+               if ( !$this->mUser ) {
+                       $this->mUser = User::newFromName( $this->mUserName );
+               }
+       }
+
+       /**
+        * Main entry point
+        */
+       public function run() {
+               global $wgUser, $wgTitle, $wgLanguageCode;
+
+               /**
+                * overwrite $wgUser for ~~~~ expanding
+                */
+               $sysop = trim( wfMessage( 'welcome-user' )->plain() );
+               if ( !in_array( $sysop, [ '@disabled', '-' ] ) ) {
+                       $tmpUser = $wgUser;
+                       $wgUser = User::newFromName( self::WELCOMEUSER );
+                       $flags = 0;
+                       if ( $wgUser && $wgUser->isBot() ) {
+                               $flags = EDIT_FORCE_BOT;
+                       }
+
+                       if ( $this->mUser && $this->mUser->getName() !== 
self::WELCOMEUSER && !$wgUser->isBlocked() ) {
+                               /**
+                                * check again if talk page exists
+                                */
+                               $talkPage = 
$this->mUser->getUserPage()->getTalkPage();
+
+                               if ( $talkPage ) {
+                                       $this->mSysop = $this->getLastSysop();
+                                       $tmpTitle     = $wgTitle;
+                                       $sysopPage    = 
$this->mSysop->getUserPage()->getTalkPage();
+                                       $signature    = $this->expandSig();
+
+                                       $wgTitle     = $talkPage;
+                                       $welcomeMsg  = false;
+                                       $talkArticle = new Article( $talkPage, 
0 );
+
+                                       if ( !$talkArticle->exists() ) {
+                                               if ( $this->mAnon ) {
+                                                       if ( $this->isEnabled( 
'message-anon' ) ) {
+                                                               $welcomeMsg = 
wfMessage(
+                                                                       
'welcome-message-anon'
+                                                               )->inLanguage( 
$wgLanguageCode )->params(
+                                                                       
$this->getPrefixedText(),
+                                                                       
$sysopPage->getPrefixedText(),
+                                                                       
$signature,
+                                                                       
wfEscapeWikiText( $this->mUser->getName() )
+                                                               )->text();
+                                                       }
+                                               } else {
+                                                       /**
+                                                        * now create user page 
(if it doesn't exist already, of course)
+                                                        */
+                                                       if ( $this->isEnabled( 
'page-user' ) ) {
+                                                               $userPage = 
$this->getUserPage();
+                                                               if ( $userPage 
) {
+                                                                       
$wgTitle = $userPage;
+                                                                       
$userArticle = new Article( $userPage, 0 );
+                                                                       if ( 
!$userArticle->exists() ) {
+                                                                               
$pageMsg = wfMessage( 'welcome-user-page' )->inContentLanguage()->text();
+                                                                               
$content = ContentHandler::makeContent( $pageMsg, $userPage );
+                                                                               
$userArticle->doEditContent( $content, '', $flags );
+                                                                       }
+                                                               }
+                                                       }
+
+                                                       if ( $this->isEnabled( 
'message-user' ) ) {
+                                                               $welcomeMsg = 
wfMessage(
+                                                                       
'welcome-message-user'
+                                                               )->inLanguage( 
$wgLanguageCode )->params(
+                                                                       
$this->getPrefixedText(),
+                                                                       
$sysopPage->getPrefixedText(),
+                                                                       
$signature,
+                                                                       
wfEscapeWikiText( $this->mUser->getName() )
+                                                               )->text();
+                                                       }
+                                               }
+                                               if ( $welcomeMsg ) {
+                                                       $wgTitle = $talkPage; 
/* is it necessary there? */
+                                                       $content = 
ContentHandler::makeContent( $welcomeMsg, $talkPage );
+                                                       
$talkArticle->doEditContent(
+                                                               $content,
+                                                               wfMessage( 
'welcome-message-log' )->inContentLanguage()->escaped(),
+                                                               $flags
+                                                       );
+                                               }
+                                       }
+                                       $wgTitle = $tmpTitle;
+                               }
+                       }
+
+                       $wgUser = $tmpUser;
+               }
+
+               return true;
+       }
+
+       /**
+        * Get last active sysop for this wiki, use local user database
+        *
+        * @return User class instance
+        */
+       public function getLastSysop() {
+               global $wgMemc;
+
+               /**
+                * maybe already loaded?
+                */
+               if ( !$this->mSysop ) {
+                       $sysop = trim( wfMessage( 'welcome-user' )->plain() );
+                       if ( !in_array( $sysop, [ '@disabled', '-' ] ) ) {
+                               if ( in_array( $sysop, [ '@latest', '@sysop' ] 
) ) {
+                                       /**
+                                        * first: check memcached, maybe we 
have already stored id of sysop
+                                        */
+                                       $sysopId = $wgMemc->get( wfMemcKey( 
'last-sysop-id' ) );
+                                       if ( $sysopId ) {
+                                               $this->mSysop = 
User::newFromId( $sysopId );
+                                       } else {
+                                               /**
+                                                * second: check database, 
could be expensive for database
+                                                */
+                                               $dbr = wfGetDB( DB_REPLICA );
+
+                                               /**
+                                                * get all users which are 
sysops/sysops or staff
+                                                * but not bots
+                                                *
+                                                * @todo check $db->makeList( 
$array )
+                                                */
+                                               // ShoutWiki patch begin
+                                               // Tweaked code for SW 
compatibility
+                                               // If we should fetch staff 
member names, then they'll
+                                               // be fetched from 
global_user_groups table
+                                               // @author Jack Phoenix 
<j...@shoutwiki.com>
+                                               // @date October 13, 2009
+                                               $groups = [ 'ug_group' => [ 
'sysop', 'bot' ] ];
+                                               $wantStaff = false;
+                                               if ( $sysop !== '@sysop' ) {
+                                                       $wantStaff = true;
+                                               }
+
+                                               $bots   = [];
+                                               $admins = [];
+                                               $res = $dbr->select(
+                                                       [ 'user_groups' ],
+                                                       [ 'ug_user', 'ug_group' 
],
+                                                       $dbr->makeList( 
$groups, LIST_OR ),
+                                                       __METHOD__
+                                               );
+                                               if ( $wantStaff ) {
+                                                       // If we should fetch 
staffers, fetch 'em from the
+                                                       // correct table
+                                                       $res2 = $dbr->select(
+                                                               [ 
'global_user_groups' ],
+                                                               [ 'gug_user', 
'gug_group' ],
+                                                               [ 'gug_group' 
=> 'staff' ],
+                                                               __METHOD__
+                                                       );
+                                                       foreach ( $res2 as 
$row2 ) {
+                                                               $admins[] = 
$row2->gug_user;
+                                                       }
+                                               }
+                                               // End ShoutWiki patch
+                                               foreach ( $res as $row ) {
+                                                       if ( $row->ug_group == 
'bot' ) {
+                                                               $bots[] = 
$row->ug_user;
+                                                       } else {
+                                                               $admins[] = 
$row->ug_user;
+                                                       }
+                                               }
+
+                                               /**
+                                                * remove bots from admins
+                                                */
+                                               $admins = [ 'rev_user' => 
array_unique( array_diff( $admins, $bots ) ) ];
+                                               $row = $dbr->selectRow(
+                                                       'revision',
+                                                       [ 'rev_user', 
'rev_user_text' ],
+                                                       [
+                                                               $dbr->makeList( 
$admins, LIST_OR ),
+                                                               'rev_timestamp 
> ' . $dbr->addQuotes( $dbr->timestamp( time() - 5184000 ) ) // 60 days ago 
(24*60*60*60)
+                                                       ],
+                                                       __METHOD__,
+                                                       [ 'ORDER BY' => 
'rev_timestamp DESC' ]
+                                               );
+                                               if ( $row && $row->rev_user ) {
+                                                       $this->mSysop = 
User::newFromId( $row->rev_user );
+                                                       $wgMemc->set( 
wfMemcKey( 'last-sysop-id' ), $row->rev_user, 86400 );
+                                               }
+                                       }
+                               } else {
+                                       $this->mSysop = User::newFromName( 
$sysop );
+                               }
+                       }
+
+                       /**
+                        * fallback, if still user is unknown we use welcome 
user
+                        */
+                       if ( $this->mSysop instanceof User && 
$this->mSysop->getId() ) {
+                               wfDebugLog( 'HAWelcome', 'Found sysop: ' . 
$this->mSysop->getName() );
+                       } else {
+                               $this->mSysop = User::newFromName( 
self::WELCOMEUSER );
+                       }
+               }
+
+               return $this->mSysop;
+       }
+
+       /**
+        * Static method called as hook
+        *
+        * @param Revision $revision Revision object
+        * @param string $url URL to external object
+        * @param string $flags Flags for this revision
+        * @return bool True means process other hooks
+        */
+       public static function revisionInsertComplete( &$revision, $url, $flags 
) {
+               global $wgRequest, $wgUser, $wgCommandLineMode, $wgMemc;
+
+               /**
+                * Do not create job when DB is locked (rt#12229)
+                */
+               if ( wfReadOnly() ) {
+                       return true;
+               }
+
+               /**
+                * Revision has valid Title field but sometimes not filled
+                */
+               $title = $revision->getTitle();
+               if ( !$title ) {
+                       $title = Title::newFromId( $revision->getPage(), 
Title::GAID_FOR_UPDATE );
+                       $revision->setTitle( $title );
+               }
+
+               /**
+                * get groups for user rt#12215
+                */
+               $groups = $wgUser->getEffectiveGroups();
+               $invalid = [
+                       'bot' => true,
+                       'staff' => true,
+                       'sysop' => true,
+                       'bureaucrat' => true
+               ];
+               $canWelcome = true;
+               foreach ( $groups as $group ) {
+                       if ( isset( $invalid[$group] ) && $invalid[$group] ) {
+                               $canWelcome = false;
+                               wfDebugLog( 'HAWelcome', "Skipping welcome 
since user is in $group group" );
+                               break;
+                       }
+               }
+
+               /**
+                * put possible welcomer into memcached, RT#14067
+                */
+               if ( $wgUser->getId() && self::isWelcomer( $wgUser ) ) {
+                       $wgMemc->set( wfMemcKey( 'last-sysop-id' ), 
$wgUser->getId(), 86400 );
+                       wfDebugLog( 'HAWelcome', 'Storing possible welcomer in 
memcached' );
+               }
+
+               if ( $title && !$wgCommandLineMode && $canWelcome ) {
+                       $welcomer = trim( wfMessage( 'welcome-user' 
)->inContentLanguage()->plain() );
+
+                       if ( $welcomer !== '@disabled' && $welcomer !== '-' ) {
+                               /**
+                                * check if talk page for wgUser exists
+                                *
+                                * @todo check editcount for user
+                                */
+                               $talkPage = 
$wgUser->getUserPage()->getTalkPage();
+                               if ( $talkPage ) {
+                                       $talkArticle = new Article( $talkPage, 
0 );
+                                       if ( !$talkArticle->exists() ) {
+                                               $welcomeJob = new HAWelcomeJob(
+                                                       $title,
+                                                       [
+                                                               'is_anon'   => 
$wgUser->isAnon(),
+                                                               'user_id'   => 
$wgUser->getId(),
+                                                               'user_ip'   => 
$wgRequest->getIP(),
+                                                               'user_name' => 
$wgUser->getName(),
+                                                       ]
+                                               );
+                                               $welcomeJob->insert();
+                                       }
+                               }
+                       }
+               }
+
+               return true;
+       }
+
+       /**
+        * HACK, expand signature from message for sysop
+        */
+       private function expandSig() {
+               global $wgContLang, $wgUser;
+
+               $this->mSysop = $this->getLastSysop();
+               $tmpUser = $wgUser;
+               $wgUser = $this->mSysop;
+               $sysopName = wfEscapeWikiText( $this->mSysop->getName() );
+               $signature = sprintf(
+                       '-- [[%s:%s|%s]] ([[%s:%s|%s]]) %s',
+                       $wgContLang->getNsText( NS_USER ),
+                       $sysopName,
+                       $sysopName,
+                       $wgContLang->getNsText( NS_USER_TALK ),
+                       $sysopName,
+                       wfMessage( 'talkpagelinktext' 
)->inContentLanguage()->text(),
+                       $wgContLang->timeanddate( wfTimestampNow( TS_MW ) )
+               );
+               $wgUser = $tmpUser;
+
+               return $signature;
+       }
+
+       /**
+        * @return Title instance of Title object
+        */
+       public function getTitle() {
+               return $this->title;
+       }
+
+       /**
+        * @return Title instance of Title object
+        */
+       public function getPrefixedText() {
+               return $this->title->getPrefixedText();
+       }
+
+       /**
+        * Check if some (or all) functionality is disabled/enabled
+        *
+        * @param string|bool $what Default false, possible values: page-user, 
message-anon, message-user
+        * @return bool Disabled or not
+        */
+       public function isEnabled( $what ) {
+               $return = false;
+               $message = wfMessage( 'welcome-enabled' 
)->inContentLanguage()->plain();
+               if (
+                       in_array( $what, [ 'page-user', 'message-anon', 
'message-user' ] ) &&
+                       strpos( $message, $what ) !== false
+               )
+               {
+                       $return = true;
+               }
+
+               return $return;
+       }
+
+       /**
+        * Check if user can welcome other users
+        *
+        * @param User $user Instance of User class
+        * @return bool Status of the operation
+        */
+       public static function isWelcomer( &$user ) {
+               $sysop  = trim( wfMessage( 'welcome-user' )->plain() );
+               $groups = $user->getEffectiveGroups();
+               $result = false;
+
+               /**
+                * bots can't welcome
+                */
+               if ( !in_array( 'bot', $groups ) ) {
+                       if ( $sysop === '@sysop' ) {
+                               $result = in_array( 'sysop', $groups ) ? true : 
false;
+                       } else {
+                               $result = in_array( 'sysop', $groups ) || 
in_array( 'staff', $groups ) ? true : false;
+                       }
+               }
+
+               return $result;
+       }
+
+       /**
+        * Get the Title object pointing to the wikitext user page of the user 
we're
+        * welcoming. On most wikis, this is the User: page, but on wikis with
+        * SocialProfile enabled, this can be the UserWiki: page, in which case 
the
+        * ordinary User: page (social profile, managed by the SocialProfile 
ext.)
+        * won't be editable.
+        *
+        * @return Title A valid Title object pointing to the specified user's
+        * wikitext user page
+        */
+       private function getUserPage() {
+               $userPage = $this->mUser->getUserPage();
+               if ( class_exists( 'UserProfile' ) ) {
+                       // SocialProfile is installed -> the user
+                       // might've opted in for the social profile
+                       // to be their default User: page, so we can't
+                       // edit that and need to be editing their UserWiki:
+                       // page instead...let's figure that out.
+                       // This is somewhat c+p from UserProfile's
+                       // UserProfile.php, the ArticleFromTitle hook callback
+                       global $wgUserPageChoice;
+                       if ( $wgUserPageChoice ) {
+                               $profile = new UserProfile( 
$this->mUser->getName() );
+                               $profileData = $profile->getProfile();
+                               if (
+                                       isset( $profileData['user_id'] ) &&
+                                       $profileData['user_id'] &&
+                                       $profileData['user_page_type'] === 1
+                               )
+                               {
+                                       // SocialProfile as the User: page, 
wikitext user page
+                                       // on the UserWiki: NS
+                                       $userPage = Title::makeTitle( 
NS_USER_WIKI, $this->mUser->getName() );
+                               }
+                       }
+               }
+               return $userPage;
+       }
+}
diff --git a/extension.json b/extension.json
new file mode 100644
index 0000000..e6aaaeb
--- /dev/null
+++ b/extension.json
@@ -0,0 +1,28 @@
+{
+       "name": "Highly Automated Welcome Tool",
+       "version": "0.6.8-SW",
+       "author": [
+               "Krzysztof Krzyżaniak",
+               "Maciej Błaszkowski",
+               "Jack Phoenix"
+       ],
+       "license-name": "GPL-2.0+",
+       "url": "https://www.mediawiki.org/wiki/Extension:HAWelcome";,
+       "description": "Welcomes new users after their first edit",
+       "type": "other",
+       "MessagesDirs": {
+               "HAWelcome": [
+                       "i18n"
+               ]
+       },
+       "AutoloadClasses": {
+               "HAWelcomeJob": "HAWelcome.class.php"
+       },
+       "JobClasses": {
+               "HAWelcome": "HAWelcomeJob"
+       },
+       "Hooks": {
+               "RevisionInsertComplete": "HAWelcomeJob::revisionInsertComplete"
+       },
+       "manifest_version": 1
+}
diff --git a/i18n/br.json b/i18n/br.json
new file mode 100644
index 0000000..3dca37d
--- /dev/null
+++ b/i18n/br.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gwenn-Ael",
+                       "Y-M D"
+               ]
+       },
+       "welcome-user-page": "==Diwar ma fenn ==\n''War ho pajenn implijer 
emaoc'h. Kemmit, mar plij, ho pajenn evit en em ginnig d'ar gumuniezh 
!''\n\n==Ma degasadennoù==\n*[[Special:Contributions/{{PAGENAME}}|Degasadennoù 
an implijer]]\n\n==Ar pajennoù plijtañ ==\n*Ouzhpennañ liammoù d'ar pajennoù 
plijetañ  war ar wiki amañ!\n* Pajennoù plijetañ #2\n* Pajennoù plijetañ #3",
+       "welcome-message-user": "Demat, Degemer mat war {{SITENAME}} ! Trugarez 
da vezañ kemmet [[:$1]].\n\nGallout a rit lezel ur gemennadenn war ma fajenn V 
[[$2|discussion]] ma c'hallan sikour ac'hanoc'h d'ober tra pe dra $3",
+       "welcome-message-anon": "Demat, degemer mat war {{SITENAME}}. Trugarez 
evit ho tegasadennoù er pajenn [[:$1]].\n\n'''[[Special:UserLogin|Mar plij 
kevreit pe krouit ur gont]]'''. Un doare aes eo evit derc'hel ur roud eus ho 
tegasadennoù hag aesaat a ra ar c'hehentiñ gant peurest ar gumuniezh.\n\nArabat 
kaout aon kas din ur gemenadenn war [[$2|ma fajenn kaozeadenn]] ma c'hellan 
sikour ac'hanoc'h evit tra pe dra ! $3",
+       "welcome-message-log": "Degemer un implijer nevez"
+}
diff --git a/i18n/de.json b/i18n/de.json
new file mode 100644
index 0000000..adb0a7c
--- /dev/null
+++ b/i18n/de.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Tim 'Avatar' Bartel"
+               ]
+       },
+       "welcome-user-page": "==Über mich==\n''Das ist deine Benutzerseite. 
Hier kannst du den anderen ein paar Informationen über dich 
verraten!''\n\n==Meine 
Beiträge==\n*[[Special:Contributions/{{PAGENAME}}|Benutzerbeiträge]]\n\n==Meine 
beliebtesten Seiten==\n*Hier kannst du Links zu deinen beliebtesten Artikeln im 
Wiki hinzufügen!\n*Link auf Seite #2\n*Link auf Seite #3",
+       "welcome-message-user": "Hi, {{SITENAME}} freut sich, dass du zu uns 
gestoßen bist! Danke für deine Bearbeitung auf der Seite [[:$1]].\n\nFalls du 
irgendwelche Hilfe brauchen solltest, kannst du mir gerne eine Nachricht auf 
[[$2|meiner Diskussionsseite]] hinterlassen! $3",
+       "welcome-message-anon": "Hi, {{SITENAME}} freut sich, dass du zu uns 
gestoßen bist! Danke für deine Bearbeitung auf der Seite 
[[:$1]].\n\n'''[[Special:UserLogin|Bitte lege dir ein Benutzerkonto an]]'''. So 
kannst du ganz einfach deine Beiträge im Überblick behalten und dich besser mit 
dem Rest der Community verständigen.\n\nFalls du irgendwelche Hilfe brauchen 
solltest, kannst du mir gerne eine Nachricht auf [[$2|meiner Diskussionsseite]] 
hinterlassen! $3",
+       "welcome-message-log": "Begrüßung eines neuen Autors"
+}
diff --git a/i18n/en.json b/i18n/en.json
new file mode 100644
index 0000000..bebf914
--- /dev/null
+++ b/i18n/en.json
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Krzysztof Krzyżaniak <e...@wikia-inc.com>"
+               ]
+       },
+       "welcome-user": "@latest",
+       "welcome-enabled": "page-user message-anon message-user",
+       "welcome-user-page": "==About me==\n''This is your user page. Please 
edit this page to tell the community about yourself!''\n\n==My 
contributions==\n*[[Special:Contributions/{{PAGENAME}}|User 
contributions]]\n\n==My favorite pages==\n*Add links to your favorite pages on 
the wiki here!\n*Favorite page #2\n*Favorite page #3",
+       "welcome-message-user": "Hi, welcome to {{SITENAME}}! Thanks for your 
edit to the [[:$1]] page.\n\nPlease leave a message on [[$2|my talk page]] if I 
can help with anything! $3",
+       "welcome-message-anon": "Hi, welcome to {{SITENAME}}! Thanks for your 
edit to the [[:$1]] page.\n\n'''[[Special:UserLogin|Please sign in and create a 
user name]]'''. It's an easy way to keep track of your contributions and helps 
you communicate with the rest of the community.\n\nPlease leave a message on 
[[$2|my talk page]] if I can help with anything! $3",
+       "welcome-message-log": "welcoming new contributor"
+}
diff --git a/i18n/es.json b/i18n/es.json
new file mode 100644
index 0000000..f4894b1
--- /dev/null
+++ b/i18n/es.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bola"
+               ]
+       },
+       "welcome-user-page": "==Sobre mi==\n''Esta es tu página de usuario. 
¡Edítala para hablar sobre ti a la comunidad!''\n\n==Mis 
contribuciones==\n*[[Special:Contributions/{{PAGENAME}}|Contribuciones del 
usuario]]\n\n==Mis páginas favoritas==\n*¡Añade aquí los vínculos a las páginas 
favoritas del wiki!\n*Página favorita #2\n*Página favorita #3",
+       "welcome-message-user": "¡Hola, bienvenido(a) a {{SITENAME}}! Muchas 
gracias por tu edición en [[:$1]].\n\nPor favor, si tienes alguna duda, no seas 
tímido, deja un mensaje en [[$2|mi discusión]] para ver si puedo ayudarte con 
cualquier cosa. $3",
+       "welcome-message-anon": "¡Hola, bienvenido(a) a {{SITENAME}}! Muchas 
gracias por tu edición en [[:$1]].\n\n¿Por qué no '''[[Special:UserLogin|te 
creas una cuenta y te identificas?]]'''. De esta forma será mucho más fácil 
saber qué páginas has editado y se te atribuirá tu trabajo en el wiki, además 
te será de ayuda a la hora de comunicarte con el resto de la comunidad.\n\nPor 
favor, si tienes alguna duda, no seas tímido, deja un mensaje en [[$2|mi 
discusión]] para ver si puedo ayudarte con cualquier cosa. $3",
+       "welcome-message-log": "Bienvenida"
+}
diff --git a/i18n/fa.json b/i18n/fa.json
new file mode 100644
index 0000000..0944e27
--- /dev/null
+++ b/i18n/fa.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "BlueDevil",
+                       "Huji"
+               ]
+       },
+       "welcome-user-page": "==دربارۀ من==\n''این صفحۀ کاربری شما است. لطفا 
این صفحه را ویرایش کنید و کمی دربارۀ خودتان به دیگر کاربران 
بگویید!''\n\n==مشارکت‌ها==\n*[[Special:Contributions/{{PAGENAME}}|مشارکت‌های 
کاربر]]\n\n==صفحات محبوب من==\n*پیوند صفحات محبوب خود را در اینجا قرار دهید\n* 
صفحۀ محبوب #۲\n* صفحۀ محبوب #۳",
+       "welcome-message-user": "سلام، به {{SITENAME}} خوش‌آمدید! متشکر از 
ویرایش شما در صفحۀ [[:$1]].\n\nاگر کمکی نیاز داشتید می‌توانید در [[$2|صفحۀ 
بحثم]] از من بپرسید.  $3",
+       "welcome-message-anon": "سلام، به {{SITENAME}} خوش‌آمدید. از ویرایش شما 
در صفحهٔ [[:$1]] متشکریم.\n\nلطفا '''[[Special:UserLogin|حساب کاربری ایجاد کنید 
و به سامانه وارد شوید]]'''. این کار به شما کمک می‌کند که ویرایش‌های خود را 
نگهداری کنید و به راحتی با دیگر کاربران در ارتباط باشید.\n\nاگر سوالی داشتید 
می‌توانید از من در [[$2|صفحهٔ بحثم]] بپرسید! $3",
+       "welcome-message-log": "خوش‌آمدگویی کاربر جدید"
+}
diff --git a/i18n/fi.json b/i18n/fi.json
new file mode 100644
index 0000000..0e1a5cc
--- /dev/null
+++ b/i18n/fi.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Jack Phoenix <j...@countervandalism.net>"
+               ]
+       },
+       "welcome-user-page": "==Tietoa minusta==\n''Tämä on käyttäjäsivusi. Ole 
hyvä ja muokkaa tätä sivua kertoaksesi yhteisölle itsestäsi!''\n\n==Omat 
muokkaukseni==\n*[[Special:Contributions/{{PAGENAME}}|Käyttäjän 
muokkaukset]]\n\n==Omat suosikkisivuni==\n*Lisää suosikkisivujasi 
tähän!\n*Suosikkisivu #2\n*Suosikkisivu #3",
+       "welcome-message-user": "Hei ja tervetuloa 
{{GRAMMAR:illative|{{SITENAME}}}}! Kiitos muokkauksestasi 
[[:$1]]-sivuun.\n\nLaita rohkeasti viestiä [[$2|keskustelusivulleni]] jos voin 
auttaa mitenkään! $3",
+       "welcome-message-anon": "Hei ja tervetuloa 
{{GRAMMAR:illative|{{SITENAME}}}}! Kiitos muokkauksestasi 
[[:$1]]-sivuun.\n\n'''[[Special:UserLogin|Ole hyvä ja luo tunnus tai kirjaudu 
sisään]]'''. Se on helppo tapa pitää kirjaa omista muokkauksistasi ja helpottaa 
yhteydenpitoa muun yhteisön kanssa.\n\nLaita rohkeasti viestiä 
[[$2|keskustelusivulleni]] jos voin auttaa mitenkään! $3",
+       "welcome-message-log": "toivotettiin tervetulleeksi uusi muokkaaja"
+}
diff --git a/i18n/fr.json b/i18n/fr.json
new file mode 100644
index 0000000..184b080
--- /dev/null
+++ b/i18n/fr.json
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Cywil",
+                       "Marc-Philipp Beuter",
+                       "TulipVorlax"
+               ]
+       },
+       "welcome-user-page": "==À propos de moi==\n''Cette page est votre page 
personnelle. Ici vous pouvez donner des informations sur vous !''\n\n==Mes 
contributions==\n*[[Special:Contributions/{{PAGENAME}}|Mes 
contributions]]\n\n==Mes pages favorisées==\n*Ici vous pouvez placer des liens 
vers vos pages préférées du wiki !\n*Lien vers page #2\n*Lien vers page #3",
+       "welcome-message-user": "Bonjour $4 ! Bienvenue sur 
{{SITENAME}}.\n\nNous sommes heureux que vous participez à {{SITENAME}} et que 
vous ayez modifié la page [[:$1]].\n\nS'il y a des questions, vous pouvez les 
poser sur ma page de [[$2|discussion]] !\n\n$3",
+       "welcome-message-anon": "Bonjour, bienvenue sur {{SITENAME}}. Merci 
pour votre contribution à la page [[:$1]].\n\n'''Merci de vous 
[[Special:UserLogin|connecter ou de créer un nom compte]]'''. C'est un moyen 
simple de garder une trace de vos contributions et facilite la communication 
avec le reste de la communauté.\n\nN'hésitez pas à laisser un message sur 
[[$2|ma page de discussion]] si je peux vous aider pour quoi que ce soit ! $3",
+       "welcome-message-log": "Accueillir un nouvel utilisateur"
+}
diff --git a/i18n/gl.json b/i18n/gl.json
new file mode 100644
index 0000000..0ccc3a4
--- /dev/null
+++ b/i18n/gl.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Toliño"
+               ]
+       },
+       "welcome-user-page": "==Sobre min==\n''Esta é a súa páxina de usuario. 
Edita esta páxina para contarlles aos demais o que queiras acerca de 
ti!''\n\n==As miñas contribucións==\n*[[Special:Contributions/{{PAGENAME}}|As 
miñas contribucións]]\n\n==As miñas páxinas favoritas==\n*Engada ligazóns cara 
ás súas páxinas preferidas deste wiki!\n*Ligazón cara á páxina #2\n*Ligazón 
cara á páxina #3",
+       "welcome-message-user": "Ola, benvido(a) a {{SITENAME}}! Grazas pola 
súa edición na páxina \"[[:$1]]\".\n\nPor favor, deixe unha mensaxe [[$2|na 
miña páxina de conversa]] se quere que lle axude con algunha cousa! $3",
+       "welcome-message-anon": "Ola, benvido(a) a {{SITENAME}}! Grazas pola 
súa edición na páxina \"[[:$1]]\".\n\n'''Por favor, 
[[Special:UserLogin|rexístrese e cree unha conta de usuario]]'''. É un xeito 
doado de manter baixo control as súas achegas e axuda á comunicación co resto 
da comunidade.\n\nPor favor, deixe unha mensaxe [[$2|na miña páxina de 
conversa]] se quere que lle axude con algunha cousa! $3",
+       "welcome-message-log": "benvida ao novo colaborador"
+}
diff --git a/i18n/he.json b/i18n/he.json
new file mode 100644
index 0000000..bc8993e
--- /dev/null
+++ b/i18n/he.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amire80",
+                       "Rotemliss"
+               ]
+       },
+       "welcome-user-page": "==עליי==\n''זה דף המשתמש שלך. כדאי לערוך דף זה 
כדי שמשתמשים אחרים יוכלו לדעת עליך יותר!''\n\n==התרומות 
שלי==\n*[[Special:Contributions/{{PAGENAME}}|העריכות שלך]]\n\n==הדפים האהובים 
עליי==\n*הוסף כאן קישור לדפים האהובים עליך או דפים שיצרת.\n*דף אהוב שני\n*דף 
אהוב שלישי",
+       "welcome-message-user": "שלום, ברוך הבא ל{{SITENAME}}. תודה על תרומתך 
בדף [[:$1]].\n\nאם אתה זקוק לעזרה כלשהי, אנא השאר הודעה ב[[$2|דף השיחה שלי]], 
$3",
+       "welcome-message-anon": "שלום, ברוך הבא ל{{SITENAME}}. תודה על תרומתך 
בדף [[:$1]].\n\n'''[[Special:UserLogin|רצוי להירשם לאתר וליצור חשבון]]'''. 
הרשמה היא דרך נוחה לעקוב אחרי עריכות ועוזרת לך לתקשר עם שאר הקהילה.\n\nאם אתה 
זקוק לעזרה כלשהי, אנא השאר הודעה ב[[$2|דף השיחה שלי]], $3",
+       "welcome-message-log": "ברך משתמש חדש"
+}
diff --git a/i18n/hu.json b/i18n/hu.json
new file mode 100644
index 0000000..73a85f5
--- /dev/null
+++ b/i18n/hu.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Blogadmin",
+                       "Glanthor Reviol"
+               ]
+       },
+       "welcome-user-page": "==Magamról==\n''Ez a felhasználólapod. Kérlek 
szerkeszd ezt a lapot és írj magadról a 
közösségnek!''\n\n==Közreműködéseim==\n*[[Special:Contributions/{{PAGENAME}}|Felhasználó
 közreműködései]]\n\n==Kedvenc lapjaim==\n*Adj meg hivatkozásokat a kedvenc 
wiki lapjaidra!\n*Második kedvenc lap\n*Harmadik kedvenc lap",
+       "welcome-message-user": "Szia, üdvözlünk a(z) {{SITENAME}} wikin! 
Köszönjük a(z) [[:$1]] lapon tett szerkesztésedet.\n\nKérlek hagyj üzenetet a 
[[$2|vitalapomon]], ha segíthetek valamiben. $3",
+       "welcome-message-anon": "Üdvözöllek a {{SITENAME}} wikin! Köszönjük az 
első szerkesztésedet a [[:$1]] oldalon!\n'''[[Special:UserLogin|Kérlek 
regisztrálj egy felhasználónevet!]]''' Ez egy könnyű és ingyenes módja, hogy 
követhesd a munkád és megkönnyíti a kommunikációt a többi szerkesztővel.",
+       "welcome-message-log": "új közreműködő üdvözlése"
+}
diff --git a/i18n/ia.json b/i18n/ia.json
new file mode 100644
index 0000000..2ff15bd
--- /dev/null
+++ b/i18n/ia.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "McDutchie"
+               ]
+       },
+       "welcome-user-page": "==A proposito de me==\n''Isto es tu pagina de 
ustor. Modifica le pagina pro informar le communitate super te!''\n\n==Mi 
contributiones==\n*[[Special:Contributions/{{PAGENAME}}|Contributions de 
usator]]\n\n==My favorite pages==\n*Adde hic ligamines a tu paginas favorite in 
le wiki!\n*Pagina favorite no. 2\n*Pagina favorite no. 3",
+       "welcome-message-user": "Salute, benvenite a {{SITENAME}}! Gratias pro 
tu contribution al pagina [[:$1]].\n\nNon hesita de lassar un message in 
[[$2|mi pagina de discussion]] si io pote adjutar te con alcun cosa! $3",
+       "welcome-message-anon": "Salute, benvenite a {{SITENAME}}! Gratias pro 
tu contribution al pagina [[:$1]].\n\n'''[[Special:UserLogin|Per favor aperi un 
session o crea un conto]]'''. Isto permitte sequer tu contributiones e facilita 
le communication con le resto del communitate.\n\nNon hesita de lassar un 
message in [[$2|mi pagina de discussion]] si io pote adjutar te con alcun cosa! 
$3",
+       "welcome-message-log": "dava le benvenita a un nove contributor"
+}
diff --git a/i18n/id.json b/i18n/id.json
new file mode 100644
index 0000000..2e1c8b6
--- /dev/null
+++ b/i18n/id.json
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Irwangatot"
+               ]
+       },
+       "welcome-user-page": "==Tentang saya==\n''Ini adalah halaman pengguna 
Anda. Silahkan sunting halaman ini untuk memberitahu komunitas tentang diri 
Anda!''\n\n==Kontribusi 
saya==\n*[[Special:Contributions/{{PAGENAME}}|Kontribusi 
pengguna]]\n\n==Halaman kesukaan saya==\n*Tambahkan pranala ke halaman kesukaan 
anda pada wiki di sini!\n*Halaman kesukaan # 2\n*Halaman kesukaan # 3",
+       "welcome-message-user": "Hi, selamat datang di {{SITENAME}}! Terima 
kasih untuk suntingan anda dihalaman [[:$1]].\n\nSilakan tinggalkan pesan di 
[[$2|Pembicaraan halaman saya]] jika saya dapat membantu! $3"
+}
diff --git a/i18n/it.json b/i18n/it.json
new file mode 100644
index 0000000..48c1303
--- /dev/null
+++ b/i18n/it.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gifh"
+               ]
+       },
+       "welcome-user-page": "==Qualcosa su di me==\n''Questa è la tua pagina 
utente. Modifica liberamente questa pagina per farti conoscere dalla 
comunità!''\n\n==I miei 
contributi==\n*[[Special:Contributions/{{PAGENAME}}|Contributi utente]]\n\n==Le 
mie pagine preferite==\n*Aggiungi i collegamenti alle tue pagine preferite su 
questo wiki!\n*Pagina preferita n.2\n*Pagina preferita n.3",
+       "welcome-message-user": "Ciao $4, benvenuto su {{SITENAME}}! Grazie per 
la tua modifica sulla pagina [[:$1]].\n\nLascia un messaggio sulla [[$2|pagina 
delle mie discussioni]], se posso esserti utile per qualunque problema! $3",
+       "welcome-message-anon": "Ciao, benvenuto su {{SITENAME}}. Grazie per la 
tua modifica sulla pagina [[:$1]].\n\n'''[[Special:UserLogin|Se lo desideri, 
puoi registrarti con il tuo nome utente]]'''. È un modo facile e comodo per 
tenere traccia delle tue collaborazioni e ti aiuta nelle comunicazioni con il 
resto della comunità.\n\nLascia un messaggio sulla [[$2|pagina delle mie 
discussioni]], se posso esserti utile per qualunque problema! $3",
+       "welcome-message-log": "Benvenuto a un nuovo collaboratore"
+}
diff --git a/i18n/ja.json b/i18n/ja.json
new file mode 100644
index 0000000..fbfb605
--- /dev/null
+++ b/i18n/ja.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Tommy6"
+               ]
+       },
+       "welcome-user-page": "== 自己紹介 
==\n'''ここは、「{{PAGENAME}}」さんの利用者ページです。'''\n\n上の\"編集\"ボタンをクリックしてこのページを編集してみましょう。",
+       "welcome-message-user": "こんにちは、{{SITENAME}}へようこそ! 
[[:$1]]への編集ありがとうございます。\n\nもし、何か困ったことがありましたら、お気軽に[[$2|私の会話ページ]]までメッセージをお寄せください。$3",
+       "welcome-message-anon": "こんにちは、{{SITENAME}}へようこそ! 
[[:$1]]への編集ありがとうございます。\n\nもし、まだアカウントをお持ちでなければ、[[Special:UserLogin|ぜひアカウントを取得してみてください]]。他の方とコミュニケーションがとりやすくなりますし、アカウントユーザーだけが利用できる機能も多くあります。\n\nまた、何か困ったことがありましたら、お気軽に[[$2|私の会話ページ]]までメッセージをお寄せください。$3",
+       "welcome-message-log": "ウィキアへようこそ!"
+}
diff --git a/i18n/ko.json b/i18n/ko.json
new file mode 100644
index 0000000..e62bbb7
--- /dev/null
+++ b/i18n/ko.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Grace C. Infinity"
+               ]
+       },
+       "welcome-user-page": "==저에 대해서==\n''이 문서는 당신의 사용자 문서입니다. 이 단락에 당신에 대해 
소개하는 글을 남겨보세요.''\n\n==기여 내역==\n*[[Special:Contributions/{{PAGENAME}}|기여 
내역]]\n\n==관심 있는 문서 목록==\n*여기에 관심 있는 문서들을 링크로 추가해보세요.\n*2번째 관심 문서\n*3번째 관심 문서",
+       "welcome-message-user": "$4님, 안녕하세요.&nbsp;{{SITENAME}}에 오신 것을 환영합니다! 
[[:$1]] 문서를 편집해주셔서 감사드립니다.\n\n만약 도움이 필요하시다면 [[$2|제 사용자 토론 문서]]에 메시지를 
남겨주세요.&nbsp;$3",
+       "welcome-message-anon": "안녕하세요. {{SITENAME}}에 오신 것을 환영합니다. [[:$1]] 문서를 
편집해주셔서 감사드립니다.\n\n'''[[Special:UserLogin|먼저 계정을 만드셔서 활동하시는 것을 권해드립니다.]]''' 이는 
당신의 기여를 쉽게 추적하고 다른 사용자분들과 쉽게 소통할 수 있는 좋은 방법입니다.\n\n만약 도움이 필요하시다면 [[$2|제 사용자 토론 
문서]] 에 메시지를 남겨주세요.&nbsp;$3",
+       "welcome-message-log": "새 사용자 환영"
+}
diff --git a/i18n/lb.json b/i18n/lb.json
new file mode 100644
index 0000000..6ccd3bb
--- /dev/null
+++ b/i18n/lb.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Robby"
+               ]
+       },
+       "welcome-message-log": "Begréissung vun engem neien Auteur"
+}
diff --git a/i18n/mk.json b/i18n/mk.json
new file mode 100644
index 0000000..d4c02d0
--- /dev/null
+++ b/i18n/mk.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bjankuloski06"
+               ]
+       },
+       "welcome-user-page": "==За мене==\n''Ова е вашата корисничка страница. 
Уредете ја со тоа што ќе напишете некои нешта за себе, за да ве запознае 
заедницата!''\n\n==Мои 
придонеси==\n*[[Special:Contributions/{{PAGENAME}}|Кориснички 
придонеси]]\n\n==Мои омилени страници==\n*Тука на викиво додајте врски до 
вашите омилени страници!\n*Омилена страница #2\n*Омилена страница #3"
+}
diff --git a/i18n/nl.json b/i18n/nl.json
new file mode 100644
index 0000000..31004ae
--- /dev/null
+++ b/i18n/nl.json
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mark van Alphen",
+                       "McDutchie",
+                       "Siebrand Mazeland"
+               ]
+       },
+       "welcome-user-page": "==Over mij==\n''Dit is jouw gebruikerspagina. 
Bewerk alsjeblieft deze pagina om de gemeenschap over jezelf te 
vertellen!''\n\n==Mijn 
bijdragen==\n*[[Special:Contributions/{{PAGENAME}}|Gebruiker's 
bijdragen]]\n\n==Mijn favoriete pagina's==\n*Voeg hier links toe van je 
favoriete pagina's op deze wiki!\n*Favoriete pagina #2\n*Favoriete pagina #3",
+       "welcome-message-user": "Hallo, welkom bij {{SITENAME}}! Bedankt voor 
uw bewerking van de pagina [[:$1]].\n\nLaat gerust een bericht achter op 
[[$2|mijn overlegpagina]] als ik u ergens mee kan helpen! $3",
+       "welcome-message-anon": "Hallo, welkom bij {{SITENAME}}! Dank u wel 
voor uw werk aan de pagina [[:$1]].\n\n'''[[Special:UserLogin|Maak alstublieft 
een gebruiker aan of meld u aan]]'''.\nHet is een eenvoudige manier om uw 
bijdragen te volgen en helpt u bij het onderhouden van contacten met de rest 
van de gemeenschap.\n\nLaat alstublieft een bericht achter op [[$2|mijn overleg 
pagina]] als ik u ergens mee kan helpen! $3",
+       "welcome-message-log": "nieuwe gebruiker aan het verwelkomen"
+}
diff --git a/i18n/no.json b/i18n/no.json
new file mode 100644
index 0000000..d747657
--- /dev/null
+++ b/i18n/no.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Audun",
+                       "Nghtwlkr"
+               ]
+       },
+       "welcome-user-page": "==Om meg==\n''Dette er brukersiden din. Du kan 
endre denne siden for å fortelle fellesskapet om deg selv!'''\n\n==Mine 
bidrag==\n*[[Special:Contributions/{{PAGENAME}}|Brukerbidrag]]\n\n==Mine 
favorittsider==\n*Legg inn lenker til favorittsidene dine på wikien 
her!\n*Favorittside #2\n*Favorittside #3",
+       "welcome-message-user": "Hei, velkommen til {{SITENAME}}! Takk for 
bidraget til siden [[:$1]].\n\nVennligst legg igjen en melding på 
[[$2|diskusjonssiden min]] om du trenger hjelp til noe! $3",
+       "welcome-message-anon": "Hei, velkommen til {{SITENAME}}! Takk for ditt 
bidrag til siden [[:$1]].\n\n'''[[Special:UserLogin|Vennligst logg inn og 
opprett et brukernavn]]'''. Det er en enkel måte å holde oversikt over dine 
bidrag og hjelper deg med å kommunisere med resten av 
fellesskapet.\n\nVennligst legg igjen en melding på [[$2|diskusjonssiden min]] 
om du trenger hjelp til noe! $3",
+       "welcome-message-log": "ønsker ny bidragsyter velkommen"
+}
diff --git a/i18n/oc.json b/i18n/oc.json
new file mode 100644
index 0000000..39c72ec
--- /dev/null
+++ b/i18n/oc.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Cedric31"
+               ]
+       },
+       "welcome-user-page": "==A prepaus de moi==\n''Aquesta pagina es vòstra 
pagina personala. I podètz apondre d'entresenhas que vos concernisson 
!''\n\n==Mas contribucions==\n*[[Special:Contributions/{{PAGENAME}}|Mas 
contribucions]]\n\n==Mas paginas preferidas==\n*Podètz plaçar aicí de ligams 
cap a vòstras paginas preferidas del wiki !\n*Ligam cap a la pagina #2\n*Ligam 
cap a la pagina #3",
+       "welcome-message-user": "Bonjorn, benvenguda sus {{SITENAME}} ! Mercés 
d'aver modificada la pagina [[:$1]].\n\nPodètz daissar un messatge sus ma 
pagina de [[$2|discussion]] se vos pòdi ajudar per qué que siá ! $3",
+       "welcome-message-anon": "Bonjorn, benvenguda sus {{SITENAME}}. Mercés 
per vòstra contribucion a la pagina [[:$1]].\n\n'''Mercés de vos 
[[Special:UserLogin|connectar o de crear un compte]]'''. Es un mejan simple de 
gardar una traça de vòstras contribucions e aquò facilita la comunicacion amb 
la rèsta de la comunautat.\n\nTrantalhetz pas a daissar un messatge sus [[$2|ma 
pagina de discussion]] se vos pòdi ajudar per qué que siá ! $3",
+       "welcome-message-log": "Aculhir un novèl utilizaire"
+}
diff --git a/i18n/pl.json b/i18n/pl.json
new file mode 100644
index 0000000..1174bc0
--- /dev/null
+++ b/i18n/pl.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Misiek95",
+                       "Sp5uhe"
+               ]
+       },
+       "welcome-user-page": "==O mnie==\n''To jest Twoja strona użytkownika. 
Wyedytuj ją i powiedz społeczności coś o sobie!''\n\n==Mój 
wkład==\n*[[Special:Contributions/{{PAGENAME}}|wkład]]\n\n==Moje ulubione 
strony==\n*Dodaj tu linki do swoich ulubionych stron wiki!\n*Drugi link.\n*I 
trzeci.",
+       "welcome-message-user": "Witaj w {{GRAMMAR:MS.lp|{{SITENAME}}}}! 
Dziękujemy za poprawienie artykułu [[:$1]].\n\nZostaw wiadomość na [[$2|mojej 
stronie dyskusji]] jeśli potrzebujesz jakiejkolwiek pomocy! $3",
+       "welcome-message-anon": "Witaj w {{GRAMMAR:MS.lp|{{SITENAME}}}}. 
Dziękujemy za poprawienie strony [[:$1]].\n\n'''[[Special:UserLogin|Możesz się 
zarejestrować i założyć konto]]'''. Ułatwi Ci to kontrolę własnego wkładu i 
pomoże w komunikacji z resztą społeczności.\n\nZostaw wiadomość na [[$2|mojej 
stronie dyskusji]] jeśli potrzebujesz jakiejkolwiek pomocy! $3",
+       "welcome-message-log": "powitanie"
+}
diff --git a/i18n/pms.json b/i18n/pms.json
new file mode 100644
index 0000000..2abaac2
--- /dev/null
+++ b/i18n/pms.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Borichèt",
+                       "Dragonòt"
+               ]
+       },
+       "welcome-user-page": "==A propòsit ëd mi==\n''Sta sì a l'é soa pàgina 
utent. Për piasì ch'a modìfica sta pàgina-sì për parlé ëd chiel a la 
comunità!''\n\n==Mie 
contribussion==\n*[[Special:Contributions/{{PAGENAME}}|Contribussion ëd 
l'utent]]\n\n==Mie pàgine preferìe==\n*Ch'a gionta ambelessì j'anliure a soe 
pàgine preferìe dzora a la wiki!\n*Pàgina preferìa #2\n*Pàgina preferìa #3",
+       "welcome-message-user": "Cerea, bin ëvnù a {{SITENAME}}! Mersì për soe 
modìfiche a la pàgina [[:$1]].\n\nPër piasì ch'a lassa un mëssagi dzora a 
[[$2|mia pàgina ëd discussion]] se i peuss giuté con cheicòs! $3",
+       "welcome-message-anon": "Cerea, bin ëvnù su {{SITENAME}}! Mersì për soa 
modìfica a la pàgina [[:$1]].\n\n'''[[Special:UserLogin|Per piasì ch'a intra e 
ch'a crea un nòm utent]]'''. A l'é na manera belfé ëd manten-e na marca ëd soe 
contribussion e a lo giuta a comuniché con ël rest ëd la comunità.\n\nPër piasì 
ch'a lassa un mëssagi su [[$2|mia pàgina ëd discussion]] s'i peuss giuté con 
cheicòs! $3",
+       "welcome-message-log": "bin ëvnù a un neuv contribudor"
+}
diff --git a/i18n/pt-br.json b/i18n/pt-br.json
new file mode 100644
index 0000000..3f7e1f5
--- /dev/null
+++ b/i18n/pt-br.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Garrasdalua"
+               ]
+       },
+       "welcome-user-page": "==Sobre mim==\n''Esta é sua pagina de usuário. 
Por favor, edite esta pagina para contar mais sobre voce para a 
comunidade!''\n\n==Minhas 
contribuições==\n*[[Special:Contributions/{{PAGENAME}}|Contribuições do 
usuário]]\n\n==Minhas Páginas favoritas==\n*Adicione links para suas páginas 
favoritas da wiki!\n*Pagina favorita #2\n*Pagina favorita #3",
+       "welcome-message-user": "Olá, bem vindo(a) a {{SITENAME}}! Obrigada por 
sua edição em [[:$1]].\n\nPor favor, se tiver alguma duvida, sinta-se a vontade 
para deixar uma mensagem em [[$2|minha pagina de discussão]] para ver se posso 
te ajudar com alguma coisa! $3",
+       "welcome-message-anon": "Ola, benvindo(a) a {{SITENAME}}! Muito 
obrigado por sua edição em [[:$1]].\n\nPorque não '''[[Special:UserLogin|cria 
uma conta e se identifica]]'''?  Desta forma será muito máis fácil saber qué 
páginas voce editou e o trabalho será atribuido a voce na wiki, alem do mais 
será de grande ajuda na hora de se comunicar com o resto da comunidade.\n\nPor 
favor, se tiver alguma duvida, sinta-se a vontade para deixar uma mensagem em 
[[$2|minha pagina de discussão]] para ver se posso te ajudar com alguma coisa! 
$3",
+       "welcome-message-log": "bem vindo novo contribuidor"
+}
diff --git a/i18n/pt.json b/i18n/pt.json
new file mode 100644
index 0000000..9d0e531
--- /dev/null
+++ b/i18n/pt.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hamilton Abreu"
+               ]
+       },
+       "welcome-user-page": "==Quem sou==\n''Esta é sua página de utilizador. 
Por favor, edite esta página e apresente-se à comunidade!''\n\n==As minhas 
contribuições==\n*[[Special:Contributions/{{PAGENAME}}|Contribuições deste 
utilizador]]\n\n==As minhas páginas preferidas==\n*Adicione links para as suas 
páginas preferidas nesta wiki!\n*Página preferida #2\n*Página preferida #3",
+       "welcome-message-user": "Olá, bem-vindo(a) à {{SITENAME}}! Obrigado 
pela sua edição da página [[:$1]].\n\nPor favor, deixe uma mensagem na 
[[$2|minha página de discussão]] se eu puder ajudar nalguma coisa! $3",
+       "welcome-message-anon": "Olá, bem-vindo(a) à {{SITENAME}}! Obrigado 
pela sua edição da página [[:$1]].\n\n'''[[Special:UserLogin|Por favor, 
registe-se e crie um utilizador]]'''. É uma forma fácil de registar as suas 
contribuições e facilita a comunicação com os restantes utilizadores.\n\nPor 
favor, deixe uma mensagem na [[$2|minha página de discussão]] se eu puder 
ajudar nalguma coisa! $3",
+       "welcome-message-log": "boas-vindas a novo colaborador"
+}
diff --git a/i18n/ru.json b/i18n/ru.json
new file mode 100644
index 0000000..e68da8a
--- /dev/null
+++ b/i18n/ru.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lockal",
+                       "Александр Сигачёв"
+               ]
+       },
+       "welcome-user-page": "==Обо мне==\n''Это ваша страница участника. 
Пожалуйста, отредактируйте эту страницу, расскажите о себе!''\n\n==Мой 
вклад==\n*[[Special:Contributions/{{PAGENAME}}|Вклад участника]]\n\n==Мои 
избранные страницы==\n*Добавьте сюда ссылки на ваши любимые 
вики-страницы!\n*Избранная страница №2\n*Избранная страница №3",
+       "welcome-message-user": "Здравствуйте, добро пожаловать на 
{{SITENAME}}! Спасибо за вашу правку на странице [[:$1]].\n\nПожалуйста, 
оставьте сообщение на [[$2|моей странице обсуждения]], если я могу чем-нибудь 
помочь! $3",
+       "welcome-message-anon": "Привет, добро пожаловать на {{SITENAME}}! 
Спасибо за вашу правку на странице 
[[:$1]].\n\n'''[[Special:UserLogin|Пожалуйста, представьтесь системе, создайте 
учётную запись]]'''. Это позволит легко следить за вашими изменениями, позволит 
вам общаться с другими членами сообщества.\n\nПожалуйста, оставьте сообщение на 
[[$2|моей странице обсуждения]], если я могу чем-то помочь! $3",
+       "welcome-message-log": "приветствие нового автора"
+}
diff --git a/i18n/sr-ec.json b/i18n/sr-ec.json
new file mode 100644
index 0000000..44c5906
--- /dev/null
+++ b/i18n/sr-ec.json
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Charmed94",
+                       "Verlor"
+               ]
+       },
+       "welcome-user-page": "==О мени==\n''Ово је Ваша корисничка страница. 
Молимо, промените је да бисте рекли заједници нешто о себи!''\n\n==Моји 
доприноси==\n*[[Special:Contributions/{{PAGENAME}}|Доприноси 
корисника]]\n\n==Моје омиљене странице==\n*Додаје везе ка твојим омиљеним 
страницама на викију!\n*Омиљена страница #2\n*Омиљена страница #3",
+       "welcome-message-user": "Здраво и добро дошли у {{SITENAME}}! Хвала Вам 
на измени на [[:$1]] страници.\n\nМолимо, оставите коментар на [[$2|мојој 
страници за разговор]] ако Вам икако могу помоћи! $3",
+       "welcome-message-anon": "Здраво и добро дошли у {{SITENAME}}! Хвала Вам 
на измени на [[:$1]] страници.\n\n'''[[Special:UserLogin|Молимо, пријавите се и 
направите корисничко име]]'''. То је најлакши начин да приступите Вашим 
доприносима и комуницирате с остатком заједнице.\n\nМолимо, оставите коментар 
на [[$2|мојој страници за разговор]] ако Вам икако могу помоћи! $3",
+       "welcome-message-log": "поздрав за новог корисника"
+}
diff --git a/i18n/sv.json b/i18n/sv.json
new file mode 100644
index 0000000..00a8536
--- /dev/null
+++ b/i18n/sv.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kozley"
+               ]
+       },
+       "welcome-user-page": "==Om mig==\n''Detta är din användarsida. Redigera 
den här sidan för att berätta gemenskapen om dig själv!''\n\n==Mina 
bidrager==\n*[[Special:Contributions/{{PAGENAME}}|Användarbidrager]]\n\n==Mina 
favoritsidor==\n*Lägg till länkar till dina favoritsidor på wikin 
här!\n*Favoritsida #2\n*Favoritsida #3",
+       "welcome-message-user": "Hej $4, välkommen till {{SITENAME}}! Tack för 
din ändring till [[:$1]] sidan.\n\nLämna ett meddelande på [[$2|min 
diskussionssida]] om jag kan hjälpa till med något! $3",
+       "welcome-message-anon": "Hej, välkommen till {{SITENAME}}. Tack för din 
ändring till [[:$1]] sidan.\n\n'''[[Special:UserLogin|Logga in och skapa ett 
användarnamn]]'''. Det är ett enkelt sätt att hålla koll på era inlägg och 
hjälper dig att kommunicera med resten av gemenskapen.\n\nLämna ett meddelande 
på [[$2|min diskussionssida]] om jag kan hjälpa till med något! $3",
+       "welcome-message-log": "välkomna nya bidragsgivare"
+}
diff --git a/i18n/tl.json b/i18n/tl.json
new file mode 100644
index 0000000..bc67006
--- /dev/null
+++ b/i18n/tl.json
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AnakngAraw"
+               ]
+       },
+       "welcome-user-page": "==Tungkol sa akin==\n''Ito ang iyong pahina ng 
tagagamit. Pakibago ang pahinang ito upang makapagsabi sa pamayanan ng hinggil 
sa sarili mo!''\n\n==Mga ambag ko==\n*[[Special:Contributions/{{PAGENAME}}|Mga 
ambag ng tagagamit]]\n\n==Mga paborito kong pahina==\n*Nagdaragdag dito ng mga 
kawing sa iyong paboritong mga pahina sa wiki!\n*Paboritong pahina 
#2\n*Paboritong pahina #3",
+       "welcome-message-user": "Kumusta, maligayang pagdating sa {{SITENAME}}! 
Salamat sa pamamatnugot mo sa pahinang [[:$1]].\n\nMangyaring mag-iwan ng isang 
mensahe sa [[$2|pahina ko ng usapan]] kung makakatulong ako sa anumang bagay! 
$3",
+       "welcome-message-anon": "Kumusta, maligayang pagdating sa {{SITENAME}}! 
Salamat sa pamamatnugot mo sa pahinang 
[[:$1]].\n\n'''[[Special:UserLogin|Mangyaring lumagda at lumikha ng isang 
pangalan ng tagagamit]]'''. Isa itong madaling paraan upang masubaybay ang mga 
ambag mo at makatutulong sa iyong makipag-ugnayan sa iba pang nasa 
pamayanan.\n\nMangyaring mag-iwan ng isang mensahe sa [[$2|pahina ko ng 
talakayan]] kung makakatulong ako sa anumang bagay! $3",
+       "welcome-message-log": "maligayang binabati ang bagong tagaambag"
+}
diff --git a/i18n/uk.json b/i18n/uk.json
new file mode 100644
index 0000000..b29c051
--- /dev/null
+++ b/i18n/uk.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Prima klasy4na"
+               ]
+       },
+       "welcome-message-user": "Привіт, ласкаво просимо до {{SITENAME}}! 
Дякуємо за редагування сторінки [[:$1]].\n\nБудь-ласка, залиште повідомлення на 
[[$2|моїй сторінці обговорення]], якщо я можу чим-небудь допомогти! $3"
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/384248
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iae65c45673c445588895eb208d37165ae1cfaa97
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/HAWelcome
Gerrit-Branch: master
Gerrit-Owner: Jack Phoenix <j...@countervandalism.net>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to