@Override public void segmentTarget(ISegmenter segmenter, LocaleId targetLocale) { TextContainer theTarget = parent.createTarget(targetLocale, false, IResource.COPY_SEGMENTATION); segmenter.computeSegments(theTarget); theTarget.getSegments().create(segmenter.getRanges()); // TODO: invalidate source and other targets? or this one. // but then there is no way to call segmentTarget and get all in synch }
@Override protected Event handleTextUnit (Event event) { ITextUnit tu = event.getTextUnit(); // Skip non-translatable if ( !tu.isTranslatable() ) return event; TextContainer tc = tu.createTarget(targetLocale, false, IResource.COPY_ALL); for ( TextPart part : tc ) { processFragment(part.getContent()); } return event; }
/** * Force one to one alignment. Assume that both source and target have the * same number of segments. * * @param trgLoc * target locale used to align with the source */ @Override public void align(LocaleId trgLoc) { Iterator<Segment> srcSegsIt = getSource(trgLoc).getSegments().iterator(); Iterator<Segment> trgSegsIt = parent.createTarget(trgLoc, false, IResource.COPY_SEGMENTATION).getSegments() .iterator(); while (srcSegsIt.hasNext()) { try { Segment srcSeg = srcSegsIt.next(); Segment trgSeg = trgSegsIt.next(); trgSeg.id = srcSeg.id; } catch (NoSuchElementException e) { throw new OkapiMisAlignmentException("Different number of source and target segments", e); } } // these target segments are now aligned with their source counterparts parent.getTargetSegments(trgLoc).setAlignmentStatus(AlignmentStatus.ALIGNED); }
int i = 0; if (m.find()) { tu.createTarget(getTrgLoc(), true, IResource.CREATE_EMPTY); m.reset(); while (m.find()) {
@Override public Event handleTextUnit(Event event) { ITextUnit tu = event.getTextUnit(); if (tu.isTranslatable() || params.isCreateOnNonTranslatable()) { // Initialize the copy options int copyOptions = IResource.CREATE_EMPTY; if (params.isCopyContent()) { copyOptions |= IResource.COPY_SEGMENTED_CONTENT; } if (params.isCopyProperties()) { copyOptions |= IResource.COPY_PROPERTIES; } tu.createTarget(targetLocale, params.isOverwriteExisting(), copyOptions); } return event; }
tc = tu.createTarget(trgLoc, false, IResource.CREATE_EMPTY); convert(unit, tc, true);
if ( trgCont == null ) { trgCont = tu.createTarget(trgLoc, false, IResource.COPY_ALL); trgSegs = trgCont.getSegments();
@Override protected Event handleTextUnit (Event event) { ITextUnit tu = event.getTextUnit(); // Skip non-translatable if ( !tu.isTranslatable() ) { return event; } // Else: do the requested modifications // Make sure we have a target where to set data TextContainer cont = tu.createTarget(trgLang, false, IResource.COPY_ALL); String res; try { for ( TextPart part : cont ) { if ( params.getConversionType() == Parameters.UNESCAPE ) { res = unescape(part.text.getCodedText()); } else { res = escape(part.text.getCodedText()); } part.text.setCodedText(res); // No change of the inline codes } } catch ( Exception e ) { logger.error("Error when updating content: '{}'", cont.toString(), e); } return event; }
tu.createTarget(trgLoc, false, IResource.CREATE_EMPTY);
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); } }
tu.createTarget(targetLocale, true, IResource.COPY_SEGMENTED_CONTENT); else {
TextContainer trgCont = tu.createTarget(getTargetLanguage(), false, IResource.COPY_SEGMENTATION); ISegments trgSegs = trgCont.getSegments(); for ( Segment srcSeg : tu.getSource().getSegments() ) {
/** * Adds text to the current {@link TextUnit} * * @param text * the text * * @throws OkapiIllegalFilterOperationException if we try to perform an invalid operation. */ public void addToTextUnit(String text) { if (!isCurrentTextUnit()) { throw new OkapiIllegalFilterOperationException("Trying to add text to a TextUnit that does not exist."); } 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(text); } else { if (tu.getTarget(trgLoc) == null) { tu.createTarget(trgLoc, true, ITextUnit.CREATE_EMPTY); } tu.getTarget(trgLoc).getFirstContent().append(text); } }
@Override public Segment splitTarget(LocaleId trgLoc, Segment trgSeg, int splitPos) { TextContainer theTarget = parent.createTarget(trgLoc, false, IResource.COPY_SEGMENTATION); ISegments trgSegs = theTarget.getSegments(); int segIndex = trgSegs.getIndex(trgSeg.id); if (segIndex == -1) return null; // segment id not found in the container int partIndex = trgSegs.getPartIndex(segIndex); // split the source theTarget.split(partIndex, splitPos, splitPos, false); Segment newSeg = trgSegs.get(segIndex + 1); ISegments currentSegs; Segment currentSeg; ContainerIterator ci = new ContainerIterator(trgLoc); // inserting new segments in all the places they go if (ci.hasSource()) { currentSegs = ci.getSource().getSegments(); currentSeg = currentSegs.get(trgSeg.id); if (currentSeg != null) currentSegs.insert(currentSegs.getIndex(trgSeg.id) + 1, new Segment(trgSeg.id, new TextFragment(""))); } return newSeg; }
TextContainer trgCont = tu.createTarget(trgLoc, false, IResource.COPY_ALL); if (!trgCont.contentIsOneSegment()) { trgCont.getSegments().joinAll();
trgCont = tu.createTarget(targetLocale, false, IResource.COPY_ALL);
TextContainer targetTC = alignedTextUnit.createTarget(targetLocale, false, IResource.COPY_PROPERTIES);
TextContainer tc = tu.createTarget(trgLoc, false, IResource.CREATE_EMPTY); tc.setContent(item.getTarget().getContent());
TextContainer trgCont = tu.createTarget(getTargetLanguage(), false, IResource.COPY_SEGMENTATION); ISegments trgSegs = trgCont.getSegments();
trgCont = tu.createTarget(locToUse, false, IResource.CREATE_EMPTY);