jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1055576?usp=email )
Change subject: [tests] Skip TestShortLink tests if urlshortener-ratelimit was exceeded
......................................................................
[tests] Skip TestShortLink tests if urlshortener-ratelimit was exceeded
- add code parameter to utils.skipping decorator to specify the
APIError code to determine which specific APIError is to be skipped
- update documentations
Bug: T370596
Change-Id: Ie085e1f46522e1d090f63c2ee0517af8b9fd329e
---
M pywikibot/page/_basepage.py
M tests/page_tests.py
M tests/utils.py
3 files changed, 32 insertions(+), 13 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page/_basepage.py b/pywikibot/page/_basepage.py
index 21181ba..e564b72 100644
--- a/pywikibot/page/_basepage.py
+++ b/pywikibot/page/_basepage.py
@@ -2303,18 +2303,18 @@
def create_short_link(self,
permalink: bool = False,
with_protocol: bool = True) -> str:
- """
- Return a shortened link that points to that page.
+ """Return a shortened link that points to that page.
- If shared_urlshortner_wiki is defined in family config, it'll use
- that site to create the link instead of the current wiki.
+ If shared_urlshortner_wiki is defined in family config, it'll
+ use that site to create the link instead of the current wiki.
- :param permalink: If true, the link will point to the actual revision
- of the page.
+ :param permalink: If true, the link will point to the actual
+ revision of the page.
:param with_protocol: If true, and if it's not already included,
- the link will have http(s) protocol prepended. On Wikimedia wikis
- the protocol is already present.
+ the link will have http(s) protocol prepended. On Wikimedia
+ wikis the protocol is already present.
:return: The reduced link.
+ :raises APIError: urlshortener-ratelimit exceeded
"""
wiki = self.site
if self.site.family.shared_urlshortner_wiki:
diff --git a/tests/page_tests.py b/tests/page_tests.py
index 0df6d1a..7a19e16 100755
--- a/tests/page_tests.py
+++ b/tests/page_tests.py
@@ -17,6 +17,7 @@
import pywikibot.page
from pywikibot import config
from pywikibot.exceptions import (
+ APIError,
Error,
InvalidTitleError,
IsNotRedirectPageError,
@@ -1267,12 +1268,16 @@
site = self.get_site()
p1 = pywikibot.Page(site, 'User:Framawiki/pwb_tests/shortlink')
- with self.subTest(parameters='defaulted'):
+
+ with self.subTest(parameters='defaulted'), \
+ skipping(APIError, code='urlshortener-ratelimit'):
self.assertEqual(p1.create_short_link(), 'https://w.wiki/3Cy')
- with self.subTest(with_protocol=True):
+ with self.subTest(with_protocol=True), \
+ skipping(APIError, code='urlshortener-ratelimit'):
self.assertEqual(p1.create_short_link(with_protocol=True),
'https://w.wiki/3Cy')
- with self.subTest(permalink=True):
+ with self.subTest(permalink=True), \
+ skipping(APIError, code='urlshortener-ratelimit'):
self.assertEqual(p1.create_short_link(permalink=True,
with_protocol=False),
'w.wiki/3Cz')
diff --git a/tests/utils.py b/tests/utils.py
index 053743f..341cb47 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -553,7 +553,9 @@
@contextmanager
-def skipping(*exceptions: BaseException, msg: str | None = None):
+def skipping(*exceptions: BaseException,
+ msg: str | None = None,
+ code: str | None = None):
"""Context manager to skip test on specified exceptions.
For example Eventstreams raises ``NotImplementedError`` if no
@@ -581,13 +583,25 @@
.. note:: The last sample uses Python 3.10 syntax.
.. versionadded:: 6.2
+ .. versionchanged:: 9.3
+ *code* parameter was added
- :param msg: Optional skipping reason
:param exceptions: Exceptions to let test skip
+ :param msg: Optional skipping reason
+ :param code: if *exceptions* is a single :exc:`APIError` you can
+ specify the :attr:`APIError.code` for the right match to be
+ skipped.
"""
try:
yield
except exceptions as e:
+ if code:
+ if len(exceptions) != 1 \
+ or not hasattr(e, 'code') \
+ or e.code != code:
+ raise
+ msg = e.info
+
if msg is None:
msg = e
raise unittest.SkipTest(msg)
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1055576?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Ie085e1f46522e1d090f63c2ee0517af8b9fd329e
Gerrit-Change-Number: 1055576
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Meno25 has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1055536?usp=email )
Change subject: [fix] Use an asterisk as sort key in ar-wiki
......................................................................
[fix] Use an asterisk as sort key in ar-wiki
- add a new dict main_sortkey to cosmetic_changes to determine the sort
key for main articles
- don't the sort key from main_sortkey if the main article already has one
- raise a ValueError if main_sortkey is missconfigured
- update documentation
Bug: T370536
Change-Id: I2852baba6c9cebbcd209258388da85abc540d814
---
M pywikibot/cosmetic_changes.py
1 file changed, 43 insertions(+), 14 deletions(-)
Approvals:
Meno25: Verified; Looks good to me, approved
diff --git a/pywikibot/cosmetic_changes.py b/pywikibot/cosmetic_changes.py
index 3000a0d..d4b4def 100644
--- a/pywikibot/cosmetic_changes.py
+++ b/pywikibot/cosmetic_changes.py
@@ -64,7 +64,7 @@
from urllib.parse import urlparse, urlunparse
import pywikibot
-from pywikibot import exceptions, textlib
+from pywikibot import exceptions, i18n, textlib
from pywikibot.backports import Callable, Match, Pattern
from pywikibot.site import Namespace
from pywikibot.textlib import (
@@ -173,6 +173,20 @@
}
}
+main_sortkey = {
+ '_default': ' ',
+ 'ar': '*',
+}
+"""Sort key to specify the main article within a category.
+
+The sort key must be one of ``' '``, ``'!'``, ``'*'``, ``'#'`` and is
+used like a pipe link but sorts the page in front of the alphabetical
+order. This dict is used in
+:meth:`CosmeticChangesToolkit.standardizePageFooter`.
+
+.. versionadded:: 9.3
+"""
+
class CANCEL(IntEnum):
@@ -327,22 +341,27 @@
return text
def standardizePageFooter(self, text: str) -> str:
- """
- Standardize page footer.
+ """Standardize page footer.
- Makes sure that interwiki links and categories are put
- into the correct position and into the right order. This
- combines the old instances of standardizeInterwiki
- and standardizeCategories.
+ Makes sure that interwiki links and categories are put into the
+ correct position and into the right order.
- The page footer consists of the following parts
- in that sequence:
+ The page footer consists of the following parts in that sequence:
+
1. categories
2. additional information depending on the local site policy
3. interwiki
- """
- assert self.title is not None
+ .. versionchanged:: 9.3
+ uses :attr:`main_sortkey` to determine the sort key for the
+ main article within a category. If the main article has a
+ sort key already, it will not be changed any longer.
+
+ :param text: text to be modified
+ :return: the modified *text*
+ :raises ValueError: wrong value of sortkey in
+ :attr:`main_sortkey` for the given site
+ """
categories = []
interwiki_links = {}
@@ -373,11 +392,21 @@
# TODO: Sort categories in alphabetic order, e.g. using
# categories.sort()? (T100265)
# TODO: Get main categories from Wikidata?
- main = pywikibot.Category(self.site, 'Category:' + self.title,
- sort_key=' ')
+ main = pywikibot.Category(self.site, 'Category:' + self.title)
if main in categories:
- categories.pop(categories.index(main))
+ main = categories.pop(categories.index(main))
+ if main.sortKey:
+ sortkey = main.sortKey
+ else:
+ sortkey = i18n.translate(self.site, main_sortkey,
+ fallback=['_default'])
+ if sortkey not in [' ', '*', '!', '#']:
+ raise ValueError(
+ f'sort key for {self.site} is {sortkey} but must'
+ "be one of ' ', '*', '!', '#'")
+ main = pywikibot.Category(main, sort_key=sortkey)
categories.insert(0, main)
+
text = textlib.replaceCategoryLinks(text, categories,
site=self.site)
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1055536?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I2852baba6c9cebbcd209258388da85abc540d814
Gerrit-Change-Number: 1055536
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Alaa <ala201041(a)hotmail.com>
Gerrit-Reviewer: Meno25 <meno25mail(a)gmail.com>
Gerrit-Reviewer: jenkins-bot
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1055439?usp=email )
Change subject: [IMPR] Ignore SectionError in fixing_redirects.py script
......................................................................
[IMPR] Ignore SectionError in fixing_redirects.py script
- Add ignore_section parameter to APISite.getredirtarget and
getRedirectTarget method of BasePage and ItemPage; if not set, raise
SectionError if the section was not found on target page. The
ignore_section parameter is set by default.
- Use ignore_section=False within FixingRedirectBot.get_target() and
catch the SectionError to be ignored
Bug: T370295
Change-Id: I1d3f0a9bd8c14ddd087d2199e334be37f8988316
---
M pywikibot/page/_basepage.py
M pywikibot/page/_wikibase.py
M pywikibot/site/_apisite.py
M scripts/fixing_redirects.py
4 files changed, 75 insertions(+), 40 deletions(-)
Approvals:
Meno25: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page/_basepage.py b/pywikibot/page/_basepage.py
index 596bacc..21181ba 100644
--- a/pywikibot/page/_basepage.py
+++ b/pywikibot/page/_basepage.py
@@ -1798,16 +1798,28 @@
return self._pageimage
- def getRedirectTarget(self):
- """
- Return a Page object for the target this Page redirects to.
+ def getRedirectTarget(self, *,
+ ignore_section: bool = True) -> pywikibot.Page:
+ """Return a Page object for the target this Page redirects to.
- If this page is not a redirect page, will raise an
- IsNotRedirectPageError. This method also can raise a NoPageError.
+ .. versionadded:: 9.3
+ *ignore_section* parameter
- :rtype: pywikibot.Page
+ .. seealso:: :meth:`Site.getredirtarget()
+ <pywikibot.site._apisite.APISite.getredirtarget>`
+
+ :param ignore_section: do not include section to the target even
+ the link has one
+
+ :raises CircularRedirectError: page is a circular redirect
+ :raises InterwikiRedirectPageError: the redirect target is on
+ another site
+ :raises IsNotRedirectPageError: page is not a redirect
+ :raises RuntimeError: no redirects found
+ :raises SectionError: the section is not found on target page
+ and *ignore_section* is not set
"""
- return self.site.getredirtarget(self)
+ return self.site.getredirtarget(self, ignore_section=ignore_section)
def moved_target(self):
"""
diff --git a/pywikibot/page/_wikibase.py b/pywikibot/page/_wikibase.py
index b00e5ce..951f89a 100644
--- a/pywikibot/page/_wikibase.py
+++ b/pywikibot/page/_wikibase.py
@@ -1170,14 +1170,31 @@
return data
- def getRedirectTarget(self):
- """Return the redirect target for this page."""
- target = super().getRedirectTarget()
+ def getRedirectTarget(self, *, ignore_section: bool = True):
+ """Return the redirect target for this page.
+
+ .. versionadded:: 9.3
+ *ignore_section* parameter
+
+ .. seealso:: :meth:`page.BasePage.getRedirectTarget`
+
+ :param ignore_section: do not include section to the target even
+ the link has one
+
+ :raises CircularRedirectError: page is a circular redirect
+ :raises InterwikiRedirectPageError: the redirect target is on
+ another site
+ :raises Error: target page has wrong content model
+ :raises IsNotRedirectPageError: page is not a redirect
+ :raises RuntimeError: no redirects found
+ :raises SectionError: the section is not found on target page
+ and *ignore_section* is not set
+ """
+ target = super().getRedirectTarget(ignore_section=ignore_section)
cmodel = target.content_model
if cmodel != 'wikibase-item':
- raise Error('{} has redirect target {} with content model {} '
- 'instead of wikibase-item'
- .format(self, target, cmodel))
+ raise Error(f'{self} has redirect target {target} with content '
+ f'model {cmodel} instead of wikibase-item')
return self.__class__(target.site, target.title(), target.namespace())
def iterlinks(self, family=None):
diff --git a/pywikibot/site/_apisite.py b/pywikibot/site/_apisite.py
index abca600..8f07e39 100644
--- a/pywikibot/site/_apisite.py
+++ b/pywikibot/site/_apisite.py
@@ -1594,20 +1594,28 @@
def getredirtarget(
self,
page: BasePage,
+ *,
+ ignore_section: bool = True
) -> pywikibot.page.Page:
- """
- Return page object for the redirect target of page.
+ """Return page object for the redirect target of page.
+
+ .. versionadded:: 9.3
+ *ignore_section* parameter
+
+ .. seealso:: :meth:`page.BasePage.getRedirectTarget`
:param page: page to search redirects for
+ :param ignore_section: do not include section to the target even
+ the link has one
:return: redirect target of page
- :raises pywikibot.exceptions.IsNotRedirectPageError: page is not a
- redirect
+ :raises CircularRedirectError: page is a circular redirect
+ :raises InterwikiRedirectPageError: the redirect target is on
+ another site
+ :raises IsNotRedirectPageError: page is not a redirect
:raises RuntimeError: no redirects found
- :raises pywikibot.exceptions.CircularRedirectError: page is a circular
- redirect
- :raises pywikibot.exceptions.InterwikiRedirectPageError: the redirect
- target is on another site
+ :raises SectionError: the section is not found on target page
+ and *ignore_section* is not set
"""
if not self.page_isredirect(page):
raise IsNotRedirectPageError(page)
@@ -1626,13 +1634,14 @@
raise RuntimeError(
f"getredirtarget: No 'redirects' found for page {title}.")
- redirmap = {item['from']: {'title': item['to'],
- 'section': '#'
- + item['tofragment']
- if 'tofragment' in item
- and item['tofragment']
- else ''}
- for item in result['query']['redirects']}
+ redirmap = {
+ item['from']: {
+ 'title': item['to'],
+ 'section': '#' + item['tofragment']
+ if 'tofragment' in item and item['tofragment'] else ''
+ }
+ for item in result['query']['redirects']
+ }
# Normalize title
for item in result['query'].get('normalized', []):
@@ -1687,6 +1696,11 @@
target = pywikibot.FilePage(target)
elif ns == Namespace.CATEGORY:
target = pywikibot.Category(target)
+
+ if not ignore_section:
+ # get the content; this raises SectionError if section is not found
+ target.text
+
page._redirtarget = target
return page._redirtarget
diff --git a/scripts/fixing_redirects.py b/scripts/fixing_redirects.py
index 4774b1a..55fc3f8 100755
--- a/scripts/fixing_redirects.py
+++ b/scripts/fixing_redirects.py
@@ -41,8 +41,9 @@
InvalidPageError,
InvalidTitleError,
NoMoveTargetError,
+ SectionError,
)
-from pywikibot.textlib import does_text_contain_section, isDisabled
+from pywikibot.textlib import isDisabled
from pywikibot.tools import first_lower
from pywikibot.tools import first_upper as firstcap
@@ -169,22 +170,13 @@
target = page.moved_target()
elif page.isRedirectPage():
try:
- target = page.getRedirectTarget()
+ target = page.getRedirectTarget(ignore_section=False)
except (CircularRedirectError,
InvalidTitleError,
InterwikiRedirectPageError):
pass
- except RuntimeError as e:
+ except (RuntimeError, SectionError) as e:
pywikibot.error(e)
- else:
- section = target.section()
- if section and not does_text_contain_section(target.text,
- section):
- pywikibot.warning(
- f'Section #{section} not found on page '
- f'{target.title(as_link=True, with_section=False)}'
- )
- target = None
if target is not None \
and target.namespace() in [2, 3] and page.namespace() not in [2, 3]:
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1055439?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I1d3f0a9bd8c14ddd087d2199e334be37f8988316
Gerrit-Change-Number: 1055439
Gerrit-PatchSet: 5
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: D3r1ck01 <dalangi-ctr(a)wikimedia.org>
Gerrit-Reviewer: Meno25 <meno25mail(a)gmail.com>
Gerrit-Reviewer: jenkins-bot
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1053359?usp=email )
Change subject: [IMPR] use Page.text instead of Page.get() to get the page content.
......................................................................
[IMPR] use Page.text instead of Page.get() to get the page content.
Page.text already gives an emtpy string if the page does not exists.
Change-Id: I4c2848cae22df5304f937ce438e9887171e92e16
---
M pywikibot/page/_page.py
1 file changed, 8 insertions(+), 14 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page/_page.py b/pywikibot/page/_page.py
index 2154ea9..991a985 100644
--- a/pywikibot/page/_page.py
+++ b/pywikibot/page/_page.py
@@ -125,21 +125,20 @@
@deprecated_args(botflag='bot') # since 9.3.0
def set_redirect_target(
self,
- target_page,
+ target_page: pywikibot.Page | str,
create: bool = False,
force: bool = False,
keep_section: bool = False,
save: bool = True,
**kwargs
):
- """
- Change the page's text to point to the redirect page.
+ """Change the page's text to point to the redirect page.
.. versionchanged:: 9.3
*botflag* keyword parameter was renamed to *bot*.
- :param target_page: target of the redirect, this argument is required.
- :type target_page: pywikibot.Page or string
+ :param target_page: target of the redirect, this argument is
+ required.
:param create: if true, it creates the redirect even if the page
doesn't exist.
:param force: if true, it set the redirect target even the page
@@ -147,8 +146,8 @@
:param keep_section: if the old redirect links to a section
and the new one doesn't it uses the old redirect's section.
:param save: if true, it saves the page immediately.
- :param kwargs: Arguments which are used for saving the page directly
- afterwards, like 'summary' for edit summary.
+ :param kwargs: Arguments which are used for saving the page
+ directly afterwards, like *summary* for edit summary.
"""
if isinstance(target_page, str):
target_page = pywikibot.Page(self.site, target_page)
@@ -161,13 +160,8 @@
if self.exists() and not self.isRedirectPage() and not force:
raise IsNotRedirectPageError(self)
- redirect_regex = self.site.redirect_regex
- if self.exists():
- old_text = self.get(get_redirect=True)
- else:
- old_text = ''
-
- result = redirect_regex.search(old_text)
+ old_text = self.text
+ result = self.site.redirect_regex.search(old_text)
if result:
oldlink = result[1]
if (keep_section and '#' in oldlink
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1053359?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I4c2848cae22df5304f937ce438e9887171e92e16
Gerrit-Change-Number: 1053359
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-CC: AnotherLadsgroup <ladsgroup(a)gmail.com>
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/1055200?usp=email )
Change subject: Localisation updates from https://translatewiki.net.
......................................................................
Localisation updates from https://translatewiki.net.
Change-Id: I6fe36755e7f89b367c6f454b9cfbc630d5d7d4e5
---
M basic/fa.json
M checkimages/es.json
A clean_sandbox/kaa.json
M protect/es.json
A replicate_wiki/es.json
M unprotect/es.json
6 files changed, 29 insertions(+), 2 deletions(-)
Approvals:
jenkins-bot: Verified
L10n-bot: Looks good to me, approved
diff --git a/basic/fa.json b/basic/fa.json
index 8aac2dc..3fc851f 100644
--- a/basic/fa.json
+++ b/basic/fa.json
@@ -1,8 +1,9 @@
{
"@metadata": {
"authors": [
- "Alirezaaa"
+ "Alirezaaa",
+ "Ebrahim"
]
},
- "basic-changing": "ربات: در حال تغییردادن ..."
+ "basic-changing": "ربات: تغییر دادن ..."
}
diff --git a/checkimages/es.json b/checkimages/es.json
index 69a6678..10eded7 100644
--- a/checkimages/es.json
+++ b/checkimages/es.json
@@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"Fitoschido",
+ "Jorgito",
"Macofe",
"MarcoAurelio",
"Ryo567"
@@ -11,6 +12,9 @@
"checkimages-doubles-file-comment": "Bot: el archivo ya está en Commons y puede ser eliminado",
"checkimages-doubles-head": "Archivo duplicado",
"checkimages-doubles-talk-comment": "Bot: Notifica que el archivo ya existe en Commons",
+ "checkimages-doubles-talk-text": "Gracias por subir %(upload)s. Sin embargo, este archivo es una copia de:%(image)sEl Bot ha marcado como un duplicado el archivo que se determinó que es menos usado o más reciente. Si consideras más apropiado mantener el archivo marcado para ser borrado inmediatamente, siéntete libre de borrar los archivos duplicados y eliminar la plantilla de borrado del que es para mantener. Este es un mensaje automatizado de %(bot)s.",
+ "checkimages-forced-mode": "('''modo forzado''')",
+ "checkimages-has-duplicates": "tiene los siguientes duplicados%(force)s:",
"checkimages-log-comment": "Bot: Actualizando el registro",
"checkimages-no-license-head": "Imagen sin licencia",
"checkimages-source-tag-comment": "Bot: se marca un archivo sin etiquetas recién cargado",
diff --git a/clean_sandbox/kaa.json b/clean_sandbox/kaa.json
new file mode 100644
index 0000000..e8fdc92
--- /dev/null
+++ b/clean_sandbox/kaa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Inabat Allanova"
+ ]
+ },
+ "clean_sandbox-cleaned": "Bot: Qaralamanı tazalaw"
+}
diff --git a/protect/es.json b/protect/es.json
index 45fb44a..1bc0863 100644
--- a/protect/es.json
+++ b/protect/es.json
@@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"Fitoschido",
+ "Jorgito",
"Macofe",
"Sporeunai",
"VegaDark"
diff --git a/replicate_wiki/es.json b/replicate_wiki/es.json
new file mode 100644
index 0000000..204c1d0
--- /dev/null
+++ b/replicate_wiki/es.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jorgito"
+ ]
+ },
+ "replicate_wiki-headline": "Páginas que difieren del original",
+ "replicate_wiki-missing-users": "Administradores de la original que faltan aquí",
+ "replicate_wiki-same-pages": "Todas las páginas importantes son iguales",
+ "replicate_wiki-same-users": "Todos los usuarios de la wiki original están presentes también en esta wiki",
+ "replicate_wiki-summary": "Sincronización de la wiki desde %(source)s"
+}
diff --git a/unprotect/es.json b/unprotect/es.json
index f63dc5f..797f602 100644
--- a/unprotect/es.json
+++ b/unprotect/es.json
@@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"Fitoschido",
+ "Jorgito",
"Macofe"
]
},
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/1055200?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/i18n
Gerrit-Branch: master
Gerrit-Change-Id: I6fe36755e7f89b367c6f454b9cfbc630d5d7d4e5
Gerrit-Change-Number: 1055200
Gerrit-PatchSet: 1
Gerrit-Owner: L10n-bot <l10n-bot(a)translatewiki.net>
Gerrit-Reviewer: L10n-bot <l10n-bot(a)translatewiki.net>
Gerrit-Reviewer: jenkins-bot