def _extract_msgidcomments(self, text=None): """Extract KDE style msgid comments from the unit. @rtype: String @return: Returns the extracted msgidcomments found in this unit's msgid. """ if text: return pocommon.extract_msgid_comment(text) else: return self.msgidcomment
def _extract_msgidcomments(self, text=None): """Extract KDE style msgid comments from the unit. :rtype: String :return: Returns the extracted msgidcomments found in this unit's msgid. """ if not text: text = (gpo.po_message_msgid(self._gpo_message) or "").decode(self.CPO_ENC) if text: return pocommon.extract_msgid_comment(text) return u""
def merge(self, otherpo, overwrite=False, comments=True, authoritative=False): """Merges the otherpo (with the same msgid) into this one. Overwrite non-blank self.msgstr only if overwrite is True merge comments only if comments is True """ def mergelists(list1, list2, split=False): #Split if directed to do so: if split: splitlist1 = [] splitlist2 = [] for item in list1: splitlist1.extend(item.split()) for item in list2: splitlist2.extend(item.split()) list1.extend([item for item in splitlist2 if not item in splitlist1]) else: #Normal merge, but conform to list1 newline style if list1 != list2: for item in list2: # avoid duplicate comment lines (this might cause some problems) if item not in list1 or len(item) < 5: list1.append(item) if not isinstance(otherpo, pounit): super(pounit, self).merge(otherpo, overwrite, comments) return if comments: mergelists(self.othercomments, otherpo.othercomments) mergelists(self.typecomments, otherpo.typecomments) if not authoritative: # We don't bring across otherpo.automaticcomments as we consider ourself # to be the the authority. Same applies to otherpo.msgidcomments mergelists(self.automaticcomments, otherpo.automaticcomments) # mergelists(self.msgidcomments, otherpo.msgidcomments) #XXX? mergelists(self.sourcecomments, otherpo.sourcecomments, split=True) if not self.istranslated() or overwrite: # Remove kde-style comments from the translation (if any). XXX - remove if pocommon.extract_msgid_comment(otherpo.target): otherpo.target = otherpo.target.replace('_: ' + otherpo._extract_msgidcomments()+ '\n', '') self.target = otherpo.target if self.source != otherpo.source or self.getcontext() != otherpo.getcontext(): self.markfuzzy() else: self.markfuzzy(otherpo.isfuzzy()) elif not otherpo.istranslated(): if self.source != otherpo.source: self.markfuzzy() else: if self.target != otherpo.target: self.markfuzzy()
def merge(self, otherpo, overwrite=False, comments=True, authoritative=False): """Merges the otherpo (with the same msgid) into this one. Overwrite non-blank self.msgstr only if overwrite is True merge comments only if comments is True """ def mergelists(list1, list2, split=False): #Split if directed to do so: if split: splitlist1 = [] splitlist2 = [] for item in list1: splitlist1.extend(item.split()) for item in list2: splitlist2.extend(item.split()) list1.extend([item for item in splitlist2 if not item in splitlist1]) else: #Normal merge, but conform to list1 newline style if list1 != list2: for item in list2: # avoid duplicate comment lines (this might cause some problems) if item not in list1 or len(item) < 5: list1.append(item) if not isinstance(otherpo, pounit): super(pounit, self).merge(otherpo, overwrite, comments) return if comments: mergelists(self.othercomments, otherpo.othercomments) mergelists(self.typecomments, otherpo.typecomments) if not authoritative: # We don't bring across otherpo.automaticcomments as we consider ourself # to be the the authority. Same applies to otherpo.msgidcomments mergelists(self.automaticcomments, otherpo.automaticcomments) # mergelists(self.msgidcomments, otherpo.msgidcomments) #XXX? mergelists(self.sourcecomments, otherpo.sourcecomments, split=True) if not self.istranslated() or overwrite: # Remove kde-style comments from the translation (if any). XXX - remove if pocommon.extract_msgid_comment(otherpo.target): otherpo.target = otherpo.target.replace('_: ' + otherpo._extract_msgidcomments()+ '\n', '') self.target = otherpo.target if self.source != otherpo.source or self.getcontext() != otherpo.getcontext(): self.markfuzzy() else: self.markfuzzy(otherpo.isfuzzy()) elif not otherpo.istranslated(): if self.source != otherpo.source: self.markfuzzy() else: if self.target != otherpo.target: self.markfuzzy()
def merge(self, otherpo, overwrite=False, comments=True, authoritative=False): """Merges the otherpo (with the same msgid) into this one. Overwrite non-blank self.msgstr only if overwrite is True merge comments only if comments is True """ def mergelists(list1, list2, split=False): # Decode where necessary (either all bytestrings or all unicode) if six.text_type in [type(item) for item in list2] + [type(item) for item in list1]: for position, item in enumerate(list1): if isinstance(item, bytes): list1[position] = item.decode("utf-8") for position, item in enumerate(list2): if isinstance(item, bytes): list2[position] = item.decode("utf-8") #Determine the newline style of list2 lineend = "" if list2 and list2[0]: for candidate in ["\n", "\r", "\n\r"]: if list2[0].endswith(candidate): lineend = candidate if not lineend: lineend = "" #Split if directed to do so: if split: splitlist1 = [] splitlist2 = [] for item in list1: splitlist1.extend(item.split()) for item in list2: splitlist2.extend(item.split()) list1.extend([item for item in splitlist2 if not item in splitlist1]) else: #Normal merge, but conform to list1 newline style if list1 != list2: for item in list2: item = item.rstrip(lineend) # avoid duplicate comment lines (this might cause some problems) if item not in list1 or len(item) < 5: list1.append(item) if not isinstance(otherpo, pounit): super(pounit, self).merge(otherpo, overwrite, comments) return if comments: mergelists(self.othercomments, otherpo.othercomments) mergelists(self.typecomments, otherpo.typecomments) if not authoritative: # We don't bring across otherpo.automaticcomments as we consider ourself # to be the the authority. Same applies to otherpo.msgidcomments mergelists(self.automaticcomments, otherpo.automaticcomments) # mergelists(self.msgidcomments, otherpo.msgidcomments) #XXX? mergelists(self.sourcecomments, otherpo.sourcecomments, split=True) if not self.istranslated() or overwrite: # Remove kde-style comments from the translation (if any). XXX - remove if pocommon.extract_msgid_comment(otherpo.target): otherpo.target = otherpo.target.replace('_: ' + otherpo._extract_msgidcomments() + '\n', '') self.target = otherpo.target if self.source != otherpo.source or self.getcontext() != otherpo.getcontext(): self.markfuzzy() else: self.markfuzzy(otherpo.isfuzzy()) elif not otherpo.istranslated(): if self.source != otherpo.source: self.markfuzzy() else: if self.target != otherpo.target: self.markfuzzy()
def merge(self, otherpo, overwrite=False, comments=True, authoritative=False): """Merges the otherpo (with the same msgid) into this one. Overwrite non-blank self.msgstr only if overwrite is True merge comments only if comments is True """ def mergelists(list1, list2, split=False): # Decode where necessary (either all bytestrings or all unicode) if six.text_type in [type(item) for item in list2 ] + [type(item) for item in list1]: for position, item in enumerate(list1): if isinstance(item, bytes): list1[position] = item.decode("utf-8") for position, item in enumerate(list2): if isinstance(item, bytes): list2[position] = item.decode("utf-8") #Determine the newline style of list2 lineend = "" if list2 and list2[0]: for candidate in ["\n", "\r", "\n\r"]: if list2[0].endswith(candidate): lineend = candidate if not lineend: lineend = "" #Split if directed to do so: if split: splitlist1 = [] splitlist2 = [] for item in list1: splitlist1.extend(item.split()) for item in list2: splitlist2.extend(item.split()) list1.extend( [item for item in splitlist2 if not item in splitlist1]) else: #Normal merge, but conform to list1 newline style if list1 != list2: for item in list2: item = item.rstrip(lineend) # avoid duplicate comment lines (this might cause some problems) if item not in list1 or len(item) < 5: list1.append(item) if not isinstance(otherpo, pounit): super(pounit, self).merge(otherpo, overwrite, comments) return if comments: mergelists(self.othercomments, otherpo.othercomments) mergelists(self.typecomments, otherpo.typecomments) if not authoritative: # We don't bring across otherpo.automaticcomments as we consider ourself # to be the the authority. Same applies to otherpo.msgidcomments mergelists(self.automaticcomments, otherpo.automaticcomments) # mergelists(self.msgidcomments, otherpo.msgidcomments) #XXX? mergelists(self.sourcecomments, otherpo.sourcecomments, split=True) if not self.istranslated() or overwrite: # Remove kde-style comments from the translation (if any). XXX - remove if pocommon.extract_msgid_comment(otherpo.target): otherpo.target = otherpo.target.replace( '_: ' + otherpo._extract_msgidcomments() + '\n', '') self.target = otherpo.target if self.source != otherpo.source or self.getcontext( ) != otherpo.getcontext(): self.markfuzzy() else: self.markfuzzy(otherpo.isfuzzy()) elif not otherpo.istranslated(): if self.source != otherpo.source: self.markfuzzy() else: if self.target != otherpo.target: self.markfuzzy()