public void endCode() { Code c = null; try { c = codeStack.pop(); } catch (EmptyStackException e) { throw new OkapiIllegalFilterOperationException( "Trying to end a Code that does not exist. Did you call startCode?", e); } ITextUnit tu = peekMostRecentTextUnit(); if (tu == null) return; // We can use the first part as nothing is segment at this point LocaleId trgLoc = getTargetLocale(); if (trgLoc == null) { tu.getSource().getFirstContent().append(c); } else { if (tu.getTarget(trgLoc) == null) { tu.createTarget(trgLoc, true, ITextUnit.CREATE_EMPTY); } tu.getTarget(trgLoc).getFirstContent().append(c); } }
private void processTextUnit(Event event) { try { ITextUnit tu = event.getTextUnit(); if (tu.isEmpty()) { return; // Do not write out entries with empty source } String verseId = tu.getId(); Matcher m = VERSIFIED_ID_COMPILED.matcher(verseId); // if this is from an original versified file with book:chapter:verse // then we just want to output the verse part (a number) if (m.matches()) { verseId = m.group(1); } writer.write("|v" + verseId + linebreak); // source writeTextContainer(tu.getSource()); // <TARGET> tag writer.write(linebreak + "<TARGET>" + linebreak); writeTextContainer(tu.getTarget(language)); // there is always two newlines after the target text as formatting unless the target is empty if (tu.getTarget(language) == null || tu.getTarget(language).isEmpty()) { writer.write(linebreak); } else { writer.write(linebreak + linebreak); } } catch (IOException e) { throw new OkapiIOException("Error writing a versified text unit.", e); } }
/** * Simplifies all possible tags in the source part of a given text unit resource. If the * TextUnit has a target then skip simplification. * @param textUnit the given text unit * @param rules rules for the data-driven simplification * @param removeLeadingTrailingCodes true to remove leading and/or trailing codes * of the source part and place their text in the corresponding inter-segment TextPart. * @param mergeCodes true to merge adjacent codes, false to leave as-is */ public static void simplifyCodesPostSegmentation(ITextUnit textUnit, String rules, boolean removeLeadingTrailingCodes, boolean mergeCodes) { if (textUnit == null || TextUnitUtil.isEmpty(textUnit) || !textUnit.isTranslatable()) { return; } // source simplifyCodesPostSegmentation(textUnit.getSource(), rules, removeLeadingTrailingCodes, mergeCodes); // codes can become desynchronized in target - depend on TextUnitMerger // to align codes and reset matching id's for (LocaleId tl : textUnit.getTargetLocales()) { simplifyCodesPostSegmentation(textUnit.getTarget(tl), rules, removeLeadingTrailingCodes, mergeCodes); } }
public static boolean isApproved(ITextUnit tu, LocaleId targetLocale) { if ( !tu.isTranslatable() ) return false; Property prop = tu.getTargetProperty(targetLocale, Property.APPROVED); if ( prop != null ) { if ( "yes".equals(prop.getValue()) ) return true; } return false; }
encoderManager.updateEncoder(tu.getMimeType()); TextContainer srcCont = tu.getSource(); TextContainer trgCont = null; if ( locToUse != null ) { // Expects a target output trgCont = tu.getTarget(locToUse); trgCont = tu.createTarget(locToUse, false, IResource.CREATE_EMPTY); if ( !tu.isTranslatable() ) { || ( trgCont.getAnnotation(AltTranslationsAnnotation.class) != null )) return getSegmentedText(srcCont, trgCont, locToUse, context, tu.isReferent(), tu.getId());
tuRes.setSkeleton(skel); boolean hasTarget = (rule.targetGroup != -1); tuRes.setTargetContent(trgLang, new TextFragment(result.group(rule.targetGroup))); tuRes.setMimeType(MIMETYPE); //TODO: work-out something for escapes in regex if ( rule.preserveWS ) { tuRes.setPreserveWhitespaces(true); tuRes.getSource().unwrap(true, true); if ( hasTarget ) tuRes.getTarget(trgLang).unwrap(true, true); rule.codeFinder.process(tuRes.getSource().getFirstContent()); if ( hasTarget ) rule.codeFinder.process(tuRes.getTarget(trgLang).getFirstContent()); String name = result.group(rule.nameGroup); if ( name.length() > 0 ) { tuRes.setName(name); String note = result.group(rule.noteGroup); if ( note.length() > 0 ) { tuRes.setProperty(new Property(Property.NOTE, note, true));
tu.setPreserveWhitespaces(true); Property approvedProp = tu.getTargetProperty(trgLang, Property.APPROVED); if (approvedProp.getValue().equals("yes")) { approvedProp.setValue("no"); tu.setTargetProperty(trgLang, approvedProp); logger.warn( "Translation (Line {}) is empty. type attribute was updated to unfinished.", params.getCodeFinder().process(tu.getSource().getFirstContent()); params.getCodeFinder().process( tu.getTarget(trgLang).getFirstContent()); tu.setSkeleton(skel); tu.setMimeType(MimeTypeMapper.TS_MIME_TYPE); if (ts.messageId != null) { tu.setName(ts.messageId);
/** * Gets the source content of this entry (can be empty) * If the result is empty, it means the source is the same as the source of the object (segment or text container) * is attached to. * @return the source content of this entry (can be empty) */ public TextContainer getSource () { return tu.getSource(); }
public static void unsegmentTU(ITextUnit tu) { tu.getSource().joinAll(); for (LocaleId trgLoc : tu.getTargetLocales()) { tu.getTarget(trgLoc).joinAll(); } } }
private void processWithoutSegments (ITextUnit tu) { try { // ID reference to allow merging back and duplication of msgid text writer.write("\"" + crumbs + ":" + TEXTUNIT_CRUMB+tu.getId() + "\"\t"); // Source writeQuotedContent(tu.getSource()); writer.write("\t"); // Target TextContainer tc = tu.getTarget(language); if ( tc != null ) { writeQuotedContent(tc); } // EOL writer.write(LINEBREAK); } catch ( IOException e ) { throw new OkapiIOException("Error writing text unit.", e); } }
code = new Code(TagType.PLACEHOLDER, "index", "'>"+TextFragment.makeRefMarker(refTU.getId())+"<String `"); code.setReferenceFlag(true); extractedMarker = true; tu.setPreserveWhitespaces(true); tu.setSourceContent(tf); tu.setMimeType(MimeTypeMapper.MIF_MIME_TYPE); tu.setName(resname); resname = null; processILC(tu); queue.add(new Event(EventType.TEXT_UNIT, tu, skel));
tu.setMimeType(this.mimeType); tu.setPreserveWhitespaces(this.preserveWhitespace); if (e != null && e.getEventType() == EventType.TEXT_UNIT) { ITextUnit parentTu = e.getTextUnit(); if (parentTu.getSource().isEmpty()) { convertTempTextUnitToDocumentPart(); tu.setIsReferent(true); GenericSkeleton skel = (GenericSkeleton) parentTu.getSkeleton(); if (skel == null) { skel = new GenericSkeleton(); parentTu.setSkeleton(skel); currentSkeleton = new GenericSkeleton(); processAllEmbedded(startMarker.toString(), locale, propertyTextUnitPlaceholders, false, tu); tu.setSkeleton(currentSkeleton); currentSkeleton.addContentPlaceholder(tu); tempFilterEventStack.push(new Event(EventType.TEXT_UNIT, tu, currentSkeleton));
if (tu == null || tu.isEmpty() || !TextUnitUtil.isStandalone(tu)) { return event; if (tu.getTargetLocales().isEmpty()) { int segCount = 0; for (Segment srcSeg: tu.getSourceSegments()) { if (srcSeg != null) { ITextUnit segmentTu = tu.clone(); segmentTu.setId(segmentTu.getId() + ":" + Integer.toString(++segCount)); segmentTu.setSourceContent(srcSeg.text); textUnitEvents.add(new Event(EventType.TEXT_UNIT, segmentTu)); IAlignedSegments alignedSegments = tu.getAlignedSegments(); for (LocaleId variantTrgLoc : tu.getTargetLocales()) { for (LocaleId l : tu.getTargetLocales()) { Segment trgSeg = alignedSegments.getCorrespondingTarget(srcSeg, l); if (trgSeg != null) { ITextUnit segmentTu = tu.clone(); segmentTu.setId(segmentTu.getId() + ":" + Integer.toString(++segCount)); segmentTu.setSourceContent(srcSeg.text); segmentTu.setTargetContent(l, trgSeg.text); textUnitEvents.add(new Event(EventType.TEXT_UNIT, segmentTu));
tuRes.setMimeType(MIMETYPE); //TODO: work-out something for escapes in regex if ( rule.preserveWS ) { tuRes.setPreserveWhitespaces(true); tuRes.getSource().unwrap(true, true); rule.codeFinder.process(tuRes.getSource().getFirstContent()); if ( name.length() > 0 ) { if ( count > 1 ) { // Add a number after the first string tuRes.setName(String.format("%s%d", name, count)); tuRes.setName(name); String note = result.group(rule.noteGroup); if ( note.length() > 0 ) { tuRes.setProperty(new Property(Property.NOTE, note, true));
public ITextUnit convert (Unit unit) { ITextUnit tu = new TextUnit(unit.getId()); tu.setName(unit.getName()); tu.setType(unit.getType()); tu.setProperty(new Property(Property.NOTE, tmp.toString(), true)); TextContainer tc = tu.getSource(); convert(unit, tc, false); tc = tu.createTarget(trgLoc, false, IResource.CREATE_EMPTY); convert(unit, tc, true);
@Override protected Event handleTextUnit (Event event) { ITextUnit tu = event.getTextUnit(); long srcWordCount = 0; if ( tu.isEmpty() || !tu.isTranslatable() ) { return event; } if ( !tu.getSource().isEmpty() ) { srcWordCount = countWords(tu.getSource().getUnSegmentedContentCopy().getText()); srcBatchItemWordCount += srcWordCount; } MetricsAnnotation sma = tu.getSource().getAnnotation(MetricsAnnotation.class); if ( sma == null ) { sma = new MetricsAnnotation(); tu.getSource().setAnnotation(sma); } Metrics m = sma.getMetrics(); m.setMetric(GMX.TotalWordCount, srcWordCount); return event; }
private void mergeTextUnit(ReferenceableEvent referenceableEvent) { ITextUnit textUnit = referenceableEvent.getEvent().getTextUnit(); StyledTextSkeleton styledTextSkeleton = (StyledTextSkeleton) textUnit.getSkeleton(); storyChildElements = styledTextSkeleton.getStoryChildElements(); codeMap = styledTextSkeleton.getCodeMap(); savedStoryChildElements = new ArrayDeque<>(); savedBreak = saveBreak(storyChildElements); storyChildElements.clear(); currentStyleDefinitions = new ArrayDeque<>(); contentTextBuilder = new StringBuilder(); contentEvents = new ArrayList<>(); mergeTextContainer(null == textUnit.getTarget(targetLocale) ? textUnit.getSource() : textUnit.getTarget(targetLocale)); }
tu.setName(tu.getId()); // In this case resname == id tu.setSourceContent(item.getSource().getContent()); if ( !item.isTargetEmpty() ) { TextContainer tc = tu.createTarget(trgLoc, false, IResource.CREATE_EMPTY); tc.setContent(item.getTarget().getContent()); if ( !Util.isEmpty(data) ) tu.setType(data); data = item.getMetadata().get(MetadataType.GROUP_NAME); if ( !Util.isEmpty(data) ) tu.setProperty(new Property("Txt::GroupName", data, false)); data = item.getMetadata().get(MetadataType.FILE_NAME); if ( !Util.isEmpty(data) ) tu.setProperty(new Property("Txt::FileName", data, false)); return new Event(EventType.TEXT_UNIT, tu);