Hello community, here is the log from the commit of package i18nspector for openSUSE:Factory checked in at 2017-11-04 19:28:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/i18nspector (Old) and /work/SRC/openSUSE:Factory/.i18nspector.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "i18nspector" Sat Nov 4 19:28:55 2017 rev:26 rq:538589 version:0.25.5 Changes: -------- --- /work/SRC/openSUSE:Factory/i18nspector/i18nspector.changes 2017-08-18 15:06:38.803202544 +0200 +++ /work/SRC/openSUSE:Factory/.i18nspector.new/i18nspector.changes 2017-11-04 19:29:01.817688657 +0100 @@ -1,0 +2,9 @@ +Thu Nov 2 21:05:49 UTC 2017 - lazy.k...@opensuse.org + +- Update to 0.25.5. + * Don't complain about POT-Creation-Date missing in MO files. + In the future versions of gettext (>> 0.19.8.1), msgfmt will be + removing the POT-Creation-Date header. + * Improve error handling. + +------------------------------------------------------------------- Old: ---- i18nspector-0.25.4.tar.gz i18nspector-0.25.4.tar.gz.asc New: ---- i18nspector-0.25.5.tar.gz i18nspector-0.25.5.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ i18nspector.spec ++++++ --- /var/tmp/diff_new_pack.bJHpbj/_old 2017-11-04 19:29:03.469628297 +0100 +++ /var/tmp/diff_new_pack.bJHpbj/_new 2017-11-04 19:29:03.469628297 +0100 @@ -17,7 +17,7 @@ Name: i18nspector -Version: 0.25.4 +Version: 0.25.5 Release: 0 Summary: Tool for Checking gettext POT/PO/MO Files License: MIT @@ -66,7 +66,7 @@ %files %defattr(-,root,root,-) -%doc doc/{changelog,LICENSE,tags.txt,todo.txt} +%doc doc/{changelog,LICENSE,tags.txt,todo} %{_bindir}/%{name} %{_datadir}/%{name}/ %{_mandir}/man?/* ++++++ i18nspector-0.25.4.tar.gz -> i18nspector-0.25.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/data/tags new/i18nspector-0.25.5/data/tags --- old/i18nspector-0.25.4/data/tags 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/data/tags 2017-08-22 21:21:25.000000000 +0200 @@ -965,7 +965,7 @@ certainty = certain description = The message entry contains annotations about previous untranslated string - (``#| msgid ``\ *...*), + (``#| msgid``\ *...*), even though the message is not marked as fuzzy. These annotations are only useful for fuzzy messages, and should be removed when unfuzzying. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/Makefile new/i18nspector-0.25.5/doc/Makefile --- old/i18nspector-0.25.4/doc/Makefile 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/doc/Makefile 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2012-2016 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/README new/i18nspector-0.25.5/doc/README --- old/i18nspector-0.25.4/doc/README 1970-01-01 01:00:00.000000000 +0100 +++ new/i18nspector-0.25.5/doc/README 2017-08-22 21:21:25.000000000 +0200 @@ -0,0 +1,44 @@ +Overview +======== + +**i18nspector** is a tool for checking translation templates (POT), message +catalogues (PO) and compiled message catalogues (MO) files for common problems. +These files are used by the GNU gettext translation functions and tools in +many different development environments. + +Prerequisites +============= + +The following software is needed to run i18nspector: + +* Python ≥ 3.2; + +* polib_ ≥ 1.0.0, a gettext catalogs manipulation library; + +* RPLY_, a parser generator. + +Additionally, the following software is needed to rebuild the manual page from +source: + +* docutils_ ≥ 0.6. + + +For pip users:: + + python3 -m pip install polib rply + python3 -m pip install docutils + +For Debian users:: + + apt-get install python3-polib python3-rply + apt-get install python3-docutils + + +.. _polib: + https://pypi.python.org/pypi/polib +.. _RPLY: + https://pypi.python.org/pypi/rply +.. _docutils: + http://docutils.sourceforge.net/ + +.. vim:ft=rst ts=3 sts=3 sw=3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/changelog new/i18nspector-0.25.5/doc/changelog --- old/i18nspector-0.25.4/doc/changelog 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/doc/changelog 2017-08-22 21:21:25.000000000 +0200 @@ -1,3 +1,13 @@ +i18nspector (0.25.5) unstable; urgency=low + + * Don't complain about POT-Creation-Date missing in MO files. + In the future versions of gettext (>> 0.19.8.1), msgfmt will be removing + the POT-Creation-Date header. + https://savannah.gnu.org/bugs/?49654 + * Improve error handling. + + -- Jakub Wilk <jw...@jwilk.net> Tue, 22 Aug 2017 21:21:13 +0200 + i18nspector (0.25.4) unstable; urgency=low * Fix crash when checking Python brace formats string that have both named diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/dependencies.txt new/i18nspector-0.25.5/doc/dependencies.txt --- old/i18nspector-0.25.4/doc/dependencies.txt 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/doc/dependencies.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,33 +0,0 @@ -The following software is needed to run i18nspector: - -* Python ≥ 3.2; - -* polib_ ≥ 1.0.0, a gettext catalogs manipulation library; - -* RPLY_, a parser generator. - -Additionally, the following software is needed to rebuild the manual page from -source: - -* docutils_ ≥ 0.6. - - -For pip users:: - - python3 -m pip install polib rply - python3 -m pip install docutils - -For Debian users:: - - apt-get install python3-polib python3-rply - apt-get install python3-docutils - - -.. _polib: - https://pypi.python.org/pypi/polib -.. _RPLY: - https://pypi.python.org/pypi/rply -.. _docutils: - http://docutils.sourceforge.net/ - -.. vim:ft=rst ts=3 sts=3 sw=3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/i18nspector.1 new/i18nspector-0.25.5/doc/i18nspector.1 --- old/i18nspector-0.25.4/doc/i18nspector.1 2017-06-23 18:25:57.000000000 +0200 +++ new/i18nspector-0.25.5/doc/i18nspector.1 2017-08-22 21:21:34.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH I18NSPECTOR 1 "2017-06-23" "i18nspector 0.25.4" "" +.TH I18NSPECTOR 1 "2017-08-22" "i18nspector 0.25.5" "" .SH NAME i18nspector \- checking tool for gettext POT, PO and MO files . @@ -2066,7 +2066,7 @@ .SS stray\-previous\-msgid .sp The message entry contains annotations about previous untranslated string -(\fB#| msgid\ \fP\fI\&...\fP), +(\fB#| msgid\fP\ \fI\&...\fP), even though the message is not marked as fuzzy. These annotations are only useful for fuzzy messages, and should be removed when unfuzzying. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/i18nspector.txt new/i18nspector-0.25.5/doc/i18nspector.txt --- old/i18nspector-0.25.4/doc/i18nspector.txt 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/doc/i18nspector.txt 2017-08-22 21:21:25.000000000 +0200 @@ -7,7 +7,7 @@ ---------------------------------------------- :manual section: 1 -:version: i18nspector 0.25.4 +:version: i18nspector 0.25.5 :date: |date| Synopsis diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/tags.txt new/i18nspector-0.25.5/doc/tags.txt --- old/i18nspector-0.25.4/doc/tags.txt 2017-06-23 18:25:55.000000000 +0200 +++ new/i18nspector-0.25.5/doc/tags.txt 2017-08-22 21:21:32.000000000 +0200 @@ -1304,7 +1304,7 @@ stray-previous-msgid ~~~~~~~~~~~~~~~~~~~~ The message entry contains annotations about previous untranslated string -(``#| msgid ``\ *...*), +(``#| msgid``\ *...*), even though the message is not marked as fuzzy. These annotations are only useful for fuzzy messages, and should be removed when unfuzzying. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/todo new/i18nspector-0.25.5/doc/todo --- old/i18nspector-0.25.4/doc/todo 1970-01-01 01:00:00.000000000 +0100 +++ new/i18nspector-0.25.5/doc/todo 2017-08-22 21:21:25.000000000 +0200 @@ -0,0 +1,217 @@ +Add more ``Plural-Forms``. Document how the current ``Plural-Forms`` were +obtained. + + * http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms + * http://unicode.org/cldr/trac/browser/trunk/common/supplemental/plurals.xml + +Complain about incorrect locale codes: + + * https://www.loc.gov/standards/iso639-2/php/code_changes.php + * ``al`` → ``sq`` + * ``bh`` → ``bho`` | ``mai`` | ``mag`` + * ``ca-XV`` → ``ca@valencia`` + * ``cn`` → ``zh`` + * ``cz`` → ``cs`` + * ``dk`` → ``da`` + * ``en_UK`` → ``en_GB`` + * ``gr`` → ``el`` + * ``in`` → ``id`` + * ``iw`` → ``he`` + * ``ji`` → ``yi`` + * ``jw`` → ``jv`` + * ``mo`` → ``ro_MD`` + * ``no`` → ``nb`` + * ``sh_BA`` → ``bs_BA`` + * ``sh_HR`` → ``hr_HR`` + * ``sh_RS`` → ``sr_RS`` + * ``sr@Latn`` → ``sr@latin`` + * ``sr_CS`` → ``sr`` + * ``sr_SR`` → ``sr_RS`` + * ``sr_YU`` → ``sr`` + * ``uk_UK`` → ``uk_UA`` + * ``vn`` → ``vi`` + +Correct locale codes in invalid format, e.g.: + + * ``da-DK`` → ``da_DK``: https://anonscm.debian.org/cgit/debian-handbook/debian-handbook.git/tree/da-DK/00a_preface.po?h=debian/8.20151209 + * ``pt_br`` → ``pt_BR``: https://sources.debian.net/data/main/p/pam-pkcs11/0.6.8-1/po/pt_br.po + * ``Pt`` → ``pt``: https://sources.debian.net/data/main/d/darcsweb/1.1-3.1/debian/po/pt.po + +Correct ``Language`` with both a natural language and a language code, e.g.: + + * ``nl (Dutch)``: https://sources.debian.net/data/main/g/garcon/0.1.12-1/po/nl.po + * ``Serbian (sr)``: https://sources.debian.net/data/main/a/at-spi2-atk/2.5.3-2/po/sr.po + +Guess language from ``Language-Team``. + + * https://translationproject.org/team/ + +Guess language from the filename even when it includes encoding. Test-cases: + + * https://sources.debian.net/src/vim/2:7.3.547-7/src/po/ + +Add ``characters=``\ … for more languages. Document how the current values were +obtained. + +Fix support for ``X-Poedit-Language: (Afan) Oromo``. + +Fix support for ``X-Poedit-Language: Serbian (Latin)``. + +Document the security model. + +Add tests for: + + * Debian source packages + * Debian binary packages + * MO files (at least against some tags) + * languages with multiple correct ``Plural-Forms`` + * lib.moparser + * all non-Python encodings + * 0x5c byte as a part of a multibyte character: + https://sources.debian.net/src/vim/2:7.3.547-7/src/po/zh_TW.po/#L13 + * SHIFT_JIS encoding: + http://git.savannah.gnu.org/cgit/gettext.git/tree/gettext-tools/src/po-lex.c?id=v0.18.3#n179 + +Detect question marks in unusual places. + +Add support for configuration files. Once it's implemented: + + * Disable ``--pedantic`` by default. + +Add support for profiles: severity of a tag may depend on whether you are +upstream, a translator, or a user. + +Add support for overrides. + +Add option for disabling/forcing colored output. + +Use `blessings <https://pypi.python.org/pypi/blessings>`_ for colored output. + +Reimplement the EUC-TW codec with PyICU. + +Check for hardcoded Language in POT files. + +Add option for printing tag descriptions. + +When emitting ``encoding-in-language-header-field``, check if the encoding +matches the one from ``Content-Type``. Test-cases: + + * https://sources.debian.net/data/main/r/rhn-client-tools/1.8.9-3/po/zh_CN.GB2312.po + +Split ``no-email-address-in-last-translator`` from ``invalid-last-translator``. +Test-cases: + + * https://sources.debian.net/data/main/m/mtpaint/3.40-1/po/de.po + * https://sources.debian.net/data/main/y/yaboot-installer/1.1.26/debian/po/hi.po + +Split ``missing-timezone-in-date`` from ``invalid-date``. + +Check for non-ASCII (translated?) project id. Test-case: + + * https://sources.debian.net/data/main/a/alarm-clock/1.2.5-1.2/po/sr.po + +Check for localized boilerplate in headers. + +Decide what to do with commas in ``Last-Translator``: either accept them, or +provide a better error message. Test-case: + + * https://sources.debian.net/data/main/i/installation-guide/20130503/po/zh_TW/using-d-i.po + +polib PO encoding detection is not robust enough. +Test-case: ``xfail-header-imitation.po`` + +Add support for system-dependent messages (minor revision 1). + +Check for PO files that are not encoding-aware: + + * https://marc.info/?l=openbsd-ports&m=98988950322667&w=2 + +Add support for MediaWiki Translate's ``invalid-plural`` flag. Test-case: + + * https://sources.debian.net/data/main/e/evolution/3.4.4-3/po/fi.po + +Add support for pygettext's ``docstring`` flag. + +Check .desktop files: + + * https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s04.html + +Check Shared Mime Info files: + + * https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html + +Figure out what to do with software that call ``gettext("")`` intentionally. +Test-case: + + * https://sources.debian.net/src/evolution/3.4.4-3/shell/main.c/#L579 + +Check for ``msgstr_plural`` without ``msgstr[N]``, and other way round. + +Verify that if *n* = plural(1) = plural(*i*) for some *i* > 1, then msgstr[*n*] +distinguishes singular and plural forms, even when no numeral is involved. + + * https://bugs.debian.org/753946#51 + +Add support for more string formats (in order of popularity on GitHub):: + + php-format + javascript-format + perl-format + java-format + csharp-format + kde-format + sh-format + qt-format + tcl-format + perl-brace-format + scheme-format + ycp-format + lisp-format + awk-format + objc-format + object-pascal-format + librep-format + smalltalk-format + boost-format + qt-plural-format + lua-format + kde-kuit + gfc-internal-format + gcc-internal-format + elisp-format + +Improve C format string checks: + + * Check for the ``I`` C format string flag in msgid. + * Recognize type mismatch between ``%*d%d`` and ``%d%*d``. + * Make sure ``%%`` is treated as text wrt. omitting integer conversion. + +SHIFT_JIS and JOHAB encodings are broken in Python; or at least they +are not compatible with glibc. Implement a work-around. Test-case:: + + assert b'\\'.decode('SHIFT_JIS') == '\N{YEN SIGN}' + assert b'\\'.decode('JOHAB') == '\N{WON SIGN}' + +Timezone abbreviations not only are not unique, but also can change their +meaning over time. + + * https://mm.icann.org/pipermail/tz/2014-June/021089.html + +Check for capitalization inconsistencies. + +Language codes for some locales supported by glibc aren't recognized:: + + ayc ber brx cmn hak hne lij lzh mhr nan nhn pap quz shs szl the unm wae yue + +The tag name ``invalid-language`` might be misleading. +Rename or split it. + +Check for ``li.org`` mailing lists in ``Language-Team``. + + * https://lists.gnu.org/archive/html/bug-gettext/2016-02/msg00003.html + +Add support for xgettext message syntax check flags: + + * http://git.savannah.gnu.org/cgit/gettext.git/commit/?id=d9fc3d2a3f43 + +.. vim:ft=rst ts=3 sts=3 sw=3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/doc/todo.txt new/i18nspector-0.25.5/doc/todo.txt --- old/i18nspector-0.25.4/doc/todo.txt 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/doc/todo.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,217 +0,0 @@ -Add more ``Plural-Forms``. Document how the current ``Plural-Forms`` were -obtained. - - * http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms - * http://unicode.org/cldr/trac/browser/trunk/common/supplemental/plurals.xml - -Complain about incorrect locale codes: - - * https://www.loc.gov/standards/iso639-2/php/code_changes.php - * ``al`` → ``sq`` - * ``bh`` → ``bho`` | ``mai`` | ``mag`` - * ``ca-XV`` → ``ca@valencia`` - * ``cn`` → ``zh`` - * ``cz`` → ``cs`` - * ``dk`` → ``da`` - * ``en_UK`` → ``en_GB`` - * ``gr`` → ``el`` - * ``in`` → ``id`` - * ``iw`` → ``he`` - * ``ji`` → ``yi`` - * ``jw`` → ``jv`` - * ``mo`` → ``ro_MD`` - * ``no`` → ``nb`` - * ``sh_BA`` → ``bs_BA`` - * ``sh_HR`` → ``hr_HR`` - * ``sh_RS`` → ``sr_RS`` - * ``sr@Latn`` → ``sr@latin`` - * ``sr_CS`` → ``sr`` - * ``sr_SR`` → ``sr_RS`` - * ``sr_YU`` → ``sr`` - * ``uk_UK`` → ``uk_UA`` - * ``vn`` → ``vi`` - -Correct locale codes in invalid format, e.g.: - - * ``da-DK`` → ``da_DK``: https://anonscm.debian.org/cgit/debian-handbook/debian-handbook.git/tree/da-DK/00a_preface.po?h=debian/8.20151209 - * ``pt_br`` → ``pt_BR``: https://sources.debian.net/data/main/p/pam-pkcs11/0.6.8-1/po/pt_br.po - * ``Pt`` → ``pt``: https://sources.debian.net/data/main/d/darcsweb/1.1-3.1/debian/po/pt.po - -Correct ``Language`` with both a natural language and a language code, e.g.: - - * ``nl (Dutch)``: https://sources.debian.net/data/main/g/garcon/0.1.12-1/po/nl.po - * ``Serbian (sr)``: https://sources.debian.net/data/main/a/at-spi2-atk/2.5.3-2/po/sr.po - -Guess language from ``Language-Team``. - - * https://translationproject.org/team/ - -Guess language from the filename even when it includes encoding. Test-cases: - - * https://sources.debian.net/src/vim/2:7.3.547-7/src/po/ - -Add ``characters=``\ … for more languages. Document how the current values were -obtained. - -Fix support for ``X-Poedit-Language: (Afan) Oromo``. - -Fix support for ``X-Poedit-Language: Serbian (Latin)``. - -Document the security model. - -Add tests for: - - * Debian source packages - * Debian binary packages - * MO files (at least against some tags) - * languages with multiple correct ``Plural-Forms`` - * lib.moparser - * all non-Python encodings - * 0x5c byte as a part of a multibyte character: - https://sources.debian.net/src/vim/2:7.3.547-7/src/po/zh_TW.po/#L13 - * SHIFT_JIS encoding: - http://git.savannah.gnu.org/cgit/gettext.git/tree/gettext-tools/src/po-lex.c?id=v0.18.3#n179 - -Detect question marks in unusual places. - -Add support for configuration files. Once it's implemented: - - * Disable ``--pedantic`` by default. - -Add support for profiles: severity of a tag may depend on whether you are -upstream, a translator, or a user. - -Add support for overrides. - -Add option for disabling/forcing colored output. - -Use `blessings <https://pypi.python.org/pypi/blessings>`_ for colored output. - -Reimplement the EUC-TW codec with PyICU. - -Check for hardcoded Language in POT files. - -Add option for printing tag descriptions. - -When emitting ``encoding-in-language-header-field``, check if the encoding -matches the one from ``Content-Type``. Test-cases: - - * https://sources.debian.net/data/main/r/rhn-client-tools/1.8.9-3/po/zh_CN.GB2312.po - -Split ``no-email-address-in-last-translator`` from ``invalid-last-translator``. -Test-cases: - - * https://sources.debian.net/data/main/m/mtpaint/3.40-1/po/de.po - * https://sources.debian.net/data/main/y/yaboot-installer/1.1.26/debian/po/hi.po - -Split ``missing-timezone-in-date`` from ``invalid-date``. - -Check for non-ASCII (translated?) project id. Test-case: - - * https://sources.debian.net/data/main/a/alarm-clock/1.2.5-1.2/po/sr.po - -Check for localized boilerplate in headers. - -Decide what to do with commas in ``Last-Translator``: either accept them, or -provide a better error message. Test-case: - - * https://sources.debian.net/data/main/i/installation-guide/20130503/po/zh_TW/using-d-i.po - -polib PO encoding detection is not robust enough. -Test-case: ``xfail-header-imitation.po`` - -Add support for system-dependent messages (minor revision 1). - -Check for PO files that are not encoding-aware: - - * https://marc.info/?l=openbsd-ports&m=98988950322667&w=2 - -Add support for MediaWiki Translate's ``invalid-plural`` flag. Test-case: - - * https://sources.debian.net/data/main/e/evolution/3.4.4-3/po/fi.po - -Add support for pygettext's ``docstring`` flag. - -Check .desktop files: - - * https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s04.html - -Check Shared Mime Info files: - - * https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html - -Figure out what to do with software that call ``gettext("")`` intentionally. -Test-case: - - * https://sources.debian.net/src/evolution/3.4.4-3/shell/main.c/#L579 - -Check for ``msgstr_plural`` without ``msgstr[N]``, and other way round. - -Verify that if *n* = plural(1) = plural(*i*) for some *i* > 1, then msgstr[*n*] -distinguishes singular and plural forms, even when no numeral is involved. - - * https://bugs.debian.org/753946#51 - -Add support for more string formats (in order of popularity on GitHub):: - - php-format - javascript-format - perl-format - java-format - csharp-format - kde-format - sh-format - qt-format - tcl-format - perl-brace-format - scheme-format - ycp-format - lisp-format - awk-format - objc-format - object-pascal-format - librep-format - smalltalk-format - boost-format - qt-plural-format - lua-format - kde-kuit - gfc-internal-format - gcc-internal-format - elisp-format - -Improve C format string checks: - - * Check for the ``I`` C format string flag in msgid. - * Recognize type mismatch between ``%*d%d`` and ``%d%*d``. - * Make sure ``%%`` is treated as text wrt. omitting integer conversion. - -SHIFT_JIS and JOHAB encodings are broken in Python; or at least they -are not compatible with glibc. Implement a work-around. Test-case:: - - assert b'\\'.decode('SHIFT_JIS') == '\N{YEN SIGN}' - assert b'\\'.decode('JOHAB') == '\N{WON SIGN}' - -Timezone abbreviations not only are not unique, but also can change their -meaning over time. - - * https://mm.icann.org/pipermail/tz/2014-June/021089.html - -Check for capitalization inconsistencies. - -Language codes for some locales supported by glibc aren't recognized:: - - ayc ber brx cmn hak hne lij lzh mhr nan nhn pap quz shs szl the unm wae yue - -The tag name ``invalid-language`` might be misleading. -Rename or split it. - -Check for ``li.org`` mailing lists in ``Language-Team``. - - * https://lists.gnu.org/archive/html/bug-gettext/2016-02/msg00003.html - -Add support for xgettext message syntax check flags: - - * http://git.savannah.gnu.org/cgit/gettext.git/commit/?id=d9fc3d2a3f43 - -.. vim:ft=rst ts=3 sts=3 sw=3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/i18nspector new/i18nspector-0.25.5/i18nspector --- old/i18nspector-0.25.4/i18nspector 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/i18nspector 2017-08-22 21:21:25.000000000 +0200 @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # encoding=UTF-8 -# Copyright © 2012-2015 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal @@ -48,6 +48,11 @@ message = 'Python >= %s is required' % version_str error(message) +def require_maxunicode(n): + if sys.maxunicode < n: + message = 'sys.maxunicode >= 0x%X is required' % n + error(message) + def require_polib(*version): import polib polib_version = tuple( @@ -59,6 +64,7 @@ error(message) require_python(3, 2) +require_maxunicode(0x10FFFF) require_polib(1, 0, 0) # ---------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/lib/check/__init__.py new/i18nspector-0.25.5/lib/check/__init__.py --- old/i18nspector-0.25.4/lib/check/__init__.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/lib/check/__init__.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2012-2016 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal @@ -122,6 +122,7 @@ else: extension = '.' + self.options.file_type is_template = False + is_binary = False if extension == '.po': constructor = polib.pofile elif extension == '.pot': @@ -129,6 +130,7 @@ is_template = True elif extension in ('.mo', '.gmo'): constructor = polib.mofile + is_binary = True else: self.tag('unknown-file-type') return @@ -184,6 +186,7 @@ ctx = misc.Namespace() ctx.file = file ctx.is_template = is_template + ctx.is_binary = is_binary self.check_comments(ctx) self.check_headers(ctx) self.check_language(ctx) @@ -588,6 +591,11 @@ self.tag('duplicate-header-field-date', field) dates = sorted(set(dates)) elif len(dates) == 0: + if field.startswith('POT-') and ctx.is_binary: + # In gettext >> 0.19.8.1, msgfmt will be removing + # the POT-Creation-Date header. + # https://savannah.gnu.org/bugs/?49654 + continue self.tag('no-date-header-field', field) continue for date in dates: @@ -865,7 +873,7 @@ self.tag('partially-translated-message', message_repr(message)) if len(msgid_counter) == 0: possible_hidden_strings = False - if isinstance(ctx.file, polib.MOFile): + if ctx.is_binary: possible_hidden_strings = ctx.file.possible_hidden_strings if not possible_hidden_strings: self.tag('empty-file') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/lib/check/msgformat/__init__.py new/i18nspector-0.25.5/lib/check/msgformat/__init__.py --- old/i18nspector-0.25.4/lib/check/msgformat/__init__.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/lib/check/msgformat/__init__.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2014-2015 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2014-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/lib/cli.py new/i18nspector-0.25.5/lib/cli.py --- old/i18nspector-0.25.4/lib/cli.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/lib/cli.py 2017-08-22 21:21:25.000000000 +0200 @@ -39,7 +39,7 @@ from lib import tags from lib import terminal -__version__ = '0.25.4' +__version__ = '0.25.5' def initialize_terminal(): if sys.stdout.isatty(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/private/online-build-po-corpus new/i18nspector-0.25.5/private/online-build-po-corpus --- old/i18nspector-0.25.4/private/online-build-po-corpus 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/private/online-build-po-corpus 2017-08-22 21:21:25.000000000 +0200 @@ -29,18 +29,11 @@ import sys import tarfile import tempfile -import unittest.mock import urllib.parse import apt import apt_pkg -with unittest.mock.patch.dict(os.environ, PATH='/nonexistent'): - # tqdm wants to execute git for no good reason: - # https://github.com/tqdm/tqdm/issues/328 - # Let's foil this plan: - import tqdm - def is_po_path(path): return path.endswith(('.po', '.pot')) @@ -154,21 +147,6 @@ for pkg in packages: validate_package_name(pkg) interesting_packages.update(packages) - whole_size = 0 - for para in apt_pkg.TagFile(sources_path): - pkg = para['Package'] - if pkg not in interesting_packages: - continue - fileinfo = para['Files'].splitlines() - dscname = None - names = set() - for line in fileinfo: - _, size, _ = line.strip().split(' ') - size = int(size) - whole_size += size - progress = tqdm.tqdm(unit='B', unit_scale=True, bar_format='* {n_fmt}/{total_fmt}, {rate_fmt}, ETA: {remaining}\n') - progress.total = whole_size - progress.refresh() for para in apt_pkg.TagFile(sources_path): pkg = para['Package'] if pkg not in interesting_packages: @@ -176,9 +154,8 @@ fileinfo = para['Files'].splitlines() dscname = None names = set() - size = 0 for line in fileinfo: - _, fsize, name = line.strip().split(' ') + _, name = line.rsplit(' ', 1) ok = ( name.startswith(pkg + '_') and '/' not in name and @@ -191,7 +168,6 @@ if dscname is not None: raise RuntimeError('Package {pkg}: duplicate .dsc file'.format(pkg=pkg)) dscname = name - size += int(fsize) if dscname is None: raise RuntimeError('Package {pkg}: missing .dsc file'.format(pkg=pkg)) names = list(names) @@ -216,7 +192,6 @@ if is_po_path(unp_file): unp_path = os.path.join(unp_root, unp_file) tar.add(unp_path, filter=tarfilter) - progress.update(size) tar.close() if __name__ == '__main__': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/blackbox_tests/__init__.py new/i18nspector-0.25.5/tests/blackbox_tests/__init__.py --- old/i18nspector-0.25.4/tests/blackbox_tests/__init__.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/blackbox_tests/__init__.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2012-2015 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/blackbox_tests/header-imitation.mo.gen new/i18nspector-0.25.5/tests/blackbox_tests/header-imitation.mo.gen --- old/i18nspector-0.25.4/tests/blackbox_tests/header-imitation.mo.gen 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/blackbox_tests/header-imitation.mo.gen 2017-08-22 21:21:25.000000000 +0200 @@ -5,7 +5,6 @@ # P: no-mime-version-header-field MIME-Version: 1.0 # P: no-content-transfer-encoding-header-field Content-Transfer-Encoding: 8bit # E: no-content-type-header-field Content-Type: text/plain; charset=<encoding> -# W: no-date-header-field POT-Creation-Date # W: no-date-header-field PO-Revision-Date # W: no-project-id-version-header-field # W: no-report-msgid-bugs-to-header-field Binary files old/i18nspector-0.25.4/tests/blackbox_tests/okay-big-endian.mo and new/i18nspector-0.25.5/tests/blackbox_tests/okay-big-endian.mo differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/blackbox_tests/okay-big-endian.mo.gen new/i18nspector-0.25.5/tests/blackbox_tests/okay-big-endian.mo.gen --- old/i18nspector-0.25.4/tests/blackbox_tests/okay-big-endian.mo.gen 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/blackbox_tests/okay-big-endian.mo.gen 2017-08-22 21:21:25.000000000 +0200 @@ -1,3 +1,4 @@ #!/bin/sh set -e -u -x -exec msgfmt --endian=big "${here}/okay.po" -o "${target}" +exec grep -v '^"POT-Creation-Date: ' "${here}/okay.po"\ +| msgfmt --endian=big - -o "${target}" Binary files old/i18nspector-0.25.4/tests/blackbox_tests/okay-little-endian.mo and new/i18nspector-0.25.5/tests/blackbox_tests/okay-little-endian.mo differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/blackbox_tests/okay-little-endian.mo.gen new/i18nspector-0.25.5/tests/blackbox_tests/okay-little-endian.mo.gen --- old/i18nspector-0.25.4/tests/blackbox_tests/okay-little-endian.mo.gen 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/blackbox_tests/okay-little-endian.mo.gen 2017-08-22 21:21:25.000000000 +0200 @@ -1,3 +1,4 @@ #!/bin/sh set -e -u -x -exec msgfmt --endian=little "${here}/okay.po" -o "${target}" +exec grep -v '^"POT-Creation-Date: ' "${here}/okay.po"\ +| msgfmt --endian=little - -o "${target}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/coverage.txt new/i18nspector-0.25.5/tests/coverage.txt --- old/i18nspector-0.25.4/tests/coverage.txt 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/coverage.txt 2017-08-22 21:21:25.000000000 +0200 @@ -3,10 +3,10 @@ Name Stmts Miss Branch BrPart Cover Missing ---------------------------------------------------------------------------- lib.py 1 0 0 0 100% -lib/check.py 796 745 501 0 4% 81-85, 88-101, 109, 115-197, 200-216, 220-352, 356-500, 504-576, 580-618, 623-658, 663-707, 710-788, 791-871, 874-988, 991-998, 1001-1017, 1022 +lib/check.py 801 750 503 0 4% 81-85, 88-101, 109, 115-200, 203-219, 223-355, 359-503, 507-579, 583-626, 631-666, 671-715, 718-796, 799-879, 882-996, 999-1006, 1009-1025, 1030 lib/check/msgformat.py 82 69 36 0 11% 32, 36, 39, 42-152 lib/check/msgformat/c.py 67 56 36 0 11% 37-44, 47-105, 108-129 -lib/check/msgformat/pybrace.py 34 26 13 0 17% 17-28, 31-55 +lib/check/msgformat/pybrace.py 35 26 13 0 19% 37-48, 51-75 lib/check/msgformat/python.py 77 67 47 0 8% 37-109, 112-149 lib/check/msgrepr.py 11 7 2 0 31% 28-34 lib/cli.py 156 122 44 0 17% 45-49, 58-67, 70-71, 74-76, 82-112, 115-120, 126-132, 135-143, 146-154, 160, 168-188, 191-225 @@ -28,4 +28,4 @@ lib/terminal.py 55 24 4 0 53% 79-106 lib/xml.py 21 0 2 0 100% ---------------------------------------------------------------------------- -TOTAL 3442 1421 1509 30 55% +TOTAL 3448 1426 1511 30 55% diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/test_encodings.py new/i18nspector-0.25.5/tests/test_encodings.py --- old/i18nspector-0.25.4/tests/test_encodings.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/test_encodings.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2012-2014 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/test_ling.py new/i18nspector-0.25.5/tests/test_ling.py --- old/i18nspector-0.25.4/tests/test_ling.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/test_ling.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2012-2016 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/test_misc.py new/i18nspector-0.25.5/tests/test_misc.py --- old/i18nspector-0.25.4/tests/test_misc.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/test_misc.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2012-2016 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/test_moparser.py new/i18nspector-0.25.5/tests/test_moparser.py --- old/i18nspector-0.25.4/tests/test_moparser.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/test_moparser.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2014-2015 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2014-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/test_polib4us.py new/i18nspector-0.25.5/tests/test_polib4us.py --- old/i18nspector-0.25.4/tests/test_polib4us.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/test_polib4us.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2013-2014 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2013-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/i18nspector-0.25.4/tests/test_terminal.py new/i18nspector-0.25.5/tests/test_terminal.py --- old/i18nspector-0.25.4/tests/test_terminal.py 2017-06-23 18:25:45.000000000 +0200 +++ new/i18nspector-0.25.5/tests/test_terminal.py 2017-08-22 21:21:25.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright © 2012-2016 Jakub Wilk <jw...@jwilk.net> +# Copyright © 2012-2017 Jakub Wilk <jw...@jwilk.net> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal