Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita65f03e

Browse files
authored
Arregla y wrapea library/re.po (#2873)
En `library/re.po` había una entrada que no estaba delineadacorrectamente con comillas dobles (si ven el diff entero es la últimaentrada en el diff, o pueden ver simplemente el primer commit de estePR). Esto hacía que `powrap --check` se saltara el archivo y no lovalidara. Esto, a su vez, ocurría porque la utilidad `msgcat` de`gettext` identificaba el error de sintaxis, y fallaba al ser ejecutada.`powrap` no consideraba esos errores al momento de calcular el exit codedel proceso, y por lo tanto el archivo no sólo seguía siendo inválido,sino que tampoco era verificado. De igual forma, el archivo no podía serwrapeado correctamente usando `powrap library/re.po`.Ya abrí un PR contra `powrap` para cambiar este comportamiento enhttps://git.afpy.org/AFPy/powrap/pulls/4 (actualización: el PR ya fuemergeado, y una nuevs versión de powrap fue publicada, pornlo quetambién actualicé en este PR nuestra dependencia de powrap, además delpre-commit hook de powrap).Por otro lado, el resto de nuestras herramientas *no* consideraban estearchivo como inválido, Esto es porque `polib` no hacía la validacióncorrespondiente, e incorrectamente parseaba la entrada. También abrí unPR contra polib para esto enizimobil/polib#161.Actualización: en el intertanto también me di cuenta de que el paquete`babel` sufre del mismo problema, yo incorrectamente había asumido quebabel dependía de polib; PR creada contra babel:python-babel/babel#1151.Después de corregir el error de sintaxis, ejecuté powrap de tal maneraque ahora `library/re.po` está bien formateado.---------Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
1 parent875e5df commita65f03e

File tree

4 files changed

+87
-80
lines changed

4 files changed

+87
-80
lines changed

‎.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ jobs:
7777
diff -Naur TRANSLATORS <(LANG=es python scripts/sort.py < TRANSLATORS)
7878
-name:Powrap
7979
if:steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
80-
run:powrap --check --quiet ${{ steps.po-files-to-check.outputs.po_files_to_check }}
80+
run:powrap --diff --check --quiet ${{ steps.po-files-to-check.outputs.po_files_to_check }}
8181
-name:Sphinx lint
8282
if:steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
8383
run:sphinx-lint ${{ steps.po-files-to-check.outputs.po_files_to_check }}

‎.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
2-
-repo:https://github.com/JulienPalard/powrap
3-
rev:v0.4.0
2+
-repo:https://git.afpy.org/AFPy/powrap
3+
rev:v1.0.2
44
hooks:
55
-id:powrap
66
-repo:local

‎library/re.po

Lines changed: 83 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,10 @@ msgid ""
208208
"For example, the expression ``(?:a{6})*`` matches any multiple of six "
209209
"``'a'`` characters."
210210
msgstr""
211-
"Los operadores de repetición o cuantificadores (``*``, ``+``, ``?``, ``{m,n}``, etc.)"
212-
"no pueden ser anidados directamente. Esto evita la ambigüedad con el sufijo "
213-
"modificador no codicioso ``?``, y con otros modificadores en "
214-
"otrasimplementaciones. Para aplicar una segunda repetición a una repetición "
211+
"Los operadores de repetición o cuantificadores (``*``, ``+``, ``?``, ``{m,n}"
212+
"``, etc.)no pueden ser anidados directamente. Esto evita la ambigüedad con "
213+
"el sufijomodificador no codicioso ``?``, y con otros modificadores en otras "
214+
"implementaciones. Para aplicar una segunda repetición a una repetición "
215215
"interna, se pueden usar paréntesis. Por ejemplo, la expresión ``(?:a{6})*`` "
216216
"coincide con cualquier múltiplo de seis caracteres ``'a'``."
217217

@@ -358,14 +358,14 @@ msgstr ""
358358
"permiten retroceder cuando la expresión que le sigue no coincide. Estos se "
359359
"conocen como cuantificadores :dfn:`possessive`. Por ejemplo, ``a*a`` "
360360
"coincidirá con ``'aaaa'`` porque la ``a*`` coincidirá con los 4 ``'a'``\\ s, "
361-
"pero, cuando se encuentra la ``'a'`` final, la expresión retrocede de "
362-
"modoque al final la ``a*`` termina coincidiendo con 3 ``'a'``\\ s total, y "
363-
"lacuarta ``'a'`` coincide con la final ``'a'``. Sin embargo, cuando "
364-
"``a*+a``se usa para que coincida con ``'aaaa'``, el ``a*+`` coincidirá con "
365-
"los 4``'a'``, pero cuando el ``'a'`` final no encuentra más caracteres para "
366-
"coincidir, la expresión no puede retroceder y, por lo tanto, no "
367-
"coincidirá.``x*+``, ``x++`` and ``x?+`` son equivalentes a ``(?>x*)``, ``(?"
368-
">x+)`` and``(?>x?)`` correspondientemente."
361+
"pero, cuando se encuentra la ``'a'`` final, la expresión retrocede demodo"
362+
"que al final la ``a*`` termina coincidiendo con 3 ``'a'``\\ s total, y la "
363+
"cuarta ``'a'`` coincide con la final ``'a'``. Sin embargo, cuando ``a*+a`` "
364+
"se usa para que coincida con ``'aaaa'``, el ``a*+`` coincidirá con los 4 "
365+
"``'a'``, pero cuando el ``'a'`` final no encuentra más caracteres para "
366+
"coincidir, la expresión no puede retroceder y, por lo tanto, nocoincidirá."
367+
"``x*+``, ``x++`` and ``x?+`` son equivalentes a ``(?>x*)``, ``(?>x+)`` and"
368+
"``(?>x?)`` correspondientemente."
369369

370370
#:../Doc/library/re.rst:187
371371
msgid"``{m}``"
@@ -782,12 +782,12 @@ msgstr ""
782782
"separada, y si tiene éxito, continúa coincidiendo con el resto del patrón "
783783
"que la sigue. Si el patrón posterior no coincide, la pila solo se puede "
784784
"desenrollar a un punto *antes* del ``(?>...)`` Porque una vez que salió, la "
785-
"expresión, conocida como :dfn:`grupo atomico <atomic group>`, ha desechadotodos los puntos de pila"
786-
"dentro de sí misma. Por lo tanto, ``(?>.*).`` nunca coincidiría con nada "
787-
"porque primero el ``.*`` coincidiría con todos los caracteres posibles, "
788-
"luego, al no tener nada que igualar, el ``.`` final no coincidiría. Dado que "
789-
"no hay puntos de pila guardados en el Grupo Atómico, y no hay ningún punto "
790-
"de pila antes de él, toda la expresión no coincidiría."
785+
"expresión, conocida como :dfn:`grupo atomico <atomic group>`, ha desechado "
786+
"todos los puntos de piladentro de sí misma. Por lo tanto, ``(?>.*).`` nunca "
787+
"coincidiría con nadaporque primero el ``.*`` coincidiría con todos los "
788+
"caracteres posibles,luego, al no tener nada que igualar, el ``.`` final no "
789+
"coincidiría. Dado queno hay puntos de pila guardados en el Grupo Atómico, y "
790+
"no hay ningún puntode pila antes de él, toda la expresión no coincidiría."
791791

792792
#:../Doc/library/re.rst:424
793793
msgid"``(?P<name>...)``"
@@ -869,8 +869,8 @@ msgid ""
869869
"In :class:`bytes` patterns, group *name* can only contain bytes in the ASCII "
870870
"range (``b'\\x00'``-``b'\\x7f'``)."
871871
msgstr""
872-
"En patrones de tipo :class:`bytes`, el nombre del grupo *name* solo puedecontener"
873-
"bytes en el rango ASCII (``b'\\x00'``-``b'\\x7f'``)."
872+
"En patrones de tipo :class:`bytes`, el nombre del grupo *name* solo puede "
873+
"contenerbytes en el rango ASCII (``b'\\x00'``-``b'\\x7f'``)."
874874

875875
#:../Doc/library/re.rst:430
876876
msgid"``(?P=name)``"
@@ -1006,9 +1006,9 @@ msgid ""
10061006
"Group *id* can only contain ASCII digits. In :class:`bytes` patterns, group "
10071007
"*name* can only contain bytes in the ASCII range (``b'\\x00'``-``b'\\x7f'``)."
10081008
msgstr""
1009-
"El *id* del grupo solo puede contener dígitos ASCII. En patrones de "
1010-
"tipo :class:`bytes`, el *name* del grupo solo puede contener bytes "
1011-
"en el rangoASCII (``b'\\x00'``-``b'\\x7f'``)."
1009+
"El *id* del grupo solo puede contener dígitos ASCII. En patrones detipo :"
1010+
"class:`bytes`, el *name* del grupo solo puede contener bytes en el rango "
1011+
"ASCII (``b'\\x00'``-``b'\\x7f'``)."
10121012

10131013
#:../Doc/library/re.rst:506
10141014
msgid""
@@ -1208,8 +1208,9 @@ msgid ""
12081208
"const:`ASCII` flag is used, only ``[a-zA-Z0-9_]`` is matched."
12091209
msgstr""
12101210
"Coincide con los caracteres de palabras Unicode; esto incluye los caracteres "
1211-
"alfanuméricos (como se define por :meth:`str.isalnum`) así como el guión bajo "
1212-
"(``_``). Si se utiliza la bandera :const:`ASCII`, sólo coincide con ``[a-zA-Z0-9_]``."
1211+
"alfanuméricos (como se define por :meth:`str.isalnum`) así como el guión "
1212+
"bajo (``_``). Si se utiliza la bandera :const:`ASCII`, sólo coincide con "
1213+
"``[a-zA-Z0-9_]``."
12131214

12141215
#:../Doc/library/re.rst:604
12151216
msgid""
@@ -1254,8 +1255,8 @@ msgid ""
12541255
"string literals are also accepted by the regular expression parser::"
12551256
msgstr""
12561257
"La mayoría de las :ref:`secuencias de escape <escape-sequences>` soportadas "
1257-
"por los literales de cadena de Python también son aceptadas por elanalizador"
1258-
"de expresiones regulares::"
1258+
"por los literales de cadena de Python también son aceptadas por el "
1259+
"analizadorde expresiones regulares::"
12591260

12601261
#:../Doc/library/re.rst:644
12611262
msgid""
@@ -1482,9 +1483,9 @@ msgid ""
14821483
msgstr""
14831484
"Indica que no se aplica ninguna bandera, el valor es ``0``. Esta bandera "
14841485
"puede ser utilizada como valor predeterminado para un argumento de palabra "
1485-
"clave de función o como un valor que será condicionalmente combinado "
1486-
"conotras banderas usando el operador binario OR. Ejemplo de uso como "
1487-
"valorpredeterminado::"
1486+
"clave de función o como un valor que será condicionalmente combinadocon"
1487+
"otras banderas usando el operador binario OR. Ejemplo de uso como valor "
1488+
"predeterminado::"
14881489

14891490
#:../Doc/library/re.rst:779
14901491
msgid""
@@ -1503,13 +1504,15 @@ msgid ""
15031504
"include Unicode characters in matches. Since Python 3, Unicode characters "
15041505
"are matched by default."
15051506
msgstr""
1506-
"En Python 2, esta bandera hacía que :ref:`secuencias especiales <re-special-sequences>`"
1507-
"incluyeran caracteres Unicode en las coincidencias. Desde Python 3, los caracteres "
1508-
"Unicode se coinciden por defecto."
1507+
"En Python 2, esta bandera hacía que :ref:`secuencias especiales <re-special-"
1508+
"sequences>`incluyeran caracteres Unicode en las coincidencias. Desde Python "
1509+
"3, los caracteresUnicode se coinciden por defecto."
15091510

15101511
#:../Doc/library/re.rst:791
15111512
msgid"See :const:`A` for restricting matching on ASCII characters instead."
1512-
msgstr"Ver :const:`A` para restringir la coincidencia a caracteres ASCII en su lugar."
1513+
msgstr""
1514+
"Ver :const:`A` para restringir la coincidencia a caracteres ASCII en su "
1515+
"lugar."
15131516

15141517
#:../Doc/library/re.rst:793
15151518
msgid"This flag is only kept for backward compatibility."
@@ -1613,9 +1616,9 @@ msgid ""
16131616
"pattern; note that this is different from finding a zero-length match at "
16141617
"some point in the string."
16151618
msgstr""
1616-
"Explora la cadena de caracteres *string* en busca de la primera ubicacióndonde el"
1617-
"patrón *pattern* de la expresión regular produce una coincidencia, y "
1618-
"retorna un :class:`~re.Match` correspondiente. Retorna ``None`` si ninguna "
1619+
"Explora la cadena de caracteres *string* en busca de la primera ubicación "
1620+
"donde elpatrón *pattern* de la expresión regular produce una coincidencia, "
1621+
"yretorna un :class:`~re.Match` correspondiente. Retorna ``None`` si ninguna "
16191622
"posición en la cadena coincide con el patrón; nota que esto es diferente a "
16201623
"encontrar una coincidencia de longitud cero en algún punto de la cadena."
16211624

@@ -1626,8 +1629,8 @@ msgid ""
16261629
"``None`` if the string does not match the pattern; note that this is "
16271630
"different from a zero-length match."
16281631
msgstr""
1629-
"Si cero o más caracteres al principio de la cadena *string* coinciden con "
1630-
"elpatrón *pattern* de la expresión regular, retorna un :class:`~re.Match` "
1632+
"Si cero o más caracteres al principio de la cadena *string* coinciden conel"
1633+
"patrón *pattern* de la expresión regular, retorna un :class:`~re.Match` "
16311634
"correspondiente. Retorna ``None`` si la cadena no coincide con el patrón; "
16321635
"notar que esto es diferente de una coincidencia de longitud cero."
16331636

@@ -1654,10 +1657,10 @@ msgid ""
16541657
"corresponding :class:`~re.Match`. Return ``None`` if the string does not "
16551658
"match the pattern; note that this is different from a zero-length match."
16561659
msgstr""
1657-
"Si toda la cadena *string* coincide con el patrón *pattern* de la "
1658-
"expresiónregular, retorna un :class:`~re.Match` correspondiente. Retorna "
1659-
"``None`` sila cadena no coincide con el patrón; notar que esto es diferente "
1660-
"de unacoincidencia de longitud cero."
1660+
"Si toda la cadena *string* coincide con el patrón *pattern* de laexpresión"
1661+
"regular, retorna un :class:`~re.Match` correspondiente. Retorna ``None`` si "
1662+
"la cadena no coincide con el patrón; notar que esto es diferente de una "
1663+
"coincidencia de longitud cero."
16611664

16621665
#:../Doc/library/re.rst:889
16631666
msgid""
@@ -1752,10 +1755,10 @@ msgid ""
17521755
"scanned left-to-right, and matches are returned in the order found. Empty "
17531756
"matches are included in the result."
17541757
msgstr""
1755-
"Retorna un :term:`iterador <iterator>` que produce objetos :class:`~re.Match` sobre"
1756-
"todas las coincidencias no superpuestas para el patrón de RE *pattern* en la "
1757-
"*string*. La *string* es examinada de izquierda a derecha, y las "
1758-
"coincidencias son retornadas en el orden en que se encuentran. Las "
1758+
"Retorna un :term:`iterador <iterator>` que produce objetos :class:`~re."
1759+
"Match` sobretodas las coincidencias no superpuestas para el patrón de RE "
1760+
"*pattern* en la *string*. La *string* es examinada de izquierda a derecha, y "
1761+
"lascoincidencias son retornadas en el orden en que se encuentran. Las "
17591762
"coincidencias vacías se incluyen en el resultado."
17601763

17611764
#:../Doc/library/re.rst:966
@@ -1869,9 +1872,9 @@ msgid ""
18691872
"strings, group *name* can only contain bytes in the ASCII range "
18701873
"(``b'\\x00'``-``b'\\x7f'``)."
18711874
msgstr""
1872-
"El *id* del grupo solo puede contener dígitos ASCII. En las cadenas dereemplazo"
1873-
":class:`bytes`, el nombre del grupo *name* solo puede contener bytes en el rango ASCII "
1874-
"(``b'\\x00'``-``b'\\x7f'``)."
1875+
"El *id* del grupo solo puede contener dígitos ASCII. En las cadenas de "
1876+
"reemplazo:class:`bytes`, el nombre del grupo *name* solo puede contener "
1877+
"bytes en el rango ASCII(``b'\\x00'``-``b'\\x7f'``)."
18751878

18761879
#:../Doc/library/re.rst:1041
18771880
msgid""
@@ -1977,8 +1980,8 @@ msgid ""
19771980
":py:class:`re.Pattern` supports ``[]`` to indicate a Unicode (str) or bytes "
19781981
"pattern. See :ref:`types-genericalias`."
19791982
msgstr""
1980-
":py:class:`re.Pattern` soporta ``[]`` para indicar un patrón Unicode (str) ode bytes."
1981-
"Ver :ref:`types-genericalias`."
1983+
":py:class:`re.Pattern` soporta ``[]`` para indicar un patrón Unicode (str) o "
1984+
"de bytes.Ver :ref:`types-genericalias`."
19821985

19831986
#:../Doc/library/re.rst:1140
19841987
msgid""
@@ -1988,10 +1991,10 @@ msgid ""
19881991
"this is different from finding a zero-length match at some point in the "
19891992
"string."
19901993
msgstr""
1991-
"Escanea a través de la cadena *string* buscando la primera ubicación "
1992-
"dondeesta expresión regular produce una coincidencia, y retorna un :class:"
1993-
"`~re.Match` correspondiente. Retorna ``None`` si ninguna posición en la "
1994-
"cadenacoincide con el patrón; notar que esto es diferente a encontrar una "
1994+
"Escanea a través de la cadena *string* buscando la primera ubicacióndonde"
1995+
"esta expresión regular produce una coincidencia, y retorna un :class:`~re."
1996+
"Match` correspondiente. Retorna ``None`` si ninguna posición en la cadena "
1997+
"coincide con el patrón; notar que esto es diferente a encontrar una "
19951998
"coincidencia de longitud cero en algún punto de la cadena."
19961999

19972000
#:../Doc/library/re.rst:1145
@@ -2031,10 +2034,10 @@ msgid ""
20312034
"the string does not match the pattern; note that this is different from a "
20322035
"zero-length match."
20332036
msgstr""
2034-
"Si cero o más caracteres en el comienzo *beginning* de la cadena "
2035-
"*string*coinciden con esta expresión regular, retorna un :class:`~re.Match` "
2036-
"correspondiente. Retorna ``None`` si la cadena no coincide con el patrón;notar"
2037-
"que esto es diferente de una coincidencia de longitud cero."
2037+
"Si cero o más caracteres en el comienzo *beginning* de la cadena*string*"
2038+
"coinciden con esta expresión regular, retorna un :class:`~re.Match` "
2039+
"correspondiente. Retorna ``None`` si la cadena no coincide con el patrón; "
2040+
"notarque esto es diferente de una coincidencia de longitud cero."
20382041

20392042
#:../Doc/library/re.rst:1171../Doc/library/re.rst:1189
20402043
msgid""
@@ -2059,10 +2062,10 @@ msgid ""
20592062
"corresponding :class:`~re.Match`. Return ``None`` if the string does not "
20602063
"match the pattern; note that this is different from a zero-length match."
20612064
msgstr""
2062-
"Si toda la cadena *string* coincide con esta expresión regular, "
2063-
"retorna un :class:`~re.Match` correspondiente. Retorna ``None`` si la "
2064-
"cadena nocoincide con el patrón; notar que esto es diferente de una "
2065-
"coincidencia delongitud cero."
2065+
"Si toda la cadena *string* coincide con esta expresión regular,retorna un :"
2066+
"class:`~re.Match` correspondiente. Retorna ``None`` si la cadena no "
2067+
"coincide con el patrón; notar que esto es diferente de una coincidencia de "
2068+
"longitud cero."
20662069

20672070
#:../Doc/library/re.rst:1203
20682071
msgid"Identical to the :func:`split` function, using the compiled pattern."
@@ -2158,8 +2161,8 @@ msgid ""
21582161
":py:class:`re.Match` supports ``[]`` to indicate a Unicode (str) or bytes "
21592162
"match. See :ref:`types-genericalias`."
21602163
msgstr""
2161-
":py:class:`re.Match` soporta ``[]`` para indicar una coincidencia Unicode(str) o de bytes."
2162-
"Ver :ref:`types-genericalias`."
2164+
":py:class:`re.Match` soporta ``[]`` para indicar una coincidencia Unicode "
2165+
"(str) o de bytes.Ver :ref:`types-genericalias`."
21632166

21642167
#:../Doc/library/re.rst:1283
21652168
msgid""
@@ -2559,11 +2562,14 @@ msgstr "search() vs. match()"
25592562
#:../Doc/library/re.rst:1591
25602563
msgid""
25612564
"Python offers different primitive operations based on regular expressions:"
2562-
msgstr"Python ofrece diferentes operaciones primitivas basadas en expresiones regulares:"
2565+
msgstr""
2566+
"Python ofrece diferentes operaciones primitivas basadas en expresiones "
2567+
"regulares:"
25632568

25642569
#:../Doc/library/re.rst:1593
25652570
msgid":func:`re.match` checks for a match only at the beginning of the string"
2566-
msgstr":func:`re.match` verifica una coincidencia solo al principio de la cadena"
2571+
msgstr""
2572+
":func:`re.match` verifica una coincidencia solo al principio de la cadena"
25672573

25682574
#:../Doc/library/re.rst:1594
25692575
msgid""
@@ -2575,7 +2581,8 @@ msgstr ""
25752581

25762582
#:../Doc/library/re.rst:1596
25772583
msgid":func:`re.fullmatch` checks for entire string to be a match"
2578-
msgstr":func:`re.fullmatch` verifica si la cadena completa es una coincidencia"
2584+
msgstr""
2585+
":func:`re.fullmatch` verifica si la cadena completa es una coincidencia"
25792586

25802587
#:../Doc/library/re.rst:1608
25812588
msgid""
@@ -2697,12 +2704,12 @@ msgid ""
26972704
"writer wanted to find all of the adverbs *and their positions* in some text, "
26982705
"they would use :func:`finditer` in the following manner::"
26992706
msgstr""
2700-
"Si se desea obtener más información sobre todas las coincidencias de unpatrón en"
2701-
"lugar del texto coincidente, :func:`finditer` es útil ya queproporciona :"
2702-
"class:`~re.Match` objetos en lugar de cadenas. "
2703-
"Continuando conel ejemplo anterior, si un escritor quisiera encontrar todos "
2704-
"los adverbios*y sus posiciones* en algún texto, usaría :func:`finditer` de "
2705-
"la siguientemanera::"
2707+
"Si se desea obtener más información sobre todas las coincidencias de un "
2708+
"patrón enlugar del texto coincidente, :func:`finditer` es útil ya que "
2709+
"proporciona :class:`~re.Match` objetos en lugar de cadenas. Continuando con "
2710+
"el ejemplo anterior, si un escritor quisiera encontrar todos los adverbios "
2711+
"*y sus posiciones* en algún texto, usaría :func:`finditer` de la siguiente "
2712+
"manera::"
27062713

27072714
#:../Doc/library/re.rst:1736
27082715
msgid"Raw String Notation"
@@ -2810,7 +2817,7 @@ msgstr "$ (dólar)"
28102817

28112818
#:../Doc/library/re.rst:123
28122819
msgid"* (asterisk)"
2813-
msgstr * (asterisco)"
2820+
msgstr"* (asterisco)"
28142821

28152822
#:../Doc/library/re.rst:130
28162823
msgid"+ (plus)"

‎requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ PyICU
77
polib
88
pospell>=1.1
99
potodo
10-
powrap
10+
powrap>=1.0.2
1111
python-docs-theme>=2022.1
1212
setuptools
1313
sphinx-intl>=2.3.0

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp