[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60813] tags/blender-2.69-release/blender/ release/scripts/modules/bl_i18n_utils: More complete handling of printf formatting in msgid/msgstr checks.

Bastien Montagne montagne29 at wanadoo.fr
Thu Oct 17 11:02:04 CEST 2013


Revision: 60813
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60813
Author:   mont29
Date:     2013-10-17 09:02:03 +0000 (Thu, 17 Oct 2013)
Log Message:
-----------
More complete handling of printf formatting in msgid/msgstr checks.

Modified Paths:
--------------
    tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/settings.py
    tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/utils.py

Modified: tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/settings.py
===================================================================
--- tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/settings.py	2013-10-17 06:52:26 UTC (rev 60812)
+++ tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/settings.py	2013-10-17 09:02:03 UTC (rev 60813)
@@ -257,6 +257,16 @@
           for it in ("BLF_I18N_MSGID_MULTI_CTXT",))
 )
 
+# Check printf mismatches between msgid and msgstr.
+CHECK_PRINTF_FORMAT = (
+    r"(?!<%)(?:%%)*%"          # Begining, with handling for crazy things like '%%%%%s'
+    r"[-+#0]?"                 # Flags (note: do not add the ' ' (space) flag here, generates too much false positives!)
+    r"(?:\*|[0-9]+)?"          # Width
+    r"(?:\.(?:\*|[0-9]+))?"    # Precision
+    r"(?:[hljztL]|hh|ll)?"     # Length
+    r"[tldiuoxXfFeEgGaAcspn]"  # Specifiers (note we have Blender-specific %t and %l ones too)
+)
+
 # Should po parser warn when finding a first letter not capitalized?
 WARN_MSGID_NOT_CAPITALIZED = True
 

Modified: tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/utils.py
===================================================================
--- tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/utils.py	2013-10-17 06:52:26 UTC (rev 60812)
+++ tags/blender-2.69-release/blender/release/scripts/modules/bl_i18n_utils/utils.py	2013-10-17 09:02:03 UTC (rev 60813)
@@ -446,10 +446,10 @@
         """
         ret = []
         default_context = self.settings.DEFAULT_CONTEXT
-        _format = re.compile("%[.0-9]*[tslfd]").findall
+        _format = re.compile(self.settings.CHECK_PRINTF_FORMAT).findall
         done_keys = set()
+        rem = set()
         tmp = {}
-        rem = set()
         for key, msg in self.msgs.items():
             msgctxt, msgid, msgstr = msg.msgctxt, msg.msgid, msg.msgstr
             real_key = (msgctxt or default_context, msgid)
@@ -462,9 +462,10 @@
                 elif fix:
                     tmp[real_key] = msg
             done_keys.add(key)
-            if '%' in msgid and msgstr and len(_format(msgid)) != len(_format(msgstr)):
+            if '%' in msgid and msgstr and _format(msgid) != _format(msgstr):
                 if not msg.is_fuzzy:
-                    ret.append("Error! msg's format entities are not matched in msgid and msgstr ({})".format(real_key))
+                    ret.append("Error! msg's format entities are not matched in msgid and msgstr ({} / {})"
+                               "".format(real_key, msgstr))
                 if fix:
                     msg.msgstr = ""
         for k in rem:




More information about the Bf-blender-cvs mailing list