Text Filter
The Beebox user interface lets users find text segments by a large variety of filter criteria. Built-in filters permit to look for untranslated content, problems with embedded codes, etc:
You can add your own filters to this list. This is done in a few steps:
- Add a class that extendst BeeboxTextFilter.
- Code the IsMatch() method. It receives one segment at a time and returns true if the segment passes the filter.
- Compile and install your dll.
The code below is a sample implementation. All interface methods are verbosely commented and should be self-explanatory.
Sample class
The Beebox extension below adds a filter that yields segments that are not translated: A simple but fundamental quality assurance algorithm.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Wordbee.Beebox.Extensibility; namespace Acme.PseudoTranslationSample { /// <summary> /// This is a simple Beebox extension that adds a text filter option to the user interface. /// </summary> public class SampleTextFilter : BeeboxTextFilter { /// <summary> /// Gets the globally unique id of this extension. /// </summary> public override string ExtensionID { get { return "acme2"; } } /// <summary> /// Gets if the extension is by default enabled. If false, then it must be enabled explicitly in each /// Beebox project from the Beebox Admin UI. /// </summary> public override bool EnableByDefault { get { return true; } } /// <summary> /// Gets a name. Displayed in the Beebox extension manager page. /// </summary> public override string Name { get { return "Acme QA filter"; } } /// <summary> /// Gets the title of the algorithm shown in the user interface such as the "Actions" tool where a user can pseudo translate /// selected content. /// </summary> public override string UITitle { get { return "Acme - Missing translations"; } } /// <summary> /// Gets a description. Displayed in the Beebox extension manager page. /// </summary> public override string Description { get { return "Some words on my algorithm..."; } } /// <summary> /// Gets version number. Displayed in the Beebox extension manager page. /// </summary> public override string Version { get { return "1.0"; } } /// <summary> /// Gets the author. Displayed in the Beebox extension manager page. /// </summary> public override string Author { get { return "Acme Ltd"; } } /// <summary> /// Return true if the segment passes the filter. Otherwise do return false. /// </summary> /// <param name="segment"> /// Segment details with source text, translation and additional properties: /// - Source: The original text /// - Target: The translated text (can be null or "" to indicate no translation yet) /// - SourceLocale: The source language code /// - TargetLocale: The target language code /// - Status: The Quality Assurance status: 0 = not set, 1 = QA Ok, 2 = QA Error /// - Validated: The translation currently is approved or not /// - Locked: The translation is locked for editing by the user /// - File: The file name containing the segment /// - Project: The project key /// - Key: Gets the segment key or the context of the segment. File format dependent: "Heading 1", "Hyperlink", ... /// - SourcePrevious: The text just before this segment /// - SourceNext: The text just after this segment /// </param> /// <param name="configuration">The extension's parameters. You need to implement the respective virtual methods to permit configuring the parameter individually per project.</param> /// <returns> /// True: The filter retains the segment /// False: The filter discards the segment /// </returns> public override bool IsMatch(Segment segment, IExtensionConfiguration configuration) { // We want all empty translations! if (string.IsNullOrWhiteSpace(segment.Target)) return true; // Those with content we skip! return false; } } }
Copyright Wordbee - Buzzin' Outside the Box since 2008