A file type for MXLIFF (Memsource) files

There seems to be a high demand, so I've created the first beta version of a file type for MXLIFF Files.

You can download it here (note that it is not signed, so you will get a warning every time you open Trados Studio):

https://github.com/jessegood/Leo.FileTypeSupport.MXLIFF/releases/tag/v1.0-beta

I've tested it several times, but it would be great to get some feedback from actual users!

If everything goes well, I hope to publish this to the appstore in the future.

1. It should be able to handle various memsource tags, such as {b>, <b}, etc.

If you find a tag it isn't handling let me know.

2. If it doesn't find a translation in the target, but a translation in the <alt-trans> tag, it will display that in Trados.

3. Comments are supported, however, Memsource seems to only allow one per segment, and doesn't have the multiple comment feature like Trados. Currently comments made on Trados segments are supported, but if you have multiple comments on one segment, I just combine the text into one.

4. I've tried to map, m:confirmed, m:locked and m:score and various other attributes to the matching ones in Trados.

5. I've tested that the generated file can be read by the Memsource desktop editor, but I don't have a cloud account that allows uploading, so it is untested for uploading to the cloud.

Parents
  • I am looking forward to trying this as well - but the download page has an error: community.sdl.com/.../error-notfound.aspx. Was it moved somewhere else?
  • Hi Lianne,

    Sorry, I fixed the link.

    Hi Nora,

    Great feedback! Looks like I made a dumb mistake... :)
    EDIT: I just updated the plug-in to handle quotes correctly (see download link in my post).

  • Hi Jesse,

    Great work on the plug-in!

    I'm using it for an actual file today and have a few comments/questions:

    1. Untranslated segments are being mapped to Draft in Studio. I'll report on the mapping situation back to Memsource Cloud when I'm done with the file.

    2. For formatting tags that are appearing as placeholder tags with the new file type, would it be possible to exclude them from the segment altogether and leave only mid-segment tags? I'm thinking of a segment like the following, where I was using segmentation to clean the tags off the segment before:

    Thank you for all your work with this!

     

    Nora

  • Hi Nora,

    Thanks for the feedback! I will look into both 1 and 2 see what I can do.
  • Thank you Jesse. I've just noticed one more thing, which I actually don't mind and see as a plus, actually, but I thought I'd mention it in case it's something important. One of the files I downloaded from Memsource Cloud this morning was EN-US to ES (Spain). I didn't notice this and added it to an EN-US to ES-MX project without any issues with your filter. Studio accepted and converted the file without any issues and I was able to open it as usual. I then wanted to do a comparison of the file with the old, very simple XLIFF filter I'd been using, so I disabled your filter and added the same file to the same project, now with the old filter. Studio accepted and apparently processed the file, but I couldn't open it. Studio gave me an error message saying the language of the file was not what was expected for the project. So your file type was able to process a file into a project with a different target language variant.
  • Hi Jesse,

    Just attempted to process several files in a project and got a Multiple placeholder tag with the same ID error. Stack trace below:

    <SDLErrorDetails time="10/20/2016 4:45:04 PM">
      <ErrorMessage>Internal error: Multiple placeholder tags with the same ID '81' have different tag properties</ErrorMessage>
      <Exception>
        <Type>Sdl.FileTypeSupport.Framework.FileTypeSupportException, Sdl.FileTypeSupport.Framework.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c28cdb26c445c888</Type>
        <HelpLink />
        <Source>Sdl.FileTypeSupport.Bilingual.SdlXliff</Source>
        <HResult>-2146233088</HResult>
        <StackTrace><![CDATA[   at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffWriter.SaveTagInfo(IPlaceholderTag placeholder)
       at Sdl.FileTypeSupport.Bilingual.SdlXliff.TransUnitBuilder.VisitPlaceholderTag(IPlaceholderTag tag)
       at Sdl.FileTypeSupport.Framework.Bilingual.PlaceholderTag.AcceptVisitor(IMarkupDataVisitor visitor)
       at Sdl.FileTypeSupport.Bilingual.SdlXliff.TransUnitBuilder.VisitChildren(IAbstractMarkupDataContainer container)
       at Sdl.FileTypeSupport.Bilingual.SdlXliff.TransUnitBuilder.BuildTransUnitContentForChildren(IAbstractMarkupDataContainer container, XliffWriter writer, Boolean segmentsAsMrk)
       at Sdl.FileTypeSupport.Bilingual.SdlXliff.TransUnitBuilder.VisitSegment(ISegment segment)
       at Sdl.FileTypeSupport.Framework.Bilingual.Segment.AcceptVisitor(IMarkupDataVisitor visitor)
       at Sdl.FileTypeSupport.Bilingual.SdlXliff.TransUnitBuilder.VisitChildren(IAbstractMarkupDataContainer container)
       at Sdl.FileTypeSupport.Bilingual.SdlXliff.TransUnitBuilder.BuildTransUnitContentForChildren(IAbstractMarkupDataContainer container, XliffWriter writer, Boolean segmentsAsMrk)
       at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffWriter.ProcessParagraphUnit(IParagraphUnit paragraphUnit)
       at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.ProcessParagraphUnit(IParagraphUnit paragraphUnit)
       at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.ProcessParagraphUnit(IParagraphUnit paragraphUnit)
       at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.ProcessParagraphUnit(IParagraphUnit paragraphUnit)
       at Sdl.FileTypeSupport.Framework.Integration.LocationMarkerLocator.ProcessParagraphUnit(IParagraphUnit paragraphUnit)
       at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.ProcessParagraphUnit(IParagraphUnit paragraphUnit)
       at Sdl.FileTypeSupport.Framework.Integration.FileExtractor.ProcessParagraphUnit(IParagraphUnit paragraphUnit)
       at Leo.FileTypeSupport.MXLIFF.MXLIFFParser.ParseNext()
       at Sdl.FileTypeSupport.Framework.Integration.FileExtractor.ParseNext()
       at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.ParseNext()
       at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.Parse()
       at Sdl.ProjectApi.AutomaticTasks.Conversion.ConversionTask.ProcessFile(IExecutingTaskFile executingTaskFile)
       at Sdl.ProjectApi.AutomaticTasks.AbstractFileLevelAutomaticTaskImplementation.Execute()]]></StackTrace>
      </Exception>
      <Environment>
        <ProductName>SDL Trados Studio</ProductName>
        <ProductVersion>14.0.0.0</ProductVersion>
        <EntryAssemblyFileVersion>14.0.5737.0</EntryAssemblyFileVersion>
        <OperatingSystem>Microsoft Windows 10 Home</OperatingSystem>
        <ServicePack>NULL</ServicePack>
        <OperatingSystemLanguage>1033</OperatingSystemLanguage>
        <CodePage>1252</CodePage>
        <LoggedOnUser>NORADELL2015\Nora</LoggedOnUser>
        <DotNetFrameWork>4.0.30319.42000</DotNetFrameWork>
        <ComputerName>NORADELL2015</ComputerName>
        <ConnectedToNetwork>True</ConnectedToNetwork>
        <PhysicalMemory>33504456 MB</PhysicalMemory>
      </Environment>
    </SDLErrorDetails>

  • Hi Nora,

    Sorry about the error and I just wanted to say I really appreciate all the feedback!
    I will look into the issue as soon as I get home from work.

    Also, the plug-in is made to only check the source language.
    I debated on which is better (whether to check the target or not),
    but if you think it is a plus, I will leave it that way!

    Thanks again,
    Jesse Good
  • Unknown said:


    Also, the plug-in is made to only check the source language.
    I debated on which is better (whether to check the target or not),
    but if you think it is a plus, I will leave it that way!

    It is for me, it saves me the extra step of changing to a project with a different target language variant. : )

  • Hi Nora,

    I've added several fixes and tested it on several files,
    but would you be able to see if the problems you experienced are solved?

    github.com/.../v1.1-beta
    *This version is not signed, so it will issue a warning.

    Also, if it isn't too much trouble, could you send me files for testing if you still experience problems?
    My personal e-mail address is gdjss2728@gmail.com. I will always only use the files for testing purposes only.
  • Wow! That was quick! I'll test and let you know how it went.
  • Hi Jesse,

    I wanted to publicly say thank you for your work on this file type and for being so responsive to the issues I've reported. The file type works great, you have done a wonderful job!

    Best,
  • Hi again, Jesse,

    I've just uploaded a couple of files to Memsource Cloud and was really happy to see that confirmed segments are mapped correctly after uploading, and segments I locked in Studio are locked in Memsource Cloud as well.

    The only issue I'm seeing now is that segments that were split in Studio are not properly transferred to Memsource. For example, only the third part of a segment split into three is uploaded and the other two disappear. Likewise, if a segment is split in Memsource before exporting the file to Studio.
Reply
  • Hi again, Jesse,

    I've just uploaded a couple of files to Memsource Cloud and was really happy to see that confirmed segments are mapped correctly after uploading, and segments I locked in Studio are locked in Memsource Cloud as well.

    The only issue I'm seeing now is that segments that were split in Studio are not properly transferred to Memsource. For example, only the third part of a segment split into three is uploaded and the other two disappear. Likewise, if a segment is split in Memsource before exporting the file to Studio.
Children