Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1426569
Hooks.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
59 KB
Referenced Files
None
Subscribers
None
Hooks.php
View Options
<?php
// phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName
// Need to be able to define ::onUploadForm_initial
namespace
MediaWiki\Extension\WikimediaMessages
;
use
ErrorPageError
;
use
HtmlArmor
;
use
MediaWiki\Cache\Hook\MessageCacheFetchOverridesHook
;
use
MediaWiki\Config\Config
;
use
MediaWiki\Config\ConfigException
;
use
MediaWiki\Config\ServiceOptions
;
use
MediaWiki\Extension\WikimediaMessages\LogFormatter\WMUserMergeLogFormatter
;
use
MediaWiki\Hook\EditPageCopyrightWarningHook
;
use
MediaWiki\Hook\SidebarBeforeOutputHook
;
use
MediaWiki\Hook\SkinAddFooterLinksHook
;
use
MediaWiki\Hook\SkinCopyrightFooterMessageHook
;
use
MediaWiki\Hook\SkinTemplateNavigation__UniversalHook
;
use
MediaWiki\Hook\UploadForm_initialHook
;
use
MediaWiki\Html\Html
;
use
MediaWiki\Linker\Linker
;
use
MediaWiki\Linker\LinkRenderer
;
use
MediaWiki\MainConfigNames
;
use
MediaWiki\Message\Message
;
use
MediaWiki\Output\Hook\BeforePageDisplayHook
;
use
MediaWiki\Output\OutputPage
;
use
MediaWiki\Permissions\PermissionManager
;
use
MediaWiki\Registration\ExtensionRegistry
;
use
MediaWiki\ResourceLoader\Hook\ResourceLoaderRegisterModulesHook
;
use
MediaWiki\ResourceLoader\ResourceLoader
;
use
MediaWiki\SpecialPage\Hook\SpecialPageBeforeExecuteHook
;
use
MediaWiki\SpecialPage\SpecialPage
;
use
MediaWiki\Specials\SpecialUpload
;
use
MediaWiki\Title\Title
;
use
MediaWiki\User\Options\UserOptionsLookup
;
use
MessageCache
;
use
MessageLocalizer
;
use
MobileContext
;
use
Skin
;
use
SkinTemplate
;
use
Wikimedia\IPUtils
;
use
Wikimedia\Message\MessageSpecifier
;
/**
* Hooks for WikimediaMessages extension
*
* @file
* @ingroup Extensions
*/
class
Hooks
implements
BeforePageDisplayHook
,
EditPageCopyrightWarningHook
,
MessageCacheFetchOverridesHook
,
ResourceLoaderRegisterModulesHook
,
SidebarBeforeOutputHook
,
SkinAddFooterLinksHook
,
SkinCopyrightFooterMessageHook
,
SkinTemplateNavigation__UniversalHook
,
SpecialPageBeforeExecuteHook
,
UploadForm_initialHook
{
public
const
CONSTRUCTOR_OPTIONS
=
[
MainConfigNames
::
DBname
,
MainConfigNames
::
ForceUIMsgAsContentMsg
,
'WikimediaMessagesLicensing'
,
MainConfigNames
::
LanguageCode
,
MainConfigNames
::
RightsText
,
MainConfigNames
::
RightsPage
,
MainConfigNames
::
RightsUrl
,
];
private
ExtensionRegistry
$extensionRegistry
;
private
LinkRenderer
$linkRenderer
;
private
PermissionManager
$permissionManager
;
private
ServiceOptions
$options
;
private
UserOptionsLookup
$userOptionsLookup
;
private
?
MobileContext
$mobileContext
;
public
function
__construct
(
ExtensionRegistry
$extensionRegistry
,
LinkRenderer
$linkRenderer
,
PermissionManager
$permissionManager
,
ServiceOptions
$options
,
UserOptionsLookup
$userOptionsLookup
,
?
MobileContext
$mobileContext
=
null
)
{
$options
->
assertRequiredOptions
(
self
::
CONSTRUCTOR_OPTIONS
);
$this
->
extensionRegistry
=
$extensionRegistry
;
$this
->
linkRenderer
=
$linkRenderer
;
$this
->
permissionManager
=
$permissionManager
;
$this
->
options
=
$options
;
$this
->
userOptionsLookup
=
$userOptionsLookup
;
$this
->
mobileContext
=
$mobileContext
;
}
public
static
function
factory
(
LinkRenderer
$linkRenderer
,
Config
$mainConfig
,
PermissionManager
$permissionManager
,
UserOptionsLookup
$userOptionsLookup
,
?
MobileContext
$mobileContext
=
null
):
self
{
return
new
self
(
ExtensionRegistry
::
getInstance
(),
$linkRenderer
,
$permissionManager
,
new
ServiceOptions
(
self
::
CONSTRUCTOR_OPTIONS
,
$mainConfig
),
$userOptionsLookup
,
$mobileContext
);
}
/**
* When core requests certain messages, change the key to a Wikimedia version.
*
* @see https://www.mediawiki.org/wiki/Manual:Hooks/MessageCacheFetchOverrides
* @param string[] &$keys
*/
public
function
onMessageCacheFetchOverrides
(
array
&
$keys
):
void
{
global
$wmgRealm
;
static
$keysToOverride
=
[
'acct_creation_throttle_hit'
,
'centralauth-contribs-locked'
,
// T216347
'centralauth-login-error-locked'
,
// T86741
'centralauth-groupname'
,
// T345549
'checkuser-api-useragent-clienthints-explanation'
,
'checkuser-toollinks'
,
// T327281
# 'checkuser-tempaccount-enable-preference-description',
// T362548
'checkuser-investigateblock-warning-ips-and-users-in-targets'
,
'checkuser-summary'
,
'createacct-helpusername'
,
'createacct-imgcaptcha-help'
,
// T139797
'delete-toobig'
,
'feedback-termsofuse'
,
'globalblocking-blockedtext-ip'
,
'globalblocking-blockedtext-range'
,
'globalblocking-blockedtext-xff'
,
'globalblocking-blockedtext-user'
,
'globalblocking-blockedtext-autoblock'
,
'globalblocking-blockedtext-autoblock-xff'
,
'globalrenamequeue-email-body-approved'
,
'globalrenamequeue-email-body-rejected'
,
'interfaceadmin-info'
,
// T121639
'ipb-confirmhideuser'
,
'mwoauth-form-privacypolicy-link'
,
// T252375
'mobile-frontend-terms-url'
,
'mwoauthserver-invalid-user'
,
// T226059
'oathauth-step1-test'
,
// T189924
'oathauth-hint'
,
// T272412
'prefs-user-downloaddata-help-message'
,
'privacypage'
,
'sidebar'
,
// T140941
'sitematrix'
,
'sitematrix-others'
,
'sitematrix-summary'
,
'sulrenamewarning-usenew'
,
// T248367
'webauthn-module-description'
,
// T248367
'webauthn-ui-login-prompt'
,
// T218160
'log-action-filter-usermerge'
,
'log-action-filter-usermerge-mergeuser'
,
'log-action-filter-usermerge-deleteuser'
,
'notification-body-oathauth-disable-other'
,
'oathauth-notifications-disable-helplink'
,
// T307493
'ipinfo-source-geoip2'
,
'ipinfo-infobox-use-terms'
,
'ipinfo-preference-use-agreement'
,
'similareditors-error-default'
,
// T348926
'jsonconfig-license-copyrightwarning'
,
'jsonconfig-license-copyrightwarning-license-unset'
,
'jsonconfig-license-notice'
,
'jsonconfig-license-notice-license-unset'
,
// T340115
'campaignevents-edit-field-clickwrap-checkbox-label'
,
// T322209
'campaignevents-edit-form-questions-pii-notice'
,
// T357869
'pt-movepage-page-count-limit'
,
'grouppage-checkuser'
,
'grouppage-suppress'
,
];
static
$allbutmetawikikeys
=
[
// T221526
'apierror-urlshortener-disabled'
,
// T230253
'apierror-urlshortener-permissiondenied'
,
// T331743
'centralauth-admin-log-otherwiki'
,
// T230253
'urlshortener-badaccessgroups'
,
// T221526
'urlshortener-disabled'
,
];
// Temporarily override grouppage-suppress to grouppage-oversight,
// to avoid breaking links. See T112147.
# $keys['grouppage-suppress'] = 'grouppage-oversight';
if
(
$wmgRealm
===
'labs'
)
{
$keys
[
'privacypage'
]
=
'wikimedia-privacypage-labs'
;
}
$languageCode
=
$this
->
options
->
get
(
MainConfigNames
::
LanguageCode
);
$transformationCallback
=
static
function
(
string
$key
,
MessageCache
$cache
)
use
(
$languageCode
):
string
{
$transformedKey
=
"wikimedia-$key"
;
// MessageCache uses ucfirst if ord( key ) is < 128, which is true of all
// of the above. Revisit if non-ASCII keys are used.
$ucKey
=
ucfirst
(
$key
);
if
(
/*
* Override order:
* 1. If the MediaWiki:$ucKey page exists, use the key unprefixed
* (in all languages) with normal fallback order. Specific
* language pages (MediaWiki:$ucKey/xy) are not checked when
* deciding which key to use, but are still used if applicable
* after the key is decided.
*
* 2. Otherwise, use the prefixed key with normal fallback order
* (including MediaWiki pages if they exist).
*/
$cache
->
getMsgFromNamespace
(
$ucKey
,
$languageCode
)
===
false
)
{
return
$transformedKey
;
}
return
$key
;
};
foreach
(
$keysToOverride
as
$key
)
{
$keys
[
$key
]
=
$transformationCallback
;
}
if
(
$this
->
options
->
get
(
MainConfigNames
::
DBname
)
!==
'metawiki'
)
{
foreach
(
$allbutmetawikikeys
as
$key
)
{
$keys
[
$key
]
=
$transformationCallback
;
}
}
$licensing
=
$this
->
options
->
get
(
'WikimediaMessagesLicensing'
);
$rightsText
=
$this
->
options
->
get
(
MainConfigNames
::
RightsText
);
switch
(
$licensing
)
{
case
'mediawiki'
:
$keys
[
'mobile-frontend-license-links'
]
=
'mediawiki.org-mobile-license-links'
;
break
;
case
'wikidata'
:
$keys
[
'mobile-frontend-license-links'
]
=
'wikidata-mobile-license-links'
;
break
;
case
'wikifunctions'
:
$keys
[
'mobile-frontend-license-links'
]
=
'wikifunctions-mobile-license-links'
;
break
;
case
'commons'
:
case
'standard'
:
$keys
[
'mobile-frontend-license-links'
]
=
'wikimedia-mobile-license-links'
;
break
;
case
'wikinews'
:
// This is necessary because MobileFrontend doesn't always display the license based on
// config settings (T296791)
if
(
$rightsText
===
'Creative Commons Attribution 3.0'
)
{
$keys
[
'mobile-frontend-license-links'
]
=
'wikinews-mobile-license-links-ccby30'
;
}
else
{
$keys
[
'mobile-frontend-license-links'
]
=
'wikinews-mobile-license-links'
;
}
break
;
default
:
throw
new
ConfigException
(
"Unknown value for WikimediaMessagesLicensing: '$licensing'"
);
}
$keys
[
'mainpage-title-loggedin'
]
=
function
(
string
$key
):
string
{
return
(
$this
->
mobileContext
&&
$this
->
mobileContext
->
shouldDisplayMobileView
()
)
?
'wikimedia-mobile-mainpage-title-loggedin'
:
$key
;
};
}
private
function
getShortRightsLink
():
string
{
$rightsText
=
$this
->
options
->
get
(
MainConfigNames
::
RightsText
);
$rightsPage
=
$this
->
options
->
get
(
MainConfigNames
::
RightsPage
);
$rightsUrl
=
$this
->
options
->
get
(
MainConfigNames
::
RightsUrl
);
$commonLicenses
=
[
'Creative Commons Attribution-Share Alike 4.0'
=>
'CC BY-SA 4.0'
,
'Creative Commons Attribution-Share Alike 3.0'
=>
'CC BY-SA 3.0'
,
'Creative Commons Attribution 3.0'
=>
'CC BY 3.0'
,
'Creative Commons Attribution 2.5'
=>
'CC BY 2.5'
,
];
if
(
isset
(
$commonLicenses
[
$rightsText
]
)
)
{
$rightsText
=
$commonLicenses
[
$rightsText
];
}
if
(
$rightsPage
)
{
$title
=
Title
::
newFromText
(
$rightsPage
);
$link
=
$this
->
linkRenderer
->
makeKnownLink
(
$title
,
new
HtmlArmor
(
$rightsText
),
[]
);
}
elseif
(
$rightsUrl
)
{
$link
=
Linker
::
makeExternalLink
(
$rightsUrl
,
$rightsText
,
true
,
''
,
[]
);
}
else
{
$link
=
$rightsText
;
}
return
$link
;
}
/**
* Override for copyright message in skin footer.
*
* @see https://www.mediawiki.org/wiki/Manual:Hooks/SkinCopyrightFooterMessage
*
* @param Title $title
* @param string $type
* @param MessageSpecifier &$msgSpec
*/
public
function
onSkinCopyrightFooterMessage
(
$title
,
$type
,
&
$msgSpec
)
{
if
(
$type
===
'history'
)
{
return
;
}
$licensing
=
$this
->
options
->
get
(
'WikimediaMessagesLicensing'
);
$isMobile
=
$this
->
mobileContext
&&
$this
->
mobileContext
->
shouldDisplayMobileView
();
switch
(
$licensing
)
{
case
'wikidata'
:
// Wikidata is licensed under CC-BY-SA 4.0 only, no GFDL. (Also, the data is under CC0.)
$msgSpec
=
Message
::
newFromSpecifier
(
'wikidata-copyright-footer'
);
break
;
case
'mediawiki'
:
// MediaWiki.org has a special licence for the Help: namespace.
$msgSpec
=
Message
::
newFromSpecifier
(
'mediawiki.org-copyright-footer'
);
break
;
case
'commons'
:
// Commons has a special licence for the structured data.
// TODO: Should we also mention the special Data: namespace?
$msgSpec
=
Message
::
newFromSpecifier
(
'wikimedia-commons-copyright-footer'
);
break
;
case
'standard'
:
// Almost all Wikimedia wikis using CC-BY-SA 4.0 are also dual-licensed under GFDL.
$msgSpec
=
$isMobile
?
Message
::
newFromSpecifier
(
'mobile-frontend-copyright'
)->
rawParams
(
$this
->
getShortRightsLink
()
)
:
Message
::
newFromSpecifier
(
'wikimedia-copyright-footer'
);
break
;
case
'wikinews'
:
// Use the default MediaWiki message. (It's overridden locally on most Wikinewses.)
$msgSpec
=
$isMobile
?
Message
::
newFromSpecifier
(
'mobile-frontend-copyright'
)->
rawParams
(
$this
->
getShortRightsLink
()
)
:
$msgSpec
;
break
;
case
'wikifunctions'
:
// Wikifunctions like Wikidata is licensed under CC-BY-SA 4.0 only, no GFDL. The data is
// under CC0. The code is under Apache 2.0.
$msgSpec
=
Message
::
newFromSpecifier
(
'wikifunctions-site-footer-copyright-footer'
);
break
;
default
:
throw
new
ConfigException
(
"Unknown value for WikimediaMessagesLicensing: '$licensing'"
);
}
}
/**
* Override for copyright message on edit page.
*
* @see https://www.mediawiki.org/wiki/Manual:Hooks/EditPageCopyrightWarning
*
* @param Title $title
* @param array &$msg
*/
public
function
onEditPageCopyrightWarning
(
$title
,
&
$msg
)
{
$licensing
=
$this
->
options
->
get
(
'WikimediaMessagesLicensing'
);
switch
(
$licensing
)
{
case
'wikidata'
:
case
'wikifunctions'
:
// Wikidata and Wikifunctions are licensed under CC-BY-SA 4.0 only, no GFDL.
$msg
=
[
'wikimedia-copyrightwarning-ccbysa40only'
];
break
;
case
'mediawiki'
:
// MediaWiki.org pages are dual-licensed under CC-BY-SA 4.0 and GFDL, except for the Help: namespace.
$msg
=
[
'mediawiki.org-copyrightwarning'
];
break
;
case
'commons'
:
case
'standard'
:
// Almost all Wikimedia wikis using CC-BY-SA 4.0 are also dual-licensed under GFDL.
$msg
=
[
'wikimedia-copyrightwarning'
];
break
;
case
'wikinews'
:
// Use the default MediaWiki message. (It's overridden locally on most Wikinewses.)
break
;
default
:
throw
new
ConfigException
(
"Unknown value for WikimediaMessagesLicensing: '$licensing'"
);
}
}
/**
* Override for copyright messages (DiscussionTools extension).
*
* @param array &$messages
* @param MessageLocalizer $context
* @param Config $config
*/
public
static
function
onDiscussionToolsTermsOfUseMessages
(
array
&
$messages
,
MessageLocalizer
$context
,
Config
$config
)
{
$licensing
=
$config
->
get
(
'WikimediaMessagesLicensing'
);
switch
(
$licensing
)
{
case
'wikidata'
:
case
'wikifunctions'
:
// Do not use $wgRightsText or $wgRightsPage, as they are customized for the API (T112606).
$rightsUrl
=
$config
->
get
(
'RightsUrl'
);
$rightsText
=
'Creative Commons Attribution-Share Alike 4.0'
;
$links
=
[
"[$rightsUrl $rightsText]"
,
1
];
break
;
case
'wikinews'
:
// Add the license name to the terms-of-use message
$rightsUrl
=
$config
->
get
(
'RightsUrl'
);
$rightsText
=
$config
->
get
(
'RightsText'
);
$links
=
[
"[$rightsUrl $rightsText]"
,
1
];
break
;
case
'commons'
:
case
'mediawiki'
:
case
'standard'
:
// Add the license names to the terms-of-use message - dual-licensed wikis
$links
=
[
$context
->
msg
(
'wikimedia-license-links'
)->
plain
(),
2
];
break
;
default
:
throw
new
ConfigException
(
"Unknown value for WikimediaMessagesLicensing: '$licensing'"
);
}
$messages
[
'reply'
]
=
array_merge
(
[
'wikimedia-discussiontools-replywidget-terms-click'
,
$context
->
msg
(
'discussiontools-replywidget-reply'
)->
text
()
],
$links
);
$messages
[
'newtopic'
]
=
array_merge
(
[
'wikimedia-discussiontools-replywidget-terms-click'
,
$context
->
msg
(
'discussiontools-replywidget-newtopic'
)->
text
()
],
$links
);
}
/**
* Override for copyright messages (Flow extension).
*
* @param array &$messages
* @param MessageLocalizer $context
* @param Config $config
*/
public
static
function
onFlowTermsOfUseMessages
(
array
&
$messages
,
MessageLocalizer
$context
,
Config
$config
)
{
$licensing
=
$config
->
get
(
'WikimediaMessagesLicensing'
);
switch
(
$licensing
)
{
case
'wikidata'
:
case
'wikifunctions'
:
// Do not use $wgRightsText or $wgRightsPage, as they are customized for the API (T112606).
$rightsUrl
=
$config
->
get
(
'RightsUrl'
);
$rightsText
=
'Creative Commons Attribution-Share Alike 4.0'
;
$links
=
[
"[$rightsUrl $rightsText]"
,
1
];
break
;
case
'wikinews'
:
// Add the license name to the terms-of-use message
$rightsUrl
=
$config
->
get
(
'RightsUrl'
);
$rightsText
=
$config
->
get
(
'RightsText'
);
$links
=
[
"[$rightsUrl $rightsText]"
,
1
];
break
;
case
'commons'
:
case
'mediawiki'
:
case
'standard'
:
// Add the license names to the terms-of-use message - dual-licensed wikis
$links
=
[
$context
->
msg
(
'wikimedia-license-links'
)->
plain
(),
2
];
break
;
default
:
throw
new
ConfigException
(
"Unknown value for WikimediaMessagesLicensing: '$licensing'"
);
}
$messages
[
'edit'
]
=
array_merge
(
[
'wikimedia-flow-terms-of-use-edit'
],
$links
);
$messages
[
'lock-topic'
]
=
array_merge
(
[
'wikimedia-flow-terms-of-use-lock-topic'
],
$links
);
$messages
[
'new-topic'
]
=
array_merge
(
[
'wikimedia-flow-terms-of-use-new-topic'
],
$links
);
$messages
[
'reply'
]
=
array_merge
(
[
'wikimedia-flow-terms-of-use-reply'
],
$links
);
$messages
[
'summarize'
]
=
array_merge
(
[
'wikimedia-flow-terms-of-use-summarize'
],
$links
);
$messages
[
'unlock-topic'
]
=
array_merge
(
[
'wikimedia-flow-terms-of-use-unlock-topic'
],
$links
);
}
/**
* Add links to the footer of every page:
* - "Developers" (T35464),
* - "Statistics" (T235803), and
* - "Cookie statement" (T124366)
*
* @see https://www.mediawiki.org/wiki/Manual:Hooks/SkinAddFooterLinks
*
* @param Skin $skin
* @param string $key
* @param array &$footerLinks
*/
/*
Not relevant to WickedGov --2025-04-15*/
public
function
onSkinAddFooterLinks
(
Skin
$skin
,
string
$key
,
array
&
$footerLinks
)
{
return
;
if
(
$key
!==
'places'
)
{
return
;
}
$devDestination
=
Skin
::
makeInternalOrExternalUrl
(
$skin
->
msg
(
'wikimedia-developers-url'
)->
inContentLanguage
()->
text
()
);
$footerLinks
[
'developers'
]
=
Html
::
element
(
'a'
,
[
'href'
=>
$devDestination
],
$skin
->
msg
(
'wikimedia-developers'
)->
text
()
);
$statsDestination
=
Skin
::
makeInternalOrExternalUrl
(
$skin
->
msg
(
'wikimedia-statslink-url'
,
$skin
->
getConfig
()->
get
(
'ServerName'
)
)->
inContentLanguage
()->
text
()
);
$footerLinks
[
'statslink'
]
=
Html
::
element
(
'a'
,
[
'href'
=>
$statsDestination
],
$skin
->
msg
(
'wikimedia-statslink'
)->
text
()
);
$cookieDestination
=
Skin
::
makeInternalOrExternalUrl
(
$skin
->
msg
(
'wikimedia-cookiestatement-page'
)->
inContentLanguage
()->
text
()
);
$footerLinks
[
'cookiestatement'
]
=
Html
::
element
(
'a'
,
[
'href'
=>
$cookieDestination
],
$skin
->
msg
(
'wikimedia-cookiestatement'
)->
text
()
);
}
/**
* Change which message is shown when TorBlock triggers (TorBlock extension)
*
* @todo FIXME: Should have a specific message for WMF projects (T44231)
*
* @todo once TorBlock updates to use hook interfaces that can be implemented,
* convert to using this class as a hook handler and make non-static with DI
*
* @param string &$msg The message key
*/
public
static
function
onTorBlockBlockedMsg
(
&
$msg
)
{
$msg
=
'wikimedia-torblock-blocked'
;
}
/**
* Require the creation of MediaWiki:Licenses to enable uploading.
* This should prevent a lot of uploading without licenses on small wikis;
* some or many of the small WMF wikis do not have any license options,
* which is really needed for our copyright policy.
*
* Do not require it when licenses is in $wgForceUIMsgAsContentMsg,
* to prevent checking each subpage of MediaWiki:Licenses.
*
* @param SpecialUpload $upload
* @throws ErrorPageError
*/
public
function
onUploadForm_initial
(
$upload
)
{
$forceUIMsgAsContentMsg
=
$this
->
options
->
get
(
MainConfigNames
::
ForceUIMsgAsContentMsg
);
// TODO inject something to replace use of wfMessage
if
(
!
in_array
(
'licenses'
,
$forceUIMsgAsContentMsg
)
&&
wfMessage
(
'licenses'
)->
inContentLanguage
()->
isDisabled
()
)
{
throw
new
ErrorPageError
(
'uploaddisabled'
,
'wikimedia-upload-nolicenses'
);
}
}
/**
* Override `$wgGrammarForms` for Wikimedia sites as a more convenient form
* than setting in InitialiseSettings.php. Initial version was compiled from
* then-current Wikimedia configuration and contents of LanguageXx.php.
*/
public
static
function
onRegistration
()
{
global
$wgGrammarForms
;
$wgGrammarForms
[
'ang'
]
=
[
// accusative
'wrēgendlīc'
=>
[
'Wikipǣdia'
=>
'Wikipǣdie'
,
'Wikiwordbōc'
=>
'Wikiwordbōc'
,
],
// genitive
'geāgniendlīc'
=>
[
'Wikipǣdia'
=>
'Wikipǣdie'
,
'Wikiwordbōc'
=>
'Wikiwordbēc'
,
],
// dative
'forgifendlīc'
=>
[
'Wikipǣdia'
=>
'Wikipǣdie'
,
'Wikiwordbōc'
=>
'Wikiwordbēc'
,
],
// instrumental
'tōllīc'
=>
[
'Wikipǣdia'
=>
'Wikipǣdie'
,
'Wikiwordbōc'
=>
'Wikiwordbēc'
,
],
];
$wgGrammarForms
[
'be'
]
=
[
// genitive
'родны'
=>
[
'Віківіды'
=>
'Віківідаў'
,
'Вікіданыя'
=>
'Вікіданых'
,
'Вікікнігі'
=>
'Вікікніг'
,
'Вікікрыніцы'
=>
'Вікікрыніц'
,
'Вікінавіны'
=>
'Вікінавін'
,
'Вікіслоўнік'
=>
'Вікіслоўніка'
,
'Вікіпедыя'
=>
'Вікіпедыі'
,
],
// accusative
'вінавальны'
=>
[
'Вікіпедыя'
=>
'Вікіпедыю'
,
],
// prepositional
'месны'
=>
[
'Віківіды'
=>
'Віківідах'
,
'Вікіданыя'
=>
'Вікіданых'
,
'Вікікнігі'
=>
'Вікікнігах'
,
'Вікікрыніцы'
=>
'Вікікрыніцах'
,
'Вікінавіны'
=>
'Вікінавінах'
,
'Вікіслоўнік'
=>
'Вікіслоўніку'
,
'Вікіпедыя'
=>
'Вікіпедыі'
,
],
];
$wgGrammarForms
[
'be-tarask'
]
=
[
// genitive
'родны'
=>
[
'Віківіды'
=>
'Віківідаў'
,
'Вікізьвесткі'
=>
'Вікізьвестак'
,
'Вікікнігі'
=>
'Вікікніг'
,
'Вікікрыніцы'
=>
'Вікікрыніц'
,
'Вікімэдыя'
=>
'Вікімэдыі'
,
'Вікінавіны'
=>
'Вікінавін'
,
'Вікіпэдыя'
=>
'Вікіпэдыі'
,
'Вікіслоўнік'
=>
'Вікіслоўніка'
,
'Вікісховішча'
=>
'Вікісховішча'
,
'Фундацыя «Вікімэдыя»'
=>
'Фундацыі «Вікімэдыя»'
,
],
// dative
'давальны'
=>
[
'Віківіды'
=>
'Віківідам'
,
'Вікізьвесткі'
=>
'Вікізьвесткам'
,
'Вікікнігі'
=>
'Вікікнігам'
,
'Вікікрыніцы'
=>
'Вікікрыніцам'
,
'Вікімэдыя'
=>
'Вікімэдыі'
,
'Вікінавіны'
=>
'Вікінавінам'
,
'Вікіпэдыя'
=>
'Вікіпэдыі'
,
'Вікіслоўнік'
=>
'Вікіслоўніку'
,
'Вікісховішча'
=>
'Вікісховішчу'
,
'Фундацыя «Вікімэдыя»'
=>
'Фундацыі «Вікімэдыя»'
,
],
// accusative
'вінавальны'
=>
[
'Віківіды'
=>
'Віківіды'
,
'Вікізьвесткі'
=>
'Вікізьвесті'
,
'Вікікнігі'
=>
'Вікікнігі'
,
'Вікікрыніцы'
=>
'Вікікрыніцы'
,
'Вікімэдыя'
=>
'Вікімэдыю'
,
'Вікінавіны'
=>
'Вікінавіны'
,
'Вікіпэдыя'
=>
'Вікіпэдыю'
,
'Вікіслоўнік'
=>
'Вікіслоўнік'
,
'Вікісховішча'
=>
'Вікісховішча'
,
'Фундацыя «Вікімэдыя»'
=>
'Фундацыю «Вікімэдыя»'
,
],
// instrumental
'творны'
=>
[
'Віківіды'
=>
'Віківідамі'
,
'Вікізьвесткі'
=>
'Вікізьвесткамі'
,
'Вікікнігі'
=>
'Вікікнігамі'
,
'Вікікрыніцы'
=>
'Вікікрыніцамі'
,
'Вікімэдыя'
=>
'Вікімэдыяй'
,
'Вікінавіны'
=>
'Вікінавінамі'
,
'Вікіпэдыя'
=>
'Вікіпэдыяй'
,
'Вікіслоўнік'
=>
'Вікіслоўнікам'
,
'Вікісховішча'
=>
'Вікісховішчам'
,
'Фундацыя «Вікімэдыя»'
=>
'Фундацыяй «Вікімэдыя»'
,
],
// prepositional
'месны'
=>
[
'Віківіды'
=>
'Віківідах'
,
'Вікізьвесткі'
=>
'Вікізьвестках'
,
'Вікікнігі'
=>
'Вікікнігах'
,
'Вікікрыніцы'
=>
'Вікікрыніцах'
,
'Вікімэдыя'
=>
'Вікімэдыі'
,
'Вікінавіны'
=>
'Вікінавінах'
,
'Вікіпэдыя'
=>
'Вікіпэдыі'
,
'Вікіслоўнік'
=>
'Вікіслоўніку'
,
'Вікісховішча'
=>
'Вікісховішчы'
,
'Фундацыя «Вікімэдыя»'
=>
'Фундацыі «Вікімэдыя»'
,
],
];
$wgGrammarForms
[
'bs'
]
=
[
// genitive
'genitiv'
=>
[
'Vikirječnik'
=>
'Wikirječnika'
,
'Wikicitati'
=>
'Wikicitata'
,
'Wikiizvor'
=>
'Wikiizvora'
,
'Wikiknjige'
=>
'Wikiknjiga'
,
'Wikipedia'
=>
'Wikipedije'
,
'Wikipodaci'
=>
'Wikipodataka'
,
'Wikimedia Commons'
=>
'Wikimedia Commonsa'
,
],
// dative
'dativ'
=>
[
'Vikirječnik'
=>
'Wikirječniku'
,
'Wikicitati'
=>
'Wikicitatima'
,
'Wikiizvor'
=>
'Wikiizvoru'
,
'Wikiknjige'
=>
'Wikiknjigama'
,
'Wikipedia'
=>
'Wikipediji'
,
'Wikipodaci'
=>
'Wikipodacima'
,
'Wikivijesti'
=>
'Wikivijestima'
,
'Wikimedia Commons'
=>
'Wikimedia Commonsu'
,
],
// accusative
'akuzativ'
=>
[
'Vikirječnik'
=>
'Wikirječnik'
,
'Wikicitati'
=>
'Wikicitate'
,
'Wikiizvor'
=>
'Wikiizvora'
,
'Wikipedia'
=>
'Wikipediju'
,
'Wikipodaci'
=>
'Wikipodatke'
,
],
// vocative
'vokativ'
=>
[
'Vikirječnik'
=>
'Wikirječniče'
,
'Wikiizvor'
=>
'Wikizivoru'
,
'Wikipedia'
=>
'Wikipedijo'
,
'Wikimedia Commons'
=>
'Wikimedia Commonse'
,
],
// instrumental
'instrumental'
=>
[
'Vikirječnik'
=>
'Wikirječnikom'
,
'Wikicitati'
=>
'Wikicitatima'
,
'Wikiizvor'
=>
'Wikiizvorom'
,
'Wikiknjige'
=>
'Wikiknjigama'
,
// T130141
'Wikipedia'
=>
'Wikipedijom'
,
'Wikipodaci'
=>
'Wikipodacima'
,
'Wikivijesti'
=>
'Wikivijestima'
,
'Wikimedia Commons'
=>
'Wikimedia Commonsom'
,
],
// locative
'lokativ'
=>
[
'Vikirječnik'
=>
'Wikirječniku'
,
'Wikicitati'
=>
'Wikicitatima'
,
'Wikiizvor'
=>
'Wikiizvoru'
,
'Wikiknjige'
=>
'Wikiknjigama'
,
'Wikipedia'
=>
'Wikipediji'
,
'Wikipodaci'
=>
'Wikipodacima'
,
'Wikivijesti'
=>
'Wikivijestima'
,
'Wikimedia Commons'
=>
'Wikimedia Commonsu'
,
],
];
$wgGrammarForms
[
'cs'
]
=
[
// only forms different than default/given
'1sg'
=>
[
'Wikibooks'
=>
'Wikiknihy'
,
'Wikifunctions'
=>
'Wikifunkce'
,
'Wikinews'
=>
'Wikizprávy'
,
'Wikipedia'
=>
'Wikipedie'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroje'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzita'
,
'Wikivoyage'
=>
'Wikicesty'
,
'Wiktionary'
=>
'Wikislovník'
,
],
'2sg'
=>
[
'uživatel'
=>
'uživatele'
,
'Wikibooks'
=>
'Wikiknih'
,
'Wikidata'
=>
'Wikidat'
,
'Wikifunctions'
=>
'Wikifunkcí'
,
'Wikinews'
=>
'Wikizpráv'
,
'Wikipedia'
=>
'Wikipedie'
,
'Wikiquote'
=>
'Wikicitátů'
,
'Wikisource'
=>
'Wikizdrojů'
,
'Wikispecies'
=>
'Wikidruhů'
,
'Wikiversity'
=>
'Wikiverzity'
,
'Wikivoyage'
=>
'Wikicest'
,
'Wiktionary'
=>
'Wikislovníku'
,
'Wikicesty'
=>
'Wikicest'
,
'Wikicitáty'
=>
'Wikicitátů'
,
'Wikidruhy'
=>
'Wikidruhů'
,
'Wikifunkce'
=>
'Wikifunkcí'
,
'Wikiknihy'
=>
'Wikiknih'
,
'Wikislovník'
=>
'Wikislovníku'
,
'Wikiverzita'
=>
'Wikiverzity'
,
'Wikizdroje'
=>
'Wikizdrojů'
,
'Wikizprávy'
=>
'Wikizpráv'
,
],
'3sg'
=>
[
'uživatel'
=>
'uživateli'
,
'Wikibooks'
=>
'Wikiknihám'
,
'Wikidata'
=>
'Wikidatům'
,
'Wikifunctions'
=>
'Wikifunkcím'
,
'Wikinews'
=>
'Wikizprávám'
,
'Wikipedia'
=>
'Wikipedii'
,
'Wikiquote'
=>
'Wikicitátům'
,
'Wikisource'
=>
'Wikizdrojům'
,
'Wikispecies'
=>
'Wikidruhům'
,
'Wikiversity'
=>
'Wikiverzitě'
,
'Wikivoyage'
=>
'Wikicestám'
,
'Wiktionary'
=>
'Wikislovníku'
,
'Wikicesty'
=>
'Wikicestám'
,
'Wikicitáty'
=>
'Wikicitátům'
,
'Wikidruhy'
=>
'Wikidruhům'
,
'Wikifunkce'
=>
'Wikifunkcím'
,
'Wikiknihy'
=>
'Wikiknihám'
,
'Wikipedie'
=>
'Wikipedii'
,
'Wikislovník'
=>
'Wikislovníku'
,
'Wikiverzita'
=>
'Wikiverzitě'
,
'Wikizdroje'
=>
'Wikizdrojům'
,
'Wikizprávy'
=>
'Wikizprávám'
,
],
'4sg'
=>
[
'uživatel'
=>
'uživatele'
,
'Wikibooks'
=>
'Wikiknihy'
,
'Wikifunctions'
=>
'Wikifunkce'
,
'Wikinews'
=>
'Wikizprávy'
,
'Wikipedia'
=>
'Wikipedii'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroje'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzitu'
,
'Wikivoyage'
=>
'Wikicesty'
,
'Wiktionary'
=>
'Wikislovník'
,
'Wikipedie'
=>
'Wikipedii'
,
'Wikiverzita'
=>
'Wikiverzitu'
,
],
'5sg'
=>
[
'uživatel'
=>
'uživateli'
,
'Wikibooks'
=>
'Wikiknihy'
,
'Wikifunctions'
=>
'Wikifunkce'
,
'Wikinews'
=>
'Wikizprávy'
,
'Wikipedia'
=>
'Wikipedie'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroje'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzito'
,
'Wikivoyage'
=>
'Wikicesty'
,
'Wiktionary'
=>
'Wikislovníku'
,
'Wikislovník'
=>
'Wikislovníku'
,
'Wikiverzita'
=>
'Wikiverzito'
,
],
'6sg'
=>
[
'uživatel'
=>
'uživateli'
,
'Wikibooks'
=>
'Wikiknihách'
,
'Wikidata'
=>
'Wikidatech'
,
'Wikifunctions'
=>
'Wikifunkcích'
,
'Wikinews'
=>
'Wikizprávách'
,
'Wikipedia'
=>
'Wikipedii'
,
'Wikiquote'
=>
'Wikicitátech'
,
'Wikisource'
=>
'Wikizdrojích'
,
'Wikispecies'
=>
'Wikidruzích'
,
'Wikiversity'
=>
'Wikiverzitě'
,
'Wikivoyage'
=>
'Wikicestách'
,
'Wiktionary'
=>
'Wikislovníku'
,
'Wikicesty'
=>
'Wikicestách'
,
'Wikicitáty'
=>
'Wikicitátech'
,
'Wikidruhy'
=>
'Wikidruzích'
,
'Wikifunkce'
=>
'Wikifunkcích'
,
'Wikiknihy'
=>
'Wikiknihách'
,
'Wikipedie'
=>
'Wikipedii'
,
'Wikislovník'
=>
'Wikislovníku'
,
'Wikiverzita'
=>
'Wikiverzitě'
,
'Wikizdroje'
=>
'Wikizdrojích'
,
'Wikizprávy'
=>
'Wikizprávách'
,
],
'7sg'
=>
[
'uživatel'
=>
'uživatelem'
,
'Wikibooks'
=>
'Wikiknihami'
,
'Wikidata'
=>
'Wikidaty'
,
'Wikifunctions'
=>
'Wikifunkcemi'
,
'Wikinews'
=>
'Wikizprávami'
,
'Wikipedia'
=>
'Wikipedií'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroji'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzitou'
,
'Wikivoyage'
=>
'Wikicestami'
,
'Wiktionary'
=>
'Wikislovníkem'
,
'Wikicesty'
=>
'Wikicestami'
,
'Wikifunkce'
=>
'Wikifunkcemi'
,
'Wikiknihy'
=>
'Wikiknihami'
,
'Wikipedie'
=>
'Wikipedií'
,
'Wikislovník'
=>
'Wikislovníkem'
,
'Wikiverzita'
=>
'Wikiverzitou'
,
'Wikizdroje'
=>
'Wikizdroji'
,
'Wikizprávy'
=>
'Wikizprávami'
,
],
'1pl'
=>
[
'uživatel'
=>
'uživatelé'
,
'Wikibooks'
=>
'Wikiknihy'
,
'Wikifunctions'
=>
'Wikifunkce'
,
'Wikinews'
=>
'Wikizprávy'
,
'Wikipedia'
=>
'Wikipedie'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroje'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzity'
,
'Wikivoyage'
=>
'Wikicesty'
,
'Wiktionary'
=>
'Wikislovníky'
,
'Wikislovník'
=>
'Wikislovníky'
,
'Wikiverzita'
=>
'Wikiverzity'
,
],
'2pl'
=>
[
'uživatel'
=>
'uživatelů'
,
'Wikibooks'
=>
'Wikiknih'
,
'Wikidata'
=>
'Wikidat'
,
'Wikifunctions'
=>
'Wikifunkcí'
,
'Wikinews'
=>
'Wikizpráv'
,
'Wikipedia'
=>
'Wikipedií'
,
'Wikiquote'
=>
'Wikicitátů'
,
'Wikisource'
=>
'Wikizdrojů'
,
'Wikispecies'
=>
'Wikidruhů'
,
'Wikiversity'
=>
'Wikiverzit'
,
'Wikivoyage'
=>
'Wikicest'
,
'Wiktionary'
=>
'Wikislovníků'
,
'Wikicesty'
=>
'Wikicest'
,
'Wikicitáty'
=>
'Wikicitátů'
,
'Wikidruhy'
=>
'Wikidruhů'
,
'Wikifunkce'
=>
'Wikifunkcí'
,
'Wikiknihy'
=>
'Wikiknih'
,
'Wikipedie'
=>
'Wikipedií'
,
'Wikislovník'
=>
'Wikislovníků'
,
'Wikiverzita'
=>
'Wikiverzit'
,
'Wikizdroje'
=>
'Wikizdrojů'
,
'Wikizprávy'
=>
'Wikizpráv'
,
],
'3pl'
=>
[
'uživatel'
=>
'uživatelům'
,
'Wikibooks'
=>
'Wikiknihám'
,
'Wikidata'
=>
'Wikidatům'
,
'Wikifunctions'
=>
'Wikifunkcím'
,
'Wikinews'
=>
'Wikizprávám'
,
'Wikipedia'
=>
'Wikipediím'
,
'Wikiquote'
=>
'Wikicitátům'
,
'Wikisource'
=>
'Wikizdrojům'
,
'Wikispecies'
=>
'Wikidruhům'
,
'Wikiversity'
=>
'Wikiverzitám'
,
'Wikivoyage'
=>
'Wikicestám'
,
'Wiktionary'
=>
'Wikislovníkům'
,
'Wikicesty'
=>
'Wikicestám'
,
'Wikicitáty'
=>
'Wikicitátům'
,
'Wikidruhy'
=>
'Wikidruhům'
,
'Wikifunkce'
=>
'Wikifunkcím'
,
'Wikiknihy'
=>
'Wikiknihám'
,
'Wikipedie'
=>
'Wikipediím'
,
'Wikislovník'
=>
'Wikislovníkům'
,
'Wikiverzita'
=>
'Wikiverzitám'
,
'Wikizdroje'
=>
'Wikizdrojům'
,
'Wikizprávy'
=>
'Wikizprávám'
,
],
'4pl'
=>
[
'uživatel'
=>
'uživatele'
,
'Wikibooks'
=>
'Wikiknihy'
,
'Wikifunctions'
=>
'Wikifunkce'
,
'Wikinews'
=>
'Wikizprávy'
,
'Wikipedia'
=>
'Wikipedie'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroje'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzity'
,
'Wikivoyage'
=>
'Wikicesty'
,
'Wiktionary'
=>
'Wikislovníky'
,
'Wikislovník'
=>
'Wikislovníky'
,
'Wikiverzita'
=>
'Wikiverzity'
,
],
'5pl'
=>
[
'uživatel'
=>
'uživatelé'
,
'Wikibooks'
=>
'Wikiknihy'
,
'Wikifunctions'
=>
'Wikifunkce'
,
'Wikinews'
=>
'Wikizprávy'
,
'Wikipedia'
=>
'Wikipedie'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroje'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzity'
,
'Wikivoyage'
=>
'Wikicesty'
,
'Wiktionary'
=>
'Wikislovníky'
,
'Wikislovník'
=>
'Wikislovníky'
,
'Wikiverzita'
=>
'Wikiverzity'
,
],
'6pl'
=>
[
'uživatel'
=>
'uživatelích'
,
'Wikibooks'
=>
'Wikiknihách'
,
'Wikidata'
=>
'Wikidatech'
,
'Wikifunctions'
=>
'Wikifunkcích'
,
'Wikinews'
=>
'Wikizprávách'
,
'Wikipedia'
=>
'Wikipediích'
,
'Wikiquote'
=>
'Wikicitátech'
,
'Wikisource'
=>
'Wikizdrojích'
,
'Wikispecies'
=>
'Wikidruzích'
,
'Wikiversity'
=>
'Wikiverzitách'
,
'Wikivoyage'
=>
'Wikicestách'
,
'Wiktionary'
=>
'Wikislovnících'
,
'Wikicesty'
=>
'Wikicestách'
,
'Wikicitáty'
=>
'Wikicitátech'
,
'Wikidruhy'
=>
'Wikidruzích'
,
'Wikifunkce'
=>
'Wikifunkcích'
,
'Wikiknihy'
=>
'Wikiknihách'
,
'Wikipedie'
=>
'Wikipediích'
,
'Wikislovník'
=>
'Wikislovnících'
,
'Wikiverzita'
=>
'Wikiverzitách'
,
'Wikizdroje'
=>
'Wikizdrojích'
,
'Wikizprávy'
=>
'Wikizprávách'
,
],
'7pl'
=>
[
'uživatel'
=>
'uživateli'
,
'Wikibooks'
=>
'Wikiknihami'
,
'Wikidata'
=>
'Wikidaty'
,
'Wikifunctions'
=>
'Wikifunkcemi'
,
'Wikinews'
=>
'Wikizprávami'
,
'Wikipedia'
=>
'Wikipediemi'
,
'Wikiquote'
=>
'Wikicitáty'
,
'Wikisource'
=>
'Wikizdroji'
,
'Wikispecies'
=>
'Wikidruhy'
,
'Wikiversity'
=>
'Wikiverzitami'
,
'Wikivoyage'
=>
'Wikicestami'
,
'Wiktionary'
=>
'Wikislovníky'
,
'Wikicesty'
=>
'Wikicestami'
,
'Wikifunkce'
=>
'Wikifunkcemi'
,
'Wikiknihy'
=>
'Wikiknihami'
,
'Wikipedie'
=>
'Wikipediemi'
,
'Wikislovník'
=>
'Wikislovníky'
,
'Wikiverzita'
=>
'Wikiverzitami'
,
'Wikizdroje'
=>
'Wikizdroji'
,
'Wikizprávy'
=>
'Wikizprávami'
,
],
];
$wgGrammarForms
[
'dsb'
]
=
[
// genitive
'genitiw'
=>
[
'Wikipedija'
=>
'Wikipedije'
,
'Wikiknihi'
=>
'Wikiknih'
,
'Wikinowiny'
=>
'Wikinowin'
,
'Wikižórło'
=>
'Wikižórła'
,
'Wikicitaty'
=>
'Wikicitatow'
,
'Wikisłownik'
=>
'Wikisłownika'
,
],
// dative
'datiw'
=>
[
'Wikipedija'
=>
'Wikipediji'
,
'Wikiknihi'
=>
'Wikikniham'
,
'Wikinowiny'
=>
'Wikinowinam'
,
'Wikižórło'
=>
'Wikižórłu'
,
'Wikicitaty'
=>
'Wikicitatam'
,
'Wikisłownik'
=>
'Wikisłownikej'
,
],
// accusative
'akuzativ'
=>
[
'Wikipedija'
=>
'Wikipediju'
,
'Wikiknihi'
=>
'Wikiknknihi'
,
],
// instrumental
'instrumental'
=>
[
'Wikipedija'
=>
'Wikipediju'
,
'Wikiknihi'
=>
'Wikiknihami'
,
'Wikinowiny'
=>
'Wikinowinami'
,
'Wikižórło'
=>
'Wikižórłom'
,
'Wikicitaty'
=>
'Wikicitatami'
,
'Wikisłownik'
=>
'Wikisłownikom'
,
],
// locative
'lokatiw'
=>
[
'Wikipedija'
=>
'Wikipediji'
,
'Wikiknihi'
=>
'Wikiknihach'
,
'Wikinowiny'
=>
'Wikinowinach'
,
'Wikižórło'
=>
'Wikižórłu'
,
'Wikicitaty'
=>
'Wikicitatach'
,
'Wikisłownik'
=>
'Wikisłowniku'
,
],
];
$wgGrammarForms
[
'et'
]
=
[
'genitive'
=>
[
'Vikisõnastik'
=>
'Vikisõnastiku'
,
'Vikitekstid'
=>
'Vikitekstide'
,
'Vikitsitaadid'
=>
'Vikitsitaatide'
,
'Vikiõpikud'
=>
'Vikiõpikute'
,
],
'partitive'
=>
[
'Vikipeedia'
=>
'Vikipeediat'
,
'Vikisõnastik'
=>
'Vikisõnastikku'
,
'Vikitekstid'
=>
'Vikitekste'
,
'Vikitsitaadid'
=>
'Vikitsitaate'
,
'Vikiõpikud'
=>
'Vikiõpikuid'
,
],
'illative'
=>
[
'Vikipeedia'
=>
'Vikipeediasse'
,
'Vikisõnastik'
=>
'Vikisõnastikku'
,
'Vikitekstid'
=>
'Vikitekstidesse'
,
'Vikitsitaadid'
=>
'Vikitsitaatidesse'
,
'Vikiõpikud'
=>
'Vikiõpikutesse'
,
],
'inessive'
=>
[
'Vikipeedia'
=>
'Vikipeedias'
,
'Vikisõnastik'
=>
'Vikisõnastikus'
,
'Vikitekstid'
=>
'Vikitekstides'
,
'Vikitsitaadid'
=>
'Vikitsitaatides'
,
'Vikiõpikud'
=>
'Vikiõpikutes'
,
],
'elative'
=>
[
'Vikipeedia'
=>
'Vikipeediast'
,
'Vikisõnastik'
=>
'Vikisõnastikust'
,
'Vikitekstid'
=>
'Vikitekstidest'
,
'Vikitsitaadid'
=>
'Vikitsitaatidest'
,
'Vikiõpikud'
=>
'Vikiõpikutest'
,
],
];
$wgGrammarForms
[
'fi'
]
=
[
'genitive'
=>
[
'Wikiuutiset'
=>
'Wikiuutisten'
,
'Wikisitaatit'
=>
'Wikisitaattien'
,
'Wikimedia Suomi'
=>
'Wikimedia Suomen'
,
'Wikimatkat'
=>
'Wikimatkojen'
,
],
'partitive'
=>
[
'Wikiuutiset'
=>
'Wikiuutisia'
,
'Wikisitaatit'
=>
'Wikisitaatteja'
,
'Wikimedia Suomi'
=>
'Wikimedia Suomea'
,
'Wikimatkat'
=>
'Wikimatkoja'
,
],
'elative'
=>
[
'Wikiuutiset'
=>
'Wikiuutisista'
,
'Wikisitaatit'
=>
'Wikisitaateista'
,
'Wikimedia Suomi'
=>
'Wikimedia Suomesta'
,
'Wikimatkat'
=>
'Wikimatkoista'
,
],
'inessive'
=>
[
'Wikiuutiset'
=>
'Wikiuutisissa'
,
'Wikisitaatit'
=>
'Wikisitaateissa'
,
'Wikimedia Suomi'
=>
'Wikimedia Suomessa'
,
'Wikimatkat'
=>
'Wikimatkoissa'
,
],
'illative'
=>
[
'Wikiuutiset'
=>
'Wikiuutisiin'
,
'Wikisitaatit'
=>
'Wikisitaatteihin'
,
'Wikimedia Suomi'
=>
'Wikimedia Suomeen'
,
'Wikimatkat'
=>
'Wikimatkoihin'
,
],
];
$wgGrammarForms
[
'ga'
]
=
[
'genitive'
=>
[
'Vicipéid'
=>
'Vicipéide'
,
'Vicífhoclóir'
=>
'Vicífhoclóra'
,
'Vicíleabhair'
=>
'Vicíleabhar'
,
'Vicíshliocht'
=>
'Vicíshleachta'
,
'Vicífhoinse'
=>
'Vicífhoinse'
,
'Vicíghnéithe'
=>
'Vicíghnéithe'
,
'Vicínuacht'
=>
'Vicínuachta'
,
],
];
$wgGrammarForms
[
'gsw'
]
=
[
// dative
'dativ'
=>
[
'Wikipedia'
=>
'vo de Wikipedia'
,
'Wikinorchrichte'
=>
'vo de Wikinochrichte'
,
'Wiktionaire'
=>
'vom Wiktionaire'
,
'Wikibuecher'
=>
'vo de Wikibuecher'
,
'Wikisprüch'
=>
'vo de Wikisprüch'
,
'Wikiquälle'
=>
'vo de Wikiquälle'
,
],
// accusative
'akkusativ'
=>
[
'Wikipedia'
=>
'd Wikipedia'
,
'Wikinorchrichte'
=>
'd Wikinorchrichte'
,
'Wiktionaire'
=>
's Wiktionaire'
,
'Wikibuecher'
=>
'd Wikibuecher'
,
'Wikisprüch'
=>
'd Wikisprüch'
,
'Wikiquälle'
=>
'd Wikiquälle'
,
],
// nominative
'nominativ'
=>
[
'Wikipedia'
=>
'd Wikipedia'
,
'Wikinorchrichte'
=>
'd Wikinorchrichte'
,
'Wiktionaire'
=>
's Wiktionaire'
,
'Wikibuecher'
=>
'd Wikibuecher'
,
'Wikisprüch'
=>
'd Wikisprüch'
,
'Wikiquälle'
=>
'd Wikiquälle'
,
],
];
$wgGrammarForms
[
'hsb'
]
=
[
// genitive
'genitiw'
=>
[
'Wikipedija'
=>
'Wikipedije'
,
'Wikiknihi'
=>
'Wikiknih'
,
'Wikinowiny'
=>
'Wikinowin'
,
'Wikižórło'
=>
'Wikižórła'
,
'Wikicitaty'
=>
'Wikicitatow'
,
'Wikisłownik'
=>
'Wikisłownika'
,
],
// dative
'datiw'
=>
[
'Wikipedija'
=>
'Wikipediji'
,
'Wikiknihi'
=>
'Wikikniham'
,
'Wikinowiny'
=>
'Wikinowinam'
,
'Wikižórło'
=>
'Wikižórłu'
,
'Wikicitaty'
=>
'Wikicitatam'
,
'Wikisłownik'
=>
'Wikisłownikej'
,
],
// accusative
'akuzativ'
=>
[
'Wikipedija'
=>
'Wikipediju'
,
'Wikiknihi'
=>
'Wikiknknihi'
,
],
// instrumental
'instrumental'
=>
[
'Wikipedija'
=>
'Wikipediju'
,
'Wikiknihi'
=>
'Wikiknihami'
,
'Wikinowiny'
=>
'Wikinowinami'
,
'Wikižórło'
=>
'Wikižórłom'
,
'Wikicitaty'
=>
'Wikicitatami'
,
'Wikisłownik'
=>
'Wikisłownikom'
,
],
// locative
'lokatiw'
=>
[
'Wikipedija'
=>
'Wikipediji'
,
'Wikiknihi'
=>
'Wikiknihach'
,
'Wikinowiny'
=>
'Wikinowinach'
,
'Wikižórło'
=>
'Wikižórłu'
,
'Wikicitaty'
=>
'Wikicitatach'
,
'Wikisłownik'
=>
'Wikisłowniku'
,
],
];
$wgGrammarForms
[
'hu'
]
=
[
'rol'
=>
[
'Wikipédia'
=>
'Wikipédiáról'
,
'Wikidézet'
=>
'Wikidézetről'
,
'Wikiszótár'
=>
'Wikiszótárról'
,
'Wikikönyvek'
=>
'Wikikönyvekről'
,
],
'ba'
=>
[
'Wikipédia'
=>
'Wikipédiába'
,
'Wikidézet'
=>
'Wikidézetbe'
,
'Wikiszótár'
=>
'Wikiszótárba'
,
'Wikikönyvek'
=>
'Wikikönyvekbe'
,
],
'k'
=>
[
'Wikipédia'
=>
'Wikipédiák'
,
'Wikidézet'
=>
'Wikidézetek'
,
'Wikiszótár'
=>
'Wikiszótárak'
,
],
];
// T289767
$wgGrammarForms
[
'ks'
]
=
[
// ergative
'کرٛاوَل'
=>
[
'وِکیٖلۄغَتھ'
=>
'وِکیٖلۄغتَن'
,
],
// dative
'دُکرٛٲوؠ'
=>
[
'وِکیٖلۄغَتھ'
=>
'وِکیٖلۄغتَس'
,
],
// ablative
'آیِتؠ'
=>
[
'وِکیٖلۄغَتھ'
=>
'وِکیٖلۄغتہٕ'
,
],
];
$wgGrammarForms
[
'la'
]
=
[
'genitive'
=>
[
'Vicimedia Communia'
=>
'Vicimediorum Communium'
,
],
'ablative'
=>
[
'Vicimedia Communia'
=>
'Vicimediis Communibus'
,
],
];
$wgGrammarForms
[
'lv'
]
=
[
'ģenitīvs'
=>
[
'Vikipēdija'
=>
'Vikipēdijas'
,
'Vikivārdnīca'
=>
'Vikivārdnīcas'
,
],
'datīvs'
=>
[
'Vikipēdija'
=>
'Vikipēdijai'
,
'Vikivārdnīca'
=>
'Vikivārdnīcai'
,
],
'akuzatīvs'
=>
[
'Vikipēdija'
=>
'Vikipēdiju'
,
'Vikivārdnīca'
=>
'Vikivārdnīcu'
,
],
'lokatīvs'
=>
[
'Vikipēdija'
=>
'Vikipēdijā'
,
'Vikivārdnīca'
=>
'Vikivārdnīcā'
,
],
];
$wgGrammarForms
[
'pl'
]
=
[
'D.lp'
=>
[
'Wikicytaty'
=>
'Wikicytatów'
,
'Wikipedia'
=>
'Wikipedii'
,
'Wikipodróże'
=>
'Wikipodróży'
,
'Wikisłownik'
=>
'Wikisłownika'
,
'Wikiźródła'
=>
'Wikiźródeł'
,
'Wikidane'
=>
'Wikidanych'
,
'Wikimania'
=>
'Wikimanii'
,
'Wikifunkcje'
=>
'Wikifunkcji'
,
],
'C.lp'
=>
[
'Wikicytaty'
=>
'Wikicytatom'
,
'Wikipedia'
=>
'Wikipedii'
,
'Wikipodróże'
=>
'Wikipodróżom'
,
'Wikisłownik'
=>
'Wikisłownikowi'
,
'Wikiźródła'
=>
'Wikiźródłom'
,
'Wikidane'
=>
'Wikidanym'
,
'Wikimania'
=>
'Wikimanii'
,
'Wikifunkcje'
=>
'Wikifunkcjom'
,
],
'B.lp'
=>
[
'Wikipedia'
=>
'Wikipedię'
,
'Wikimania'
=>
'Wikimanię'
,
],
'N.lp'
=>
[
'Wikicytaty'
=>
'Wikicytatami'
,
'Wikipedia'
=>
'Wikipedią'
,
'Wikipodróże'
=>
'Wikipodróżami'
,
'Wikisłownik'
=>
'Wikisłownikiem'
,
'Wikiźródła'
=>
'Wikiźródłami'
,
'Wikidane'
=>
'Wikidanymi'
,
'Wikimania'
=>
'Wikimanią'
,
'Wikifunkcje'
=>
'Wikifunkcjami'
,
],
'MS.lp'
=>
[
'Wikicytaty'
=>
'Wikicytatach'
,
'Wikipedia'
=>
'Wikipedii'
,
'Wikipodróże'
=>
'Wikipodróżach'
,
'Wikisłownik'
=>
'Wikisłowniku'
,
'Wikiźródła'
=>
'Wikiźródłach'
,
'Wikidane'
=>
'Wikidanych'
,
'Wikimania'
=>
'Wikimanii'
,
'Wikifunkcje'
=>
'Wikifunkcjach'
,
],
'W.lp'
=>
[
'Wikipedia'
=>
'Wikipedio'
,
'Wikisłownik'
=>
'Wikisłowniku'
,
'Wikimania'
=>
'Wikimanio'
,
],
];
$wgGrammarForms
[
'rmy'
]
=
[
// genitive (m.sg.)
'genitive-m-sg'
=>
[
'Vikipidiya'
=>
'Vikipidiyako'
,
'Vikcyonaro'
=>
'Vikcyonaresko'
,
],
// genitive (f.sg.)
'genitive-f-sg'
=>
[
'Vikipidiya'
=>
'Vikipidiyaki'
,
'Vikcyonaro'
=>
'Vikcyonareski'
,
],
// genitive (pl.)
'genitive-pl'
=>
[
'Vikipidiya'
=>
'Vikipidiyake'
,
'Vikcyonaro'
=>
'Vikcyonareske'
,
],
// dative
'dativ'
=>
[
'Vikipidiya'
=>
'Wikipediji'
,
'Vikcyonaro'
=>
'Vikcyonareske'
,
],
// locative
'locative'
=>
[
'Vikipidiya'
=>
'Wikipedijo'
,
'Vikcyonaro'
=>
'Vikcyonareste'
,
],
// ablative
'ablative'
=>
[
'Vikipidiya'
=>
'o Wikipediji'
,
'Vikcyonaro'
=>
'Vikcyonarestar'
,
],
// instrumental
'instrumental'
=>
[
'Vikipidiya'
=>
'z Wikipedijo'
,
'Vikcyonaro'
=>
'Vikcyonaresa'
,
],
];
$wgGrammarForms
[
'sk'
]
=
[
'genitív'
=>
[
'Wikipédia'
=>
'Wikipédie'
,
'Wikislovník'
=>
'Wikislovníku'
,
'Wikicitáty'
=>
'Wikicitátov'
,
'Wikiknihy'
=>
'Wikikníh'
,
],
'datív'
=>
[
'Wikipédia'
=>
'Wikipédii'
,
'Wikislovník'
=>
'Wikislovníku'
,
'Wikicitáty'
=>
'Wikicitátom'
,
'Wikiknihy'
=>
'Wikiknihám'
,
],
'akuzatív'
=>
[
'Wikipédia'
=>
'Wikipédiu'
,
'Wikislovník'
=>
'Wikislovník'
,
'Wikicitáty'
=>
'Wikicitáty'
,
'Wikiknihy'
=>
'Wikiknihy'
,
],
'lokál'
=>
[
'Wikipédia'
=>
'Wikipédii'
,
'Wikislovník'
=>
'Wikislovníku'
,
'Wikicitáty'
=>
'Wikicitátoch'
,
'Wikiknihy'
=>
'Wikiknihách'
,
],
'inštrumentál'
=>
[
'Wikipédia'
=>
'Wikipédiou'
,
'Wikislovník'
=>
'Wikislovníkom'
,
'Wikicitáty'
=>
'Wikicitátmi'
,
'Wikiknihy'
=>
'Wikiknihami'
,
],
];
$wgGrammarForms
[
'sl'
]
=
[
// genitive
'rodilnik'
=>
[
'Wikipedija'
=>
'Wikipedije'
,
'Wikiknjige'
=>
'Wikiknjig'
,
'Wikinovice'
=>
'Wikinovic'
,
'Wikinavedek'
=>
'Wikinavedka'
,
'Wikivir'
=>
'Wikivira'
,
'Wikislovar'
=>
'Wikislovarja'
,
],
// dative
'dajalnik'
=>
[
'Wikipedija'
=>
'Wikipediji'
,
'Wikiknjige'
=>
'Wikiknjigam'
,
'Wikinovice'
=>
'Wikinovicam'
,
'Wikinavedek'
=>
'Wikinavedku'
,
'Wikivir'
=>
'Wikiviru'
,
'Wikislovar'
=>
'Wikislovarju'
,
],
// accusative
'tožilnik'
=>
[
'Wikipedija'
=>
'Wikipedijo'
,
// no need to transform the others
],
// locative
'mestnik'
=>
[
'Wikipedija'
=>
'o Wikipediji'
,
'Wikiknjige'
=>
'o Wikiknjigah'
,
'Wikinovice'
=>
'o Wikinovicah'
,
'Wikinavedek'
=>
'o Wikinavedku'
,
'Wikivir'
=>
'o Wikiviru'
,
'Wikislovar'
=>
'o Wikislovarju'
,
],
// instrumental
'orodnik'
=>
[
'Wikipedija'
=>
'z Wikipedijo'
,
'Wikiknjige'
=>
'z Wikiknjigami'
,
'Wikinovice'
=>
'z Wikinovicami'
,
'Wikinavedek'
=>
'z Wikinavedkom'
,
'Wikivir'
=>
'z Wikivirom'
,
'Wikislovar'
=>
'z Wikislovarjem'
,
],
];
$wgGrammarForms
[
'sr-ec'
]
=
$wgGrammarForms
[
'sr-cyrl'
]
=
[
// genitive
'генитив'
=>
[
'Викиречник'
=>
'Викиречника'
,
'Викицитат'
=>
'Викицитата'
,
'Викизворник'
=>
'Викизворника'
,
'Викикњиге'
=>
'Викикњига'
,
'Википедија'
=>
'Википедије'
,
'Википодаци'
=>
'Википодатака'
,
'Викимедијина остава'
=>
'Викимедијине оставе'
,
'Викиверзитет'
=>
'Викиверзитета'
,
],
// dative
'датив'
=>
[
'Викиречник'
=>
'Викиречнику'
,
'Викицитат'
=>
'Викицитату'
,
'Викизворник'
=>
'Викизворнику'
,
'Викикњиге'
=>
'Викикњигама'
,
'Википедија'
=>
'Википедији'
,
'Википодаци'
=>
'Википодацима'
,
'Викиновости'
=>
'Викиновистима'
,
'Викимедијина остава'
=>
'Викимедијиној остави'
,
'Викиверзитет'
=>
'Викиверзитету'
,
],
// accusative
'акузатив'
=>
[
'Викиречник'
=>
'Викиречник'
,
'Викицитат'
=>
'Викицитат'
,
'Викизворник'
=>
'Викизворник'
,
'Википедија'
=>
'Википедију'
,
'Википодаци'
=>
'Википодатке'
,
],
// vocative
'вокатив'
=>
[
'Викиречник'
=>
'Викиречниче'
,
'Викизворник'
=>
'Викизворниче'
,
'Википедија'
=>
'Википедијо'
,
'Викимедијина остава'
=>
'Викимедијина оставо'
,
'Викиверзитет'
=>
'Викиверзитету'
,
],
// instrumental
'инструментал'
=>
[
'Викиречник'
=>
'Викиречником'
,
'Викицитат'
=>
'Викицитатом'
,
'Викизворник'
=>
'Викизворником'
,
'Викикњиге'
=>
'Викикњигама'
,
'Википедија'
=>
'Википедијом'
,
'Википодаци'
=>
'Википодацима'
,
'Викиновости'
=>
'Викиновостима'
,
'Викимедијина остава'
=>
'Викимедијином оставом'
,
'Викиверзитет'
=>
'Викиверзитетом'
,
],
// locative
'локатив'
=>
[
'Викиречник'
=>
'Викиречнику'
,
'Викицитат'
=>
'Викицитату'
,
'Викизворник'
=>
'Викизворнику'
,
'Викикњиге'
=>
'Викикњигама'
,
'Википедија'
=>
'Википедији'
,
'Википодаци'
=>
'Википодацима'
,
'Викиновости'
=>
'Викиновостима'
,
'Викимедијина остава'
=>
'Викимедијиној остави'
,
'Викиверзитет'
=>
'Викиверзитету'
,
],
];
$wgGrammarForms
[
'sr-el'
]
=
$wgGrammarForms
[
'sr-latn'
]
=
[
// genitive
'genitiv'
=>
[
'Vikirečnik'
=>
'Vikirečnika'
,
'Vikicitat'
=>
'Vikicitata'
,
'Vikizvornik'
=>
'Vikizvornika'
,
'Vikiknjige'
=>
'Vikiknjiga'
,
'Vikipedija'
=>
'Vikipedije'
,
'Vikipodaci'
=>
'Vikipodataka'
,
'Vikimedijina ostava'
=>
'Vikimedijine ostave'
,
'Vikiverzitet'
=>
'Vikiverziteta'
,
],
// dative
'dativ'
=>
[
'Vikirečnik'
=>
'Vikirečniku'
,
'Vikicitat'
=>
'Vikicitatu'
,
'Vikizvornik'
=>
'Vikizvorniku'
,
'Vikiknjige'
=>
'Vikiknjigama'
,
'Vikipedija'
=>
'Vikipediji'
,
'Vikipodaci'
=>
'Vikipodacima'
,
'Vikinovosti'
=>
'Vikinovostima'
,
'Vikimedijina ostava'
=>
'Vikimedijinoj ostavi'
,
'Vikiverzitet'
=>
'Vikiverzitetu'
,
],
// accusative
'akuzativ'
=>
[
'Vikirečnik'
=>
'Vikirečnik'
,
'Vikicitat'
=>
'Vikicitat'
,
'Vikizvornik'
=>
'Vikizvornik'
,
'Vikipedija'
=>
'Vikipediju'
,
'Vikipodaci'
=>
'Vikipodatke'
,
],
// vocative
'vokativ'
=>
[
'Vikirečnik'
=>
'Vikirečniče'
,
'Vikizvornik'
=>
'Vikizvorniče'
,
'Vikipedija'
=>
'Vikipedijo'
,
'Vikimedijina ostava'
=>
'Vikimedijina ostavo'
,
'Vikiverzitet'
=>
'Vikiverzitetu'
,
],
// instrumental
'instrumental'
=>
[
'Vikirečnik'
=>
'Vikirečnikom'
,
'Vikicitat'
=>
'Vikicitatom'
,
'Vikizvornik'
=>
'Vikizvornikom'
,
'Vikiknjige'
=>
'Vikiknjigama'
,
'Vikipedija'
=>
'Vikipedijom'
,
'Vikipodaci'
=>
'Vikipodacima'
,
'Vikinovosti'
=>
'Vikinovostima'
,
'Vikimedijina ostava'
=>
'Vikimedijinom ostavom'
,
'Vikiverzitet'
=>
'Vikiverzitetom'
,
],
// locative
'lokativ'
=>
[
'Vikirečnik'
=>
'Vikirečniku'
,
'Vikicitat'
=>
'Vikicitatu'
,
'Vikizvornik'
=>
'Vikizvorniku'
,
'Vikiknjige'
=>
'Vikiknjigama'
,
'Vikipedija'
=>
'Vikipediji'
,
'Vikipodaci'
=>
'Vikipodacima'
,
'Vikinovosti'
=>
'Vikinovostima'
,
'Vikimedijina ostava'
=>
'Vikimedijinoj ostavi'
,
'Vikiverzitet'
=>
'Vikiverzitetu'
,
],
];
$wgGrammarForms
[
'uk'
]
=
[
// genitive
'genitive'
=>
[
'Вікіпедія'
=>
'Вікіпедії'
,
'Вікісловник'
=>
'Вікісловника'
,
'Вікісховище'
=>
'Вікісховища'
,
'Вікіпідручник'
=>
'Вікіпідручника'
,
'Вікіцитати'
=>
'Вікіцитат'
,
'Вікіджерела'
=>
'Вікіджерел'
,
'Вікіновини'
=>
'Вікіновин'
,
'Вікідані'
=>
'Вікіданих'
,
'Вікімандри'
=>
'Вікімандрів'
,
],
// dative
'dative'
=>
[
'Вікіпедія'
=>
'Вікіпедії'
,
'Вікісловник'
=>
'Вікісловнику'
,
'Вікісховище'
=>
'Вікісховищу'
,
'Вікіпідручник'
=>
'Вікіпідручнику'
,
'Вікіцитати'
=>
'Вікіцитатам'
,
'Вікіджерела'
=>
'Вікіджерелам'
,
'Вікіновини'
=>
'Вікіновинам'
,
'Вікідані'
=>
'Вікіданим'
,
'Вікімандри'
=>
'Вікімандрам'
,
],
// accusative
'accusative'
=>
[
'Вікіпедія'
=>
'Вікіпедію'
,
'Вікісловник'
=>
'Вікісловник'
,
'Вікісховище'
=>
'Вікісховище'
,
'Вікіпідручник'
=>
'Вікіпідручник'
,
'Вікіцитати'
=>
'Вікіцитати'
,
'Вікіджерела'
=>
'Вікіджерела'
,
'Вікіновини'
=>
'Вікіновини'
,
'Вікідані'
=>
'Вікідані'
,
'Вікімандри'
=>
'Вікімандри'
,
],
// instrumental
'instrumental'
=>
[
'Вікіпедія'
=>
'Вікіпедією'
,
'Вікісловник'
=>
'Вікісловником'
,
'Вікісховище'
=>
'Вікісховищем'
,
'Вікіпідручник'
=>
'Вікіпідручником'
,
'Вікіцитати'
=>
'Вікіцитатами'
,
'Вікіджерела'
=>
'Вікіджерелами'
,
'Вікіновини'
=>
'Вікіновинами'
,
'Вікідані'
=>
'Вікіданими'
,
'Вікімандри'
=>
'Вікімандрами'
,
],
// locative
'locative'
=>
[
'Вікіпедія'
=>
'у Вікіпедії'
,
'Вікісловник'
=>
'у Вікісловнику'
,
'Вікісховище'
=>
'у Вікісховищі'
,
'Вікіпідручник'
=>
'у Вікіпідручнику'
,
'Вікіцитати'
=>
'у Вікіцитатах'
,
'Вікіджерела'
=>
'у Вікіджерелах'
,
'Вікіновини'
=>
'у Вікіновинах'
,
'Вікідані'
=>
'у Вікіданих'
,
'Вікімандри'
=>
'у Вікімандрах'
,
],
// vocative
'vocative'
=>
[
'Вікіпедія'
=>
'Вікіпедіє'
,
'Вікісловник'
=>
'Вікісловнику'
,
'Вікісховище'
=>
'Вікісховище'
,
'Вікіпідручник'
=>
'Вікіпідручнику'
,
'Вікіцитати'
=>
'Вікіцитати'
,
'Вікіджерела'
=>
'Вікіджерела'
,
'Вікіновини'
=>
'Вікіновини'
,
'Вікідані'
=>
'Вікідані'
,
'Вікімандри'
=>
'Вікімандри'
,
],
];
// Avoid weirdness if both extensions are loaded at the same time.
if
(
!
ExtensionRegistry
::
getInstance
()->
isLoaded
(
'UserMerge'
)
)
{
global
$wgLogTypes
,
$wgLogNames
,
$wgLogHeaders
,
$wgLogActionsHandlers
,
$wgActionFilteredLogs
;
$wgLogTypes
[]
=
'usermerge'
;
$wgLogNames
[
'usermerge'
]
=
'wikimedia-usermerge-logpage'
;
$wgLogHeaders
[
'usermerge'
]
=
'wikimedia-usermerge-logpagetext'
;
$wgLogActionsHandlers
[
'usermerge/*'
]
=
WMUserMergeLogFormatter
::
class
;
$wgActionFilteredLogs
[
'usermerge'
]
=
[
'mergeuser'
=>
[
'mergeuser'
],
'deleteuser'
=>
[
'deleteuser'
],
];
}
}
/**
* Allows last minute changes to the output page, e.g. adding of CSS or JavaScript by extensions.
*
* @param OutputPage $out The Output page object
* @param Skin $skin Skin object that will be used to generate the page
*/
public
function
onBeforePageDisplay
(
$out
,
$skin
):
void
{
$skins
=
$out
->
getConfig
()->
get
(
'WikimediaStylesSkins'
);
if
(
in_array
(
$skin
->
getSkinName
(),
$skins
)
)
{
$out
->
addModuleStyles
(
[
'ext.wikimediamessages.styles'
]
);
}
}
/**
* @see https://www.mediawiki.org/wiki/Manual:Hooks/ResourceLoaderRegisterModules
*
* @param ResourceLoader $resourceLoader
*/
public
function
onResourceLoaderRegisterModules
(
ResourceLoader
$resourceLoader
):
void
{
if
(
$this
->
extensionRegistry
->
isLoaded
(
'IPInfo'
)
)
{
$resourceLoader
->
register
(
'ext.wikimediaMessages.ipInfo.hooks'
,
[
'localBasePath'
=>
dirname
(
__DIR__
)
.
'/modules/ext.wikimediaMessages.ipInfo.hooks'
,
'remoteExtPath'
=>
'WikimediaMessages/modules/ext.wikimediaMessages.ipInfo.hooks'
,
'scripts'
=>
'infobox.js'
,
'styles'
=>
'infobox.less'
,
'messages'
=>
[
'ipinfo-global-contributions-url-label'
,
'ipinfo-global-contributions-url'
,
'ipinfo-xtools-url-label'
,
'ipinfo-xtools-url'
,
],
'dependencies'
=>
[
'ext.ipInfo'
,
],
]
);
}
}
/**
* Handle SpecialPageBeforeExecute hook
*
* @param SpecialPage $special
* @param string|null $subPage
*/
public
function
onSpecialPageBeforeExecute
(
$special
,
$subPage
)
{
$this
->
addIPInfoLinks
(
$special
,
$subPage
);
}
/**
* @param SpecialPage $special
* @param string|null $subPage
*/
private
function
addIPInfoLinks
(
$special
,
$subPage
):
void
{
if
(
$special
->
getName
()
!==
'Contributions'
&&
$special
->
getName
()
!==
'DeletedContributions'
)
{
return
;
}
// Return if target is not an IP address
if
(
$subPage
===
null
||
!
IPUtils
::
isValid
(
$subPage
)
)
{
return
;
}
$accessingUser
=
$special
->
getUser
();
$isBetaFeaturesLoaded
=
$this
->
extensionRegistry
->
isLoaded
(
'BetaFeatures'
);
// Check the same permissions and preferences as
// MediaWiki\IPInfo\HookHandler\InfoboxHandler
if
(
!
$this
->
permissionManager
->
userHasRight
(
$accessingUser
,
'ipinfo'
)
||
(
$isBetaFeaturesLoaded
&&
!
$this
->
userOptionsLookup
->
getOption
(
$accessingUser
,
'ipinfo-beta-feature-enable'
)
)
)
{
return
;
}
$special
->
getOutput
()->
addModules
(
'ext.wikimediaMessages.ipInfo.hooks'
);
}
/**
* Whether or not the donate link should be moved from the sidebar to the user menu
*
* @param Skin $skin
* @return bool
*/
public
function
shouldMoveDonateLink
(
$skin
):
bool
{
$config
=
$skin
->
getConfig
();
$user
=
$skin
->
getUser
();
if
(
$skin
->
getSkinName
()
===
'vector-2022'
&&
$config
->
get
(
'WikimediaMessagesAnonDonateLink'
)
&&
$user
->
isAnon
()
)
{
return
true
;
}
return
false
;
}
/**
* Add a donate link to the user links menu for anonymous users on vector '22, if feature flag is turned on
*
* @param SkinTemplate $skin
* @param array &$links
*/
public
function
onSkinTemplateNavigation__Universal
(
$skin
,
&
$links
):
void
{
$context
=
$skin
->
getContext
();
if
(
$this
->
shouldMoveDonateLink
(
$skin
)
)
{
$links
[
'user-page'
][
'sitesupport'
]
=
[
'text'
=>
$context
->
msg
(
'sitesupport'
)->
text
(),
'href'
=>
$context
->
msg
(
'sitesupport-url'
)->
text
(),
'title'
=>
$context
->
msg
(
'tooltip-n-sitesupport'
)->
text
(),
];
}
}
/**
* Remove the donate link for anonymous users on vector '22, if the feature flag is turned on
*
* @param Skin $skin
* @param array &$sidebar
*/
public
function
onSidebarBeforeOutput
(
$skin
,
&
$sidebar
):
void
{
// we want to be sure we're only removing this link if it's going to appear elsewhere
if
(
$this
->
shouldMoveDonateLink
(
$skin
)
)
{
// the donate link is not guaranteed to be in a particular section, so we must traverse them all
foreach
(
$sidebar
as
$section
=>
$links
)
{
// every other array length is bounded by practicality, but skip looping over language for peformance
if
(
$section
===
'LANGUAGES'
)
{
continue
;
}
foreach
(
$links
as
$index
=>
$link
)
{
if
(
isset
(
$link
[
'id'
]
)
&&
$link
[
'id'
]
===
'n-sitesupport'
)
{
unset
(
$sidebar
[
$section
][
$index
]
);
}
}
}
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 13:23 (1 d, 5 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
bf/9b/968088bd7eafca86f9038d228835
Default Alt Text
Hooks.php (59 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment