diff options
-rwxr-xr-x | solenv/bin/interim-update-module-for-gettext | 81 | ||||
-rwxr-xr-x[-rw-r--r--] | solenv/bin/update-for-gettext | 0 | ||||
-rw-r--r-- | solenv/gbuild/AllLangMoTarget.mk | 12 |
3 files changed, 87 insertions, 6 deletions
diff --git a/solenv/bin/interim-update-module-for-gettext b/solenv/bin/interim-update-module-for-gettext new file mode 100755 index 000000000000..0fe222504273 --- /dev/null +++ b/solenv/bin/interim-update-module-for-gettext @@ -0,0 +1,81 @@ +#!/usr/bin/python + +import binascii +import polib +from os import listdir, walk, remove +from os.path import isdir, join + +import sys + +if len(sys.argv) < 2: + print(" Syntax: interim-update-module-for-gettext path/to/dir/of/languages/language/module output.po") + sys.exit(2) + +uiline = False + +subpath = sys.argv[1] +print >> sys.stderr, "interim-update-for-gettext: processing ", subpath +messages = None +npos = 0 +for dirpath, dirname, filenames in walk(subpath): + for filename in filenames: + ipath = join(dirpath, filename) + print >> sys.stderr, "interim-update-for-gettext: merging ", ipath + po = polib.pofile(ipath) + if len(po) != 0: + samplefile = po[0].occurrences[0][0] + if samplefile.endswith(".src") or samplefile.endswith(".ui"): + if npos == 0: + messages = po + else: + for entry in po: + messages.append(entry) + npos = npos + 1 + +if npos > 0: + middle = 0 + for entry in messages: + if not len(entry.occurrences): + continue + location = entry.occurrences[0][0] + if location.endswith(".ui"): + uiline = True + else: + uiline = False + lines = entry.msgctxt.split('\n') + if uiline: + widgetid = lines[1] + typeid = lines[2] + entry.msgctxt = location[:-3] + "|" + widgetid + if typeid == "tooltip_text": + entry.msgctxt = entry.msgctxt + "|" + typeid + if entry.msgctxt == 'calloutpage|position' and entry.msgid == 'Middle': + middle = middle + 1 + if middle == 2: + entry.msgid = "Center" + else: + ctxline = lines[1] + if (ctxline.endswith("+RID_SC_FUNC_DESCRIPTIONS_START")): + ctxline = ctxline[:-len("+RID_SC_FUNC_DESCRIPTIONS_START")] + elif (ctxline.endswith("+RID_GLOBSTR_OFFSET")): + ctxline = ctxline[:-len("+RID_GLOBSTR_OFFSET")] + entry.msgctxt = ctxline + comments = entry.comment.split('\n') + keyid = entry.msgctxt + '|' + entry.msgid + comments[-1] = polib.genKeyId(keyid.encode('utf-8')) + entry.comment = "\n".join(comments) +else: + messages = polib.POFile() + messages.metadata = { + 'Project-Id-Version': '1.0', + 'Report-Msgid-Bugs-To': 'you@example.com', + 'POT-Creation-Date': '2007-10-18 14:00+0100', + 'PO-Revision-Date': '2007-10-18 14:00+0100', + 'Last-Translator': 'you <you@example.com>', + 'Language-Team': 'English <yourteam@example.com>', + 'MIME-Version': '1.0', + 'Content-Type': 'text/plain; charset=utf-8', + 'Content-Transfer-Encoding': '8bit', + } + +messages.save(sys.argv[2]) diff --git a/solenv/bin/update-for-gettext b/solenv/bin/update-for-gettext index 1234b248490f..1234b248490f 100644..100755 --- a/solenv/bin/update-for-gettext +++ b/solenv/bin/update-for-gettext diff --git a/solenv/gbuild/AllLangMoTarget.mk b/solenv/gbuild/AllLangMoTarget.mk index c5cf2cf1005d..d3953b1163ae 100644 --- a/solenv/gbuild/AllLangMoTarget.mk +++ b/solenv/gbuild/AllLangMoTarget.mk @@ -32,15 +32,15 @@ $(call gb_MoTarget_get_clean_target,%) : $(call gb_MoTarget_get_target,$*) \ $(call gb_MoTarget_get_install_target,$*)) -#for the moment merge existing source and ui translations into a single .po, -#and minimize msgctxt -#eventually instead can do something like -#msgfmt $(gb_POLOCATION)/$(LANGUAGE)/$(LIBRARY)/messages.po -o $@) $(call gb_MoTarget_get_target,%) : $(gb_Helper_MISCDUMMY) $(call gb_Output_announce,$*,$(true),MO,2) +# after translate should look like this +# $(call gb_Helper_abbreviate_dirs,\ +# mkdir -p $(dir $@) && \ +# $(MSGUNIQ) $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION)/messages.po | $(MSGFMT) - -o $@) $(call gb_Helper_abbreviate_dirs,\ - mkdir -p $(dir $@) && \ - if test -e $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION)/messages.po; then $(MSGUNIQ) $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION)/messages.po | $(MSGFMT) - -o $@; else touch $@; fi) + mkdir -p $(dir $@) && $(SRCDIR)/solenv/bin/interim-update-module-for-gettext $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION) $@.po && \ + $(MSGUNIQ) --force-po $@.po | $(MSGFMT) - -o $@) #$(info $(call gb_MoTarget_get_target,$(1))) define gb_MoTarget_MoTarget |