From 89cb470e38b7cc4c0adf4f51810bf63c8b821461 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Thu, 10 Aug 2017 12:45:58 -0400 Subject: [PATCH] LP#1709932: recognize more strings from oils_i18n_gettext() This patch makes db-seed-i18n.py more flexible about where commas between strings in invocations of oils_i18n_gettext() can appear, reduces the chances that strings fail to be grabbed for translation. It also improves the error message shown when parsing errors occur. To test ------- [1] Apply patch and run cd build/i18n && make sql2pot [2] Verify that no error messages are produced during this step. [3] Inspect the changes to po/db.seed/db.seed.pot and verify that additional strings are added, including "Item Print Label Font Family". [4] (optional) Deliberately remove a comma from an oils_i18n_gettext invocation in 950.data.seed-values.sql and run make sql2pot again. The error message shoudl now include the failing chunk of text. Signed-off-by: Galen Charlton Signed-off-by: Chris Sharp --- build/i18n/scripts/db-seed-i18n.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/i18n/scripts/db-seed-i18n.py b/build/i18n/scripts/db-seed-i18n.py index 7ecd7ce31d..0528982158 100755 --- a/build/i18n/scripts/db-seed-i18n.py +++ b/build/i18n/scripts/db-seed-i18n.py @@ -55,8 +55,8 @@ class SQL(basel10n.BaseL10N): num = 0 findi18n = re.compile(r'oils_i18n_gettext\((.*?)\'\s*\)', re.UNICODE+re.MULTILINE+re.DOTALL) - intkey = re.compile(r'\s*(?P\d+)\s*,\s*E?\'(?P.+?)\',\s*\'(?P.+?)\',\s*\'(?P.+?)$', re.UNICODE+re.MULTILINE+re.DOTALL) - textkey = re.compile(r'\s*\'(?P.*?)\'\s*,\s*E?\'(?P.+?)\',\s*\'(?P.+?)\',\s*\'(?P.+?)$', re.UNICODE+re.MULTILINE+re.DOTALL) + intkey = re.compile(r'\s*(?P\d+)\s*,\s*E?\'(?P.+?)\'\s*,\s*\'(?P.+?)\'\s*,\s*\'(?P.+?)$', re.UNICODE+re.MULTILINE+re.DOTALL) + textkey = re.compile(r'\s*\'(?P.*?)\'\s*,\s*E?\'(?P.+?)\'\s*,\s*\'(?P.+?)\'\s*,\s*\'(?P.+?)$', re.UNICODE+re.MULTILINE+re.DOTALL) serts = dict() # Iterate through the source SQL grabbing table names and l10n strings @@ -73,7 +73,7 @@ class SQL(basel10n.BaseL10N): # Otherwise, it must be a text-based primary key parameter fi18n = textkey.search(parms) if fi18n is None: - raise Exception("Cannot parse the source. Empty strings in there?") + raise Exception("Cannot parse the source. Empty strings in there? String I cannot parse is %s" % parms) fq_field = "%s.%s" % (fi18n.group('class'), fi18n.group('property')) -- 2.43.2